From 68ac9a3e2491870096df4a1a5ebe07fde79464a8 Mon Sep 17 00:00:00 2001 From: rtoy <rtoy> Date: Thu, 11 Jun 2009 16:04:02 +0000 Subject: [PATCH] Merge Unicode work to trunk. From label unicode-utf16-extfmt-2009-06-11. --- assembly/alpha/array.lisp | 4 +- assembly/amd64/assem-rtns.lisp | 18 +- assembly/hppa/arith.lisp | 8 +- assembly/mips/alloc.lisp | 4 +- assembly/mips/array.lisp | 4 +- assembly/ppc/array.lisp | 5 +- assembly/rt/assem-rtns.lisp | 6 +- assembly/sparc/array.lisp | 7 +- assembly/x86/array.lisp | 5 +- assembly/x86/assem-rtns.lisp | 26 +- .../boot-2008-05-cross-unicode-common.lisp | 418 + .../19e/boot-2008-05-cross-unicode-ppc.lisp | 227 + .../19e/boot-2008-05-cross-unicode-sparc.lisp | 247 + .../19e/boot-2008-05-cross-unicode-x86.lisp | 214 + bootfiles/19e/boot-2008-05-no-unicode.lisp | 11 + .../19f/boot-2009-03-cross-unicode-ppc.lisp | 1 + .../19f/boot-2009-03-cross-unicode-sparc.lisp | 1 + .../19f/boot-2009-03-cross-unicode-x86.lisp | 1 + bootfiles/19f/boot-2009-03-unicode-char.lisp | 9 + bootfiles/19f/boot-2009-05-no-unicode.lisp | 2 + clx/NEWS | 15 +- clx/README | 4 +- clx/README-CMUCL | 11 +- code/alieneval.lisp | 44 +- code/alpha-vm.lisp | 6 +- code/amd64-vm.lisp | 10 +- code/array.lisp | 4 +- code/bignum.lisp | 16 +- code/bit-bash.lisp | 8 +- code/bsd-os.lisp | 3 +- code/byte-interp.lisp | 13 +- code/c-call.lisp | 40 +- code/char.lisp | 152 +- code/class.lisp | 8 +- code/clx-ext.lisp | 6 +- code/debug-info.lisp | 31 +- code/debug-int.lisp | 4 +- code/debug.lisp | 14 +- code/defmacro.lisp | 4 +- code/defstruct.lisp | 33 +- code/describe.lisp | 5 +- code/dyncount.lisp | 15 +- code/error.lisp | 4 +- code/eval.lisp | 6 +- code/exports.lisp | 15 +- code/extfmts.lisp | 576 +- code/fd-stream-extfmt.lisp | 94 + code/fd-stream.lisp | 315 +- code/filesys.lisp | 10 +- code/foreign.lisp | 17 +- code/format-time.lisp | 4 +- code/format.lisp | 15 +- code/hash-new.lisp | 8 +- code/hash.lisp | 4 +- code/internet.lisp | 28 +- code/linux-os.lisp | 3 +- code/lispinit.lisp | 21 +- code/load.lisp | 92 +- code/misc.lisp | 5 +- code/package.lisp | 11 +- code/print.lisp | 69 +- code/reader.lisp | 338 +- code/run-program.lisp | 17 +- code/save.lisp | 6 +- code/seq.lisp | 68 +- code/serve-event.lisp | 6 +- code/stream-vector-io.lisp | 141 +- code/stream.lisp | 125 +- code/string.lisp | 863 +- code/unidata.lisp | 1054 + code/unix-glibc2.lisp | 101 +- code/unix.lisp | 154 +- compiler/array-tran.lisp | 4 +- compiler/byte-comp.lisp | 4 +- compiler/dump.lisp | 25 +- compiler/fndb.lisp | 19 +- compiler/generic/new-genesis.lisp | 90 +- compiler/generic/vm-tran.lisp | 27 +- compiler/main.lisp | 25 +- compiler/ppc/array.lisp | 7 +- compiler/ppc/parms.lisp | 11 +- compiler/ppc/system.lisp | 4 +- compiler/seqtran.lisp | 39 +- compiler/sparc/array.lisp | 7 +- compiler/sparc/float.lisp | 36 +- compiler/sparc/parms.lisp | 10 +- compiler/srctran.lisp | 65 +- compiler/x86/array.lisp | 6 +- compiler/x86/parms.lisp | 11 +- docs/cmu-user/cmu-user.tex | 1 + docs/cmu-user/macros.tex | 12 +- docs/cmu-user/unicode.tex | 570 + general-info/release-20a.txt | 41 +- i18n/BidiMirroring.txt | 588 + i18n/CaseFolding.txt | 1196 + i18n/CompositionExclusions.txt | 197 + i18n/DerivedNormalizationProps.txt | 2657 +++ i18n/NameAliases.txt | 40 + i18n/NormalizationCorrections.txt | 48 + i18n/SpecialCasing.txt | 274 + i18n/UnicodeData.txt | 19336 ++++++++++++++++ i18n/unidata.bin | Bin 0 -> 1207562 bytes lisp/Config.linux_gencgc | 5 + lisp/Config.ppc_darwin | 8 +- lisp/Config.sun4_solaris_sunc | 9 +- lisp/Config.x86_common | 4 + lisp/FreeBSD-os.c | 38 +- lisp/alloc.c | 27 +- lisp/backtrace.c | 35 +- lisp/gencgc.c | 278 +- lisp/interr.c | 44 +- lisp/os-common.c | 68 +- lisp/print.c | 21 +- lisp/purify.c | 12 +- motif/lisp/callbacks.lisp | 4 +- motif/lisp/conversion.lisp | 25 +- motif/lisp/interface-glue.lisp | 4 +- pcl/simple-streams/classes.lisp | 21 +- pcl/simple-streams/external-formats/aliases | 57 +- .../external-formats/beta-gk.lisp | 235 + .../external-formats/cp1250.lisp | 26 + .../external-formats/cp1251.lisp | 27 + .../external-formats/cp1252.lisp | 26 + .../external-formats/cp1253.lisp | 12 + .../external-formats/cp1254.lisp | 26 + .../external-formats/cp1255.lisp | 27 + .../external-formats/cp1256.lisp | 27 + .../external-formats/cp1257.lisp | 26 + .../external-formats/cp1258.lisp | 26 + pcl/simple-streams/external-formats/crlf.lisp | 6 +- .../external-formats/final-sigma.lisp | 23 + .../external-formats/iso8859-1.lisp | 8 +- .../external-formats/iso8859-10.lisp | 23 + .../external-formats/iso8859-13.lisp | 23 + .../external-formats/iso8859-14.lisp | 23 + .../external-formats/iso8859-15.lisp | 23 + .../external-formats/iso8859-2.lisp | 33 + .../external-formats/iso8859-3.lisp | 23 + .../external-formats/iso8859-4.lisp | 23 + .../external-formats/iso8859-5.lisp | 24 + .../external-formats/iso8859-6.lisp | 25 + .../external-formats/iso8859-7.lisp | 23 + .../external-formats/iso8859-8.lisp | 25 + .../external-formats/iso8859-9.lisp | 23 + .../external-formats/koi8-r.lisp | 28 + .../external-formats/mac-cyrillic.lisp | 27 + .../external-formats/mac-greek.lisp | 25 + .../external-formats/mac-icelandic.lisp | 26 + .../external-formats/mac-latin2.lisp | 26 + .../external-formats/mac-roman.lisp | 36 + .../external-formats/mac-turkish.lisp | 26 + .../external-formats/utf-16-be.lisp | 90 +- .../external-formats/utf-16-le.lisp | 91 +- .../external-formats/utf-16.lisp | 91 + .../external-formats/utf-32-be.lisp | 34 + .../external-formats/utf-32-le.lisp | 34 + .../external-formats/utf-32.lisp | 80 + .../external-formats/utf-8.lisp | 90 +- pcl/simple-streams/external-formats/void.lisp | 5 +- pcl/simple-streams/strategy.lisp | 4 +- tools/build-unidata.lisp | 1083 + tools/build.sh | 5 +- tools/cross-build-world.sh | 39 +- tools/load-world.sh | 14 +- tools/make-extra-dist.sh | 9 + tools/make-main-dist.sh | 2 +- tools/worldbuild.lisp | 4 +- tools/worldcom.lisp | 10 +- tools/worldload.lisp | 7 +- 169 files changed, 33316 insertions(+), 1200 deletions(-) create mode 100644 bootfiles/19e/boot-2008-05-cross-unicode-common.lisp create mode 100644 bootfiles/19e/boot-2008-05-cross-unicode-ppc.lisp create mode 100644 bootfiles/19e/boot-2008-05-cross-unicode-sparc.lisp create mode 100644 bootfiles/19e/boot-2008-05-cross-unicode-x86.lisp create mode 100644 bootfiles/19e/boot-2008-05-no-unicode.lisp create mode 100644 bootfiles/19f/boot-2009-03-cross-unicode-ppc.lisp create mode 100644 bootfiles/19f/boot-2009-03-cross-unicode-sparc.lisp create mode 100644 bootfiles/19f/boot-2009-03-cross-unicode-x86.lisp create mode 100644 bootfiles/19f/boot-2009-03-unicode-char.lisp create mode 100644 bootfiles/19f/boot-2009-05-no-unicode.lisp create mode 100644 code/fd-stream-extfmt.lisp create mode 100644 code/unidata.lisp create mode 100644 docs/cmu-user/unicode.tex create mode 100644 i18n/BidiMirroring.txt create mode 100644 i18n/CaseFolding.txt create mode 100644 i18n/CompositionExclusions.txt create mode 100644 i18n/DerivedNormalizationProps.txt create mode 100644 i18n/NameAliases.txt create mode 100644 i18n/NormalizationCorrections.txt create mode 100644 i18n/SpecialCasing.txt create mode 100644 i18n/UnicodeData.txt create mode 100644 i18n/unidata.bin create mode 100644 pcl/simple-streams/external-formats/beta-gk.lisp create mode 100644 pcl/simple-streams/external-formats/cp1250.lisp create mode 100644 pcl/simple-streams/external-formats/cp1251.lisp create mode 100644 pcl/simple-streams/external-formats/cp1252.lisp create mode 100644 pcl/simple-streams/external-formats/cp1253.lisp create mode 100644 pcl/simple-streams/external-formats/cp1254.lisp create mode 100644 pcl/simple-streams/external-formats/cp1255.lisp create mode 100644 pcl/simple-streams/external-formats/cp1256.lisp create mode 100644 pcl/simple-streams/external-formats/cp1257.lisp create mode 100644 pcl/simple-streams/external-formats/cp1258.lisp create mode 100644 pcl/simple-streams/external-formats/final-sigma.lisp create mode 100644 pcl/simple-streams/external-formats/iso8859-10.lisp create mode 100644 pcl/simple-streams/external-formats/iso8859-13.lisp create mode 100644 pcl/simple-streams/external-formats/iso8859-14.lisp create mode 100644 pcl/simple-streams/external-formats/iso8859-15.lisp create mode 100644 pcl/simple-streams/external-formats/iso8859-2.lisp create mode 100644 pcl/simple-streams/external-formats/iso8859-3.lisp create mode 100644 pcl/simple-streams/external-formats/iso8859-4.lisp create mode 100644 pcl/simple-streams/external-formats/iso8859-5.lisp create mode 100644 pcl/simple-streams/external-formats/iso8859-6.lisp create mode 100644 pcl/simple-streams/external-formats/iso8859-7.lisp create mode 100644 pcl/simple-streams/external-formats/iso8859-8.lisp create mode 100644 pcl/simple-streams/external-formats/iso8859-9.lisp create mode 100644 pcl/simple-streams/external-formats/koi8-r.lisp create mode 100644 pcl/simple-streams/external-formats/mac-cyrillic.lisp create mode 100644 pcl/simple-streams/external-formats/mac-greek.lisp create mode 100644 pcl/simple-streams/external-formats/mac-icelandic.lisp create mode 100644 pcl/simple-streams/external-formats/mac-latin2.lisp create mode 100644 pcl/simple-streams/external-formats/mac-roman.lisp create mode 100644 pcl/simple-streams/external-formats/mac-turkish.lisp create mode 100644 pcl/simple-streams/external-formats/utf-16.lisp create mode 100644 pcl/simple-streams/external-formats/utf-32-be.lisp create mode 100644 pcl/simple-streams/external-formats/utf-32-le.lisp create mode 100644 pcl/simple-streams/external-formats/utf-32.lisp create mode 100644 tools/build-unidata.lisp diff --git a/assembly/alpha/array.lisp b/assembly/alpha/array.lisp index 3e8da204a..6d15c0fce 100644 --- a/assembly/alpha/array.lisp +++ b/assembly/alpha/array.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/alpha/array.lisp,v 1.3 2003/08/03 11:27:52 gerd Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/alpha/array.lisp,v 1.4 2009/06/11 16:03:55 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -28,7 +28,7 @@ (:res result descriptor-reg a0-offset) (:temp ndescr non-descriptor-reg nl0-offset)) - ;; This is kinda sleezy, changing words like this. But we can because + ;; This is kinda sleazy, changing words like this. But we can because ;; the vop thinks it is temporary. (inst addq words (+ (1- (ash 1 lowtag-bits)) (* vector-data-offset word-bytes)) diff --git a/assembly/amd64/assem-rtns.lisp b/assembly/amd64/assem-rtns.lisp index 3c7383c65..da5d6adce 100644 --- a/assembly/amd64/assem-rtns.lisp +++ b/assembly/amd64/assem-rtns.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/amd64/assem-rtns.lisp,v 1.3 2004/07/27 23:28:41 cwang Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/amd64/assem-rtns.lisp,v 1.4 2009/06/11 16:03:55 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -113,8 +113,8 @@ ;;;; tail-call-variable. ;;; For tail-call-variable, we have to copy the arguments from the end of our -;;; stack frame (were args are produced) to the start of our stack frame -;;; (were args are expected). +;;; stack frame (where args are produced) to the start of our stack frame +;;; (where args are expected). ;;; ;;; We take the function to call in rAX and a pointer to the arguments in ;;; rSI. rBP says the same over the jump, and the old frame pointer is @@ -144,14 +144,14 @@ (inst cmp rcx (fixnumize 3)) (inst jmp :le REGISTER-ARGS) - ;; Save the OLD-FP and RETURN-PC because the blit it going to trash + ;; Save the OLD-FP and RETURN-PC because the blit is going to trash ;; those stack locations. Save the rCX, because the loop is going ;; to trash it. (pushw rbp-tn -1) (loadw rbx rbp-tn -2) (inst push rcx) - ;; Do the blit. Because we are coping from smaller addresses to larger + ;; Do the blit. Because we are copying from smaller addresses to larger ;; addresses, we have to start at the largest pair and work our way down. (inst shr rcx 2) ; fixnum to raw words (inst std) ; count down @@ -178,10 +178,10 @@ (inst push rbx) ;; And jump into the function. - (inst jmp - (make-ea :byte :base rax - :disp (- (* closure-function-slot word-bytes) - function-pointer-type))) + (inst jmp + (make-ea :byte :base rax + :disp (- (* closure-function-slot word-bytes) + function-pointer-type))) ;; All the arguments fit in registers, so load them. REGISTER-ARGS diff --git a/assembly/hppa/arith.lisp b/assembly/hppa/arith.lisp index 4bdc5041f..4e6ce99b4 100644 --- a/assembly/hppa/arith.lisp +++ b/assembly/hppa/arith.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/hppa/arith.lisp,v 1.9 2003/08/03 11:27:51 gerd Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/hppa/arith.lisp,v 1.10 2009/06/11 16:03:55 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -77,12 +77,12 @@ ;; Move abs(divident) into quo. (inst move dividend quo :>=) (inst sub zero-tn quo quo) - ;; Do one divive-step with -divisor to prime V (use rem as a temp) + ;; Do one divide-step with -divisor to prime V (use rem as a temp) (inst sub zero-tn divisor rem) (inst ds zero-tn rem zero-tn) - ;; Shift the divident/quotient one bit, setting the carry flag. + ;; Shift the dividend/quotient one bit, setting the carry flag. (inst add quo quo quo) - ;; The first real divive-step. + ;; The first real divide-step. (inst ds zero-tn divisor rem) (inst addc quo quo quo) ;; And 31 more of them. diff --git a/assembly/mips/alloc.lisp b/assembly/mips/alloc.lisp index accac054a..617ea78d6 100644 --- a/assembly/mips/alloc.lisp +++ b/assembly/mips/alloc.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/mips/alloc.lisp,v 1.9 2003/08/03 11:27:51 gerd Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/mips/alloc.lisp,v 1.10 2009/06/11 16:03:55 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -38,7 +38,7 @@ (inst beq ndescr large-alloc-entry) (inst nop) - ;; Round words up to a dual-word. This is kinda sleezy, changing words like + ;; Round words up to a dual-word. This is kinda sleazy, changing words like ;; this. But we can because the vop thinks it is temporary. (inst addu words (+ (1- (ash 1 lowtag-bits)) (* vector-data-offset word-bytes))) diff --git a/assembly/mips/array.lisp b/assembly/mips/array.lisp index bab17b1a1..445cdd7ee 100644 --- a/assembly/mips/array.lisp +++ b/assembly/mips/array.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/mips/array.lisp,v 1.25 2003/08/03 11:27:51 gerd Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/mips/array.lisp,v 1.26 2009/06/11 16:03:55 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -29,7 +29,7 @@ (:temp ndescr non-descriptor-reg nl0-offset) (:temp pa-flag non-descriptor-reg nl4-offset)) - ;; This is kinda sleezy, changing words like this. But we can because + ;; This is kinda sleazy, changing words like this. But we can because ;; the vop thinks it is temporary. (inst addu words (+ (1- (ash 1 lowtag-bits)) (* vector-data-offset word-bytes))) diff --git a/assembly/ppc/array.lisp b/assembly/ppc/array.lisp index 41ae22566..3626a6e18 100644 --- a/assembly/ppc/array.lisp +++ b/assembly/ppc/array.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman (FAHLMAN@CMUC). ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/ppc/array.lisp,v 1.7 2006/01/18 15:21:26 rtoy Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/ppc/array.lisp,v 1.8 2009/06/11 16:03:55 rtoy Rel $ ;;; ;;; This file contains the support routines for arrays and vectors. ;;; @@ -138,6 +138,9 @@ (:temp offset non-descriptor-reg nl3-offset)) (emit-label sxhash-simple-substring-entry) + #+unicode + (inst slwi length length 1) ; Number of bytes = twice the length + (inst li offset (- (* vm:vector-data-offset vm:word-bytes) vm:other-pointer-type)) (move accum zero-tn) (inst b test) diff --git a/assembly/rt/assem-rtns.lisp b/assembly/rt/assem-rtns.lisp index b159c92ea..5980e6fd6 100644 --- a/assembly/rt/assem-rtns.lisp +++ b/assembly/rt/assem-rtns.lisp @@ -5,11 +5,11 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/rt/assem-rtns.lisp,v 1.7 2003/08/03 11:27:50 gerd Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/rt/assem-rtns.lisp,v 1.8 2009/06/11 16:03:55 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/rt/assem-rtns.lisp,v 1.7 2003/08/03 11:27:50 gerd Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/rt/assem-rtns.lisp,v 1.8 2009/06/11 16:03:55 rtoy Rel $ ;;; (in-package "RT") @@ -198,7 +198,7 @@ (:temp temp any-reg ocfp-offset)) ;; First, save count/src (the NFP) on the number stack. We need to do this ;; instead of with the other saves, because we need to use this register to - ;; figure out where to save the others. We can't same them all there, + ;; figure out where to save the others. We can't save them all there, ;; because some of the others hold descriptor values. (storew count/src nsp-tn -1) ;; How many more args are there to copy to the stack? diff --git a/assembly/sparc/array.lisp b/assembly/sparc/array.lisp index e9d997349..076e5cfcc 100644 --- a/assembly/sparc/array.lisp +++ b/assembly/sparc/array.lisp @@ -5,11 +5,11 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/sparc/array.lisp,v 1.10 2004/04/07 02:47:53 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/sparc/array.lisp,v 1.11 2009/06/11 16:03:56 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/sparc/array.lisp,v 1.10 2004/04/07 02:47:53 rtoy Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/sparc/array.lisp,v 1.11 2009/06/11 16:03:56 rtoy Rel $ ;;; ;;; This file contains the support routines for arrays and vectors. ;;; @@ -124,6 +124,9 @@ ub4 one_at_a_time(char *key, ub4 len) (:temp offset non-descriptor-reg nl3-offset)) (emit-label sxhash-simple-substring-entry) + #+unicode + (inst sll length 1) ; Number of bytes = twice the length + (inst li offset (- (* vector-data-offset word-bytes) other-pointer-type)) (inst b test) (move accum zero-tn) diff --git a/assembly/x86/array.lisp b/assembly/x86/array.lisp index 4b7de9302..ac10fea00 100644 --- a/assembly/x86/array.lisp +++ b/assembly/x86/array.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/x86/array.lisp,v 1.10 2008/04/01 07:09:28 cshapiro Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/x86/array.lisp,v 1.11 2009/06/11 16:03:56 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -79,6 +79,9 @@ (inst lea esi (make-ea :byte :base string :disp (- (* vector-data-offset word-bytes) other-pointer-type))) + #+unicode + (inst shl length 1) ; Number of bytes = twice the length + ;; Initialize the result. (inst xor result result) ;; Get the count. If it's zero, blow out. diff --git a/assembly/x86/assem-rtns.lisp b/assembly/x86/assem-rtns.lisp index cb4fb92d9..23861df15 100644 --- a/assembly/x86/assem-rtns.lisp +++ b/assembly/x86/assem-rtns.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/x86/assem-rtns.lisp,v 1.7 2008/04/01 07:25:08 cshapiro Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/x86/assem-rtns.lisp,v 1.8 2009/06/11 16:03:56 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -55,7 +55,7 @@ ;; Blit the values down the stack. Note: there might be overlap, so we have ;; to be careful not to clobber values before we've read them. Because the - ;; stack builds down, we are coping to a larger address. Therefore, we need + ;; stack builds down, we are copying to a larger address. Therefore, we need ;; to iterate from larger addresses to smaller addresses. ;; pfw-this says copy ecx words from esi to edi counting down. (inst shr ecx 2) ; fixnum to raw word count @@ -114,11 +114,11 @@ ;;;; tail-call-variable. ;;; For tail-call-variable, we have to copy the arguments from the end of our -;;; stack frame (were args are produced) to the start of our stack frame -;;; (were args are expected). +;;; stack frame (where args are produced) to the start of our stack frame +;;; (where args are expected). ;;; ;;; We take the function to call in EAX and a pointer to the arguments in -;;; ESI. EBP says the same over the jump, and the old frame pointer is +;;; ESI. EBP stays the same over the jump, and the old frame pointer is ;;; still saved in the first stack slot. The return-pc is saved in ;;; the second stack slot, so we have to push it to make it look like ;;; we actually called. We also have to compute ECX from the difference @@ -140,18 +140,18 @@ (move ecx esi) (inst sub ecx esp-tn) - ;; Check for all the args fitting the the registers. + ;; Check for all the args fitting in the registers. (inst cmp ecx (fixnumize 3)) (inst jmp :le REGISTER-ARGS) - ;; Save the OLD-FP and RETURN-PC because the blit it going to trash + ;; Save the OLD-FP and RETURN-PC because the blit is going to trash ;; those stack locations. Save the ECX, because the loop is going ;; to trash it. (pushw ebp-tn -1) (loadw ebx ebp-tn -2) (inst push ecx) - ;; Do the blit. Because we are coping from smaller addresses to larger + ;; Do the blit. Because we are copying from smaller addresses to larger ;; addresses, we have to start at the largest pair and work our way down. (inst shr ecx 2) ; fixnum to raw words (inst lea edi (make-ea :dword :base ebp-tn :disp (- word-bytes))) @@ -179,10 +179,10 @@ (inst push ebx) ;; And jump into the function. - (inst jmp - (make-ea :byte :base eax - :disp (- (* closure-function-slot word-bytes) - function-pointer-type))) + (inst jmp + (make-ea :byte :base eax + :disp (- (* closure-function-slot word-bytes) + function-pointer-type))) ;; All the arguments fit in registers, so load them. REGISTER-ARGS @@ -229,7 +229,7 @@ EXIT - ;; Hear EAX points to catch block containing symbol pointed to by EDX. + ;; Here EAX points to catch block containing symbol pointed to by EDX. (inst jmp (make-fixup 'unwind :assembly-routine))) ;;;; Non-local exit noise. diff --git a/bootfiles/19e/boot-2008-05-cross-unicode-common.lisp b/bootfiles/19e/boot-2008-05-cross-unicode-common.lisp new file mode 100644 index 000000000..1a0c4a167 --- /dev/null +++ b/bootfiles/19e/boot-2008-05-cross-unicode-common.lisp @@ -0,0 +1,418 @@ +;;; Common part for cross-compiling 16-bit strings for Unicode. +;;; This part is independent of the architecture. + +(pushnew :unicode *features*) +(pushnew :unicode-bootstrap *features*) +(in-package "C") + +(handler-bind ((error #'(lambda (c) + (declare (ignore c)) + (invoke-restart 'kernel::continue)))) +;; Update so we create the correct size of arrays for characters. +(defconstant array-info + '((base-char #\NULL 16 old-vm:simple-string-type) + (single-float 0.0f0 32 old-vm:simple-array-single-float-type) + (double-float 0.0d0 64 old-vm:simple-array-double-float-type) + #+long-float (long-float 0.0l0 #+x86 96 #+sparc 128 + old-vm:simple-array-long-float-type) + #+double-double + (double-double-float 0w0 128 + old-vm::simple-array-double-double-float-type) + (bit 0 1 old-vm:simple-bit-vector-type) + ((unsigned-byte 2) 0 2 old-vm:simple-array-unsigned-byte-2-type) + ((unsigned-byte 4) 0 4 old-vm:simple-array-unsigned-byte-4-type) + ((unsigned-byte 8) 0 8 old-vm:simple-array-unsigned-byte-8-type) + ((unsigned-byte 16) 0 16 old-vm:simple-array-unsigned-byte-16-type) + ((unsigned-byte 32) 0 32 old-vm:simple-array-unsigned-byte-32-type) + ((signed-byte 8) 0 8 old-vm:simple-array-signed-byte-8-type) + ((signed-byte 16) 0 16 old-vm:simple-array-signed-byte-16-type) + ((signed-byte 30) 0 32 old-vm:simple-array-signed-byte-30-type) + ((signed-byte 32) 0 32 old-vm:simple-array-signed-byte-32-type) + ((complex single-float) #C(0.0f0 0.0f0) 64 + old-vm:simple-array-complex-single-float-type) + ((complex double-float) #C(0.0d0 0.0d0) 128 + old-vm:simple-array-complex-double-float-type) + #+long-float + ((complex long-float) #C(0.0l0 0.0l0) #+x86 192 #+sparc 256 + old-vm:simple-array-complex-long-float-type) + #+double-double + ((complex double-double-float) #C(0.0w0 0.0w0) 256 + old-vm::simple-array-complex-double-double-float-type) + (t 0 32 old-vm:simple-vector-type))) +) + +(handler-bind ((error #'(lambda (c) + (declare (ignore c)) + (invoke-restart 'kernel::clobber-it)))) +(defstruct (fd-stream + (:print-function %print-fd-stream) + (:constructor %make-fd-stream) + (:include file-stream + (misc #'fd-stream-misc-routine))) + + (name nil) ; The name of this stream + (file nil) ; The file this stream is for + ;; + ;; The backup file namestring for the old file, for :if-exists :rename or + ;; :rename-and-delete. + (original nil :type (or simple-string null)) + (delete-original nil) ; for :if-exists :rename-and-delete + ;; + ;;; Number of bytes per element. + (element-size 1 :type index) + (element-type 'base-char) ; The type of element being transfered. + (fd -1 :type fixnum) ; The file descriptor + ;; + ;; Controls when the output buffer is flushed. + (buffering :full :type (member :full :line :none)) + ;; + ;; Character position if known. + (char-pos nil :type (or index null)) + ;; + ;; T if input is waiting on FD. :EOF if we hit EOF. + (listen nil :type (member nil t :eof)) + ;; + ;; The input buffer. + (unread nil) + (ibuf-sap nil :type (or system-area-pointer null)) + (ibuf-length nil :type (or index null)) + (ibuf-head 0 :type index) + (ibuf-tail 0 :type index) + + ;; The output buffer. + (obuf-sap nil :type (or system-area-pointer null)) + (obuf-length nil :type (or index null)) + (obuf-tail 0 :type index) + + ;; Output flushed, but not written due to non-blocking io. + (output-later nil) + (handler nil) + ;; + ;; Timeout specified for this stream, or NIL if none. + (timeout nil :type (or index null)) + ;; + ;; Pathname of the file this stream is opened to (returned by PATHNAME.) + (pathname nil :type (or pathname null)) + ;; + ;; External formats + ;; @@ I want to use :default here, but keyword pkg isn't set up yet at boot + ;; so initialize to NIL and fix it in SET-ROUTINES + #+unicode + (external-format nil :type (or null keyword cons)) + #+unicode + (oc-state nil) + #+unicode + (co-state nil) + #+unicode + (last-char-read-size 0 :type index))) + +(defun %print-fd-stream (fd-stream stream depth) + (declare (ignore depth) (stream stream)) + (format stream "#<Stream for ~A>" + (fd-stream-name fd-stream))) + +;; Dump a character of a string to a fasl file in the byte correct +;; order. +(defun dump-string-char (code file) + ;; Do we want *native-backend* or *target-backend*? Use + ;; *native-backend* because we're assuming we're cross-compiling + ;; from the same arch as the desired arch. + (ecase (c::backend-byte-order c::*native-backend*) + (:little-endian + (dump-byte (ldb (byte 8 0) code) file) + (dump-byte (ldb (byte 8 8) code) file)) + (:big-endian + (dump-byte (ldb (byte 8 8) code) file) + (dump-byte (ldb (byte 8 0) code) file)))) + +;; Dump a string one character at a time because in the +;; cross-compiler, we're still using 8-bit strings, but want 16-bit +;; strings in the resulting fasl file. +(defun dump-simple-string (s file) + (declare (type simple-base-string s)) + (let ((length (length s))) + (dump-fop* length lisp::fop-small-string lisp::fop-string file) + (dotimes (k length) + (dump-string-char (char-code (aref s k)) file))) + (undefined-value)) + +;; Like dump-simple-string +(defun dump-symbol (s file) + (let* ((pname (symbol-name s)) + (pname-length (length pname)) + (pkg (symbol-package s))) + + (cond ((null pkg) + (dump-fop* pname-length lisp::fop-uninterned-small-symbol-save + lisp::fop-uninterned-symbol-save file)) + ;; Why do we do this? It causes weird things to happen if + ;; you're in, say, the KERNEL package when you compile-file + ;; something and load the fasl back in when you're in a + ;; different package. + #-(and) + ((eq pkg *package*) + (dump-fop* pname-length lisp::fop-small-symbol-save + lisp::fop-symbol-save file)) + ((eq pkg ext:*lisp-package*) + (dump-fop* pname-length lisp::fop-lisp-small-symbol-save + lisp::fop-lisp-symbol-save file)) + ((eq pkg ext:*keyword-package*) + (dump-fop* pname-length lisp::fop-keyword-small-symbol-save + lisp::fop-keyword-symbol-save file)) + ((< pname-length 256) + (dump-fop* (dump-package pkg file) + lisp::fop-small-symbol-in-byte-package-save + lisp::fop-small-symbol-in-package-save file) + (dump-byte pname-length file)) + (t + (dump-fop* (dump-package pkg file) + lisp::fop-symbol-in-byte-package-save + lisp::fop-symbol-in-package-save file) + (dump-unsigned-32 pname-length file))) + + (dotimes (k pname-length) + (dump-string-char (char-code (aref pname k)) file)) + + (unless *cold-load-dump* + (setf (gethash s (fasl-file-eq-table file)) (fasl-file-table-free file))) + + (incf (fasl-file-table-free file))) + + (undefined-value)) + +;; We always dump characters in little endian order, which seems to be +;; the way most fops are done. +(defun dump-character (ch file) + (dump-fop 'lisp::fop-short-character file) + (let ((code (char-code ch))) + (dump-byte (ldb (byte 8 0) code) file) + (dump-byte (ldb (byte 8 8) code) file))) + +(defun dump-fixups (fixups file) + (declare (list fixups) (type fasl-file file)) + (dolist (info fixups) + (let* ((kind (first info)) + (fixup (second info)) + (name (fixup-name fixup)) + (flavor (fixup-flavor fixup)) + (offset (third info))) + (dump-fop 'lisp::fop-normal-load file) + (let ((*cold-load-dump* t)) + (dump-object kind file)) + (dump-fop 'lisp::fop-maybe-cold-load file) + (ecase flavor + (:assembly-routine + (assert (symbolp name)) + (dump-fop 'lisp::fop-normal-load file) + (let ((*cold-load-dump* t)) + (dump-object name file)) + (dump-fop 'lisp::fop-maybe-cold-load file) + (dump-fop 'lisp::fop-assembler-fixup file)) + ((:foreign :foreign-data) + (assert (stringp name)) + (if (eq flavor :foreign) + (dump-fop 'lisp::fop-foreign-fixup file) + (dump-fop 'lisp::fop-foreign-data-fixup file)) + (let ((len (length name))) + (assert (< len 256)) + (dump-byte len file) + (dotimes (i len) + (dump-string-char (char-code (schar name i)) file)))) + (:code-object + (dump-fop 'lisp::fop-code-object-fixup file))) + (dump-unsigned-32 offset file))) + (undefined-value)) + +(in-package "LISP") + +;; See print.lisp. +(defconstant othercase-attribute (ash 1 9)) + +(handler-bind ((error #'(lambda (c) + (declare (ignore c)) + (invoke-restart 'kernel::continue)))) + (defconstant attribute-names + `((number . number-attribute) (lowercase . lowercase-attribute) + (uppercase . uppercase-attribute) (letter . letter-attribute) + (sign . sign-attribute) (extension . extension-attribute) + (dot . dot-attribute) (slash . slash-attribute) + (other . other-attribute) (funny . funny-attribute) + (othercase . othercase-attribute)))) + +;; Opposite of dump-string-char. +(defmacro load-string-char () + (ecase (c::backend-byte-order c::*native-backend*) + (:little-endian + `(code-char (+ (read-arg 1) + (ash (read-arg 1) 8)))) + (:big-endian + `(code-char (+ (ash (read-arg 1) 8) + (read-arg 1)))))) + +;; Needed to read in 16-bit strings. +(clone-fop (fop-string 37) + (fop-small-string 38) + (let* ((arg (clone-arg)) + (res (make-string arg))) + (dotimes (k arg) + (setf (aref res k) (load-string-char))) + res)) + +;; Read in characters. They're always dumped in little-endian order. +(define-fop (fop-short-character 69) + (code-char (+ (read-arg 1) + (ash (read-arg 1) 8)))) + +;; Needed to read in 16-bit strings to create the symbols. +(macrolet ((frob (name code name-size package) + (let ((n-package (gensym "PACKAGE-")) + (n-size (gensym "SIZE-")) + (n-buffer (gensym "BUFFER-")) + (k (gensym "IDX-"))) + `(define-fop (,name ,code) + (prepare-for-fast-read-byte *fasl-file* + (let ((,n-package ,package) + (,n-size (fast-read-u-integer ,name-size))) + (when (> ,n-size *load-symbol-buffer-size*) + (setq *load-symbol-buffer* + (make-string (setq *load-symbol-buffer-size* + (* ,n-size 2))))) + (done-with-fast-read-byte) + (let ((,n-buffer *load-symbol-buffer*)) + (dotimes (,k ,n-size) + (setf (aref ,n-buffer ,k) (load-string-char))) + (push-table (intern* ,n-buffer ,n-size ,n-package))))))))) + (frob fop-symbol-save 6 4 *package*) + (frob fop-small-symbol-save 7 1 *package*) + (frob fop-lisp-symbol-save 75 4 *lisp-package*) + (frob fop-lisp-small-symbol-save 76 1 *lisp-package*) + (frob fop-keyword-symbol-save 77 4 *keyword-package*) + (frob fop-keyword-small-symbol-save 78 1 *keyword-package*) + + (frob fop-symbol-in-package-save 8 4 + (svref *current-fop-table* (fast-read-u-integer 4))) + (frob fop-small-symbol-in-package-save 9 1 + (svref *current-fop-table* (fast-read-u-integer 4))) + (frob fop-symbol-in-byte-package-save 10 4 + (svref *current-fop-table* (fast-read-u-integer 1))) + (frob fop-small-symbol-in-byte-package-save 11 1 + (svref *current-fop-table* (fast-read-u-integer 1)))) + +(clone-fop (fop-uninterned-symbol-save 12) + (fop-uninterned-small-symbol-save 13) + (let* ((arg (clone-arg)) + (res (make-string arg))) + (dotimes (k arg) + (setf (aref res k) (load-string-char))) + (push-table (make-symbol res)))) + +(define-fop (fop-foreign-fixup 147) + (let* ((kind (pop-stack)) + (code-object (pop-stack)) + (len (read-arg 1)) + (sym (make-string len))) + (dotimes (k len) + (setf (aref sym k) (load-string-char))) + (old-vm:fixup-code-object code-object (read-arg 4) + (foreign-symbol-address-aux sym :code) + kind) + code-object)) + +(define-fop (fop-foreign-data-fixup 150) + (let* ((kind (pop-stack)) + (code-object (pop-stack)) + (len (read-arg 1)) + (sym (make-string len))) + (dotimes (k len) + (setf (aref sym k) (load-string-char))) + (old-vm:fixup-code-object code-object (read-arg 4) + (foreign-symbol-address-aux sym :data) + kind) + code-object)) + +;; Kill the any deftransforms. They get in the way because they +;; assume 8-bit strings. +(in-package "C") +(dolist (f '(concatenate subseq replace copy-seq)) + (setf (c::function-info-transforms (c::function-info-or-lose f)) nil)) + +(in-package "C-CALL") + +(def-alien-type-method (c-string :deport-gen) (type value) + (declare (ignore type)) + (let ((s (gensym "C-STRING-")) + (len (gensym "LEN-")) + (k (gensym "IDX-"))) + `(etypecase ,value + (null (int-sap 0)) + ((alien (* char)) (alien-sap ,value)) + (simple-base-string + (let* ((,len (length ,value)) + (,s (make-array (1+ ,len) :element-type '(unsigned-byte 8)))) + (dotimes (,k ,len) + (setf (aref ,s ,k) (logand #xff (char-code (aref ,value ,k))))) + (setf (aref ,s ,len) 0) + (vector-sap ,s)))))) + +;;; Might as well update the FASL file version too, since we have to +;;; do a cross-compile anyway, and the Unicode fasl's aren't even +;;; close to being compatible with previous versions. + +(in-package :c) + +(setf lisp::*enable-package-locked-errors* nil) + +;;; +;;; Note that BYTE-FASL-FILE-VERSION is a constant. +;;; +;;; (Be sure to change BYTE-FASL-FILE-VERSION in +;;; compiler/byte-comp.lisp to the correct value too!) +;;; +(setf (symbol-value 'byte-fasl-file-version) #x20a) +(setf (backend-fasl-file-version *target-backend*) #x20a) + +;;; +;;; Don't check fasl versions in the compiling Lisp because we'll +;;; load files compiled with the new version numbers. +;;; +(setq lisp::*skip-fasl-file-version-check* t) + +;;; +;;; This is here because BYTE-FASL-FILE-VERSION is constant-folded in +;;; OPEN-FASL-FILE. To make the new version number take effect, we +;;; have to redefine the function. +;;; +(defun open-fasl-file (name where &optional byte-p) + (declare (type pathname name)) + (let* ((stream (open name :direction :output + :if-exists :new-version + :element-type '(unsigned-byte 8))) + (res (make-fasl-file :stream stream))) + (multiple-value-bind + (version f-vers f-imp) + (if byte-p + (values "Byte code" + byte-fasl-file-version + (backend-byte-fasl-file-implementation *backend*)) + (values (backend-version *backend*) + (backend-fasl-file-version *backend*) + (backend-fasl-file-implementation *backend*))) + (format stream + "FASL FILE output from ~A.~@ + Compiled ~A on ~A~@ + Compiler ~A, Lisp ~A~@ + Targeted for ~A, FASL version ~X~%" + where + (ext:format-universal-time nil (get-universal-time)) + (machine-instance) compiler-version + (lisp-implementation-version) + version f-vers) + ;; + ;; Terminate header. + (dump-byte 255 res) + ;; + ;; Specify code format. + (dump-fop 'lisp::fop-long-code-format res) + (dump-byte f-imp res) + (dump-unsigned-32 f-vers res)) + res)) diff --git a/bootfiles/19e/boot-2008-05-cross-unicode-ppc.lisp b/bootfiles/19e/boot-2008-05-cross-unicode-ppc.lisp new file mode 100644 index 000000000..143daff7e --- /dev/null +++ b/bootfiles/19e/boot-2008-05-cross-unicode-ppc.lisp @@ -0,0 +1,227 @@ +;;; Cross-compile script to add 16-bit strings for Unicode support. +;;; Use as the cross-compile script for cross-build-world.sh. + +(in-package :cl-user) + +;;; Rename the PPC package and backend so that new-backend does the +;;; right thing. +(rename-package "PPC" "OLD-PPC" '("OLD-VM")) +(setf (c:backend-name c:*native-backend*) "OLD-PPC") + +(c::new-backend "PPC" + ;; Features to add here + '(:ppc + :new-assembler + :conservative-float-type + :hash-new + :random-mt19937 + :darwin :bsd + :cmu :cmu19 :cmu19e + :relative-package-names ; Relative package names from Allegro + :linkage-table + :modular-arith ; Modular arithmetic + :double-double ; Double-double floats + :gencgc ; Generational GC + ) + ;; Features to remove from current *features* here + '(:x86-bootstrap :alpha :osf1 :mips :x86 :i486 :pentium :ppro + :propagate-fun-type :propagate-float-type :constrain-float-type + :openbsd :freebsd :glibc2 :linux :pentium :elf :mp + :stack-checking :heap-overflow-check + :cgc :long-float :new-random :small)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Things needed to cross-compile unicode changes. + +(load "target:bootfiles/19e/boot-2008-05-cross-unicode-common.lisp") + + +;; End changes for unicode +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;; Extern-alien-name for the new backend. +(in-package :vm) +(defun extern-alien-name (name) + (declare (type simple-string name)) + (concatenate 'string "_" name)) +(export 'extern-alien-name) +(export 'fixup-code-object) +(export 'sanctify-for-execution) + +;;; Compile the new backend. +(pushnew :bootstrap *features*) +(pushnew :building-cross-compiler *features*) +(load "target:tools/comcom") + +;;; Load the new backend. +(setf (search-list "c:") + '("target:compiler/")) +(setf (search-list "vm:") + '("c:ppc/" "c:generic/")) +(setf (search-list "assem:") + '("target:assembly/" "target:assembly/ppc/")) + +;; Load the backend of the compiler. + +(in-package "C") + +(load "vm:vm-macs") +(load "vm:parms") +(load "vm:objdef") +(load "vm:interr") +(load "assem:support") + +(load "target:compiler/srctran") +(load "vm:vm-typetran") +(load "target:compiler/float-tran") +(load "target:compiler/saptran") + +(load "vm:macros") +(load "vm:utils") + +(load "vm:vm") +(load "vm:insts") +(load "vm:primtype") +(load "vm:move") +(load "vm:sap") +(load "vm:system") +(load "vm:char") +(load "vm:float") + +(load "vm:memory") +(load "vm:static-fn") +(load "vm:arith") +(load "vm:cell") +(load "vm:subprim") +(load "vm:debug") +(load "vm:c-call") +(load "vm:print") +(load "vm:alloc") +(load "vm:call") +(load "vm:nlx") +(load "vm:values") +(load "vm:array") +(load "vm:pred") +(load "vm:type-vops") + +(load "assem:assem-rtns") + +(load "assem:array") +(load "assem:arith") +(load "assem:alloc") + +(load "c:pseudo-vops") + +(check-move-function-consistency) + +(load "vm:new-genesis") + +;;; OK, the cross compiler backend is loaded. + +(setf *features* (remove :building-cross-compiler *features*)) + +;;; Info environment hacks. +(macrolet ((frob (&rest syms) + `(progn ,@(mapcar #'(lambda (sym) + `(defconstant ,sym + (symbol-value + (find-symbol ,(symbol-name sym) + :vm)))) + syms)))) + (frob OLD-PPC:BYTE-BITS OLD-PPC:WORD-BITS + #+long-float OLD-PPC:SIMPLE-ARRAY-LONG-FLOAT-TYPE + OLD-PPC:SIMPLE-ARRAY-DOUBLE-FLOAT-TYPE + OLD-PPC:SIMPLE-ARRAY-SINGLE-FLOAT-TYPE + #+long-float OLD-PPC:SIMPLE-ARRAY-COMPLEX-LONG-FLOAT-TYPE + OLD-PPC:SIMPLE-ARRAY-COMPLEX-DOUBLE-FLOAT-TYPE + OLD-PPC:SIMPLE-ARRAY-COMPLEX-SINGLE-FLOAT-TYPE + OLD-PPC:SIMPLE-ARRAY-UNSIGNED-BYTE-2-TYPE + OLD-PPC:SIMPLE-ARRAY-UNSIGNED-BYTE-4-TYPE + OLD-PPC:SIMPLE-ARRAY-UNSIGNED-BYTE-8-TYPE + OLD-PPC:SIMPLE-ARRAY-UNSIGNED-BYTE-16-TYPE + OLD-PPC:SIMPLE-ARRAY-UNSIGNED-BYTE-32-TYPE + OLD-PPC:SIMPLE-ARRAY-SIGNED-BYTE-8-TYPE + OLD-PPC:SIMPLE-ARRAY-SIGNED-BYTE-16-TYPE + OLD-PPC:SIMPLE-ARRAY-SIGNED-BYTE-30-TYPE + OLD-PPC:SIMPLE-ARRAY-SIGNED-BYTE-32-TYPE + OLD-PPC:SIMPLE-BIT-VECTOR-TYPE + OLD-PPC:SIMPLE-STRING-TYPE OLD-PPC:SIMPLE-VECTOR-TYPE + OLD-PPC:SIMPLE-ARRAY-TYPE OLD-PPC:VECTOR-DATA-OFFSET + OLD-PPC:DOUBLE-FLOAT-EXPONENT-BYTE + OLD-PPC:DOUBLE-FLOAT-NORMAL-EXPONENT-MAX + OLD-PPC:DOUBLE-FLOAT-SIGNIFICAND-BYTE + OLD-PPC:SINGLE-FLOAT-EXPONENT-BYTE + OLD-PPC:SINGLE-FLOAT-NORMAL-EXPONENT-MAX + OLD-PPC:SINGLE-FLOAT-SIGNIFICAND-BYTE + )) + +;; Modular arith hacks +(setf (fdefinition 'vm::ash-left-mod32) #'old-ppc::ash-left-mod32) +(setf (fdefinition 'vm::lognot-mod32) #'old-ppc::lognot-mod32) + +;; Fused multiply hack. Don't know why this is needed for a cross-compile +(setf (fdefinition 'vm::fused-multiply-add) #'old-ppc::fused-multiply-add) +(setf (fdefinition 'vm::fused-multiply-subtract) #'old-ppc::fused-multiply-subtract) +;; end + +(let ((function (symbol-function 'kernel:error-number-or-lose))) + (let ((*info-environment* (c:backend-info-environment c:*target-backend*))) + (setf (symbol-function 'kernel:error-number-or-lose) function) + (setf (info function kind 'kernel:error-number-or-lose) :function) + (setf (info function where-from 'kernel:error-number-or-lose) :defined))) + +(defun fix-class (name) + (let* ((new-value (find-class name)) + (new-layout (kernel::%class-layout new-value)) + (new-cell (kernel::find-class-cell name)) + (*info-environment* (c:backend-info-environment c:*target-backend*))) + (remhash name kernel::*forward-referenced-layouts*) + (kernel::%note-type-defined name) + (setf (info type kind name) :instance) + (setf (info type class name) new-cell) + (setf (info type compiler-layout name) new-layout) + new-value)) +(fix-class 'c::vop-parse) +(fix-class 'c::operand-parse) + +#+random-mt19937 +(declaim (notinline kernel:random-chunk)) + +(setf c:*backend* c:*target-backend*) + +;;; Extern-alien-name for the new backend. +(in-package :vm) +(defun extern-alien-name (name) + (declare (type simple-string name)) + (concatenate 'string "_" name)) +(export 'extern-alien-name) +(export 'fixup-code-object) +(export 'sanctify-for-execution) + +(in-package :cl-user) + +;;; Don't load compiler parts from the target compilation + +(defparameter *load-stuff* nil) + +;; hack, hack, hack: Make old-x86::any-reg the same as +;; x86::any-reg as an SC. Do this by adding old-x86::any-reg +;; to the hash table with the same value as x86::any-reg. + +(let ((ht (c::backend-sc-names c::*target-backend*))) + (setf (gethash 'old-ppc::any-reg ht) + (gethash 'ppc::any-reg ht))) + +;; A hack for ppc. Make sure the vop, move-double-to-int-arg, is +;; available in both the OLD-PPC and new PPC package. (I don't know +;; why this is needed, but it seems to be.) +(let ((ht (c::backend-template-names c::*target-backend*))) + (dolist (syms '((old-ppc::move-double-to-int-arg + ppc::move-double-to-int-arg) + (old-ppc::move-single-to-int-arg + ppc::move-single-to-int-arg))) + (destructuring-bind (old new) + syms + (setf (gethash old + ht) + (gethash new ht))))) diff --git a/bootfiles/19e/boot-2008-05-cross-unicode-sparc.lisp b/bootfiles/19e/boot-2008-05-cross-unicode-sparc.lisp new file mode 100644 index 000000000..ea60caa07 --- /dev/null +++ b/bootfiles/19e/boot-2008-05-cross-unicode-sparc.lisp @@ -0,0 +1,247 @@ +;;; Cross-compile script to add 16-bit strings for Unicode support. +;;; Use as the cross-compile script for cross-build-world.sh. + +(in-package :cl-user) + +;;; Rename the SPARC package and backend so that new-backend does the +;;; right thing. +(rename-package "SPARC" "OLD-SPARC" '("OLD-VM")) +(setf (c:backend-name c:*native-backend*) "OLD-SPARC") + +(c::new-backend "SPARC" + ;; Features to add here + '(:sparc + :sparc-v9 ; For Ultrasparc processors + :complex-fp-vops ; Some slightly faster FP vops on complex numbers + :linkage-table + :stack-checking ; Throw error if we run out of stack + :heap-overflow-check ; Throw error if we run out of + ; heap (This requires gencgc!) + :gencgc ; Generational GC + :relative-package-names ; Relative package names from Allegro + :conservative-float-type + :hash-new + :random-mt19937 ; MT-19937 generator + :cmu ; Announce this is CMUCL + :cmu19 :cmu19e ; Current version identifier + :modular-arith ; Modular arithmetic + :double-double ; Double-double float support + :unicode + ) + ;; Features to remove from current *features* here + '(:sparc-v8 :sparc-v7 ; Choose only one of :sparc-v7, :sparc-v8, :sparc-v9 + ;; Other architectures we aren't using. + :x86 :x86-bootstrap + :alpha :osf1 :mips + ;; Really old stuff that should have been removed long ago. + :propagate-fun-type :propagate-float-type :constrain-float-type + ;; Other OSes were not using + :openbsd :freebsd :glibc2 :linux + :pentium + :long-float + :new-random + :small)) + +;;; May need to add some symbols to *features* and +;;; sys::*runtime-features* as well. This might be needed even if we +;;; have those listed above, because of the code checks for things in +;;; *features* and not in the backend-features.. So do that here. + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Things needed to cross-compile unicode changes. + +(load "target:bootfiles/19e/boot-2008-05-cross-unicode-common.lisp") + + +;; End changes for unicode +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;; Extern-alien-name for the new backend. +(in-package :vm) +(defun extern-alien-name (name) + (declare (type simple-string name)) + #+(and bsd (not elf)) + (concatenate 'string "_" name) + #-(and bsd (not elf)) + name) +;; When compiling the compiler, vm:fixup-code-object and +;; vm:sanctify-for-execution are undefined. Import these to get rid +;; of that error. +(import 'old-sparc::fixup-code-object) +(import 'old-sparc::sanctify-for-execution) +(export 'extern-alien-name) +(export 'fixup-code-object) +(export 'sanctify-for-execution) + +(in-package :cl-user) + +;;; Compile the new backend. +(pushnew :bootstrap *features*) +(pushnew :building-cross-compiler *features*) +(load "target:tools/comcom") + +;;; Load the new backend. +(setf (search-list "c:") + '("target:compiler/")) +(setf (search-list "vm:") + '("c:sparc/" "c:generic/")) +(setf (search-list "assem:") + '("target:assembly/" "target:assembly/sparc/")) + +;; Load the backend of the compiler. + +(in-package "C") + +(load "vm:vm-macs") +(load "vm:parms") +(load "vm:objdef") +(load "vm:interr") +(load "assem:support") + +(load "target:compiler/srctran") +(load "vm:vm-typetran") +(load "target:compiler/float-tran") +(load "target:compiler/saptran") + +(load "vm:macros") +(load "vm:utils") + +(load "vm:vm") +(load "vm:insts") +(load "vm:primtype") +(load "vm:move") +(load "vm:sap") +(load "vm:system") +(load "vm:char") +(load "vm:float") + +(load "vm:memory") +(load "vm:static-fn") +(load "vm:arith") +(load "vm:cell") +(load "vm:subprim") +(load "vm:debug") +(load "vm:c-call") +(load "vm:print") +(load "vm:alloc") +(load "vm:call") +(load "vm:nlx") +(load "vm:values") +(load "vm:array") +(load "vm:pred") +(load "vm:type-vops") + +(load "assem:assem-rtns") + +(load "assem:array") +(load "assem:arith") +(load "assem:alloc") + +(load "c:pseudo-vops") + +(check-move-function-consistency) + +(load "vm:new-genesis") + +;;; OK, the cross compiler backend is loaded. + +(setf *features* (remove :building-cross-compiler *features*)) + +;;; Info environment hacks. +(macrolet ((frob (&rest syms) + `(progn ,@(mapcar #'(lambda (sym) + `(defconstant ,sym + (symbol-value + (find-symbol ,(symbol-name sym) + :vm)))) + syms)))) + (frob OLD-SPARC:BYTE-BITS OLD-SPARC:WORD-BITS + OLD-SPARC:CHAR-BITS + OLD-SPARC:LOWTAG-BITS + #+long-float OLD-SPARC:SIMPLE-ARRAY-LONG-FLOAT-TYPE + OLD-SPARC:SIMPLE-ARRAY-DOUBLE-FLOAT-TYPE + OLD-SPARC:SIMPLE-ARRAY-SINGLE-FLOAT-TYPE + #+long-float OLD-SPARC:SIMPLE-ARRAY-COMPLEX-LONG-FLOAT-TYPE + OLD-SPARC:SIMPLE-ARRAY-COMPLEX-DOUBLE-FLOAT-TYPE + OLD-SPARC:SIMPLE-ARRAY-COMPLEX-SINGLE-FLOAT-TYPE + OLD-SPARC:SIMPLE-ARRAY-UNSIGNED-BYTE-2-TYPE + OLD-SPARC:SIMPLE-ARRAY-UNSIGNED-BYTE-4-TYPE + OLD-SPARC:SIMPLE-ARRAY-UNSIGNED-BYTE-8-TYPE + OLD-SPARC:SIMPLE-ARRAY-UNSIGNED-BYTE-16-TYPE + OLD-SPARC:SIMPLE-ARRAY-UNSIGNED-BYTE-32-TYPE + OLD-SPARC:SIMPLE-ARRAY-SIGNED-BYTE-8-TYPE + OLD-SPARC:SIMPLE-ARRAY-SIGNED-BYTE-16-TYPE + OLD-SPARC:SIMPLE-ARRAY-SIGNED-BYTE-30-TYPE + OLD-SPARC:SIMPLE-ARRAY-SIGNED-BYTE-32-TYPE + OLD-SPARC:SIMPLE-BIT-VECTOR-TYPE + OLD-SPARC:SIMPLE-STRING-TYPE OLD-SPARC:SIMPLE-VECTOR-TYPE + OLD-SPARC:SIMPLE-ARRAY-TYPE OLD-SPARC:VECTOR-DATA-OFFSET + OLD-SPARC:DOUBLE-FLOAT-DIGITS + old-sparc:single-float-digits + OLD-SPARC:DOUBLE-FLOAT-EXPONENT-BYTE + OLD-SPARC:DOUBLE-FLOAT-NORMAL-EXPONENT-MAX + OLD-SPARC:DOUBLE-FLOAT-SIGNIFICAND-BYTE + OLD-SPARC:SINGLE-FLOAT-EXPONENT-BYTE + OLD-SPARC:SINGLE-FLOAT-NORMAL-EXPONENT-MAX + OLD-SPARC:SINGLE-FLOAT-SIGNIFICAND-BYTE + ) + #+double-double + (frob OLD-SPARC:SIMPLE-ARRAY-COMPLEX-DOUBLE-DOUBLE-FLOAT-TYPE + OLD-SPARC:SIMPLE-ARRAY-DOUBLE-DOUBLE-FLOAT-TYPE) + ) + +;; Modular arith hacks. When cross-compiling, the compiler wants to +;; constant-fold some stuff, and it needs the following functions to +;; do so. This just gets rid of the hundreds of errors that happen. +(setf (fdefinition 'vm::ash-left-mod32) #'old-sparc::ash-left-mod32) +(setf (fdefinition 'vm::lognot-mod32) #'old-sparc::lognot-mod32) +;; End modular arith hacks + +(let ((function (symbol-function 'kernel:error-number-or-lose))) + (let ((*info-environment* (c:backend-info-environment c:*target-backend*))) + (setf (symbol-function 'kernel:error-number-or-lose) function) + (setf (info function kind 'kernel:error-number-or-lose) :function) + (setf (info function where-from 'kernel:error-number-or-lose) :defined))) + +(defun fix-class (name) + (let* ((new-value (find-class name)) + (new-layout (kernel::%class-layout new-value)) + (new-cell (kernel::find-class-cell name)) + (*info-environment* (c:backend-info-environment c:*target-backend*))) + (remhash name kernel::*forward-referenced-layouts*) + (kernel::%note-type-defined name) + (setf (info type kind name) :instance) + (setf (info type class name) new-cell) + (setf (info type compiler-layout name) new-layout) + new-value)) +(fix-class 'c::vop-parse) +(fix-class 'c::operand-parse) + +#+random-mt19937 +(declaim (notinline kernel:random-chunk)) + +(setf c:*backend* c:*target-backend*) + +;;; Extern-alien-name for the new backend. +(in-package :vm) +(defun extern-alien-name (name) + (declare (type simple-string name)) + name) +(export 'extern-alien-name) +(export 'fixup-code-object) +(export 'sanctify-for-execution) +(in-package :cl-user) + +;;; Don't load compiler parts from the target compilation + +(defparameter *load-stuff* nil) + +;; Sometimes during cross-compile sparc::any-reg isn't defined during +;; cross-compile. +;; +;; hack, hack, hack: Make old-sparc::any-reg the same as +;; sparc::any-reg as an SC. Do this by adding old-sparc::any-reg +;; to the hash table with the same value as sparc::any-reg. +(let ((ht (c::backend-sc-names c::*target-backend*))) + (setf (gethash 'old-sparc::any-reg ht) + (gethash 'sparc::any-reg ht))) diff --git a/bootfiles/19e/boot-2008-05-cross-unicode-x86.lisp b/bootfiles/19e/boot-2008-05-cross-unicode-x86.lisp new file mode 100644 index 000000000..912e52101 --- /dev/null +++ b/bootfiles/19e/boot-2008-05-cross-unicode-x86.lisp @@ -0,0 +1,214 @@ +;;; Cross-compile script to add 16-bit strings for Unicode support. +;;; Use as the cross-compile script for cross-build-world.sh. + +(in-package :cl-user) + +;;; Rename the X86 package and backend so that new-backend does the +;;; right thing. +(rename-package "X86" "OLD-X86" '("OLD-VM")) +(setf (c:backend-name c:*native-backend*) "OLD-X86") + +(c::new-backend "X86" + ;; Features to add here + '(:x86 :i486 :pentium + :stack-checking + :heap-overflow-check + :relative-package-names + :mp + :gencgc + :conservative-float-type + :hash-new :random-mt19937 + :cmu :cmu19 :cmu19e + :double-double + :unicode + ) + ;; Features to remove from current *features* here + '()) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Things needed to cross-compile unicode changes. + +(load "target:bootfiles/19e/boot-2008-05-cross-unicode-common.lisp") + +;; Kill the any deftransforms +(in-package "C") +(dolist (f '(concatenate subseq replace copy-seq)) + (setf (c::function-info-transforms (c::function-info-or-lose f)) nil)) + +;; End changes for unicode +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(in-package :cl-user) + +;;; Compile the new backend. +(pushnew :bootstrap *features*) +(pushnew :building-cross-compiler *features*) +(load "target:tools/comcom") + +;;; Load the new backend. +(setf (search-list "c:") + '("target:compiler/")) +(setf (search-list "vm:") + '("c:x86/" "c:generic/")) +(setf (search-list "assem:") + '("target:assembly/" "target:assembly/x86/")) + +;; Load the backend of the compiler. + +(in-package "C") + +(load "vm:vm-macs") +(load "vm:parms") +(load "vm:objdef") +(load "vm:interr") +(load "assem:support") + +(load "target:compiler/srctran") +(load "vm:vm-typetran") +(load "target:compiler/float-tran") +(load "target:compiler/saptran") + +(load "vm:macros") +(load "vm:utils") + +(load "vm:vm") +(load "vm:insts") +(load "vm:primtype") +(load "vm:move") +(load "vm:sap") +(when (target-featurep :sse2) + (load "vm:sse2-sap")) + +(load "vm:system") +(load "vm:char") +(if (target-featurep :sse2) + (load "vm:float-sse2") + (load "vm:float")) + +(load "vm:memory") +(load "vm:static-fn") +(load "vm:arith") +(load "vm:cell") +(load "vm:subprim") +(load "vm:debug") +(load "vm:c-call") +(if (target-featurep :sse2) + (load "vm:sse2-c-call") + (load "vm:x87-c-call")) + +(load "vm:print") +(load "vm:alloc") +(load "vm:call") +(load "vm:nlx") +(load "vm:values") +;; These need to be loaded before array because array wants to use +;; some vops as templates. +(load (if (target-featurep :sse2) + "vm:sse2-array" + "vm:x87-array")) +(load "vm:array") +(load "vm:pred") +(load "vm:type-vops") + +(load "assem:assem-rtns") + +(load "assem:array") +(load "assem:arith") +(load "assem:alloc") + +(load "c:pseudo-vops") + +(check-move-function-consistency) + +(load "vm:new-genesis") + +;;; OK, the cross compiler backend is loaded. + +(setf *features* (remove :building-cross-compiler *features*)) + +;;; Info environment hacks. +(macrolet ((frob (&rest syms) + `(progn ,@(mapcar #'(lambda (sym) + `(defconstant ,sym + (symbol-value + (find-symbol ,(symbol-name sym) + :vm)))) + syms)))) + (frob OLD-X86:BYTE-BITS OLD-X86:WORD-BITS + #+long-float OLD-X86:SIMPLE-ARRAY-LONG-FLOAT-TYPE + OLD-X86:SIMPLE-ARRAY-DOUBLE-FLOAT-TYPE + OLD-X86:SIMPLE-ARRAY-SINGLE-FLOAT-TYPE + #+long-float OLD-X86:SIMPLE-ARRAY-COMPLEX-LONG-FLOAT-TYPE + OLD-X86:SIMPLE-ARRAY-COMPLEX-DOUBLE-FLOAT-TYPE + OLD-X86:SIMPLE-ARRAY-COMPLEX-SINGLE-FLOAT-TYPE + OLD-X86:SIMPLE-ARRAY-UNSIGNED-BYTE-2-TYPE + OLD-X86:SIMPLE-ARRAY-UNSIGNED-BYTE-4-TYPE + OLD-X86:SIMPLE-ARRAY-UNSIGNED-BYTE-8-TYPE + OLD-X86:SIMPLE-ARRAY-UNSIGNED-BYTE-16-TYPE + OLD-X86:SIMPLE-ARRAY-UNSIGNED-BYTE-32-TYPE + OLD-X86:SIMPLE-ARRAY-SIGNED-BYTE-8-TYPE + OLD-X86:SIMPLE-ARRAY-SIGNED-BYTE-16-TYPE + OLD-X86:SIMPLE-ARRAY-SIGNED-BYTE-30-TYPE + OLD-X86:SIMPLE-ARRAY-SIGNED-BYTE-32-TYPE + OLD-X86:SIMPLE-BIT-VECTOR-TYPE + OLD-X86:SIMPLE-STRING-TYPE OLD-X86:SIMPLE-VECTOR-TYPE + OLD-X86:SIMPLE-ARRAY-TYPE OLD-X86:VECTOR-DATA-OFFSET + OLD-X86:DOUBLE-FLOAT-EXPONENT-BYTE + OLD-X86:DOUBLE-FLOAT-NORMAL-EXPONENT-MAX + OLD-X86:DOUBLE-FLOAT-SIGNIFICAND-BYTE + OLD-X86:SINGLE-FLOAT-EXPONENT-BYTE + OLD-X86:SINGLE-FLOAT-NORMAL-EXPONENT-MAX + OLD-X86:SINGLE-FLOAT-SIGNIFICAND-BYTE + ) + #+double-double + (frob OLD-X86:SIMPLE-ARRAY-COMPLEX-DOUBLE-DOUBLE-FLOAT-TYPE + OLD-X86:SIMPLE-ARRAY-DOUBLE-DOUBLE-FLOAT-TYPE)) + +;; Modular arith hacks +(setf (fdefinition 'vm::ash-left-mod32) #'old-x86::ash-left-mod32) +(setf (fdefinition 'vm::lognot-mod32) #'old-x86::lognot-mod32) +;; End arith hacks + +(let ((function (symbol-function 'kernel:error-number-or-lose))) + (let ((*info-environment* (c:backend-info-environment c:*target-backend*))) + (setf (symbol-function 'kernel:error-number-or-lose) function) + (setf (info function kind 'kernel:error-number-or-lose) :function) + (setf (info function where-from 'kernel:error-number-or-lose) :defined))) + +(defun fix-class (name) + (let* ((new-value (find-class name)) + (new-layout (kernel::%class-layout new-value)) + (new-cell (kernel::find-class-cell name)) + (*info-environment* (c:backend-info-environment c:*target-backend*))) + (remhash name kernel::*forward-referenced-layouts*) + (kernel::%note-type-defined name) + (setf (info type kind name) :instance) + (setf (info type class name) new-cell) + (setf (info type compiler-layout name) new-layout) + new-value)) +(fix-class 'c::vop-parse) +(fix-class 'c::operand-parse) + +#+random-mt19937 +(declaim (notinline kernel:random-chunk)) + +(setf c:*backend* c:*target-backend*) + +;;; Extern-alien-name for the new backend. +(in-package :vm) +(defun extern-alien-name (name) + (declare (type simple-string name)) + name) +(export 'extern-alien-name) +(export 'fixup-code-object) +(export 'sanctify-for-execution) +(in-package :cl-user) + +;;; Don't load compiler parts from the target compilation + +(defparameter *load-stuff* nil) + +;; hack, hack, hack: Make old-x86::any-reg the same as +;; x86::any-reg as an SC. Do this by adding old-x86::any-reg +;; to the hash table with the same value as x86::any-reg. +(let ((ht (c::backend-sc-names c::*target-backend*))) + (setf (gethash 'old-x86::any-reg ht) + (gethash 'x86::any-reg ht))) diff --git a/bootfiles/19e/boot-2008-05-no-unicode.lisp b/bootfiles/19e/boot-2008-05-no-unicode.lisp new file mode 100644 index 000000000..1b45c8e46 --- /dev/null +++ b/bootfiles/19e/boot-2008-05-no-unicode.lisp @@ -0,0 +1,11 @@ +;; Bootstrap file to build the code without unicode. This is needed +;; because some new constants were added. + +(in-package "VM") +(defconstant char-bits #-unicode 8 #+unicode 16 + "Number of bits needed to represent a character") + +(defconstant char-bytes (truncate char-bits byte-bits) + "Number of bytes needed to represent a character") + + diff --git a/bootfiles/19f/boot-2009-03-cross-unicode-ppc.lisp b/bootfiles/19f/boot-2009-03-cross-unicode-ppc.lisp new file mode 100644 index 000000000..384444cc1 --- /dev/null +++ b/bootfiles/19f/boot-2009-03-cross-unicode-ppc.lisp @@ -0,0 +1 @@ +(load "target:bootfiles/19e/boot-2008-05-cross-unicode-ppc") diff --git a/bootfiles/19f/boot-2009-03-cross-unicode-sparc.lisp b/bootfiles/19f/boot-2009-03-cross-unicode-sparc.lisp new file mode 100644 index 000000000..c01f682b5 --- /dev/null +++ b/bootfiles/19f/boot-2009-03-cross-unicode-sparc.lisp @@ -0,0 +1 @@ +(load "target:bootfiles/19e/boot-2008-05-cross-unicode-sparc") diff --git a/bootfiles/19f/boot-2009-03-cross-unicode-x86.lisp b/bootfiles/19f/boot-2009-03-cross-unicode-x86.lisp new file mode 100644 index 000000000..271f94b54 --- /dev/null +++ b/bootfiles/19f/boot-2009-03-cross-unicode-x86.lisp @@ -0,0 +1 @@ +(load "target:bootfiles/19e/boot-2008-05-cross-unicode-x86") diff --git a/bootfiles/19f/boot-2009-03-unicode-char.lisp b/bootfiles/19f/boot-2009-03-unicode-char.lisp new file mode 100644 index 000000000..bf52c0c2d --- /dev/null +++ b/bootfiles/19f/boot-2009-03-unicode-char.lisp @@ -0,0 +1,9 @@ +(in-package "LISP") + +;; Not needed anymore with the Paul's new *unicode-data* structures. + +#| +;; Rebuild the *unicode-data* with the correct stuff. +(rebuild-unicode-data) + +|# diff --git a/bootfiles/19f/boot-2009-05-no-unicode.lisp b/bootfiles/19f/boot-2009-05-no-unicode.lisp new file mode 100644 index 000000000..2c13c8ef4 --- /dev/null +++ b/bootfiles/19f/boot-2009-05-no-unicode.lisp @@ -0,0 +1,2 @@ +;; Use this to build the non-unicode version from the unicode sources. +(load "target:bootfiles/19e/boot-2008-05-no-unicode") diff --git a/clx/NEWS b/clx/NEWS index 8c2358f37..20aa5ac9d 100644 --- a/clx/NEWS +++ b/clx/NEWS @@ -1,11 +1,11 @@ -*- Text -*- -$Id: NEWS,v 1.1 2007/08/21 15:49:27 fgilham Exp $ +$Id: NEWS,v 1.2 2009/06/11 16:03:56 rtoy Exp $ -- Changes in telent CLX 0.7.3, Tue Mar 28 2006 --- Support for Allegro CL (6.2 and later) (Mikel Evins) Latin 1 keysyms (Christophe Rhodes) Some protocol fixes (Douglas Crosher) -Define a RENDER-OP typ (Douglas Crosher) +Define a RENDER-OP type (Douglas Crosher) --- Changes in SBCL CLX 0.7.2, Tue Jan 10 2006 --- @@ -56,7 +56,7 @@ has been included in demo/clipboard.lisp Bug fix: change the sizes of certain fields in a WM-SIZE-HINT to be 32 bits wide, as per the ICCCM specifications. Fixes a problem seen with -the MacOS X11 window manger, that uses very large hint values. +the MacOS X11 window manager, that uses very large hint values. (Patch from Eric Marsden) Bug fix: +POINTER-EVENT-MASK-VECTOR+ is supposed to be a vector of @@ -69,7 +69,7 @@ Bug fix: xrender now compiles properly when *DEF-CLX-CLASS-USE-DEFCLASS* A change in the implementation of PROCESS-BLOCK and PROCESS-WAKEUP under multithreaded SBCL. Previous versions used queues and condition -variables, but this seems to have undesireable performance +variables, but this seems to have undesirable performance characteristics; the newer version uses a polling loop calling sched_yield() inside, which greatly improves responsiveness, but is more CPU-hungry (as perceived by top(1), at least; in theory it @@ -150,7 +150,7 @@ Implement CLX MP dependencies for SBCL: HOLDING-LOCK, PROCESS-BLOCK, etc Many bug fixes - * asking for text extents on unchached fonts could potentially deadlock + * asking for text extents on uncached fonts could potentially deadlock http://article.gmane.org/gmane.lisp.clx.devel/16 * lots of compiler warnings, style-warnings, notes cleared up @@ -160,6 +160,5 @@ Style and ANSI cleanups * Much renaming of constants from *foo* to +foo+ - * Change old-style COMPILE LOAD EVAL to new-style :COMPILE-TOPLEVEL - :LOAD-TOPLEVEL :EXECUTE in EVAL-WHENs. - + * Change old-style COMPILE LOAD EVAL to new-style :COMPILE-TOPLEVEL + :LOAD-TOPLEVEL :EXECUTE in EVAL-WHENs. diff --git a/clx/README b/clx/README index 08ac72b4a..aa4cab7fa 100644 --- a/clx/README +++ b/clx/README @@ -1,4 +1,4 @@ -$Id: README,v 1.4 2007/08/21 15:49:27 fgilham Exp $ +$Id: README,v 1.5 2009/06/11 16:03:56 rtoy Exp $ This directory contains CLX, an X11 client library for Common Lisp. The code was originally taken from a CMUCL distribution, was modified somewhat in order to make it compile and run under SBCL, then @@ -38,7 +38,7 @@ your bug has been fixed already. darcs get http://verisons.telent.net/clx # version from which releases are made http://common-lisp.net/~crhodes/clx # patches merged by Christophe - http://monday-monkey.com/repos/clx/ # OpenMCL tree by bryan o'connor? + http://monday-monkey.com/repos/clx/ # OpenMCL tree by Bryan O'Connor? = Building using asdf-install diff --git a/clx/README-CMUCL b/clx/README-CMUCL index b3baed054..d0fead6c7 100644 --- a/clx/README-CMUCL +++ b/clx/README-CMUCL @@ -1,12 +1,13 @@ -$Id: README-CMUCL,v 1.1 2007/08/21 15:49:27 fgilham Exp $ +$Id: README-CMUCL,v 1.2 2009/06/11 16:03:56 rtoy Rel $ This is an import of Telent-CLX as of 0.7.3. -All files are included. A few changes to fix bugs related to CMUCL have been added, as well as -the CVS id. I've tried to make few changes so it will be easy to merge again when desired. +All files are included. A few changes to fix bugs related to CMUCL +have been added, as well as the CVS id. I've tried to make few +changes so it will be easy to merge again when desired. -The following files from this directory are compiled and loaded by CMUCL when it builds -utilities: +The following files from this directory are compiled and loaded by +CMUCL when it builds utilities: clx-library.lisp package.lisp diff --git a/code/alieneval.lisp b/code/alieneval.lisp index 66b274616..bfd853c43 100644 --- a/code/alieneval.lisp +++ b/code/alieneval.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/alieneval.lisp,v 1.65 2007/11/09 19:24:35 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/alieneval.lisp,v 1.66 2009/06/11 16:03:56 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -390,7 +390,7 @@ ;;; *record-type-already-unparsed* -- internal ;;; ;;; Holds the list of record types that have already been unparsed. This is -;;; used to keep from outputing the slots again if the same structure shows +;;; used to keep from outputting the slots again if the same structure shows ;;; up twice. ;;; (defvar *record-types-already-unparsed*) @@ -406,7 +406,7 @@ ;;; %UNPARSE-ALIEN-TYPE -- internal. ;;; -;;; Does all the work of UNPARSE-ALIEN-TYPE. It's seperate because we need +;;; Does all the work of UNPARSE-ALIEN-TYPE. It's separate because we need ;;; to recurse inside the binding of *record-types-already-unparsed*. ;;; (defun %unparse-alien-type (type) @@ -497,8 +497,8 @@ (defun alien-subtype-p (type1 type2) "Return T iff the alien type TYPE1 is a subtype of TYPE2. Currently, the - only supported subtype relationships are is that any pointer type is a - subtype of (* t), and any array type first dimension will match + only supported subtype relationships are that any pointer type is a + subtype of (* t), and any array type's first dimension will match (array <eltype> nil ...). Otherwise, the two types have to be ALIEN-TYPE-=." (or (eq type1 type2) @@ -759,7 +759,7 @@ (defun parse-enum (name elements) (when (null elements) - (error "An anumeration must contain at least one element.")) + (error "An enumeration must contain at least one element.")) (let ((min nil) (max nil) (from-alist ()) @@ -1039,7 +1039,7 @@ (rest dims)))) (when loser (error "Dimension is not a non-negative fixnum: ~S" loser)))) - + (let ((type (parse-alien-type ele-type))) (make-alien-array-type :element-type type @@ -1124,7 +1124,7 @@ ;;; PARSE-ALIEN-RECORD-FIELDS -- internal ;;; ;;; Used by parse-alien-type to parse the fields of struct and union -;;; types. RESULT holds the record type we are paring the fields of, +;;; types. RESULT holds the record type we are parsing the fields of, ;;; and FIELDS is the list of field specifications. ;;; (defun parse-alien-record-fields (result fields) @@ -1183,7 +1183,7 @@ (alien-record-type-fields type))))) -;;; Test the record fields. Keep a hashtable table of already compared +;;; Test the record fields. Keep a hash table of already compared ;;; types to detect cycles. (defun record-fields-match-p (field1 field2) @@ -1197,7 +1197,7 @@ (alien-record-field-type field2)))) (defvar *match-history* nil - "A hashtable used to detect cycles while comparing record types.") + "A hash table used to detect cycles while comparing record types.") (defun in-match-history-or (type1 type2 alternative) "Test if TYPE1 and TYPE2 are in the *MATCH-HISTORY*. @@ -1312,7 +1312,7 @@ If so return true; otherwise call ALTERNATIVE." ;;; LOCAL-ALIEN-INFO -- public defstruct. ;;; ;;; Information about local aliens. The WITH-ALIEN macro builds one of these -;;; structures and local-alien and friends comunicate information about how +;;; structures and local-alien and friends communicate information about how ;;; that local alien is represented. ;;; (defstruct (local-alien-info @@ -1405,7 +1405,7 @@ If so return true; otherwise call ALTERNATIVE." ;;; (defmacro extern-alien (name type) "Access the alien variable named NAME, assuming it is of type TYPE. This - is setfable." + is SETFable." (let* ((alien-name (etypecase name (symbol (guess-alien-name-from-lisp-name name)) (string name))) @@ -1643,7 +1643,7 @@ If so return true; otherwise call ALTERNATIVE." ;;; %SET-SLOT -- public setf method ;;; -;;; Deposite the value in the specified slot of the record alien. If the +;;; Deposit the value in the specified slot of the record alien. If the ;;; alien is really a pointer, deref it first. The compiler uses this ;;; when it can't figure out anything better. ;;; @@ -1689,7 +1689,7 @@ If so return true; otherwise call ALTERNATIVE." ;;; DEREF-GUTS -- internal. ;;; ;;; Does most of the work of the different DEREF methods. Returns two values: -;;; the type and the offset (in bits) of the refered to alien. +;;; the type and the offset (in bits) of the referenced alien. ;;; (defun deref-guts (alien indices) (declare (type alien-value alien) @@ -1897,7 +1897,7 @@ If so return true; otherwise call ALTERNATIVE." ;;;; The CAST macro. (defmacro cast (alien type) - "Convert ALIEN to an Alien of the specified TYPE (not evaluated.) Both types + "Convert ALIEN to an Alien of the specified TYPE (not evaluated). Both types must be Alien array, pointer or function types." `(%cast ,alien ',(parse-alien-type type))) @@ -1914,7 +1914,7 @@ If so return true; otherwise call ALTERNATIVE." (alien-array-type-p alien-type) (alien-function-type-p alien-type)) (naturalize (alien-value-sap alien) target-type) - (error "~S cannot be casted." alien))) + (error "~S cannot be cast." alien))) (error "Cannot cast to alien type ~S" (unparse-alien-type target-type)))) @@ -2005,10 +2005,10 @@ If so return true; otherwise call ALTERNATIVE." Return-Type is the Alien type for the function return value. VOID may be used to specify a function with no result. - The remaining forms specifiy individual arguments that are passed to the + The remaining forms specify individual arguments that are passed to the routine. Arg-Name is a symbol that names the argument, primarily for documentation. Arg-Type is the C-Type of the argument. Style specifies the - say that the argument is passed. + way that the argument is passed. :IN An :In argument is simply passed by value. The value to be passed is @@ -2100,10 +2100,10 @@ If so return true; otherwise call ALTERNATIVE." ;;; ;;; When called, the trampoline passes a pointer to the arguments ;;; (essentially the stack pointer) together with an index to -;;; CALL-CALLACK. CALL-CALLBACK uses the index to find the +;;; CALL-CALLBACK. CALL-CALLBACK uses the index to find the ;;; corresponding lisp function and calls this function with the ;;; argument pointer. The lisp function uses the pointer to copy the -;;; arguments form the stack to local variables. On return, the lisp +;;; arguments from the stack to local variables. On return, the lisp ;;; function stores the result into the location given by the argument ;;; pointer, and the trampoline code copies the return value from ;;; there into the right return register. @@ -2153,11 +2153,11 @@ If so return true; otherwise call ALTERNATIVE." ||# -(defstruct (callback +(defstruct (callback (:constructor make-callback (trampoline lisp-fn function-type))) "A callback consists of a piece assembly code -- the trampoline -- and a lisp function. We store the function type (including return -type and arg types, so we can detect incompatible redefinitions." +type and arg types), so we can detect incompatible redefinitions." (trampoline (required-argument) :type system-area-pointer) (lisp-fn (required-argument) :type (function (fixnum fixnum) (values))) (function-type (required-argument) :type alien::alien-function-type)) diff --git a/code/alpha-vm.lisp b/code/alpha-vm.lisp index d35ed455e..c1660cf6d 100644 --- a/code/alpha-vm.lisp +++ b/code/alpha-vm.lisp @@ -5,11 +5,11 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/alpha-vm.lisp,v 1.4 2003/03/06 14:13:07 pmai Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/alpha-vm.lisp,v 1.5 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/alpha-vm.lisp,v 1.4 2003/03/06 14:13:07 pmai Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/alpha-vm.lisp,v 1.5 2009/06/11 16:03:57 rtoy Rel $ ;;; ;;; This file contains the Alpha specific runtime stuff. ;;; @@ -202,7 +202,7 @@ ;;; EXTERN-ALIEN-NAME -- interface. ;;; -;;; The loader uses this to convert alien names to the form they occure in +;;; The loader uses this to convert alien names to the form they occur in ;;; the symbol table (for example, prepending an underscore). On the MIPS, ;;; we don't do anything. ;;; diff --git a/code/amd64-vm.lisp b/code/amd64-vm.lisp index 3bba6cf18..821db671b 100644 --- a/code/amd64-vm.lisp +++ b/code/amd64-vm.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/amd64-vm.lisp,v 1.2 2004/10/19 20:26:36 cwang Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/amd64-vm.lisp,v 1.3 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -466,7 +466,7 @@ ;;; EXTERN-ALIEN-NAME -- interface. ;;; -;;; The loader uses this to convert alien names to the form they occure in +;;; The loader uses this to convert alien names to the form they occur in ;;; the symbol table (for example, prepending an underscore). ;;; (defun extern-alien-name (name) @@ -507,7 +507,7 @@ ;;; FLOAT-WAIT ;;; -;;; This is used in error.lisp to insure floating-point exceptions +;;; This is used in error.lisp to ensure floating-point exceptions ;;; are properly trapped. The compiler translates this to a VOP. ;;; (defun float-wait() @@ -517,7 +517,7 @@ ;;; ;;; These are used by the FP move-from-{single|double} VOPs rather ;;; than the i387 load constant instructions to avoid consing in some -;;; cases. Note these are initialise by genesis as they are needed +;;; cases. Note these are initialised by genesis as they are needed ;;; early. ;;; (defvar *fp-constant-0s0*) @@ -533,7 +533,7 @@ (defvar *fp-constant-lg2*) (defvar *fp-constant-ln2*) -;;; Enable/Disable scavenging of the read-only space. +;;; Enable/disable scavenging of the read-only space. (defvar *scavenge-read-only-space* nil) ;;; The current alien stack pointer; saved/restored for non-local diff --git a/code/array.lisp b/code/array.lisp index d325ce356..86ba408aa 100644 --- a/code/array.lisp +++ b/code/array.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/array.lisp,v 1.43 2007/06/20 17:33:08 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/array.lisp,v 1.44 2009/06/11 16:03:57 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -121,7 +121,7 @@ (defun %vector-type-code (type) (pick-type type - (base-char (values #.vm:simple-string-type #.vm:byte-bits)) + (base-char (values #.vm:simple-string-type #.vm:char-bits)) (bit (values #.vm:simple-bit-vector-type 1)) ((unsigned-byte 2) (values #.vm:simple-array-unsigned-byte-2-type 2)) ((unsigned-byte 4) (values #.vm:simple-array-unsigned-byte-4-type 4)) diff --git a/code/bignum.lisp b/code/bignum.lisp index 81d192df3..fcb6738e7 100644 --- a/code/bignum.lisp +++ b/code/bignum.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/bignum.lisp,v 1.46 2008/10/22 02:45:23 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/bignum.lisp,v 1.47 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -324,7 +324,7 @@ ;;; This returns 0 or "-1" depending on whether the bignum is positive. This ;;; is suitable for infinite sign extension to complete additions, ;;; subtractions, negations, etc. This cannot return a -1 represented as -;;; a negative fixnum since it would then have to low zeros. +;;; a negative fixnum since it would then have two low zeros. ;;; (declaim (inline %sign-digit)) (defun %sign-digit (bignum len) @@ -488,7 +488,7 @@ ;;; References: Knuth, Seminumerical Algorithms. ;;; -;;; Based on an implementation by Raymond Toy, who's explanation follows: +;;; Based on an implementation by Raymond Toy, whose explanation follows: ;;; ;;; Let U = (b^n)*U1 + U0 and V = (b^n)*V1 + V0 be two positive ;;; integers consisting of b^(2n) base-b digits. Typically, we use @@ -1561,7 +1561,7 @@ down to individual words.") ;;; NEGATE-BIGNUM -- Public. ;;; -;;; Fully-normalize is an internal optional. It cause this to always return +;;; Fully-normalize is an internal optional. It causes this to always return ;;; a bignum, without any extraneous digits, and it never returns a fixnum. ;;; (defun negate-bignum (x &optional (fully-normalize t)) @@ -1613,7 +1613,7 @@ down to individual words.") ;;; body. When result is supplied, it is the variable to which this binds a ;;; newly allocated bignum. ;;; -;;; Given start-pos, 1-31 inclusively, of shift, we form the j'th resulting +;;; Given start-pos (1-31 inclusive) of shift, we form the j'th resulting ;;; digit from high bits of the i'th source digit and the start-pos number of ;;; bits from the i+1'th source digit. ;;; @@ -1647,7 +1647,7 @@ down to individual words.") ;;; than the length of the bignum, then the result is either 0 or -1. If we ;;; shift on a digit boundary (that is, n-bits is zero), then we just copy ;;; digits. The last branch handles the general case which uses a macro that a -;;; couple other routines use. The fifth argument to the macro references +;;; couple of other routines use. The fifth argument to the macro references ;;; locals established by the macro. ;;; (defun bignum-ashift-right (bignum x) @@ -1751,7 +1751,7 @@ down to individual words.") ;;; BIGNUM-ASHIFT-LEFT-UNALIGNED -- Internal. ;;; ;;; BIGNUM-TRUNCATE uses this to store into a bignum buffer by supplying res. -;;; When res comes in non-nil, then this foregoes allocating a result, and it +;;; When res comes in non-nil this foregoes allocating a result, and it ;;; normalizes the buffer instead of the would-be allocated result. ;;; ;;; We start storing into one digit higher than digits, storing a whole result @@ -1905,7 +1905,7 @@ down to individual words.") (+ 106 (- len 53 part-len)))) (t default-length))))) - + ;;; BIGNUM-TO-FLOAT -- Interface ;;; diff --git a/code/bit-bash.lisp b/code/bit-bash.lisp index 173b2bb68..9d2396bc0 100644 --- a/code/bit-bash.lisp +++ b/code/bit-bash.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/bit-bash.lisp,v 1.24 2008/01/18 15:52:44 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/bit-bash.lisp,v 1.25 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -227,7 +227,7 @@ ;; care. (cond ((zerop length) - ;; Actually, we arn't even writing one word. This is real easy. + ;; Actually, we aren't even writing one word. This is real easy. ) ((= length unit-bits) ;; dst-bit-offset must be equal to zero, or we would be writing @@ -269,9 +269,9 @@ (funcall src-ref-fn src src-word-offset) src-bit-shift))) ;; The dst starts further into the word than does the - ;; source, so we know the source can not extend into + ;; source, so we know the source can't extend into ;; a second word (or else the dst would too, and we - ;; wouldn't be in this branch. + ;; wouldn't be in this branch). (shift-towards-end (funcall src-ref-fn src src-word-offset) (- dst-bit-offset src-bit-offset))))) diff --git a/code/bsd-os.lisp b/code/bsd-os.lisp index f78cea4fe..740ff5501 100644 --- a/code/bsd-os.lisp +++ b/code/bsd-os.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/bsd-os.lisp,v 1.11 2007/07/09 14:17:57 fgilham Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/bsd-os.lisp,v 1.12 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -94,4 +94,3 @@ (unless val (error "Getpagesize failed: ~A" (unix:get-unix-error-msg err))) val)) - diff --git a/code/byte-interp.lisp b/code/byte-interp.lisp index 2c9d2b8b4..0e4c53d50 100644 --- a/code/byte-interp.lisp +++ b/code/byte-interp.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/byte-interp.lisp,v 1.45 2006/06/30 18:41:22 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/byte-interp.lisp,v 1.46 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -561,7 +561,7 @@ ;;; The XOP routine can do whatever it wants, probably re-invoking the ;;; byte interpreter. -;;; Fetch and 8/24 bit operand out of the code stream. +;;; Fetch an 8/24 bit operand out of the code stream. ;;; (eval-when (compile eval) (defmacro with-extended-operand ((component pc operand new-pc) @@ -852,7 +852,7 @@ ;;; UNWIND-PROTECT -- XOP ;;; -;;; Unwind-protects are handled significantly different in the byte compiler +;;; Unwind-protects are handled significantly differently in the byte compiler ;;; and the native compiler. Basically, we just use the native-compiler's ;;; unwind-protect, and let it worry about continuing the unwind. ;;; @@ -902,7 +902,7 @@ ;;;; Type checking: ;;; -;;; These two hashtables map between type specifiers and type predicate +;;; These two hash tables map between type specifiers and type predicate ;;; functions that test those types. They are initialized according to the ;;; standard type predicates of the target system. ;;; @@ -922,7 +922,7 @@ ;;; LOAD-TYPE-PREDICATE -- Internal ;;; ;;; Called by the loader to convert a type specifier into a type predicate -;;; (as used by the TYPE-CHECK XOP.) If it is a structure type with a +;;; (as used by the TYPE-CHECK XOP). If it is a structure type with a ;;; predicate or has a predefined predicate, then return the predicate ;;; function, otherwise return the CTYPE structure for the type. ;;; @@ -1416,7 +1416,7 @@ (with-debugger-info (old-component ret-pc old-fp) (simple-program-error "Odd number of keyword arguments."))) ;; - ;; If there are keyword args, then we need to leave the + ;; If there are keyword args we need to leave the ;; defaulted and supplied-p values where the more args ;; currently are. There might be more or fewer. And also, ;; we need to flatten the parsed args with the defaults @@ -1538,4 +1538,3 @@ (byte-interpret old-component (- old-pc) old-fp))))) (declaim (end-block byte-interpret byte-interpret-byte invoke-xep)) - diff --git a/code/c-call.lisp b/code/c-call.lisp index f81aef954..426994a7f 100644 --- a/code/c-call.lisp +++ b/code/c-call.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/c-call.lisp,v 1.17 2005/11/13 19:27:22 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/c-call.lisp,v 1.18 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -64,6 +64,7 @@ nil (%naturalize-c-string ,alien))) +#-unicode (def-alien-type-method (c-string :deport-gen) (type value) (declare (ignore type)) `(etypecase ,value @@ -71,6 +72,27 @@ ((alien (* char)) (alien-sap ,value)) (simple-base-string (vector-sap ,value)))) +#+unicode +(def-alien-type-method (c-string :deport-gen) (type value) + (declare (ignore type)) + (let ((s (gensym "C-STRING-")) + (len (gensym "LEN-")) + (k (gensym "IDX-"))) + `(etypecase ,value + (null (int-sap 0)) + ((alien (* char)) (alien-sap ,value)) + (simple-base-string + ;; FIXME: What should we do here? For now, we just create an + ;; 8-bit array and copy our characters (the low 8-bits of each + ;; character!) to the 8-bit array. + (let* ((,len (length ,value)) + (,s (make-array (1+ ,len) :element-type '(unsigned-byte 8)))) + (dotimes (,k ,len) + (setf (aref ,s ,k) (logand #xff (char-code (aref ,value ,k))))) + (setf (aref ,s ,len) 0) + (vector-sap ,s)))))) + +#-unicode (defun %naturalize-c-string (sap) (declare (type system-area-pointer sap)) (locally @@ -85,3 +107,19 @@ vm:word-bits) (* length vm:byte-bits)) result)))) + +;; FIXME: What should we do? For now, just take the 8-bit strings +;; returned from C and create a new Lisp string containing those +;; characters. +#+unicode +(defun %naturalize-c-string (sap) + (declare (type system-area-pointer sap)) + (let ((length (loop + for offset of-type fixnum upfrom 0 + until (zerop (sap-ref-8 sap offset)) + finally (return offset)))) + + (let ((result (make-string length))) + (dotimes (k length) + (setf (aref result k) (code-char (sap-ref-8 sap k)))) + result))) diff --git a/code/char.lisp b/code/char.lisp index acdfbd3c2..01212a349 100644 --- a/code/char.lisp +++ b/code/char.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/char.lisp,v 1.17 2008/08/15 19:10:11 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/char.lisp,v 1.18 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -29,7 +29,9 @@ alphanumericp char= char/= char< char> char<= char>= char-equal char-not-equal char-lessp char-greaterp char-not-greaterp char-not-lessp character char-code code-char char-upcase - char-downcase digit-char char-int char-name name-char)) + char-titlecase title-case-p + char-downcase digit-char char-int char-name name-char + codepoint-limit codepoint)) ;;; Compile some trivial character operations via inline expansion: @@ -40,12 +42,22 @@ (declaim (maybe-inline digit-char-p digit-weight)) -(defconstant char-code-limit 256 +(defconstant char-code-limit + #-unicode 256 + #+unicode 65536 "The upper exclusive bound on values produced by CHAR-CODE.") (deftype char-code () `(integer 0 (,char-code-limit))) +(defconstant codepoint-limit + #x110000 + "The upper exclusive bound on the value of a Unicode codepoint") + +;;; The range of a Unicode code point +(deftype codepoint () + `(integer 0 (,codepoint-limit))) + (macrolet ((frob (char-names-list) (collect ((results)) @@ -143,15 +155,32 @@ (defun char-name (char) "Given a character object, char-name returns the name for that object (a symbol)." - (car (rassoc char char-name-alist))) - + (let ((name (car (rassoc char char-name-alist)))) + (if name + name + #-unicode nil + #+unicode + ;; Return the Unicode name of the character, + ;; or U+xxxx if it doesn't have a name + (let* ((code (char-code char)) + (name (unicode-name code))) + (if name + (nstring-capitalize (nsubstitute #\_ #\Space name)) + (format nil "U+~4,'0X" code)))))) (defun name-char (name) "Given an argument acceptable to string, name-char returns a character - object whose name is that symbol, if one exists. Otherwise, () is returned." - (cdr (assoc (string name) char-name-alist :test #'string-equal))) - - + object whose name is that symbol, if one exists, otherwise NIL." + (if (and (stringp name) (> (length name) 2) (string-equal name "U+" :end1 2)) + (code-char (parse-integer name :radix 16 :start 1)) + (or (cdr (assoc (string name) char-name-alist :test #'string-equal)) + #-unicode nil + #+unicode + (let ((code (unicode-name-to-codepoint + (nsubstitute #\Space #\_ (string-upcase name))))) + (if code + (code-char code) + nil))))) ;;;; Predicates: @@ -173,39 +202,58 @@ (defun graphic-char-p (char) "The argument must be a character object. Graphic-char-p returns T if the - argument is a printing character (space through ~ in ASCII), otherwise - returns ()." + argument is a printing character, otherwise returns NIL." (declare (character char)) (and (typep char 'base-char) - (< 31 - (char-code (the base-char char)) - 127))) + (let ((m (char-code (the base-char char)))) + (or (< 31 m 127) + #+(and unicode (not unicode-bootstrap)) + (and (> m 127) + (>= (unicode-category m) +unicode-category-graphic+)))))) (defun alpha-char-p (char) "The argument must be a character object. Alpha-char-p returns T if the - argument is an alphabetic character, A-Z or a-z; otherwise ()." + argument is an alphabetic character; otherwise NIL." (declare (character char)) (let ((m (char-code char))) - (or (< 64 m 91) (< 96 m 123)))) + (or (< 64 m 91) (< 96 m 123) + #+(and unicode (not unicode-bootstrap)) + (and (> m 127) + (<= +unicode-category-letter+ (unicode-category m) + (+ +unicode-category-letter+ #x0F)))))) (defun upper-case-p (char) "The argument must be a character object; upper-case-p returns T if the - argument is an upper-case character, () otherwise." + argument is an upper-case character, NIL otherwise." (declare (character char)) - (< 64 - (char-code char) - 91)) + (let ((m (char-code char))) + (or (< 64 m 91) + #+(and unicode (not unicode-bootstrap)) + (and (> m 127) + (= (unicode-category m) +unicode-category-upper+))))) (defun lower-case-p (char) "The argument must be a character object; lower-case-p returns T if the - argument is a lower-case character, () otherwise." + argument is a lower-case character, NIL otherwise." + (declare (character char)) + (let ((m (char-code char))) + (or (< 96 m 123) + #+(and unicode (not unicode-bootstrap)) + (and (> m 127) + (= (unicode-category m) +unicode-category-lower+))))) + +(defun title-case-p (char) + "The argument must be a character object; title-case-p returns T if the + argument is a title-case character, NIL otherwise." (declare (character char)) - (< 96 - (char-code char) - 123)) + (let ((m (char-code char))) + (or (< 64 m 91) + #+(and unicode (not unicode-bootstrap)) + (and (> m 127) + (= (unicode-category m) +unicode-category-title+))))) (defun both-case-p (char) @@ -214,7 +262,12 @@ both upper and lower case. For ASCII, this is the same as Alpha-char-p." (declare (character char)) (let ((m (char-code char))) - (or (< 64 m 91) (< 96 m 123)))) + (or (< 64 m 91) (< 96 m 123) + #+(and unicode (not unicode-bootstrap)) + (and (> m 127) + (<= +unicode-category-upper+ + (unicode-category m) + +unicode-category-title+))))) (defun digit-char-p (char &optional (radix 10.)) @@ -239,10 +292,15 @@ (defun alphanumericp (char) "Given a character-object argument, alphanumericp returns T if the - argument is either numeric or alphabetic." + argument is either numeric or alphabetic." (declare (character char)) (let ((m (char-code char))) - (or (< 47 m 58) (< 64 m 91) (< 96 m 123)))) + ;; Shortcut for ASCII digits and upper and lower case ASCII letters + (or (< 47 m 58) (< 64 m 91) (< 96 m 123) + #+(and unicode (not unicode-bootstrap)) + (and (> m 127) + (<= +unicode-category-letter+ (unicode-category m) + (+ +unicode-category-letter+ #x0F)))))) (defun char= (character &rest more-characters) @@ -305,12 +363,17 @@ ;;; Equal-Char-Code is used by the following functions as a version of char-int -;;; which loses case info. +;;; which loses case info. We convert to lower case (defmacro equal-char-code (character) `(let ((ch (char-code ,character))) - (if (< 96 ch 123) (- ch 32) ch))) - + ;; Handle ASCII separately for bootstrapping and for unidata missing. + (if (< 64 ch 91) + (+ ch 32) + #-(and unicode (not unicode-bootstrap)) + ch + #+(and unicode (not unicode-bootstrap)) + (if (> ch 127) (unicode-lower ch) ch)))) (defun char-equal (character &rest more-characters) @@ -388,16 +451,41 @@ (defun char-upcase (char) "Returns CHAR converted to upper-case if that is possible." (declare (character char)) + #-(and unicode (not unicode-bootstrap)) + (if (lower-case-p char) + (code-char (- (char-code char) 32)) + char) + #+(and unicode (not unicode-bootstrap)) + (let ((m (char-code char))) + (cond ((> m 127) (code-char (unicode-upper m))) + ((< 96 m 123) (code-char (- m 32))) + (t char)))) + +(defun char-titlecase (char) + "Returns CHAR converted to title-case if that is possible." + (declare (character char)) + #-(and unicode (not unicode-bootstrap)) (if (lower-case-p char) (code-char (- (char-code char) 32)) - char)) + char) + #+(and unicode (not unicode-bootstrap)) + (let ((m (char-code char))) + (cond ((> m 127) (code-char (unicode-title m))) + ((< 96 m 123) (code-char (- m 32))) + (t char)))) (defun char-downcase (char) "Returns CHAR converted to lower-case if that is possible." (declare (character char)) + #-(and unicode (not unicode-bootstrap)) (if (upper-case-p char) (code-char (+ (char-code char) 32)) - char)) + char) + #+(and unicode (not unicode-bootstrap)) + (let ((m (char-code char))) + (cond ((> m 127) (code-char (unicode-lower m))) + ((< 64 m 91) (code-char (+ m 32))) + (t char)))) (defun digit-char (weight &optional (radix 10)) "All arguments must be integers. Returns a character object that diff --git a/code/class.lisp b/code/class.lisp index d82526be4..973509a26 100644 --- a/code/class.lisp +++ b/code/class.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/class.lisp,v 1.61 2007/08/01 04:39:16 cshapiro Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/class.lisp,v 1.62 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -172,7 +172,7 @@ ;;; INITIALIZE-LAYOUT-HASH -- Interface ;;; ;;; Set the layout-hash slots to non-zero random numbers between 1 and -;;; layout-hash-max (inclusive.) The layout is returned. +;;; layout-hash-max (inclusive). The layout is returned. ;;; (defun initialize-layout-hash (layout) (let ((seed *layout-hash-seed*)) @@ -320,7 +320,7 @@ (defstruct (built-in-class (:include class)) ;; ;; Type we translate to on parsing. If NIL, then this class stands on its - ;; own. Only :INITIALIZING during for a period during cold-load. See below. + ;; own. Only :INITIALIZING for a period during cold-load. See below. (translation nil :type (or ctype (member nil :initializing)))) ;;; Class with print function, but not necessarily a structure class. @@ -578,7 +578,7 @@ ;;; the specified internal type representation, rather than being left as a ;;; class. This is used for types which we want to canonicalize to ;;; some other kind of type object because in general we want to be able to -;;; include more information than just the class (e.g. for numeric types.) +;;; include more information than just the class (e.g. for numeric types). ;;; Default none. ;;; ;;; :ENUMERABLE (default NIL) diff --git a/code/clx-ext.lisp b/code/clx-ext.lisp index 352528f01..4aa5119ee 100644 --- a/code/clx-ext.lisp +++ b/code/clx-ext.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/clx-ext.lisp,v 1.20 2007/08/21 15:54:59 fgilham Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/clx-ext.lisp,v 1.21 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -39,7 +39,7 @@ ;;; New version to interface with "telent-clx". -#+ (and) +#+(and) (defun open-clx-display (&optional display-name) "Open a connection to DISPLAY-NAME if supplied, or to the appropriate default display as given by GET-DEFAULT-DISPLAY otherwise." @@ -51,7 +51,7 @@ default display as given by GET-DEFAULT-DISPLAY otherwise." (nth screen (xlib:display-roots display))))))) -#- (and) +#-(and) (defun open-clx-display (&optional (string (cdr (assoc :display *environment-list* :test #'eq)))) diff --git a/code/debug-info.lisp b/code/debug-info.lisp index fea6a3279..452e3f1ae 100644 --- a/code/debug-info.lisp +++ b/code/debug-info.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/debug-info.lisp,v 1.27 1994/10/31 04:11:27 ram Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/debug-info.lisp,v 1.28 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -100,6 +100,7 @@ ;;; Read a packed string from Vec starting at Index, leaving advancing ;;; Index. ;;; +#-unicode (defmacro read-var-string (vec index) (once-only ((len `(read-var-integer ,vec ,index))) (once-only ((res `(make-string ,len))) @@ -108,6 +109,20 @@ (incf ,index ,len) ,res)))) +#+unicode +(defmacro read-var-string (vec index) + (once-only ((len `(read-var-integer ,vec ,index))) + (once-only ((res `(make-string ,len)) + (k 0)) + `(progn + (dotimes (,k ,len) + (let ((lo (aref ,vec (+ ,index (* 2 ,k)))) + (hi (aref ,vec (+ ,index (+ (* 2 ,k) 1))))) + (setf (aref ,res ,k) + (code-char (+ lo (ash hi 8)))))) + (incf ,index (* 2 ,len)) + ,res)))) + ;;; WRITE-VAR-STRING -- Interface ;;; @@ -119,7 +134,9 @@ (let ((len (length string))) (write-var-integer len vec) (dotimes (i len) - (vector-push-extend (char-code (schar string i)) vec))) + (vector-push-extend (ldb (byte 8 0) (char-code (schar string i))) vec) + #+unicode + (vector-push-extend (ldb (byte 8 8) (char-code (schar string i))) vec))) (undefined-value)) @@ -335,7 +352,7 @@ ;;;; Minimal debug function: ;;; The minimal debug info format compactly represents debug-info for some -;;; cases where the other debug info (variables, blocks) is small enough so +;;; cases where the other debug info (variables, blocks) is small enough ;;; that the per-function overhead becomes relatively large. The minimal ;;; debug-info format can represent any function at level 0, and any fixed-arg ;;; function at level 1. @@ -367,20 +384,20 @@ ;;; This field implicitly encodes start of this function's code in the ;;; function map, as a delta from the previous function's code start. ;;; If the first function in the component, then this is the delta from -;;; 0 (i.e. the absolute offset.) +;;; 0 (i.e. the absolute offset). ;;; start-pc (as a var-length int) ;;; This encodes the environment start PC as an offset from the ;;; code-start PC. ;;; elsewhere-pc ;;; This encodes the elsewhere code start for this function, as a delta ;;; from the previous function's elsewhere code start. (i.e. the -;;; encoding is the same as for code-start-pc.) +;;; encoding is the same as for code-start-pc). ;;; ;;; #| ### For functions with XEPs, name could be represented more simply and -compactly as some sort of info about with how to find the function-entry that +compactly as some sort of info about how to find the function-entry that this is a function for. Actually, you really hardly need any info. You can just chain through the functions in the component until you find the right one. Well, I guess you need to at least know which function is an XEP for the real @@ -440,7 +457,7 @@ function (which would be useful info anyway). (compiled (required-argument) :type unsigned-byte) ;; ;; The source path root number of the first form read from this source (i.e. - ;; the total number of forms converted previously in this compilation.) + ;; the total number of forms converted previously in this compilation). (source-root 0 :type index) ;; ;; The file-positions of each truly top-level form read from this file (if diff --git a/code/debug-int.lisp b/code/debug-int.lisp index 4144c9c47..23f3f42b6 100644 --- a/code/debug-int.lisp +++ b/code/debug-int.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/debug-int.lisp,v 1.135 2008/12/02 04:30:43 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/debug-int.lisp,v 1.136 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -313,7 +313,7 @@ ;;; Frames ;;; -;;; These represents call-frames on the stack. +;;; These represent call-frames on the stack. ;;; (defstruct (frame (:constructor nil)) ;; diff --git a/code/debug.lisp b/code/debug.lisp index 2c1b307b6..8eed4e4a1 100644 --- a/code/debug.lisp +++ b/code/debug.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/debug.lisp,v 1.65 2008/05/23 00:01:59 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/debug.lisp,v 1.66 2009/06/11 16:03:57 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -732,7 +732,13 @@ See the CMU Common Lisp User's Manual for more information. ;; Rebind some printer control variables. (kernel:*current-level* 0) (*print-readably* nil) - (*read-eval* t)) + (*read-eval* t) + ;; XXX: Fixme: What external format do we really want to use + ;; in the debugger? This is problem if we have a badly + ;; formed string that the current external format can't + ;; handle. + #+unicode + (*default-external-format* :iso8859-1)) (real-invoke-debugger condition))) ;;; SHOW-RESTARTS -- Internal. @@ -798,6 +804,8 @@ See the CMU Common Lisp User's Manual for more information. ;; Then close the display with the window manager or shutdown the ;; local computer. The remote lisp goes into infinite error loop. (labels ((real-stream (stream) + ;; Using etypecase here causes an infloop in SLIME: + ;; SLIME's slime-input-streams are not fd-streams (etypecase stream (system:fd-stream (values stream (system:fd-stream-fd stream))) @@ -809,7 +817,7 @@ See the CMU Common Lisp User's Manual for more information. (when (typep condition 'stream-error) (let* ((stream-with-error (stream-error-stream condition)) (real-stream-with-error (real-stream stream-with-error)) - (real-debug-io (real-stream *debug-io*))) + (real-debug-io (real-stream *debug-io*))) (when (and (eq real-stream-with-error real-debug-io) (not (unix:unix-isatty (system:fd-stream-fd real-debug-io)))) ;; Probably running on a remote processor and lost the connection. diff --git a/code/defmacro.lisp b/code/defmacro.lisp index 85d5e2f9c..c62d432bf 100644 --- a/code/defmacro.lisp +++ b/code/defmacro.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/defmacro.lisp,v 1.36 2005/11/07 00:58:10 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/defmacro.lisp,v 1.37 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -391,7 +391,7 @@ (defun push-optional-binding (value-var init-form supplied-var condition path name error-kind error-fun) (unless supplied-var - (setf supplied-var (gensym "SUPLIEDP-"))) + (setf supplied-var (gensym "SUPPLIEDP-"))) (push-let-binding supplied-var condition t) (cond ((consp value-var) (let ((whole-thing (gensym "OPTIONAL-SUBLIST-"))) diff --git a/code/defstruct.lisp b/code/defstruct.lisp index 58c04e234..5e3befc41 100644 --- a/code/defstruct.lisp +++ b/code/defstruct.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/defstruct.lisp,v 1.97 2006/12/22 17:39:41 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/defstruct.lisp,v 1.98 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -214,16 +214,16 @@ ;; ;; The arguments to the :ALTERNATE-METACLASS option (an extension used to ;; define structure-like objects with an arbitrary superclass and that may - ;; not have STRUCTURE-CLASS as the metaclass.) Syntax is: + ;; not have STRUCTURE-CLASS as the metaclass). Syntax is: ;; (superclass-name metaclass-name metaclass-constructor) ;; (alternate-metaclass nil :type list) ;; ;; list of defstruct-slot-description objects for all slots (including - ;; included ones.) + ;; included ones). (slots () :type list) ;; - ;; Number of elements we've allocated (see also raw-length.) + ;; Number of elements we've allocated (see also raw-length). (length 0 :type index) ;; ;; General kind of implementation. @@ -262,9 +262,9 @@ ;; Value of the :PURE option, or :UNSPECIFIED. Only meaningful if ;; CLASS-STRUCTURE-P = T. (pure :unspecified :type (member t nil :substructure :unspecified)) - ;; - ;; a list of (NAME . INDEX) pairs for accessors of included structures - (inherited-accessor-alist () :type list)) + ;; + ;; a list of (NAME . INDEX) pairs for accessors of included structures + (inherited-accessor-alist () :type list)) (defun print-defstruct-description (structure stream depth) (declare (ignore depth)) @@ -865,7 +865,7 @@ ;;; processed the arglist. The correct variant (according to the DD-TYPE) ;;; should be called. The function is defined with the specified name and ;;; arglist. Vars and Types are used for argument type declarations. Values -;;; are the values for the slots (in order.) +;;; are the values for the slots (in order). ;;; ;;; This is split four ways because: ;;; 1] list & vector structures need "name" symbols stuck in at various weird @@ -1125,7 +1125,7 @@ ;;; ;;; Return info about how to read/write a slot in the value stored in ;;; Object. This is also used by constructors (we can't use the accessor -;;; function, since some slots are read-only.) If supplied, Data is a variable +;;; function, since some slots are read-only). If supplied, Data is a variable ;;; holding the raw-data vector. ;;; ;;; Values: @@ -1228,8 +1228,7 @@ (defun dd-lisp-type (defstruct) (ecase (dd-type defstruct) (list 'list) - (vector `(simple-array ,(dd-element-type defstruct) - (*))))) + (vector `(simple-array ,(dd-element-type defstruct) (*))))) ;;; DEFINE-ACCESSORS -- Internal ;;; @@ -1295,9 +1294,9 @@ (eq (aref object ,index) ',name))))))))) ;; A predicate to determine if the given list is a defstruct object of -;; :type list. This used to be done using (eq (nth index object) -;; name), but that fails if the (nth index object) doesn't work -;; because object is not a proper list. +;; :type list. This used to be done using (eq (nth index object) name), +;; but that fails if the (nth index object) doesn't work because object +;; is not a proper list. (defun defstruct-list-p (index list name) ;; Basically do (nth index list), but don't crash if the list is not ;; a proper list. @@ -1314,7 +1313,7 @@ ;;;; Load time support for default structures (%DEFSTRUCT) ;;; -;;; In the normal case of structures that have a real type (i.e. no :Type +;;; In the normal case of structures that have a real type (i.e., no :Type ;;; option was specified), we want to optimize things for space as well as ;;; speed, since there can be thousands of defined slot accessors. ;;; @@ -1712,7 +1711,7 @@ (%class-layout (find-class (or (first superclass-opt) 'structure-object)))))) (if (eq (dd-name info) 'lisp-stream) - ;; Hack to added the stream class as a mixin for lisp-streams. + ;; Hack to add the stream class as a mixin for lisp-streams. (concatenate 'simple-vector (layout-inherits super) (vector super (%class-layout (find-class 'stream)))) (concatenate 'simple-vector (layout-inherits super) (vector super))))) @@ -1864,7 +1863,7 @@ ;; then the object is printed as ``#''." ;; ;; So, if it has no components, and we're at *PRINT-LEVEL*, - ;; we print out #(S<name>). + ;; we print out #S(<name>). (write-string "#S(" stream) (prin1 name stream) (write-char #\) stream)) diff --git a/code/describe.lisp b/code/describe.lisp index 76a71f625..47850d19b 100644 --- a/code/describe.lisp +++ b/code/describe.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/describe.lisp,v 1.49 2007/08/17 14:02:45 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/describe.lisp,v 1.50 2009/06/11 16:03:57 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -125,7 +125,7 @@ ;;;; Implementation properties. -;;; This supresses random garbage that users probably don't want to see. +;;; This suppresses random garbage that users probably don't want to see. ;;; (defparameter *implementation-properties* '(%loaded-address CONDITIONS::MAKE-FUNCTION CONDITIONS::REPORT-FUNCTION @@ -467,4 +467,3 @@ (let ((locn (info :source-location :defvar x))) (when locn (format t "~&It is defined in:~&~A" (c::file-source-location-pathname locn))))) - diff --git a/code/dyncount.lisp b/code/dyncount.lisp index e0278aa02..d801e9ba5 100644 --- a/code/dyncount.lisp +++ b/code/dyncount.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/dyncount.lisp,v 1.6 2003/06/10 16:52:36 toy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/dyncount.lisp,v 1.7 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -23,7 +23,7 @@ VOP classification. (eval-when (compile) (when *collect-dynamic-statistics* - (error "Compiling this file with dynamic stat collection turn on would ~ + (error "Compiling this file with dynamic stat collection turned on would ~ be a very bad idea."))) ;;;; Hash utilities: @@ -35,7 +35,8 @@ VOP classification. (defun hash-difference (table1 table2) "Return a hash-table containing only the entries in Table1 whose key is not - also a key in Table2." (declare (type hash-table table1 table2)) + also a key in Table2." + (declare (type hash-table table1 table2)) (let ((res (make-hash-table-like table1))) (do-hash (k v table1) (unless (nth-value 1 (gethash k table2)) @@ -53,7 +54,7 @@ VOP classification. ;;; READ-HASH-TABLE, WRITE-HASH-TABLE -- Public ;;; -;;; Read (or write) a hashtable from (or to) a file. +;;; Read (or write) a hash table from (or to) a file. ;;; (defun read-hash-table (file) (with-open-file (s file :direction :input) @@ -191,7 +192,7 @@ VOP classification. ;;; GET-VOP-COUNTS -- Public ;;; ;;; Call NOTE-DYNCOUNT-INFO on all DYNCOUNT-INFO structure allocated in the -;;; specified spaces. Return a hashtable describing the counts. The initial +;;; specified spaces. Return a hash table describing the counts. The initial ;;; loop must avoid calling any functions outside this file to prevent adding ;;; noise to the data, since other files may be compiled with profiling. ;;; @@ -344,7 +345,7 @@ VOP classification. ;;; ;;; Return true if Name patches a specified pattern. Pattern is a string ;;; (or symbol) or a list of strings (or symbols). If any specified string -;;; appears as a substring of name, the pattern is matched. #\$'s are wapped +;;; appears as a substring of name, the pattern is matched. #\$'s are wrapped ;;; around name, allowing the use of $ to force a match at the beginning or ;;; end. ;;; @@ -418,7 +419,7 @@ VOP classification. ;;; COMPENSATE-COSTS -- Internal ;;; -;;; Return a hashtable of DYNCOUNT-INFO structures, with cost adjustments +;;; Return a hash table of DYNCOUNT-INFO structures, with cost adjustments ;;; according to the Costs table. Any VOPs in the list IGNORE are ignored. ;;; (defun compensate-costs (table costs &optional ignore) diff --git a/code/error.lisp b/code/error.lisp index 3ca174208..7ba478d5b 100644 --- a/code/error.lisp +++ b/code/error.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/error.lisp,v 1.87 2009/01/21 18:15:45 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/error.lisp,v 1.88 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -29,7 +29,7 @@ (in-package "LISP") (export '(break error warn cerror ;; - ;; The following are found in Macros.Lisp: + ;; The following are found in macros.lisp: check-type assert etypecase ctypecase ecase ccase ;; ;; These are all the new things to export from "LISP" now that this diff --git a/code/eval.lisp b/code/eval.lisp index 9992e9313..e7bfb8413 100644 --- a/code/eval.lisp +++ b/code/eval.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/eval.lisp,v 1.44 2008/09/23 16:39:21 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/eval.lisp,v 1.45 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -114,7 +114,7 @@ ;; being removed.) (definition nil :type (or c::clambda null)) ;; - ;; The number of consequtive GCs that this function has been unused. This is + ;; The number of consecutive GCs that this function has been unused. This is ;; used to control cache replacement. (gcs 0 :type c::index) ;; @@ -143,7 +143,7 @@ :WARN -- Print a warning, but declare the variable special (the default.) T -- Quietly declare the variable special. NIL -- Never declare the variable, giving warnings on each use.") - + ;;; EVAL -- Public ;;; diff --git a/code/exports.lisp b/code/exports.lisp index a33c5cea7..00b23272f 100644 --- a/code/exports.lisp +++ b/code/exports.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/exports.lisp,v 1.282 2009/04/13 13:50:50 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/exports.lisp,v 1.283 2009/06/11 16:03:57 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -866,7 +866,11 @@ "PRINT-NOT-READABLE-OBJECT" "DEFINE-SETF-EXPANDER" "PRINT-NOT-READABLE" "METHOD" "METHOD-COMBINATION" - "MAKE-LOAD-FORM" "MAKE-LOAD-FORM-SAVING-SLOTS")) + "MAKE-LOAD-FORM" "MAKE-LOAD-FORM-SAVING-SLOTS" + "CHAR-TITLECASE" "TITLE-CASE-P" + "GLYPH" "SGLYPH" + "STRING-TO-NFD" "STRING-TO-NFKC" "STRING-TO-NFC" "STRING-TO-NFKD" + "CODEPOINT-LIMIT" "CODEPOINT")) (defpackage "EVAL" (:export "*EVAL-STACK-TRACE*" "*INTERNAL-APPLY-NODE-TRACE*" @@ -1086,6 +1090,7 @@ "CALLBACK-ACCESSOR-FORM" "MAKE-CALLBACK-TRAMPOLINE" "FIXNUMIZE" "WEAK-POINTER-MARK-BIT-SLOT" + "CHAR-BITS" "CHAR-BYTES" ) #+x86 (:export "COMPATIBLE-FUNCTION-TYPES-P") @@ -1235,7 +1240,8 @@ (:nicknames "EXTENSIONS") (:import-from "LISP" "GET-SETF-METHOD") (:import-from "KERNEL" "*ANSI-DEFSTRUCT-OPTIONS-P*") - (:import-from "SYSTEM" "MAKE-INDENTING-STREAM" "INDENTING-STREAM-P" "BINARY-TEXT-STREAM") + (:import-from "SYSTEM" "MAKE-INDENTING-STREAM" "INDENTING-STREAM-P" + "BINARY-TEXT-STREAM") #+double-double (:import-from "KERNEL" "DOUBLE-DOUBLE-FLOAT" "DD-PI") (:export "*AFTER-GC-HOOKS*" "*AFTER-SAVE-INITIALIZATIONS*" @@ -1465,7 +1471,8 @@ (:import-from "SYSTEM" "LISP-STREAM") (:import-from "EXTENSIONS" "FUNDAMENTAL-STREAM") (:import-from "LISP" "LINE-LENGTH" "CHARPOS" - "BREF" "BUFFER-COPY" "BUFFER-SAP" "ENDIAN-SWAP-VALUE" "VECTOR-ELT-WIDTH") + "BREF" "BUFFER-COPY" "BUFFER-SAP" "ENDIAN-SWAP-VALUE" + "VECTOR-ELT-WIDTH") (:export ;; Stream classes "STREAM" "SIMPLE-STREAM" diff --git a/code/extfmts.lisp b/code/extfmts.lisp index d16ad2ab7..f7bf65853 100644 --- a/code/extfmts.lisp +++ b/code/extfmts.lisp @@ -5,7 +5,7 @@ ;;; domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/extfmts.lisp,v 1.5 2008/06/20 13:16:33 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/extfmts.lisp,v 1.6 2009/06/11 16:03:57 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -21,11 +21,18 @@ (defvar *external-formats* (make-hash-table :test 'equal)) (defvar *external-format-aliases* (make-hash-table)) -(defconstant +ef-os+ 2) -(defconstant +ef-so+ 3) -(defconstant +ef-en+ 4) -(defconstant +ef-de+ 5) -(defconstant +ef-max+ 6) +(defconstant +ef-cin+ 2) +(defconstant +ef-cout+ 3) +(defconstant +ef-sin+ 4) +(defconstant +ef-sout+ 5) +(defconstant +ef-os+ 6) +(defconstant +ef-so+ 7) +(defconstant +ef-en+ 8) +(defconstant +ef-de+ 9) +(defconstant +ef-max+ 10) + +;; Unicode replacement character U+FFFD +(defconstant +replacement-character-code+ #xFFFD) (define-condition external-format-not-implemented (error) () @@ -41,7 +48,9 @@ (defstruct efx (octets-to-code #'%efni :type function :read-only t) (code-to-octets #'%efni :type function :read-only t) - (cache nil :type (or null simple-vector))) + (cache nil :type (or null simple-vector)) + (min 1 :type kernel:index :read-only t) + (max 1 :type kernel:index :read-only t)) (defstruct (external-format (:conc-name ef-) @@ -59,10 +68,11 @@ (print-unreadable-object (ef stream :type t :identity t) (princ (ef-name ef) stream))) -(defun %whatsit (ef) +(defun %intern-ef (ef) (setf (gethash (ef-name ef) *external-formats*) ef)) -(declaim (inline ef-octets-to-code ef-code-to-octets ef-cache)) +(declaim (inline ef-octets-to-code ef-code-to-octets ef-cache + ef-min-octets ef-max-octets)) (defun ef-octets-to-code (ef) (efx-octets-to-code (ef-efx ef))) @@ -73,76 +83,177 @@ (defun ef-cache (ef) (efx-cache (ef-efx ef))) -(defmacro define-external-format (name octets-to-code code-to-octets) - (let ((tmp1 (gensym)) (tmp2 (gensym))) +(defun ef-min-octets (ef) + (efx-min (ef-efx ef))) + +(defun ef-max-octets (ef) + (efx-max (ef-efx ef))) + +(eval-when (:compile-toplevel :load-toplevel :execute) + (defun %merge-slots (old new) + (let* ((pos (length old)) + (tmp (mapcar (lambda (x) + (let* ((name (if (consp x) (first x) x)) + (init (if (consp x) (second x) nil)) + (list (if (consp x) (nthcdr 2 x) nil)) + (prev (assoc name old)) + (posn (if prev (second prev) (1- (incf pos))))) + (list name posn init (getf list :type t)))) + new))) + (delete-duplicates (stable-sort (append old tmp) #'< :key #'second) + :key #'second)))) + +;;; DEFINE-EXTERNAL-FORMAT -- Public +;;; +;;; name (&key min max size) (&rest slots) octets-to-code code-to-octets +;;; Define a new external format. Min/Max/Size are the minimum and +;;; maximum number of octets that make up a character (:size N is just +;;; shorthand for :min N :max N). Slots is a list of slot descriptions +;;; similar to defstruct. +;;; +;;; name (base) (&rest slots) +;;; Define an external format based on a previously-defined external +;;; format, Base. The slot names used in Slots must match those in Base. +;;; +;;; octets-to-code (state input unput &rest vars) +;;; Defines a form to be used by the external format to convert +;;; octets to a code point. State is a form that can be used by the +;;; body to access the state variable of the stream. Input is a +;;; form that can be used to read one more octets from the input +;;; strema. Similarly, Unput is a form to put back one octet to the +;;; input stream. Vars is a list of vars that need to be defined +;;; for any symbols used within the form. +;;; +;;; This should return two values: the code and the number of octets +;;; read to form the code. +;;; +;;; code-to-octets (code state output &rest vars) +;;; Defines a form to be used by the external format to convert a +;;; code point to octets for output. Code is the code point to be +;;; converted. State is a form to access the current value of the +;;; stream's state variable. Output is a form that writes one octet +;;; to the output stream. +;;; +;;; Note: external-formats work on code-points, not +;;; characters, so that the entire 31 bit ISO-10646 range can be +;;; used internally regardless of the size of a character recognized +;;; by Lisp and external formats can be useful to people who want to +;;; process characters outside the Lisp range (see +;;; CODEPOINT-TO-OCTETS, OCTETS-TO-CODEPOINT) +;;; +(defmacro define-external-format (name (&rest args) (&rest slots) + &optional octets-to-code code-to-octets) + (when (and (oddp (length args)) (not (= (length args) 1))) + (warn "Nonsensical argument (~S) to DEFINE-EXTERNAL-FORMAT." args)) + (let* ((tmp (gensym)) + (min (if (evenp (length args)) + (or (getf args :min) (getf args :size) 1) + 1)) + (max (if (evenp (length args)) + (or (getf args :max) (getf args :size) 6) + 6)) + (base (if (= (length args) 1) + (find-external-format (first args)) + nil)) + (bslotd (if base (ef-slotd base) nil)) + (slotd (%merge-slots bslotd slots)) + (slotb (loop for slot in slotd + collect `(,(first slot) + `(the ,',(fourth slot) + ;; IDENTITY is here to protect against SETF + (identity (svref %slots% ,',(second slot)))))))) `(macrolet ((octets-to-code ((state input unput &rest vars) body) - `(lambda (,',tmp1 ,state ,input ,unput) - (declare (ignore ,',tmp1) - (ignorable ,state ,input ,unput) + `(lambda (,state ,input ,unput) + (declare (ignorable ,state ,input ,unput) (optimize (ext:inhibit-warnings 3))) - (let ((,input `(the (or (unsigned-byte 8) null) ,,input)) + (let (,@',slotb + (,input `(the (or (unsigned-byte 8) null) ,,input)) ,@(loop for var in vars collect `(,var (gensym)))) ,body))) (code-to-octets ((code state output &rest vars) body) - `(lambda (,',tmp1 ,',tmp2 ,state ,output) - (declare (ignore ,',tmp1) - (ignorable ,state ,output) + `(lambda (,',tmp ,state ,output) + (declare (ignorable ,state ,output) (optimize (ext:inhibit-warnings 3))) - (let ((,code ',code) + (let (,@',slotb + (,code ',code) ,@(loop for var in vars collect `(,var (gensym)))) - `(let ((,',code (the (unsigned-byte 31) ,,',tmp2))) + `(let ((,',code (the (unsigned-byte 21) ,,',tmp))) (declare (ignorable ,',code)) ,,body))))) - (%whatsit (make-external-format ,name - (make-efx :octets-to-code ,octets-to-code - :code-to-octets ,code-to-octets - :cache (make-array +ef-max+ :initial-element nil)) - nil - #() '()))))) - -(defmacro define-composing-external-format (name input output) - (let ((tmp1 (gensym)) (tmp2 (gensym))) + (%intern-ef (make-external-format ,name + ,(if base + `(ef-efx (find-external-format ,(ef-name base))) + `(make-efx :octets-to-code ,octets-to-code + :code-to-octets ,code-to-octets + :cache (make-array +ef-max+ + :initial-element nil) + :min ,(min min max) :max ,(max min max))) + nil + (let* ,(loop for x in slotd + collect (list (first x) (third x))) + (vector ,@(mapcar #'first slotd))) + ',slotd))))) + +;;; DEFINE-COMPOSING-EXTERNAL-FORMAT -- Public +;;; +;;; A composing-external-format differs from an (ordinary) external-format +;;; in that it translates characters (really codepoints, of course) into +;;; other characters, rather than translating between characters and binary +;;; octets. They have to be composed with a non-composing external-format +;;; to be of any use. +;;; +(defmacro define-composing-external-format (name (&key min max size) + input output) + (let ((tmp (gensym)) + (min (or min size 1)) + (max (or max size 1))) `(macrolet ((input ((state input unput &rest vars) body) - `(lambda (,',tmp1 ,state ,input ,unput) - (declare (ignore ,',tmp1) - (ignorable ,state ,input ,unput) + `(lambda (,state ,input ,unput) + (declare (ignorable ,state ,input ,unput) (optimize (ext:inhibit-warnings 3))) - (let ((,input `(the (values (or (unsigned-byte 31) null) - lisp::index) + (let ((,input `(the (values (or (unsigned-byte 21) null) + kernel:index) ,,input)) ,@(loop for var in vars collect `(,var (gensym)))) ,body))) (output ((code state output &rest vars) body) - `(lambda (,',tmp1 ,',tmp2 ,state ,output) - (declare (ignore ,',tmp1) - (ignorable ,state ,output) + `(lambda (,',tmp ,state ,output) + (declare (ignorable ,state ,output) (optimize (ext:inhibit-warnings 3))) (let ((,code ',code) ,@(loop for var in vars collect `(,var (gensym)))) - `(let ((,',code (the (unsigned-byte 31) ,,',tmp2))) + `(let ((,',code (the (unsigned-byte 21) ,,',tmp))) (declare (ignorable ,',code)) ,,body))))) - (%whatsit (make-external-format ,name - (make-efx :octets-to-code ,input - :code-to-octets ,output) - t - #() '()))))) + (%intern-ef (make-external-format ,name + (make-efx :octets-to-code ,input + :code-to-octets ,output + :min ,(min min max) :max ,(max min max)) + t + #() '()))))) (defun load-external-format-aliases () - (let ((*package* (find-package "KEYWORD"))) - (with-open-file (stm "ext-formats:aliases" :if-does-not-exist nil) + (let ((*package* (find-package "KEYWORD")) + (unix::*filename-encoding* :iso8859-1)) + (with-open-file (stm "ext-formats:aliases" :if-does-not-exist nil :external-format :iso8859-1) (when stm - (do ((alias (read stm nil stm) (read stm nil stm)) - (value (read stm nil stm) (read stm nil stm))) - ((or (eq alias stm) (eq value stm)) - (unless (eq alias stm) - (warn "External-format aliases file ends early."))) - (if (and (keywordp alias) (keywordp value)) - (setf (gethash alias *external-format-aliases*) value) - (warn "Bad entry in external-format aliases file: ~S => ~S." - alias value))))))) + (do ((alias (read stm nil stm) (read stm nil stm)) + (value (read stm nil stm) (read stm nil stm))) + ((or (eq alias stm) (eq value stm)) + (unless (eq alias stm) + (warn "External-format aliases file ends early."))) + (if (and (keywordp alias) (keywordp value)) + (setf (gethash alias *external-format-aliases*) value) + (warn "Bad entry in external-format aliases file: ~S => ~S." + alias value))))))) (defun %find-external-format (name) + ;; avoid loading files, etc., early in the boot sequence + (when (or (eq name :iso8859-1) + (and (eq name :default) (eq *default-external-format* :iso8859-1))) + (return-from %find-external-format + (gethash :iso8859-1 *external-formats*))) + (when (zerop (hash-table-count *external-format-aliases*)) (setf (gethash :latin1 *external-format-aliases*) :iso8859-1) (setf (gethash :latin-1 *external-format-aliases*) :iso8859-1) @@ -159,44 +270,39 @@ (or (gethash name *external-formats*) (and (let ((*package* (find-package "STREAM")) - (lisp::*enable-package-locked-errors* nil)) - (load (format nil "ext-formats:~(~A~)" name) - :if-does-not-exist nil)) + (lisp::*enable-package-locked-errors* nil) + (*default-external-format* :iso8859-1) + (unix::*filename-encoding* :iso8859-1) + (s (open (format nil "ext-formats:~(~A~).lisp" name) :if-does-not-exist nil + :external-format :iso8859-1))) + (when s + (null (nth-value 1 (ext:compile-from-stream s))))) (gethash name *external-formats*)))) (defun %composed-ef-name (a b) (if (consp a) (append a (list b)) (list a b))) -(defun %compose-external-formats (a b &optional name) +(defun %compose-external-formats (a b) (when (ef-composingp a) (error "~S is a Composing-External-Format." (ef-name a))) (unless (ef-composingp b) (error "~S is not a Composing-External-Format." (ef-name b))) - (when name - (setf (getf name *external-format-aliases*) - (%composed-ef-name (ef-name a) (ef-name b)))) (make-external-format (%composed-ef-name (ef-name a) (ef-name b)) (make-efx - :octets-to-code (lambda (tmp state input unput) - (declare (ignore tmp)) - (funcall (ef-octets-to-code b) (ef-slots b) - state - (funcall (ef-octets-to-code a) (ef-slots a) - state - input - unput) + :octets-to-code (lambda (state input unput) + (funcall (ef-octets-to-code b) state + (funcall (ef-octets-to-code a) + state input unput) unput)) - :code-to-octets (lambda (tmp code state output) - (declare (ignore tmp)) - (funcall (ef-code-to-octets b) (ef-slots b) - code - state + :code-to-octets (lambda (code state output) + (funcall (ef-code-to-octets b) code state `(lambda (x) ,(funcall (ef-code-to-octets a) - (ef-slots a) 'x state output)))) - :cache (make-array +ef-max+ :initial-element nil)) + :cache (make-array +ef-max+ :initial-element nil) + :min (* (ef-min-octets a) (ef-min-octets b)) + :max (* (ef-max-octets a) (ef-max-octets b))) nil #() '())) (defun find-external-format (name &optional (error-p t)) @@ -212,15 +318,90 @@ (when (and (consp name) (not (cdr name))) (setq name (car name))) - (if (consp name) - (let ((efs (mapcar #'%find-external-format name))) - (if (member nil efs) - (if error-p (error "External format ~S not found." name) nil) - (let ((name (reduce #'%composed-ef-name (mapcar #'ef-name efs)))) - (or (gethash name *external-formats*) - (%whatsit (reduce #'%compose-external-formats efs)))))) - (or (%find-external-format name) - (if error-p (error "External format ~S not found." name) nil)))) + (flet ((not-found () + (when (equal *default-external-format* name) + (setq *default-external-format* :iso8859-1)) + (if error-p (error "External format ~S not found." name) nil))) + (if (consp name) + (let ((efs (mapcar #'%find-external-format name))) + (if (member nil efs) + (not-found) + (let ((name (reduce #'%composed-ef-name (mapcar #'ef-name efs)))) + (or (gethash name *external-formats*) + (%intern-ef (reduce #'%compose-external-formats efs)))))) + (or (%find-external-format name) (not-found))))) + +(defun flush-external-formats () + (maphash (lambda (name ef) + (declare (ignore name)) + (fill (ef-cache ef) nil)) + *external-formats*)) + +(defvar *.table-inverse.* (make-hash-table :test 'eq :size 7)) + +(defun invert-table (table) + (declare (type (or (simple-array (unsigned-byte 31) *) + (simple-array (unsigned-byte 16) *)) + table) + (optimize (speed 3) (space 0) (safety 0) (debug 0) + (ext:inhibit-warnings 3))) + (or (gethash table *.table-inverse.*) + (let* ((mbits (if (= (array-total-size table) 128) 7 8)) + (lbits (cond ((> (array-total-size table) 256) 3) + ((< (array-total-size table) 100) 6) + (t 5))) + (hvec (make-array (1+ (ash #x110000 (- 0 mbits lbits))) + :element-type '(unsigned-byte 16) + :initial-element #xFFFF)) + (mvec (make-array 0 :element-type '(unsigned-byte 16))) + (lvec (make-array 0 :element-type '(unsigned-byte 16))) + (width (array-dimension table 0)) + (power (1- (array-rank table))) + (base (if (= width 94) 1 0)) + hx mx lx) + (assert (and (< power 2) (<= width 256))) + (dotimes (i (array-total-size table)) + (declare (type (integer 0 (#.array-dimension-limit)) i)) + (let ((tmp i) (val (row-major-aref table i)) (z 0)) + (declare (type (integer 0 (#.array-dimension-limit)) tmp) + (type (unsigned-byte 16) z)) + (unless (= val #xFFFE) + (when (plusp power) + (multiple-value-bind (x y) (floor tmp width) + (setq tmp x) + (setq z (logior z (ash (the (integer 0 255) (+ y base)) + (the (integer 0 24) + (* 8 power))))))) + (setq hx (ash val (- 0 mbits lbits))) + (when (= (aref hvec hx) #xFFFF) + (setf (aref hvec hx) (length mvec)) + (let ((tmp (make-array (+ (length mvec) (ash 1 mbits)) + :element-type '(unsigned-byte 16) + :initial-element #xFFFF))) + (replace tmp mvec) + (setq mvec tmp))) + (setq mx (logand (ash val (- lbits)) (lognot (ash -1 mbits)))) + (when (= (aref mvec (+ hx mx)) #xFFFF) + (setf (aref mvec (+ hx mx)) (length lvec)) + (let ((tmp (make-array (+ (length lvec) (ash 1 lbits)) + :element-type '(unsigned-byte 16) + :initial-element #xFFFF))) + (replace tmp lvec) + (setq lvec tmp))) + (setq lx (logand val (lognot (ash -1 lbits)))) + (setf (aref lvec (+ (aref mvec (+ hx mx)) lx)) + (logior z (+ tmp base)))))) + (setf (gethash table *.table-inverse.*) + (lisp::make-ntrie16 :split (logior (ash (1- mbits) 4) (1- lbits)) + :hvec hvec :mvec mvec :lvec lvec))))) + +(declaim (inline get-inverse)) +(defun get-inverse (ntrie code) + (declare (type lisp::ntrie16 ntrie) (type lisp:codepoint code)) + (let ((n (lisp::qref ntrie code))) + (and n (let ((m (aref (lisp::ntrie16-lvec ntrie) n))) + (if (= m #xFFFF) nil m))))) + (define-condition void-external-format (error) () @@ -229,30 +410,36 @@ (declare (ignore condition)) (format stream "Attempting I/O through void external-format.")))) -(define-external-format :void +(define-external-format :void (:size 0) () (octets-to-code (state input unput) `(error 'void-external-format)) (code-to-octets (code state output) `(error 'void-external-format))) -(define-external-format :iso8859-1 +(define-external-format :iso8859-1 (:size 1) () (octets-to-code (state input unput) `(values ,input 1)) (code-to-octets (code state output) `(,output (if (> ,code 255) #x3F ,code)))) +;;; OCTETS-TO-CODEPOINT, CODEPOINT-TO-OCTETS -- Semi-Public +;;; +;;; Normally you'd want to use OCTETS-TO-CHAR and CHAR-TO-OCTETS instead of +;;; these, but that limits you to Lisp's idea of a character - either Latin-1 +;;; in 8 bit Lisp images, or the Unicode BMP in 16 bit images. If you want +;;; to read or write texts containing characters not supported by your Lisp, +;;; these macros can be used instead. (defmacro octets-to-codepoint (external-format state count input unput) - (let ((tmp1 (gensym)) (tmp2 (gensym))) - `(let ((body (funcall (ef-octets-to-code ,external-format) - (ef-slots ,external-format) - ',state ',input ',unput))) - `(multiple-value-bind (,',tmp1 ,',tmp2) ,body - (setf ,',count (the lisp::index ,',tmp2)) - (the (or (unsigned-byte 31) null) ,',tmp1))))) + (let ((tmp1 (gensym)) (tmp2 (gensym)) + (ef (find-external-format external-format))) + `(multiple-value-bind (,tmp1 ,tmp2) + ,(funcall (ef-octets-to-code ef) state input unput) + (setf ,count (the kernel:index ,tmp2)) + (the (or (unsigned-byte 21) null) ,tmp1)))) (defmacro codepoint-to-octets (external-format code state output) - `(funcall (ef-code-to-octets ,external-format) (ef-slots ,external-format) - ',code ',state ',output)) + (let ((ef (find-external-format external-format))) + (funcall (ef-code-to-octets ef) code state output))) @@ -268,82 +455,152 @@ (adjust-array (ef-cache ef) (+ base reqd) :initial-element nil))) base)) +;;; DEF-EF-MACRO -- Public +;;; +;;; (defmacro def-ef-macro (name (ef id reqd idx) body) - (let ((tmp (gensym))) - `(defun ,name (,ef) - (let ((,tmp ,(if (eq id 'lisp::lisp) - idx - `(+ (ensure-cache ,ef ',id ,reqd) ,idx)))) - (or (aref (ef-cache ,ef) ,tmp) - (setf (aref (ef-cache ,ef) ,tmp) - (let ((*compile-print* nil)) (compile nil ,body)))))))) + (let ((tmp1 (gensym)) + (tmp2 (gensym)) + (%name (intern (format nil "%~A" name) (symbol-package name)))) + `(progn + (defun ,%name (,ef) + (let* ((,tmp1 (find-external-format ,ef)) + (,tmp2 ,(if (eq id 'lisp::lisp) + idx + `(+ (ensure-cache ,tmp1 ',id ,reqd) ,idx)))) + (funcall (or (aref (ef-cache ,tmp1) ,tmp2) + (setf (aref (ef-cache ,tmp1) ,tmp2) + (let ((*compile-print* nil) + ;; Set default format when we compile so we + ;; can see compiler messages. If we don't, + ;; we run into a problem that we might be + ;; changing the default format while we're + ;; compiling, and we don't know how to output + ;; the compiler messages. + (*default-external-format* :iso8859-1)) + (compile nil `(lambda (%slots%) + (declare (ignorable %slots%)) + ,,body))))) + (ef-slots ,tmp1)))) + (declaim (inline ,name)) + (defun ,name (,tmp1) + (let ((,tmp2 (load-time-value (cons nil nil)))) + (when (eq ,tmp1 :default) + (setq ,tmp1 *default-external-format*)) + (if (eq ,tmp1 (car ,tmp2)) + (cdr ,tmp2) + (setf (car ,tmp2) ,tmp1 + (cdr ,tmp2) (,%name ,tmp1)))))))) +;;; OCTETS-TO-CHAR, CHAR-TO-OCTETS -- Public +;;; +;;; Read and write one character through an external-format +;;; (defmacro octets-to-char (external-format state count input unput) - `(let ((body (octets-to-codepoint ,external-format - ,state ,count ,input ,unput))) - `(let ((code ,body)) - (declare (type (unsigned-byte 31) code)) - (if (< code char-code-limit) (code-char code) #\?)))) - + (let ((s (gensym "STATE-")) + (code (gensym "CODE-"))) + `(let ((,s ,state)) + (when (null ,s) + ;; Need our own state variable to hold our state and the + ;; state for the external format. + (setq ,s (setf ,state (cons nil nil)))) + (if (car ,s) + ;; Return the trailing surrgate. Must set count to 0 to + ;; tell the stream code we didn't consume any octets! + (prog1 (the character (car ,s)) + (setf (car ,s) nil) + (setf ,count 0)) + (let ((,code (octets-to-codepoint ,external-format + (cdr ,s) ,count ,input ,unput))) + (declare (type (unsigned-byte 31) ,code)) + (cond ((or (lisp::surrogatep ,code) + (> ,code #x10FFFF)) + #-(and unicode (not unicode-bootstrap)) #\? + #+(and unicode (not unicode-bootstrap)) #\U+FFFD) + #+unicode + ((> ,code #xFFFF) + (multiple-value-bind (hi lo) + (lisp::surrogates ,code) + (setf (car ,state) lo) + hi)) + (t (code-char ,code)))))))) + +;; This doesn't handle surrogate code units correctly. It just +;; outputs the surrogate value to the external format. External +;; formats almost never allow surrogate code points (except UTF-16). (defmacro char-to-octets (external-format char state output) `(codepoint-to-octets ,external-format (char-code ,char) ,state ,output)) + (def-ef-macro ef-string-to-octets (extfmt lisp::lisp +ef-max+ +ef-so+) - `(lambda (string start end buffer &aux (ptr 0) (state nil)) + `(lambda (string start end buffer &aux (ptr 0) (state nil) (code 0) (c 0) widep) (declare #|(optimize (speed 3) (safety 0) (space 0) (debug 0))|# (type simple-string string) - (type lisp::index start end ptr) + (type kernel:index start end ptr) (type (simple-array (unsigned-byte 8) (*)) buffer) + (type lisp:codepoint code c) + (type (or null fixnum) widep) (ignorable state)) - (dotimes (i (- end start) (values buffer ptr)) - (declare (type lisp::index i)) - ,(char-to-octets extfmt (schar string (+ start i)) state - (lambda (b) - (when (= ptr (length buffer)) - (setq buffer (adjust-array buffer (* 2 ptr)))) - (setf (aref buffer (1- (incf ptr))) b)))))) + (loop with i of-type kernel:index = start + while (< i end) + do + (multiple-value-bind (c widep) + (lisp::codepoint string i end) + (incf i (if widep 2 1)) + (codepoint-to-octets ,extfmt c state + (lambda (b) + (when (= ptr (length buffer)) + (setq buffer (adjust-array buffer (* 2 ptr)))) + (setf (aref buffer (1- (incf ptr))) b))))))) (defun string-to-octets (string &key (start 0) end (external-format :default) (buffer nil bufferp)) (declare (type string string) - (type lisp::index start) - (type (or lisp::index null) end) + (type kernel:index start) + (type (or kernel:index null) end) (type (or (simple-array (unsigned-byte 8) (*)) null) buffer)) - (multiple-value-bind (buffer ptr) - (lisp::with-array-data ((string string) (start start) (end end)) - (funcall (ef-string-to-octets (find-external-format external-format)) - string start end - (or buffer (make-array (length string) + (let* ((buffer (or buffer (make-array (length string) :element-type '(unsigned-byte 8))))) - (values (if bufferp buffer (lisp::shrink-vector buffer ptr)) ptr))) + (multiple-value-bind (buffer ptr) + (lisp::with-array-data ((string string) (start start) (end end)) + (funcall (ef-string-to-octets external-format) + string start end buffer)) + (values (if bufferp buffer (lisp::shrink-vector buffer ptr)) ptr)))) (def-ef-macro ef-octets-to-string (extfmt lisp::lisp +ef-max+ +ef-os+) - `(lambda (octets ptr end string &aux (pos -1) (count 0) (state nil)) + `(lambda (octets ptr end string &aux (pos -1) (count 0) (state nil) (code 0)) (declare #|(optimize (speed 3) (safety 0) (space 0) (debug 0))|# (type (simple-array (unsigned-byte 8) (*)) octets) - (type lisp::index end count) + (type kernel:index end count) (type (integer -1 (#.array-dimension-limit)) ptr pos) (type simple-string string) + (type lisp:codepoint code) (ignorable state)) (loop until (>= ptr end) do (when (= pos (length string)) (setq string (adjust-array string (* 2 pos)))) - (setf (schar string (incf pos)) - ,(octets-to-char extfmt state count - (aref octets (incf ptr)) ;;@@ EOF?? - (lambda (n) (decf ptr n)))) + (setf code + (octets-to-codepoint ,extfmt state count + (aref octets (incf ptr)) ;;@@ EOF?? + (lambda (n) (decf ptr n)))) + ;; Convert codepoint to UTF-16 surrogate pairs if needed + (multiple-value-bind (high low) + (surrogates code) + (setf (aref string (incf pos)) high) + (when low + (setf (aref string (incf pos)) low))) finally (return (values string (1+ pos)))))) (defun octets-to-string (octets &key (start 0) end (external-format :default) (string nil stringp)) (declare (type (simple-array (unsigned-byte 8) (*)) octets) - (type lisp::index start) - (type (or lisp::index null) end) + (type kernel:index start) + (type (or kernel:index null) end) (type (or simple-string null) string)) (multiple-value-bind (string pos) - (funcall (ef-octets-to-string (find-external-format external-format)) + (funcall (ef-octets-to-string external-format) octets (1- start) (1- (or end (length octets))) (or string (make-string (length octets)))) (values (if stringp string (lisp::shrink-vector string pos)) pos))) @@ -354,23 +611,28 @@ `(lambda (string start end result &aux (ptr 0) (state nil)) (declare #|(optimize (speed 3) (safety 0) (space 0) (debug 0))|# (type simple-string string) - (type lisp::index start end ptr) + (type kernel:index start end ptr) (type simple-base-string result) (ignorable state)) (dotimes (i (- end start) (values result ptr)) - (declare (type lisp::index i)) - ,(char-to-octets extfmt (schar string (+ start i)) state - (lambda (b) - (when (= ptr (length result)) - (setq result (adjust-array result (* 2 ptr)))) - (setf (aref result (1- (incf ptr))) - (code-char b))))))) + (declare (type kernel:index i)) + (char-to-octets ,extfmt (schar string (+ start i)) state + (lambda (b) + (when (= ptr (length result)) + (setq result (adjust-array result (* 2 ptr)))) + (setf (aref result (1- (incf ptr))) + (code-char b))))))) (defun string-encode (string external-format &optional (start 0) end) + "Encode the given String using External-Format and return a new + string. The characters of the new string are the octets of the + encoded result, with each octet converted to a character via + code-char. This is the inverse to String-Decode" + (when (zerop (length string)) + (return-from string-encode string)) (multiple-value-bind (result ptr) (lisp::with-array-data ((string string) (start start) (end end)) - (funcall (ef-encode (find-external-format external-format)) - string start end + (funcall (ef-encode external-format) string start end (make-string (length string) :element-type 'base-char))) (lisp::shrink-vector result ptr))) @@ -378,7 +640,7 @@ `(lambda (string ptr end result &aux (pos -1) (count 0) (state nil)) (declare #|(optimize (speed 3) (safety 0) (space 0) (debug 0))|# (type simple-string string) - (type lisp::index end count) + (type kernel:index end count) (type (integer -1 (#.array-dimension-limit)) ptr pos) (type simple-string result) (ignorable state)) @@ -386,17 +648,23 @@ ;; increasing size of result shouldn't ever be necessary, unless ;; someone implements an encoding smaller than the source string... do (setf (schar result (incf pos)) - ,(octets-to-char extfmt state count - ;; note the need to return NIL for EOF - (if (= (1+ ptr) (length string)) - nil - (char-code (char string (incf ptr)))) - (lambda (n) (decf ptr n)))) + (octets-to-char ,extfmt state count + ;; note the need to return NIL for EOF + (if (= (1+ ptr) (length string)) + nil + (char-code (char string (incf ptr)))) + (lambda (n) (decf ptr n)))) finally (return (values result (1+ pos)))))) (defun string-decode (string external-format &optional (start 0) end) + "Decode String using the given External-Format and return the new + string. The input string is treated as if it were an array of + octets, where the char-code of each character is the octet. This is + the inverse of String-Encode." + (when (zerop (length string)) + (return-from string-decode string)) (multiple-value-bind (result pos) (lisp::with-array-data ((string string) (start start) (end end)) - (funcall (ef-decode (find-external-format external-format)) + (funcall (ef-decode external-format) string (1- start) (1- end) (make-string (length string)))) (lisp::shrink-vector result pos))) diff --git a/code/fd-stream-extfmt.lisp b/code/fd-stream-extfmt.lisp new file mode 100644 index 000000000..05f6f14b8 --- /dev/null +++ b/code/fd-stream-extfmt.lisp @@ -0,0 +1,94 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: LISP -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/fd-stream-extfmt.lisp,v 1.2 2009/06/11 16:03:57 rtoy Exp $") +;;; +;;; ********************************************************************** +;;; +;;; Implementation of external-formats for fd-streams + +(in-package "LISP") + +(defun output-char-none-buffered (stream char) + (funcall (ef-cout (fd-stream-external-format stream)) + stream char) + (if (char= char #\Newline) + (setf (fd-stream-char-pos stream) 0) + (incf (fd-stream-char-pos stream))) + (flush-output-buffer stream) + (values)) + +(defun output-char-line-buffered (stream char) + (funcall (ef-cout (fd-stream-external-format stream)) + stream char) + (if (char= char #\Newline) + (progn (setf (fd-stream-char-pos stream) 0) + (flush-output-buffer stream)) + (incf (fd-stream-char-pos stream))) + (values)) + +(defun output-char-full-buffered (stream char) + (funcall (ef-cout (fd-stream-external-format stream)) + stream char) + (if (char= char #\Newline) + (setf (fd-stream-char-pos stream) 0) + (incf (fd-stream-char-pos stream))) + (values)) + +;; an fd-sout that works with external-formats; needs slots in fd-stream +(defun fd-sout (stream thing start end) + (let ((start (or start 0)) + (end (or end (length (the vector thing))))) + (declare (type index start end)) + (if (stringp thing) + (let ((last-newline (and (find #\newline (the simple-string thing) + :start start :end end) + (position #\newline (the simple-string thing) + :from-end t + :start start + :end end)))) + (funcall (ef-sout (fd-stream-external-format stream)) + stream thing start end) + (ecase (fd-stream-buffering stream) + (:full #| do nothing |#) + (:line + (when last-newline + (flush-output-buffer stream))) + (:none + (flush-output-buffer stream))) + (if last-newline + (setf (fd-stream-char-pos stream) + (- end last-newline 1)) + (incf (fd-stream-char-pos stream) + (- end start)))) + (ecase (fd-stream-buffering stream) + ((:line :full) + (output-raw-bytes stream thing start end)) + (:none + (do-output stream thing start end nil)))))) + +(defun input-character (stream eof-error eof-value) + ;; This needs to go away. Unreading a character needs to be done by backing + ;; up the buffer head pointer, so that the external format will re-build the + ;; character - else changing extfmts won't work. But until we get around + ;; to teaching UNREAD-CHAR to DTRT, keep this to maintain compatibility... + (if (fd-stream-unread stream) + (prog1 (fd-stream-unread stream) + (setf (fd-stream-unread stream) nil) + (setf (fd-stream-listen stream) nil)) + (let ((char (funcall (ef-cin (fd-stream-external-format stream)) + stream))) + (if char + char + (eof-or-lose stream eof-error eof-value))))) + + +(setf (fd-stream-out *stdout*) #'output-char-line-buffered + (fd-stream-sout *stdout*) #'fd-sout + (fd-stream-out *stderr*) #'output-char-line-buffered + (fd-stream-sout *stderr*) #'fd-sout + (fd-stream-in *stdin*) #'input-character) diff --git a/code/fd-stream.lisp b/code/fd-stream.lisp index 535325c8f..481638a5c 100644 --- a/code/fd-stream.lisp +++ b/code/fd-stream.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/fd-stream.lisp,v 1.85 2007/11/05 15:25:03 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/fd-stream.lisp,v 1.86 2009/06/11 16:03:57 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -97,9 +97,9 @@ (etypecase vector ;; (simple-array fixnum (*)) not supported ;; (simple-array base-char (*)) treated specially; don't call this - ((simple-array bit (*)) 1) - ((simple-array (unsigned-byte 2) (*)) 1) - ((simple-array (unsigned-byte 4) (*)) 1) + ((simple-array bit (*)) 1/8) + ((simple-array (unsigned-byte 2) (*)) 1/4) + ((simple-array (unsigned-byte 4) (*)) 1/2) ((simple-array (signed-byte 8) (*)) 1) ((simple-array (unsigned-byte 8) (*)) 1) ((simple-array (signed-byte 16) (*)) 2) @@ -121,8 +121,22 @@ (defun endian-swap-value (vector endian-swap) (case endian-swap - (:network-order #+big-endian 0 - #+little-endian (1- (vector-elt-width vector))) + (:network-order + #+big-endian 0 + ;; This is needed because the little-endian (x86) architectures + ;; store the lowest indexed element in the least significant part + ;; of a byte. On a big-endian machine (sparc, ppc), the lowest + ;; indexed element is at the most significant part of a byte. + #+little-endian + (typecase vector + ((array (unsigned-byte 4) (*)) + -1) + ((array (unsigned-byte 2) (*)) + -2) + ((array (unsigned-byte 1) (*)) + -8) + (t + (1- (vector-elt-width vector))))) (:byte-8 0) (:byte-16 1) (:byte-32 3) @@ -130,10 +144,30 @@ (:byte-128 15) ;; additions by Lynn Quam (:machine-endian 0) - (:big-endian #+big-endian 0 - #+little-endian (1- (vector-elt-width vector))) - (:little-endian #+big-endian (1- (vector-elt-width vector)) - #+little-endian 0) + (:big-endian + #+big-endian 0 + #+little-endian + (typecase vector + ((array (unsigned-byte 4) (*)) + -1) + ((array (unsigned-byte 2) (*)) + -2) + ((array (unsigned-byte 1) (*)) + -8) + (t + (1- (vector-elt-width vector))))) + (:little-endian + #+big-endian + (typecase vector + ((array (unsigned-byte 4) (*)) + -1) + ((array (unsigned-byte 2) (*)) + -2) + ((array (unsigned-byte 1) (*)) + -8) + (t + (1- (vector-elt-width vector)))) + #+little-endian 0) (otherwise endian-swap))) @@ -193,7 +227,20 @@ (timeout nil :type (or index null)) ;; ;; Pathname of the file this stream is opened to (returned by PATHNAME.) - (pathname nil :type (or pathname null))) + (pathname nil :type (or pathname null)) + ;; + ;; External format support + ;; + ;; @@ I want to use :default here, but keyword pkg isn't set up yet at boot + ;; so initialize to NIL and fix it in SET-ROUTINES + #+unicode + (external-format nil :type (or null keyword cons)) + #+unicode + (oc-state nil) + #+unicode + (co-state nil) + #+unicode + (last-char-read-size 0 :type index)) (defun %print-fd-stream (fd-stream stream depth) (declare (ignore depth) (stream stream)) @@ -363,7 +410,7 @@ (:none `(flush-output-buffer stream)) (:line - `(when (eq (char-code byte) (char-code #\Newline)) + `(when (eql (char-code byte) (char-code #\Newline)) (flush-output-buffer stream))) (:full )) @@ -379,6 +426,7 @@ (cdr buffering))))))) bufferings))) +#-unicode (def-output-routines ("OUTPUT-CHAR-~A-BUFFERED" 1 (:none character) @@ -390,6 +438,19 @@ (setf (sap-ref-8 (fd-stream-obuf-sap stream) (fd-stream-obuf-tail stream)) (char-code byte))) +#+unicode +(def-output-routines ("OUTPUT-CHAR-~A-BUFFERED" + 1 + (:none character) + (:line character) + (:full character)) + (if (char= byte #\Newline) + (setf (fd-stream-char-pos stream) 0) + (incf (fd-stream-char-pos stream))) + ;; FIXME! We only use the low 8 bits of a character! + (setf (sap-ref-8 (fd-stream-obuf-sap stream) (fd-stream-obuf-tail stream)) + (logand #xff (char-code byte)))) + (def-output-routines ("OUTPUT-UNSIGNED-BYTE-~A-BUFFERED" 1 (:none (unsigned-byte 8)) @@ -435,6 +496,32 @@ (fd-stream-obuf-tail stream)) byte)) +(stream::def-ef-macro ef-cout (extfmt lisp stream::+ef-max+ stream::+ef-cout+) + `(lambda (stream char) + (declare (type fd-stream stream) + (type character char) + (optimize (speed 3) (space 0) (debug 0) (safety 0))) + ;; If there is any input read from UNIX but not + ;; supplied to the user of the stream, reposition + ;; to the real file position as seen from Lisp. + (when (> (fd-stream-ibuf-tail stream) + (fd-stream-ibuf-head stream)) + (file-position stream (file-position stream))) + (let* ((sap (fd-stream-obuf-sap stream)) + (len (fd-stream-obuf-length stream)) + (tail (fd-stream-obuf-tail stream))) + (declare (type sys:system-area-pointer sap) (type index len tail)) + (stream::char-to-octets ,extfmt + char + (fd-stream-co-state stream) + (lambda (byte) + (when (= tail len) + (do-output stream sap 0 tail t) + (setq sap (fd-stream-obuf-sap stream) + tail 0)) + (setf (bref sap (1- (incf tail))) byte))) + (setf (fd-stream-obuf-tail stream) tail)))) + ;;; OUTPUT-RAW-BYTES -- public ;;; @@ -510,7 +597,44 @@ ;;; Note: some bozos (the FASL dumper) call write-string with things other ;;; than strings. Therefore, we must make sure we have a string before calling ;;; position on it. -;;; +;;; + +(stream::def-ef-macro ef-sout (extfmt lisp stream::+ef-max+ stream::+ef-sout+) + `(lambda (stream string start end) + (declare (type fd-stream stream) + (type simple-string string) + (type index start end) + (optimize (speed 3) (space 0) (safety 0) (debug 0))) + ;; If there is any input read from UNIX but not + ;; supplied to the user of the stream, reposition + ;; to the real file position as seen from Lisp. + ;; (maybe the caller should do this?) + (when (> (fd-stream-ibuf-tail stream) + (fd-stream-ibuf-head stream)) + (file-position stream (file-position stream))) + (let* ((sap (fd-stream-obuf-sap stream)) + (len (fd-stream-obuf-length stream)) + (tail (fd-stream-obuf-tail stream))) + (declare (type sys:system-area-pointer sap) (type index len tail)) + (do ((i start)) + ((>= i end)) + (declare (type index i)) + (multiple-value-bind (code widep) + (codepoint string i end) + (stream::codepoint-to-octets ,extfmt + code + (fd-stream-co-state stream) + (lambda (byte) + (when (= tail len) + (do-output stream sap 0 tail t) + (setq sap (fd-stream-obuf-sap stream) + tail 0)) + (setf (bref sap (1- (incf tail))) byte))) + (incf i (if widep 2 1)))) + (setf (fd-stream-obuf-tail stream) tail)))) + + +#-unicode (defun fd-sout (stream thing start end) (let ((start (or start 0)) (end (or end (length (the vector thing))))) @@ -542,6 +666,19 @@ (:none (do-output stream thing start end nil)))))) +#+unicode +(defun fd-sout (stream thing start end) + (declare (type string thing)) + (let ((start (or start 0)) + (end (or end (length (the vector thing))))) + (declare (type index start end)) + (cond + ((stringp thing) ; FIXME - remove this test + (let ((out (fd-stream-out stream))) + (do ((index start (+ index 1))) + ((>= index end)) + (funcall out stream (elt thing index)))))))) + (defmacro output-wrapper ((stream size buffering) &body body) (let ((stream-var (gensym))) `(let ((,stream-var ,stream)) @@ -645,20 +782,22 @@ (ibuf-sap (fd-stream-ibuf-sap stream)) (buflen (fd-stream-ibuf-length stream)) (head (fd-stream-ibuf-head stream)) + (lcrs #-unicode 0 + #+unicode (fd-stream-last-char-read-size stream)) (tail (fd-stream-ibuf-tail stream))) - (declare (type index head tail)) + (declare (type index head lcrs tail)) (unless (zerop head) (cond ((eql head tail) - (setf head 0) - (setf tail 0) - (setf (fd-stream-ibuf-head stream) 0) - (setf (fd-stream-ibuf-tail stream) 0)) + (setf head lcrs) + (setf tail lcrs) + (setf (fd-stream-ibuf-head stream) lcrs) + (setf (fd-stream-ibuf-tail stream) lcrs)) (t - (decf tail head) - (system-area-copy ibuf-sap (* head vm:byte-bits) + (decf tail (- head lcrs)) + (system-area-copy ibuf-sap (* (- head lcrs) vm:byte-bits) ibuf-sap 0 (* tail vm:byte-bits)) - (setf head 0) - (setf (fd-stream-ibuf-head stream) 0) + (setf head lcrs) + (setf (fd-stream-ibuf-head stream) lcrs) (setf (fd-stream-ibuf-tail stream) tail)))) (setf (fd-stream-listen stream) nil) (multiple-value-bind @@ -704,7 +843,7 @@ (throw 'eof-input-catcher nil)) (t (incf (fd-stream-ibuf-tail stream) count)))))) - + ;;; INPUT-AT-LEAST -- internal ;;; ;;; Makes sure there are at least ``bytes'' number of bytes in the input @@ -722,7 +861,7 @@ (return)) (do-input ,stream-var))))) -;;; INPUT-WRAPPER -- intenal +;;; INPUT-WRAPPER -- internal ;;; ;;; Macro to wrap around all input routines to handle eof-error noise. ;;; @@ -730,7 +869,7 @@ (let ((stream-var (gensym)) (element-var (gensym))) `(let ((,stream-var ,stream)) - (if (fd-stream-unread ,stream-var) + (if (fd-stream-unread ,stream-var) ;;@@ (prog1 ,(if (eq type 'character) `(fd-stream-unread ,stream-var) @@ -820,6 +959,78 @@ ((signed-byte 32) 4 sap head) (signed-sap-ref-32 sap head)) +(stream::def-ef-macro ef-cin (extfmt lisp stream::+ef-max+ stream::+ef-cin+) + `(lambda (stream) + (declare (type fd-stream stream) + (optimize (speed 3) (space 0) (debug 0) (safety 0))) + (catch 'eof-input-catcher + (let* ((head (fd-stream-ibuf-head stream)) + (ch (stream::octets-to-char ,extfmt + (fd-stream-oc-state stream) + (fd-stream-last-char-read-size stream) + ;;@@ Note: need proper EOF handling... + (progn + (when (= head + (fd-stream-ibuf-tail + stream)) + (let ((sofar (- head (fd-stream-ibuf-head stream)))) + (do-input stream) + (setf head + (+ (fd-stream-ibuf-head stream) + sofar)))) + (bref (fd-stream-ibuf-sap stream) + (1- (incf head)))) + (lambda (n) (decf head n))))) + (declare (type index head)) + (when ch + (incf (fd-stream-ibuf-head stream) + (fd-stream-last-char-read-size stream)) + ch))))) + +#+(or) +(stream::def-ef-macro ef-sin (extfmt lisp stream::+ef-max+ stream::+ef-sin+) + `(lambda (stream string char start end) + (declare (type fd-stream stream) + (type simple-string string) + (type (or character null) char) + (type index start end) + (optimize (speed 3) (space 0) (debug 0) (safety 0))) + (let ((sap (fd-stream-ibuf-sap stream)) + (head (fd-stream-ibuf-head stream)) + (tail (fd-stream-ibuf-tail stream)) + (curr start)) + (declare (type sys:system-area-pointer sap) + (type index head tail curr)) + (loop + ;;@@ Fix EOF handling + (let* ((sz 0) + (ch (catch 'eof-input-catcher + (stream::octets-to-char ,extfmt + (fd-stream-oc-state stream) + sz + (progn + (when (= head tail) + (do-input stream) + (setq head + (fd-stream-ibuf-head + stream) + tail + (fd-stream-ibuf-tail + stream))) + (bref sap (1- (incf head)))) + (lambda (n) (decf head n)))))) + (declare (type index sz) + (type (or null character) ch)) + (when (null ch) + (return (values (- curr start) :eof))) + (setf (fd-stream-last-char-read-size stream) sz) + (incf (fd-stream-ibuf-head stream) sz) + (when (and char (char= ch char)) + (return (values (- curr start) t))) + (setf (schar string (1- (incf curr))) ch) + (when (= curr end) + (return (values (- curr start) nil)))))))) + ;;; PICK-INPUT-ROUTINE -- internal ;;; ;;; Find an input routine to use given the type. Return as multiple values @@ -930,7 +1141,7 @@ ;;; FD-STREAM-READ-N-BYTES -- internal ;;; ;;; The N-Bin method for FD-STREAMs. This doesn't use the SERVER; it blocks -;;; in UNIX-READ. This allows the method to be used to implementing reading +;;; in UNIX-READ. This allows the method to be used to implement reading ;;; for CLX. It is generally used where there is a definite amount of reading ;;; to be done, so blocking isn't too problematical. ;;; @@ -957,7 +1168,7 @@ ;; ;; If something has been unread, put that at buffer + start, ;; and read the rest to start + 1. - (when (fd-stream-unread stream) + (when (fd-stream-unread stream) ;;@@ (etypecase buffer (system-area-pointer (assert (= 1 (fd-stream-element-size stream))) @@ -1087,6 +1298,10 @@ (when (fd-stream-ibuf-sap stream) (push (fd-stream-ibuf-sap stream) *available-buffers*) (setf (fd-stream-ibuf-sap stream) nil)) + + #+unicode + (when (null (fd-stream-external-format stream)) + (setf (fd-stream-external-format stream) :default)) (when input-p (multiple-value-bind @@ -1144,13 +1359,18 @@ #'ill-out) (fd-stream-bout stream) routine)) (setf (fd-stream-sout stream) - (if (eql size 1) #'fd-sout #'ill-out)) + ;;#-unicode + (if (eql size 1) #'fd-sout #'ill-out) + #|#+unicode + (if (eql size 1) + #'fd-sout-each-character + #'ill-out)|#) (setf (fd-stream-char-pos stream) 0) (setf output-size size) (setf output-type type))) (when (and input-size output-size - (not (eq input-size output-size))) + (not (eql input-size output-size))) (error "Element sizes for input (~S:~S) and output (~S:~S) differ?" input-type input-size output-type output-size)) @@ -1223,7 +1443,24 @@ 0 0)) 1)))) (:unread + #-unicode (setf (fd-stream-unread stream) arg1) + #+unicode + (if (zerop (fd-stream-last-char-read-size stream)) + (setf (fd-stream-unread stream) arg1) + (decf (fd-stream-ibuf-head stream) + (fd-stream-last-char-read-size stream))) + ;; Paul says: + ;; + ;; Not needed for unicode when unreading is implemented by backing up in + ;; the buffer (e.g., with last-char-read-size...) + ;; + ;; (AFAICS there's nothing wrong with setting it there, but it + ;; screws up read-interactive in my toplevel command thing - + ;; leaves it expecting to read arguments when it shouldn't, + ;; because LISTEN returns T when there's no input pending, but I + ;; don't understand why...) + #-unicode (setf (fd-stream-listen stream) t)) (:close (cond (arg1 @@ -1250,7 +1487,8 @@ (setf (fd-stream-ibuf-sap stream) nil)) (lisp::set-closed-flame stream)) (:clear-input - (setf (fd-stream-unread stream) nil) + (setf (fd-stream-unread stream) nil) ;;@@ + #+unicode (setf (fd-stream-last-char-read-size stream) 0) (setf (fd-stream-ibuf-head stream) 0) (setf (fd-stream-ibuf-tail stream) 0) (catch 'eof-input-catcher @@ -1337,7 +1575,7 @@ ;; unread stuff is still available. (decf posn (- (fd-stream-ibuf-tail stream) (fd-stream-ibuf-head stream))) - (when (fd-stream-unread stream) + (when (fd-stream-unread stream) ;;@@ (decf posn)) ;; Divide bytes by element size. (truncate posn (fd-stream-element-size stream))) @@ -1360,7 +1598,8 @@ (system:serve-all-events)) ;; Clear out any pending input to force the next read to go to the ;; disk. - (setf (fd-stream-unread stream) nil) + (setf (fd-stream-unread stream) nil) ;;@@ + #+unicode (setf (fd-stream-last-char-read-size stream) 0) (setf (fd-stream-ibuf-head stream) 0) (setf (fd-stream-ibuf-tail stream) 0) ;; Trash cached value for listen, so that we check next time. @@ -1413,6 +1652,7 @@ (format nil "file ~S" file) (format nil "descriptor ~D" fd))) auto-close + (external-format :default) binary-stream-p) (declare (type index fd) (type (or index null) timeout) (type (member :none :line :full) buffering)) @@ -1449,6 +1689,9 @@ :timeout timeout)))) (set-routines stream element-type input output input-buffer-p :binary-stream-p binary-stream-p) + ;;#-unicode-bootstrap ; fails in stream-reinit otherwise + #+(and unicode (not unicode-bootstrap)) + (setf (stream-external-format stream) external-format) (when (and auto-close (fboundp 'finalize)) (finalize stream #'(lambda () @@ -1721,8 +1964,7 @@ (type (member :input :output :io :probe) direction) (type (member :error :new-version :rename :rename-and-delete :overwrite :append :supersede nil) if-exists) - (type (member :error :create nil) if-does-not-exist) - (ignore external-format)) + (type (member :error :create nil) if-does-not-exist)) (multiple-value-bind (fd namestring original delete-original) (fd-open pathname direction if-exists if-exists-given if-does-not-exist if-does-not-exist-given) @@ -1741,6 +1983,7 @@ :pathname pathname :input-buffer-p t :auto-close t + :external-format external-format :binary-stream-p class)) (:probe (let ((stream (%make-fd-stream :name namestring :fd fd @@ -1772,9 +2015,9 @@ :if-exists - one of :error, :new-version, :rename, :rename-and-delete, :overwrite, :append, :supersede or nil :if-does-not-exist - one of :error, :create or nil - :external-format - :default + :external-format - an external format name See the manual for details." - (declare (ignore external-format input-handle output-handle)) + (declare (ignore element-type external-format input-handle output-handle)) ;; OPEN signals a file-error if the filename is wild. (when (wild-pathname-p filename) diff --git a/code/filesys.lisp b/code/filesys.lisp index ce2bc3f37..590c7995c 100644 --- a/code/filesys.lisp +++ b/code/filesys.lisp @@ -6,7 +6,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/filesys.lisp,v 1.106 2008/06/19 21:28:51 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/filesys.lisp,v 1.107 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -405,6 +405,10 @@ ;; this host designator needs to be recognized as a physical host in ;; PARSE-NAMESTRING. Until sbcl-0.7.3.x, we had "Unix" here, but ;; that's a valid Logical Hostname, so that's a bad choice. -- CSR, + ;; + ;; No it isn't - in fact, I'm pretty sure "" is illegal here (and if + ;; it isn't, it should be - it ought to mean "the default host", from + ;; *default-pathname-defaults*) -- P. Foley "") (defun unparse-unix-piece (thing) @@ -1374,20 +1378,18 @@ optionally keeping some of the most recent old versions." ;;; Default-Directory -- Public ;;; -#+ (and) (defun default-directory () "Returns the pathname for the default directory. This is the place where a file will be written if no directory is specified. This may be changed with setf." (multiple-value-bind (gr dir-or-error) - (unix:unix-current-directory) + (unix:unix-current-directory) (if gr (let ((*ignore-wildcards* t)) (values (parse-namestring (concatenate 'simple-string dir-or-error "/") *unix-host*))) (error dir-or-error)))) - ;;; ;;; XXXX This code was modified by me (fmg) to avoid calling ;;; concatenate. The reason for this is that there have been diff --git a/code/foreign.lisp b/code/foreign.lisp index 56b6088f9..702e49b9c 100644 --- a/code/foreign.lisp +++ b/code/foreign.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/foreign.lisp,v 1.55 2008/09/07 00:46:18 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/foreign.lisp,v 1.56 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -837,8 +837,8 @@ the starting place for defined symbols. The default is the C start up code for Lisp. The ENV argument is the Unix environment variable definitions for the invocation of the linker. The default is the environment passed to Lisp." - ;; Note: dlopen remembers the name of an object, when dlopenin - ;; the same name twice, the old objects is reused. + ;; Note: dlopen remembers the name of an object, when dlopen()ing + ;; the same name twice, the old object is reused. (declare (ignore base-file)) ;; if passed a single shared object that can be loaded directly via ;; dlopen(), do that instead of using the linker @@ -900,11 +900,12 @@ environment passed to Lisp." "--no-whole-archive" #+solaris "-z" #+solaris "defaultextract") libraries)) - ;; on Linux/AMD64, we need to tell the platform linker to use the 32-bit - ;; linking mode instead of the default 64-bit mode. This can be done either - ;; via the LDEMULATION environment variable, or via the "-m" command-line - ;; option. Here we assume that LDEMULATION will be ignored by the platform - ;; linker on Linux/i386 platforms. + ;; on Linux/AMD64, we need to tell the platform linker to use + ;; the 32-bit linking mode instead of the default 64-bit mode. + ;; This can be done either via the LDEMULATION environment + ;; variable, or via the "-m" command-line option. Here we + ;; assume that LDEMULATION will be ignored by the platform + ;; linker on Linux/i386 platforms. :env `(#+(and x86 linux) (:ldemulation . "elf_i386") ,@env) :input nil :output error-output diff --git a/code/format-time.lisp b/code/format-time.lisp index dfd0b188b..da70b4014 100644 --- a/code/format-time.lisp +++ b/code/format-time.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/format-time.lisp,v 1.8 2001/12/06 23:39:35 pmai Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/format-time.lisp,v 1.9 2009/06/11 16:03:57 rtoy Rel $") ;;; ;;; ********************************************************************** @@ -251,5 +251,3 @@ :timezone timezone :style style :date-first date-first :print-seconds print-seconds :print-meridian print-meridian :print-timezone print-timezone :print-weekday print-weekday)) - - diff --git a/code/format.lisp b/code/format.lisp index a7b2f190c..893b97cdb 100644 --- a/code/format.lisp +++ b/code/format.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/format.lisp,v 1.91 2008/12/21 15:41:16 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/format.lisp,v 1.92 2009/06/11 16:03:57 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -734,10 +734,11 @@ (prin1 (next-arg) stream) (write-char (next-arg) stream))))) +#-unicode (defun format-print-named-character (char stream) (let* ((name (char-name char))) (cond (name - (write-string (string-capitalize name) stream)) + (write-string name stream)) ((<= 0 (char-code char) 31) ;; Print control characters as "^"<char> (write-char #\^ stream) @@ -745,6 +746,16 @@ (t (write-char char stream))))) +#+unicode +(defun format-print-named-character (char stream) + (cond ((and (graphic-char-p char) + (char/= char #\space)) + ;; Graphic characters (except space) print the same as ~C. + (write-char char stream)) + (t + (let* ((name (char-name char))) + (write-string name stream))))) + (def-format-directive #\W (colonp atsignp params) (expand-bind-defaults () params (if (or colonp atsignp) diff --git a/code/hash-new.lisp b/code/hash-new.lisp index 739f4e556..f5a366f52 100644 --- a/code/hash-new.lisp +++ b/code/hash-new.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/hash-new.lisp,v 1.48 2009/03/27 16:03:15 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/hash-new.lisp,v 1.49 2009/06/11 16:03:57 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -54,7 +54,7 @@ (hash-fun (required-argument) :type function :read-only t) ;; ;; How much to grow the hash table by when it fills up. If an index, then - ;; add that amount. If a floating point number, then multiple it by that. + ;; add that amount. If a floating point number, then multiply it by that. (rehash-size (required-argument) :type (or index (single-float (1.0))) :read-only t) ;; @@ -108,7 +108,7 @@ ;; This table parallels the KV table, and can be used to store the ;; hash associated with the key, saving recalculation. Could be ;; useful for EQL, and EQUAL hash tables. This table is not needed - ;; for EQ hash tables (an is NIL in that case), and when present the + ;; for EQ hash tables (and is NIL in that case), and when present the ;; value of #x8000000 represents EQ-based hashing on the respective ;; Key. (hash-vector nil :type (or null (simple-array (unsigned-byte 32) (*)))) @@ -223,7 +223,7 @@ CMUCL Extension: :WEAK-P -- Weak hash table. Can only be used when the key is 'eq or 'eql. An entry in the table is remains if the condition holds: - + :KEY -- key is referenced elsewhere :VALUE -- value is referenced elsewhere :KEY-AND-VALUE -- key and value are referenced elsewhere diff --git a/code/hash.lisp b/code/hash.lisp index 91542af06..a3e28e568 100644 --- a/code/hash.lisp +++ b/code/hash.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/hash.lisp,v 1.43 2003/06/18 09:23:11 gerd Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/hash.lisp,v 1.44 2009/06/11 16:03:58 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -51,7 +51,7 @@ (hash-fun (required-argument) :type function :read-only t) ;; ;; How much to grow the hash table by when it fills up. If an index, then - ;; add that amount. If a floating point number, then multiple it by that. + ;; add that amount. If a floating point number, then multiply it by that. (rehash-size (required-argument) :type (or index (single-float (1.0))) :read-only t) ;; diff --git a/code/internet.lisp b/code/internet.lisp index cd5ba138d..3d9f8e970 100644 --- a/code/internet.lisp +++ b/code/internet.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/internet.lisp,v 1.56 2008/07/31 17:12:34 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/internet.lisp,v 1.57 2009/06/11 16:03:58 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -275,11 +275,20 @@ struct in_addr { (let ((socket (create-unix-socket kind))) (with-alien ((sockaddr unix-sockaddr)) (setf (slot sockaddr 'family) af-unix) + #-unicode (kernel:copy-to-system-area path (* vm:vector-data-offset vm:word-bits) (alien-sap (slot sockaddr 'path)) 0 (* (1+ (length path)) vm:byte-bits)) + #+unicode + (let ((sap (alien-sap (slot sockaddr 'path))) + (len (length path))) + ;; FIXME: What should we do about this for unicode? + (dotimes (k len) + (setf (sap-ref-8 sap k) (logand #xff (char-code (aref path k))))) + (setf (sap-ref-8 sap len) 0)) + (when (minusp (unix:unix-connect socket (alien-sap sockaddr) (alien-size unix-sockaddr :bytes))) @@ -296,11 +305,20 @@ struct in_addr { (let ((socket (create-unix-socket kind))) (with-alien ((sockaddr unix-sockaddr)) ;; I'm here (MSM) (setf (slot sockaddr 'family) af-unix) + #-unicode (kernel:copy-to-system-area path (* vm:vector-data-offset vm:word-bits) (alien-sap (slot sockaddr 'path)) 0 (* (1+ (length path)) vm:byte-bits)) + #+unicode + (let ((sap (alien-sap (slot sockaddr 'path))) + (len (length path))) + ;; FIXME: What should we do about this for unicode? + (dotimes (k len) + (setf (sap-ref-8 sap k) (logand #xff (char-code (aref path k))))) + (setf (sap-ref-8 sap len) 0)) + (when (minusp (unix:unix-bind socket (alien-sap sockaddr) (+ (alien-size inet-sockaddr :bytes) @@ -772,7 +790,8 @@ can of course be negative, to indicate faults." ;;; OPEN-NETWORK-STREAM -- public ;;; ;;; Returns a stream connected to the specified Port on the given Host. -(defun open-network-stream (host port &key (buffering :line) timeout) +(defun open-network-stream (host port &key (buffering :line) timeout + (external-format '(:latin-1 :crlf))) "Return a network stream. HOST may be an address string or an integer IP address." (let (hostent hostaddr) @@ -808,13 +827,15 @@ IP address." socket)) :input t :output t :buffering buffering :timeout timeout :name (format nil "network connection to ~A" hostaddr) + :external-format external-format :auto-close t))) ;;; ACCEPT-NETWORK-STREAM -- public ;;; ;;; Accept a connection from the specified Socket and returns a ;;; stream connected to that connection. -(defun accept-network-stream (socket &key (buffering :line) timeout wait-max) +(defun accept-network-stream (socket &key (buffering :line) timeout wait-max + (external-format '(:latin-1 :crlf))) (declare (fixnum socket)) (when #+MP (mp:process-wait-until-fd-usable socket :input wait-max) #-MP (sys:wait-until-fd-usable socket :input wait-max) @@ -834,4 +855,5 @@ IP address." (ldb (byte 8 8) host) (ldb (byte 8 0) host) port)) + :external-format external-format :auto-close t))))) diff --git a/code/linux-os.lisp b/code/linux-os.lisp index 75b7146ad..a51fa904c 100644 --- a/code/linux-os.lisp +++ b/code/linux-os.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/linux-os.lisp,v 1.7 2009/03/25 15:28:03 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/linux-os.lisp,v 1.8 2009/06/11 16:03:58 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -37,7 +37,6 @@ (concatenate 'string release " " version))) - ;;; OS-Init initializes our operating-system interface. ;;; (defun os-init () nil) diff --git a/code/lispinit.lisp b/code/lispinit.lisp index b8f5c5fe3..d4dd494a4 100644 --- a/code/lispinit.lisp +++ b/code/lispinit.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/lispinit.lisp,v 1.78 2007/11/14 10:04:33 cshapiro Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/lispinit.lisp,v 1.79 2009/06/11 16:03:58 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -68,10 +68,11 @@ #+x86 *pseudo-atomic-interrupted* unix::*interrupts-enabled* unix::*interrupt-pending* - *type-system-initialized*) + *type-system-initialized* + unix::*filename-encoding*) #+gengc (special *gc-verbose* *before-gc-hooks* *after-gc-hooks* - *type-system-initialized*)) + *type-system-initialized* unix::*filename-encoding*)) ;;;; Random magic specials. @@ -336,6 +337,7 @@ #-gengc (setf unix::*interrupt-pending* nil) (setf *type-system-initialized* nil) (setf *break-on-signals* nil) + (setf unix::*filename-encoding* nil) #+gengc (setf conditions::*handler-clusters* nil) ;; Many top-level forms call INFO, (SETF INFO). @@ -351,7 +353,9 @@ (let ((funs (nreverse *lisp-initialization-functions*))) (%primitive print "Calling top-level forms.") - (dolist (fun funs) #+nil (%primitive print (hexstr fun)) + #+nil (%primitive print (length funs)) + (dolist (fun funs) + #+nil (%primitive print fun) (typecase fun (function (funcall fun)) @@ -418,11 +422,10 @@ (terpri) (princ "[You are in the LISP package.]") (terpri) - (let ((wot - (catch '%end-of-the-world - (loop - (%top-level) - (write-line "You're certainly a clever child."))))) + (let ((wot (catch '%end-of-the-world + (loop + (%top-level) + (write-line "You're certainly a clever child."))))) (unix:unix-exit wot))) #+gengc diff --git a/code/load.lisp b/code/load.lisp index a7b21346f..f358c6c92 100644 --- a/code/load.lisp +++ b/code/load.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/load.lisp,v 1.92 2007/05/25 18:21:20 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/load.lisp,v 1.93 2009/06/11 16:03:58 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -95,7 +95,7 @@ ;;; LOAD-FRESH-LINE -- internal. ;;; -;;; Output the corrent number of semicolons after a fresh-line. +;;; Output the current number of semicolons after a fresh-line. ;;; (defconstant semicolons ";;;;;;;;;;;;;;;;") ;;; @@ -316,6 +316,7 @@ (prog1 (fast-read-u-integer ,n) (done-with-fast-read-byte))))) + ;;; Fasload: @@ -526,8 +527,7 @@ keyword affects nested loads. The variables EXT:*LOAD-SOURCE-TYPES*, EXT:*LOAD-OBJECT-TYPES*, and EXT:*LOAD-LP-OBJECT-TYPES* determine the file types that we use for defaulting when none is specified." - (declare (type (or null (member :source :binary)) contents) - (ignore external-format)) + (declare (type (or null (member :source :binary)) contents)) (collect ((vars) (vals)) (macrolet ((frob (wot) @@ -547,7 +547,7 @@ (*readtable* *readtable*) (*enable-package-locked-errors* *enable-package-locked-errors*) (*load-depth* (1+ *load-depth*))) - (values + (values (with-simple-restart (continue "Return NIL from load of ~S." filename) (if (streamp filename) (if (or (eq contents :binary) @@ -560,19 +560,22 @@ *default-pathname-defaults* nil))) (if (wild-pathname-p pn) (dolist (file (directory pn) t) - (internal-load pn file if-does-not-exist contents)) + (internal-load pn file if-does-not-exist contents + external-format)) (let ((tn (probe-file pn))) (if (or tn (pathname-type pn) contents) - (internal-load pn tn if-does-not-exist contents) + (internal-load pn tn if-does-not-exist contents + external-format) (internal-load-default-type - pn if-does-not-exist)))))))))))) + pn if-does-not-exist external-format)))))))))))) ;;; INTERNAL-LOAD -- Internal ;;; ;;; Load the stuff in a file when we have got the name. ;;; -(defun internal-load (pathname truename if-does-not-exist contents) +(defun internal-load (pathname truename if-does-not-exist contents + external-format) (unless truename (return-from internal-load @@ -594,7 +597,7 @@ (*load-pathname* pathname)) (case contents (:source - (with-open-file (file truename + (with-open-file (file truename :external-format external-format :direction :input :if-does-not-exist if-does-not-exist) (sloload file))) @@ -605,13 +608,14 @@ :element-type '(unsigned-byte 8)) (fasload file))) (t - (let ((first-line (with-open-file (file truename :direction :input) + (let ((first-line (with-open-file (file truename :direction :input + :external-format :iso8859-1) (read-line file nil)))) (cond ((and first-line (>= (length (the simple-string first-line)) 9) (string= first-line "FASL FILE" :end1 9)) - (internal-load pathname truename if-does-not-exist :binary)) + (internal-load pathname truename if-does-not-exist :binary :void)) (t (when (member (pathname-type truename) *load-object-types* :test #'string=) @@ -619,7 +623,8 @@ "Load it as a source file." "File has a fasl file type, but no fasl file header:~% ~S" (namestring truename))) - (internal-load pathname truename if-does-not-exist :source)))))))) + (internal-load pathname truename if-does-not-exist :source + external-format)))))))) ;;; TRY-DEFAULT-TYPES -- Internal @@ -641,12 +646,10 @@ ;;; ;;; Handle the case of INTERNAL-LOAD where the file does not exist. ;;; -(defun internal-load-default-type (pathname if-does-not-exist) - (multiple-value-bind - (src-pn src-tn) +(defun internal-load-default-type (pathname if-does-not-exist external-format) + (multiple-value-bind (src-pn src-tn) (try-default-types pathname *load-source-types* '("LISP")) - (multiple-value-bind - (obj-pn obj-tn) + (multiple-value-bind (obj-pn obj-tn) (try-default-types pathname *load-object-types* *load-lp-object-types*) (cond ((and obj-tn src-tn @@ -656,32 +659,36 @@ (warn "Loading object file ~A,~@ which is older than the presumed source:~% ~A." (namestring obj-tn) (namestring src-tn)) - (internal-load obj-pn obj-tn if-does-not-exist :binary)) + (internal-load obj-pn obj-tn if-does-not-exist :binary :void)) (:load-source (warn "Loading source file ~A,~@ which is newer than the presumed object file:~% ~A." (namestring src-tn) (namestring obj-tn)) - (internal-load src-pn src-tn if-does-not-exist :source)) + (internal-load src-pn src-tn if-does-not-exist :source + external-format)) (:compile (let ((obj-tn (compile-file src-pn))) (unless obj-tn (error "Compile of source failed, cannot load object.")) - (internal-load src-pn obj-tn :error :binary))) + (internal-load src-pn obj-tn :error :binary :void))) (:query (restart-case (error "Object file ~A is~@ older than the presumed source:~% ~A." (namestring obj-tn) (namestring src-tn)) (continue () :report "load source file" - (internal-load src-pn src-tn if-does-not-exist :source)) + (internal-load src-pn src-tn if-does-not-exist :source + external-format)) (load-object () :report "load object file" - (internal-load src-pn obj-tn if-does-not-exist :binary)))))) + (internal-load src-pn obj-tn if-does-not-exist :binary + :void)))))) (obj-tn - (internal-load obj-pn obj-tn if-does-not-exist :binary)) + (internal-load obj-pn obj-tn if-does-not-exist :binary :void)) (src-pn - (internal-load src-pn src-tn if-does-not-exist :source)) + (internal-load src-pn src-tn if-does-not-exist :source + external-format)) (t - (internal-load pathname nil if-does-not-exist nil)))))) + (internal-load pathname nil if-does-not-exist nil external-format)))))) ;;;; Actual FOP definitions: @@ -697,11 +704,20 @@ (define-fop (fop-misc-trap 66) (%primitive make-other-immediate-type 0 vm:unbound-marker-type)) +;; Not used? (define-fop (fop-character 68) (code-char (read-arg 3))) + +#-unicode (define-fop (fop-short-character 69) (code-char (read-arg 1))) +#+unicode +(define-fop (fop-short-character 69) + ;; Characters are always little-endian + (code-char (+ (read-arg 1) + (ash (read-arg 1) 8)))) + (clone-fop (fop-struct 48) (fop-small-struct 49) (let* ((size (clone-arg)) @@ -746,9 +762,10 @@ (declaim (type index *load-symbol-buffer-size*)) (macrolet ((frob (name code name-size package) - (let ((n-package (gensym)) - (n-size (gensym)) - (n-buffer (gensym))) + (let ((n-package (gensym "PACKAGE-")) + (n-size (gensym "SIZE-")) + (n-buffer (gensym "BUFFER-")) + (k (gensym "IDX-"))) `(define-fop (,name ,code) (prepare-for-fast-read-byte *fasl-file* (let ((,n-package ,package) @@ -759,7 +776,8 @@ (* ,n-size 2))))) (done-with-fast-read-byte) (let ((,n-buffer *load-symbol-buffer*)) - (read-n-bytes *fasl-file* ,n-buffer 0 ,n-size) + (read-n-bytes *fasl-file* ,n-buffer 0 + (* vm:char-bytes ,n-size)) (push-table (intern* ,n-buffer ,n-size ,n-package))))))))) (frob fop-symbol-save 6 4 *package*) (frob fop-small-symbol-save 7 1 *package*) @@ -781,7 +799,8 @@ (fop-uninterned-small-symbol-save 13) (let* ((arg (clone-arg)) (res (make-string arg))) - (read-n-bytes *fasl-file* res 0 arg) + (read-n-bytes *fasl-file* res 0 + (* vm:char-bytes arg)) (push-table (make-symbol res)))) (define-fop (fop-package 14) @@ -966,7 +985,8 @@ (fop-small-string 38) (let* ((arg (clone-arg)) (res (make-string arg))) - (read-n-bytes *fasl-file* res 0 arg) + (read-n-bytes *fasl-file* res 0 + (* vm:char-bytes arg)) res)) (clone-fop (fop-vector 39) @@ -1432,7 +1452,9 @@ (code-object (pop-stack)) (len (read-arg 1)) (sym (make-string len))) - (read-n-bytes *fasl-file* sym 0 len) + (read-n-bytes *fasl-file* sym 0 + (* vm:char-bytes len)) + (vm:fixup-code-object code-object (read-arg 4) (foreign-symbol-address-aux sym :code) kind) @@ -1443,7 +1465,9 @@ (code-object (pop-stack)) (len (read-arg 1)) (sym (make-string len))) - (read-n-bytes *fasl-file* sym 0 len) + (read-n-bytes *fasl-file* sym 0 + (* vm:char-bytes len)) + (vm:fixup-code-object code-object (read-arg 4) (foreign-symbol-address-aux sym :data) kind) diff --git a/code/misc.lisp b/code/misc.lisp index 1baf28288..2a0bafd50 100644 --- a/code/misc.lisp +++ b/code/misc.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/misc.lisp,v 1.36 2007/08/03 14:29:17 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/misc.lisp,v 1.37 2009/06/11 16:03:58 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -136,6 +136,9 @@ #+complex-fp-vops (sys:register-lisp-feature :complex-fp-vops) +#+unicode +(sys:register-lisp-runtime-feature :unicode) + (defun featurep (x) "If X is an atom, see if it is present in *FEATURES*. Also handle arbitrary combinations of atoms using NOT, AND, OR." diff --git a/code/package.lisp b/code/package.lisp index 6f72ee990..bcc85d5cd 100644 --- a/code/package.lisp +++ b/code/package.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/package.lisp,v 1.75 2006/05/11 17:07:22 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/package.lisp,v 1.76 2009/06/11 16:03:58 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -225,8 +225,7 @@ (defun stringify-name (name kind) (typecase name - (simple-string name) - (string (coerce name 'simple-string)) + (string (string-to-nfc name)) (symbol (symbol-name name)) (base-char (let ((res (make-string 1))) @@ -1275,7 +1274,7 @@ ;;; (defun intern (name &optional package) "Returns a symbol having the specified name, creating it if necessary." - (let ((name (if (simple-string-p name) name (coerce name 'simple-string))) + (let ((name (string-to-nfc name)) (package (if package (package-or-lose package) *package*))) (declare (type simple-string name)) (intern* name (length name) package))) @@ -1289,7 +1288,7 @@ then the second value is :internal, :external or :inherited to indicate how the symbol is accessible. If no symbol is found then both values are NIL." - (let ((name (if (simple-string-p name) name (coerce name 'simple-string)))) + (let ((name (string-to-nfc name))) (declare (simple-string name)) (find-symbol* name (length name) (if package (package-or-lose package) *package*)))) @@ -1876,7 +1875,7 @@ If PACKAGE is supplied then only use symbols present in that package. If EXTERNAL-ONLY is true then only use symbols exported from the specified package." - (let ((string (string-upcase string))) + (let ((string (nstring-upcase (string-to-nfc (string string))))) (declare (simple-string string)) (flet ((apropos-in-package (package) (if external-only diff --git a/code/print.lisp b/code/print.lisp index 5f3b1b2c4..2c491aa50 100644 --- a/code/print.lisp +++ b/code/print.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/print.lisp,v 1.123 2008/12/21 15:41:16 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/print.lisp,v 1.124 2009/06/11 16:03:58 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -749,6 +749,7 @@ (defconstant dot-attribute (ash 1 6)) ; . (defconstant slash-attribute (ash 1 7)) ; / (defconstant funny-attribute (ash 1 8)) ; Anything illegal. +(defconstant othercase-attribute (ash 1 9)) ; A letter that has no case. ;;; LETTER-ATTRIBUTE is a local of SYMBOL-QUOTEP. It matches letters that ;;; don't need to be escaped (according to READTABLE-CASE.) @@ -758,7 +759,8 @@ (uppercase . uppercase-attribute) (letter . letter-attribute) (sign . sign-attribute) (extension . extension-attribute) (dot . dot-attribute) (slash . slash-attribute) - (other . other-attribute) (funny . funny-attribute))) + (other . other-attribute) (funny . funny-attribute) + #+unicode (othercase . othercase-attribute))) ); Eval-When (compile load eval) @@ -788,8 +790,9 @@ (set-bit #\. dot-attribute) (set-bit #\/ slash-attribute) - ;; Make anything not explicitly allowed funny... - (dotimes (i char-code-limit) + ;; We only initialize the things for 8-bit characters here. The + ;; full set is initialized later by REINIT-CHAR-ATTRIBUTES, below + (dotimes (i 256) (when (zerop (aref character-attributes i)) (setf (aref character-attributes i) funny-attribute)))) @@ -843,8 +846,8 @@ (base *print-base*) (letter-attribute (case (readtable-case *readtable*) - (:upcase uppercase-attribute) - (:downcase lowercase-attribute) + (:upcase (logior uppercase-attribute #+unicode othercase-attribute)) + (:downcase (logior lowercase-attribute #+unicode othercase-attribute)) (t (logior lowercase-attribute uppercase-attribute)))) (index 0) (bits 0) @@ -858,6 +861,7 @@ OTHER ; Not potential number, see if funny chars... (let ((mask (logxor (logior lowercase-attribute uppercase-attribute + #+unicode othercase-attribute funny-attribute) letter-attribute))) (do ((i (1- index) (1+ i))) @@ -2150,3 +2154,56 @@ radix-R. If you have a power-list then pass it in as PL." (write-string ", type=" stream) (let ((*print-base* 16) (*print-radix* t)) (output-integer (get-type object) stream))))))))) + + +;;; Function to initialize character-attributes. The full utf-16 set +;;; is initialized. +#+unicode +(defun reinit-char-attributes () + (unless (probe-file +unidata-path+) + (cerror "Continue anyway" "Cannot find ~S, so unicode support is not available" + +unidata-path+) + (return-from reinit-char-attributes nil)) + (flet ((set-bit (char bit) + (let ((code (char-code char))) + (setf (aref character-attributes code) + (logior bit (aref character-attributes code)))))) + + (fill character-attributes 0) + (dolist (char '(#\! #\@ #\$ #\% #\& #\* #\= #\~ #\[ #\] #\{ #\} + #\? #\< #\>)) + (set-bit char other-attribute)) + + (dotimes (i 10) + (set-bit (digit-char i) number-attribute)) + + (do ((code (char-code #\A) (1+ code)) + (end (char-code #\Z))) + ((> code end)) + (declare (fixnum code end)) + (set-bit (code-char code) uppercase-attribute) + (set-bit (char-downcase (code-char code)) lowercase-attribute)) + + (set-bit #\- sign-attribute) + (set-bit #\+ sign-attribute) + (set-bit #\^ extension-attribute) + (set-bit #\_ extension-attribute) + (set-bit #\. dot-attribute) + (set-bit #\/ slash-attribute) + + ;; Make anything not explicitly allowed funny... + (dotimes (i char-code-limit) + (when (zerop (aref character-attributes i)) + (let* ((char (code-char i))) + ;; What about surrogate pairs? What should we do about them? + (cond ((upper-case-p char) + (set-bit char uppercase-attribute)) + ((lower-case-p char) + (set-bit char lowercase-attribute)) + ((= (unicode-category i) +unicode-category-other+) + (set-bit char othercase-attribute)) + (t + (setf (aref character-attributes i) funny-attribute)))))))) + +#+unicode +(pushnew #'reinit-char-attributes ext:*after-save-initializations*) diff --git a/code/reader.lisp b/code/reader.lisp index 3d925c754..4192de4f3 100644 --- a/code/reader.lisp +++ b/code/reader.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/reader.lisp,v 1.62 2007/06/22 21:45:25 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/reader.lisp,v 1.63 2009/06/11 16:03:59 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -94,8 +94,14 @@ "Standard lisp readtable. This is for recovery from broken read-tables, and should not normally be user-visible.") +;; Max size of the attribute table before we switch from an array to a +;; hash-table. +(defconstant attribute-table-limit + #-unicode char-code-limit + #+unicode 256) + (deftype attribute-table () - '(simple-array (unsigned-byte 8) (#.char-code-limit))) + '(simple-array (unsigned-byte 8) (#.attribute-table-limit))) (defstruct (readtable (:conc-name nil) @@ -108,7 +114,7 @@ (prin1 'readtable stream))))) "Readtable is a data structure that maps characters into syntax types for the Common Lisp expression reader." - ;; The CHARACTER-ATTRIBUTE-TABLE is a vector of CHAR-CODE-LIMIT integers for + ;; The CHARACTER-ATTRIBUTE-TABLE is a vector of ATTRIBUTE-TABLE-LIMIT integers for ;; describing the character type. Conceptually, there are 4 distinct ;; "primary" character attributes: WHITESPACE, TERMINATING-MACRO, ESCAPE, and ;; CONSTITUENT. Non-terminating macros (such as the symbol reader) have the @@ -118,24 +124,39 @@ ;; stored in the character attribute table by having different varieties of ;; constituents. (character-attribute-table - (make-array char-code-limit :element-type '(unsigned-byte 8) + (make-array attribute-table-limit + :element-type '(unsigned-byte 8) :initial-element constituent) :type attribute-table) ;; - ;; The CHARACTER-MACRO-TABLE is a vector of CHAR-CODE-LIMIT functions. One + ;; The CHARACTER-MACRO-TABLE is a vector of ATTRIBUTE-TABLE-LIMIT functions. One ;; of these functions called with appropriate arguments whenever any ;; non-WHITESPACE character is encountered inside READ-PRESERVING-WHITESPACE. ;; These functions are used to implement user-defined read-macros, system ;; read-macros, and the number-symbol reader. (character-macro-table - (make-array char-code-limit :initial-element #'undefined-macro-char) - :type (simple-vector #.char-code-limit)) + (make-array attribute-table-limit :initial-element #'undefined-macro-char) + :type (simple-vector #.attribute-table-limit)) ;; ;; DISPATCH-TABLES entry, which is an alist from dispatch characters to ;; vectors of CHAR-CODE-LIMIT functions, for use in defining dispatching ;; macros (like #-macro). (dispatch-tables () :type list) - (readtable-case :upcase :type (member :upcase :downcase :preserve :invert))) + (readtable-case :upcase :type (member :upcase :downcase :preserve :invert)) + ;; + ;; The CHARACTER-ATTRIBUTE-HASH-TABLE handles the case of char codes + ;; above ATTRIBUTE-TABLE-LIMIT, since we expect these to be + ;; relatively rare. + #+unicode + (character-attribute-hash-table (make-hash-table) + :type (or null hash-table)) + ;; + ;; The CHARACTER-MACRO-HASH-TABLE handles the case of char codes + ;; above ATTRIBUTE-TABLE-LIMIT, since we expect these to be + ;; relatively rare. + #+unicode + (character-macro-hash-table (make-hash-table) + :type (or null hash-table))) ;;;; Constants for character attributes. These are all as in the manual. @@ -184,26 +205,77 @@ ;;;; Macros and functions for character tables. +#-unicode (defmacro get-cat-entry (char rt) ;;only give this side-effect-free args. `(elt (character-attribute-table ,rt) - (char-code ,char))) + (char-code ,char))) +#+unicode +(defmacro get-cat-entry (char rt) + ;;only give this side-effect-free args. + `(if (< (char-code ,char) attribute-table-limit) + (elt (character-attribute-table ,rt) + (char-code ,char)) + (gethash (char-code ,char) + (character-attribute-hash-table ,rt) + ;; Default is constituent, because the attribute table + ;; is initialized to constituent + constituent))) + +#-unicode (defun set-cat-entry (char newvalue &optional (rt *readtable*)) (setf (elt (character-attribute-table rt) (char-code char)) newvalue)) +#+unicode +(defun set-cat-entry (char newvalue &optional (rt *readtable*)) + (let ((code (char-code char))) + (if (< code attribute-table-limit) + (setf (elt (character-attribute-table rt) + code) + newvalue) + (unless (= newvalue constituent) + ;; The default value (in get-cat-entry) is constituent, so + ;; don't enter it into the hash table. + (setf (gethash code (character-attribute-hash-table rt)) + newvalue))))) + +#-unicode (defmacro get-cmt-entry (char rt) `(the function (elt (the simple-vector (character-macro-table ,rt)) (char-code ,char)))) +#+unicode +(defmacro get-cmt-entry (char rt) + `(if (< (char-code ,char) attribute-table-limit) + (the function + (elt (the simple-vector (character-macro-table ,rt)) + (char-code ,char))) + (gethash (char-code ,char) + (character-macro-hash-table ,rt) + ;; This default value needs to be coordinated with + ;; init-std-lisp-readtable. + #'read-token))) + +#-unicode (defun set-cmt-entry (char newvalue &optional (rt *readtable*)) (setf (elt (the simple-vector (character-macro-table rt)) (char-code char)) (coerce newvalue 'function))) +#+unicode +(defun set-cmt-entry (char newvalue &optional (rt *readtable*)) + (let ((code (char-code char))) + (if (< code attribute-table-limit) + (setf (elt (the simple-vector (character-macro-table rt)) + code) + (coerce newvalue 'function)) + (setf (gethash code (character-macro-hash-table rt)) + (coerce newvalue 'function))))) + (defun undefined-macro-char (stream char) (unless *read-suppress* (%reader-error stream "Undefined read-macro character ~S" char))) @@ -254,7 +326,8 @@ (defun init-secondary-attribute-table () (setq secondary-attribute-table - (make-array char-code-limit :element-type '(unsigned-byte 8) + (make-array attribute-table-limit + :element-type '(unsigned-byte 8) :initial-element #.constituent)) (set-secondary-attribute #\: #.package-delimiter) ;;(set-secondary-attribute #\| #.multiple-escape) ; |) [For EMACS] @@ -286,10 +359,96 @@ (dolist (c '(#\backspace #\tab #\page #\return #\rubout)) (set-secondary-attribute c #.constituent-invalid))) +#-unicode (defmacro get-secondary-attribute (char) `(elt secondary-attribute-table - (char-code ,char))) + (char-code ,char))) + +#+unicode +(defmacro get-secondary-attribute (char) + `(if (< (char-code ,char) attribute-table-limit) + (elt secondary-attribute-table + (char-code ,char)) + constituent)) + + +;;; Character dispatch stuff + +;; For non-unicode stuff, a simple vector of 256 elements works fine. +#-unicode +(defun make-char-dispatch-table () + (make-array attribute-table-limit :initial-element #'dispatch-char-error)) + +#-unicode +(declaim (inline copy-char-dispatch-table)) +#-unicode +(defun copy-char-dispatch-table (dispatch) + (copy-seq dispatch)) + +;; For unicode, we define a structure to hold a vector and a +;; hash-table to conserve space instead of using a huge vector. The +;; vector handles the common case for 8-bit characters, and the hash +;; table handles the rest. +#+unicode +(defstruct (char-dispatch-table + (:copier nil) + (:print-function + (lambda (s stream d) + (declare (ignore d)) + (print-unreadable-object (s stream :identity t :type t) + )))) + ;; TABLE is a vector for quick access for 8-bit characters + (table (make-array attribute-table-limit :initial-element #'dispatch-char-error) + :type (simple-vector #.attribute-table-limit)) + ;; HASH-TABLE is for handling the (presumably) rare case of dispatch + ;; characters above attribute-table-limit. + (hash-table (make-hash-table) + :type hash-table)) + +#+unicode +(defun copy-char-dispatch-table (dispatch) + ;; Make a new dispatch table and copy the contents to it + (let* ((new (make-char-dispatch-table)) + (h (char-dispatch-table-hash-table new))) + (replace (char-dispatch-table-table new) + (char-dispatch-table-table dispatch)) + (maphash #'(lambda (key val) + (setf (gethash key h) val)) + (char-dispatch-table-hash-table dispatch)) + new)) + +(declaim (inline get-dispatch-char set-dispatch-char)) + +#-unicode +(defun get-dispatch-char (char dispatch) + (elt (the simple-vector dispatch) + (char-code char))) + +#+unicode +(defun get-dispatch-char (char dispatch) + (let ((code (char-code char))) + (if (< code attribute-table-limit) + (elt (the simple-vector (char-dispatch-table-table dispatch)) + code) + (gethash char (char-dispatch-table-hash-table dispatch) + #'dispatch-char-error)))) + +#-unicode +(defun set-dispatch-char (char new-value dispatch) + (setf (elt (the simple-vector dispatch) + (char-code char)) + (coerce new-value 'function))) + +#+unicode +(defun set-dispatch-char (char new-value dispatch) + (let ((code (char-code char))) + (if (< code attribute-table-limit) + (setf (elt (the simple-vector (char-dispatch-table-table dispatch)) + (char-code char)) + (coerce new-value 'function)) + (setf (gethash char (char-dispatch-table-hash-table dispatch)) + (coerce new-value 'function))))) ;;;; Readtable operations. @@ -298,18 +457,29 @@ "A copy is made of from-readtable and place into to-readtable." (let ((from-readtable (or from-readtable std-lisp-readtable)) (to-readtable (or to-readtable (make-readtable)))) - ;;physically clobber contents of internal tables. - (replace (character-attribute-table to-readtable) - (character-attribute-table from-readtable)) - (replace (character-macro-table to-readtable) - (character-macro-table from-readtable)) - (setf (dispatch-tables to-readtable) - (mapcar #'(lambda (pair) (cons (car pair) - (copy-seq (cdr pair)))) - (dispatch-tables from-readtable))) - (setf (readtable-case to-readtable) - (readtable-case from-readtable)) - to-readtable)) + (flet ((copy-hash-table (to from) + (clrhash to) + (maphash #'(lambda (key val) + (setf (gethash key to) val)) + from))) + ;;physically clobber contents of internal tables. + (replace (character-attribute-table to-readtable) + (character-attribute-table from-readtable)) + (replace (character-macro-table to-readtable) + (character-macro-table from-readtable)) + #+unicode + (progn + (copy-hash-table (character-attribute-hash-table to-readtable) + (character-attribute-hash-table from-readtable)) + (copy-hash-table (character-macro-hash-table to-readtable) + (character-macro-hash-table from-readtable))) + (setf (dispatch-tables to-readtable) + (mapcar #'(lambda (pair) (cons (car pair) + (copy-char-dispatch-table (cdr pair)))) + (dispatch-tables from-readtable))) + (setf (readtable-case to-readtable) + (readtable-case from-readtable)) + to-readtable))) (defun set-syntax-from-char (to-char from-char &optional (to-readtable *readtable*) @@ -343,12 +513,12 @@ ;; The to-readtable already has a dispatching table for ;; this character. Replace it with a copy of the ;; dispatching table from from-readtable. - (setf (cdr to-dpair) (copy-seq (cdr from-dpair)))) + (setf (cdr to-dpair) (copy-char-dispatch-table (cdr from-dpair)))) (t ;; The to-readtable doesn't have such an entry. Add a ;; copy of dispatch table from from-readtable to the ;; dispatch table of the to-readtable. - (let ((pair (cons to-char (copy-seq (cdr from-dpair))))) + (let ((pair (cons to-char (copy-char-dispatch-table (cdr from-dpair))))) (setf (dispatch-tables to-readtable) (push pair (dispatch-tables to-readtable))))))))) t) @@ -392,26 +562,20 @@ (let ((stream (in-synonym-of stream))) (stream-dispatch stream ;; simple-stream - (do ((attribute-table (character-attribute-table *readtable*)) - (char (stream::%read-char stream t nil t t) + (do ((char (stream::%read-char stream t nil t t) (stream::%read-char stream t nil t t))) - ((/= (the fixnum (aref attribute-table (char-code char))) - #.whitespace) + ((not (test-attribute char #.whitespace *readtable*)) char)) ;; lisp-stream (prepare-for-fast-read-char stream - (do ((attribute-table (character-attribute-table *readtable*)) - (char (fast-read-char t) (fast-read-char t))) - ((/= (the fixnum (aref attribute-table (char-code char))) - #.whitespace) + (do ((char (fast-read-char t) (fast-read-char t))) + ((not (test-attribute char #.whitespace *readtable*)) (done-with-fast-read-char) char))) ;; fundamental-stream - (do ((attribute-table (character-attribute-table *readtable*)) - (char (stream-read-char stream) (stream-read-char stream))) + (do ((char (stream-read-char stream) (stream-read-char stream))) ((or (eq char :eof) - (/= (the fixnum (aref attribute-table (char-code char))) - #.whitespace)) + (not (test-attribute char #.whitespace *readtable*))) (if (eq char :eof) (error 'end-of-file :stream stream) char)))))) @@ -444,12 +608,25 @@ ;;* backquote ;;all constituents (do ((ichar 0 (1+ ichar)) - (char)) - ((= ichar #O200)) - (setq char (code-char ichar)) - (when (constituentp char std-lisp-readtable) - (set-cat-entry char (get-secondary-attribute char)) - (set-cmt-entry char #'read-token))))) + (len #+unicode-bootstrap #o200 + #-unicode-bootstrap char-code-limit)) + ((= ichar len)) + (let ((char (code-char ichar))) + #-unicode + (when (constituentp char std-lisp-readtable) + (set-cat-entry char (get-secondary-attribute char)) + (set-cmt-entry char #'read-token)) + #+unicode + (cond ((constituentp char std-lisp-readtable) + (set-cat-entry char (get-secondary-attribute char)) + (when (< ichar attribute-table-limit) + ;; The hashtable default in get-cmt-entry returns + ;; #'read-token, so don't need to set it here. + (set-cmt-entry char #'read-token))) + ((>= ichar attribute-table-limit) + ;; A non-constituent character that would be stored in + ;; the hash table gets #'undefined-macro-char. + (set-cmt-entry char #'undefined-macro-char))))))) @@ -852,8 +1029,8 @@ ;;; return the character class for a char ;;; -(defmacro char-class (char attable) - `(let ((att (aref ,attable (char-code ,char)))) +(defmacro char-class (char readtable) + `(let ((att (get-cat-entry ,char ,readtable))) (declare (fixnum att)) (cond ((<= att #.terminating-macro) #.delimiter) @@ -870,8 +1047,8 @@ ;;; return the character class for a char which might be part of a rational ;;; number ;;; -(defmacro char-class2 (char attable) - `(let ((att (aref ,attable (char-code ,char)))) +(defmacro char-class2 (char readtable) + `(let ((att (get-cat-entry ,char ,readtable))) (declare (fixnum att)) (cond ((<= att #.terminating-macro) #.delimiter) @@ -892,8 +1069,8 @@ ;;; return the character class for a char which might be part of a rational or ;;; floating number (assume that it is a digit if it could be) ;;; -(defmacro char-class3 (char attable) - `(let ((att (aref ,attable (char-code ,char)))) +(defmacro char-class3 (char readtable) + `(let ((att (get-cat-entry ,char ,readtable))) (declare (fixnum att)) (cond ((<= att #.terminating-macro) #.delimiter) @@ -990,8 +1167,7 @@ (when *read-suppress* (internal-read-extended-token stream firstchar nil) (return-from read-token nil)) - (let ((attribute-table (character-attribute-table *readtable*)) - (package-designator nil) + (let ((package-designator nil) (colons 0) (possibly-rational t) (seen-digit-or-expt nil) @@ -1001,7 +1177,7 @@ (seen-multiple-escapes nil)) (reset-read-buffer) (prog ((char firstchar)) - (case (char-class3 char attribute-table) + (case (char-class3 char *readtable*) (#.constituent-sign (go SIGN)) (#.constituent-digit (go LEFTDIGIT)) (#.constituent-digit-or-expt @@ -1021,7 +1197,7 @@ (unless char (go RETURN-SYMBOL)) (setq possibly-rational t possibly-float t) - (case (char-class3 char attribute-table) + (case (char-class3 char *readtable*) (#.constituent-digit (go LEFTDIGIT)) (#.constituent-digit-or-expt (setq seen-digit-or-expt t) @@ -1038,7 +1214,7 @@ (setq char (read-char stream nil nil)) (unless char (return (make-integer))) (setq was-possibly-float possibly-float) - (case (char-class3 char attribute-table) + (case (char-class3 char *readtable*) (#.constituent-digit (go LEFTDIGIT)) (#.constituent-decimal-digit (if possibly-float (go LEFTDECIMALDIGIT) @@ -1067,7 +1243,7 @@ (ouch-read-buffer char) (setq char (read-char stream nil nil)) (unless char (return (make-integer))) - (case (char-class3 char attribute-table) + (case (char-class3 char *readtable*) (#.constituent-digit (go LEFTDIGIT)) (#.constituent-decimal-digit (error "impossible!")) (#.constituent-dot (go SYMBOL)) @@ -1088,7 +1264,7 @@ (ouch-read-buffer char) (setq char (read-char stream nil nil)) (unless char (go RETURN-SYMBOL)) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.constituent-digit (go LEFTDECIMALDIGIT)) (#.constituent-dot (go MIDDLEDOT)) (#.constituent-expt (go EXPONENT)) @@ -1105,7 +1281,7 @@ (setq char (read-char stream nil nil)) (unless char (return (let ((*read-base* 10)) (make-integer)))) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.constituent-digit (go RIGHTDIGIT)) (#.constituent-expt (go EXPONENT)) (#.delimiter @@ -1120,7 +1296,7 @@ (ouch-read-buffer char) (setq char (read-char stream nil nil)) (unless char (return (make-float stream))) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.constituent-digit (go RIGHTDIGIT)) (#.constituent-expt (go EXPONENT)) (#.delimiter @@ -1134,7 +1310,7 @@ (ouch-read-buffer char) (setq char (read-char stream nil nil)) (unless char (go RETURN-SYMBOL)) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.constituent-digit (go RIGHTDIGIT)) (#.delimiter (unread-char char stream) (go RETURN-SYMBOL)) (#.escape (go ESCAPE)) @@ -1144,7 +1320,7 @@ (ouch-read-buffer char) (setq char (read-char stream nil nil)) (unless char (%reader-error stream "dot context error")) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.constituent-digit (go RIGHTDIGIT)) (#.constituent-dot (go DOTS)) (#.delimiter (%reader-error stream "dot context error")) @@ -1157,7 +1333,7 @@ (setq char (read-char stream nil nil)) (unless char (go RETURN-SYMBOL)) (setq possibly-float t) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.constituent-sign (go EXPTSIGN)) (#.constituent-digit (go EXPTDIGIT)) (#.delimiter (unread-char char stream) (go RETURN-SYMBOL)) @@ -1169,7 +1345,7 @@ (ouch-read-buffer char) (setq char (read-char stream nil nil)) (unless char (go RETURN-SYMBOL)) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.constituent-digit (go EXPTDIGIT)) (#.delimiter (unread-char char stream) (go RETURN-SYMBOL)) (#.escape (go ESCAPE)) @@ -1180,7 +1356,7 @@ (ouch-read-buffer char) (setq char (read-char stream nil nil)) (unless char (return (make-float stream))) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.constituent-digit (go EXPTDIGIT)) (#.delimiter (unread-char char stream) @@ -1193,7 +1369,7 @@ (ouch-read-buffer char) (setq char (read-char stream nil nil)) (unless char (go RETURN-SYMBOL)) - (case (char-class2 char attribute-table) + (case (char-class2 char *readtable*) (#.constituent-digit (go RATIODIGIT)) (#.delimiter (unread-char char stream) (go RETURN-SYMBOL)) (#.escape (go ESCAPE)) @@ -1204,7 +1380,7 @@ (ouch-read-buffer char) (setq char (read-char stream nil nil)) (unless char (return (make-ratio stream))) - (case (char-class2 char attribute-table) + (case (char-class2 char *readtable*) (#.constituent-digit (go RATIODIGIT)) (#.delimiter (unread-char char stream) @@ -1217,7 +1393,7 @@ (ouch-read-buffer char) (setq char (read-char stream nil nil)) (unless char (%reader-error stream "too many dots")) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.constituent-dot (go DOTS)) (#.delimiter (unread-char char stream) @@ -1235,7 +1411,7 @@ (ouch-read-buffer char) (setq char (stream::%read-char stream nil nil t t)) (unless char (go RETURN-SYMBOL)) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.escape (go ESCAPE)) (#.delimiter (stream::%unread-char stream char) (go RETURN-SYMBOL)) @@ -1249,7 +1425,7 @@ (ouch-read-buffer char) (setq char (fast-read-char nil nil)) (unless char (go RETURN-SYMBOL)) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.escape (done-with-fast-read-char) (go ESCAPE)) (#.delimiter (done-with-fast-read-char) @@ -1266,7 +1442,7 @@ (ouch-read-buffer char) (setq char (read-char stream nil :eof)) (when (eq char :eof) (go RETURN-SYMBOL)) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.escape (go ESCAPE)) (#.delimiter (unread-char char stream) (go RETURN-SYMBOL)) @@ -1283,7 +1459,7 @@ (ouch-read-buffer nextchar)) (setq char (read-char stream nil nil)) (unless char (go RETURN-SYMBOL)) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.delimiter (unread-char char stream) (go RETURN-SYMBOL)) (#.escape (go ESCAPE)) (#.multiple-escape (go MULT-ESCAPE)) @@ -1298,7 +1474,7 @@ (ouch-read-buffer char)) (setq char (read-char stream nil nil)) (unless char (go RETURN-SYMBOL)) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.delimiter (unread-char char stream) (go RETURN-SYMBOL)) (#.escape (go ESCAPE)) (#.multiple-escape (go MULT-ESCAPE)) @@ -1325,7 +1501,7 @@ (setq escapes ()) (setq char (read-char stream nil nil)) (unless char (reader-eof-error stream "after reading a colon")) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.delimiter (unread-char char stream) (%reader-error stream @@ -1340,7 +1516,7 @@ (setq char (read-char stream nil nil)) (unless char (reader-eof-error stream "after reading a colon")) - (case (char-class char attribute-table) + (case (char-class char *readtable*) (#.delimiter (unread-char char stream) (%reader-error stream @@ -1663,9 +1839,6 @@ the end of the stream." ;;;; dispatching macro cruft -(defun make-char-dispatch-table () - (make-array char-code-limit :initial-element #'dispatch-char-error)) - (defun dispatch-char-error (stream sub-char ignore) (declare (ignore ignore)) (if *read-suppress* @@ -1693,14 +1866,12 @@ the end of the stream." ;;get the dispatch char for macro (error if not there), diddle ;;entry for sub-char. (when (digit-char-p sub-char) - (simple-program-error "Sub-Char must not be a decimal digit: ~S" sub-char)) + (simple-program-error "Dispatch Sub-Char must not be a decimal digit: ~S" sub-char)) (let* ((sub-char (char-upcase sub-char)) (dpair (find disp-char (dispatch-tables rt) :test #'char= :key #'car))) (if dpair - (setf (elt (the simple-vector (cdr dpair)) - (char-code sub-char)) - (coerce function 'function)) + (set-dispatch-char sub-char function (cdr dpair)) (simple-program-error "~S is not a dispatch character." disp-char)))) (defun get-dispatch-macro-character @@ -1713,8 +1884,7 @@ the end of the stream." (dpair (find disp-char (dispatch-tables rt) :test #'char= :key #'car))) (if dpair - (elt (the simple-vector (cdr dpair)) - (char-code sub-char)) + (get-dispatch-char sub-char (cdr dpair)) (simple-program-error "~S is not a dispatch character." disp-char))))) (defun read-dispatch-char (stream char) @@ -1737,9 +1907,7 @@ the end of the stream." (let ((dpair (find char (dispatch-tables *readtable*) :test #'char= :key #'car))) (if dpair - (funcall (the function - (elt (the simple-vector (cdr dpair)) - (char-code sub-char))) + (funcall (the function (get-dispatch-char sub-char (cdr dpair))) stream sub-char (if numargp numarg nil)) (%reader-error stream "No dispatch table for dispatch char."))))) diff --git a/code/run-program.lisp b/code/run-program.lisp index 2a53ad01d..8e51c3a11 100644 --- a/code/run-program.lisp +++ b/code/run-program.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/run-program.lisp,v 1.27 2008/09/24 09:42:25 cshapiro Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/run-program.lisp,v 1.28 2009/06/11 16:03:59 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -370,10 +370,19 @@ (let ((n (length s))) ;; ;; Blast the string into place + #-unicode (kernel:copy-to-system-area (the simple-string s) (* vm:vector-data-offset vm:word-bits) string-sap 0 (* (1+ n) vm:byte-bits)) + #+unicode + (progn + ;; FIXME: Do we need to apply some kind of transformation + ;; to convert Lisp unicode strings to C strings? Utf-8? + (dotimes (k n) + (setf (sap-ref-8 string-sap k) + (logand #xff (char-code (aref s k))))) + (setf (sap-ref-8 string-sap n) 0)) ;; ;; Blast the pointer to the string into place (setf (sap-ref-sap vec-sap i) string-sap) @@ -614,10 +623,16 @@ (error "Could not read input from sub-process: ~A" (unix:get-unix-error-msg errno))) (t + #-unicode (kernel:copy-from-system-area (alien-sap buf) 0 string (* vm:vector-data-offset vm:word-bits) (* count vm:byte-bits)) + #+unicode + (let ((sap (alien-sap buf))) + (dotimes (k count) + (setf (aref string k) + (code-char (sap-ref-8 sap k))))) (write-string string stream :end count))))))))))) diff --git a/code/save.lisp b/code/save.lisp index f809030e1..64b1799db 100644 --- a/code/save.lisp +++ b/code/save.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/save.lisp,v 1.58 2008/12/10 16:16:10 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/save.lisp,v 1.59 2009/06/11 16:03:59 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -115,7 +115,9 @@ (setf (search-list "ld-library-path:") (parse-unix-search-list :ld_library_path)) (setf (search-list "ext-formats:") - '("library:ext-formats/"))) + '("library:ext-formats/" + "target:i18n/" + "target:pcl/simple-streams/external-formats/"))) diff --git a/code/seq.lisp b/code/seq.lisp index ada87a026..668e6d1c8 100644 --- a/code/seq.lisp +++ b/code/seq.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/seq.lisp,v 1.53 2006/06/30 18:41:22 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/seq.lisp,v 1.54 2009/06/11 16:03:59 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -37,10 +37,14 @@ ;;; Seq-Dispatch does an efficient type-dispatch on the given Sequence. -(defmacro seq-dispatch (sequence list-form array-form) - `(if (listp ,sequence) - ,list-form - ,array-form)) +(defmacro seq-dispatch (sequence list-form array-form &optional string-form) + (if string-form + `(cond ((listp ,sequence) ,list-form) + ((stringp ,sequence) ,string-form) + (t ,array-form)) + `(if (listp ,sequence) + ,list-form + ,array-form))) (defmacro elt-slice (sequences n) "Returns a list of the Nth element of each of the sequences. Used by MAP @@ -552,7 +556,9 @@ "Returns a new sequence containing the same elements but in reverse order." (seq-dispatch sequence (list-reverse* sequence) - (vector-reverse* sequence))) + (vector-reverse* sequence) + #+unicode + (string-reverse* sequence))) ;;; Internal Frobs: @@ -599,7 +605,9 @@ is destroyed." (seq-dispatch sequence (list-nreverse* sequence) - (vector-nreverse* sequence))) + (vector-nreverse* sequence) + #+unicode + (string-nreverse* sequence))) ;;; Concatenate: @@ -1617,22 +1625,32 @@ (setq jndex (1+ jndex))) (shrink-vector result jndex))) - -(defun remove-duplicates (sequence &key (test #'eql) test-not (start 0) from-end - end key) +#+unicode +(defun string-remove-duplicates* (string test test-not start end key from-end + &optional (length (length string))) + (declare (string string) (fixnum start length)) + ;;@@ FIXME: treat surrogate pairs as a single element. But that's + ;;not really possible with test, test-not, and key parameters which + ;;expect characters, not code points. + (vector-remove-duplicates* string test test-not start end key from-end + length)) + +(defun remove-duplicates (sequence &key (test #'eql) test-not (start 0) + from-end end key) "The elements of Sequence are compared pairwise, and if any two match, the one occuring earlier is discarded, unless FROM-END is true, in which case the one later in the sequence is discarded. The resulting sequence is returned. - The :TEST-NOT argument is depreciated." + The :TEST-NOT argument is deprecated." (declare (fixnum start)) (seq-dispatch sequence - (if sequence - (list-remove-duplicates* sequence test test-not - start end key from-end)) - (vector-remove-duplicates* sequence test test-not - start end key from-end))) + (if sequence + (list-remove-duplicates* sequence test test-not + start end key from-end)) + (vector-remove-duplicates* sequence test test-not start end key from-end) + #+unicode + (string-remove-duplicates* sequence test test-not start end key from-end))) @@ -1690,18 +1708,28 @@ :end (if from-end jndex end) :test-not test-not) (setq jndex (1+ jndex))))) +#+unicode +(defun string-delete-duplicates* (string test test-not key from-end start end + &optional (length (length string))) + (declare (string string) (fixnum start length)) + ;;@@ FIXME: treat surrogate pairs as a single element + (vector-delete-duplicates* string test test-not key from-end start end + length)) + -(defun delete-duplicates (sequence &key (test #'eql) test-not (start 0) from-end - end key) +(defun delete-duplicates (sequence &key (test #'eql) test-not (start 0) + from-end end key) "The elements of Sequence are examined, and if any two match, one is discarded. The resulting sequence, which may be formed by destroying the given sequence, is returned. - The :TEST-NOT argument is depreciated." + The :TEST-NOT argument is deprecated." (seq-dispatch sequence (if sequence (list-delete-duplicates* sequence test test-not key from-end start end)) - (vector-delete-duplicates* sequence test test-not key from-end start end))) + (vector-delete-duplicates* sequence test test-not key from-end start end) + #+unicode + (string-delete-duplicates* sequence test test-not key from-end start end))) (defun list-substitute* (pred new list start end count key test test-not old) (declare (fixnum start end count)) diff --git a/code/serve-event.lisp b/code/serve-event.lisp index 0c060b96c..6cfe926d1 100644 --- a/code/serve-event.lisp +++ b/code/serve-event.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/serve-event.lisp,v 1.27 2004/04/08 14:00:03 emarsden Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/serve-event.lisp,v 1.28 2009/06/11 16:03:59 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -387,7 +387,7 @@ ;;; These macros are chunks of code from SUB-SERVE-EVENT. They randomly -;;; reference the READ-FDS and WRITE-FDS Alien variables (which wold be consed +;;; reference the READ-FDS and WRITE-FDS Alien variables (which would be consed ;;; if passed as function arguments.) ;;; (eval-when (compile eval) @@ -446,7 +446,7 @@ ;;; When a *periodic-polling-function* is defined the server will not ;;; block for more than the maximum event timeout and will call the -;;; polling function if it does times out. One important use of this +;;; polling function if it does time out. One important use of this ;;; is to periodically call process-yield. ;;; (declaim (type (or null function) *periodic-polling-function*)) diff --git a/code/stream-vector-io.lisp b/code/stream-vector-io.lisp index 3fefa609b..846fe08f5 100644 --- a/code/stream-vector-io.lisp +++ b/code/stream-vector-io.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/stream-vector-io.lisp,v 1.5 2009/04/20 20:53:47 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/stream-vector-io.lisp,v 1.6 2009/06/11 16:03:59 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -52,8 +52,7 @@ (declare (type simple-array vector)) (declare (fixnum start end endian-swap )) (unless (eql endian-swap 0) - (when (or (>= endian-swap (vector-elt-width vector)) - (< endian-swap 0)) + (when (>= endian-swap (vector-elt-width vector)) (error "endian-swap ~a is illegal for element-type of vector ~a" endian-swap vector)) (lisp::with-array-data ((data vector) (offset-start start) @@ -79,11 +78,54 @@ ;; Not sure that swap-endians-456 ((4 5 6) (swap-endians-456 data offset-start offset-end endian-swap)) + (-1 + ;; Swap nibbles + ;; + ;; NOTE: start and end are in terms of elements (4 bits) + ;; but we want octets in this loop. + (let ((start-octet (truncate start 2)) + (end-octet (truncate end 2))) + (loop for i fixnum from start-octet below end-octet + do + (let ((x (bref data i))) + (setf (bref data i) (logior (ash (logand x #x0f) 4) + (ash (logand x #xf0) -4))))))) + (-2 + ;; Swap pairs of bits. + (let ((start-octet (truncate start 4)) + (end-octet (truncate end 4))) + (loop for i fixnum from start-octet below end-octet + do + (let ((x (bref data i))) + (declare (type (unsigned-byte 8) x)) + (setf x (logior (ash (logand x #x33) 2) + (ash (logand x #xcc) -2))) + (setf x (logior (ash (logand x #x0f) 4) + (ash (logand x #xf0) -4))) + (setf (bref data i) x))))) + (-8 + ;; Swap bits + (let ((start-octet (truncate start 8)) + (end-octet (truncate end 8))) + (loop for i fixnum from start-octet below end-octet + do + (let ((x (bref data i))) + (declare (type (unsigned-byte 8) x)) + (setf x (logior (ash (logand x #x55) 1) + (ash (logand x #xaa) -1))) + (setf x (logior (ash (logand x #x33) 2) + (ash (logand x #xcc) -2))) + (setf x (logior (ash (logand x #x0f) 4) + (ash (logand x #xf0) -4))) + (setf (bref data i) x))))) ;;otherwise, do nothing ??? ))))) (deftype simple-numeric-vector () - `(or (simple-array (unsigned-byte 8) (*)) + `(or (simple-array bit (*)) + (simple-array (unsigned-byte 2) (*)) + (simple-array (unsigned-byte 4) (*)) + (simple-array (unsigned-byte 8) (*)) (simple-array (signed-byte 8) (*)) (simple-array (unsigned-byte 16) (*)) (simple-array (signed-byte 16) (*)) @@ -91,17 +133,44 @@ (simple-array (signed-byte 32) (*)) (simple-array (unsigned-byte *) (*)) (simple-array (signed-byte *) (*)) - (simple-array single-float (*)) ; not previously supported by read-sequence - (simple-array double-float (*)) ; not previously supported by read-sequence - )) + (simple-array single-float (*)) + (simple-array double-float (*)))) + +;; Read from stream into vector. Start and End are byte offsets into +;; the vector. +(defun read-vector* (vector stream start end) + (labels ((get-n-bytes (stream data offset numbytes) + ;; Handle case of read-n-bytes reading short. + (let ((need numbytes)) + (loop + (let ((n (read-n-bytes stream data offset need nil))) + (decf need n) + (cond ((or (zerop need) ; Complete + (zerop n)) ; EOF + (return (- numbytes need))) + (t (incf offset n))))))) + (read-n-x8-bytes (stream data offset-start offset-end) + (let* ((numbytes (- offset-end offset-start)) + (bytes-read (get-n-bytes + stream + data + offset-start + numbytes))) + (if (< bytes-read numbytes) + (+ offset-start bytes-read) + offset-end)))) + (read-n-x8-bytes stream vector start end))) ;;; New versions of READ-VECTOR and WRITE-VECTOR that deal with octet positions ;;; rather than element-positions, for compatibility with Allegro. ;;; WARNING: START and END must be a multiple of octets-per-element. -;;; (Should we enforce this constraint?) -;;; WARNING: Element-types -;;; smaller than 8-bits are not supported. +;;; For element types smaller than 8 bits, START and END are octet +;;; indices, so you cannot read into arbitrary positions of the +;;; vector. +;;; +;;; (Should we enforce this constraint?) +;;; ;;; READ-VECTOR -- (defun read-vector (vector stream &key (start 0) end (endian-swap :byte-8)) @@ -121,14 +190,23 @@ (unless (typep vector '(or string simple-numeric-vector)) (error "Wrong vector type ~a for read-vector on stream ~a." (type-of vector) stream)) (let* ((octets-per-element (vector-elt-width vector)) - ;; read-sequence is parameterized by element position. - (next-index (read-sequence vector stream - :start (floor (or start 0) octets-per-element) - :end (and end (floor end octets-per-element))))) - (declare (fixnum octets-per-element next-index)) - (endian-swap-vector vector (or start 0) next-index + (start-elt (truncate start octets-per-element)) + (end-octet (or end (ceiling (* (length vector) octets-per-element)))) + (end-elt (if end + (truncate end octets-per-element) + (length vector))) + (next-index (read-vector* vector stream + start + end-octet))) + (endian-swap-vector vector start-elt end-elt (endian-swap-value vector endian-swap)) - (* next-index octets-per-element))) + next-index)) + +;; Write vector into stream. Start and End are byte offsets into the +;; vector. +(declaim (inline write-vector*)) +(defun write-vector* (vector stream start end) + (system:output-raw-bytes stream vector start end)) ;;; WRITE VECTOR -- ;;; returns the next octet-position in vector. @@ -144,31 +222,28 @@ (values unsigned-byte)) (let* ((octets-per-element (vector-elt-width vector)) - (end (or end (* octets-per-element (length vector)))) + (start-elt (truncate start octets-per-element)) + (end-octet (or end (ceiling (* (length vector) octets-per-element)))) + (end-elt (if end + (truncate end octets-per-element) + (length vector))) (swap-mask (endian-swap-value vector endian-swap)) - (next-index end)) - (declare (type fixnum swap-mask end octets-per-element next-index)) + (next-index end-octet)) + (declare (type fixnum swap-mask next-index)) (cond ((= swap-mask 0) - (write-sequence vector stream - :start (floor start octets-per-element) - :end (and end (floor end octets-per-element)))) - + (write-vector* vector stream start end-octet)) (t ;; In a multiprocessing situation, WITHOUT-INTERRUPTS might be required here ;; otherwise the vector could be seen by another process in the modified state. (unless (typep vector '(or string simple-numeric-vector)) (error "Wrong vector type ~a for write-vector on stream ~a." (type-of vector) stream)) - (let ((start-idx (floor start octets-per-element)) - (end-idx (floor end octets-per-element))) - (endian-swap-vector vector start-idx end-idx swap-mask) - (unwind-protect - (write-sequence vector stream - :start start-idx - :end end-idx) - (endian-swap-vector vector start-idx end-idx swap-mask))) + (endian-swap-vector vector start-elt end-elt swap-mask) + (unwind-protect + (write-vector* vector stream start end-octet) + (endian-swap-vector vector start-elt end-elt swap-mask)) vector)) - (* next-index octets-per-element))) + next-index)) (declaim (end-block)) ; READ-VECTOR WRITE-VECTOR block diff --git a/code/stream.lisp b/code/stream.lisp index b365072c5..efc2ec92f 100644 --- a/code/stream.lisp +++ b/code/stream.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/stream.lisp,v 1.83 2006/08/21 15:12:16 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/stream.lisp,v 1.84 2009/06/11 16:03:59 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -289,10 +289,36 @@ ;; simple-stream (stream::%stream-external-format stream) ;; lisp-stream - :default + (typecase stream + (fd-stream (fd-stream-external-format stream)) + (synonym-stream (stream-external-format + (symbol-value (synonym-stream-symbol stream)))) + (t :default)) ;; fundamental-stream :default)) +(defun (setf stream-external-format) (extfmt stream) + (declare (type stream stream)) + (stream-dispatch stream + ;; simple-stream + (error "Loading simple-streams should redefine this") + ;; lisp-stream + (typecase stream + (fd-stream (setf (fd-stream-external-format stream) + (if (eq extfmt :default) + :default + (stream::ef-name + (stream::find-external-format extfmt))) + (fd-stream-oc-state stream) nil + (fd-stream-co-state stream) nil) + extfmt) + (synonym-stream (setf (stream-external-format + (symbol-value (synonym-stream-symbol stream))) + extfmt)) + (t (error "Don't know how to set external-format for ~S." stream))) + ;; fundamental-stream + (error "Setting external-format on Gray streams not supported."))) + (defun close (stream &key abort) "Closes the given Stream. No more I/O may be performed, but inquiries may still be made. If :Abort is non-nil, an attempt is made to clean @@ -655,7 +681,7 @@ ;;; ;;; This function is called by the fast-read-char expansion to refill the ;;; in-buffer for text streams. There is definitely an in-buffer, and hence -;;; myst be an n-bin method. +;;; must be an n-bin method. ;;; (defun fast-read-char-refill (stream eof-errorp eof-value) (let* ((ibuf (lisp-stream-in-buffer stream)) @@ -898,7 +924,7 @@ (ignore arg2)) (case operation (:listen - ;; Return true is input available, :eof for eof-of-file, otherwise Nil. + ;; Return true if input available, :eof for end-of-file, otherwise Nil. (let ((char (stream-read-char-no-hang stream))) (when (characterp char) (stream-unread-char stream char)) @@ -1496,7 +1522,9 @@ output to Output-stream" (:listen (or (/= (the fixnum (string-input-stream-current stream)) (the fixnum (string-input-stream-end stream))) :eof)) - (:element-type 'base-char))) + (:element-type 'base-char) + (:close + (set-closed-flame stream)))) (defun make-string-input-stream (string &optional (start 0) (end (length string))) @@ -1635,7 +1663,8 @@ output to Output-stream" (let* ((new-length (if (zerop current) 1 (* current 2))) (new-workspace (make-string new-length))) (declare (simple-string new-workspace)) - (%primitive byte-blt workspace start new-workspace 0 current) + (%primitive byte-blt workspace (* vm:char-bytes start) + new-workspace 0 (* vm:char-bytes current)) (setf workspace new-workspace) (setf offset-current current) (set-array-header buffer workspace new-length @@ -1661,15 +1690,17 @@ output to Output-stream" (let* ((new-length (+ (the fixnum (* current 2)) string-len)) (new-workspace (make-string new-length))) (declare (simple-string new-workspace)) - (%primitive byte-blt workspace dst-start new-workspace 0 current) + (%primitive byte-blt workspace (* vm:char-bytes dst-start) + new-workspace 0 (* vm:char-bytes current)) (setf workspace new-workspace) (setf offset-current current) (setf offset-dst-end dst-end) (set-array-header buffer workspace new-length dst-end 0 new-length nil)) (setf (fill-pointer buffer) dst-end)) - (%primitive byte-blt string start - workspace offset-current offset-dst-end))) + (%primitive byte-blt string (* vm:char-bytes start) + workspace (* vm:char-bytes offset-current) + (* vm:char-bytes offset-dst-end)))) dst-end)) @@ -2051,9 +2082,6 @@ output to Output-stream" ;;; READ-SEQUENCE -- -;;; Note: the multi-byte operation SYSTEM:READ-N-BYTES operates on -;;; subtypes of SIMPLE-ARRAY. Hence the distinction between simple -;;; and non simple input functions. (defun read-sequence (seq stream &key (start 0) (end nil) partial-fill) "Destructively modify SEQ by reading elements from STREAM. @@ -2103,10 +2131,9 @@ POSITION: an INTEGER greater than or equal to zero, and less than or (etypecase seq (list (read-into-list seq stream start end)) - (simple-string - (read-into-simple-string seq stream start end)) (string - (read-into-string seq stream start end)) + (with-array-data ((seq seq) (start start) (end end)) + (read-into-string seq stream start end partial-fill))) (simple-array ; We also know that it is a 'vector'. (read-into-simple-array seq stream start end)) (vector @@ -2131,16 +2158,15 @@ POSITION: an INTEGER greater than or equal to zero, and less than or #'read-byte))) (read-into-list-1 (nthcdr start l) start end stream read-function))) -#+:recursive +#+recursive (defun read-into-list-1 (l start end stream read-function) (declare (type list l)) (declare (type stream stream)) (declare (type (integer 0 *) start end)) (if (or (endp l) (= start end)) start - (let* ((eof-marker (load-time-value (list 'eof-marker))) - (el (funcall read-function stream nil eof-marker))) - (cond ((eq el eof-marker) start) + (let* ((el (funcall read-function stream nil stream))) + (cond ((eq el stream) start) (t (setf (first l) el) (read-into-list-1 (rest l) (1+ start) @@ -2150,7 +2176,7 @@ POSITION: an INTEGER greater than or equal to zero, and less than or )) -#-:iterative +#-recursive (defun read-into-list-1 (l start end stream read-function) (declare (type list l)) (declare (type stream stream)) @@ -2165,9 +2191,8 @@ POSITION: an INTEGER greater than or equal to zero, and less than or i) (declare (type list lis)) (declare (type index i)) - (let* ((eof-marker (load-time-value (list 'eof-marker))) - (el (funcall read-function stream nil eof-marker))) - (when (eq el eof-marker) + (let* ((el (funcall read-function stream nil stream))) + (when (eq el stream) (return i)) (setf (first lis) el)))) @@ -2201,7 +2226,8 @@ POSITION: an INTEGER greater than or equal to zero, and less than or ;;; read-into-simple-string hacked to allow (unsigned-byte 8) stream-element-type ;;; For some reason applying this change to read-into-simple-string causes CMUCL to die. -(defun read-into-simple-string (s stream start end) +#-unicode +(defun read-into-string (s stream start end partial-fill) (declare (type simple-string s)) (declare (type stream stream)) (declare (type index start end)) @@ -2218,14 +2244,15 @@ POSITION: an INTEGER greater than or equal to zero, and less than or ;; to keep trying. (loop while (plusp numbytes) do (let ((bytes-read (system:read-n-bytes stream s start numbytes nil))) - (when (zerop bytes-read) - (return-from read-into-simple-string start)) (incf total-bytes bytes-read) (incf start bytes-read) - (decf numbytes bytes-read))) + (decf numbytes bytes-read) + (when (or partial-fill (zerop bytes-read)) + (return-from read-into-string start)))) start)) -(defun read-into-string (s stream start end) +#+unicode +(defun read-into-string (s stream start end partial-fill) (declare (type string s)) (declare (type stream stream)) (declare (type index start end)) @@ -2240,14 +2267,12 @@ POSITION: an INTEGER greater than or equal to zero, and less than or (>= i end)) i) (declare (type index i s-len)) - (let* ((eof-marker (load-time-value (list 'eof-marker))) - (el (read-char stream nil eof-marker))) + (let* ((el (read-char stream nil stream))) (declare (type (or character stream) el)) - (when (eq el eof-marker) + (when (eq el stream) (return i)) (setf (char s i) (the character el))))) - ;;; READ-INTO-SIMPLE-ARRAY -- ;;; We definitively know that we are really reading into a vector. @@ -2396,7 +2421,6 @@ POSITION: an INTEGER greater than or equal to zero, and less than or ((simple-array (signed-byte *) (*)) (read-into-vector s stream start end))))))))) - ;;; READ-INTO-VECTOR -- (defun read-into-vector (v stream start end) @@ -2412,9 +2436,8 @@ POSITION: an INTEGER greater than or equal to zero, and less than or ((or (>= i a-len) (>= i end)) i) (declare (type index i a-len)) - (let* ((eof-marker (load-time-value (list 'eof-marker))) - (el (funcall read-function stream nil eof-marker))) - (when (eq el eof-marker) + (let* ((el (funcall read-function stream nil stream))) + (when (eq el stream) (return i)) (setf (aref v i) el))))) @@ -2470,10 +2493,9 @@ SEQ: a proper SEQUENCE (etypecase seq (list (write-list-out seq stream start end)) - (simple-string - (write-simple-string-out seq stream start end)) (string - (write-string-out seq stream start end)) + (with-array-data ((seq seq) (start start) (end end)) + (write-string-out seq stream start end))) (simple-vector ; This is necessary because of ; the underlying behavior of ; OUTPUT-RAW-BYTES. A vector @@ -2483,8 +2505,7 @@ SEQ: a proper SEQUENCE (simple-array ; We know it is also a vector! (write-simple-array-out seq stream start end)) (vector - (write-vector-out seq stream start end))) - ))) + (write-vector-out seq stream start end)))))) ;; fundamental-stream (stream-write-sequence stream seq start end)) seq) @@ -2547,26 +2568,10 @@ SEQ: a proper SEQUENCE )) -;;; WRITE-SIMPLE-STRING-OUT, WRITE-STRING-OUT -;;; These functions are really the same, since they rely on -;;; WRITE-STRING (which should be pretty efficient by itself.) The -;;; only difference is in the declaration. Maybe the duplication is an -;;; overkill, but it makes things a little more logical. - -(defun write-simple-string-out (seq stream start end) - (declare (type simple-string seq)) - (when (and (not (subtypep (stream-element-type stream) 'character)) - (not (equal (stream-element-type stream) '(unsigned-byte 8)))) - (error 'type-error - :datum seq - :expected-type (stream-element-type stream) - :format-control "Trying to output a string to a binary stream.")) - (write-string seq stream :start start :end end) - seq) - +;;; WRITE-STRING-OUT (defun write-string-out (seq stream start end) - (declare (type string seq)) + (declare (type simple-string seq)) (when (and (not (subtypep (stream-element-type stream) 'character)) (not (equal (stream-element-type stream) '(unsigned-byte 8)))) (error 'type-error @@ -2606,7 +2611,7 @@ SEQ: a proper SEQUENCE (simple-array double-float (*))) seq)) (when (not (subtypep (stream-element-type stream) 'integer)) - (error 'type-error + (error 'simple-type-error :datum (elt seq 0) :expected-type (stream-element-type stream) :format-control "Trying to output binary data to a text stream.")) diff --git a/code/string.lisp b/code/string.lisp index 0aa7ca8db..d0344eae1 100644 --- a/code/string.lisp +++ b/code/string.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/string.lisp,v 1.12 2003/04/11 15:41:59 emarsden Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/string.lisp,v 1.13 2009/06/11 16:03:59 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -16,10 +16,11 @@ ;;; **************************************************************** ;;; (in-package "LISP") -(export '(char schar string +(export '(char schar glyph sglyph string string= string-equal string< string> string<= string>= string/= string-lessp string-greaterp string-not-lessp string-not-greaterp string-not-equal + string-to-nfd string-to-nfkd string-to-nfc string-to-nfkc make-string string-trim string-left-trim string-right-trim string-upcase @@ -27,11 +28,113 @@ nstring-capitalize)) +(declaim (inline surrogatep surrogates-to-codepoint codepoint surrogates)) + +(defun surrogatep (c &optional surrogate-type) + "Test if C is a surrogate. C may be either an integer or a + character. Surrogate-type indicates what kind of surrogate to test + for. :High means to test for the high (leading) surrogate; :Low + tests for the low (trailing surrogate). A value of :Any or Nil + tests for any surrogate value (high or low)." + (declare (type (or character codepoint) c)) + (let ((code (if (characterp c) + (char-code c) + c))) + (ecase surrogate-type + ((:high :leading) + ;; Test for high surrogate + (<= #xD800 code #xDBFF)) + ((:low :trailing) + ;; Test for low surrogate + (<= #xDC00 code #xDFFF)) + ((:any nil) + ;; Test for any surrogate + (<= #xD800 code #xDFFF))))) + +(defun surrogates-to-codepoint (hi lo) + "Convert the given Hi and Lo surrogate characters to the + corresponding codepoint value" + (declare (type character hi lo)) + (+ (ash (- (the (integer #xD800 #xDBFF) (char-code hi)) #xD800) 10) + (the (integer #xDC00 #xDFFF) (char-code lo)) #x2400)) + +(defun codepoint (string i &optional (end (length string))) + "Return the codepoint value from String at position I. If that + position is a surrogate, it is combined with either the previous or + following character (when possible) to compute the codepoint. The + second return value is NIL if the position is not a surrogate pair. + Otherwise +1 or -1 is returned if the position is the high or low + surrogate value, respectively." + (declare (type simple-string string) (type kernel:index i end)) + (let ((code (char-code (schar string i)))) + (cond ((and (surrogatep code :high) (< (1+ i) end)) + (let ((tmp (char-code (schar string (1+ i))))) + (if (surrogatep tmp :low) + (values (+ (ash (- code #xD800) 10) tmp #x2400) +1) + (values code nil)))) + ((and (surrogatep code :low) (> i 0)) + (let ((tmp (char-code (schar string (1- i))))) + (if (surrogatep tmp :high) + (values (+ (ash (- tmp #xD800) 10) code #x2400) -1) + (values code nil)))) + (t (values code nil))))) + +(defun surrogates (codepoint) + "Return the high and low surrogate characters for Codepoint. If + Codepoint is in the BMP, the first return value is the corresponding + character and the second is NIL." + (declare (type codepoint codepoint)) + (if (< codepoint #x10000) + (values (code-char codepoint) nil) + (let* ((tmp (- codepoint #x10000)) + (hi (logior (ldb (byte 10 10) tmp) #xD800)) + (lo (logior (ldb (byte 10 0) tmp) #xDC00))) + (values (code-char hi) (code-char lo))))) + +(defun (setf codepoint) (codepoint string i) + "Set the codepoint at string position I to the Codepoint. If the + codepoint requires a surrogate pair, the high (leading surrogate) is + stored at position I and the low (trailing) surrogate is stored at + I+1" + (declare (type codepoint codepoint) + (type simple-string string)) + (let ((widep nil)) + (multiple-value-bind (hi lo) + (surrogates codepoint) + (setf (aref string i) hi) + (when lo + (setf (aref string (1+ i)) lo) + (setf widep t))) + (values codepoint widep))) + +(defun utf16-string-p (string) + "Check if String is a valid UTF-16 string. If the string is valid, + T is returned. If the string is not valid, NIL is returned, and the + second value is the index into the string of the invalid character. + A string is also invalid if it contains any unassigned codepoints." + (do ((len (length string)) + (index 0 (1+ index))) + ((>= index len) + t) + (multiple-value-bind (codepoint wide) + (codepoint string index) + ;; We step through the string in order. If there are any + ;; surrogates pairs, we must reach the lead surrogate first, + ;; which means WIDE is +1. Otherwise, we have an invalid + ;; surrogate pair. If we get any codepoint that is in the + ;; surrogate range, we also have an invalid string. An + ;; unassigned codepoint is also considered invalid. + (when (or (eq wide -1) + (surrogatep codepoint) + (lisp::unicode-assigned-codepoint-p codepoint)) + (return-from utf16-string-p (values nil index))) + (when wide (incf index))))) + (defun string (X) "Coerces X into a string. If X is a string, X is returned. If X is a - symbol, X's pname is returned. If X is a character then a one element - string containing that character is returned. If X cannot be coerced - into a string, an error occurs." + symbol, X's pname is returned. If X is a character then a one element + string containing that character is returned. If X cannot be coerced + into a string, an error occurs." (cond ((stringp x) x) ((symbolp x) (symbol-name x)) ((characterp x) @@ -106,7 +209,7 @@ (defun schar (string index) "SCHAR returns the character object at an indexed position in a string - just as CHAR does, except the string must be a simple-string." + just as CHAR does, except the string must be a simple-string." (declare (optimize (safety 1))) (schar string index)) @@ -143,12 +246,38 @@ (the fixnum end2)) ,(if lessp `nil - `(- (the fixnum index) ,offset1))) + `(- (the fixnum index) ,offset1))) + #-unicode ((,(if lessp 'char< 'char>) (schar string1 index) (schar string2 (+ (the fixnum index) (- start2 start1)))) (- (the fixnum index) ,offset1)) - (t nil)) + #-unicode + (t nil) + #+unicode + (t + ;; Compare in code point order. See + ;; http://icu-project.org/docs/papers/utf16_code_point_order.html + (flet ((fixup (code) + (if (>= code #xe000) + (- code #x800) + (+ code #x2000)))) + (declare (inline fixup)) + (let* ((c1 (char-code (schar string1 index))) + (c2 (char-code (schar string2 + (+ (the fixnum index) + (- start2 start1)))))) + (cond ((and (>= c1 #xd800) + (>= c2 #xd800)) + (let ((fix-c1 (fixup c1)) + (fix-c2 (fixup c2))) + (if (,(if lessp '< '>) fix-c1 fix-c2) + (- (the fixnum index) ,offset1) + nil))) + (t + (if (,(if lessp '< '>) c1 c2) + (- (the fixnum index) ,offset1) + nil))))))) ,(if equalp `(- (the fixnum end1) ,offset1) 'nil)))))) ) ; eval-when @@ -231,9 +360,39 @@ `((if (not (char-equal (schar string1 index1) (schar string2 index2))) (return ,abort-value))))))) - ) ; eval-when +#+unicode +(defun string-case-fold (string &key (start 0) end (casing :simple)) + "Return a new string with the case folded according to Casing as follows: + + :SIMPLE Unicode simple case folding (preserving length) + :FULL Unicode full case folding (possibly changing length) + + Default Casing is :SIMPLE." + (ecase casing + (:simple + (with-output-to-string (s) + (with-one-string string start end offset + (do ((index offset (1+ index))) + ((>= index end)) + (multiple-value-bind (code widep) + (codepoint string index) + (when widep (incf index)) + (multiple-value-bind (hi lo) + (surrogates (unicode-case-fold-simple code)) + (write-char hi s) + (when lo (write-char lo s)))))))) + (:full + (with-output-to-string (s) + (with-one-string string start end offset + (do ((index offset (1+ index))) + ((>= index end)) + (multiple-value-bind (code widep) + (codepoint string index) + (when widep (incf index)) + (write-string (unicode-case-fold-full code) s)))))))) + (defun string-equal (string1 string2 &key (start1 0) end1 (start2 0) end2) "Given two strings (string1 and string2), and optional integers start1, start2, end1 and end2, compares characters in string1 to characters in @@ -248,7 +407,7 @@ (error "Improper bounds for string comparison.")) (if (= slen1 slen2) ;;return () immediately if lengths aren't equal. - (string-not-equal-loop 1 t nil))))) + (string-not-equal-loop 1 t nil))))) (defun string-not-equal (string1 string2 &key (start1 0) end1 (start2 0) end2) "Given two strings, if the first string is not lexicographically equal @@ -281,15 +440,24 @@ (if lessp (if equalp ;; STRING-NOT-GREATERP - (values '<= `(not (char-greaterp char1 char2))) + (values '<= + #-unicode `(not (char-greaterp char1 char2)) + #+unicode `(<= char1 char2)) ;; STRING-LESSP - (values '< `(char-lessp char1 char2))) + (values '< + #-unicode `(char-lessp char1 char2) + #+unicode `(< char1 char2))) (if equalp ;; STRING-NOT-LESSP - (values '>= `(not (char-lessp char1 char2))) + (values '>= + #-unicode `(not (char-lessp char1 char2)) + #+unicode `(>= char1 char2)) ;; STRING-GREATERP - (values '> `(char-greaterp char1 char2))))) + (values '> + #-unicode `(char-greaterp char1 char2) + #+unicode `(> char1 char2))))) +#-unicode (defmacro string-less-greater-equal (lessp equalp) (multiple-value-bind (length-test character-test) (string-less-greater-equal-tests lessp equalp) @@ -314,6 +482,52 @@ (return (- index1 offset1)) (return ())))))))) +;; Convert to lowercase for case folding, to match what Unicode +;; CaseFolding.txt says. An example where this matters: U+1E9E maps +;; to U+00DF. But the uppercase version of U+00DF is U+00DF. +#+unicode +(defmacro equal-char-codepoint (codepoint) + `(let ((ch ,codepoint)) + ;; Handle ASCII separately for bootstrapping and for unidata missing. + (if (< 64 ch 91) + (+ ch 32) + #-(and unicode (not unicode-bootstrap)) + ch + #+(and unicode (not unicode-bootstrap)) + (if (> ch 127) (unicode-lower ch) ch)))) + +#+unicode +(defmacro string-less-greater-equal (lessp equalp) + (multiple-value-bind (length-test character-test) + (string-less-greater-equal-tests lessp equalp) + `(with-two-strings string1 string2 start1 end1 offset1 start2 end2 + (let ((slen1 (- (the fixnum end1) start1)) + (slen2 (- (the fixnum end2) start2))) + (declare (fixnum slen1 slen2)) + (if (or (minusp slen1) (minusp slen2)) + ;;prevent endless looping later. + (error "Improper bounds for string comparison.")) + (do ((index1 start1 (1+ index1)) + (index2 start2 (1+ index2))) + ((or (= index1 (the fixnum end1)) (= index2 (the fixnum end2))) + (if (,length-test slen1 slen2) (- index1 offset1))) + (declare (fixnum index1 index2)) + (multiple-value-bind (char1 wide1) + (codepoint string1 index1) + (declare (type codepoint char1)) + (multiple-value-bind (char2 wide2) + (codepoint string2 index2) + (declare (type codepoint char2)) + (setf char1 (equal-char-codepoint char1)) + (setf char2 (equal-char-codepoint char2)) + (if (= char1 char2) + (progn + (when wide1 (incf index1)) + (when wide2 (incf index2))) + (if ,character-test + (return (- index1 offset1)) + (return ())))))))))) + ) ; eval-when (defun string-lessp* (string1 string2 start1 end1 start2 end2) @@ -360,7 +574,7 @@ (defun make-string (count &key element-type ((:initial-element fill-char))) "Given a character count and an optional fill character, makes and returns - a new string Count long filled with the fill character." + a new string Count long filled with the fill character." (declare (type fixnum count)) (assert (subtypep element-type 'character)) (if fill-char @@ -371,9 +585,7 @@ (setf (schar string i) fill-char)) (make-string count))) -(defun string-upcase (string &key (start 0) end) - "Given a string, returns a new string that is a copy of it with - all lower case alphabetic characters converted to uppercase." +(defun string-upcase-simple (string &key (start 0) end) (declare (fixnum start)) (let* ((string (if (stringp string) string (string string))) (slen (length string))) @@ -391,8 +603,20 @@ (new-index (- start offset) (1+ new-index))) ((= index (the fixnum end))) (declare (fixnum index new-index)) - (setf (schar newstring new-index) - (char-upcase (schar string index)))) + (multiple-value-bind (code wide) (codepoint string index) + (when wide (incf index)) + ;; Handle ASCII specially because this is called early in + ;; initialization, before unidata is available. + (cond ((< 96 code 123) (decf code 32)) + ((> code 127) (setq code (unicode-upper code)))) + ;;@@ WARNING: this may, in theory, need to extend newstring + ;; but that never actually occurs as of Unicode 5.1.0, + ;; so I'm just going to ignore it for now... + (multiple-value-bind (hi lo) (surrogates code) + (setf (schar newstring new-index) hi) + (when lo + (setf (schar newstring (incf new-index)) lo))))) + ;;@@ WARNING: see above (do ((index end (1+ index)) (new-index (- (the fixnum end) offset) (1+ new-index))) ((= index offset-slen)) @@ -400,9 +624,53 @@ (setf (schar newstring new-index) (schar string index))) newstring)))) -(defun string-downcase (string &key (start 0) end) - "Given a string, returns a new string that is a copy of it with - all upper case alphabetic characters converted to lowercase." +(defun string-upcase-full (string &key (start 0) end) + (declare (fixnum start)) + (let* ((string (if (stringp string) string (string string))) + (slen (length string))) + (declare (fixnum slen)) + (with-output-to-string (s) + (with-one-string string start end offset + (let ((offset-slen (+ slen offset))) + (declare (fixnum offset-slen)) + (write-string string s :start offset :end start) + (do ((index start (1+ index))) + ((= index (the fixnum end))) + (declare (fixnum index)) + (multiple-value-bind (code wide) + (codepoint string index) + (when wide (incf index)) + ;; Handle ASCII specially because this is called early in + ;; initialization, before unidata is available. + (cond ((< 96 code 123) + (write-char (code-char (decf code 32)) s)) + ((> code 127) + (write-string (unicode-full-case-upper code) s)) + (t + (multiple-value-bind (hi lo) + (surrogates code) + (write-char hi s) + (when lo + (write-char lo s))))))) + (write-string string s :start end :end offset-slen)))))) + +(defun string-upcase (string &key (start 0) end #+unicode (casing :simple)) + #-unicode + "Given a string, returns a new string that is a copy of it with all + lower case alphabetic characters converted to uppercase." + #+unicode + "Given a string, returns a new string that is a copy of it with all + lower case alphabetic characters converted to uppercase. Casing is + :simple or :full for simple or full case conversion, respectively." + (declare (fixnum start)) + #-unicode + (string-upcase-simple string :start start :end end) + #+unicode + (if (eq casing :simple) + (string-upcase-simple string :start start :end end) + (string-upcase-full string :start start :end end))) + +(defun string-downcase-simple (string &key (start 0) end) (declare (fixnum start)) (let* ((string (if (stringp string) string (string string))) (slen (length string))) @@ -420,8 +688,20 @@ (new-index (- start offset) (1+ new-index))) ((= index (the fixnum end))) (declare (fixnum index new-index)) - (setf (schar newstring new-index) - (char-downcase (schar string index)))) + (multiple-value-bind (code wide) (codepoint string index) + (when wide (incf index)) + ;; Handle ASCII specially because this is called early in + ;; initialization, before unidata is available. + (cond ((< 64 code 91) (incf code 32)) + ((> code 127) (setq code (unicode-lower code)))) + ;;@@ WARNING: this may, in theory, need to extend newstring + ;; but that never actually occurs as of Unicode 5.1.0, + ;; so I'm just going to ignore it for now... + (multiple-value-bind (hi lo) (surrogates code) + (setf (schar newstring new-index) hi) + (when lo + (setf (schar newstring (incf new-index)) lo))))) + ;;@@ WARNING: see above (do ((index end (1+ index)) (new-index (- (the fixnum end) offset) (1+ new-index))) ((= index offset-slen)) @@ -429,12 +709,53 @@ (setf (schar newstring new-index) (schar string index))) newstring)))) -(defun string-capitalize (string &key (start 0) end) - "Given a string, returns a copy of the string with the first - character of each ``word'' converted to upper-case, and remaining - chars in the word converted to lower case. A ``word'' is defined - to be a string of case-modifiable characters delimited by - non-case-modifiable chars." +(defun string-downcase-full (string &key (start 0) end) + (declare (fixnum start)) + (let* ((string (if (stringp string) string (string string))) + (slen (length string))) + (declare (fixnum slen)) + (with-output-to-string (s) + (with-one-string string start end offset + (let ((offset-slen (+ slen offset))) + (declare (fixnum offset-slen)) + (write-string string s :start offset :end start) + (do ((index start (1+ index))) + ((= index (the fixnum end))) + (declare (fixnum index)) + (multiple-value-bind (code wide) + (codepoint string index) + (when wide (incf index)) + ;; Handle ASCII specially because this is called early in + ;; initialization, before unidata is available. + (cond ((< 64 code 91) + (write-char (code-char (incf code 32)) s)) + ((> code 127) + (write-string (unicode-full-case-lower code) s)) + (t + (multiple-value-bind (hi lo) + (surrogates code) + (write-char hi s) + (when lo + (write-char lo s))))))) + (write-string string s :start end :end offset-slen)))))) + +(defun string-downcase (string &key (start 0) end #+unicode (casing :simple)) + #-unicode + "Given a string, returns a new string that is a copy of it with all + upper case alphabetic characters converted to lowercase." + #+unicode + "Given a string, returns a new string that is a copy of it with all + upper case alphabetic characters converted to lowercase. Casing is + :simple or :full for simple or full case conversion, respectively." + (declare (fixnum start)) + #-unicode + (string-downcase-simple string :start start :end end) + #+unicode + (if (eq casing :simple) + (string-downcase-simple string :start start :end end) + (string-downcase-full string :start start :end end))) + +(defun string-capitalize-simple (string &key (start 0) end) (declare (fixnum start)) (let* ((string (if (stringp string) string (string string))) (slen (length string))) @@ -459,7 +780,7 @@ (setq newword t)) (newword ;;char is first case-modifiable after non-case-modifiable - (setq char (char-upcase char)) + (setq char (char-titlecase char)) (setq newword ())) ;;char is case-modifiable, but not first (t (setq char (char-downcase char)))) @@ -471,6 +792,67 @@ (setf (schar newstring new-index) (schar string index))) newstring)))) +(defun string-capitalize-full (string &key (start 0) end) + (declare (fixnum start)) + (let* ((string (if (stringp string) string (string string))) + (slen (length string))) + (declare (fixnum slen)) + (with-output-to-string (s) + (with-one-string string start end offset + (let ((offset-slen (+ slen offset))) + (declare (fixnum offset-slen)) + (write-string string s :start offset :end start) + (flet ((alphanump (m) + (or (< 47 m 58) (< 64 m 91) (< 96 m 123) + #+(and unicode (not unicode-bootstrap)) + (and (> m 127) + (<= +unicode-category-letter+ (unicode-category m) + (+ +unicode-category-letter+ #x0F)))))) + (do ((index start (1+ index)) + (newword t)) + ((= index (the fixnum end))) + (declare (fixnum index)) + (multiple-value-bind (code wide) + (codepoint string index) + (when wide (incf index)) + (cond ((not (alphanump code)) + (multiple-value-bind (hi lo) + (surrogates code) + (write-char hi s) + (when lo (write-char lo s))) + (setq newword t)) + (newword + ;;char is first case-modifiable after non-case-modifiable + (write-string (unicode-full-case-title code) s) + (setq newword ())) + ;;char is case-modifiable, but not first + (t + (write-string (unicode-full-case-lower code) s)))))) + (write-string string s :start end :end offset-slen)))))) + +(defun string-capitalize (string &key (start 0) end #+unicode (casing :simple)) + #-unicode + "Given a string, returns a copy of the string with the first + character of each ``word'' converted to upper-case, and remaining + chars in the word converted to lower case. A ``word'' is defined + to be a string of case-modifiable characters delimited by + non-case-modifiable chars." + #+unicode + "Given a string, returns a copy of the string with the first + character of each ``word'' converted to upper-case, and remaining + chars in the word converted to lower case. A ``word'' is defined + to be a string of case-modifiable characters delimited by + non-case-modifiable chars. Casing is :simple or :full for + simple or full case conversion, respectively." + + (declare (fixnum start)) + #-unicode + (string-capitalize-simple string :start start :end end) + #+unicode + (if (eq casing :simple) + (string-capitalize-simple string :start start :end end) + (string-capitalize-full string :start start :end end))) + (defun nstring-upcase (string &key (start 0) end) "Given a string, returns that string with all lower case alphabetic characters converted to uppercase." @@ -480,7 +862,21 @@ (do ((index start (1+ index))) ((= index (the fixnum end))) (declare (fixnum index)) - (setf (schar string index) (char-upcase (schar string index))))) + (multiple-value-bind (code wide) (codepoint string index) + (declare (ignore wide)) + ;; Handle ASCII specially because this is called early in + ;; initialization, before unidata is available. + (cond ((< 96 code 123) (decf code 32)) + ((> code 127) (setq code (unicode-upper code)))) + ;;@@ WARNING: this may, in theory, need to extend string + ;; (which, obviously, we can't do here. Unless + ;; STRING is adjustable, maybe) + ;; but that never actually occurs as of Unicode 5.1.0, + ;; so I'm just going to ignore it for now... + (multiple-value-bind (hi lo) (surrogates code) + (setf (schar string index) hi) + (when lo + (setf (schar string (incf index)) lo)))))) save-header)) (defun nstring-downcase (string &key (start 0) end) @@ -492,7 +888,19 @@ (do ((index start (1+ index))) ((= index (the fixnum end))) (declare (fixnum index)) - (setf (schar string index) (char-downcase (schar string index))))) + (multiple-value-bind (code wide) (codepoint string index) + (declare (ignore wide)) + (cond ((< 64 code 91) (incf code 32)) + ((> code 127) (setq code (unicode-lower code)))) + ;;@@ WARNING: this may, in theory, need to extend string + ;; (which, obviously, we can't do here. Unless + ;; STRING is adjustable, maybe) + ;; but that never actually occurs as of Unicode 5.1.0, + ;; so I'm just going to ignore it for now... + (multiple-value-bind (hi lo) (surrogates code) + (setf (schar string index) hi) + (when lo + (setf (schar string (incf index)) lo)))))) save-header)) (defun nstring-capitalize (string &key (start 0) end) @@ -514,12 +922,123 @@ (setq newword t)) (newword ;;char is first case-modifiable after non-case-modifiable - (setf (schar string index) (char-upcase char)) + (setf (schar string index) (char-titlecase char)) (setq newword ())) (t (setf (schar string index) (char-downcase char)))))) save-header)) + +#+unicode +(progn +;; Like string-left-trim, but return the index +(defun string-left-trim-index (char-bag string) + (with-string string + (if (stringp char-bag) + ;; When char-bag is a string, we try to do the right thing. + ;; Convert char-bag to a list of codepoints and compare the + ;; codepoints in the string with this. + (let ((code-bag (with-string char-bag + (do ((index start (1+ index)) + (result nil)) + ((= index end) + (nreverse result)) + (multiple-value-bind (c widep) + (codepoint char-bag index) + (push c result) + (when widep (incf index))))))) + (do ((index start (1+ index))) + ((= index (the fixnum end)) + end) + (declare (fixnum index)) + (multiple-value-bind (c widep) + (codepoint string index) + (unless (find c code-bag) + (return-from string-left-trim-index index)) + (when widep (incf index))))) + ;; When char-bag is a list, we just look at each codepoint of + ;; STRING to see if it's in char-bag. If char-bag contains a + ;; surrogate, we could accidentally trim off a surrogate, + ;; leaving an invalid UTF16 string. + (do ((index start (1+ index))) + ((= index (the fixnum end)) + end) + (declare (fixnum index)) + (multiple-value-bind (c widep) + (codepoint string index) + (unless (find c char-bag :key #'char-code) + (return-from string-left-trim-index index)) + (when widep (incf index))))))) + +(defun string-left-trim (char-bag string) + "Given a set of characters (a list or string) and a string, returns + a copy of the string with the characters in the set removed from the + left end. If the set of characters is a string, surrogates will be + properly handled." + (let ((begin (string-left-trim-index char-bag string))) + (with-string string + (subseq string begin end)))) + +(defun string-right-trim-index (char-bag string) + (with-string string + (if (stringp char-bag) + ;; When char-bag is a string, we try to do the right thing + ;; with surrogates. Convert char-bag to a list of codepoints + ;; and compare the codepoints in the string with this. + (let ((code-bag (with-string char-bag + (do ((index start (1+ index)) + (result nil)) + ((= index end) + result) + (multiple-value-bind (c widep) + (codepoint char-bag index) + (push c result) + (when widep (incf index))))))) + (do ((index (1- end) (1- index))) + ((< index start) + start) + (declare (fixnum index)) + (multiple-value-bind (c widep) + (codepoint string index) + (unless (find c code-bag) + (return-from string-right-trim-index (1+ index))) + (when widep (decf index))))) + ;; When char-bag is a list, we just look at each codepoint of + ;; STRING to see if it's in char-bag. If char-bag contains a + ;; surrogate, we could accidentally trim off a surrogate, + ;; leaving an invalid UTF16 string. + (do ((index (1- end) (1- index))) + ((< index start) + start) + (declare (fixnum index)) + (multiple-value-bind (c widep) + (codepoint string index) + (unless (find c char-bag :key #'char-code) + (return-from string-right-trim-index (1+ index))) + (when widep (decf index))))))) + +(defun string-right-trim (char-bag string) + "Given a set of characters (a list or string) and a string, returns + a copy of the string with the characters in the set removed from the + right end. If the set of characters is a string, surrogates will be + properly handled." + (let ((stop (string-right-trim-index char-bag string))) + (with-string string + (subseq string start stop)))) + +(defun string-trim (char-bag string) + "Given a set of characters (a list or string) and a string, returns a + copy of the string with the characters in the set removed from both + ends. If the set of characters is a string, surrogates will be + properly handled." + (let ((left-end (string-left-trim-index char-bag string)) + (right-end (string-right-trim-index char-bag string))) + (with-string string + (subseq (the simple-string string) left-end right-end)))) +) ; end unicode version + +#-unicode +(progn (defun string-left-trim (char-bag string) "Given a set of characters (a list or string) and a string, returns a copy of the string with the characters in the set removed from the @@ -557,3 +1076,277 @@ (1+ index)) (declare (fixnum index))))) (subseq (the simple-string string) left-end right-end)))) +) ; non-unicode version + +(declaim (inline %glyph-f %glyph-b)) +(defun %glyph-f (string index) + (declare (optimize (speed 3) (space 0) (safety 0) (debug 0)) + (type simple-string string) (type kernel:index index)) + (let* ((prev 0) + (l (length string)) + (c (codepoint string index l)) + (n (+ index (if (> c #xFFFF) 2 1)))) + (declare (type codepoint c) (type kernel:index l n)) + (loop while (< n l) do + (let* ((c (codepoint string n l)) + (d (the (unsigned-byte 8) (unicode-combining-class c)))) + (when (or (zerop d) (< d prev)) + (return)) + (setq prev d) + (incf n (if (> c #xFFFF) 2 1)))) + n)) + +(defun %glyph-b (string index) + (declare (optimize (speed 3) (space 0) (safety 0) (debug 0)) + (type simple-string string) (type kernel:index index)) + (let* ((prev 255) + (n (1- index))) + (declare (type kernel:index n)) + (loop until (< n 0) do + (let* ((c (codepoint string n 0)) + (d (the (unsigned-byte 8) (unicode-combining-class c)))) + (cond ((zerop d) (return)) + ((> d prev) (incf n (if (> c #xFFFF) 2 1)) (return))) + (setq prev d) + (decf n (if (> c #xFFFF) 2 1)))) + n)) + +(defun glyph (string index &key (from-end nil)) + "GLYPH returns the glyph at the indexed position in a string, and the + position of the next glyph (or NIL) as a second value. A glyph is + a substring consisting of the character at INDEX followed by all + subsequent combining characters." + (declare (type simple-string string) (type kernel:index index)) + #-unicode + (char string index) + #+unicode + (with-array-data ((string string) (start) (end)) + (declare (ignore start end)) + (let ((n (if from-end (%glyph-b string index) (%glyph-f string index)))) + (if from-end + (values (subseq string n index) (and (> n 0) n)) + (values (subseq string index n) (and (< n (length string)) n)))))) + +(defun sglyph (string index &key (from-end nil)) + "SGLYPH returns the glyph at the indexed position, the same as GLYPH, + except that the string must be a simple-string" + (declare (type simple-string string) (type kernel:index index)) + #-unicode + (schar string index) + #+unicode + (let ((n (if from-end (%glyph-b string index) (%glyph-f string index)))) + (if from-end + (values (subseq string n index) (and (> n 0) n)) + (values (subseq string index n) (and (< n (length string)) n))))) + +#+unicode +(defun string-reverse* (sequence) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type string sequence)) + (with-string sequence + (let* ((length (- end start)) + (string (make-string length)) + (j length)) + (declare (type kernel:index length j)) + (loop for i = start then n as n = (%glyph-f sequence i) do + (replace string sequence :start1 (decf j (- n i)) :start2 i :end2 n) + while (< n end)) + string))) + +#+unicode +(defun string-nreverse* (sequence) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type string sequence)) + (with-string sequence + (flet ((rev (start end) + (do ((i start (1+ i)) + (j (1- end) (1- j))) + ((>= i j)) + (declare (type kernel:index i j)) + (rotatef (schar sequence i) (schar sequence j))))) + (let ((len end)) + (loop for i = start then n as n = (%glyph-f sequence i) do + (rev i n) while (< n len)) + (rev start end)))) + sequence) + + + + +(defun decompose (string &optional (compatibility t)) + (declare (type string string)) + (let ((result (make-string (cond ((< (length string) 40) + (* 5 (length string))) + ((< (length string) 4096) + (* 2 (length string))) + (t (round (length string) 5/6))))) + (fillptr 0)) + (declare (type kernel:index fillptr)) + (labels ((rec (string start end) + (declare (type simple-string string)) + (do ((i start (1+ i))) + ((= i end)) + (declare (type kernel:index i)) + (multiple-value-bind (code wide) (codepoint string i) + (when wide (incf i)) + (let ((decomp (unicode-decomp code compatibility))) + (if decomp (rec decomp 0 (length decomp)) (out code)))))) + (out (code) + (multiple-value-bind (hi lo) (surrogates code) + (outch hi) + (when lo + (outch lo)) + (let ((cc (unicode-combining-class code))) + (unless (zerop cc) + (order lo cc (- fillptr (if lo 3 2))))))) + (outch (char) + (when (= fillptr (length result)) + (let ((tmp (make-string (round (length result) 5/6)))) + (replace tmp result) + (setq result tmp))) + (setf (schar result fillptr) char) + (incf fillptr)) + (order (wide1 cc last) + (loop until (minusp last) do + (multiple-value-bind (code2 wide2) (codepoint result last) + (let ((cc2 (unicode-combining-class code2))) + (cond ((zerop cc2) (return)) + ((> cc2 cc) + (case (+ (if wide2 2 0) (if wide1 1 0)) + (0 (rotatef (schar result last) + (schar result (1+ last)))) + (1 (rotatef (schar result last) + (schar result (+ last 1)) + (schar result (+ last 2)))) + (2 (rotatef (schar result last) + (schar result (1- last)) + (schar result (1+ last)))) + (3 (rotatef (schar result last) + (schar result (+ last 2))) + (rotatef (schar result (1- last)) + (schar result (1+ last))))) + (decf last (if wide2 2 1))) + (t (return)))))))) + (with-string string + (rec string start end)) + (shrink-vector result fillptr)))) + +(declaim (inline normalized-codepoint-p)) +(defun normalized-codepoint-p (cp form) + (ecase form + (:nfc (unicode-nfc-qc cp)) + (:nfkc (unicode-nfkc-qc cp)) + (:nfd (unicode-nfd-qc cp)) + (:nfkd (unicode-nfkd-qc cp)))) + +;; Perform check to see if string is already normalized. The Unicode +;; example can return YES, NO, or MAYBE. For our purposes, only YES +;; is important, for which we return T. For NO or MAYBE, we return NIL. +(defun normalized-form-p (string &optional (form :nfc)) + (declare (type (member :nfc :nfkc :nfd :nfkd) form) + (optimize (speed 3))) + (with-string string + (let ((last-class 0)) + (declare (type (integer 0 256) last-class)) + (do ((k start (1+ k))) + ((>= k end)) + (declare (type kernel:index k)) + (multiple-value-bind (ch widep) + (codepoint string k end) + (when widep (incf k)) + ;; Handle ASCII specially + (unless (< ch 128) + (let ((class (unicode-combining-class ch))) + (declare (type (unsigned-byte 8) class)) + (when (and (> last-class class) (not (zerop class))) + ;; Definitely not normalized + (return-from normalized-form-p nil)) + (let ((check (normalized-codepoint-p ch form))) + (unless (eq check :y) + (return-from normalized-form-p nil))) + (setf last-class class))))) + t))) + + +;; Compose a string in place. The string must already be in decomposed form. +(defun %compose (target) + (declare (type string target) + (optimize (speed 3))) + (let ((len (length target)) + (starter-pos 0)) + (declare (type kernel:index starter-pos)) + (multiple-value-bind (starter-ch wide) + (codepoint target 0 len) + (let ((comp-pos (if wide 2 1)) + (last-class (unicode-combining-class starter-ch))) + (declare (type (integer 0 256) last-class) + (type kernel:index comp-pos)) + (unless (zerop last-class) + ;; Fix for strings starting with a combining character + (setf last-class 256)) + ;; Loop on decomposed characters, combining where possible + (do ((decomp-pos comp-pos (1+ decomp-pos))) + ((>= decomp-pos len)) + (declare (type kernel:index decomp-pos)) + (multiple-value-bind (ch wide) + (codepoint target decomp-pos len) + (when wide (incf decomp-pos)) + (let ((ch-class (unicode-combining-class ch)) + (composite (get-pairwise-composition starter-ch ch))) + (declare (type (integer 0 256) ch-class)) + (cond ((and composite + (or (< last-class ch-class) (zerop last-class))) + ;; Don't have to worry about surrogate pairs here + ;; because the composite is always in the BMP. + (setf (aref target starter-pos) (code-char composite)) + (setf starter-ch composite)) + (t + (when (zerop ch-class) + (setf starter-pos comp-pos) + (setf starter-ch ch)) + (setf last-class ch-class) + (multiple-value-bind (hi lo) + (surrogates ch) + (setf (aref target comp-pos) hi) + (when lo + (incf comp-pos) + (setf (aref target comp-pos) lo)) + (incf comp-pos))))))) + (shrink-vector target comp-pos))))) + +(defun string-to-nfd (string) + "Convert String to Unicode Normalization Form D (NFD) using the + canonical decomposition. The NFD string is returned" + (decompose string nil)) + +(defun string-to-nfkd (string) + "Convert String to Unicode Normalization Form KD (NFKD) uisng the + compatible decomposition form. The NFKD string is returned." + (decompose string t)) + +#+unicode +(defun string-to-nfc (string) + "Convert String to Unicode Normalization Form C (NFC). If the + string a simple string and is already normalized, the original + string is returned." + (if (normalized-form-p string :nfc) + (if (simple-string-p string) string (coerce string 'simple-string)) + (coerce (if (normalized-form-p string :nfd) + (%compose (copy-seq string)) + (%compose (string-to-nfd string))) + 'simple-string))) + +#-unicode ;; Needed by package.lisp +(defun string-to-nfc (string) + (if (simple-string-p string) string (coerce string 'simple-string))) + +(defun string-to-nfkc (string) + "Convert String to Unicode Normalization Form KC (NFKC). If the + string is a simple string and is already normalized, the original + string is returned." + (if (normalized-form-p string :nfkc) + (if (simple-string-p string) string (coerce string 'simple-string)) + (coerce (if (normalized-form-p string :nfkd) + (%compose (copy-seq string)) + (%compose (string-to-nfkd string))) + 'simple-string))) diff --git a/code/unidata.lisp b/code/unidata.lisp new file mode 100644 index 000000000..5781451a1 --- /dev/null +++ b/code/unidata.lisp @@ -0,0 +1,1054 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: LISP -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/unidata.lisp,v 1.2 2009/06/11 16:03:59 rtoy Exp $") +;;; +;;; ********************************************************************** +;;; +;;; Unicode Database access + +(in-package "LISP") + +(defconstant +unidata-path+ #p"ext-formats:unidata.bin") + +(defstruct unidata + range + name+ + name + category + scase + numeric + decomp + combining + bidi + name1+ + name1 + qc-nfd + qc-nfkd + qc-nfc + qc-nfkc + comp-exclusions + full-case-lower + full-case-title + full-case-upper + case-fold-simple + case-fold-full + ) + +(defvar *unicode-data* (make-unidata)) + +;; The magic number for the unidata.bin file. (It's "*UCD", in +;; big-endian order). +(defconstant +unicode-magic-number+ #x2A554344) + +;; The format version for the unidata.bin file. +(defconstant +unicode-format-version+ 0) + +;; The expected Unicode version. This needs to be synced with +;; build-unidata.lisp. +(defconstant +unicode-major-version+ 5) +(defconstant +unicode-minor-version+ 1) +(defconstant +unicode-update-version+ 0) + +;;; These need to be synched with tools/build-unidata.lisp + +;;; ==== DICTIONARY ==== +;; +;; A Dictionary is a mapping from names to codepoints. +;; +;; Imagine we have the following structure: +;; +;; node = (value . ((char1 . node1) (char2 . node2) ...)) +;; +;; To look up a string, we start at the root node (representing the +;; empty string), and look up the first character in the alist that is +;; (cdr node); assuming the character is found, repeat using the +;; associated node and the next character of the string. After the +;; last character, the current node's value is the value associated +;; with that string (i.e., the codepoint). If at any point the next +;; character is not present in the node, or you reach the end and the +;; value in the current node is NIL, the string is not in the +;; dictionary. +;; +;; As an example, let's have a dictionary containing three words: +;; "cat" = 1, "dog" = 2, "cow" = 3 +;; +;; then we have +;; +;; (nil . (#\c . (nil . (#\a . (nil . (#\t . (1 . nil)))) +;; (#\o . (nil . (#\w . (3 . nil)))))) +;; (#\d . (nil . (#\o . (nil . (#\g . (2 . nil))))))) +;; +;; or, broken down to make it easier to read, +;; +;; root = (nil . (#\c . node1) (#\d . node2)) +;; node1 = (nil . (#\a . node3) (#\o . node4)) +;; node2 = (nil . (#\o . node5)) +;; node3 = (nil . (#\t . node6)) +;; node4 = (nil . (#\w . node7)) +;; node5 = (nil . (#\g . node8)) +;; node6 = (1 . nil) +;; node7 = (3 . nil) +;; node8 = (2 . nil) +;; +;; To look up "dog", start with the root node; +;; look for #\d in the alist at (cdr root) - it maps to node2 +;; look for #\o in the alist at (cdr node2) - it maps to node5 +;; look for #\g in the alist at (cdr node5) - it maps to node8 +;; no more characters, so return the value in node8, which is 2 +;; +;; A Dictionary is just a more compact version of that: +;; +;; There are two pairs of vectors: NEXTV and CODEV is one pair, KEYV +;; and KEYL are the second (ignore NAMEV for now). +;; +;; The "current node" is represented by an index into the NEXTV/CODEV +;; pair. Given node i (initially 0, the root), NEXTV[i] is split into +;; two numbers: x (14 bits) and y (18 bits). n = KEYL[x], and +;; KEYV[x:x+n] is the set of characters that occur in the alist of +;; node i. In the example above, when i=0, KEYL[x] will be 2 and +;; KEYV[x:x+2] will be "cd". If the character you're searching for +;; occurs at x+m, then y+m is the index of the corresponding node. +;; CODEV[i] is the value associated with each node (or -1 for none). +;; +;; The above example could be rendered as: +;; +;; keyv = c d a o t w g +;; keyl = 2 0 2 1 1 1 1 +;; +;; nextv = [0:1][2:3][3:5][4:6][5:7][6:8][1:0][1:0][1:0] +;; codev = -1 -1 -1 -1 -1 -1 1 3 2 +;; +;; To look up "dog", start with i=0 +;; nextv[i] = [0:1] i.e., x=0, y=1 +;; n = keyl[x] = 2 +;; keyv[x:x+n] = "cd" +;; m = (position #\d "cd") = 1 +;; i = y+m = 2 +;; +;; nextv[i] = [3:5] i.e., x=3, y=5 +;; n = keyl[x] = 1 +;; keyv[x:x+n] = "o" +;; m = (position #\o "o") = 0 +;; i = y+m = 5 +;; +;; nextv[i] = [6:8] i.e., x=6, y=8 +;; n = keyl[x] = 1 +;; keyv[x:x+n] = "g" +;; m = (position #\g "g") = 0 +;; i = y+m = 8 +;; +;; codev[i] = 2 +;; +;; +;; But rather than using only the restricted set of characters that +;; occur in Unicode character names, we encode the names using a +;; codebook of up to 256 strings, turning, for example, "LATIN SMALL +;; LETTER A" into "ABCBDBE" (where "A" encodes "LATIN", "B" encodes +;; space, and so on), so we only have to go through 7 nodes to reach +;; the end, instead of 20, reducing the size of the tables. +;; +;; The NAMEV vector is used to walk backwards through the trie, +;; reconstructing the string from the final node index. Again, each +;; entry consists of a 14 bit and an 18 bit number. In the example +;; above, we would have +;; +;; namev = [?:0][?:0][?:0][?:1][?:1][?:2][3:3][3:4][3:5] ? = don't care +;; +;; The high 14 bits give the length of the string; the low 18 bits +;; give the previous index. Having looked up "dog", the final node +;; was 8: +;; +;; i = 8 +;; namev[i] = [3:5] -- the string is 3 characters long +;; nextv[5] = [6:8] i.e., x=6, y=8 +;; z = i-y = 0 +;; keyv[x+z] = "g" -- the string is "__g" +;; i = 5 +;; +;; namev[i] = [?:2] +;; nextv[2] = [3:5] i.e., x=3, y=5 +;; z = i-y = 0 +;; keyv[x+z] = "o" -- the string is "_og" +;; i = 2 +;; +;; namev[i] = [?:0] +;; nextv[0] = [0:1] i.e., x=0, y=1 +;; z = i-y = 1 +;; keyv[x+z] = "d" -- the string is "dog" +;; i = 0 (finished) + +(defstruct dictionary + (cdbk (ext:required-argument) :read-only t :type simple-vector) + (keyv (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 8) (*))) + (keyl (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 8) (*))) + (codev (ext:required-argument) :read-only t + :type (simple-array (signed-byte 32) (*))) + (nextv (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 32) (*))) + (namev (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 32) (*)))) + +(defstruct range + (codes (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 32) (*)))) + + +;;; ==== NTRIE ==== +;; +;; An NTrie is a mapping from codepoints to integers. +;; +;; The codepoint is split into three pieces, x:y:z where x+y+z = 21 +;; bits. The value of the SPLIT slot encodes y-1 in the upper 4 bits +;; and z-1 in the lower 4 bits. I.e., if SPLIT is #x63, the split is +;; 10:7:4 +;; +;; p = HVEC[x] is either an index into MVEC or #xFFFF representing no +;; value. q = MVEC[y+p] is either an index into LVEC or #xFFFF +;; representing no value. LVEC[z+q] is the value associated with the +;; codepoint. +;; +(defstruct ntrie + (split (ext:required-argument) :read-only t + :type (unsigned-byte 8)) + (hvec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 16) (*))) + (mvec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 16) (*)))) + +(defstruct (ntrie1 (:include ntrie)) + (lvec (ext:required-argument) :read-only t + :type (simple-array bit (*)))) + +(defstruct (ntrie2 (:include ntrie)) + (lvec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 2) (*)))) + +(defstruct (ntrie4 (:include ntrie)) + (lvec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 4) (*)))) + +(defstruct (ntrie8 (:include ntrie)) + (lvec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 8) (*)))) + +(defstruct (ntrie16 (:include ntrie)) + (lvec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 16) (*)))) + +(defstruct (ntrie32 (:include ntrie)) + (lvec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 32) (*)))) + + +(defstruct (scase (:include ntrie32)) + (svec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 16) (*)))) + +(defstruct (decomp (:include ntrie32)) + (tabl (ext:required-argument) :read-only t :type simple-string)) + +(defstruct (full-case (:include ntrie32)) + (tabl (ext:required-argument) :read-only t :type simple-string)) + +(defstruct (case-fold-full (:include decomp))) + +(defstruct (bidi (:include ntrie16)) + (tabl (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 16) (*)))) + +(defconstant +decomposition-type+ + '(nil "<compat>" "<initial>" "<medial>" "<final>" "<isolated>" + "<super>" "<sub>" "<fraction>" "<font>" "<noBreak>" + "<vertical>" "<wide>" "<narrow>" "<small>" "<square>" "<circle>")) + +(defconstant +bidi-class+ + #("L" "LRE" "LRO" "R" "AL" "RLE" "RLO" "PDF" "EN" "ES" "ET" "AN" "CS" + "NSM" "BN" "B" "S" "WS" "ON")) + + +(defconstant +hangul-choseong+ ; U+1100..U+1112 + #("G" "GG" "N" "D" "DD" "R" "M" "B" "BB" "S" "SS" "" "J" "JJ" "C" "K" "T" "P" + "H")) + +(defconstant +hangul-jungseong+ ; U+1161..U+1175 + #("A" "AE" "YA" "YAE" "EO" "E" "YEO" "YE" "O" "WA" "WAE" "OE" "YO" "U" "WEO" + "WE" "WI" "YU" "EU" "YI" "I")) + +(defconstant +hangul-jongseong+ ; U+11A8..U+11C2 + #("G" "GG" "GS" "N" "NJ" "NH" "D" "L" "LG" "LM" "LB" "LS" "LT" "LP" "LH" "M" + "B" "BS" "S" "SS" "NG" "J" "C" "K" "T" "P" "H")) + + + +(defun search-dictionary (string dictionary) + (declare (optimize (speed 3) (space 0) (safety 0) + (ext:inhibit-warnings 3)) + (type string string) (type dictionary dictionary)) + (let* ((codebook (dictionary-cdbk dictionary)) + (current 0) + (posn 0) + (stack '())) + (declare (type (unsigned-byte 32) current) (type lisp::index posn)) + (loop + (let ((keyv (ash (aref (dictionary-nextv dictionary) current) -18))) + (dotimes (i (aref (dictionary-keyl dictionary) keyv) + (if stack + (let ((next (pop stack))) + (setq posn (car next) current (cdr next))) + (return-from search-dictionary nil))) + (let* ((str (aref codebook (aref (dictionary-keyv dictionary) + (+ keyv i)))) + (len (length str))) + (declare (type simple-base-string str)) + (when (and (>= (length string) (+ posn len)) + (string= string str :start1 posn :end1 (+ posn len))) + (setq current + (+ (logand (aref (dictionary-nextv dictionary) current) + #x3FFFF) + i)) + (when (= (incf posn len) (length string)) + (return-from search-dictionary current)) + (return)) ; from DOTIMES - loop again + (when (or (string= str " ") (string= str "-")) + (push (cons posn + (+ (logand (aref (dictionary-nextv dictionary) + current) + #x3FFFF) + i)) + stack)))))))) + +(defun search-range (code range) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type codepoint code) (type range range)) + (let* ((set (range-codes range)) + (min 0) + (max (length set))) + (declare (type lisp::index min max)) + (loop for n of-type lisp::index = (logand #xFFFFFE (ash (+ min max) -1)) do + (let* ((dmin (logand #x1FFFFF (aref set n))) + (dmax (logand #x1FFFFF (aref set (1+ n))))) + (cond ((< code dmin) + (when (= (the lisp::index (setq max n)) min) (return nil))) + ((> code dmax) + (when (= (setq min (+ n 2)) max) (return nil))) + (t (return (ash n -1)))))))) + +(declaim (inline qref qref1 qref2 qref4 qref8 qref16 qref32)) +(defun qref (ntrie code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type ntrie ntrie) (type codepoint code)) + (let* ((mbits (1+ (ash (ntrie-split ntrie) -4))) + (lbits (1+ (logand (ntrie-split ntrie) 15))) + (hvec (ntrie-hvec ntrie)) + (mvec (ntrie-mvec ntrie)) + (hi (aref hvec (ash code (- (+ mbits lbits))))) + (md (logand (ash code (- lbits)) (lognot (ash -1 mbits)))) + (lo (logand code (lognot (ash -1 lbits))))) + (declare (type (simple-array (unsigned-byte 16) (*)) hvec mvec)) + (if (= hi #xFFFF) + nil + (let ((md (aref mvec (+ hi md)))) + (if (= md #xFFFF) + nil + (+ md lo)))))) + +(defun qref1 (ntrie code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type ntrie1 ntrie) (type codepoint code)) + (let ((n (qref ntrie code))) + (if n (aref (ntrie1-lvec ntrie) n) 0))) + +(defun qref2 (ntrie code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type ntrie2 ntrie) (type codepoint code)) + (let ((n (qref ntrie code))) + (if n (aref (ntrie2-lvec ntrie) n) 0))) + +(defun qref4 (ntrie code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type ntrie4 ntrie) (type codepoint code)) + (let ((n (qref ntrie code))) + (if n (aref (ntrie4-lvec ntrie) n) 0))) + +(defun qref8 (ntrie code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type ntrie8 ntrie) (type codepoint code)) + (let ((n (qref ntrie code))) + (if n (aref (ntrie8-lvec ntrie) n) 0))) + +(defun qref16 (ntrie code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type ntrie16 ntrie) (type codepoint code)) + (let ((n (qref ntrie code))) + (if n (aref (ntrie16-lvec ntrie) n) 0))) + +(defun qref32 (ntrie code) + (declare (optimize (speed 3) (space 0) (safety 0) + (ext:inhibit-warnings 3)) ;; shut up about boxing return + (type ntrie32 ntrie) (type codepoint code)) + (let ((n (qref ntrie code))) + (if n (aref (ntrie32-lvec ntrie) n) 0))) + + + +(defun unidata-locate (stream index) + (labels ((read16 (stm) + (logior (ash (read-byte stm) 8) (read-byte stm))) + (read32 (stm) + (logior (ash (read16 stm) 16) (read16 stm)))) + (unless (and (= (read32 stream) +unicode-magic-number+) + (= (read-byte stream) +unicode-format-version+)) + (error "The Unicode data file is broken.")) + (let ((a (read-byte stream)) + (b (read-byte stream)) + (c (read-byte stream))) + (unless (and (= a +unicode-major-version+) + (= b +unicode-minor-version+) + (= c +unicode-update-version+)) + (warn "Unicode data file is for Unicode ~D.~D.~D" a b c))) + (dotimes (i index) + (when (zerop (read32 stream)) + (return-from unidata-locate nil))) + (let ((n (read32 stream))) + (and (plusp n) (file-position stream n))))) + +(defmacro defloader (name (stm locn) &body body) + `(defun ,name () + (labels ((read16 (stm) + (logior (ash (read-byte stm) 8) (read-byte stm))) + (read32 (stm) + (logior (ash (read16 stm) 16) (read16 stm))) + (read-ntrie (bits stm) + (let* ((split (read-byte stm)) + (hlen (read16 stm)) + (mlen (read16 stm)) + (llen (read16 stm)) + (hvec (make-array hlen + :element-type '(unsigned-byte 16))) + (mvec (make-array mlen + :element-type '(unsigned-byte 16))) + (lvec (make-array llen + :element-type (list 'unsigned-byte bits)))) + (read-vector hvec stm :endian-swap :network-order) + (read-vector mvec stm :endian-swap :network-order) + (read-vector lvec stm :endian-swap :network-order) + (values split hvec mvec lvec)))) + (declare (ignorable #'read16 #'read32 #'read-ntrie)) + (with-open-file (,stm +unidata-path+ :direction :input + :element-type '(unsigned-byte 8)) + (unless (unidata-locate ,stm ,locn) + (error "No data in file.")) + ,@body)))) + +(defloader load-range (stm 0) + (let* ((n (read32 stm)) + (codes (make-array n :element-type '(unsigned-byte 32)))) + (read-vector codes stm :endian-swap :network-order) + (setf (unidata-range *unicode-data*) + (make-range :codes codes)))) + +(defloader load-names (stm 1) + (let* ((cb (1+ (read-byte stm))) + (kv (read16 stm)) + (cv (read32 stm)) + (codebook (make-array cb)) + (keyv (make-array kv :element-type '(unsigned-byte 8))) + (keyl (make-array kv :element-type '(unsigned-byte 8))) + (codev (make-array cv :element-type '(signed-byte 32))) + (nextv (make-array cv :element-type '(unsigned-byte 32))) + (namev (make-array cv :element-type '(unsigned-byte 32)))) + (dotimes (i cb) + (let* ((n (read-byte stm)) + (s (make-string n))) + (setf (aref codebook i) s) + (dotimes (i n) (setf (char s i) (code-char (read-byte stm)))))) + (read-vector keyv stm :endian-swap :network-order) + (read-vector keyl stm :endian-swap :network-order) + (read-vector codev stm :endian-swap :network-order) + (read-vector nextv stm :endian-swap :network-order) + (read-vector namev stm :endian-swap :network-order) + (setf (unidata-name+ *unicode-data*) + (make-dictionary :cdbk codebook :keyv keyv :keyl keyl + :codev codev :nextv nextv :namev namev)))) + +(defloader load-name (stm 2) + (multiple-value-bind (split hvec mvec lvec) (read-ntrie 32 stm) + (setf (unidata-name *unicode-data*) + (make-ntrie32 :split split :hvec hvec :mvec mvec :lvec lvec)))) + +(defloader load-categories (stm 3) + (multiple-value-bind (split hvec mvec lvec) (read-ntrie 8 stm) + (setf (unidata-category *unicode-data*) + (make-ntrie8 :split split :hvec hvec :mvec mvec :lvec lvec)))) + +(defloader load-scase (stm 4) + (multiple-value-bind (split hvec mvec lvec) (read-ntrie 32 stm) + (let* ((slen (read-byte stm)) + (svec (make-array slen :element-type '(unsigned-byte 16)))) + (read-vector svec stm :endian-swap :network-order) + (setf (unidata-scase *unicode-data*) + (make-scase :split split :hvec hvec :mvec mvec :lvec lvec + :svec svec))))) + +(defloader load-numerics (stm 5) + (multiple-value-bind (split hvec mvec lvec) (read-ntrie 32 stm) + (setf (unidata-numeric *unicode-data*) + (make-ntrie32 :split split :hvec hvec :mvec mvec :lvec lvec)))) + +(defloader load-decomp (stm 6) + (multiple-value-bind (split hvec mvec lvec) (read-ntrie 32 stm) + (let* ((tlen (read16 stm)) + (tabl (make-array tlen :element-type '(unsigned-byte 16)))) + (read-vector tabl stm :endian-swap :network-order) + (setf (unidata-decomp *unicode-data*) + (make-decomp :split split :hvec hvec :mvec mvec :lvec lvec + :tabl (map 'simple-string #'code-char tabl)))))) + +(defloader load-combining (stm 7) + (multiple-value-bind (split hvec mvec lvec) (read-ntrie 8 stm) + (setf (unidata-combining *unicode-data*) + (make-ntrie8 :split split :hvec hvec :mvec mvec :lvec lvec)))) + +(defloader load-bidi (stm 8) + (multiple-value-bind (split hvec mvec lvec) (read-ntrie 16 stm) + (let* ((tlen (read-byte stm)) + (tabl (make-array tlen :element-type '(unsigned-byte 16)))) + (read-vector tabl stm :endian-swap :network-order) + (setf (unidata-bidi *unicode-data*) + (make-bidi :split split :hvec hvec :mvec mvec :lvec lvec + :tabl tabl))))) + +(defloader load-1.0-names (stm 9) + (let* ((cb (1+ (read-byte stm))) + (kv (read16 stm)) + (cv (read32 stm)) + (codebook (make-array cb)) + (keyv (make-array kv :element-type '(unsigned-byte 8))) + (keyl (make-array kv :element-type '(unsigned-byte 8))) + (codev (make-array cv :element-type '(signed-byte 32))) + (nextv (make-array cv :element-type '(unsigned-byte 32))) + (namev (make-array cv :element-type '(unsigned-byte 32)))) + (dotimes (i cb) + (let* ((n (read-byte stm)) + (s (make-string n))) + (setf (aref codebook i) s) + (dotimes (i n) (setf (char s i) (code-char (read-byte stm)))))) + (read-vector keyv stm :endian-swap :network-order) + (read-vector keyl stm :endian-swap :network-order) + (read-vector codev stm :endian-swap :network-order) + (read-vector nextv stm :endian-swap :network-order) + (read-vector namev stm :endian-swap :network-order) + (setf (unidata-name1+ *unicode-data*) + (make-dictionary :cdbk codebook :keyv keyv :keyl keyl + :codev codev :nextv nextv :namev namev)))) + +(defloader load-1.0-name (stm 10) + (multiple-value-bind (split hvec mvec lvec) (read-ntrie 32 stm) + (setf (unidata-name1 *unicode-data*) + (make-ntrie32 :split split :hvec hvec :mvec mvec :lvec lvec)))) + +(defloader load-normalization-qc (stm 11) + (multiple-value-bind (split hvec mvec lvec) (read-ntrie 1 stm) + (setf (unidata-qc-nfd *unicode-data*) + (make-ntrie1 :split split :hvec hvec :mvec mvec :lvec lvec))) + (multiple-value-bind (split hvec mvec lvec) (read-ntrie 1 stm) + (setf (unidata-qc-nfkd *unicode-data*) + (make-ntrie1 :split split :hvec hvec :mvec mvec :lvec lvec))) + (multiple-value-bind (split hvec mvec lvec) (read-ntrie 2 stm) + (setf (unidata-qc-nfc *unicode-data*) + (make-ntrie2 :split split :hvec hvec :mvec mvec :lvec lvec))) + (multiple-value-bind (split hvec mvec lvec) (read-ntrie 2 stm) + (setf (unidata-qc-nfkc *unicode-data*) + (make-ntrie2 :split split :hvec hvec :mvec mvec :lvec lvec)))) + +(defloader load-composition-exclusions (stm 12) + (let* ((len (read16 stm)) + (ex (make-array len :element-type '(unsigned-byte 32)))) + (read-vector ex stm :endian-swap :network-order) + (setf (unidata-comp-exclusions *unicode-data*) ex))) + +(defloader load-full-case-lower (stm 13) + (multiple-value-bind (split hvec mvec lvec) + (read-ntrie 32 stm) + (let* ((tlen (read16 stm)) + (tabl (make-array tlen :element-type '(unsigned-byte 16)))) + (read-vector tabl stm :endian-swap :network-order) + (setf (unidata-full-case-lower *unicode-data*) + (make-full-case :split split :hvec hvec :mvec mvec :lvec lvec + :tabl (map 'simple-string #'code-char tabl)))))) + +(defloader load-full-case-title (stm 14) + (multiple-value-bind (split hvec mvec lvec) + (read-ntrie 32 stm) + (let* ((tlen (read16 stm)) + (tabl (make-array tlen :element-type '(unsigned-byte 16)))) + (read-vector tabl stm :endian-swap :network-order) + (setf (unidata-full-case-title *unicode-data*) + (make-full-case :split split :hvec hvec :mvec mvec :lvec lvec + :tabl (map 'simple-string #'code-char tabl)))))) + +(defloader load-full-case-upper (stm 15) + (multiple-value-bind (split hvec mvec lvec) + (read-ntrie 32 stm) + (let* ((tlen (read16 stm)) + (tabl (make-array tlen :element-type '(unsigned-byte 16)))) + (read-vector tabl stm :endian-swap :network-order) + (setf (unidata-full-case-upper *unicode-data*) + (make-full-case :split split :hvec hvec :mvec mvec :lvec lvec + :tabl (map 'simple-string #'code-char tabl)))))) + +(defloader load-case-fold-simple (stm 16) + (multiple-value-bind (split hvec mvec lvec) + (read-ntrie 32 stm) + (setf (unidata-case-fold-simple *unicode-data*) + (make-ntrie32 :split split :hvec hvec :mvec mvec :lvec lvec)))) + +(defloader load-case-fold-full (stm 17) + (multiple-value-bind (split hvec mvec lvec) + (read-ntrie 32 stm) + (let* ((tlen (read16 stm)) + (tabl (make-array tlen :element-type '(unsigned-byte 16)))) + (read-vector tabl stm :endian-swap :network-order) + (setf (unidata-case-fold-full *unicode-data*) + (make-case-fold-full :split split :hvec hvec :mvec mvec :lvec lvec + :tabl (map 'simple-string #'code-char tabl)))))) + +;;; Accessor functions. + +(defvar *reverse-hangul-choseong*) +(defvar *reverse-hangul-jungseong*) +(defvar *reverse-hangul-jongseong*) + +(defun unicode-name-to-codepoint (name) + (declare (type string name)) + (cond ((and (> (length name) 22) + (or (string= name "CJK UNIFIED" :end1 11) + (string= name "CJKUNIFIED" :end1 10))) + (let* ((x (search "IDEOGRAPH" name)) + (n (and x (position-if (lambda (x) (digit-char-p x 16)) name + :start (+ x 9))))) + (and n (values (parse-integer name :start n :radix 16))))) + ((and (> (length name) 15) + (or (string= name "HANGUL SYLLABLE" :end1 15) + (string= name "HANGULSYLLABLE" :end1 14))) + (let* ((x (search "SYLLABLE" name)) + (n (position-if (lambda (x) (alpha-char-p x)) name + :start (+ x 8))) + (ll nil) (vv nil) (tt 0)) + (unless n (return-from unicode-name-to-codepoint nil)) + (unless (boundp '*reverse-hangul-choseong*) + (setq *reverse-hangul-choseong* + (sort (coerce (loop for x across +hangul-choseong+ + as i upfrom 0 by 588 + collect (cons x i)) + 'vector) + #'> :key (lambda (x) (length (car x))))) + (setq *reverse-hangul-jungseong* + (sort (coerce (loop for x across +hangul-jungseong+ + as i upfrom 0 by 28 + collect (cons x i)) + 'vector) + #'> :key (lambda (x) (length (car x))))) + (setq *reverse-hangul-jongseong* + (sort (coerce (loop for x across +hangul-jongseong+ + as i upfrom 1 + collect (cons x i)) + 'vector) + #'> :key (lambda (x) (length (car x)))))) + (loop for (x . y) across *reverse-hangul-choseong* + when (and (<= (+ n (length x)) (length name)) + (string= name x :start1 n :end1 (+ n (length x)))) + do (incf n (length x)) + (setq ll y) + (return)) + (loop for (x . y) across *reverse-hangul-jungseong* + when (and (<= (+ n (length x)) (length name)) + (string= name x :start1 n :end1 (+ n (length x)))) + do (incf n (length x)) + (setq vv y) + (return)) + (when (< n (length name)) + (loop for (x . y) across *reverse-hangul-jongseong* + when (and (<= (+ n (length x)) (length name)) + (string= name x :start1 n :end1 (+ n (length x)))) + do (incf n (length x)) + (setq tt y) + (return))) + (if (and ll vv (= n (length name))) + (+ ll vv tt #xAC00) + nil))) + (t + (unless (unidata-name+ *unicode-data*) (load-names)) + (let* ((names (unidata-name+ *unicode-data*)) + (n (search-dictionary name names))) + (when n + (let ((cp (aref (dictionary-codev names) n))) + (if (minusp cp) nil cp))))))) + +(defun unicode-1.0-name-to-codepoint (name) + (declare (type string name)) + (unless (unidata-name1+ *unicode-data*) (load-1.0-names)) + (let* ((names (unidata-name1+ *unicode-data*)) + (n (search-dictionary name names))) + (when n + (let ((cp (aref (dictionary-codev names) n))) + (if (minusp cp) nil cp))))) + + +(defun unicode-name+ (code ntrie dict) + (declare (optimize (speed 3) (space 0) (safety 0) + (ext:inhibit-warnings 3)) + (type codepoint code) + (type ntrie32 ntrie) (type dictionary dict)) + (let ((n (qref32 ntrie code))) + (when (plusp n) + (let* ((codebook (dictionary-cdbk dict)) + (namev (dictionary-namev dict)) + (nextv (dictionary-nextv dict)) + (keyv (dictionary-keyv dict)) + (p (ash (aref namev n) -18)) + (s (make-string p))) + (loop while (plusp n) do + (let* ((prev (logand (aref namev n) #x3FFFF)) + (temp (aref nextv prev)) + (base (logand temp #x3FFFF)) + (str (aref codebook + (aref keyv (+ (ash temp -18) (- n base)))))) + (declare (type simple-base-string str)) + (setq p (- p (length str)) n prev) + (replace s str :start1 p))) + s)))) + +(defun unicode-name (code) + (cond ((or (<= #x3400 code #x4DB5) ; CJK Ideograph Extension A + (<= #x4E00 code #x9FC3) ; CJK Ideograph + (<= #x20000 code #x2A6D6)) ; CJK Ideograph Extension B + (format nil "CJK UNIFIED IDEOGRAPH-~4,'0X" code)) + ((<= #xAC00 code #xD7A3) ; Hangul Syllable + (apply #'concatenate 'string "HANGUL SYLLABLE " + (loop for ch across (unicode-decomp code) + as code = (char-code ch) + collect (cond ((<= #x1100 code #x1112) + (aref +hangul-choseong+ (- code #x1100))) + ((<= #x1161 code #x1175) + (aref +hangul-jungseong+ (- code #x1161))) + ((<= #x11A8 code #x11C2) + (aref +hangul-jongseong+ (- code #x11A8))))))) + (t + (unless (unidata-name+ *unicode-data*) (load-names)) + (unless (unidata-name *unicode-data*) (load-name)) + (unicode-name+ code (unidata-name *unicode-data*) + (unidata-name+ *unicode-data*))))) + +(defun unicode-1.0-name (code) + (unless (unidata-name1+ *unicode-data*) (load-1.0-names)) + (unless (unidata-name1 *unicode-data*) (load-1.0-name)) + (unicode-name+ code (unidata-name1 *unicode-data*) + (unidata-name1+ *unicode-data*))) + +(declaim (inline unicode-category)) +(defun unicode-category (code) + (declare (type codepoint code)) + (unless (unidata-category *unicode-data*) (load-categories)) + (qref8 (the ntrie8 (unidata-category *unicode-data*)) code)) + +(defun unicode-category-string (code) + (let ((n (unicode-category code)) + (s (make-string 2))) + (setf (schar s 0) (schar "CZMPNLS?????????" (ldb (byte 4 4) n)) + (schar s 1) (schar "nsifepkcdmulto??" (ldb (byte 4 0) n))) + s)) + +(declaim (inline unicode-assigned-codepoint-p)) +(defun unicode-assigned-codepoint-p (code) + (not (zerop (unicode-category code)))) + +;; Look at unicode-category-string to see how we get these numbers. +;; +unicode-category-graphic+ is the first graphic character +;; +unicode-category-letter+ is the first letter +;; +unicode-category-upper+, +unicode-category-lower+, +unicode-category-title+ +;; are uppercase, lowercase, and titlecase letters respectively. +(defconstant +unicode-category-graphic+ #x30) +(defconstant +unicode-category-letter+ #x50) +(defconstant +unicode-category-upper+ #x5a) +(defconstant +unicode-category-lower+ #x5b) +(defconstant +unicode-category-title+ #x5c) +(defconstant +unicode-category-other+ #x5d) + +(defun unicode-upper (code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type codepoint code)) + (unless (unidata-scase *unicode-data*) (load-scase)) + (let* ((scase (unidata-scase *unicode-data*)) + (n (logand (qref32 scase code) #xFF))) + (if (zerop n) + code + (let* ((m (aref (scase-svec scase) (logand n #x7F)))) + (if (logbitp 7 n) (+ code m) (- code m)))))) + +(defun unicode-lower (code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type codepoint code)) + (unless (unidata-scase *unicode-data*) (load-scase)) + (let* ((scase (unidata-scase *unicode-data*)) + (n (logand (ash (qref32 scase code) -8) #xFF))) + (if (zerop n) + code + (let ((m (aref (scase-svec scase) (logand n #x7F)))) + (if (logbitp 7 n) (+ code m) (- code m)))))) + +(defun unicode-title (code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type codepoint code)) + (unless (unidata-scase *unicode-data*) (load-scase)) + (let* ((scase (unidata-scase *unicode-data*)) + (n (logand (ash (qref32 scase code) -16) #xFF))) + (if (zerop n) + code + (let ((m (aref (scase-svec scase) (logand n #x7F)))) + (if (logbitp 7 n) (+ code m) (- code m)))))) + +(defun unicode-num1 (code) + (declare (type codepoint code)) + (unless (unidata-numeric *unicode-data*) (load-numerics)) + (let ((n (qref32 (unidata-numeric *unicode-data*) code))) + (if (logbitp 25 n) (logand (ash n -3) #xF) nil))) + +(defun unicode-num2 (code) + (declare (type codepoint code)) + (unless (unidata-numeric *unicode-data*) (load-numerics)) + (let ((n (qref32 (unidata-numeric *unicode-data*) code))) + (if (logbitp 24 n) (logand (ash n -3) #xF) nil))) + +(defun unicode-num3 (code) + (declare (type codepoint code)) + (unless (unidata-numeric *unicode-data*) (load-numerics)) + (let ((n (qref32 (unidata-numeric *unicode-data*) code))) + (if (logbitp 23 n) + (let ((num (/ (logand (ash n -3) #x1FFFF) (1+ (logand n 7))))) + (if (logbitp 20 n) (- num) num)) + nil))) + +(defun unicode-decomp (code &optional (compatibility t)) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type codepoint code)) + (if (<= #xAC00 code #xD7A3) + ;; Hangul syllables. (See + ;; http://www.unicode.org/reports/tr15/#Hangul for the + ;; algorithm.) + (multiple-value-bind (q1 r1) + (truncate (- code #xAC00) 588) + (declare (type (integer 0 18) q1) (type (integer 0 587) r1)) + (multiple-value-bind (q2 r2) + (truncate r1 28) + (declare (type (integer 0 20) q2) (type (integer 0 27) r2)) + (let ((decomp (make-string (if (zerop r2) 2 3)))) + (setf (schar decomp 0) (code-char (+ #x1100 q1)) + (schar decomp 1) (code-char (+ #x1161 q2))) + (unless (zerop r2) + (setf (schar decomp 2) (code-char (+ #x11A7 r2)))) + decomp))) + (progn + (unless (unidata-decomp *unicode-data*) (load-decomp)) + (let* ((decomp (unidata-decomp *unicode-data*)) + (n (qref32 decomp code)) + (type (ldb (byte 5 27) n))) + (if (= n 0) + nil + (if (or compatibility (zerop type)) + (let ((off (logand n #xFFFF)) + (len (ldb (byte 6 16) n))) + (values (subseq (decomp-tabl decomp) off (+ off len)) + type)) + nil)))))) + +(declaim (ftype (function (codepoint) (unsigned-byte 8)) + unicode-combining-class)) +(defun unicode-combining-class (code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type codepoint code)) + (unless (unidata-combining *unicode-data*) (load-combining)) + (the (unsigned-byte 8) (qref8 (unidata-combining *unicode-data*) code))) + +(defun unicode-bidi-class (code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type codepoint code)) + (unless (unidata-bidi *unicode-data*) (load-bidi)) + (logand (qref16 (unidata-bidi *unicode-data*) code) #x1F)) + +(defun unicode-bidi-class-string (code) + (aref +bidi-class+ (unicode-bidi-class code))) + +(defun unicode-bidi-mirror-p (code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type codepoint code)) + (unless (unidata-bidi *unicode-data*) (load-bidi)) + (logbitp 5 (qref16 (unidata-bidi *unicode-data*) code))) + +(defun unicode-mirror-codepoint (code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type codepoint code)) + (unless (unidata-bidi *unicode-data*) (load-bidi)) + (let* ((d (unidata-bidi *unicode-data*)) + (x (ash (qref16 d code) -6)) + (i (logand x #x0F)) + (n (if (logbitp 5 x) (aref (bidi-tabl d) i) i))) + (cond ((= x 0) nil) + ((logbitp 4 x) (- code n)) + (t (+ code n))))) + +(declaim (inline unicode-nfc-qc unicode-nfkc-qc + unicode-nfd-qc unicode-nfkd-qc)) + +(defun unicode-nfc-qc (code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type codepoint code)) + (unless (unidata-qc-nfc *unicode-data*) (load-normalization-qc)) + (ecase (qref2 (unidata-qc-nfc *unicode-data*) code) + (0 :Y) (1 :M) (2 :N))) + +(defun unicode-nfkc-qc (code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type codepoint code)) + (unless (unidata-qc-nfkc *unicode-data*) (load-normalization-qc)) + (ecase (qref2 (unidata-qc-nfkc *unicode-data*) code) + (0 :Y) (1 :M) (2 :N))) + +(defun unicode-nfd-qc (code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type codepoint code)) + (unless (unidata-qc-nfd *unicode-data*) (load-normalization-qc)) + (ecase (qref1 (unidata-qc-nfd *unicode-data*) code) + (0 :Y) (1 :N))) + +(defun unicode-nfkd-qc (code) + (declare (optimize (speed 3) (space 0) (safety 0)) + (type codepoint code)) + (unless (unidata-qc-nfkd *unicode-data*) (load-normalization-qc)) + (ecase (qref1 (unidata-qc-nfkd *unicode-data*) code) + (0 :Y) (1 :N))) + +(defun unicode-composition-exclusions () + (unless (unidata-comp-exclusions *unicode-data*) + (load-composition-exclusions)) + (unidata-comp-exclusions *unicode-data*)) + +(defun %unicode-full-case (code data default) + (let* ((n (qref32 data code))) + (if (= n 0) + (let ((s (make-string 2))) + (multiple-value-bind (hi lo) + (surrogates (funcall default code)) + (setf (schar s 0) hi) + (if lo + (setf (schar s 1) lo) + (shrink-vector s 1))) + s) + (let ((off (logand n #xffff)) + (len (ldb (byte 6 16) n))) + (subseq (full-case-tabl data) off (+ off len)))))) + +(defun unicode-full-case-lower (code) + (unless (unidata-full-case-lower *unicode-data*) + (load-full-case-lower)) + (%unicode-full-case code (unidata-full-case-lower *unicode-data*) #'unicode-lower)) + +(defun unicode-full-case-title (code) + (unless (unidata-full-case-title *unicode-data*) + (load-full-case-title)) + (%unicode-full-case code (unidata-full-case-title *unicode-data*) #'unicode-title)) + +(defun unicode-full-case-upper (code) + (unless (unidata-full-case-upper *unicode-data*) + (load-full-case-upper)) + (%unicode-full-case code (unidata-full-case-upper *unicode-data*) #'unicode-upper)) + +(defun unicode-case-fold-simple (code) + (unless (unidata-case-fold-simple *unicode-data*) + (load-case-fold-simple)) + (let* ((data (unidata-case-fold-simple *unicode-data*)) + (n (qref32 data code))) + (if (= n 0) + code + n))) + +(defun unicode-case-fold-full (code) + (unless (unidata-case-fold-full *unicode-data*) + (load-case-fold-full)) + (let* ((data (unidata-case-fold-full *unicode-data*)) + (n (qref32 data code))) + (if (= n 0) + (string (code-char (unicode-case-fold-simple code))) + (let ((off (logand n #xffff)) + (len (ldb (byte 6 16) n))) + (subseq (case-fold-full-tabl data) off (+ off len)))))) + + +;; Build the composition pair table. +(defun build-composition-table () + (let ((table (make-hash-table))) + (dotimes (cp #x10ffff) + ;; Ignore Hangul characters, which can be done algorithmically. + (unless (<= #xac00 cp #xd7a3) + (let ((decomp (unicode-decomp cp nil))) + ;; Also ignore any characters whose canonical decomposition + ;; consists of a sequence of characters, the first of which has a + ;; non-zero combining class + (when (and decomp + (= (length decomp) 2) + (zerop (unicode-combining-class (char-code (aref decomp 0))))) + (let ((c1 (char-code (aref decomp 0))) + (c2 (char-code (aref decomp 1)))) + (setf (gethash (logior (ash c1 16) c2) table) cp)))))) + ;; Remove any in the exclusion list + (loop for cp across (unicode-composition-exclusions) + do + (let ((decomp (unicode-decomp cp nil))) + (when (and decomp (= (length decomp) 2)) + (let ((c1 (char-code (aref decomp 0))) + (c2 (char-code (aref decomp 1)))) + (remhash (logior (ash c1 16) c2) table))))) + (values table))) + +(defvar *composition-pair-table* nil) + +;; Based on the sample code from +;; http://www.unicode.org/reports/tr15/#Hangul +(declaim (inline compose-hangul)) +(defun compose-hangul (c1 c2) + (declare (type codepoint c1 c2) + (optimize (speed 3))) + (let ((index-l (- c1 #x1100))) + (cond ((and (<= 0 index-l) + (< index-l 19)) + (let ((index-v (- c2 #x1161))) + (when (and (<= 0 index-v) + (< index-v 21)) + (+ #xac00 (* 28 (+ (* index-l 21) index-v)))))) + (t + (let ((index-s (- c1 #xac00))) + (when (and (<= 0 index-s) + (< index-s 11172) + (zerop (rem index-s 28))) + (let ((index-t (- c2 #x11a7))) + (when (and (plusp index-t) + (< index-t 28)) + (+ c1 index-t))))))))) + + +(defun get-pairwise-composition (c1 c2) + (declare (type codepoint c1 c2) + (optimize (speed 3))) + (unless *composition-pair-table* + (setf *composition-pair-table* (build-composition-table))) + (cond ((compose-hangul c1 c2)) + (t + (if (and (< c1 #x10000) (< c2 #x10000)) + (gethash (logior (ash c1 16) c2) *composition-pair-table*) + nil)))) diff --git a/code/unix-glibc2.lisp b/code/unix-glibc2.lisp index a39648e03..d24db0243 100644 --- a/code/unix-glibc2.lisp +++ b/code/unix-glibc2.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/unix-glibc2.lisp,v 1.46 2009/01/23 13:38:59 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/unix-glibc2.lisp,v 1.47 2009/06/11 16:03:59 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -59,6 +59,13 @@ (use-package "SYSTEM") (use-package "EXT") +;; Check the G_BROKEN_FILENAMES environment variable; if set the encoding +;; is locale-dependent...else use :utf-8 on Unicode Lisps. On 8 bit Lisps +;; it must be set to :iso8859-1 (or left as NIL), making files with +;; non-Latin-1 characters "mojibake", but otherwise they'll be inaccessible. +;; Must be set to NIL initially to enable building Lisp! +(defvar *filename-encoding* nil) + (export '( daddr-t caddr-t ino-t swblk-t size-t time-t dev-t off-t uid-t gid-t blkcnt-t fsblkcnt-t fsfilcnt-t @@ -197,6 +204,17 @@ (pushnew :unix *features*) (pushnew :glibc2 *features*) +;; needed for bootstrap +(eval-when (:compile-toplevel) + (defmacro %name->file (string) + `(if *filename-encoding* + (string-encode ,string *filename-encoding*) + ,string)) + (defmacro %file->name (string) + `(if *filename-encoding* + (string-decode ,string *filename-encoding*) + ,string))) + ;;;; Common machine independent structures. (eval-when (compile eval) @@ -381,7 +399,8 @@ "Unix-rename renames the file with string name1 to the string name2. NIL and an error code is returned if an error occured." (declare (type unix-pathname name1 name2)) - (void-syscall ("rename" c-string c-string) name1 name2)) + (void-syscall ("rename" c-string c-string) + (%name->file name1) (%name->file name2))) ;;; From sys/types.h ;;; and @@ -482,7 +501,7 @@ (alien-funcall (extern-alien "opendir" (function system-area-pointer c-string)) - pathname))) + (%name->file pathname)))) (if (zerop (sap-int dir-struct)) (values nil (unix-errno)) (make-directory :name pathname :dir-struct dir-struct)))) @@ -501,7 +520,7 @@ (if (zerop (sap-int daddr)) nil (with-alien ((dirent (* (struct dirent)) daddr)) - (values (cast (slot dirent 'd-name) c-string) + (values (%file->name (cast (slot dirent 'd-name) c-string)) (slot dirent 'd-ino)))))) (defun close-dir (dir) @@ -571,7 +590,7 @@ (declare (type unix-pathname path) (type fixnum flags) (type unix-file-mode mode)) - (int-syscall ("open64" c-string int int) path flags mode)) + (int-syscall ("open64" c-string int int) (%name->file path) flags mode)) (defun unix-getdtablesize () "Unix-getdtablesize returns the maximum size of the file descriptor @@ -602,7 +621,7 @@ (declare (type unix-pathname name) (type unix-file-mode mode)) - (int-syscall ("creat64" c-string int) name mode)) + (int-syscall ("creat64" c-string int) (%name->file name) mode)) ;;; fcntlbits.h @@ -1825,7 +1844,7 @@ length LEN and type TYPE." (car cons)) envlist)) envlist))) - (sub-unix-execve program arg-list env-list))) + (sub-unix-execve (%name->file program) arg-list env-list))) (defmacro round-bytes-to-words (n) @@ -1850,7 +1869,7 @@ length LEN and type TYPE." f_ok Presence of file." (declare (type unix-pathname path) (type (mod 8) mode)) - (void-syscall ("access" c-string int) path mode)) + (void-syscall ("access" c-string int) (%name->file path) mode)) (defconstant l_set 0 "set the file pointer") (defconstant l_incr 1 "increment the file pointer") @@ -1957,7 +1976,7 @@ length LEN and type TYPE." (declare (type unix-pathname path) (type (or unix-uid (integer -1 -1)) uid) (type (or unix-gid (integer -1 -1)) gid)) - (void-syscall ("chown" c-string int int) path uid gid)) + (void-syscall ("chown" c-string int int) (%name->file path) uid gid)) ;;; Unix-fchown is exactly the same as unix-chown except that the file ;;; is specified by a file-descriptor ("fd") instead of a pathname. @@ -1977,7 +1996,7 @@ length LEN and type TYPE." "Given a file path string, unix-chdir changes the current working directory to the one specified." (declare (type unix-pathname path)) - (void-syscall ("chdir" c-string) path)) + (void-syscall ("chdir" c-string) (%name->file path))) (defun unix-current-directory () "Put the absolute pathname of the current working directory in BUF. @@ -1993,7 +2012,7 @@ length LEN and type TYPE." 5120))) (values (not (zerop (sap-int (alien-sap result)))) - (cast buf c-call:c-string))))) + (%file->name (cast buf c-call:c-string)))))) ;;; Unix-dup returns a duplicate copy of the existing file-descriptor @@ -2032,12 +2051,12 @@ length LEN and type TYPE." #+(or) (defun unix-pathconf (path name) "Get file-specific configuration information about PATH." - (int-syscall ("pathconf" c-string int) path name)) + (int-syscall ("pathconf" c-string int) (%name->file path) name)) #+(or) (defun unix-sysconf (name) "Get the value of the system variable NAME." - (int-syscall ("sysconf" c-string) name)) + (int-syscall ("sysconf" int) name)) #+(or) (defun unix-confstr (name) @@ -2177,14 +2196,16 @@ length LEN and type TYPE." "Unix-link creates a hard link from the file with name1 to the file with name2." (declare (type unix-pathname name1 name2)) - (void-syscall ("link" c-string c-string) name1 name2)) + (void-syscall ("link" c-string c-string) + (%name->file name1) (%name->file name2))) (defun unix-symlink (name1 name2) "Unix-symlink creates a symbolic link named name2 to the file named name1. NIL and an error number is returned if the call is unsuccessful." (declare (type unix-pathname name1 name2)) - (void-syscall ("symlink" c-string c-string) name1 name2)) + (void-syscall ("symlink" c-string c-string) + (%name->file name1) (%name->file name2))) (defun unix-readlink (path) "Unix-readlink invokes the readlink system call on the file name @@ -2195,12 +2216,17 @@ length LEN and type TYPE." (with-alien ((buf (array char 1024))) (syscall ("readlink" c-string (* char) int) (let ((string (make-string result))) + #-unicode (kernel:copy-from-system-area (alien-sap buf) 0 string (* vm:vector-data-offset vm:word-bits) (* result vm:byte-bits)) - string) - path (cast buf (* char)) 1024))) + #+unicode + (let ((sap (alien-sap buf))) + (dotimes (k result) + (setf (aref string k) (code-char (sap-ref-8 sap k))))) + (%file->name string)) + (%name->file path) (cast buf (* char)) 1024))) ;;; Unix-unlink accepts a name and deletes the directory entry for that ;;; name and the file if this is the last link. @@ -2209,7 +2235,7 @@ length LEN and type TYPE." "Unix-unlink removes the directory entry for the named file. NIL and an error code is returned if the call fails." (declare (type unix-pathname name)) - (void-syscall ("unlink" c-string) name)) + (void-syscall ("unlink" c-string) (%name->file name))) ;;; Unix-rmdir accepts a name and removes the associated directory. @@ -2217,7 +2243,7 @@ length LEN and type TYPE." "Unix-rmdir attempts to remove the directory name. NIL and an error number is returned if an error occured." (declare (type unix-pathname name)) - (void-syscall ("rmdir" c-string) name)) + (void-syscall ("rmdir" c-string) (%name->file name))) (defun tcgetpgrp (fd) "Get the tty-process-group for the unix file-descriptor FD." @@ -2352,14 +2378,14 @@ length LEN and type TYPE." #+(or) (defun unix-revoke (file) "Revoke the access of all descriptors currently open on FILE." - (int-syscall ("revoke" c-string) file)) + (int-syscall ("revoke" c-string) (%name->file file))) #+(or) (defun unix-chroot (path) "Make PATH be the root directory (the starting point for absolute paths). This call is restricted to the super-user." - (int-syscall ("chroot" c-string) path)) + (int-syscall ("chroot" c-string) (%name->file path))) (def-alien-routine ("gethostid" unix-gethostid) unsigned-long "Unix-gethostid returns a 32-bit integer which provides unique @@ -2389,7 +2415,7 @@ length LEN and type TYPE." if the call is unsuccessful." (declare (type unix-pathname name) (type (unsigned-byte 64) length)) - (void-syscall ("truncate64" c-string off-t) name length)) + (void-syscall ("truncate64" c-string off-t) (%name->file name) length)) (defun unix-ftruncate (fd length) "Unix-ftruncate is similar to unix-truncate except that the first @@ -2831,7 +2857,7 @@ in at a time in poll.") (with-alien ((buf (struct stat))) (syscall ("stat64" c-string (* (struct stat))) (extract-stat-results buf) - name (addr buf)))) + (%name->file name) (addr buf)))) (defun unix-fstat (fd) "UNIX-FSTAT is similar to UNIX-STAT except the file is specified @@ -2849,7 +2875,7 @@ in at a time in poll.") (with-alien ((buf (struct stat))) (syscall ("lstat64" c-string (* (struct stat))) (extract-stat-results buf) - name (addr buf)))) + (%name->file name) (addr buf)))) ;;; Unix-chmod accepts a path and a mode and changes the mode to the new mode. @@ -2878,7 +2904,7 @@ in at a time in poll.") otherwise." (declare (type unix-pathname path) (type unix-file-mode mode)) - (void-syscall ("chmod" c-string int) path mode)) + (void-syscall ("chmod" c-string int) (%name->file path) mode)) ;;; Unix-fchmod accepts a file descriptor ("fd") and a file protection mode ;;; ("mode") and changes the protection of the file described by "fd" to @@ -2908,7 +2934,7 @@ in at a time in poll.") NIL and an error number." (declare (type unix-pathname name) (type unix-file-mode mode)) - (void-syscall ("mkdir" c-string int) name mode)) + (void-syscall ("mkdir" c-string int) (%name->file name) mode)) #+(or) (defun unix-makedev (path mode dev) @@ -2917,7 +2943,7 @@ in at a time in poll.") device numbers with the `makedev' macro above)." (declare (type unix-pathname path) (type unix-file-mode mode)) - (void-syscall ("makedev" c-string mode-t dev-t) name mode dev)) + (void-syscall ("makedev" c-string mode-t dev-t) (%name->file name) mode dev)) #+(or) @@ -2925,7 +2951,7 @@ in at a time in poll.") "Create a new FIFO named PATH, with permission bits MODE." (declare (type unix-pathname name) (type unix-file-mode mode)) - (void-syscall ("mkfifo" c-string int) name mode)) + (void-syscall ("mkfifo" c-string int) (%name->file name) mode)) ;;; sys/statfs.h @@ -2933,7 +2959,7 @@ in at a time in poll.") (defun unix-statfs (file buf) "Return information about the filesystem on which FILE resides." (int-syscall ("statfs64" c-string (* (struct statfs))) - file buf)) + (%name->file file) buf)) ;;; sys/swap.h @@ -2941,13 +2967,13 @@ in at a time in poll.") (defun unix-swapon (path flags) "Make the block special device PATH available to the system for swapping. This call is restricted to the super-user." - (int-syscall ("swapon" c-string int) path flags)) + (int-syscall ("swapon" c-string int) (%name->file path) flags)) #+(or) (defun unix-swapoff (path) - "Make the block special device PATH available to the system for swapping. + "Make the block special device PATH unavailable to the system for swapping. This call is restricted to the super-user." - (int-syscall ("swapon" c-string) path)) + (int-syscall ("swapoff" c-string) (%name->file path))) ;;; sys/sysctl.h @@ -3073,7 +3099,7 @@ in at a time in poll.") (defconstant ITIMER-VIRTUAL 1) (defconstant ITIMER-PROF 2) -(defun unix-getitimer(which) +(defun unix-getitimer (which) "Unix-getitimer returns the INTERVAL and VALUE slots of one of three system timers (:real :virtual or :profile). On success, unix-getitimer returns 5 values, @@ -3627,10 +3653,19 @@ in at a time in poll.") (let ((n (length s))) ;; ;; Blast the string into place + #-unicode (kernel:copy-to-system-area (the simple-string s) (* vm:vector-data-offset vm:word-bits) string-sap 0 (* (1+ n) vm:byte-bits)) + #+unicode + (progn + ;; FIXME: Do we need to apply some kind of transformation + ;; to convert Lisp unicode strings to C strings? Utf-8? + (dotimes (k n) + (setf (sap-ref-8 string-sap k) + (logand #xff (char-code (aref s k))))) + (setf (sap-ref-8 string-sap n) 0)) ;; ;; Blast the pointer to the string into place (setf (sap-ref-sap vec-sap i) string-sap) diff --git a/code/unix.lisp b/code/unix.lisp index 3601e6d40..18d67db4a 100644 --- a/code/unix.lisp +++ b/code/unix.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/unix.lisp,v 1.121 2009/01/23 13:38:59 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/unix.lisp,v 1.122 2009/06/11 16:03:59 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -17,6 +17,13 @@ (use-package "SYSTEM") (use-package "EXT") +;; Check the G_BROKEN_FILENAMES environment variable; if set the encoding +;; is locale-dependent...else use :utf-8 on Unicode Lisps. On 8 bit Lisps +;; it must be set to :iso8859-1 (or left as NIL), making files with +;; non-Latin-1 characters "mojibake", but otherwise they'll be inaccessible. +;; Must be set to NIL initially to enable building Lisp! +(defvar *filename-encoding* nil) + (export '(daddr-t caddr-t ino-t swblk-t size-t time-t dev-t off-t uid-t gid-t timeval tv-sec tv-usec timezone tz-minuteswest tz-dsttime itimerval it-interval it-value tchars t-intrc t-quitc t-startc @@ -181,6 +188,16 @@ (pushnew :unix *features*) +(eval-when (:compile-toplevel) + (defmacro %name->file (string) + `(if *filename-encoding* + (string-encode ,string *filename-encoding*) + ,string)) + (defmacro %file->name (string) + `(if *filename-encoding* + (string-decode ,string *filename-encoding*) + ,string))) + ;;;; Common machine independent structures. @@ -1134,7 +1151,7 @@ f_ok Presence of file." (declare (type unix-pathname path) (type (mod 8) mode)) - (void-syscall ("access" c-string int) path mode)) + (void-syscall ("access" c-string int) (%name->file path) mode)) ;;; Unix-chdir accepts a directory name and makes that the ;;; current working directory. @@ -1143,7 +1160,7 @@ "Given a file path string, unix-chdir changes the current working directory to the one specified." (declare (type unix-pathname path)) - (void-syscall ("chdir" c-string) path)) + (void-syscall ("chdir" c-string) (%name->file path))) ;;; Unix-chmod accepts a path and a mode and changes the mode to the new mode. @@ -1185,7 +1202,7 @@ otherwise." (declare (type unix-pathname path) (type unix-file-mode mode)) - (void-syscall ("chmod" c-string int) path mode)) + (void-syscall ("chmod" c-string int) (%name->file path) mode)) ;;; Unix-fchmod accepts a file descriptor ("fd") and a file protection mode ;;; ("mode") and changes the protection of the file described by "fd" to @@ -1209,7 +1226,7 @@ (declare (type unix-pathname path) (type (or unix-uid (integer -1 -1)) uid) (type (or unix-gid (integer -1 -1)) gid)) - (void-syscall ("chown" c-string int int) path uid gid)) + (void-syscall ("chown" c-string int int) (%name->file path) uid gid)) ;;; Unix-fchown is exactly the same as unix-chown except that the file ;;; is specified by a file-descriptor ("fd") instead of a pathname. @@ -1254,7 +1271,8 @@ (declare (type unix-pathname name) (type unix-file-mode mode)) - (int-syscall (#+solaris "creat64" #-solaris "creat" c-string int) name mode)) + (int-syscall (#+solaris "creat64" #-solaris "creat" c-string int) + (%name->file name) mode)) ;;; Unix-dup returns a duplicate copy of the existing file-descriptor ;;; passed as an argument. @@ -1355,7 +1373,8 @@ "Unix-link creates a hard link from the file with name1 to the file with name2." (declare (type unix-pathname name1 name2)) - (void-syscall ("link" c-string c-string) name1 name2)) + (void-syscall ("link" c-string c-string) + (%name->file name1) (%name->file name2))) ;;; Unix-lseek accepts a file descriptor, an offset, and whence value. @@ -1406,7 +1425,7 @@ NIL and an error number." (declare (type unix-pathname name) (type unix-file-mode mode)) - (void-syscall ("mkdir" c-string int) name mode)) + (void-syscall ("mkdir" c-string int) (%name->file name) mode)) ;;; Unix-open accepts a pathname (a simple string), flags, and mode and ;;; attempts to open file with name pathname. @@ -1457,7 +1476,8 @@ (declare (type unix-pathname path) (type fixnum flags) (type unix-file-mode mode)) - (int-syscall (#+solaris "open64" #-solaris "open" c-string int int) path flags mode)) + (int-syscall (#+solaris "open64" #-solaris "open" c-string int int) + (%name->file path) flags mode)) (defun unix-pipe () "Unix-pipe sets up a unix-piping mechanism consisting of @@ -1526,12 +1546,18 @@ (with-alien ((buf (array char 1024))) (syscall ("readlink" c-string (* char) int) (let ((string (make-string result))) + #-unicode (kernel:copy-from-system-area (alien-sap buf) 0 string (* vm:vector-data-offset vm:word-bits) (* result vm:byte-bits)) - string) - path (cast buf (* char)) 1024))) + #+unicode + (let ((sap (alien-sap buf))) + (dotimes (k result) + (setf (aref string k) + (code-char (sap-ref-8 sap k))))) + (%file->name string)) + (%name->file path) (cast buf (* char)) 1024))) ;;; Unix-rename accepts two files names and renames the first to the second. @@ -1539,7 +1565,8 @@ "Unix-rename renames the file with string name1 to the string name2. NIL and an error code is returned if an error occured." (declare (type unix-pathname name1 name2)) - (void-syscall ("rename" c-string c-string) name1 name2)) + (void-syscall ("rename" c-string c-string) + (%name->file name1) (%name->file name2))) ;;; Unix-rmdir accepts a name and removes the associated directory. @@ -1547,7 +1574,7 @@ "Unix-rmdir attempts to remove the directory name. NIL and an error number is returned if an error occured." (declare (type unix-pathname name)) - (void-syscall ("rmdir" c-string) name)) + (void-syscall ("rmdir" c-string) (%name->file name))) ;;; UNIX-FAST-SELECT -- public. @@ -1674,7 +1701,8 @@ named name1. NIL and an error number is returned if the call is unsuccessful." (declare (type unix-pathname name1 name2)) - (void-syscall ("symlink" c-string c-string) name1 name2)) + (void-syscall ("symlink" c-string c-string) + (%name->file name1) (%name->file name2))) ;;; Unix-unlink accepts a name and deletes the directory entry for that ;;; name and the file if this is the last link. @@ -1683,7 +1711,7 @@ "Unix-unlink removes the directory entry for the named file. NIL and an error code is returned if the call fails." (declare (type unix-pathname name)) - (void-syscall ("unlink" c-string) name)) + (void-syscall ("unlink" c-string) (%name->file name))) ;;; Unix-write accepts a file descriptor, a buffer, an offset, and the ;;; length to write. It attempts to write len bytes to the device @@ -2123,7 +2151,7 @@ (with-alien ((buf (struct stat))) (syscall ("stat" c-string (* (struct stat))) (extract-stat-results buf) - name (addr buf)))) + (%name->file name) (addr buf)))) (defun unix-lstat (name) "Unix-lstat is similar to unix-stat except the specified @@ -2132,7 +2160,7 @@ (with-alien ((buf (struct stat))) (syscall ("lstat" c-string (* (struct stat))) (extract-stat-results buf) - name (addr buf)))) + (%name->file name) (addr buf)))) (defun unix-fstat (fd) "Unix-fstat is similar to unix-stat except the file is specified @@ -2159,7 +2187,7 @@ (with-alien ((buf (struct stat64))) (syscall ("stat64" c-string (* (struct stat64))) (extract-stat-results buf) - name (addr buf)))) + (%name->file name) (addr buf)))) (defun unix-lstat (name) "Unix-lstat is similar to unix-stat except the specified @@ -2168,7 +2196,7 @@ (with-alien ((buf (struct stat64))) (syscall ("lstat64" c-string (* (struct stat64))) (extract-stat-results buf) - name (addr buf)))) + (%name->file name) (addr buf)))) (defun unix-fstat (fd) "Unix-fstat is similar to unix-stat except the file is specified @@ -2449,7 +2477,7 @@ (alien-funcall (extern-alien "opendir" (function system-area-pointer c-string)) - pathname))) + (%name->file pathname)))) (if (zerop (sap-int dir-struct)) (values nil (unix-errno)) (make-directory :name pathname :dir-struct dir-struct)))) @@ -2474,13 +2502,19 @@ (ino (slot direct 'd-ino))) (declare (type (unsigned-byte 16) nlen)) (let ((string (make-string nlen))) + #-unicode (kernel:copy-from-system-area (alien-sap (addr (slot direct 'd-name))) 0 string (* vm:vector-data-offset vm:word-bits) (* nlen vm:byte-bits)) - (values string ino))) + #+unicode + (let ((sap (alien-sap (addr (slot direct 'd-name))))) + (dotimes (k nlen) + (setf (aref string k) + (code-char (sap-ref-8 sap k))))) + (values (%file->name string) ino))) #+(or linux svr4) - (values (cast (slot direct 'd-name) c-string) + (values (%file->name (cast (slot direct 'd-name) c-string)) (slot direct 'd-ino)))))) ;;; 64-bit readdir for Solaris @@ -2500,13 +2534,19 @@ (ino (slot direct 'd-ino))) (declare (type (unsigned-byte 16) nlen)) (let ((string (make-string nlen))) + #-unicode (kernel:copy-from-system-area (alien-sap (addr (slot direct 'd-name))) 0 string (* vm:vector-data-offset vm:word-bits) (* nlen vm:byte-bits)) - (values string ino))) + #+unicode + (let ((sap (alien-sap (addr (slot direct 'd-name))))) + (dotimes (k nlen) + (setf (aref string k) + (code-char (sap-ref-8 sap k))))) + (values (%file->name string) ino))) #+(or linux svr4) - (values (cast (slot direct 'd-name) c-string) + (values (%file->name (cast (slot direct 'd-name) c-string)) (slot direct 'd-ino)))))) #+(and bsd (not solaris)) @@ -2525,11 +2565,17 @@ (declare (type (unsigned-byte 8) nlen) (type (unsigned-byte 32) fino)) (let ((string (make-string nlen))) + #-unicode (kernel:copy-from-system-area (alien-sap (addr (slot direct 'd-name))) 0 string (* vm:vector-data-offset vm:word-bits) (* nlen vm:byte-bits)) - (values string fino))))))) + #+unicode + (let ((sap (alien-sap (addr (slot direct 'd-name))))) + (dotimes (k nlen) + (setf (aref string k) + (code-char (sap-ref-8 sap k))))) + (values (%file->name string) fino))))))) (defun close-dir (dir) @@ -2556,7 +2602,7 @@ (values (not (zerop (sap-int (alien-sap result)))) - (cast buf c-call:c-string))))) + (%file->name (cast buf c-call:c-string)))))) @@ -2790,7 +2836,7 @@ (car cons)) envlist)) envlist))) - (sub-unix-execve program arg-list env-list))) + (sub-unix-execve (%name->file program) arg-list env-list))) (defmacro round-bytes-to-words (n) @@ -2829,10 +2875,20 @@ (let ((n (length s))) ;; ;; Blast the string into place + #-unicode (kernel:copy-to-system-area (the simple-string s) (* vm:vector-data-offset vm:word-bits) string-sap 0 (* (1+ n) vm:byte-bits)) + #+unicode + (progn + ;; FIXME: Do we need to apply some kind of transformation + ;; to convert Lisp unicode strings to C strings? Utf-8? + (dotimes (k n) + (setf (sap-ref-8 string-sap k) + (logand #xff (char-code (aref s k))))) + (setf (sap-ref-8 string-sap n) 0)) + ;; ;; Blast the pointer to the string into place (setf (sap-ref-sap vec-sap i) string-sap) @@ -2938,14 +2994,26 @@ ;; Datagram support -(def-alien-routine ("recvfrom" unix-recvfrom) int - (fd int) - (buffer c-string) - (length int) - (flags int) - (sockaddr (* t)) - (len int :in-out)) - +(defun unix-recvfrom (fd buffer length flags sockaddr len) + (with-alien ((l c-call:int len)) + (values + (alien-funcall (extern-alien "recvfrom" + (function c-call:int + c-call:int + system-area-pointer + c-call:int + c-call:int + (* t) + (* c-call:int))) + fd + (system:vector-sap buffer) + length + flags + sockaddr + (addr l)) + l))) + +#-unicode (def-alien-routine ("sendto" unix-sendto) int (fd int) (buffer c-string) @@ -2954,6 +3022,22 @@ (sockaddr (* t)) (len int)) +(defun unix-sendto (fd buffer length flags sockaddr len) + (alien-funcall (extern-alien "sendto" + (function c-call:int + c-call:int + system-area-pointer + c-call:int + c-call:int + (* t) + c-call:int)) + fd + (system:vector-sap buffer) + length + flags + sockaddr + len)) + (def-alien-routine ("shutdown" unix-shutdown) int (socket int) (level int)) diff --git a/compiler/array-tran.lisp b/compiler/array-tran.lisp index a21e679da..9c08da8e3 100644 --- a/compiler/array-tran.lisp +++ b/compiler/array-tran.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/array-tran.lisp,v 1.42 2008/03/05 14:31:30 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/array-tran.lisp,v 1.43 2009/06/11 16:03:59 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -252,7 +252,7 @@ :initial-element initial-element)) (defconstant array-info - '((base-char #\NULL 8 vm:simple-string-type) + '((base-char #\NULL #.vm:char-bits vm:simple-string-type) (single-float 0.0f0 32 vm:simple-array-single-float-type) (double-float 0.0d0 64 vm:simple-array-double-float-type) #+long-float (long-float 0.0l0 #+x86 96 #+sparc 128 diff --git a/compiler/byte-comp.lisp b/compiler/byte-comp.lisp index ed8166bd1..c8b175b1e 100644 --- a/compiler/byte-comp.lisp +++ b/compiler/byte-comp.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/byte-comp.lisp,v 1.47 2009/03/11 01:19:27 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/byte-comp.lisp,v 1.48 2009/06/11 16:03:59 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -32,7 +32,7 @@ ;;;; Fasl file format: -(defconstant byte-fasl-file-version #x19f) +(defconstant byte-fasl-file-version #-unicode #x19f #+unicode #x20a) (let* ((version-string (format nil "~X" byte-fasl-file-version))) (sys:register-lisp-feature (intern (concatenate 'string "CMU" version-string) :keyword)) diff --git a/compiler/dump.lisp b/compiler/dump.lisp index e70527348..cabf2b6ce 100644 --- a/compiler/dump.lisp +++ b/compiler/dump.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/dump.lisp,v 1.82 2006/06/30 18:41:23 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/dump.lisp,v 1.83 2009/06/11 16:03:59 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -230,7 +230,6 @@ (setf (fasl-file-buffer-index file) n)))))) (undefined-value)) - ;;; Dump-FOP -- Internal ;;; ;;; Dump the FOP code for the named FOP to the specified fasl-file. @@ -610,8 +609,11 @@ (let ((len (length name))) (assert (< len 256)) (dump-byte len file) + #-unicode (dotimes (i len) - (dump-byte (char-code (schar name i)) file)))) + (dump-byte (char-code (schar name i)) file)) + #+unicode + (dump-data-maybe-byte-swapping name (* vm:char-bytes len) vm:char-bits file))) (:code-object (dump-fop 'lisp::fop-code-object-fixup file))) (dump-unsigned-32 offset file))) @@ -1244,7 +1246,10 @@ lisp::fop-symbol-in-package-save file) (dump-unsigned-32 pname-length file))) + #-unicode (dump-bytes pname (length pname) file) + #+unicode + (dump-data-maybe-byte-swapping pname (* vm:char-bytes (length pname)) vm:char-bits file) (unless *cold-load-dump* (setf (gethash s (fasl-file-eq-table file)) (fasl-file-table-free file))) @@ -1448,7 +1453,10 @@ (declare (type simple-base-string s)) (let ((length (length s))) (dump-fop* length lisp::fop-small-string lisp::fop-string file) - (dump-bytes s length file)) + #-unicode + (dump-bytes s length file) + #+unicode + (dump-data-maybe-byte-swapping s (* vm:char-bytes length) vm:char-bits file)) (undefined-value)) ;;; DUMP-I-VECTOR -- Internal @@ -1664,10 +1672,19 @@ ;;; Dump a character. +#-unicode (defun dump-character (ch file) (dump-fop 'lisp::fop-short-character file) (dump-byte (char-code ch) file)) +#+unicode +(defun dump-character (ch file) + (dump-fop 'lisp::fop-short-character file) + ;; Characters are always little-endian + (let ((code (char-code ch))) + (dump-byte (ldb (byte 8 0) code) file) + (dump-byte (ldb (byte 8 8) code) file))) + ;;; Dump a structure. diff --git a/compiler/fndb.lisp b/compiler/fndb.lisp index 2d13953f1..a994d52c7 100644 --- a/compiler/fndb.lisp +++ b/compiler/fndb.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/fndb.lisp,v 1.136 2007/03/28 15:56:51 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/fndb.lisp,v 1.137 2009/06/11 16:03:59 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -815,6 +815,16 @@ (deftype stringable () '(or character string symbol)) +;; Case folding mode (in case we want language-specific converssions) +#+unicode +(deftype case-folding-type () + `(member :simple :full)) + +;; Case conversion mode (in case we ever want language-specific conversions) +#+unicode +(deftype case-conversion-type () + `(member :simple :full)) + (defknown (string= string-equal) (stringable stringable &key (:start1 index) (:end1 sequence-end) (:start2 index) (:end2 sequence-end)) @@ -837,7 +847,7 @@ (sequence stringable) simple-string (flushable)) (defknown (string-upcase string-downcase string-capitalize) - (stringable &key (:start index) (:end sequence-end)) + (stringable &key (:start index) (:end sequence-end) #+unicode (:casing case-conversion-type)) simple-string (flushable)) (defknown (nstring-upcase nstring-downcase nstring-capitalize) @@ -1073,7 +1083,7 @@ :rename-and-delete :overwrite :append :supersede nil)) (:if-does-not-exist (member :error :create nil)) - (:external-format (member :default)) + (:external-format symbol) (:class (or symbol class)) (:mapped boolean) (:input-handle (or null fixnum stream)) @@ -1131,7 +1141,7 @@ (:block-compile (member t nil :specified)) (:entry-points list) (:byte-compile (member t nil :maybe)) - (:external-format (member :default)) + (:external-format symbol) (:xref t)) (values (or pathname null) boolean boolean)) @@ -1241,6 +1251,7 @@ (foldable flushable)) (defknown %set-symbol-package (symbol t) t (unsafe)) (defknown %coerce-to-function (t) function (flushable)) +(defknown lisp::shrink-vector (vector fixnum) vector (unsafe)) ;;; Structure slot accessors or setters are magically "known" to be these ;;; functions, although the var remains the Slot-Accessor describing the actual diff --git a/compiler/generic/new-genesis.lisp b/compiler/generic/new-genesis.lisp index 100980a5e..efab1f2c5 100644 --- a/compiler/generic/new-genesis.lisp +++ b/compiler/generic/new-genesis.lisp @@ -4,7 +4,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/new-genesis.lisp,v 1.85 2008/10/06 20:55:40 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/new-genesis.lisp,v 1.86 2009/06/11 16:04:00 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -396,6 +396,7 @@ ;;;; Routines to move simple objects into the core. +#-unicode (defun string-to-core (string &optional (space *dynamic*)) "Copy string into the CORE and return a descriptor to it." ;; Note: We allocate an extra byte and tweek the length back to make sure @@ -418,6 +419,33 @@ (* (1+ len) vm:byte-bits)) des)) +#+unicode +(defun string-to-core (string &optional (space *dynamic*)) + "Copy string into the CORE and return a descriptor to it." + ;; Note: We allocate an extra byte and tweak the length back to make sure + ;; there will be a null at the end of the string to aid in call-out to + ;; C. + (let* ((len (length string)) + (des (allocate-vector-object space (* 2 vm:byte-bits) (1+ len) + vm:simple-string-type)) + (bytes (make-array (1+ len) :element-type '(unsigned-byte 16)))) + (write-indexed des vm:vector-length-slot (make-fixnum-descriptor len)) + ;;(format t "s-t-c: len = ~d, ~S~%" len string) + (dotimes (k len) + (setf (aref bytes k) (logand #xffff (char-code (aref string k))))) + (copy-to-system-area bytes (* vm:vector-data-offset + ;; the word size of the native backend which + ;; may be different from the target backend + (if (= (c:backend-fasl-file-implementation + c::*native-backend*) + #.c:amd64-fasl-file-implementation) + 64 + 32)) + (descriptor-sap des) + (* vm:vector-data-offset vm:word-bits) + (* (1+ len) (* 2 vm:byte-bits))) + des)) + (defun bignum-to-core (n) "Copy the bignum to the core." (let* ((words (ceiling (1+ (integer-length n)) vm:word-bits)) @@ -1189,9 +1217,16 @@ (define-cold-fop (fop-character) (make-character-descriptor (read-arg 3))) +#-unicode (define-cold-fop (fop-short-character) (make-character-descriptor (read-arg 1))) +#+unicode +(define-cold-fop (fop-short-character) + (make-character-descriptor + (+ (read-arg 1) + (ash (read-arg 1) 8)))) + (define-cold-fop (fop-empty-list) *nil-descriptor*) (define-cold-fop (fop-truth) (cold-intern t)) @@ -1266,11 +1301,31 @@ ;;; Cold-Load-Symbol loads a symbol N characters long from the File and interns ;;; that symbol in the given Package. ;;; +#-unicode (defun cold-load-symbol (size package) (let ((string (make-string size))) (read-n-bytes *fasl-file* string 0 size) (cold-intern (intern string package) package))) +#+unicode +(defmacro load-char-code () + (ecase (c::backend-byte-order c::*native-backend*) + (:little-endian + `(code-char (+ (read-arg 1) + (ash (read-arg 1) 8)))) + (:big-endian + `(code-char (+ (ash (read-arg 1) 8) + (read-arg 1)))))) + +#+unicode +(defun cold-load-symbol (size package) + (let ((string (make-string size))) + #+nil + (read-n-bytes *fasl-file* string 0 (* 2 size)) + (dotimes (k size) + (setf (aref string k) (load-char-code))) + (cold-intern (intern string package) package))) + (clone-cold-fop (fop-symbol-save) (fop-small-symbol-save) (push-table (cold-load-symbol (clone-arg) *package*))) @@ -1294,11 +1349,24 @@ (fop-keyword-small-symbol-save) (push-table (cold-load-symbol (clone-arg) *keyword-package*))) +#-unicode +(clone-cold-fop (fop-uninterned-symbol-save) + (fop-uninterned-small-symbol-save) + (let* ((size (clone-arg)) + (name (make-string size))) + (read-n-bytes *fasl-file* name 0 size) + (let ((symbol (allocate-symbol name))) + (push-table symbol)))) + +#+unicode (clone-cold-fop (fop-uninterned-symbol-save) (fop-uninterned-small-symbol-save) (let* ((size (clone-arg)) (name (make-string size))) + #+nil (read-n-bytes *fasl-file* name 0 size) + (dotimes (k size) + (setf (aref name k) (load-char-code))) (let ((symbol (allocate-symbol name))) (push-table symbol)))) @@ -1352,6 +1420,7 @@ ;;; Loading vectors... +#-unicode (clone-cold-fop (fop-string) (fop-small-string) (let* ((len (clone-arg)) @@ -1359,6 +1428,17 @@ (read-n-bytes *fasl-file* string 0 len) (string-to-core string))) +#+unicode +(clone-cold-fop (fop-string) + (fop-small-string) + (let* ((len (clone-arg)) + (string (make-string len))) + #+nil + (read-n-bytes *fasl-file* string 0 (* 2 len)) + (dotimes (k len) + (setf (aref string k) (load-char-code))) + (string-to-core string))) + (clone-cold-fop (fop-vector) (fop-small-vector) (let* ((size (clone-arg)) @@ -1879,7 +1959,11 @@ (code-object (pop-stack)) (len (read-arg 1)) (sym (make-string len))) + #-unicode (read-n-bytes *fasl-file* sym 0 len) + #+unicode + (dotimes (k len) + (setf (aref sym k) (load-char-code))) (let ((offset (read-arg 4)) (value #+linkage-table (cold-register-foreign-linkage sym :code) #-linkage-table (lookup-foreign-symbol sym))) @@ -1894,7 +1978,11 @@ (code-object (pop-stack)) (len (read-arg 1)) (sym (make-string len))) + #-unicode (read-n-bytes *fasl-file* sym 0 len) + #+unicode + (dotimes (k len) + (setf (aref sym k) (load-char-code))) (let ((offset (read-arg 4)) (value (cold-register-foreign-linkage sym :data))) (do-cold-fixup code-object offset value kind)) diff --git a/compiler/generic/vm-tran.lisp b/compiler/generic/vm-tran.lisp index d95aa7e3b..bcf91c91c 100644 --- a/compiler/generic/vm-tran.lisp +++ b/compiler/generic/vm-tran.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/vm-tran.lisp,v 1.59 2006/12/24 01:41:36 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/vm-tran.lisp,v 1.60 2009/06/11 16:04:00 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -218,13 +218,12 @@ (declare (optimize (safety 0))) (bit-bash-copy string (the index - (+ (the index (* start vm:byte-bits)) + (+ (the index (* start vm:char-bits)) vector-data-bit-offset)) result vector-data-bit-offset - (the index (* size vm:byte-bits))) - result)) - + (the index (* size vm:char-bits))) + result)) (deftransform copy-seq ((seq) (simple-string)) '(let* ((len (length seq)) @@ -234,9 +233,8 @@ vector-data-bit-offset res vector-data-bit-offset - (the index (* len vm:byte-bits))) - res)) - + (the index (* len vm:char-bits))) + res)) (deftransform replace ((string1 string2 &key (start1 0) (start2 0) end1 end2) @@ -244,19 +242,19 @@ '(locally (declare (optimize (safety 0))) (bit-bash-copy string2 (the index - (+ (the index (* start2 vm:byte-bits)) + (+ (the index (* start2 vm:char-bits)) vector-data-bit-offset)) string1 (the index - (+ (the index (* start1 vm:byte-bits)) + (+ (the index (* start1 vm:char-bits)) vector-data-bit-offset)) (the index (* (min (the index (- (or end1 (length string1)) start1)) (the index (- (or end2 (length string2)) start2))) - vm:byte-bits))) - string1)) + vm:char-bits))) + string1)) ;; The original version of this deftransform seemed to cause the ;; compiler to spend huge amounts of time deriving the type of the @@ -277,7 +275,7 @@ (let ((n-seq (gensym)) (n-length (gensym))) (args n-seq) - (lets `(,n-length (the index (* (length ,n-seq) vm:byte-bits)))) + (lets `(,n-length (the index (* (length ,n-seq) vm:char-bits)))) (all-lengths n-length) (forms `((bit-bash-copy ,n-seq vector-data-bit-offset res start @@ -298,14 +296,13 @@ (declare (ignore rtype)) (let* (,@(lets) (res (make-string (truncate (the index (+ ,@(all-lengths))) - vm:byte-bits)))) + vm:char-bits)))) (declare (type index ,@(all-lengths))) (let ((start vector-data-bit-offset)) ,@(nestify (forms))) res)))) result)))) - ;;;; Bit vector hackery: diff --git a/compiler/main.lisp b/compiler/main.lisp index 72695caab..f8cd6544a 100644 --- a/compiler/main.lisp +++ b/compiler/main.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/main.lisp,v 1.146 2005/07/01 13:00:26 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/main.lisp,v 1.147 2009/06/11 16:03:59 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -712,14 +712,18 @@ in the user USER-INFO slot of STREAM-SOURCE-LOCATIONs.") ;; ;; The stream that we are using to read the Current-File. Null if no stream ;; has been opened yet. - (stream nil :type (or stream null))) + (stream nil :type (or stream null)) + ;; + ;; External format to use for the stream if the stream hasn't been opened + #+unicode + (external-format :default)) ;;; Make-File-Source-Info -- Internal ;;; ;;; Given a list of pathnames, return a Source-Info structure. ;;; -(defun make-file-source-info (files) +(defun make-file-source-info (files external-format) (declare (list files)) (let ((file-info (mapcar #'(lambda (x) @@ -730,7 +734,9 @@ in the user USER-INFO slot of STREAM-SOURCE-LOCATIONs.") files))) (make-source-info :files file-info - :current-file file-info))) + :current-file file-info + #+unicode :external-format + #+unicode external-format))) ;;; MAKE-LISP-SOURCE-INFO -- Interface @@ -869,7 +875,9 @@ in the user USER-INFO slot of STREAM-SOURCE-LOCATIONs.") (setq *compile-file-truename* name) (setq *compile-file-pathname* (file-info-untruename finfo)) (setf (source-info-stream info) - (open name :direction :input)))))) + (open name :direction :input + #+unicode :external-format + #+unicode (source-info-external-format info))))))) ;;; CLOSE-SOURCE-INFO -- Internal ;;; @@ -1781,8 +1789,9 @@ in the user USER-INFO slot of STREAM-SOURCE-LOCATIONs.") which is initially :MAYBE. :Xref If non-NIL, enable recording of cross-reference information. The default - is the value of C:*RECORD-XREF-INFO*" - (declare (ignore external-format)) + is the value of C:*RECORD-XREF-INFO* + :External-Format + The external format to use when opening the source file" (let* ((fasl-file nil) (error-file-stream nil) (output-file-pathname nil) @@ -1791,7 +1800,7 @@ in the user USER-INFO slot of STREAM-SOURCE-LOCATIONs.") (compile-won nil) (error-severity nil) (source (verify-source-files source)) - (source-info (make-file-source-info source)) + (source-info (make-file-source-info source external-format)) (default (pathname (first source)))) (unwind-protect (progn diff --git a/compiler/ppc/array.lisp b/compiler/ppc/array.lisp index 343f42826..94dc4cd4e 100644 --- a/compiler/ppc/array.lisp +++ b/compiler/ppc/array.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/array.lisp,v 1.7 2006/06/30 18:41:24 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/array.lisp,v 1.8 2009/06/11 16:04:00 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -136,8 +136,13 @@ (:results (result :scs ,scs)) (:result-types ,element-type)))) +#-unicode (def-data-vector-frobs simple-string byte-index base-char base-char-reg) +#+unicode +(def-data-vector-frobs simple-string halfword-index + base-char base-char-reg) + (def-data-vector-frobs simple-vector word-index * descriptor-reg any-reg) diff --git a/compiler/ppc/parms.lisp b/compiler/ppc/parms.lisp index 18fa7c582..a9ac0e705 100644 --- a/compiler/ppc/parms.lisp +++ b/compiler/ppc/parms.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/parms.lisp,v 1.18 2008/09/10 13:46:42 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/parms.lisp,v 1.19 2009/06/11 16:04:00 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -44,7 +44,8 @@ ;;;; Machine Architecture parameters: -(export '(word-bits byte-bits word-shift word-bytes float-sign-shift +(export '(word-bits byte-bits char-bits word-shift word-bytes char-bytes + float-sign-shift single-float-bias single-float-exponent-byte single-float-significand-byte single-float-normal-exponent-min @@ -75,6 +76,12 @@ (defconstant byte-bits 8 "Number of bits per byte where a byte is the smallest addressable object.") +(defconstant char-bits #-unicode 8 #+unicode 16 + "Number of bits needed to represent a character") + +(defconstant char-bytes (truncate char-bits byte-bits) + "Number of bytes needed to represent a character") + (defconstant word-shift (1- (integer-length (/ word-bits byte-bits))) "Number of bits to shift between word addresses and byte addresses.") diff --git a/compiler/ppc/system.lisp b/compiler/ppc/system.lisp index 6f8e43057..fa85ce165 100644 --- a/compiler/ppc/system.lisp +++ b/compiler/ppc/system.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/system.lisp,v 1.3 2004/10/09 02:47:45 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/system.lisp,v 1.4 2009/06/11 16:04:00 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -274,4 +274,4 @@ (move lo temp-lo)))) (defun read-cycle-counter () - (read-time-base)) \ No newline at end of file + (read-time-base)) diff --git a/compiler/seqtran.lisp b/compiler/seqtran.lisp index 2ba96750a..26d6d12bb 100644 --- a/compiler/seqtran.lisp +++ b/compiler/seqtran.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/seqtran.lisp,v 1.31 2005/04/21 18:57:43 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/seqtran.lisp,v 1.32 2009/06/11 16:03:59 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -569,6 +569,7 @@ ,(if lessp `nil `index)) + #-unicode ((,(if lessp 'char< 'char>) (schar string1 index) (schar string2 @@ -577,7 +578,28 @@ (truly-the fixnum (- start2 start1)))))) index) - (t nil)) + #-unicode + (t nil) + #+unicode + (t + (flet ((fixup (code) + (if (>= code #xe000) + (- code #x800) + (+ code #x2000)))) + (declare (inline fixup)) + (let* ((c1 (char-code (schar string1 index))) + (c2 (char-code (schar string2 (+ (the fixnum index) (- start2 start1)))))) + (cond ((and (>= c1 #xd800) + (>= c2 #xd800)) + (let ((fix-c1 (fixup c1)) + (fix-c2 (fixup c2))) + (if (,(if lessp '< '>) fix-c1 fix-c2) + (the fixnum index) + nil))) + (t + (if (,(if lessp '< '>) c1 c2) + (the fixnum index) + nil))))))) ,(if equalp `end1 'nil)))))) @@ -639,3 +661,16 @@ ;; The result type of MAKE-SEQUENCE is OUTPUT-SPEC, but check to see ;; if it makes sense. (output-spec-sequence output-spec)) + +(defoptimizer (lisp::shrink-vector derive-type) ((vector new-size)) + ;; The result of shrink-vector is another vector of the same type as + ;; the input. If the size is a known constant, we use it, otherwise + ;; just make the dimension unknown. + (let* ((type (continuation-type vector)) + (dim (if (constant-continuation-p new-size) + `(,(continuation-value new-size)) + '(*))) + (new-type (kernel::copy-array-type type))) + (setf (kernel:array-type-dimensions new-type) dim) + new-type)) + diff --git a/compiler/sparc/array.lisp b/compiler/sparc/array.lisp index c1f1a829f..66e10a599 100644 --- a/compiler/sparc/array.lisp +++ b/compiler/sparc/array.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/array.lisp,v 1.35 2008/08/21 14:40:35 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/array.lisp,v 1.36 2009/06/11 16:04:00 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -138,8 +138,13 @@ (:results (result :scs ,scs)) (:result-types ,element-type)))) +#-unicode (def-data-vector-frobs simple-string byte-index base-char base-char-reg) +#+unicode +(def-data-vector-frobs simple-string halfword-index + base-char base-char-reg) + (def-data-vector-frobs simple-vector word-index * descriptor-reg any-reg) diff --git a/compiler/sparc/float.lisp b/compiler/sparc/float.lisp index 7140928eb..4cae2f791 100644 --- a/compiler/sparc/float.lisp +++ b/compiler/sparc/float.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/float.lisp,v 1.59 2008/11/12 15:04:23 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/float.lisp,v 1.60 2009/06/11 16:04:00 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -1097,6 +1097,40 @@ #+long-float (frob %long-float/signed %long-float fitoq long-reg long-float)) +;; Sparc doesn't have an instruction to convert a 32-bit unsigned +;; integer to a float, but does have one for a 32-bit signed integer. +;; What we do here is break up the 32-bit number into 2 smaller +;; pieces. Each of these are converted to a float, and the higher +;; order piece is scaled appropriately, and finally everything is +;; summed together. The pieces are done in a way such that no +;; roundoff occurs. The scaling should not produce any roundoff +;; either, since the scale factor is an exact power of two. The final +;; sum will produce the correct rounded result. (I think,) +;; +;; But need to be careful because we still want to call the VOP for +;; the small pieces, so we need the transform to give up if it's known +;; that the argument is smaller than a 32-bit unsigned integer. +(macrolet ((frob (name limit unit) + `(deftransform ,name ((n) ((unsigned-byte 32))) + ;; Should this be extended to a (unsigned-byte 53)? We could. Just + ;; take the low 31 bits, and the rest, and float them and combine + ;; them as before. + (when (csubtypep (c::continuation-type n) + (c::specifier-type '(unsigned-byte 31))) + ;; We want to give-up if we know the number can't have the + ;; MSB set. The signed 32-bit vop can handle that. + (c::give-up)) + `(+ (,',name (ldb (byte ,',limit 0) n)) + (* (,',name (ldb (byte ,',(- 32 limit) ,',limit) n)) + (scale-float ,',unit ,',limit)))))) + ;; If we break up the numbers into the low 12 bits and the high 20 + ;; bits, we can use a single AND instruction to get the low 12 bits. + ;; This is a microoptimization for Sparc. Otherwise, the only + ;; constraint is that the pieces must be small enough to fit in the + ;; desired float format without rounding. + (frob %single-float 12 1f0) + (frob %double-float 12 1f0)) + (macrolet ((frob (name translate inst from-sc from-type to-sc to-type) `(define-vop (,name) (:args (x :scs (,from-sc))) diff --git a/compiler/sparc/parms.lisp b/compiler/sparc/parms.lisp index 4d0ea6d33..4ddfd8cda 100644 --- a/compiler/sparc/parms.lisp +++ b/compiler/sparc/parms.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/parms.lisp,v 1.56 2008/09/10 13:46:42 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/parms.lisp,v 1.57 2009/06/11 16:04:00 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -53,7 +53,7 @@ ;;;; Machine Architecture parameters: -(export '(word-bits byte-bits word-shift word-bytes +(export '(word-bits byte-bits char-bits word-shift word-bytes char-bytes fixnum-tag-bits fixnum-tag-mask positive-fixnum-bits float-sign-shift @@ -91,6 +91,12 @@ (defconstant byte-bits 8 "Number of bits per byte where a byte is the smallest addressable object.") +(defconstant char-bits #-unicode 8 #+unicode 16 + "Number of bits needed to represent a character") + +(defconstant char-bytes (truncate char-bits byte-bits) + "Number of bytes needed to represent a character") + (defconstant word-shift (1- (integer-length (/ word-bits byte-bits))) "Number of bits to shift between word addresses and byte addresses.") diff --git a/compiler/srctran.lisp b/compiler/srctran.lisp index 84ae9115e..50ae3960f 100644 --- a/compiler/srctran.lisp +++ b/compiler/srctran.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/srctran.lisp,v 1.169 2008/11/26 17:17:18 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/srctran.lisp,v 1.170 2009/06/11 16:03:59 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -2862,9 +2862,21 @@ (fixnum fixnum integer) (unsigned-byte #.vm:word-bits)) "convert to inline logical ops" - `(logand (ash int (- posn)) - (ash ,(1- (ash 1 vm:word-bits)) - (- size ,vm:word-bits)))) + ;; Try to help out the compiler by precomputing things if SIZE or + ;; POSN are constants. This helps out modular arithmetic in some + ;; cases. (I think it's a deficiency in modular arithmetic that it + ;; can't figure some things out for itself.) + (let ((shift-form (if (constant-continuation-p posn) + (if (zerop (continuation-value posn)) + 'int + `(ash int ,(- (continuation-value posn)))) + '(ash int (- posn)))) + (mask-form (if (constant-continuation-p size) + (ash (1- (ash 1 vm:word-bits)) + (- (continuation-value size) vm:word-bits)) + `(ash ,(1- (ash 1 vm:word-bits)) + (- size vm:word-bits))))) + `(logand ,shift-form ,mask-form))) (deftransform %mask-field ((size posn int) (fixnum fixnum integer) @@ -3247,29 +3259,52 @@ (deftransform char-equal ((a b) (base-char base-char)) "open code" + #-(and unicode (not unicode-bootstrap)) '(let* ((ac (char-code a)) (bc (char-code b)) (sum (logxor ac bc))) (or (zerop sum) (when (eql sum #x20) (let ((sum (+ ac bc))) - (and (> sum 161) (< sum 213))))))) + (and (> sum 161) (< sum 213)))))) + #+(and unicode (not unicode-bootstrap)) + '(let* ((ac (char-code a)) + (bc (char-code b))) + (if (and (<= ac #x7f) + (<= bc #x7f)) + ;; ASCII + (let ((sum (logxor ac bc))) + (or (zerop sum) + (when (eql sum #x20) + (let ((sum (+ ac bc))) + (and (> sum 161) (< sum 213)))))) + ;; Unicode + (= (lisp::equal-char-code a) + (lisp::equal-char-code b))))) (deftransform char-upcase ((x) (base-char)) "open code" - '(let ((n-code (char-code x))) - (if (and (> n-code #o140) ; Octal 141 is #\a. - (< n-code #o173)) ; Octal 172 is #\z. - (code-char (logxor #x20 n-code)) - x))) + #-(and unicode (not unicode-bootstrap)) + '(if (lower-case-p x) + (code-char (- (char-code x) 32)) + x) + #+(and unicode (not unicode-bootstrap)) + '(let ((m (char-code x))) + (cond ((> m 127) (code-char (lisp::unicode-upper m))) + ((< 96 m 123) (code-char (- m 32))) + (t x)))) (deftransform char-downcase ((x) (base-char)) "open code" - '(let ((n-code (char-code x))) - (if (and (> n-code 64) ; 65 is #\A. - (< n-code 91)) ; 90 is #\Z. - (code-char (logxor #x20 n-code)) - x))) + #-(and unicode (not unicode-bootstrap)) + '(if (upper-case-p x) + (code-char (+ (char-code x) 32)) + x) + #+(and unicode (not unicode-bootstrap)) + '(let ((m (char-code x))) + (cond ((> m 127) (code-char (lisp::unicode-lower m))) + ((< 64 m 91) (code-char (+ m 32))) + (t x)))) ;;;; Equality predicate transforms: diff --git a/compiler/x86/array.lisp b/compiler/x86/array.lisp index 4a006686f..66c95b133 100644 --- a/compiler/x86/array.lisp +++ b/compiler/x86/array.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/x86/array.lisp,v 1.24 2008/11/12 15:04:23 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/x86/array.lisp,v 1.25 2009/06/11 16:04:00 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -142,8 +142,12 @@ (def-full-data-vector-frobs simple-vector * descriptor-reg any-reg) +#-unicode (def-partial-data-vector-frobs simple-string base-char :byte nil base-char-reg) +#+unicode +(def-partial-data-vector-frobs simple-string base-char :word nil + base-char-reg) (def-partial-data-vector-frobs simple-array-unsigned-byte-8 positive-fixnum :byte nil unsigned-reg signed-reg) diff --git a/compiler/x86/parms.lisp b/compiler/x86/parms.lisp index b0e00b3b1..cec99a794 100644 --- a/compiler/x86/parms.lisp +++ b/compiler/x86/parms.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/x86/parms.lisp,v 1.36 2009/01/05 22:26:27 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/x86/parms.lisp,v 1.37 2009/06/11 16:04:00 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -65,7 +65,8 @@ ;;;; Machine Architecture parameters: -(export '(word-bits byte-bits word-shift word-bytes float-sign-shift +(export '(word-bits byte-bits char-bits word-shift word-bytes char-bytes + float-sign-shift single-float-bias single-float-exponent-byte single-float-significand-byte single-float-normal-exponent-min @@ -98,6 +99,12 @@ (defconstant byte-bits 8 "Number of bits per byte where a byte is the smallest addressable object.") +(defconstant char-bits #-unicode 8 #+unicode 16 + "Number of bits needed to represent a character") + +(defconstant char-bytes (truncate char-bits byte-bits) + "Number of bytes needed to represent a character") + (defconstant word-shift (1- (integer-length (/ word-bits byte-bits))) "Number of bits to shift between word addresses and byte addresses.") diff --git a/docs/cmu-user/cmu-user.tex b/docs/cmu-user/cmu-user.tex index 04dae647c..c4a2f6d29 100644 --- a/docs/cmu-user/cmu-user.tex +++ b/docs/cmu-user/cmu-user.tex @@ -124,6 +124,7 @@ language implementation, programming environment} \input{internet} \input{debug-internals} \input{cross-referencing} +\input{unicode} \twocolumn \cindex{Function Index} diff --git a/docs/cmu-user/macros.tex b/docs/cmu-user/macros.tex index 87c2a44df..9c8cba51f 100644 --- a/docs/cmu-user/macros.tex +++ b/docs/cmu-user/macros.tex @@ -167,16 +167,16 @@ %% Define a macro %% -%% \begin{defmac}{pkg}{name}{params} +%% \begin{defmac}[suffix]{pkg}{name}{params} %% \defmacx[pkg]{name}{params} %% description of macro %% \end{defmac} -\newenvironment{defmac}[3]{% - \par\defunvspace\fnindexbold{#2}\label{FN:#2}% - \layout[#1]{#2}{#3}{Macro}}{} +\newenvironment{defmac}[4][]{% + \par\defunvspace\fnindexbold{#3}\label{FN:#3#1}% + \layout[#2]{#3}{#4}{Macro}}{} \newcommand{\defmacx}[3][\mbox{}]{% \par\fnindexbold{#2}\label{FN:#2}% - \layout[#1]{#2}{#3}{Function}} + \layout[#1]{#2}{#3}{Macro}} %% Define a variable %% @@ -234,6 +234,8 @@ \newcommand{\false}{\code{nil}} \newcommand{\true}{\code{t}} \newcommand{\nil}{\false{}} +%% Printed lisp character #\foo +\newcommand{\lispchar}[1]{\code{\#\back{#1}}} \newcommand{\ampoptional}{\code{\&optional}} \newcommand{\amprest}{\code{\&rest}} diff --git a/docs/cmu-user/unicode.tex b/docs/cmu-user/unicode.tex new file mode 100644 index 000000000..a7c21b939 --- /dev/null +++ b/docs/cmu-user/unicode.tex @@ -0,0 +1,570 @@ +\chapter{Internationalization} +\label{i18n} +\cindex{Internationalization} + +\cmucl{} supports internationalization by supporting Unicode +characters internally and by adding support for external formats to +convert from the internal format to an appropriate external character +coding format. + +To understand the support for Unicode, we refer the reader to the +\ifpdf +\href{http://www.unicode.org/}{Unicode standard}. +\else +\emph{Unicode standard} at \href{http://www.unicode.org} +\fi +\section{Changes} + +To support internationalization, the following changes to Common Lisp +functions have been done. + + +\subsection{Design Choices} + +To support Unicode, there are many approaches. One choice is to +support both 8-bit \code{base-char} and a 21-bit (or larger) +\code{character} since Unicode codepoints use 21 bits. This generally +means strings are much larger, and complicates the compiler by having +to support both \code{base-char} and \code{character} types and the +corresponding string types. This also adds complexity for the user to +understand the difference between the different string and character +types. + +Another choice is to have just one character and string type that can +hold the entire Unicode codepoint. While simplifying the compiler and +reducing the burden on the user, this significantly increases memory +usage for strings. + +The solution chosen by \cmucl{} is to tradeoff the size and complexity +by having only 16-bit characters. Most of the important languages can +be encoded using only 16-bits. The rest of the codepoints are for +rare languages or ancient scripts. Thus, the memory usage is +significantly reduced while still supporting the the most important +languages. Compiler complexity is also reduced since \code{base-char} +and \code{character} are the same as are the string types.. But we +still want to support the full Unicode character set. This is +achieved by making strings be UTF-16 strings internally. Hence, Lisp +strings are UTF-16 strings, and Lisp characters are UTF-16 code-units. + + +\subsection{Characters} +\label{sec:i18n:characters} + +Characters are now 16 bits long instead of 8 bits, and \code{base-char} +and \code{character} types are the same. This difference is +naturally indicated by changing \code{char-code-limit} from 256 to +65536. + +\subsection{Strings} +\label{sec:i18n:strings} + +In \cmucl{} there is only one type of string---\code{base-string} and +\code{string} are the same. + +Internally, the strings are encoded using UTF-16. This means that in +some rare cases the number of Lisp characters in a string is not the +same as the number of codepoints in the string. + + +\section{External Formats} + +To be able to communicate to the external world, \cmucl{} supports +external formats to convert to and from the external world to +\cmucl{}'s string format. The external format is specified in several +ways. The standard streams \var{*standard-input*}, +\var{*standard-output*}, and \var{*standard-error*} take the format +from the value specified by \var{*default-external-format*}. If +\var{*default-external-format*} is changed, these streams will now +expect input using the new format and will produce output using +the new format. + +For files, \code{OPEN} takes the \kwd{external-format} +parameter to specify the format. The default external format is +\kwd{default}. + +\subsection{Available External Formats} + +The available external formats are listed below in +Table~\ref{table:external-formats}. The first column gives the +external format, and the second column gives a list of aliases that +can be used for this format. The set of aliases can be changed by +changing the \file{aliases} file. + +For all of these formats, if an illegal sequence is encountered, no +error or warning is signaled. Instead, the offending sequence is +silently replaced with the Unicode REPLACEMENT CHARACTER (U$+$FFFD). + +\begin{table} + \centering + \begin{tabular}{|l|l|p{3in}|} + \hline + \textbf{Format} & \textbf{Aliases} & \textbf{Description} \\ + \hline + \hline + \kwd{iso8859-1} & \kwd{latin1} \kwd{latin-1} \kwd{iso-8859-1} & ISO8859-1 \\ + \hline + \kwd{iso8859-2} & \kwd{latin2} \kwd{latin-2} \kwd{iso-8859-2} & ISO8859-2 \\ + \hline + \kwd{iso8859-3} & \kwd{latin3} \kwd{latin-3} \kwd{iso-8859-3} & ISO8859-3 \\ + \hline + \kwd{iso8859-4} & \kwd{latin4} \kwd{latin-4} \kwd{iso-8859-4} & ISO8859-4 \\ + \hline + \kwd{iso8859-5} & \kwd{cyrillic} \kwd{iso-8859-5} & ISO8859-5 \\ + \hline + \kwd{iso8859-6} & \kwd{arabic} \kwd{iso-8859-6} & ISO8859-6 \\ + \hline + \kwd{iso8859-7} & \kwd{greek} \kwd{iso-8859-7} & ISO8859-7 \\ + \hline + \kwd{iso8859-8} & \kwd{hebrew} \kwd{iso-8859-8} & ISO8859-8 \\ + \hline + \kwd{iso8859-9} & \kwd{latin5} \kwd{latin-5} \kwd{iso-8859-9} & ISO8859-9 \\ + \hline + \kwd{iso8859-10} & \kwd{latin6} \kwd{latin-6} \kwd{iso-8859-10} & ISO8859-10 \\ + \hline + \kwd{iso8859-13} & \kwd{latin7} \kwd{latin-7} \kwd{iso-8859-13} & ISO8859-13 \\ + \hline + \kwd{iso8859-14} & \kwd{latin8} \kwd{latin-8} \kwd{iso-8859-14} & ISO8859-14 \\ + \hline + \kwd{iso8859-15} & \kwd{latin9} \kwd{latin-9} \kwd{iso-8859-15} & ISO8859-15 \\ + \hline + \kwd{utf-8} & \kwd{utf} \kwd{utf8} & UTF-8 \\ + \hline + \kwd{utf-16} & \kwd{utf16} & UTF-16 with optional BOM \\ + \hline + \kwd{utf-16-be} & \kwd{utf-16be} \kwd{utf16-be} & UTF-16 big-endian (without BOM) \\ + \hline + \kwd{utf-16-le} & \kwd{utf-16le} \kwd{utf16-le} & UTF-16 little-endian (without BOM) \\ + \hline + \kwd{utf-32} & \kwd{utf32} & UTF-32 with optional BOM \\ + \hline + \kwd{utf-32-be} & \kwd{utf-32be} \kwd{utf32-be} & UTF-32 big-endian (without BOM) \\ + \hline + \kwd{utf-32-le} & \kwd{utf-32le} \kwd{utf32-le} & UTF-32 little-endian (without BOM) \\ + \hline + \kwd{cp1250} & & \\ + \hline + \kwd{cp1251} & & \\ + \hline + \kwd{cp1252} & \kwd{windows-1252} \kwd{windows-cp1252} \kwd{windows-latin1} & \\ + \hline + \kwd{cp1253} & & \\ + \hline + \kwd{cp1254} & & \\ + \hline + \kwd{cp1255} & & \\ + \hline + \kwd{cp1256} & & \\ + \hline + \kwd{cp1257} & & \\ + \hline + \kwd{cp1258} & & \\ + \hline + \kwd{koi8-r} & & \\ + \hline + \kwd{mac-cyrillic} & & \\ + \hline + \kwd{mac-greek} & & \\ + \hline + \kwd{mac-icelandic} & & \\ + \hline + \kwd{mac-latin2} & & \\ + \hline + \kwd{mac-roman} & & \\ + \hline + \kwd{mac-turkish} & & \\ + \hline + \end{tabular} + \caption{External formats} + \label{table:external-formats} +\end{table} + +\subsection{Composing External Formats} + +A composing external format is an external format that converts between +one codepoint and another, rather than between codepoints and octets. +A composing external format must be used in conjunction with another +(octet-producing) external format. This is specified by +using a list as the external format. For example, we can use +\code{'(\kwd{latin1} \kwd{crlf})} as the external format. In this +particular example, the external format is latin1, but whenever a +carriage-return/linefeed sequence is read, it is converted to the Lisp +\lispchar{Newline} character. Conversely, whenever a string is written, +a Lisp \lispchar{Newline} character is converted to a +carriage-return/linefeed sequence. Without the \kwd{crlf} composing +format, the carriage-return and linefeed will be read in as separate +characters, and on output the Lisp \lispchar{Newline} character is +output as a single linefeed character. + +Table~\ref{table:composing-formats} lists the available composing formats. + +\begin{table} + \centering + \begin{tabular}{|l|l|p{3in}|} + \hline + \textbf{Format} & \textbf{Aliases} & \textbf{Description} \\ + \hline + \hline + \kwd{crlf} & \kwd{dos} & Composing format for converting to/from DOS (CR/LF) + end-of-line sequence to \lispchar{Newline}\\ + \hline + \kwd{beta-gk} & & Composing format that translates (lower-case) Beta + code (an ASCII encoding of ancient Greek) \\ + \hline + \kwd{final-sigma} & & Composing format that attempts to detect sigma in + word-final position and change it from U+3C3 to U+3C2\\ + \hline + \end{tabular} + \caption{Composing external formats} + \label{table:composing-formats} +\end{table} + +\section{Dictionary} + +\subsection{Variables} + +\begin{defvar}{extensions:}{default-external-format} + This is the default external format to use for all newly opened + files. It is also the default format to use for + \var{*standard-input*}, \var{*standard-output*}, and + \var{*standard-error*}. The default value is \kwd{iso8859-1}. + + Setting this will cause the standard streams to start using the new + format immediately. If a stream has been created with external + format \kwd{default}, then setting \var{*default-external-format*} + will cause all subsequent input and output to use the new value of + \var{*default-external-format*}. +\end{defvar} +\subsection{Characters} + +Remember that \cmucl{}'s characters are only 16-bits long but Unicode +codepoints are up to 21 bits long. Hence there are codepoints that +cannot be represented via Lisp characters. Operating on individual +characters is not recommended. Operations on strings are better. +(This would be true even if \cmucl{}'s characters could hold a +full Unicode codepoint.) + +\begin{defun}{}{char-equal}{\amprest{} \var{characters}} + \defunx{char-not-equal}{\amprest{} \var{characters}} + \defunx{char-lessp}{\amprest{} \var{characters}} + \defunx{char-greaterp}{\amprest{} \var{characters}} + \defunx{char-not-greaterp}{\amprest{} \var{characters}} + \defunx{char-not-lessp}{\amprest{} \var{characters}} + For the comparison, the characters are converted to lowercase and + the corresponding \code{char-code} are compared. +\end{defun} + +\begin{defun}{}{alpha-char-p}{\args \var{character}} + Returns non-nil{} if the Unicode category is a letter category. +\end{defun} + +\begin{defun}{}{alphanumericp}{\args \var{character}} + Returns non-nil{} if the Unicode category is a letter category or an ASCII + digit. +\end{defun} + +\begin{defun}{}{digit-char-p}{\args \var{character} \ampoptional{} \var{radix}} + Only recognizes ASCII digits (and ASCII letters if the radix is larger + than 10). +\end{defun} + +\begin{defun}{}{graphic-char-p}{\args \var{character}} + Returns non-nil{} if the Unicode category is a graphic category. +\end{defun} + +\begin{defun}{}{upper-case-p}{\args \var{character}} + \defunx{lower-case-p}{\args \var{character}} + Returns non-nil{} if the Unicode category is an uppercase + (lowercase) character. +\end{defun} + +\begin{defun}{lisp:}{title-case-p}{\args \var{character}} + Returns non-nil{} if the Unicode category is a titlecase character. +\end{defun} + +\begin{defun}{}{both-case-p}{\args \var{character}} + Returns non-nil{} if the Unicode category is an uppercase, + lowercase, or titlecase character. +\end{defun} + +\begin{defun}{}{char-upcase}{\args \var{character}} + \defunx{char-downcase}{\args \var{character}} + The Unicode uppercase (lowercase) letter is returned. +\end{defun} + +\begin{defun}{lisp:}{char-titlecase}{\args \var{character}} + \defunx{char-downcase}{\args \var{character}} + The Unicode titlecase letter is returned. +\end{defun} + +\begin{defun}{}{char-name}{\args \var{char}} + If possible the name of the character \var{char} is returned. If + there is a Unicode name, the Unicode name is returned, except + spaces are converted to underscores and the string is capitalized + via \code{string-capitalize}. If there is no Unicode name, the + form \lispchar{U+xxxx} is returned where ``xxxx'' is the + \code{char-code} of the character, in hexadecimal. +\end{defun} + +\begin{defun}{}{name-char}{\args \var{name}} + The inverse to \code{char-name}. If no character has the name + \var{name}, then \nil{} is returned. Unicode names are not + case-sensitive, and spaces and underscores are optional. +\end{defun} +\subsection{Strings} + +Strings in \cmucl{} are UTF-16 strings. That is, for Unicode code +points greater than 65535, surrogate pairs are used. We refer the +reader to the Unicode standard for more information about surrogate +pairs. We just want to make a note that because of the UTF-16 +encoding of strings, there is a distinction between Lisp characters +and Unicode codepoints. The standard string operations know about +this encoding and handle the surrogate pairs correctly. + + +\begin{defun}{}{string-upcase}{\args \var{string} \keys{\kwd{start} + \kwd{end} \kwd{casing}}} + \defunx{string-downcase}{\args \var{string} \keys{\kwd{start} + \kwd{end} \kwd{casing}}} + \defunx{string-capitalize}{\args \var{string} \keys{\kwd{start} + \kwd{end} \kwd{casing}}} + The case of the \var{string} is changed appropriately. Surrogate + pairs are handled correctly. The conversion to the appropriate case + is done based on the Unicode conversion. The additional argument + \kwd{casing} controls how case conversion is done. The default + value is \kwd{:simple}, which uses simple Unicode case conversion. + If \kwd{casing} is \kwd{:full}, then full Unicode case conversion is + done where the string may actually increase in length. +\end{defun} + +\begin{defun}{}{nstring-upcase}{\args \var{string} \keys{\kwd{start} \kwd{end}}} + \defunx{nstring-downcase}{\args \var{string} \keys{\kwd{start} \kwd{end}}} + \defunx{nstring-capitalize}{\args \var{string} \keys{\kwd{start} + \kwd{end}}} + The case of the \var{string} is changed appropriately. Surrogate + pairs are handled correctly. The conversion to the appropriate case + is done based on the Unicode conversion. (Full casing is not + available because the string length cannot be increased when needed.) +\end{defun} + +\begin{defun}{}{string=}{\args \var{s1} \var{s2} \keys{\kwd{start1} + \kwd{end1} \kwd{start2} \kwd{end2}}} + \defunx{string/=}{\args \var{s1} \var{s2} \keys{\kwd{start1} \kwd{end1} \kwd{start2} \kwd{end2}}} + \defunx{string$<$}{\args \var{s1} \var{s2} \keys{\kwd{start1} \kwd{end1} \kwd{start2} \kwd{end2}}} + \defunx{string$>$}{\args \var{s1} \var{s2} \keys{\kwd{start1} \kwd{end1} \kwd{start2} \kwd{end2}}} + \defunx{string$<$=}{\args \var{s1} \var{s2} \keys{\kwd{start1} \kwd{end1} \kwd{start2} \kwd{end2}}} + \defunx{string$>$=}{\args \var{s1} \var{s2} \keys{\kwd{start1} \kwd{end1} \kwd{start2} \kwd{end2}}} + The string comparison is done in codepoint order. (This is + different from just comparing the order of the individual characters + due to surrogate pairs.) Unicode collation is not done. +\end{defun} + +\begin{defun}{}{string-equal}{\args \var{s1} \var{s2} \keys{\kwd{start1} + \kwd{end1} \kwd{start2} \kwd{end2}}} + \defunx{string-not-equal}{\args \var{s1} \var{s2} \keys{\kwd{start1} \kwd{end1} \kwd{start2} \kwd{end2}}} + \defunx{string-lessp}{\args \var{s1} \var{s2} \keys{\kwd{start1} \kwd{end1} \kwd{start2} \kwd{end2}}} + \defunx{string-greaterp}{\args \var{s1} \var{s2} \keys{\kwd{start1} \kwd{end1} \kwd{start2} \kwd{end2}}} + \defunx{string-not-greaterp}{\args \var{s1} \var{s2} \keys{\kwd{start1} \kwd{end1} \kwd{start2} \kwd{end2}}} + \defunx{string-not-lessp}{\args \var{s1} \var{s2} \keys{\kwd{start1} \kwd{end1} \kwd{start2} \kwd{end2}}} + Each codepoint in each string is converted to lowercase and the + appropriate comparison of the codepoint values is done. Unicode + collation is not done. +\end{defun} + +\begin{defun}{}{string-left-trim}{\args \var{bag} \var{string}} + \defunx{string-right-trim}{\args \var{bag} \var{string}} + \defunx{string-trim}{\args \var{bag} \var{string}} + Removes any characters in \code{bag} from the left, right, or both + ends of the string \code{string}, respectively. This has potential + problems if you want to remove a surrogate character from the + string, since a single character cannot represent a surrogate. As + an extension, if \code{bag} is a string, we properly handle + surrogate characters in the \code{bag}. +\end{defun} + +\subsection{Sequences} + +Since strings are also sequences, the sequence functions can be used +on strings. We note here some issues with these functions. Most +issues are due to the fact that strings are UTF-16 strings and +characters are UTF-16 code units, not Unicode codepoints. + +\begin{defun}{}{remove-duplicates}{\args \var{sequence} + \keys{\kwd{from-end} \kwd{test} \kwd{test-not} \kwd{start} + \kwd{end} \kwd{key}}} + \defunx{delete-duplicates}{\args \var{sequence} + \keys{\kwd{from-end} \kwd{test} \kwd{test-not} \kwd{start} + \kwd{end} \kwd{key}}} + Because of surrogate pairs these functions may remove a high or low + surrogate value, leaving the string in an invalid state. Use these + functions carefully with strings. +\end{defun} + + +\subsection{Reader} + +To support Unicode characters, the reader has been extended to +recognize characters written in hexadecimal. Thus \lispchar{U+41} is +the ASCII capital letter ``A'', since 41 is the hexadecimal code for +that letter. The Unicode name of the character is also recognized, +except spaces in the name are replaced by underscores. + +Recall, however, that characters in \cmucl{} are only 16 bits long so +many Unicode characters cannot be represented. However, strings can +represent all Unicode characters. + +When symbols are read, the symbol name is converted to Unicode NFC +form before interning the symbol into the package. Hence, +\code{symbol-name (intern ``string'')} may produce a string that is +not \code{string=} to ``string''. However, after conversion to NFC +form, the strings will be identical. + +\subsection{Printer} + +When printing characters, if the character is a graphic character, the +character is printed. Thus \lispchar{U+41} is printed as +\lispchar{A}. If the character is not a graphic character, the Lisp +name (e.g., \lispchar{Tab}) is used if possible; +if there is no Lisp name, the Unicode name is used. If there is no +Unicode name, the hexadecimal char-code is +printed. For example, \lispchar{U+34e}, which is not a graphic +character, is printed as \lispchar{Combining\_Upwards\_Arrow\_Below}, +and \lispchar{U+9f} which is not a graphic character and does not have a +Unicode name, is printed as \lispchar{U+009F}. + +\subsection{Miscellaneous} + + +\subsubsection{Files} + +\cmucl{} loads external formats using the search-list +\file{ext-formats:}. The \file{aliases} file is also located using +this search-list. + +The Unicode data base is stored in compressed form in the file +\file{ext-formats:unidata.bin}. If this file is not found, Unicode +support is severely reduced; you can only use ASCII characters. + +\subsubsection{Utilities} + +Since strings are UTF-16 and hence may contain surrogate pairs, some +utility functions are provided to make access easier. + +\begin{defun}{lisp:}{codepoint}{\args \var{string} \var{i} + \ampoptional{} \var{end}} + Return the codepoint value from \var{string} at position \var{i}. + If code unit at that position is a surrogate value, it is combined + with either the previous or following code unit (when possible) to + compute the codepoint. The first return value is the codepoint + itself. The second return value is \nil{} if the position is not a + surrogate pair. Otherwise, $+1$ or $-1$ is returned if the position + is the high (leading) or low (trailing) surrogate value, respectively. + + This is useful for iterating through a string in codepoint sequence. +\end{defun} + +\begin{defun}{lisp:}{surrogates-to-codepoint}{\args \var{hi} \var{lo}} + Convert the given \var{hi} and \var{lo} surrogate characters to the + corresponding codepoint value +\end{defun} + +\begin{defun}{lisp:}{surrogates}{\args \var{codepoint}} + Convert the given \var{codepoint} value to the corresponding high + and low surrogate characters. If the codepoint is less than 65536, + the second value is \nil{} since the codepoint does not need to be + represented as a surrogate pair. +\end{defun} + +\begin{defun}{stream:}{string-encode}{\args \var{string} + \var{external-format} \ampoptional{} (\var{start} 0) \var{end}} + \code{string-encode} encodes \var{string} using the format + \var{external-format}, producing an array of octest. Each octet is + converted to a character via \code{code-char} and the resulting + string is returned. + + The optional argument \var{start}, defaulting to 0, specifies the + starting index and \var{end}, defaulting to the length of the + string, is the end of the string. +\end{defun} + +\begin{defun}{stream:}{string-decode}{\args \var{string} + \var{external-format} \ampoptional{} (\var{start} 0) \var{end}} + \code{string-decode} decodes \var{string} using the format + \var{external-format} and produces a new string. Each character of + \var{string} is converted to octet (by \code{char-code}) and the + resulting array of octets is used by the external format to produce + a string. This is the inverse of \code{string-encode}. + + The optional argument \var{start}, defaulting to 0, specifies the + starting index and \var{end}, defaulting to the length of the + string, is the end of the string. + + \var{string} must consist of characters whose \code{char-code} is + less than 256. +\end{defun} + +\section{Writing External Formats} + +Users may write their own external formats. It is probably easiest to +look at existing external formats to see how do this. + +An external format basically needs two functions: +\code{octets-to-code} to convert octets to Unicode codepoints and +\code{code-to-octets} to convert Unicode codepoints to octets. The +external format is defined using the macro +\code{stream::define-external-format}. + +\begin{defmac}[base]{stream:}{define-external-format}{\args \var{name} + (\keys{\var{min} \var{max} \var{size}}) (\amprest{} \var{slots}) + \morekeys{\var{octets-to-code} \var{code-to-octets}}} + \defmacx[stream:]{define-external-format}{\args \var{name} + (\var{base}) (\amprest{} \var{slots})} + + The first defines a new external format of the name \kwd{name}. + \var{min}, \var{max}, and \var{size} are the minimum and maximum + number of octets that make up a character. (\code{\kwd{size} n} is + just a short cut for \code{\kwd{min} n \kwd{max} n}.) The arguments + \var{octets-to-code} and \var{code-to-octets} are not optional in + this case. They specify how to convert octets to codepoints and + vice versa, respectively. These should be backquoted forms for the + body of a function to do the conversion. See the description below + for these functions. Some good examples are the external format for + \kwd{utf-8} or \kwd{utf-16}. The \kwd{slots} argument is a list of + read-only slots, similar to defstruct. The slot names are available as + local variables inside the \var{code-to-octets} and \var{octets-to-code} + bodies. + + The second form above defines an external format with the name + \kwd{name} that is based on a previously defined format \kwd{base}. + The \var{slots} are inherited from the \kwd{base} format by default, + although the definition may alter their values and add new slots. + See, for example, the \kwd{mac-greek} external format. + +\end{defmac} + +\begin{defmac}{stream:}{octets-to-code}{\args \var{state} \var{input} + \var{unput} \amprest{} \var{args}} + This defines a form to be used by an external format to convert + octets to a code point. \var{state} is a form that can be used by + the body to access the state variable of a stream. This can be used + for any reason to hold anything needed by \code{octets-to-code}. + \var{input} is a form that returns one octet from the input stream. + \var{unput} will put back \var{N} octets to the stream. \var{args} is a + list of variables that need to be defined for any symbols in the + body of the macro. +\end{defmac} + +\begin{defmac}{stream:}{code-to-octets}{\args \var{code} \var{state} + \var{output} \amprest{} \var{args}} + Defines a form to be used by the external format to convert a code + point to octets for output. \var{code} is the code point to be + converted. \var{state} is a form to access the current value of the + stream's state variable. \var{output} is a form that writes one + octet to the output stream. +\end{defmac} + +\begin{defmac}{stream:}{define-composing-external-format}{\args \var{name} + (\keys{\var{min} \var{max} \var{size}}) \var{input} + \var{output}} + This is the same as \code{define-external-format}, except that a + composing external format is created. +\end{defmac} diff --git a/general-info/release-20a.txt b/general-info/release-20a.txt index 6dd9b02bd..5c5f3a85c 100644 --- a/general-info/release-20a.txt +++ b/general-info/release-20a.txt @@ -4,7 +4,7 @@ The CMUCL project is pleased to announce the release of CMUCL 20a. This is a major release which contains numerous enhancements and -bugfixes from the 19e release. +bugfixes from the 19f release. CMUCL is a free, high performance implementation of the Common Lisp programming language which runs on most major Unix platforms. It @@ -20,6 +20,44 @@ New in this release: * Feature enhancements: + - Support for Unicode has been added. You have Unicode support if + *FEATURES* includes :UNICODE. + o CHAR-CODE-LIMIT is 65536. + o There is only one character type; CHARACTER and BASE-CHAR are + the same types. + o There is only one string type; STRING and BASE-STRING are the + same type. All strings are UTF-16 strings and therefore + contain UTF-16 surrogate pairs. While most string functions + correctly handle surrogate pairs, not all do. It is up to the + user to handle this. In particular, processing of strings on + a character-by-character basis will need to handle surrogate + pairs. + o External formats are supported. Functions that need to know + the external format take an :EXTERNAL-FORMAT keyword argument + to specify the format. + + The special variable STREAM:*DEFAULT-EXTERNAL-FORMAT* + specifies the default format to be used for all streams. + Setting this to a new value will change the external format + for all streams to use the new format. This includes + *STANDARD-INPUT* and friends. + + Many external formats are supported. The complete list is + in aliases, but we support at least :ISO-8859-1, :UTF-8, + :UTF-16, :UTF-32, :CRLF. + o CHAR-LESSP and friends perform case-folding by converting to + lowercase. (The non-Unicode version converted to uppercase.) + o STRING<, STRING>, and friends compare strings in codepoint order. + o STRING-LESSP, STRING-GREATERP, and friends compare strings in + codepoint order after doing a case-folding operation on each + codepoint. The case-folding operation converts each + codepoint to the corresponding lowercase codepoint. + o UTF16-STRING-P checks to see if a string is a valid UTF-16 + encoded string. + o Unicode normalization forms are supported via STRING-TO-NFC, + STRING-TO-NFKC, STRING-TO-NFD, and STRING-TO-NFKD. + o Symbols are always normalized to NFC form. + + - WRITE-VECTOR and READ-VECTOR support vectors of with element + sizes of 1 bit, 2 bits and 4 bits. * ANSI compliance fixes: @@ -36,6 +74,7 @@ New in this release: byte-swapping is needed and the end index was not given. (Confusion about the length of the vector versus the index as an octet count, not element count.) + - Motif (CLM) should work with Unicode. * Trac Tickets: #31: pathname bug with :case :common diff --git a/i18n/BidiMirroring.txt b/i18n/BidiMirroring.txt new file mode 100644 index 000000000..64d29e44c --- /dev/null +++ b/i18n/BidiMirroring.txt @@ -0,0 +1,588 @@ +# BidiMirroring-5.1.0.txt +# Date: 2008-03-28, 10:22:00 PDT [KW] +# +# Bidi_Mirroring_Glyph Property +# +# This file is an informative contributory data file in the +# Unicode Character Database. +# +# Copyright (c) 1991-2008 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# +# This data file lists characters that have the mirrored property +# where there is another Unicode character that typically has a glyph +# that is the mirror image of the original character's glyph. +# The repertoire covered by the file is Unicode 5.1.0. +# +# The file contains a list of lines with mappings from one code point +# to another one for character-based mirroring. +# Note that for "real" mirroring, a rendering engine needs to select +# appropriate alternative glyphs, and that many Unicode characters do not +# have a mirror-image Unicode character. +# +# Each mapping line contains two fields, separated by a semicolon (';'). +# Each of the two fields contains a code point represented as a +# variable-length hexadecimal value with 4 to 6 digits. +# A comment indicates where the characters are "BEST FIT" mirroring. +# +# Code points with the "mirrored" property but no appropriate mirrors are +# listed as comments at the end of the file. +# +# For information on bidi mirroring, see UAX #9: Bidirectional Algorithm, +# at http://www.unicode.org/unicode/reports/tr9/ +# +# This file was originally created by Markus Scherer. +# Extended for Unicode 3.2, 4.0, 4.1, 5.0, and 5.1 by Ken Whistler. +# +# ############################################################ + +0028; 0029 # LEFT PARENTHESIS +0029; 0028 # RIGHT PARENTHESIS +003C; 003E # LESS-THAN SIGN +003E; 003C # GREATER-THAN SIGN +005B; 005D # LEFT SQUARE BRACKET +005D; 005B # RIGHT SQUARE BRACKET +007B; 007D # LEFT CURLY BRACKET +007D; 007B # RIGHT CURLY BRACKET +00AB; 00BB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +00BB; 00AB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0F3A; 0F3B # TIBETAN MARK GUG RTAGS GYON +0F3B; 0F3A # TIBETAN MARK GUG RTAGS GYAS +0F3C; 0F3D # TIBETAN MARK ANG KHANG GYON +0F3D; 0F3C # TIBETAN MARK ANG KHANG GYAS +169B; 169C # OGHAM FEATHER MARK +169C; 169B # OGHAM REVERSED FEATHER MARK +2039; 203A # SINGLE LEFT-POINTING ANGLE QUOTATION MARK +203A; 2039 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +2045; 2046 # LEFT SQUARE BRACKET WITH QUILL +2046; 2045 # RIGHT SQUARE BRACKET WITH QUILL +207D; 207E # SUPERSCRIPT LEFT PARENTHESIS +207E; 207D # SUPERSCRIPT RIGHT PARENTHESIS +208D; 208E # SUBSCRIPT LEFT PARENTHESIS +208E; 208D # SUBSCRIPT RIGHT PARENTHESIS +2208; 220B # ELEMENT OF +2209; 220C # NOT AN ELEMENT OF +220A; 220D # SMALL ELEMENT OF +220B; 2208 # CONTAINS AS MEMBER +220C; 2209 # DOES NOT CONTAIN AS MEMBER +220D; 220A # SMALL CONTAINS AS MEMBER +2215; 29F5 # DIVISION SLASH +223C; 223D # TILDE OPERATOR +223D; 223C # REVERSED TILDE +2243; 22CD # ASYMPTOTICALLY EQUAL TO +2252; 2253 # APPROXIMATELY EQUAL TO OR THE IMAGE OF +2253; 2252 # IMAGE OF OR APPROXIMATELY EQUAL TO +2254; 2255 # COLON EQUALS +2255; 2254 # EQUALS COLON +2264; 2265 # LESS-THAN OR EQUAL TO +2265; 2264 # GREATER-THAN OR EQUAL TO +2266; 2267 # LESS-THAN OVER EQUAL TO +2267; 2266 # GREATER-THAN OVER EQUAL TO +2268; 2269 # [BEST FIT] LESS-THAN BUT NOT EQUAL TO +2269; 2268 # [BEST FIT] GREATER-THAN BUT NOT EQUAL TO +226A; 226B # MUCH LESS-THAN +226B; 226A # MUCH GREATER-THAN +226E; 226F # [BEST FIT] NOT LESS-THAN +226F; 226E # [BEST FIT] NOT GREATER-THAN +2270; 2271 # [BEST FIT] NEITHER LESS-THAN NOR EQUAL TO +2271; 2270 # [BEST FIT] NEITHER GREATER-THAN NOR EQUAL TO +2272; 2273 # [BEST FIT] LESS-THAN OR EQUIVALENT TO +2273; 2272 # [BEST FIT] GREATER-THAN OR EQUIVALENT TO +2274; 2275 # [BEST FIT] NEITHER LESS-THAN NOR EQUIVALENT TO +2275; 2274 # [BEST FIT] NEITHER GREATER-THAN NOR EQUIVALENT TO +2276; 2277 # LESS-THAN OR GREATER-THAN +2277; 2276 # GREATER-THAN OR LESS-THAN +2278; 2279 # [BEST FIT] NEITHER LESS-THAN NOR GREATER-THAN +2279; 2278 # [BEST FIT] NEITHER GREATER-THAN NOR LESS-THAN +227A; 227B # PRECEDES +227B; 227A # SUCCEEDS +227C; 227D # PRECEDES OR EQUAL TO +227D; 227C # SUCCEEDS OR EQUAL TO +227E; 227F # [BEST FIT] PRECEDES OR EQUIVALENT TO +227F; 227E # [BEST FIT] SUCCEEDS OR EQUIVALENT TO +2280; 2281 # [BEST FIT] DOES NOT PRECEDE +2281; 2280 # [BEST FIT] DOES NOT SUCCEED +2282; 2283 # SUBSET OF +2283; 2282 # SUPERSET OF +2284; 2285 # [BEST FIT] NOT A SUBSET OF +2285; 2284 # [BEST FIT] NOT A SUPERSET OF +2286; 2287 # SUBSET OF OR EQUAL TO +2287; 2286 # SUPERSET OF OR EQUAL TO +2288; 2289 # [BEST FIT] NEITHER A SUBSET OF NOR EQUAL TO +2289; 2288 # [BEST FIT] NEITHER A SUPERSET OF NOR EQUAL TO +228A; 228B # [BEST FIT] SUBSET OF WITH NOT EQUAL TO +228B; 228A # [BEST FIT] SUPERSET OF WITH NOT EQUAL TO +228F; 2290 # SQUARE IMAGE OF +2290; 228F # SQUARE ORIGINAL OF +2291; 2292 # SQUARE IMAGE OF OR EQUAL TO +2292; 2291 # SQUARE ORIGINAL OF OR EQUAL TO +2298; 29B8 # CIRCLED DIVISION SLASH +22A2; 22A3 # RIGHT TACK +22A3; 22A2 # LEFT TACK +22A6; 2ADE # ASSERTION +22A8; 2AE4 # TRUE +22A9; 2AE3 # FORCES +22AB; 2AE5 # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +22B0; 22B1 # PRECEDES UNDER RELATION +22B1; 22B0 # SUCCEEDS UNDER RELATION +22B2; 22B3 # NORMAL SUBGROUP OF +22B3; 22B2 # CONTAINS AS NORMAL SUBGROUP +22B4; 22B5 # NORMAL SUBGROUP OF OR EQUAL TO +22B5; 22B4 # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO +22B6; 22B7 # ORIGINAL OF +22B7; 22B6 # IMAGE OF +22C9; 22CA # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT +22CA; 22C9 # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT +22CB; 22CC # LEFT SEMIDIRECT PRODUCT +22CC; 22CB # RIGHT SEMIDIRECT PRODUCT +22CD; 2243 # REVERSED TILDE EQUALS +22D0; 22D1 # DOUBLE SUBSET +22D1; 22D0 # DOUBLE SUPERSET +22D6; 22D7 # LESS-THAN WITH DOT +22D7; 22D6 # GREATER-THAN WITH DOT +22D8; 22D9 # VERY MUCH LESS-THAN +22D9; 22D8 # VERY MUCH GREATER-THAN +22DA; 22DB # LESS-THAN EQUAL TO OR GREATER-THAN +22DB; 22DA # GREATER-THAN EQUAL TO OR LESS-THAN +22DC; 22DD # EQUAL TO OR LESS-THAN +22DD; 22DC # EQUAL TO OR GREATER-THAN +22DE; 22DF # EQUAL TO OR PRECEDES +22DF; 22DE # EQUAL TO OR SUCCEEDS +22E0; 22E1 # [BEST FIT] DOES NOT PRECEDE OR EQUAL +22E1; 22E0 # [BEST FIT] DOES NOT SUCCEED OR EQUAL +22E2; 22E3 # [BEST FIT] NOT SQUARE IMAGE OF OR EQUAL TO +22E3; 22E2 # [BEST FIT] NOT SQUARE ORIGINAL OF OR EQUAL TO +22E4; 22E5 # [BEST FIT] SQUARE IMAGE OF OR NOT EQUAL TO +22E5; 22E4 # [BEST FIT] SQUARE ORIGINAL OF OR NOT EQUAL TO +22E6; 22E7 # [BEST FIT] LESS-THAN BUT NOT EQUIVALENT TO +22E7; 22E6 # [BEST FIT] GREATER-THAN BUT NOT EQUIVALENT TO +22E8; 22E9 # [BEST FIT] PRECEDES BUT NOT EQUIVALENT TO +22E9; 22E8 # [BEST FIT] SUCCEEDS BUT NOT EQUIVALENT TO +22EA; 22EB # [BEST FIT] NOT NORMAL SUBGROUP OF +22EB; 22EA # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP +22EC; 22ED # [BEST FIT] NOT NORMAL SUBGROUP OF OR EQUAL TO +22ED; 22EC # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL +22F0; 22F1 # UP RIGHT DIAGONAL ELLIPSIS +22F1; 22F0 # DOWN RIGHT DIAGONAL ELLIPSIS +22F2; 22FA # ELEMENT OF WITH LONG HORIZONTAL STROKE +22F3; 22FB # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22F4; 22FC # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22F6; 22FD # ELEMENT OF WITH OVERBAR +22F7; 22FE # SMALL ELEMENT OF WITH OVERBAR +22FA; 22F2 # CONTAINS WITH LONG HORIZONTAL STROKE +22FB; 22F3 # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22FC; 22F4 # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +22FD; 22F6 # CONTAINS WITH OVERBAR +22FE; 22F7 # SMALL CONTAINS WITH OVERBAR +2308; 2309 # LEFT CEILING +2309; 2308 # RIGHT CEILING +230A; 230B # LEFT FLOOR +230B; 230A # RIGHT FLOOR +2329; 232A # LEFT-POINTING ANGLE BRACKET +232A; 2329 # RIGHT-POINTING ANGLE BRACKET +2768; 2769 # MEDIUM LEFT PARENTHESIS ORNAMENT +2769; 2768 # MEDIUM RIGHT PARENTHESIS ORNAMENT +276A; 276B # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT +276B; 276A # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT +276C; 276D # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT +276D; 276C # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT +276E; 276F # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT +276F; 276E # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT +2770; 2771 # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT +2771; 2770 # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT +2772; 2773 # LIGHT LEFT TORTOISE SHELL BRACKET +2773; 2772 # LIGHT RIGHT TORTOISE SHELL BRACKET +2774; 2775 # MEDIUM LEFT CURLY BRACKET ORNAMENT +2775; 2774 # MEDIUM RIGHT CURLY BRACKET ORNAMENT +27C3; 27C4 # OPEN SUBSET +27C4; 27C3 # OPEN SUPERSET +27C5; 27C6 # LEFT S-SHAPED BAG DELIMITER +27C6; 27C5 # RIGHT S-SHAPED BAG DELIMITER +27C8; 27C9 # REVERSE SOLIDUS PRECEDING SUBSET +27C9; 27C8 # SUPERSET PRECEDING SOLIDUS +27D5; 27D6 # LEFT OUTER JOIN +27D6; 27D5 # RIGHT OUTER JOIN +27DD; 27DE # LONG RIGHT TACK +27DE; 27DD # LONG LEFT TACK +27E2; 27E3 # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK +27E3; 27E2 # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK +27E4; 27E5 # WHITE SQUARE WITH LEFTWARDS TICK +27E5; 27E4 # WHITE SQUARE WITH RIGHTWARDS TICK +27E6; 27E7 # MATHEMATICAL LEFT WHITE SQUARE BRACKET +27E7; 27E6 # MATHEMATICAL RIGHT WHITE SQUARE BRACKET +27E8; 27E9 # MATHEMATICAL LEFT ANGLE BRACKET +27E9; 27E8 # MATHEMATICAL RIGHT ANGLE BRACKET +27EA; 27EB # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET +27EB; 27EA # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET +27EC; 27ED # MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET +27ED; 27EC # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET +27EE; 27EF # MATHEMATICAL LEFT FLATTENED PARENTHESIS +27EF; 27EE # MATHEMATICAL RIGHT FLATTENED PARENTHESIS +2983; 2984 # LEFT WHITE CURLY BRACKET +2984; 2983 # RIGHT WHITE CURLY BRACKET +2985; 2986 # LEFT WHITE PARENTHESIS +2986; 2985 # RIGHT WHITE PARENTHESIS +2987; 2988 # Z NOTATION LEFT IMAGE BRACKET +2988; 2987 # Z NOTATION RIGHT IMAGE BRACKET +2989; 298A # Z NOTATION LEFT BINDING BRACKET +298A; 2989 # Z NOTATION RIGHT BINDING BRACKET +298B; 298C # LEFT SQUARE BRACKET WITH UNDERBAR +298C; 298B # RIGHT SQUARE BRACKET WITH UNDERBAR +298D; 2990 # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER +298E; 298F # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +298F; 298E # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +2990; 298D # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER +2991; 2992 # LEFT ANGLE BRACKET WITH DOT +2992; 2991 # RIGHT ANGLE BRACKET WITH DOT +2993; 2994 # LEFT ARC LESS-THAN BRACKET +2994; 2993 # RIGHT ARC GREATER-THAN BRACKET +2995; 2996 # DOUBLE LEFT ARC GREATER-THAN BRACKET +2996; 2995 # DOUBLE RIGHT ARC LESS-THAN BRACKET +2997; 2998 # LEFT BLACK TORTOISE SHELL BRACKET +2998; 2997 # RIGHT BLACK TORTOISE SHELL BRACKET +29B8; 2298 # CIRCLED REVERSE SOLIDUS +29C0; 29C1 # CIRCLED LESS-THAN +29C1; 29C0 # CIRCLED GREATER-THAN +29C4; 29C5 # SQUARED RISING DIAGONAL SLASH +29C5; 29C4 # SQUARED FALLING DIAGONAL SLASH +29CF; 29D0 # LEFT TRIANGLE BESIDE VERTICAL BAR +29D0; 29CF # VERTICAL BAR BESIDE RIGHT TRIANGLE +29D1; 29D2 # BOWTIE WITH LEFT HALF BLACK +29D2; 29D1 # BOWTIE WITH RIGHT HALF BLACK +29D4; 29D5 # TIMES WITH LEFT HALF BLACK +29D5; 29D4 # TIMES WITH RIGHT HALF BLACK +29D8; 29D9 # LEFT WIGGLY FENCE +29D9; 29D8 # RIGHT WIGGLY FENCE +29DA; 29DB # LEFT DOUBLE WIGGLY FENCE +29DB; 29DA # RIGHT DOUBLE WIGGLY FENCE +29F5; 2215 # REVERSE SOLIDUS OPERATOR +29F8; 29F9 # BIG SOLIDUS +29F9; 29F8 # BIG REVERSE SOLIDUS +29FC; 29FD # LEFT-POINTING CURVED ANGLE BRACKET +29FD; 29FC # RIGHT-POINTING CURVED ANGLE BRACKET +2A2B; 2A2C # MINUS SIGN WITH FALLING DOTS +2A2C; 2A2B # MINUS SIGN WITH RISING DOTS +2A2D; 2A2E # PLUS SIGN IN LEFT HALF CIRCLE +2A2E; 2A2D # PLUS SIGN IN RIGHT HALF CIRCLE +2A34; 2A35 # MULTIPLICATION SIGN IN LEFT HALF CIRCLE +2A35; 2A34 # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE +2A3C; 2A3D # INTERIOR PRODUCT +2A3D; 2A3C # RIGHTHAND INTERIOR PRODUCT +2A64; 2A65 # Z NOTATION DOMAIN ANTIRESTRICTION +2A65; 2A64 # Z NOTATION RANGE ANTIRESTRICTION +2A79; 2A7A # LESS-THAN WITH CIRCLE INSIDE +2A7A; 2A79 # GREATER-THAN WITH CIRCLE INSIDE +2A7D; 2A7E # LESS-THAN OR SLANTED EQUAL TO +2A7E; 2A7D # GREATER-THAN OR SLANTED EQUAL TO +2A7F; 2A80 # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE +2A80; 2A7F # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE +2A81; 2A82 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE +2A82; 2A81 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE +2A83; 2A84 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT +2A84; 2A83 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT +2A8B; 2A8C # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN +2A8C; 2A8B # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN +2A91; 2A92 # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL +2A92; 2A91 # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL +2A93; 2A94 # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL +2A94; 2A93 # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL +2A95; 2A96 # SLANTED EQUAL TO OR LESS-THAN +2A96; 2A95 # SLANTED EQUAL TO OR GREATER-THAN +2A97; 2A98 # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE +2A98; 2A97 # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE +2A99; 2A9A # DOUBLE-LINE EQUAL TO OR LESS-THAN +2A9A; 2A99 # DOUBLE-LINE EQUAL TO OR GREATER-THAN +2A9B; 2A9C # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN +2A9C; 2A9B # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN +2AA1; 2AA2 # DOUBLE NESTED LESS-THAN +2AA2; 2AA1 # DOUBLE NESTED GREATER-THAN +2AA6; 2AA7 # LESS-THAN CLOSED BY CURVE +2AA7; 2AA6 # GREATER-THAN CLOSED BY CURVE +2AA8; 2AA9 # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL +2AA9; 2AA8 # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL +2AAA; 2AAB # SMALLER THAN +2AAB; 2AAA # LARGER THAN +2AAC; 2AAD # SMALLER THAN OR EQUAL TO +2AAD; 2AAC # LARGER THAN OR EQUAL TO +2AAF; 2AB0 # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN +2AB0; 2AAF # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN +2AB3; 2AB4 # PRECEDES ABOVE EQUALS SIGN +2AB4; 2AB3 # SUCCEEDS ABOVE EQUALS SIGN +2ABB; 2ABC # DOUBLE PRECEDES +2ABC; 2ABB # DOUBLE SUCCEEDS +2ABD; 2ABE # SUBSET WITH DOT +2ABE; 2ABD # SUPERSET WITH DOT +2ABF; 2AC0 # SUBSET WITH PLUS SIGN BELOW +2AC0; 2ABF # SUPERSET WITH PLUS SIGN BELOW +2AC1; 2AC2 # SUBSET WITH MULTIPLICATION SIGN BELOW +2AC2; 2AC1 # SUPERSET WITH MULTIPLICATION SIGN BELOW +2AC3; 2AC4 # SUBSET OF OR EQUAL TO WITH DOT ABOVE +2AC4; 2AC3 # SUPERSET OF OR EQUAL TO WITH DOT ABOVE +2AC5; 2AC6 # SUBSET OF ABOVE EQUALS SIGN +2AC6; 2AC5 # SUPERSET OF ABOVE EQUALS SIGN +2ACD; 2ACE # SQUARE LEFT OPEN BOX OPERATOR +2ACE; 2ACD # SQUARE RIGHT OPEN BOX OPERATOR +2ACF; 2AD0 # CLOSED SUBSET +2AD0; 2ACF # CLOSED SUPERSET +2AD1; 2AD2 # CLOSED SUBSET OR EQUAL TO +2AD2; 2AD1 # CLOSED SUPERSET OR EQUAL TO +2AD3; 2AD4 # SUBSET ABOVE SUPERSET +2AD4; 2AD3 # SUPERSET ABOVE SUBSET +2AD5; 2AD6 # SUBSET ABOVE SUBSET +2AD6; 2AD5 # SUPERSET ABOVE SUPERSET +2ADE; 22A6 # SHORT LEFT TACK +2AE3; 22A9 # DOUBLE VERTICAL BAR LEFT TURNSTILE +2AE4; 22A8 # VERTICAL BAR DOUBLE LEFT TURNSTILE +2AE5; 22AB # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE +2AEC; 2AED # DOUBLE STROKE NOT SIGN +2AED; 2AEC # REVERSED DOUBLE STROKE NOT SIGN +2AF7; 2AF8 # TRIPLE NESTED LESS-THAN +2AF8; 2AF7 # TRIPLE NESTED GREATER-THAN +2AF9; 2AFA # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO +2AFA; 2AF9 # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO +2E02; 2E03 # LEFT SUBSTITUTION BRACKET +2E03; 2E02 # RIGHT SUBSTITUTION BRACKET +2E04; 2E05 # LEFT DOTTED SUBSTITUTION BRACKET +2E05; 2E04 # RIGHT DOTTED SUBSTITUTION BRACKET +2E09; 2E0A # LEFT TRANSPOSITION BRACKET +2E0A; 2E09 # RIGHT TRANSPOSITION BRACKET +2E0C; 2E0D # LEFT RAISED OMISSION BRACKET +2E0D; 2E0C # RIGHT RAISED OMISSION BRACKET +2E1C; 2E1D # LEFT LOW PARAPHRASE BRACKET +2E1D; 2E1C # RIGHT LOW PARAPHRASE BRACKET +2E20; 2E21 # LEFT VERTICAL BAR WITH QUILL +2E21; 2E20 # RIGHT VERTICAL BAR WITH QUILL +2E22; 2E23 # TOP LEFT HALF BRACKET +2E23; 2E22 # TOP RIGHT HALF BRACKET +2E24; 2E25 # BOTTOM LEFT HALF BRACKET +2E25; 2E24 # BOTTOM RIGHT HALF BRACKET +2E26; 2E27 # LEFT SIDEWAYS U BRACKET +2E27; 2E26 # RIGHT SIDEWAYS U BRACKET +2E28; 2E29 # LEFT DOUBLE PARENTHESIS +2E29; 2E28 # RIGHT DOUBLE PARENTHESIS +3008; 3009 # LEFT ANGLE BRACKET +3009; 3008 # RIGHT ANGLE BRACKET +300A; 300B # LEFT DOUBLE ANGLE BRACKET +300B; 300A # RIGHT DOUBLE ANGLE BRACKET +300C; 300D # [BEST FIT] LEFT CORNER BRACKET +300D; 300C # [BEST FIT] RIGHT CORNER BRACKET +300E; 300F # [BEST FIT] LEFT WHITE CORNER BRACKET +300F; 300E # [BEST FIT] RIGHT WHITE CORNER BRACKET +3010; 3011 # LEFT BLACK LENTICULAR BRACKET +3011; 3010 # RIGHT BLACK LENTICULAR BRACKET +3014; 3015 # LEFT TORTOISE SHELL BRACKET +3015; 3014 # RIGHT TORTOISE SHELL BRACKET +3016; 3017 # LEFT WHITE LENTICULAR BRACKET +3017; 3016 # RIGHT WHITE LENTICULAR BRACKET +3018; 3019 # LEFT WHITE TORTOISE SHELL BRACKET +3019; 3018 # RIGHT WHITE TORTOISE SHELL BRACKET +301A; 301B # LEFT WHITE SQUARE BRACKET +301B; 301A # RIGHT WHITE SQUARE BRACKET +FE59; FE5A # SMALL LEFT PARENTHESIS +FE5A; FE59 # SMALL RIGHT PARENTHESIS +FE5B; FE5C # SMALL LEFT CURLY BRACKET +FE5C; FE5B # SMALL RIGHT CURLY BRACKET +FE5D; FE5E # SMALL LEFT TORTOISE SHELL BRACKET +FE5E; FE5D # SMALL RIGHT TORTOISE SHELL BRACKET +FE64; FE65 # SMALL LESS-THAN SIGN +FE65; FE64 # SMALL GREATER-THAN SIGN +FF08; FF09 # FULLWIDTH LEFT PARENTHESIS +FF09; FF08 # FULLWIDTH RIGHT PARENTHESIS +FF1C; FF1E # FULLWIDTH LESS-THAN SIGN +FF1E; FF1C # FULLWIDTH GREATER-THAN SIGN +FF3B; FF3D # FULLWIDTH LEFT SQUARE BRACKET +FF3D; FF3B # FULLWIDTH RIGHT SQUARE BRACKET +FF5B; FF5D # FULLWIDTH LEFT CURLY BRACKET +FF5D; FF5B # FULLWIDTH RIGHT CURLY BRACKET +FF5F; FF60 # FULLWIDTH LEFT WHITE PARENTHESIS +FF60; FF5F # FULLWIDTH RIGHT WHITE PARENTHESIS +FF62; FF63 # [BEST FIT] HALFWIDTH LEFT CORNER BRACKET +FF63; FF62 # [BEST FIT] HALFWIDTH RIGHT CORNER BRACKET + +# The following characters have no appropriate mirroring character. +# For these characters it is up to the rendering system +# to provide mirrored glyphs. + +# 2140; DOUBLE-STRUCK N-ARY SUMMATION +# 2201; COMPLEMENT +# 2202; PARTIAL DIFFERENTIAL +# 2203; THERE EXISTS +# 2204; THERE DOES NOT EXIST +# 2211; N-ARY SUMMATION +# 2216; SET MINUS +# 221A; SQUARE ROOT +# 221B; CUBE ROOT +# 221C; FOURTH ROOT +# 221D; PROPORTIONAL TO +# 221F; RIGHT ANGLE +# 2220; ANGLE +# 2221; MEASURED ANGLE +# 2222; SPHERICAL ANGLE +# 2224; DOES NOT DIVIDE +# 2226; NOT PARALLEL TO +# 222B; INTEGRAL +# 222C; DOUBLE INTEGRAL +# 222D; TRIPLE INTEGRAL +# 222E; CONTOUR INTEGRAL +# 222F; SURFACE INTEGRAL +# 2230; VOLUME INTEGRAL +# 2231; CLOCKWISE INTEGRAL +# 2232; CLOCKWISE CONTOUR INTEGRAL +# 2233; ANTICLOCKWISE CONTOUR INTEGRAL +# 2239; EXCESS +# 223B; HOMOTHETIC +# 223E; INVERTED LAZY S +# 223F; SINE WAVE +# 2240; WREATH PRODUCT +# 2241; NOT TILDE +# 2242; MINUS TILDE +# 2244; NOT ASYMPTOTICALLY EQUAL TO +# 2245; APPROXIMATELY EQUAL TO +# 2246; APPROXIMATELY BUT NOT ACTUALLY EQUAL TO +# 2247; NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO +# 2248; ALMOST EQUAL TO +# 2249; NOT ALMOST EQUAL TO +# 224A; ALMOST EQUAL OR EQUAL TO +# 224B; TRIPLE TILDE +# 224C; ALL EQUAL TO +# 225F; QUESTIONED EQUAL TO +# 2260; NOT EQUAL TO +# 2262; NOT IDENTICAL TO +# 228C; MULTISET +# 22A7; MODELS +# 22AA; TRIPLE VERTICAL BAR RIGHT TURNSTILE +# 22AC; DOES NOT PROVE +# 22AD; NOT TRUE +# 22AE; DOES NOT FORCE +# 22AF; NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +# 22B8; MULTIMAP +# 22BE; RIGHT ANGLE WITH ARC +# 22BF; RIGHT TRIANGLE +# 22F5; ELEMENT OF WITH DOT ABOVE +# 22F8; ELEMENT OF WITH UNDERBAR +# 22F9; ELEMENT OF WITH TWO HORIZONTAL STROKES +# 22FF; Z NOTATION BAG MEMBERSHIP +# 2320; TOP HALF INTEGRAL +# 2321; BOTTOM HALF INTEGRAL +# 27CC; LONG DIVISION +# 27C0; THREE DIMENSIONAL ANGLE +# 27D3; LOWER RIGHT CORNER WITH DOT +# 27D4; UPPER LEFT CORNER WITH DOT +# 27DC; LEFT MULTIMAP +# 299B; MEASURED ANGLE OPENING LEFT +# 299C; RIGHT ANGLE VARIANT WITH SQUARE +# 299D; MEASURED RIGHT ANGLE WITH DOT +# 299E; ANGLE WITH S INSIDE +# 299F; ACUTE ANGLE +# 29A0; SPHERICAL ANGLE OPENING LEFT +# 29A1; SPHERICAL ANGLE OPENING UP +# 29A2; TURNED ANGLE +# 29A3; REVERSED ANGLE +# 29A4; ANGLE WITH UNDERBAR +# 29A5; REVERSED ANGLE WITH UNDERBAR +# 29A6; OBLIQUE ANGLE OPENING UP +# 29A7; OBLIQUE ANGLE OPENING DOWN +# 29A8; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT +# 29A9; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT +# 29AA; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT +# 29AB; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT +# 29AC; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP +# 29AD; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP +# 29AE; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN +# 29AF; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN +# 29C2; CIRCLE WITH SMALL CIRCLE TO THE RIGHT +# 29C3; CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT +# 29C9; TWO JOINED SQUARES +# 29CE; RIGHT TRIANGLE ABOVE LEFT TRIANGLE +# 29DC; INCOMPLETE INFINITY +# 29E1; INCREASES AS +# 29E3; EQUALS SIGN AND SLANTED PARALLEL +# 29E4; EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE +# 29E5; IDENTICAL TO AND SLANTED PARALLEL +# 29E8; DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK +# 29E9; DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK +# 29F4; RULE-DELAYED +# 29F6; SOLIDUS WITH OVERBAR +# 29F7; REVERSE SOLIDUS WITH HORIZONTAL STROKE +# 2A0A; MODULO TWO SUM +# 2A0B; SUMMATION WITH INTEGRAL +# 2A0C; QUADRUPLE INTEGRAL OPERATOR +# 2A0D; FINITE PART INTEGRAL +# 2A0E; INTEGRAL WITH DOUBLE STROKE +# 2A0F; INTEGRAL AVERAGE WITH SLASH +# 2A10; CIRCULATION FUNCTION +# 2A11; ANTICLOCKWISE INTEGRATION +# 2A12; LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE +# 2A13; LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE +# 2A14; LINE INTEGRATION NOT INCLUDING THE POLE +# 2A15; INTEGRAL AROUND A POINT OPERATOR +# 2A16; QUATERNION INTEGRAL OPERATOR +# 2A17; INTEGRAL WITH LEFTWARDS ARROW WITH HOOK +# 2A18; INTEGRAL WITH TIMES SIGN +# 2A19; INTEGRAL WITH INTERSECTION +# 2A1A; INTEGRAL WITH UNION +# 2A1B; INTEGRAL WITH OVERBAR +# 2A1C; INTEGRAL WITH UNDERBAR +# 2A1E; LARGE LEFT TRIANGLE OPERATOR +# 2A1F; Z NOTATION SCHEMA COMPOSITION +# 2A20; Z NOTATION SCHEMA PIPING +# 2A21; Z NOTATION SCHEMA PROJECTION +# 2A24; PLUS SIGN WITH TILDE ABOVE +# 2A26; PLUS SIGN WITH TILDE BELOW +# 2A29; MINUS SIGN WITH COMMA ABOVE +# 2A3E; Z NOTATION RELATIONAL COMPOSITION +# 2A57; SLOPING LARGE OR +# 2A58; SLOPING LARGE AND +# 2A6A; TILDE OPERATOR WITH DOT ABOVE +# 2A6B; TILDE OPERATOR WITH RISING DOTS +# 2A6C; SIMILAR MINUS SIMILAR +# 2A6D; CONGRUENT WITH DOT ABOVE +# 2A6F; ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT +# 2A70; APPROXIMATELY EQUAL OR EQUAL TO +# 2A73; EQUALS SIGN ABOVE TILDE OPERATOR +# 2A74; DOUBLE COLON EQUAL +# 2A7B; LESS-THAN WITH QUESTION MARK ABOVE +# 2A7C; GREATER-THAN WITH QUESTION MARK ABOVE +# 2A85; LESS-THAN OR APPROXIMATE +# 2A86; GREATER-THAN OR APPROXIMATE +# 2A87; LESS-THAN AND SINGLE-LINE NOT EQUAL TO +# 2A88; GREATER-THAN AND SINGLE-LINE NOT EQUAL TO +# 2A89; LESS-THAN AND NOT APPROXIMATE +# 2A8A; GREATER-THAN AND NOT APPROXIMATE +# 2A8D; LESS-THAN ABOVE SIMILAR OR EQUAL +# 2A8E; GREATER-THAN ABOVE SIMILAR OR EQUAL +# 2A8F; LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN +# 2A90; GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN +# 2A9D; SIMILAR OR LESS-THAN +# 2A9E; SIMILAR OR GREATER-THAN +# 2A9F; SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN +# 2AA0; SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN +# 2AA3; DOUBLE NESTED LESS-THAN WITH UNDERBAR +# 2AB1; PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO +# 2AB2; SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO +# 2AB5; PRECEDES ABOVE NOT EQUAL TO +# 2AB6; SUCCEEDS ABOVE NOT EQUAL TO +# 2AB7; PRECEDES ABOVE ALMOST EQUAL TO +# 2AB8; SUCCEEDS ABOVE ALMOST EQUAL TO +# 2AB9; PRECEDES ABOVE NOT ALMOST EQUAL TO +# 2ABA; SUCCEEDS ABOVE NOT ALMOST EQUAL TO +# 2AC7; SUBSET OF ABOVE TILDE OPERATOR +# 2AC8; SUPERSET OF ABOVE TILDE OPERATOR +# 2AC9; SUBSET OF ABOVE ALMOST EQUAL TO +# 2ACA; SUPERSET OF ABOVE ALMOST EQUAL TO +# 2ACB; SUBSET OF ABOVE NOT EQUAL TO +# 2ACC; SUPERSET OF ABOVE NOT EQUAL TO +# 2ADC; FORKING +# 2AE2; VERTICAL BAR TRIPLE RIGHT TURNSTILE +# 2AE6; LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL +# 2AEE; DOES NOT DIVIDE WITH REVERSED NEGATION SLASH +# 2AF3; PARALLEL WITH TILDE OPERATOR +# 2AFB; TRIPLE SOLIDUS BINARY RELATION +# 2AFD; DOUBLE SOLIDUS OPERATOR +# 1D6DB; MATHEMATICAL BOLD PARTIAL DIFFERENTIAL +# 1D715; MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL +# 1D74F; MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL +# 1D789; MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL +# 1D7C3; MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL + +# EOF diff --git a/i18n/CaseFolding.txt b/i18n/CaseFolding.txt new file mode 100644 index 000000000..9d2803777 --- /dev/null +++ b/i18n/CaseFolding.txt @@ -0,0 +1,1196 @@ +# CaseFolding-5.1.0.txt +# Date: 2008-03-03, 21:57:14 GMT [MD] +# +# Unicode Character Database +# Copyright (c) 1991-2008 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# For documentation, see UCD.html +# +# Case Folding Properties +# +# This file is a supplement to the UnicodeData file. +# It provides a case folding mapping generated from the Unicode Character Database. +# If all characters are mapped according to the full mapping below, then +# case differences (according to UnicodeData.txt and SpecialCasing.txt) +# are eliminated. +# +# The data supports both implementations that require simple case foldings +# (where string lengths don't change), and implementations that allow full case folding +# (where string lengths may grow). Note that where they can be supported, the +# full case foldings are superior: for example, they allow "MASSE" and "Maße" to match. +# +# All code points not listed in this file map to themselves. +# +# NOTE: case folding does not preserve normalization formats! +# +# For information on case folding, including how to have case folding +# preserve normalization formats, see Section 3.13 Default Case Algorithms in +# The Unicode Standard, Version 5.0. +# +# ================================================================================ +# Format +# ================================================================================ +# The entries in this file are in the following machine-readable format: +# +# <code>; <status>; <mapping>; # <name> +# +# The status field is: +# 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. +# Note that the Turkic mappings do not maintain canonical equivalence without additional processing. +# See the discussions of case mapping in the Unicode Standard for more information. +# +# 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.) +# +# ================================================================= +# @missing 0000..10FFFF; <codepoint> +0041; C; 0061; # LATIN CAPITAL LETTER A +0042; C; 0062; # LATIN CAPITAL LETTER B +0043; C; 0063; # LATIN CAPITAL LETTER C +0044; C; 0064; # LATIN CAPITAL LETTER D +0045; C; 0065; # LATIN CAPITAL LETTER E +0046; C; 0066; # LATIN CAPITAL LETTER F +0047; C; 0067; # LATIN CAPITAL LETTER G +0048; C; 0068; # LATIN CAPITAL LETTER H +0049; C; 0069; # LATIN CAPITAL LETTER I +0049; T; 0131; # LATIN CAPITAL LETTER I +004A; C; 006A; # LATIN CAPITAL LETTER J +004B; C; 006B; # LATIN CAPITAL LETTER K +004C; C; 006C; # LATIN CAPITAL LETTER L +004D; C; 006D; # LATIN CAPITAL LETTER M +004E; C; 006E; # LATIN CAPITAL LETTER N +004F; C; 006F; # LATIN CAPITAL LETTER O +0050; C; 0070; # LATIN CAPITAL LETTER P +0051; C; 0071; # LATIN CAPITAL LETTER Q +0052; C; 0072; # LATIN CAPITAL LETTER R +0053; C; 0073; # LATIN CAPITAL LETTER S +0054; C; 0074; # LATIN CAPITAL LETTER T +0055; C; 0075; # LATIN CAPITAL LETTER U +0056; C; 0076; # LATIN CAPITAL LETTER V +0057; C; 0077; # LATIN CAPITAL LETTER W +0058; C; 0078; # LATIN CAPITAL LETTER X +0059; C; 0079; # LATIN CAPITAL LETTER Y +005A; C; 007A; # LATIN CAPITAL LETTER Z +00B5; C; 03BC; # MICRO SIGN +00C0; C; 00E0; # LATIN CAPITAL LETTER A WITH GRAVE +00C1; C; 00E1; # LATIN CAPITAL LETTER A WITH ACUTE +00C2; C; 00E2; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +00C3; C; 00E3; # LATIN CAPITAL LETTER A WITH TILDE +00C4; C; 00E4; # LATIN CAPITAL LETTER A WITH DIAERESIS +00C5; C; 00E5; # LATIN CAPITAL LETTER A WITH RING ABOVE +00C6; C; 00E6; # LATIN CAPITAL LETTER AE +00C7; C; 00E7; # LATIN CAPITAL LETTER C WITH CEDILLA +00C8; C; 00E8; # LATIN CAPITAL LETTER E WITH GRAVE +00C9; C; 00E9; # LATIN CAPITAL LETTER E WITH ACUTE +00CA; C; 00EA; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +00CB; C; 00EB; # LATIN CAPITAL LETTER E WITH DIAERESIS +00CC; C; 00EC; # LATIN CAPITAL LETTER I WITH GRAVE +00CD; C; 00ED; # LATIN CAPITAL LETTER I WITH ACUTE +00CE; C; 00EE; # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +00CF; C; 00EF; # LATIN CAPITAL LETTER I WITH DIAERESIS +00D0; C; 00F0; # LATIN CAPITAL LETTER ETH +00D1; C; 00F1; # LATIN CAPITAL LETTER N WITH TILDE +00D2; C; 00F2; # LATIN CAPITAL LETTER O WITH GRAVE +00D3; C; 00F3; # LATIN CAPITAL LETTER O WITH ACUTE +00D4; C; 00F4; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +00D5; C; 00F5; # LATIN CAPITAL LETTER O WITH TILDE +00D6; C; 00F6; # LATIN CAPITAL LETTER O WITH DIAERESIS +00D8; C; 00F8; # LATIN CAPITAL LETTER O WITH STROKE +00D9; C; 00F9; # LATIN CAPITAL LETTER U WITH GRAVE +00DA; C; 00FA; # LATIN CAPITAL LETTER U WITH ACUTE +00DB; C; 00FB; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +00DC; C; 00FC; # LATIN CAPITAL LETTER U WITH DIAERESIS +00DD; C; 00FD; # LATIN CAPITAL LETTER Y WITH ACUTE +00DE; C; 00FE; # LATIN CAPITAL LETTER THORN +00DF; F; 0073 0073; # LATIN SMALL LETTER SHARP S +0100; C; 0101; # LATIN CAPITAL LETTER A WITH MACRON +0102; C; 0103; # LATIN CAPITAL LETTER A WITH BREVE +0104; C; 0105; # LATIN CAPITAL LETTER A WITH OGONEK +0106; C; 0107; # LATIN CAPITAL LETTER C WITH ACUTE +0108; C; 0109; # LATIN CAPITAL LETTER C WITH CIRCUMFLEX +010A; C; 010B; # LATIN CAPITAL LETTER C WITH DOT ABOVE +010C; C; 010D; # LATIN CAPITAL LETTER C WITH CARON +010E; C; 010F; # LATIN CAPITAL LETTER D WITH CARON +0110; C; 0111; # LATIN CAPITAL LETTER D WITH STROKE +0112; C; 0113; # LATIN CAPITAL LETTER E WITH MACRON +0114; C; 0115; # LATIN CAPITAL LETTER E WITH BREVE +0116; C; 0117; # LATIN CAPITAL LETTER E WITH DOT ABOVE +0118; C; 0119; # LATIN CAPITAL LETTER E WITH OGONEK +011A; C; 011B; # LATIN CAPITAL LETTER E WITH CARON +011C; C; 011D; # LATIN CAPITAL LETTER G WITH CIRCUMFLEX +011E; C; 011F; # LATIN CAPITAL LETTER G WITH BREVE +0120; C; 0121; # LATIN CAPITAL LETTER G WITH DOT ABOVE +0122; C; 0123; # LATIN CAPITAL LETTER G WITH CEDILLA +0124; C; 0125; # LATIN CAPITAL LETTER H WITH CIRCUMFLEX +0126; C; 0127; # LATIN CAPITAL LETTER H WITH STROKE +0128; C; 0129; # LATIN CAPITAL LETTER I WITH TILDE +012A; C; 012B; # LATIN CAPITAL LETTER I WITH MACRON +012C; C; 012D; # LATIN CAPITAL LETTER I WITH BREVE +012E; C; 012F; # LATIN CAPITAL LETTER I WITH OGONEK +0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE +0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE +0132; C; 0133; # LATIN CAPITAL LIGATURE IJ +0134; C; 0135; # LATIN CAPITAL LETTER J WITH CIRCUMFLEX +0136; C; 0137; # LATIN CAPITAL LETTER K WITH CEDILLA +0139; C; 013A; # LATIN CAPITAL LETTER L WITH ACUTE +013B; C; 013C; # LATIN CAPITAL LETTER L WITH CEDILLA +013D; C; 013E; # LATIN CAPITAL LETTER L WITH CARON +013F; C; 0140; # LATIN CAPITAL LETTER L WITH MIDDLE DOT +0141; C; 0142; # LATIN CAPITAL LETTER L WITH STROKE +0143; C; 0144; # LATIN CAPITAL LETTER N WITH ACUTE +0145; C; 0146; # LATIN CAPITAL LETTER N WITH CEDILLA +0147; C; 0148; # LATIN CAPITAL LETTER N WITH CARON +0149; F; 02BC 006E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE +014A; C; 014B; # LATIN CAPITAL LETTER ENG +014C; C; 014D; # LATIN CAPITAL LETTER O WITH MACRON +014E; C; 014F; # LATIN CAPITAL LETTER O WITH BREVE +0150; C; 0151; # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +0152; C; 0153; # LATIN CAPITAL LIGATURE OE +0154; C; 0155; # LATIN CAPITAL LETTER R WITH ACUTE +0156; C; 0157; # LATIN CAPITAL LETTER R WITH CEDILLA +0158; C; 0159; # LATIN CAPITAL LETTER R WITH CARON +015A; C; 015B; # LATIN CAPITAL LETTER S WITH ACUTE +015C; C; 015D; # LATIN CAPITAL LETTER S WITH CIRCUMFLEX +015E; C; 015F; # LATIN CAPITAL LETTER S WITH CEDILLA +0160; C; 0161; # LATIN CAPITAL LETTER S WITH CARON +0162; C; 0163; # LATIN CAPITAL LETTER T WITH CEDILLA +0164; C; 0165; # LATIN CAPITAL LETTER T WITH CARON +0166; C; 0167; # LATIN CAPITAL LETTER T WITH STROKE +0168; C; 0169; # LATIN CAPITAL LETTER U WITH TILDE +016A; C; 016B; # LATIN CAPITAL LETTER U WITH MACRON +016C; C; 016D; # LATIN CAPITAL LETTER U WITH BREVE +016E; C; 016F; # LATIN CAPITAL LETTER U WITH RING ABOVE +0170; C; 0171; # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0172; C; 0173; # LATIN CAPITAL LETTER U WITH OGONEK +0174; C; 0175; # LATIN CAPITAL LETTER W WITH CIRCUMFLEX +0176; C; 0177; # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX +0178; C; 00FF; # LATIN CAPITAL LETTER Y WITH DIAERESIS +0179; C; 017A; # LATIN CAPITAL LETTER Z WITH ACUTE +017B; C; 017C; # LATIN CAPITAL LETTER Z WITH DOT ABOVE +017D; C; 017E; # LATIN CAPITAL LETTER Z WITH CARON +017F; C; 0073; # LATIN SMALL LETTER LONG S +0181; C; 0253; # LATIN CAPITAL LETTER B WITH HOOK +0182; C; 0183; # LATIN CAPITAL LETTER B WITH TOPBAR +0184; C; 0185; # LATIN CAPITAL LETTER TONE SIX +0186; C; 0254; # LATIN CAPITAL LETTER OPEN O +0187; C; 0188; # LATIN CAPITAL LETTER C WITH HOOK +0189; C; 0256; # LATIN CAPITAL LETTER AFRICAN D +018A; C; 0257; # LATIN CAPITAL LETTER D WITH HOOK +018B; C; 018C; # LATIN CAPITAL LETTER D WITH TOPBAR +018E; C; 01DD; # LATIN CAPITAL LETTER REVERSED E +018F; C; 0259; # LATIN CAPITAL LETTER SCHWA +0190; C; 025B; # LATIN CAPITAL LETTER OPEN E +0191; C; 0192; # LATIN CAPITAL LETTER F WITH HOOK +0193; C; 0260; # LATIN CAPITAL LETTER G WITH HOOK +0194; C; 0263; # LATIN CAPITAL LETTER GAMMA +0196; C; 0269; # LATIN CAPITAL LETTER IOTA +0197; C; 0268; # LATIN CAPITAL LETTER I WITH STROKE +0198; C; 0199; # LATIN CAPITAL LETTER K WITH HOOK +019C; C; 026F; # LATIN CAPITAL LETTER TURNED M +019D; C; 0272; # LATIN CAPITAL LETTER N WITH LEFT HOOK +019F; C; 0275; # LATIN CAPITAL LETTER O WITH MIDDLE TILDE +01A0; C; 01A1; # LATIN CAPITAL LETTER O WITH HORN +01A2; C; 01A3; # LATIN CAPITAL LETTER OI +01A4; C; 01A5; # LATIN CAPITAL LETTER P WITH HOOK +01A6; C; 0280; # LATIN LETTER YR +01A7; C; 01A8; # LATIN CAPITAL LETTER TONE TWO +01A9; C; 0283; # LATIN CAPITAL LETTER ESH +01AC; C; 01AD; # LATIN CAPITAL LETTER T WITH HOOK +01AE; C; 0288; # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK +01AF; C; 01B0; # LATIN CAPITAL LETTER U WITH HORN +01B1; C; 028A; # LATIN CAPITAL LETTER UPSILON +01B2; C; 028B; # LATIN CAPITAL LETTER V WITH HOOK +01B3; C; 01B4; # LATIN CAPITAL LETTER Y WITH HOOK +01B5; C; 01B6; # LATIN CAPITAL LETTER Z WITH STROKE +01B7; C; 0292; # LATIN CAPITAL LETTER EZH +01B8; C; 01B9; # LATIN CAPITAL LETTER EZH REVERSED +01BC; C; 01BD; # LATIN CAPITAL LETTER TONE FIVE +01C4; C; 01C6; # LATIN CAPITAL LETTER DZ WITH CARON +01C5; C; 01C6; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON +01C7; C; 01C9; # LATIN CAPITAL LETTER LJ +01C8; C; 01C9; # LATIN CAPITAL LETTER L WITH SMALL LETTER J +01CA; C; 01CC; # LATIN CAPITAL LETTER NJ +01CB; C; 01CC; # LATIN CAPITAL LETTER N WITH SMALL LETTER J +01CD; C; 01CE; # LATIN CAPITAL LETTER A WITH CARON +01CF; C; 01D0; # LATIN CAPITAL LETTER I WITH CARON +01D1; C; 01D2; # LATIN CAPITAL LETTER O WITH CARON +01D3; C; 01D4; # LATIN CAPITAL LETTER U WITH CARON +01D5; C; 01D6; # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON +01D7; C; 01D8; # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE +01D9; C; 01DA; # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON +01DB; C; 01DC; # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE +01DE; C; 01DF; # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON +01E0; C; 01E1; # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON +01E2; C; 01E3; # LATIN CAPITAL LETTER AE WITH MACRON +01E4; C; 01E5; # LATIN CAPITAL LETTER G WITH STROKE +01E6; C; 01E7; # LATIN CAPITAL LETTER G WITH CARON +01E8; C; 01E9; # LATIN CAPITAL LETTER K WITH CARON +01EA; C; 01EB; # LATIN CAPITAL LETTER O WITH OGONEK +01EC; C; 01ED; # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON +01EE; C; 01EF; # LATIN CAPITAL LETTER EZH WITH CARON +01F0; F; 006A 030C; # LATIN SMALL LETTER J WITH CARON +01F1; C; 01F3; # LATIN CAPITAL LETTER DZ +01F2; C; 01F3; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z +01F4; C; 01F5; # LATIN CAPITAL LETTER G WITH ACUTE +01F6; C; 0195; # LATIN CAPITAL LETTER HWAIR +01F7; C; 01BF; # LATIN CAPITAL LETTER WYNN +01F8; C; 01F9; # LATIN CAPITAL LETTER N WITH GRAVE +01FA; C; 01FB; # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE +01FC; C; 01FD; # LATIN CAPITAL LETTER AE WITH ACUTE +01FE; C; 01FF; # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +0200; C; 0201; # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE +0202; C; 0203; # LATIN CAPITAL LETTER A WITH INVERTED BREVE +0204; C; 0205; # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE +0206; C; 0207; # LATIN CAPITAL LETTER E WITH INVERTED BREVE +0208; C; 0209; # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE +020A; C; 020B; # LATIN CAPITAL LETTER I WITH INVERTED BREVE +020C; C; 020D; # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE +020E; C; 020F; # LATIN CAPITAL LETTER O WITH INVERTED BREVE +0210; C; 0211; # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE +0212; C; 0213; # LATIN CAPITAL LETTER R WITH INVERTED BREVE +0214; C; 0215; # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE +0216; C; 0217; # LATIN CAPITAL LETTER U WITH INVERTED BREVE +0218; C; 0219; # LATIN CAPITAL LETTER S WITH COMMA BELOW +021A; C; 021B; # LATIN CAPITAL LETTER T WITH COMMA BELOW +021C; C; 021D; # LATIN CAPITAL LETTER YOGH +021E; C; 021F; # LATIN CAPITAL LETTER H WITH CARON +0220; C; 019E; # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG +0222; C; 0223; # LATIN CAPITAL LETTER OU +0224; C; 0225; # LATIN CAPITAL LETTER Z WITH HOOK +0226; C; 0227; # LATIN CAPITAL LETTER A WITH DOT ABOVE +0228; C; 0229; # LATIN CAPITAL LETTER E WITH CEDILLA +022A; C; 022B; # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON +022C; C; 022D; # LATIN CAPITAL LETTER O WITH TILDE AND MACRON +022E; C; 022F; # LATIN CAPITAL LETTER O WITH DOT ABOVE +0230; C; 0231; # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON +0232; C; 0233; # LATIN CAPITAL LETTER Y WITH MACRON +023A; C; 2C65; # LATIN CAPITAL LETTER A WITH STROKE +023B; C; 023C; # LATIN CAPITAL LETTER C WITH STROKE +023D; C; 019A; # LATIN CAPITAL LETTER L WITH BAR +023E; C; 2C66; # LATIN CAPITAL LETTER T WITH DIAGONAL STROKE +0241; C; 0242; # LATIN CAPITAL LETTER GLOTTAL STOP +0243; C; 0180; # LATIN CAPITAL LETTER B WITH STROKE +0244; C; 0289; # LATIN CAPITAL LETTER U BAR +0245; C; 028C; # LATIN CAPITAL LETTER TURNED V +0246; C; 0247; # LATIN CAPITAL LETTER E WITH STROKE +0248; C; 0249; # LATIN CAPITAL LETTER J WITH STROKE +024A; C; 024B; # LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL +024C; C; 024D; # LATIN CAPITAL LETTER R WITH STROKE +024E; C; 024F; # LATIN CAPITAL LETTER Y WITH STROKE +0345; C; 03B9; # COMBINING GREEK YPOGEGRAMMENI +0370; C; 0371; # GREEK CAPITAL LETTER HETA +0372; C; 0373; # GREEK CAPITAL LETTER ARCHAIC SAMPI +0376; C; 0377; # GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA +0386; C; 03AC; # GREEK CAPITAL LETTER ALPHA WITH TONOS +0388; C; 03AD; # GREEK CAPITAL LETTER EPSILON WITH TONOS +0389; C; 03AE; # GREEK CAPITAL LETTER ETA WITH TONOS +038A; C; 03AF; # GREEK CAPITAL LETTER IOTA WITH TONOS +038C; C; 03CC; # GREEK CAPITAL LETTER OMICRON WITH TONOS +038E; C; 03CD; # GREEK CAPITAL LETTER UPSILON WITH TONOS +038F; C; 03CE; # GREEK CAPITAL LETTER OMEGA WITH TONOS +0390; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +0391; C; 03B1; # GREEK CAPITAL LETTER ALPHA +0392; C; 03B2; # GREEK CAPITAL LETTER BETA +0393; C; 03B3; # GREEK CAPITAL LETTER GAMMA +0394; C; 03B4; # GREEK CAPITAL LETTER DELTA +0395; C; 03B5; # GREEK CAPITAL LETTER EPSILON +0396; C; 03B6; # GREEK CAPITAL LETTER ZETA +0397; C; 03B7; # GREEK CAPITAL LETTER ETA +0398; C; 03B8; # GREEK CAPITAL LETTER THETA +0399; C; 03B9; # GREEK CAPITAL LETTER IOTA +039A; C; 03BA; # GREEK CAPITAL LETTER KAPPA +039B; C; 03BB; # GREEK CAPITAL LETTER LAMDA +039C; C; 03BC; # GREEK CAPITAL LETTER MU +039D; C; 03BD; # GREEK CAPITAL LETTER NU +039E; C; 03BE; # GREEK CAPITAL LETTER XI +039F; C; 03BF; # GREEK CAPITAL LETTER OMICRON +03A0; C; 03C0; # GREEK CAPITAL LETTER PI +03A1; C; 03C1; # GREEK CAPITAL LETTER RHO +03A3; C; 03C3; # GREEK CAPITAL LETTER SIGMA +03A4; C; 03C4; # GREEK CAPITAL LETTER TAU +03A5; C; 03C5; # GREEK CAPITAL LETTER UPSILON +03A6; C; 03C6; # GREEK CAPITAL LETTER PHI +03A7; C; 03C7; # GREEK CAPITAL LETTER CHI +03A8; C; 03C8; # GREEK CAPITAL LETTER PSI +03A9; C; 03C9; # GREEK CAPITAL LETTER OMEGA +03AA; C; 03CA; # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA +03AB; C; 03CB; # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA +03B0; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +03C2; C; 03C3; # GREEK SMALL LETTER FINAL SIGMA +03CF; C; 03D7; # GREEK CAPITAL KAI SYMBOL +03D0; C; 03B2; # GREEK BETA SYMBOL +03D1; C; 03B8; # GREEK THETA SYMBOL +03D5; C; 03C6; # GREEK PHI SYMBOL +03D6; C; 03C0; # GREEK PI SYMBOL +03D8; C; 03D9; # GREEK LETTER ARCHAIC KOPPA +03DA; C; 03DB; # GREEK LETTER STIGMA +03DC; C; 03DD; # GREEK LETTER DIGAMMA +03DE; C; 03DF; # GREEK LETTER KOPPA +03E0; C; 03E1; # GREEK LETTER SAMPI +03E2; C; 03E3; # COPTIC CAPITAL LETTER SHEI +03E4; C; 03E5; # COPTIC CAPITAL LETTER FEI +03E6; C; 03E7; # COPTIC CAPITAL LETTER KHEI +03E8; C; 03E9; # COPTIC CAPITAL LETTER HORI +03EA; C; 03EB; # COPTIC CAPITAL LETTER GANGIA +03EC; C; 03ED; # COPTIC CAPITAL LETTER SHIMA +03EE; C; 03EF; # COPTIC CAPITAL LETTER DEI +03F0; C; 03BA; # GREEK KAPPA SYMBOL +03F1; C; 03C1; # GREEK RHO SYMBOL +03F4; C; 03B8; # GREEK CAPITAL THETA SYMBOL +03F5; C; 03B5; # GREEK LUNATE EPSILON SYMBOL +03F7; C; 03F8; # GREEK CAPITAL LETTER SHO +03F9; C; 03F2; # GREEK CAPITAL LUNATE SIGMA SYMBOL +03FA; C; 03FB; # GREEK CAPITAL LETTER SAN +03FD; C; 037B; # GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL +03FE; C; 037C; # GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL +03FF; C; 037D; # GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL +0400; C; 0450; # CYRILLIC CAPITAL LETTER IE WITH GRAVE +0401; C; 0451; # CYRILLIC CAPITAL LETTER IO +0402; C; 0452; # CYRILLIC CAPITAL LETTER DJE +0403; C; 0453; # CYRILLIC CAPITAL LETTER GJE +0404; C; 0454; # CYRILLIC CAPITAL LETTER UKRAINIAN IE +0405; C; 0455; # CYRILLIC CAPITAL LETTER DZE +0406; C; 0456; # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I +0407; C; 0457; # CYRILLIC CAPITAL LETTER YI +0408; C; 0458; # CYRILLIC CAPITAL LETTER JE +0409; C; 0459; # CYRILLIC CAPITAL LETTER LJE +040A; C; 045A; # CYRILLIC CAPITAL LETTER NJE +040B; C; 045B; # CYRILLIC CAPITAL LETTER TSHE +040C; C; 045C; # CYRILLIC CAPITAL LETTER KJE +040D; C; 045D; # CYRILLIC CAPITAL LETTER I WITH GRAVE +040E; C; 045E; # CYRILLIC CAPITAL LETTER SHORT U +040F; C; 045F; # CYRILLIC CAPITAL LETTER DZHE +0410; C; 0430; # CYRILLIC CAPITAL LETTER A +0411; C; 0431; # CYRILLIC CAPITAL LETTER BE +0412; C; 0432; # CYRILLIC CAPITAL LETTER VE +0413; C; 0433; # CYRILLIC CAPITAL LETTER GHE +0414; C; 0434; # CYRILLIC CAPITAL LETTER DE +0415; C; 0435; # CYRILLIC CAPITAL LETTER IE +0416; C; 0436; # CYRILLIC CAPITAL LETTER ZHE +0417; C; 0437; # CYRILLIC CAPITAL LETTER ZE +0418; C; 0438; # CYRILLIC CAPITAL LETTER I +0419; C; 0439; # CYRILLIC CAPITAL LETTER SHORT I +041A; C; 043A; # CYRILLIC CAPITAL LETTER KA +041B; C; 043B; # CYRILLIC CAPITAL LETTER EL +041C; C; 043C; # CYRILLIC CAPITAL LETTER EM +041D; C; 043D; # CYRILLIC CAPITAL LETTER EN +041E; C; 043E; # CYRILLIC CAPITAL LETTER O +041F; C; 043F; # CYRILLIC CAPITAL LETTER PE +0420; C; 0440; # CYRILLIC CAPITAL LETTER ER +0421; C; 0441; # CYRILLIC CAPITAL LETTER ES +0422; C; 0442; # CYRILLIC CAPITAL LETTER TE +0423; C; 0443; # CYRILLIC CAPITAL LETTER U +0424; C; 0444; # CYRILLIC CAPITAL LETTER EF +0425; C; 0445; # CYRILLIC CAPITAL LETTER HA +0426; C; 0446; # CYRILLIC CAPITAL LETTER TSE +0427; C; 0447; # CYRILLIC CAPITAL LETTER CHE +0428; C; 0448; # CYRILLIC CAPITAL LETTER SHA +0429; C; 0449; # CYRILLIC CAPITAL LETTER SHCHA +042A; C; 044A; # CYRILLIC CAPITAL LETTER HARD SIGN +042B; C; 044B; # CYRILLIC CAPITAL LETTER YERU +042C; C; 044C; # CYRILLIC CAPITAL LETTER SOFT SIGN +042D; C; 044D; # CYRILLIC CAPITAL LETTER E +042E; C; 044E; # CYRILLIC CAPITAL LETTER YU +042F; C; 044F; # CYRILLIC CAPITAL LETTER YA +0460; C; 0461; # CYRILLIC CAPITAL LETTER OMEGA +0462; C; 0463; # CYRILLIC CAPITAL LETTER YAT +0464; C; 0465; # CYRILLIC CAPITAL LETTER IOTIFIED E +0466; C; 0467; # CYRILLIC CAPITAL LETTER LITTLE YUS +0468; C; 0469; # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS +046A; C; 046B; # CYRILLIC CAPITAL LETTER BIG YUS +046C; C; 046D; # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS +046E; C; 046F; # CYRILLIC CAPITAL LETTER KSI +0470; C; 0471; # CYRILLIC CAPITAL LETTER PSI +0472; C; 0473; # CYRILLIC CAPITAL LETTER FITA +0474; C; 0475; # CYRILLIC CAPITAL LETTER IZHITSA +0476; C; 0477; # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +0478; C; 0479; # CYRILLIC CAPITAL LETTER UK +047A; C; 047B; # CYRILLIC CAPITAL LETTER ROUND OMEGA +047C; C; 047D; # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO +047E; C; 047F; # CYRILLIC CAPITAL LETTER OT +0480; C; 0481; # CYRILLIC CAPITAL LETTER KOPPA +048A; C; 048B; # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL +048C; C; 048D; # CYRILLIC CAPITAL LETTER SEMISOFT SIGN +048E; C; 048F; # CYRILLIC CAPITAL LETTER ER WITH TICK +0490; C; 0491; # CYRILLIC CAPITAL LETTER GHE WITH UPTURN +0492; C; 0493; # CYRILLIC CAPITAL LETTER GHE WITH STROKE +0494; C; 0495; # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK +0496; C; 0497; # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER +0498; C; 0499; # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER +049A; C; 049B; # CYRILLIC CAPITAL LETTER KA WITH DESCENDER +049C; C; 049D; # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE +049E; C; 049F; # CYRILLIC CAPITAL LETTER KA WITH STROKE +04A0; C; 04A1; # CYRILLIC CAPITAL LETTER BASHKIR KA +04A2; C; 04A3; # CYRILLIC CAPITAL LETTER EN WITH DESCENDER +04A4; C; 04A5; # CYRILLIC CAPITAL LIGATURE EN GHE +04A6; C; 04A7; # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK +04A8; C; 04A9; # CYRILLIC CAPITAL LETTER ABKHASIAN HA +04AA; C; 04AB; # CYRILLIC CAPITAL LETTER ES WITH DESCENDER +04AC; C; 04AD; # CYRILLIC CAPITAL LETTER TE WITH DESCENDER +04AE; C; 04AF; # CYRILLIC CAPITAL LETTER STRAIGHT U +04B0; C; 04B1; # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE +04B2; C; 04B3; # CYRILLIC CAPITAL LETTER HA WITH DESCENDER +04B4; C; 04B5; # CYRILLIC CAPITAL LIGATURE TE TSE +04B6; C; 04B7; # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER +04B8; C; 04B9; # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE +04BA; C; 04BB; # CYRILLIC CAPITAL LETTER SHHA +04BC; C; 04BD; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE +04BE; C; 04BF; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER +04C0; C; 04CF; # CYRILLIC LETTER PALOCHKA +04C1; C; 04C2; # CYRILLIC CAPITAL LETTER ZHE WITH BREVE +04C3; C; 04C4; # CYRILLIC CAPITAL LETTER KA WITH HOOK +04C5; C; 04C6; # CYRILLIC CAPITAL LETTER EL WITH TAIL +04C7; C; 04C8; # CYRILLIC CAPITAL LETTER EN WITH HOOK +04C9; C; 04CA; # CYRILLIC CAPITAL LETTER EN WITH TAIL +04CB; C; 04CC; # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE +04CD; C; 04CE; # CYRILLIC CAPITAL LETTER EM WITH TAIL +04D0; C; 04D1; # CYRILLIC CAPITAL LETTER A WITH BREVE +04D2; C; 04D3; # CYRILLIC CAPITAL LETTER A WITH DIAERESIS +04D4; C; 04D5; # CYRILLIC CAPITAL LIGATURE A IE +04D6; C; 04D7; # CYRILLIC CAPITAL LETTER IE WITH BREVE +04D8; C; 04D9; # CYRILLIC CAPITAL LETTER SCHWA +04DA; C; 04DB; # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS +04DC; C; 04DD; # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS +04DE; C; 04DF; # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS +04E0; C; 04E1; # CYRILLIC CAPITAL LETTER ABKHASIAN DZE +04E2; C; 04E3; # CYRILLIC CAPITAL LETTER I WITH MACRON +04E4; C; 04E5; # CYRILLIC CAPITAL LETTER I WITH DIAERESIS +04E6; C; 04E7; # CYRILLIC CAPITAL LETTER O WITH DIAERESIS +04E8; C; 04E9; # CYRILLIC CAPITAL LETTER BARRED O +04EA; C; 04EB; # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS +04EC; C; 04ED; # CYRILLIC CAPITAL LETTER E WITH DIAERESIS +04EE; C; 04EF; # CYRILLIC CAPITAL LETTER U WITH MACRON +04F0; C; 04F1; # CYRILLIC CAPITAL LETTER U WITH DIAERESIS +04F2; C; 04F3; # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE +04F4; C; 04F5; # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS +04F6; C; 04F7; # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER +04F8; C; 04F9; # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS +04FA; C; 04FB; # CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK +04FC; C; 04FD; # CYRILLIC CAPITAL LETTER HA WITH HOOK +04FE; C; 04FF; # CYRILLIC CAPITAL LETTER HA WITH STROKE +0500; C; 0501; # CYRILLIC CAPITAL LETTER KOMI DE +0502; C; 0503; # CYRILLIC CAPITAL LETTER KOMI DJE +0504; C; 0505; # CYRILLIC CAPITAL LETTER KOMI ZJE +0506; C; 0507; # CYRILLIC CAPITAL LETTER KOMI DZJE +0508; C; 0509; # CYRILLIC CAPITAL LETTER KOMI LJE +050A; C; 050B; # CYRILLIC CAPITAL LETTER KOMI NJE +050C; C; 050D; # CYRILLIC CAPITAL LETTER KOMI SJE +050E; C; 050F; # CYRILLIC CAPITAL LETTER KOMI TJE +0510; C; 0511; # CYRILLIC CAPITAL LETTER REVERSED ZE +0512; C; 0513; # CYRILLIC CAPITAL LETTER EL WITH HOOK +0514; C; 0515; # CYRILLIC CAPITAL LETTER LHA +0516; C; 0517; # CYRILLIC CAPITAL LETTER RHA +0518; C; 0519; # CYRILLIC CAPITAL LETTER YAE +051A; C; 051B; # CYRILLIC CAPITAL LETTER QA +051C; C; 051D; # CYRILLIC CAPITAL LETTER WE +051E; C; 051F; # CYRILLIC CAPITAL LETTER ALEUT KA +0520; C; 0521; # CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK +0522; C; 0523; # CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK +0531; C; 0561; # ARMENIAN CAPITAL LETTER AYB +0532; C; 0562; # ARMENIAN CAPITAL LETTER BEN +0533; C; 0563; # ARMENIAN CAPITAL LETTER GIM +0534; C; 0564; # ARMENIAN CAPITAL LETTER DA +0535; C; 0565; # ARMENIAN CAPITAL LETTER ECH +0536; C; 0566; # ARMENIAN CAPITAL LETTER ZA +0537; C; 0567; # ARMENIAN CAPITAL LETTER EH +0538; C; 0568; # ARMENIAN CAPITAL LETTER ET +0539; C; 0569; # ARMENIAN CAPITAL LETTER TO +053A; C; 056A; # ARMENIAN CAPITAL LETTER ZHE +053B; C; 056B; # ARMENIAN CAPITAL LETTER INI +053C; C; 056C; # ARMENIAN CAPITAL LETTER LIWN +053D; C; 056D; # ARMENIAN CAPITAL LETTER XEH +053E; C; 056E; # ARMENIAN CAPITAL LETTER CA +053F; C; 056F; # ARMENIAN CAPITAL LETTER KEN +0540; C; 0570; # ARMENIAN CAPITAL LETTER HO +0541; C; 0571; # ARMENIAN CAPITAL LETTER JA +0542; C; 0572; # ARMENIAN CAPITAL LETTER GHAD +0543; C; 0573; # ARMENIAN CAPITAL LETTER CHEH +0544; C; 0574; # ARMENIAN CAPITAL LETTER MEN +0545; C; 0575; # ARMENIAN CAPITAL LETTER YI +0546; C; 0576; # ARMENIAN CAPITAL LETTER NOW +0547; C; 0577; # ARMENIAN CAPITAL LETTER SHA +0548; C; 0578; # ARMENIAN CAPITAL LETTER VO +0549; C; 0579; # ARMENIAN CAPITAL LETTER CHA +054A; C; 057A; # ARMENIAN CAPITAL LETTER PEH +054B; C; 057B; # ARMENIAN CAPITAL LETTER JHEH +054C; C; 057C; # ARMENIAN CAPITAL LETTER RA +054D; C; 057D; # ARMENIAN CAPITAL LETTER SEH +054E; C; 057E; # ARMENIAN CAPITAL LETTER VEW +054F; C; 057F; # ARMENIAN CAPITAL LETTER TIWN +0550; C; 0580; # ARMENIAN CAPITAL LETTER REH +0551; C; 0581; # ARMENIAN CAPITAL LETTER CO +0552; C; 0582; # ARMENIAN CAPITAL LETTER YIWN +0553; C; 0583; # ARMENIAN CAPITAL LETTER PIWR +0554; C; 0584; # ARMENIAN CAPITAL LETTER KEH +0555; C; 0585; # ARMENIAN CAPITAL LETTER OH +0556; C; 0586; # ARMENIAN CAPITAL LETTER FEH +0587; F; 0565 0582; # ARMENIAN SMALL LIGATURE ECH YIWN +10A0; C; 2D00; # GEORGIAN CAPITAL LETTER AN +10A1; C; 2D01; # GEORGIAN CAPITAL LETTER BAN +10A2; C; 2D02; # GEORGIAN CAPITAL LETTER GAN +10A3; C; 2D03; # GEORGIAN CAPITAL LETTER DON +10A4; C; 2D04; # GEORGIAN CAPITAL LETTER EN +10A5; C; 2D05; # GEORGIAN CAPITAL LETTER VIN +10A6; C; 2D06; # GEORGIAN CAPITAL LETTER ZEN +10A7; C; 2D07; # GEORGIAN CAPITAL LETTER TAN +10A8; C; 2D08; # GEORGIAN CAPITAL LETTER IN +10A9; C; 2D09; # GEORGIAN CAPITAL LETTER KAN +10AA; C; 2D0A; # GEORGIAN CAPITAL LETTER LAS +10AB; C; 2D0B; # GEORGIAN CAPITAL LETTER MAN +10AC; C; 2D0C; # GEORGIAN CAPITAL LETTER NAR +10AD; C; 2D0D; # GEORGIAN CAPITAL LETTER ON +10AE; C; 2D0E; # GEORGIAN CAPITAL LETTER PAR +10AF; C; 2D0F; # GEORGIAN CAPITAL LETTER ZHAR +10B0; C; 2D10; # GEORGIAN CAPITAL LETTER RAE +10B1; C; 2D11; # GEORGIAN CAPITAL LETTER SAN +10B2; C; 2D12; # GEORGIAN CAPITAL LETTER TAR +10B3; C; 2D13; # GEORGIAN CAPITAL LETTER UN +10B4; C; 2D14; # GEORGIAN CAPITAL LETTER PHAR +10B5; C; 2D15; # GEORGIAN CAPITAL LETTER KHAR +10B6; C; 2D16; # GEORGIAN CAPITAL LETTER GHAN +10B7; C; 2D17; # GEORGIAN CAPITAL LETTER QAR +10B8; C; 2D18; # GEORGIAN CAPITAL LETTER SHIN +10B9; C; 2D19; # GEORGIAN CAPITAL LETTER CHIN +10BA; C; 2D1A; # GEORGIAN CAPITAL LETTER CAN +10BB; C; 2D1B; # GEORGIAN CAPITAL LETTER JIL +10BC; C; 2D1C; # GEORGIAN CAPITAL LETTER CIL +10BD; C; 2D1D; # GEORGIAN CAPITAL LETTER CHAR +10BE; C; 2D1E; # GEORGIAN CAPITAL LETTER XAN +10BF; C; 2D1F; # GEORGIAN CAPITAL LETTER JHAN +10C0; C; 2D20; # GEORGIAN CAPITAL LETTER HAE +10C1; C; 2D21; # GEORGIAN CAPITAL LETTER HE +10C2; C; 2D22; # GEORGIAN CAPITAL LETTER HIE +10C3; C; 2D23; # GEORGIAN CAPITAL LETTER WE +10C4; C; 2D24; # GEORGIAN CAPITAL LETTER HAR +10C5; C; 2D25; # GEORGIAN CAPITAL LETTER HOE +1E00; C; 1E01; # LATIN CAPITAL LETTER A WITH RING BELOW +1E02; C; 1E03; # LATIN CAPITAL LETTER B WITH DOT ABOVE +1E04; C; 1E05; # LATIN CAPITAL LETTER B WITH DOT BELOW +1E06; C; 1E07; # LATIN CAPITAL LETTER B WITH LINE BELOW +1E08; C; 1E09; # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE +1E0A; C; 1E0B; # LATIN CAPITAL LETTER D WITH DOT ABOVE +1E0C; C; 1E0D; # LATIN CAPITAL LETTER D WITH DOT BELOW +1E0E; C; 1E0F; # LATIN CAPITAL LETTER D WITH LINE BELOW +1E10; C; 1E11; # LATIN CAPITAL LETTER D WITH CEDILLA +1E12; C; 1E13; # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW +1E14; C; 1E15; # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE +1E16; C; 1E17; # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE +1E18; C; 1E19; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW +1E1A; C; 1E1B; # LATIN CAPITAL LETTER E WITH TILDE BELOW +1E1C; C; 1E1D; # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE +1E1E; C; 1E1F; # LATIN CAPITAL LETTER F WITH DOT ABOVE +1E20; C; 1E21; # LATIN CAPITAL LETTER G WITH MACRON +1E22; C; 1E23; # LATIN CAPITAL LETTER H WITH DOT ABOVE +1E24; C; 1E25; # LATIN CAPITAL LETTER H WITH DOT BELOW +1E26; C; 1E27; # LATIN CAPITAL LETTER H WITH DIAERESIS +1E28; C; 1E29; # LATIN CAPITAL LETTER H WITH CEDILLA +1E2A; C; 1E2B; # LATIN CAPITAL LETTER H WITH BREVE BELOW +1E2C; C; 1E2D; # LATIN CAPITAL LETTER I WITH TILDE BELOW +1E2E; C; 1E2F; # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE +1E30; C; 1E31; # LATIN CAPITAL LETTER K WITH ACUTE +1E32; C; 1E33; # LATIN CAPITAL LETTER K WITH DOT BELOW +1E34; C; 1E35; # LATIN CAPITAL LETTER K WITH LINE BELOW +1E36; C; 1E37; # LATIN CAPITAL LETTER L WITH DOT BELOW +1E38; C; 1E39; # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON +1E3A; C; 1E3B; # LATIN CAPITAL LETTER L WITH LINE BELOW +1E3C; C; 1E3D; # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW +1E3E; C; 1E3F; # LATIN CAPITAL LETTER M WITH ACUTE +1E40; C; 1E41; # LATIN CAPITAL LETTER M WITH DOT ABOVE +1E42; C; 1E43; # LATIN CAPITAL LETTER M WITH DOT BELOW +1E44; C; 1E45; # LATIN CAPITAL LETTER N WITH DOT ABOVE +1E46; C; 1E47; # LATIN CAPITAL LETTER N WITH DOT BELOW +1E48; C; 1E49; # LATIN CAPITAL LETTER N WITH LINE BELOW +1E4A; C; 1E4B; # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW +1E4C; C; 1E4D; # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE +1E4E; C; 1E4F; # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS +1E50; C; 1E51; # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE +1E52; C; 1E53; # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE +1E54; C; 1E55; # LATIN CAPITAL LETTER P WITH ACUTE +1E56; C; 1E57; # LATIN CAPITAL LETTER P WITH DOT ABOVE +1E58; C; 1E59; # LATIN CAPITAL LETTER R WITH DOT ABOVE +1E5A; C; 1E5B; # LATIN CAPITAL LETTER R WITH DOT BELOW +1E5C; C; 1E5D; # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON +1E5E; C; 1E5F; # LATIN CAPITAL LETTER R WITH LINE BELOW +1E60; C; 1E61; # LATIN CAPITAL LETTER S WITH DOT ABOVE +1E62; C; 1E63; # LATIN CAPITAL LETTER S WITH DOT BELOW +1E64; C; 1E65; # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE +1E66; C; 1E67; # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE +1E68; C; 1E69; # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE +1E6A; C; 1E6B; # LATIN CAPITAL LETTER T WITH DOT ABOVE +1E6C; C; 1E6D; # LATIN CAPITAL LETTER T WITH DOT BELOW +1E6E; C; 1E6F; # LATIN CAPITAL LETTER T WITH LINE BELOW +1E70; C; 1E71; # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW +1E72; C; 1E73; # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW +1E74; C; 1E75; # LATIN CAPITAL LETTER U WITH TILDE BELOW +1E76; C; 1E77; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW +1E78; C; 1E79; # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE +1E7A; C; 1E7B; # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS +1E7C; C; 1E7D; # LATIN CAPITAL LETTER V WITH TILDE +1E7E; C; 1E7F; # LATIN CAPITAL LETTER V WITH DOT BELOW +1E80; C; 1E81; # LATIN CAPITAL LETTER W WITH GRAVE +1E82; C; 1E83; # LATIN CAPITAL LETTER W WITH ACUTE +1E84; C; 1E85; # LATIN CAPITAL LETTER W WITH DIAERESIS +1E86; C; 1E87; # LATIN CAPITAL LETTER W WITH DOT ABOVE +1E88; C; 1E89; # LATIN CAPITAL LETTER W WITH DOT BELOW +1E8A; C; 1E8B; # LATIN CAPITAL LETTER X WITH DOT ABOVE +1E8C; C; 1E8D; # LATIN CAPITAL LETTER X WITH DIAERESIS +1E8E; C; 1E8F; # LATIN CAPITAL LETTER Y WITH DOT ABOVE +1E90; C; 1E91; # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX +1E92; C; 1E93; # LATIN CAPITAL LETTER Z WITH DOT BELOW +1E94; C; 1E95; # LATIN CAPITAL LETTER Z WITH LINE BELOW +1E96; F; 0068 0331; # LATIN SMALL LETTER H WITH LINE BELOW +1E97; F; 0074 0308; # LATIN SMALL LETTER T WITH DIAERESIS +1E98; F; 0077 030A; # LATIN SMALL LETTER W WITH RING ABOVE +1E99; F; 0079 030A; # LATIN SMALL LETTER Y WITH RING ABOVE +1E9A; F; 0061 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING +1E9B; C; 1E61; # LATIN SMALL LETTER LONG S WITH DOT ABOVE +1E9E; F; 0073 0073; # LATIN CAPITAL LETTER SHARP S +1E9E; S; 00DF; # LATIN CAPITAL LETTER SHARP S +1EA0; C; 1EA1; # LATIN CAPITAL LETTER A WITH DOT BELOW +1EA2; C; 1EA3; # LATIN CAPITAL LETTER A WITH HOOK ABOVE +1EA4; C; 1EA5; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE +1EA6; C; 1EA7; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE +1EA8; C; 1EA9; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +1EAA; C; 1EAB; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE +1EAC; C; 1EAD; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW +1EAE; C; 1EAF; # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE +1EB0; C; 1EB1; # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE +1EB2; C; 1EB3; # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE +1EB4; C; 1EB5; # LATIN CAPITAL LETTER A WITH BREVE AND TILDE +1EB6; C; 1EB7; # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW +1EB8; C; 1EB9; # LATIN CAPITAL LETTER E WITH DOT BELOW +1EBA; C; 1EBB; # LATIN CAPITAL LETTER E WITH HOOK ABOVE +1EBC; C; 1EBD; # LATIN CAPITAL LETTER E WITH TILDE +1EBE; C; 1EBF; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE +1EC0; C; 1EC1; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC2; C; 1EC3; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC4; C; 1EC5; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE +1EC6; C; 1EC7; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC8; C; 1EC9; # LATIN CAPITAL LETTER I WITH HOOK ABOVE +1ECA; C; 1ECB; # LATIN CAPITAL LETTER I WITH DOT BELOW +1ECC; C; 1ECD; # LATIN CAPITAL LETTER O WITH DOT BELOW +1ECE; C; 1ECF; # LATIN CAPITAL LETTER O WITH HOOK ABOVE +1ED0; C; 1ED1; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED2; C; 1ED3; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED4; C; 1ED5; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED6; C; 1ED7; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE +1ED8; C; 1ED9; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1EDA; C; 1EDB; # LATIN CAPITAL LETTER O WITH HORN AND ACUTE +1EDC; C; 1EDD; # LATIN CAPITAL LETTER O WITH HORN AND GRAVE +1EDE; C; 1EDF; # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE +1EE0; C; 1EE1; # LATIN CAPITAL LETTER O WITH HORN AND TILDE +1EE2; C; 1EE3; # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW +1EE4; C; 1EE5; # LATIN CAPITAL LETTER U WITH DOT BELOW +1EE6; C; 1EE7; # LATIN CAPITAL LETTER U WITH HOOK ABOVE +1EE8; C; 1EE9; # LATIN CAPITAL LETTER U WITH HORN AND ACUTE +1EEA; C; 1EEB; # LATIN CAPITAL LETTER U WITH HORN AND GRAVE +1EEC; C; 1EED; # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE +1EEE; C; 1EEF; # LATIN CAPITAL LETTER U WITH HORN AND TILDE +1EF0; C; 1EF1; # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW +1EF2; C; 1EF3; # LATIN CAPITAL LETTER Y WITH GRAVE +1EF4; C; 1EF5; # LATIN CAPITAL LETTER Y WITH DOT BELOW +1EF6; C; 1EF7; # LATIN CAPITAL LETTER Y WITH HOOK ABOVE +1EF8; C; 1EF9; # LATIN CAPITAL LETTER Y WITH TILDE +1EFA; C; 1EFB; # LATIN CAPITAL LETTER MIDDLE-WELSH LL +1EFC; C; 1EFD; # LATIN CAPITAL LETTER MIDDLE-WELSH V +1EFE; C; 1EFF; # LATIN CAPITAL LETTER Y WITH LOOP +1F08; C; 1F00; # GREEK CAPITAL LETTER ALPHA WITH PSILI +1F09; C; 1F01; # GREEK CAPITAL LETTER ALPHA WITH DASIA +1F0A; C; 1F02; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA +1F0B; C; 1F03; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA +1F0C; C; 1F04; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA +1F0D; C; 1F05; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA +1F0E; C; 1F06; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI +1F0F; C; 1F07; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI +1F18; C; 1F10; # GREEK CAPITAL LETTER EPSILON WITH PSILI +1F19; C; 1F11; # GREEK CAPITAL LETTER EPSILON WITH DASIA +1F1A; C; 1F12; # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA +1F1B; C; 1F13; # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA +1F1C; C; 1F14; # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA +1F1D; C; 1F15; # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +1F28; C; 1F20; # GREEK CAPITAL LETTER ETA WITH PSILI +1F29; C; 1F21; # GREEK CAPITAL LETTER ETA WITH DASIA +1F2A; C; 1F22; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA +1F2B; C; 1F23; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA +1F2C; C; 1F24; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA +1F2D; C; 1F25; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA +1F2E; C; 1F26; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI +1F2F; C; 1F27; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI +1F38; C; 1F30; # GREEK CAPITAL LETTER IOTA WITH PSILI +1F39; C; 1F31; # GREEK CAPITAL LETTER IOTA WITH DASIA +1F3A; C; 1F32; # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA +1F3B; C; 1F33; # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA +1F3C; C; 1F34; # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA +1F3D; C; 1F35; # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA +1F3E; C; 1F36; # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI +1F3F; C; 1F37; # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI +1F48; C; 1F40; # GREEK CAPITAL LETTER OMICRON WITH PSILI +1F49; C; 1F41; # GREEK CAPITAL LETTER OMICRON WITH DASIA +1F4A; C; 1F42; # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA +1F4B; C; 1F43; # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA +1F4C; C; 1F44; # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA +1F4D; C; 1F45; # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +1F50; F; 03C5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI +1F52; F; 03C5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA +1F54; F; 03C5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA +1F56; F; 03C5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI +1F59; C; 1F51; # GREEK CAPITAL LETTER UPSILON WITH DASIA +1F5B; C; 1F53; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +1F5D; C; 1F55; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +1F5F; C; 1F57; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI +1F68; C; 1F60; # GREEK CAPITAL LETTER OMEGA WITH PSILI +1F69; C; 1F61; # GREEK CAPITAL LETTER OMEGA WITH DASIA +1F6A; C; 1F62; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA +1F6B; C; 1F63; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA +1F6C; C; 1F64; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA +1F6D; C; 1F65; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA +1F6E; C; 1F66; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI +1F6F; C; 1F67; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI +1F80; F; 1F00 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI +1F81; F; 1F01 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI +1F82; F; 1F02 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI +1F83; F; 1F03 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI +1F84; F; 1F04 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI +1F85; F; 1F05 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI +1F86; F; 1F06 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +1F87; F; 1F07 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +1F88; F; 1F00 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI +1F88; S; 1F80; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI +1F89; F; 1F01 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI +1F89; S; 1F81; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI +1F8A; F; 1F02 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1F8A; S; 1F82; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1F8B; F; 1F03 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1F8B; S; 1F83; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1F8C; F; 1F04 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1F8C; S; 1F84; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1F8D; F; 1F05 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1F8D; S; 1F85; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1F8E; F; 1F06 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1F8E; S; 1F86; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1F8F; F; 1F07 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1F8F; S; 1F87; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1F90; F; 1F20 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI +1F91; F; 1F21 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI +1F92; F; 1F22 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI +1F93; F; 1F23 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI +1F94; F; 1F24 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI +1F95; F; 1F25 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI +1F96; F; 1F26 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +1F97; F; 1F27 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +1F98; F; 1F20 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI +1F98; S; 1F90; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI +1F99; F; 1F21 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI +1F99; S; 1F91; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI +1F9A; F; 1F22 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1F9A; S; 1F92; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1F9B; F; 1F23 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1F9B; S; 1F93; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1F9C; F; 1F24 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1F9C; S; 1F94; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1F9D; F; 1F25 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1F9D; S; 1F95; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1F9E; F; 1F26 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1F9E; S; 1F96; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1F9F; F; 1F27 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1F9F; S; 1F97; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1FA0; F; 1F60 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI +1FA1; F; 1F61 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI +1FA2; F; 1F62 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI +1FA3; F; 1F63 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI +1FA4; F; 1F64 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI +1FA5; F; 1F65 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI +1FA6; F; 1F66 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI +1FA7; F; 1F67 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI +1FA8; F; 1F60 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI +1FA8; S; 1FA0; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI +1FA9; F; 1F61 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI +1FA9; S; 1FA1; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI +1FAA; F; 1F62 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1FAA; S; 1FA2; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI +1FAB; F; 1F63 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1FAB; S; 1FA3; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI +1FAC; F; 1F64 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1FAC; S; 1FA4; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI +1FAD; F; 1F65 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1FAD; S; 1FA5; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI +1FAE; F; 1F66 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1FAE; S; 1FA6; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI +1FAF; F; 1F67 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1FAF; S; 1FA7; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI +1FB2; F; 1F70 03B9; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI +1FB3; F; 03B1 03B9; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI +1FB4; F; 03AC 03B9; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +1FB6; F; 03B1 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI +1FB7; F; 03B1 0342 03B9; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI +1FB8; C; 1FB0; # GREEK CAPITAL LETTER ALPHA WITH VRACHY +1FB9; C; 1FB1; # GREEK CAPITAL LETTER ALPHA WITH MACRON +1FBA; C; 1F70; # GREEK CAPITAL LETTER ALPHA WITH VARIA +1FBB; C; 1F71; # GREEK CAPITAL LETTER ALPHA WITH OXIA +1FBC; F; 03B1 03B9; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI +1FBC; S; 1FB3; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI +1FBE; C; 03B9; # GREEK PROSGEGRAMMENI +1FC2; F; 1F74 03B9; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI +1FC3; F; 03B7 03B9; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI +1FC4; F; 03AE 03B9; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +1FC6; F; 03B7 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI +1FC7; F; 03B7 0342 03B9; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI +1FC8; C; 1F72; # GREEK CAPITAL LETTER EPSILON WITH VARIA +1FC9; C; 1F73; # GREEK CAPITAL LETTER EPSILON WITH OXIA +1FCA; C; 1F74; # GREEK CAPITAL LETTER ETA WITH VARIA +1FCB; C; 1F75; # GREEK CAPITAL LETTER ETA WITH OXIA +1FCC; F; 03B7 03B9; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI +1FCC; S; 1FC3; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI +1FD2; F; 03B9 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA +1FD3; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FD6; F; 03B9 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI +1FD7; F; 03B9 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI +1FD8; C; 1FD0; # GREEK CAPITAL LETTER IOTA WITH VRACHY +1FD9; C; 1FD1; # GREEK CAPITAL LETTER IOTA WITH MACRON +1FDA; C; 1F76; # GREEK CAPITAL LETTER IOTA WITH VARIA +1FDB; C; 1F77; # GREEK CAPITAL LETTER IOTA WITH OXIA +1FE2; F; 03C5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA +1FE3; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA +1FE4; F; 03C1 0313; # GREEK SMALL LETTER RHO WITH PSILI +1FE6; F; 03C5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI +1FE7; F; 03C5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI +1FE8; C; 1FE0; # GREEK CAPITAL LETTER UPSILON WITH VRACHY +1FE9; C; 1FE1; # GREEK CAPITAL LETTER UPSILON WITH MACRON +1FEA; C; 1F7A; # GREEK CAPITAL LETTER UPSILON WITH VARIA +1FEB; C; 1F7B; # GREEK CAPITAL LETTER UPSILON WITH OXIA +1FEC; C; 1FE5; # GREEK CAPITAL LETTER RHO WITH DASIA +1FF2; F; 1F7C 03B9; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI +1FF3; F; 03C9 03B9; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI +1FF4; F; 03CE 03B9; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +1FF6; F; 03C9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI +1FF7; F; 03C9 0342 03B9; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI +1FF8; C; 1F78; # GREEK CAPITAL LETTER OMICRON WITH VARIA +1FF9; C; 1F79; # GREEK CAPITAL LETTER OMICRON WITH OXIA +1FFA; C; 1F7C; # GREEK CAPITAL LETTER OMEGA WITH VARIA +1FFB; C; 1F7D; # GREEK CAPITAL LETTER OMEGA WITH OXIA +1FFC; F; 03C9 03B9; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +1FFC; S; 1FF3; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +2126; C; 03C9; # OHM SIGN +212A; C; 006B; # KELVIN SIGN +212B; C; 00E5; # ANGSTROM SIGN +2132; C; 214E; # TURNED CAPITAL F +2160; C; 2170; # ROMAN NUMERAL ONE +2161; C; 2171; # ROMAN NUMERAL TWO +2162; C; 2172; # ROMAN NUMERAL THREE +2163; C; 2173; # ROMAN NUMERAL FOUR +2164; C; 2174; # ROMAN NUMERAL FIVE +2165; C; 2175; # ROMAN NUMERAL SIX +2166; C; 2176; # ROMAN NUMERAL SEVEN +2167; C; 2177; # ROMAN NUMERAL EIGHT +2168; C; 2178; # ROMAN NUMERAL NINE +2169; C; 2179; # ROMAN NUMERAL TEN +216A; C; 217A; # ROMAN NUMERAL ELEVEN +216B; C; 217B; # ROMAN NUMERAL TWELVE +216C; C; 217C; # ROMAN NUMERAL FIFTY +216D; C; 217D; # ROMAN NUMERAL ONE HUNDRED +216E; C; 217E; # ROMAN NUMERAL FIVE HUNDRED +216F; C; 217F; # ROMAN NUMERAL ONE THOUSAND +2183; C; 2184; # ROMAN NUMERAL REVERSED ONE HUNDRED +24B6; C; 24D0; # CIRCLED LATIN CAPITAL LETTER A +24B7; C; 24D1; # CIRCLED LATIN CAPITAL LETTER B +24B8; C; 24D2; # CIRCLED LATIN CAPITAL LETTER C +24B9; C; 24D3; # CIRCLED LATIN CAPITAL LETTER D +24BA; C; 24D4; # CIRCLED LATIN CAPITAL LETTER E +24BB; C; 24D5; # CIRCLED LATIN CAPITAL LETTER F +24BC; C; 24D6; # CIRCLED LATIN CAPITAL LETTER G +24BD; C; 24D7; # CIRCLED LATIN CAPITAL LETTER H +24BE; C; 24D8; # CIRCLED LATIN CAPITAL LETTER I +24BF; C; 24D9; # CIRCLED LATIN CAPITAL LETTER J +24C0; C; 24DA; # CIRCLED LATIN CAPITAL LETTER K +24C1; C; 24DB; # CIRCLED LATIN CAPITAL LETTER L +24C2; C; 24DC; # CIRCLED LATIN CAPITAL LETTER M +24C3; C; 24DD; # CIRCLED LATIN CAPITAL LETTER N +24C4; C; 24DE; # CIRCLED LATIN CAPITAL LETTER O +24C5; C; 24DF; # CIRCLED LATIN CAPITAL LETTER P +24C6; C; 24E0; # CIRCLED LATIN CAPITAL LETTER Q +24C7; C; 24E1; # CIRCLED LATIN CAPITAL LETTER R +24C8; C; 24E2; # CIRCLED LATIN CAPITAL LETTER S +24C9; C; 24E3; # CIRCLED LATIN CAPITAL LETTER T +24CA; C; 24E4; # CIRCLED LATIN CAPITAL LETTER U +24CB; C; 24E5; # CIRCLED LATIN CAPITAL LETTER V +24CC; C; 24E6; # CIRCLED LATIN CAPITAL LETTER W +24CD; C; 24E7; # CIRCLED LATIN CAPITAL LETTER X +24CE; C; 24E8; # CIRCLED LATIN CAPITAL LETTER Y +24CF; C; 24E9; # CIRCLED LATIN CAPITAL LETTER Z +2C00; C; 2C30; # GLAGOLITIC CAPITAL LETTER AZU +2C01; C; 2C31; # GLAGOLITIC CAPITAL LETTER BUKY +2C02; C; 2C32; # GLAGOLITIC CAPITAL LETTER VEDE +2C03; C; 2C33; # GLAGOLITIC CAPITAL LETTER GLAGOLI +2C04; C; 2C34; # GLAGOLITIC CAPITAL LETTER DOBRO +2C05; C; 2C35; # GLAGOLITIC CAPITAL LETTER YESTU +2C06; C; 2C36; # GLAGOLITIC CAPITAL LETTER ZHIVETE +2C07; C; 2C37; # GLAGOLITIC CAPITAL LETTER DZELO +2C08; C; 2C38; # GLAGOLITIC CAPITAL LETTER ZEMLJA +2C09; C; 2C39; # GLAGOLITIC CAPITAL LETTER IZHE +2C0A; C; 2C3A; # GLAGOLITIC CAPITAL LETTER INITIAL IZHE +2C0B; C; 2C3B; # GLAGOLITIC CAPITAL LETTER I +2C0C; C; 2C3C; # GLAGOLITIC CAPITAL LETTER DJERVI +2C0D; C; 2C3D; # GLAGOLITIC CAPITAL LETTER KAKO +2C0E; C; 2C3E; # GLAGOLITIC CAPITAL LETTER LJUDIJE +2C0F; C; 2C3F; # GLAGOLITIC CAPITAL LETTER MYSLITE +2C10; C; 2C40; # GLAGOLITIC CAPITAL LETTER NASHI +2C11; C; 2C41; # GLAGOLITIC CAPITAL LETTER ONU +2C12; C; 2C42; # GLAGOLITIC CAPITAL LETTER POKOJI +2C13; C; 2C43; # GLAGOLITIC CAPITAL LETTER RITSI +2C14; C; 2C44; # GLAGOLITIC CAPITAL LETTER SLOVO +2C15; C; 2C45; # GLAGOLITIC CAPITAL LETTER TVRIDO +2C16; C; 2C46; # GLAGOLITIC CAPITAL LETTER UKU +2C17; C; 2C47; # GLAGOLITIC CAPITAL LETTER FRITU +2C18; C; 2C48; # GLAGOLITIC CAPITAL LETTER HERU +2C19; C; 2C49; # GLAGOLITIC CAPITAL LETTER OTU +2C1A; C; 2C4A; # GLAGOLITIC CAPITAL LETTER PE +2C1B; C; 2C4B; # GLAGOLITIC CAPITAL LETTER SHTA +2C1C; C; 2C4C; # GLAGOLITIC CAPITAL LETTER TSI +2C1D; C; 2C4D; # GLAGOLITIC CAPITAL LETTER CHRIVI +2C1E; C; 2C4E; # GLAGOLITIC CAPITAL LETTER SHA +2C1F; C; 2C4F; # GLAGOLITIC CAPITAL LETTER YERU +2C20; C; 2C50; # GLAGOLITIC CAPITAL LETTER YERI +2C21; C; 2C51; # GLAGOLITIC CAPITAL LETTER YATI +2C22; C; 2C52; # GLAGOLITIC CAPITAL LETTER SPIDERY HA +2C23; C; 2C53; # GLAGOLITIC CAPITAL LETTER YU +2C24; C; 2C54; # GLAGOLITIC CAPITAL LETTER SMALL YUS +2C25; C; 2C55; # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL +2C26; C; 2C56; # GLAGOLITIC CAPITAL LETTER YO +2C27; C; 2C57; # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS +2C28; C; 2C58; # GLAGOLITIC CAPITAL LETTER BIG YUS +2C29; C; 2C59; # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS +2C2A; C; 2C5A; # GLAGOLITIC CAPITAL LETTER FITA +2C2B; C; 2C5B; # GLAGOLITIC CAPITAL LETTER IZHITSA +2C2C; C; 2C5C; # GLAGOLITIC CAPITAL LETTER SHTAPIC +2C2D; C; 2C5D; # GLAGOLITIC CAPITAL LETTER TROKUTASTI A +2C2E; C; 2C5E; # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE +2C60; C; 2C61; # LATIN CAPITAL LETTER L WITH DOUBLE BAR +2C62; C; 026B; # LATIN CAPITAL LETTER L WITH MIDDLE TILDE +2C63; C; 1D7D; # LATIN CAPITAL LETTER P WITH STROKE +2C64; C; 027D; # LATIN CAPITAL LETTER R WITH TAIL +2C67; C; 2C68; # LATIN CAPITAL LETTER H WITH DESCENDER +2C69; C; 2C6A; # LATIN CAPITAL LETTER K WITH DESCENDER +2C6B; C; 2C6C; # LATIN CAPITAL LETTER Z WITH DESCENDER +2C6D; C; 0251; # LATIN CAPITAL LETTER ALPHA +2C6E; C; 0271; # LATIN CAPITAL LETTER M WITH HOOK +2C6F; C; 0250; # LATIN CAPITAL LETTER TURNED A +2C72; C; 2C73; # LATIN CAPITAL LETTER W WITH HOOK +2C75; C; 2C76; # LATIN CAPITAL LETTER HALF H +2C80; C; 2C81; # COPTIC CAPITAL LETTER ALFA +2C82; C; 2C83; # COPTIC CAPITAL LETTER VIDA +2C84; C; 2C85; # COPTIC CAPITAL LETTER GAMMA +2C86; C; 2C87; # COPTIC CAPITAL LETTER DALDA +2C88; C; 2C89; # COPTIC CAPITAL LETTER EIE +2C8A; C; 2C8B; # COPTIC CAPITAL LETTER SOU +2C8C; C; 2C8D; # COPTIC CAPITAL LETTER ZATA +2C8E; C; 2C8F; # COPTIC CAPITAL LETTER HATE +2C90; C; 2C91; # COPTIC CAPITAL LETTER THETHE +2C92; C; 2C93; # COPTIC CAPITAL LETTER IAUDA +2C94; C; 2C95; # COPTIC CAPITAL LETTER KAPA +2C96; C; 2C97; # COPTIC CAPITAL LETTER LAULA +2C98; C; 2C99; # COPTIC CAPITAL LETTER MI +2C9A; C; 2C9B; # COPTIC CAPITAL LETTER NI +2C9C; C; 2C9D; # COPTIC CAPITAL LETTER KSI +2C9E; C; 2C9F; # COPTIC CAPITAL LETTER O +2CA0; C; 2CA1; # COPTIC CAPITAL LETTER PI +2CA2; C; 2CA3; # COPTIC CAPITAL LETTER RO +2CA4; C; 2CA5; # COPTIC CAPITAL LETTER SIMA +2CA6; C; 2CA7; # COPTIC CAPITAL LETTER TAU +2CA8; C; 2CA9; # COPTIC CAPITAL LETTER UA +2CAA; C; 2CAB; # COPTIC CAPITAL LETTER FI +2CAC; C; 2CAD; # COPTIC CAPITAL LETTER KHI +2CAE; C; 2CAF; # COPTIC CAPITAL LETTER PSI +2CB0; C; 2CB1; # COPTIC CAPITAL LETTER OOU +2CB2; C; 2CB3; # COPTIC CAPITAL LETTER DIALECT-P ALEF +2CB4; C; 2CB5; # COPTIC CAPITAL LETTER OLD COPTIC AIN +2CB6; C; 2CB7; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE +2CB8; C; 2CB9; # COPTIC CAPITAL LETTER DIALECT-P KAPA +2CBA; C; 2CBB; # COPTIC CAPITAL LETTER DIALECT-P NI +2CBC; C; 2CBD; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI +2CBE; C; 2CBF; # COPTIC CAPITAL LETTER OLD COPTIC OOU +2CC0; C; 2CC1; # COPTIC CAPITAL LETTER SAMPI +2CC2; C; 2CC3; # COPTIC CAPITAL LETTER CROSSED SHEI +2CC4; C; 2CC5; # COPTIC CAPITAL LETTER OLD COPTIC SHEI +2CC6; C; 2CC7; # COPTIC CAPITAL LETTER OLD COPTIC ESH +2CC8; C; 2CC9; # COPTIC CAPITAL LETTER AKHMIMIC KHEI +2CCA; C; 2CCB; # COPTIC CAPITAL LETTER DIALECT-P HORI +2CCC; C; 2CCD; # COPTIC CAPITAL LETTER OLD COPTIC HORI +2CCE; C; 2CCF; # COPTIC CAPITAL LETTER OLD COPTIC HA +2CD0; C; 2CD1; # COPTIC CAPITAL LETTER L-SHAPED HA +2CD2; C; 2CD3; # COPTIC CAPITAL LETTER OLD COPTIC HEI +2CD4; C; 2CD5; # COPTIC CAPITAL LETTER OLD COPTIC HAT +2CD6; C; 2CD7; # COPTIC CAPITAL LETTER OLD COPTIC GANGIA +2CD8; C; 2CD9; # COPTIC CAPITAL LETTER OLD COPTIC DJA +2CDA; C; 2CDB; # COPTIC CAPITAL LETTER OLD COPTIC SHIMA +2CDC; C; 2CDD; # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA +2CDE; C; 2CDF; # COPTIC CAPITAL LETTER OLD NUBIAN NGI +2CE0; C; 2CE1; # COPTIC CAPITAL LETTER OLD NUBIAN NYI +2CE2; C; 2CE3; # COPTIC CAPITAL LETTER OLD NUBIAN WAU +A640; C; A641; # CYRILLIC CAPITAL LETTER ZEMLYA +A642; C; A643; # CYRILLIC CAPITAL LETTER DZELO +A644; C; A645; # CYRILLIC CAPITAL LETTER REVERSED DZE +A646; C; A647; # CYRILLIC CAPITAL LETTER IOTA +A648; C; A649; # CYRILLIC CAPITAL LETTER DJERV +A64A; C; A64B; # CYRILLIC CAPITAL LETTER MONOGRAPH UK +A64C; C; A64D; # CYRILLIC CAPITAL LETTER BROAD OMEGA +A64E; C; A64F; # CYRILLIC CAPITAL LETTER NEUTRAL YER +A650; C; A651; # CYRILLIC CAPITAL LETTER YERU WITH BACK YER +A652; C; A653; # CYRILLIC CAPITAL LETTER IOTIFIED YAT +A654; C; A655; # CYRILLIC CAPITAL LETTER REVERSED YU +A656; C; A657; # CYRILLIC CAPITAL LETTER IOTIFIED A +A658; C; A659; # CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS +A65A; C; A65B; # CYRILLIC CAPITAL LETTER BLENDED YUS +A65C; C; A65D; # CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS +A65E; C; A65F; # CYRILLIC CAPITAL LETTER YN +A662; C; A663; # CYRILLIC CAPITAL LETTER SOFT DE +A664; C; A665; # CYRILLIC CAPITAL LETTER SOFT EL +A666; C; A667; # CYRILLIC CAPITAL LETTER SOFT EM +A668; C; A669; # CYRILLIC CAPITAL LETTER MONOCULAR O +A66A; C; A66B; # CYRILLIC CAPITAL LETTER BINOCULAR O +A66C; C; A66D; # CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O +A680; C; A681; # CYRILLIC CAPITAL LETTER DWE +A682; C; A683; # CYRILLIC CAPITAL LETTER DZWE +A684; C; A685; # CYRILLIC CAPITAL LETTER ZHWE +A686; C; A687; # CYRILLIC CAPITAL LETTER CCHE +A688; C; A689; # CYRILLIC CAPITAL LETTER DZZE +A68A; C; A68B; # CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK +A68C; C; A68D; # CYRILLIC CAPITAL LETTER TWE +A68E; C; A68F; # CYRILLIC CAPITAL LETTER TSWE +A690; C; A691; # CYRILLIC CAPITAL LETTER TSSE +A692; C; A693; # CYRILLIC CAPITAL LETTER TCHE +A694; C; A695; # CYRILLIC CAPITAL LETTER HWE +A696; C; A697; # CYRILLIC CAPITAL LETTER SHWE +A722; C; A723; # LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF +A724; C; A725; # LATIN CAPITAL LETTER EGYPTOLOGICAL AIN +A726; C; A727; # LATIN CAPITAL LETTER HENG +A728; C; A729; # LATIN CAPITAL LETTER TZ +A72A; C; A72B; # LATIN CAPITAL LETTER TRESILLO +A72C; C; A72D; # LATIN CAPITAL LETTER CUATRILLO +A72E; C; A72F; # LATIN CAPITAL LETTER CUATRILLO WITH COMMA +A732; C; A733; # LATIN CAPITAL LETTER AA +A734; C; A735; # LATIN CAPITAL LETTER AO +A736; C; A737; # LATIN CAPITAL LETTER AU +A738; C; A739; # LATIN CAPITAL LETTER AV +A73A; C; A73B; # LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR +A73C; C; A73D; # LATIN CAPITAL LETTER AY +A73E; C; A73F; # LATIN CAPITAL LETTER REVERSED C WITH DOT +A740; C; A741; # LATIN CAPITAL LETTER K WITH STROKE +A742; C; A743; # LATIN CAPITAL LETTER K WITH DIAGONAL STROKE +A744; C; A745; # LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE +A746; C; A747; # LATIN CAPITAL LETTER BROKEN L +A748; C; A749; # LATIN CAPITAL LETTER L WITH HIGH STROKE +A74A; C; A74B; # LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY +A74C; C; A74D; # LATIN CAPITAL LETTER O WITH LOOP +A74E; C; A74F; # LATIN CAPITAL LETTER OO +A750; C; A751; # LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER +A752; C; A753; # LATIN CAPITAL LETTER P WITH FLOURISH +A754; C; A755; # LATIN CAPITAL LETTER P WITH SQUIRREL TAIL +A756; C; A757; # LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER +A758; C; A759; # LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE +A75A; C; A75B; # LATIN CAPITAL LETTER R ROTUNDA +A75C; C; A75D; # LATIN CAPITAL LETTER RUM ROTUNDA +A75E; C; A75F; # LATIN CAPITAL LETTER V WITH DIAGONAL STROKE +A760; C; A761; # LATIN CAPITAL LETTER VY +A762; C; A763; # LATIN CAPITAL LETTER VISIGOTHIC Z +A764; C; A765; # LATIN CAPITAL LETTER THORN WITH STROKE +A766; C; A767; # LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER +A768; C; A769; # LATIN CAPITAL LETTER VEND +A76A; C; A76B; # LATIN CAPITAL LETTER ET +A76C; C; A76D; # LATIN CAPITAL LETTER IS +A76E; C; A76F; # LATIN CAPITAL LETTER CON +A779; C; A77A; # LATIN CAPITAL LETTER INSULAR D +A77B; C; A77C; # LATIN CAPITAL LETTER INSULAR F +A77D; C; 1D79; # LATIN CAPITAL LETTER INSULAR G +A77E; C; A77F; # LATIN CAPITAL LETTER TURNED INSULAR G +A780; C; A781; # LATIN CAPITAL LETTER TURNED L +A782; C; A783; # LATIN CAPITAL LETTER INSULAR R +A784; C; A785; # LATIN CAPITAL LETTER INSULAR S +A786; C; A787; # LATIN CAPITAL LETTER INSULAR T +A78B; C; A78C; # LATIN CAPITAL LETTER SALTILLO +FB00; F; 0066 0066; # LATIN SMALL LIGATURE FF +FB01; F; 0066 0069; # LATIN SMALL LIGATURE FI +FB02; F; 0066 006C; # LATIN SMALL LIGATURE FL +FB03; F; 0066 0066 0069; # LATIN SMALL LIGATURE FFI +FB04; F; 0066 0066 006C; # LATIN SMALL LIGATURE FFL +FB05; F; 0073 0074; # LATIN SMALL LIGATURE LONG S T +FB06; F; 0073 0074; # LATIN SMALL LIGATURE ST +FB13; F; 0574 0576; # ARMENIAN SMALL LIGATURE MEN NOW +FB14; F; 0574 0565; # ARMENIAN SMALL LIGATURE MEN ECH +FB15; F; 0574 056B; # ARMENIAN SMALL LIGATURE MEN INI +FB16; F; 057E 0576; # ARMENIAN SMALL LIGATURE VEW NOW +FB17; F; 0574 056D; # ARMENIAN SMALL LIGATURE MEN XEH +FF21; C; FF41; # FULLWIDTH LATIN CAPITAL LETTER A +FF22; C; FF42; # FULLWIDTH LATIN CAPITAL LETTER B +FF23; C; FF43; # FULLWIDTH LATIN CAPITAL LETTER C +FF24; C; FF44; # FULLWIDTH LATIN CAPITAL LETTER D +FF25; C; FF45; # FULLWIDTH LATIN CAPITAL LETTER E +FF26; C; FF46; # FULLWIDTH LATIN CAPITAL LETTER F +FF27; C; FF47; # FULLWIDTH LATIN CAPITAL LETTER G +FF28; C; FF48; # FULLWIDTH LATIN CAPITAL LETTER H +FF29; C; FF49; # FULLWIDTH LATIN CAPITAL LETTER I +FF2A; C; FF4A; # FULLWIDTH LATIN CAPITAL LETTER J +FF2B; C; FF4B; # FULLWIDTH LATIN CAPITAL LETTER K +FF2C; C; FF4C; # FULLWIDTH LATIN CAPITAL LETTER L +FF2D; C; FF4D; # FULLWIDTH LATIN CAPITAL LETTER M +FF2E; C; FF4E; # FULLWIDTH LATIN CAPITAL LETTER N +FF2F; C; FF4F; # FULLWIDTH LATIN CAPITAL LETTER O +FF30; C; FF50; # FULLWIDTH LATIN CAPITAL LETTER P +FF31; C; FF51; # FULLWIDTH LATIN CAPITAL LETTER Q +FF32; C; FF52; # FULLWIDTH LATIN CAPITAL LETTER R +FF33; C; FF53; # FULLWIDTH LATIN CAPITAL LETTER S +FF34; C; FF54; # FULLWIDTH LATIN CAPITAL LETTER T +FF35; C; FF55; # FULLWIDTH LATIN CAPITAL LETTER U +FF36; C; FF56; # FULLWIDTH LATIN CAPITAL LETTER V +FF37; C; FF57; # FULLWIDTH LATIN CAPITAL LETTER W +FF38; C; FF58; # FULLWIDTH LATIN CAPITAL LETTER X +FF39; C; FF59; # FULLWIDTH LATIN CAPITAL LETTER Y +FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z +10400; C; 10428; # DESERET CAPITAL LETTER LONG I +10401; C; 10429; # DESERET CAPITAL LETTER LONG E +10402; C; 1042A; # DESERET CAPITAL LETTER LONG A +10403; C; 1042B; # DESERET CAPITAL LETTER LONG AH +10404; C; 1042C; # DESERET CAPITAL LETTER LONG O +10405; C; 1042D; # DESERET CAPITAL LETTER LONG OO +10406; C; 1042E; # DESERET CAPITAL LETTER SHORT I +10407; C; 1042F; # DESERET CAPITAL LETTER SHORT E +10408; C; 10430; # DESERET CAPITAL LETTER SHORT A +10409; C; 10431; # DESERET CAPITAL LETTER SHORT AH +1040A; C; 10432; # DESERET CAPITAL LETTER SHORT O +1040B; C; 10433; # DESERET CAPITAL LETTER SHORT OO +1040C; C; 10434; # DESERET CAPITAL LETTER AY +1040D; C; 10435; # DESERET CAPITAL LETTER OW +1040E; C; 10436; # DESERET CAPITAL LETTER WU +1040F; C; 10437; # DESERET CAPITAL LETTER YEE +10410; C; 10438; # DESERET CAPITAL LETTER H +10411; C; 10439; # DESERET CAPITAL LETTER PEE +10412; C; 1043A; # DESERET CAPITAL LETTER BEE +10413; C; 1043B; # DESERET CAPITAL LETTER TEE +10414; C; 1043C; # DESERET CAPITAL LETTER DEE +10415; C; 1043D; # DESERET CAPITAL LETTER CHEE +10416; C; 1043E; # DESERET CAPITAL LETTER JEE +10417; C; 1043F; # DESERET CAPITAL LETTER KAY +10418; C; 10440; # DESERET CAPITAL LETTER GAY +10419; C; 10441; # DESERET CAPITAL LETTER EF +1041A; C; 10442; # DESERET CAPITAL LETTER VEE +1041B; C; 10443; # DESERET CAPITAL LETTER ETH +1041C; C; 10444; # DESERET CAPITAL LETTER THEE +1041D; C; 10445; # DESERET CAPITAL LETTER ES +1041E; C; 10446; # DESERET CAPITAL LETTER ZEE +1041F; C; 10447; # DESERET CAPITAL LETTER ESH +10420; C; 10448; # DESERET CAPITAL LETTER ZHEE +10421; C; 10449; # DESERET CAPITAL LETTER ER +10422; C; 1044A; # DESERET CAPITAL LETTER EL +10423; C; 1044B; # DESERET CAPITAL LETTER EM +10424; C; 1044C; # DESERET CAPITAL LETTER EN +10425; C; 1044D; # DESERET CAPITAL LETTER ENG +10426; C; 1044E; # DESERET CAPITAL LETTER OI +10427; C; 1044F; # DESERET CAPITAL LETTER EW diff --git a/i18n/CompositionExclusions.txt b/i18n/CompositionExclusions.txt new file mode 100644 index 000000000..d4428fca6 --- /dev/null +++ b/i18n/CompositionExclusions.txt @@ -0,0 +1,197 @@ +# CompositionExclusions-5.1.0.txt +# Date: 2008-03-20, 17:45:00 PDT [KW] +# +# This file lists the characters for the Composition Exclusion Table +# defined in UAX #15, Unicode Normalization Forms. +# +# This file is a normative contributory data file in the +# Unicode Character Database. +# +# Copyright (c) 1991-2008 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# +# For more information, see +# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table +# +# For a full derivation of composition exclusions, see the derived property +# Full_Composition_Exclusion in DerivedNormalizationProps.txt +# + +# ================================================ +# (1) Script Specifics +# +# This list of characters cannot be derived from the UnicodeData.txt 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 + +# Total code points: 67 + +# ================================================ +# (2) Post Composition Version precomposed characters +# +# These characters cannot be derived solely from the UnicodeData.txt file +# in this version of Unicode. +# +# Note that characters added to the standard after the +# Composition Version and which have canonical decomposition mappings +# are not automatically added to this list of Post Composition +# Version precomposed characters. +# ================================================ + +2ADC # FORKING +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 + +# Total code points: 14 + +# ================================================ +# (3) Singleton Decompositions +# +# These characters can be derived from the UnicodeData.txt file +# by including all characters whose canonical decomposition +# consists of a single character. +# +# These characters are simply quoted here for reference. +# See also Full_Composition_Exclusion in DerivedNormalizationProps.txt +# ================================================ + +# 0340..0341 [2] COMBINING GRAVE TONE MARK..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..1FEF [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA +# 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA +# 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA +# 1FFD GREEK OXIA +# 2000..2001 [2] EN QUAD..EM QUAD +# 2126 OHM SIGN +# 212A..212B [2] KELVIN SIGN..ANGSTROM SIGN +# 2329 LEFT-POINTING ANGLE BRACKET +# 232A RIGHT-POINTING ANGLE BRACKET +# F900..FA0D [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D +# FA10 CJK COMPATIBILITY IDEOGRAPH-FA10 +# FA12 CJK COMPATIBILITY IDEOGRAPH-FA12 +# FA15..FA1E [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E +# FA20 CJK COMPATIBILITY IDEOGRAPH-FA20 +# FA22 CJK COMPATIBILITY IDEOGRAPH-FA22 +# FA25..FA26 [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26 +# FA2A..FA2D [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D +# FA30..FA6A [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A +# FA70..FAD9 [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 +# 2F800..2FA1D [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D + +# Total code points: 1030 + +# ================================================ +# (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. +# See also Full_Composition_Exclusion in DerivedNormalizationProps.txt +# ================================================ + +# 0344 COMBINING GREEK DIALYTIKA TONOS +# 0F73 TIBETAN VOWEL SIGN II +# 0F75 TIBETAN VOWEL SIGN UU +# 0F81 TIBETAN VOWEL SIGN REVERSED II + +# Total code points: 4 + diff --git a/i18n/DerivedNormalizationProps.txt b/i18n/DerivedNormalizationProps.txt new file mode 100644 index 000000000..b2c9b8ddf --- /dev/null +++ b/i18n/DerivedNormalizationProps.txt @@ -0,0 +1,2657 @@ +# DerivedNormalizationProps-5.1.0.txt +# Date: 2008-03-03, 21:57:40 GMT [MD] +# +# Unicode Character Database +# Copyright (c) 1991-2008 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# For documentation, see UCD.html + +# ================================================ + +# Derived Property: FC_NFKC_Closure +# Generated from computing: b = NFKC(Fold(a)); c = NFKC(Fold(b)); +# Then if (c != b) add the mapping from a to c to the set of +# mappings that constitute the FC_NFKC_Closure list +# Uses the full case folding from CaseFolding.txt, without the T option. + +037A ; FC_NFKC; 0020 03B9 # Lm GREEK YPOGEGRAMMENI +03D2 ; FC_NFKC; 03C5 # L& GREEK UPSILON WITH HOOK SYMBOL +03D3 ; FC_NFKC; 03CD # L& GREEK UPSILON WITH ACUTE AND HOOK SYMBOL +03D4 ; FC_NFKC; 03CB # L& GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL +03F2 ; FC_NFKC; 03C3 # L& GREEK LUNATE SIGMA SYMBOL +03F9 ; FC_NFKC; 03C3 # L& GREEK CAPITAL LUNATE SIGMA SYMBOL +1D2C ; FC_NFKC; 0061 # Lm MODIFIER LETTER CAPITAL A +1D2D ; FC_NFKC; 00E6 # Lm MODIFIER LETTER CAPITAL AE +1D2E ; FC_NFKC; 0062 # Lm MODIFIER LETTER CAPITAL B +1D30 ; FC_NFKC; 0064 # Lm MODIFIER LETTER CAPITAL D +1D31 ; FC_NFKC; 0065 # Lm MODIFIER LETTER CAPITAL E +1D32 ; FC_NFKC; 01DD # Lm MODIFIER LETTER CAPITAL REVERSED E +1D33 ; FC_NFKC; 0067 # Lm MODIFIER LETTER CAPITAL G +1D34 ; FC_NFKC; 0068 # Lm MODIFIER LETTER CAPITAL H +1D35 ; FC_NFKC; 0069 # Lm MODIFIER LETTER CAPITAL I +1D36 ; FC_NFKC; 006A # Lm MODIFIER LETTER CAPITAL J +1D37 ; FC_NFKC; 006B # Lm MODIFIER LETTER CAPITAL K +1D38 ; FC_NFKC; 006C # Lm MODIFIER LETTER CAPITAL L +1D39 ; FC_NFKC; 006D # Lm MODIFIER LETTER CAPITAL M +1D3A ; FC_NFKC; 006E # Lm MODIFIER LETTER CAPITAL N +1D3C ; FC_NFKC; 006F # Lm MODIFIER LETTER CAPITAL O +1D3D ; FC_NFKC; 0223 # Lm MODIFIER LETTER CAPITAL OU +1D3E ; FC_NFKC; 0070 # Lm MODIFIER LETTER CAPITAL P +1D3F ; FC_NFKC; 0072 # Lm MODIFIER LETTER CAPITAL R +1D40 ; FC_NFKC; 0074 # Lm MODIFIER LETTER CAPITAL T +1D41 ; FC_NFKC; 0075 # Lm MODIFIER LETTER CAPITAL U +1D42 ; FC_NFKC; 0077 # Lm MODIFIER LETTER CAPITAL W +20A8 ; FC_NFKC; 0072 0073 # Sc RUPEE SIGN +2102 ; FC_NFKC; 0063 # L& DOUBLE-STRUCK CAPITAL C +2103 ; FC_NFKC; 00B0 0063 # So DEGREE CELSIUS +2107 ; FC_NFKC; 025B # L& EULER CONSTANT +2109 ; FC_NFKC; 00B0 0066 # So DEGREE FAHRENHEIT +210B ; FC_NFKC; 0068 # L& SCRIPT CAPITAL H +210C ; FC_NFKC; 0068 # L& BLACK-LETTER CAPITAL H +210D ; FC_NFKC; 0068 # L& DOUBLE-STRUCK CAPITAL H +2110 ; FC_NFKC; 0069 # L& SCRIPT CAPITAL I +2111 ; FC_NFKC; 0069 # L& BLACK-LETTER CAPITAL I +2112 ; FC_NFKC; 006C # L& SCRIPT CAPITAL L +2115 ; FC_NFKC; 006E # L& DOUBLE-STRUCK CAPITAL N +2116 ; FC_NFKC; 006E 006F # So NUMERO SIGN +2119 ; FC_NFKC; 0070 # L& DOUBLE-STRUCK CAPITAL P +211A ; FC_NFKC; 0071 # L& DOUBLE-STRUCK CAPITAL Q +211B ; FC_NFKC; 0072 # L& SCRIPT CAPITAL R +211C ; FC_NFKC; 0072 # L& BLACK-LETTER CAPITAL R +211D ; FC_NFKC; 0072 # L& DOUBLE-STRUCK CAPITAL R +2120 ; FC_NFKC; 0073 006D # So SERVICE MARK +2121 ; FC_NFKC; 0074 0065 006C # So TELEPHONE SIGN +2122 ; FC_NFKC; 0074 006D # So TRADE MARK SIGN +2124 ; FC_NFKC; 007A # L& DOUBLE-STRUCK CAPITAL Z +2128 ; FC_NFKC; 007A # L& BLACK-LETTER CAPITAL Z +212C ; FC_NFKC; 0062 # L& SCRIPT CAPITAL B +212D ; FC_NFKC; 0063 # L& BLACK-LETTER CAPITAL C +2130 ; FC_NFKC; 0065 # L& SCRIPT CAPITAL E +2131 ; FC_NFKC; 0066 # L& SCRIPT CAPITAL F +2133 ; FC_NFKC; 006D # L& SCRIPT CAPITAL M +213B ; FC_NFKC; 0066 0061 0078 # So FACSIMILE SIGN +213E ; FC_NFKC; 03B3 # L& DOUBLE-STRUCK CAPITAL GAMMA +213F ; FC_NFKC; 03C0 # L& DOUBLE-STRUCK CAPITAL PI +2145 ; FC_NFKC; 0064 # L& DOUBLE-STRUCK ITALIC CAPITAL D +2C7D ; FC_NFKC; 0076 # Lm MODIFIER LETTER CAPITAL V +3250 ; FC_NFKC; 0070 0074 0065 # So PARTNERSHIP SIGN +32CC ; FC_NFKC; 0068 0067 # So SQUARE HG +32CE ; FC_NFKC; 0065 0076 # So SQUARE EV +32CF ; FC_NFKC; 006C 0074 0064 # So LIMITED LIABILITY SIGN +3371 ; FC_NFKC; 0068 0070 0061 # So SQUARE HPA +3373 ; FC_NFKC; 0061 0075 # So SQUARE AU +3375 ; FC_NFKC; 006F 0076 # So SQUARE OV +337A ; FC_NFKC; 0069 0075 # So SQUARE IU +3380 ; FC_NFKC; 0070 0061 # So SQUARE PA AMPS +3381 ; FC_NFKC; 006E 0061 # So SQUARE NA +3382 ; FC_NFKC; 03BC 0061 # So SQUARE MU A +3383 ; FC_NFKC; 006D 0061 # So SQUARE MA +3384 ; FC_NFKC; 006B 0061 # So SQUARE KA +3385 ; FC_NFKC; 006B 0062 # So SQUARE KB +3386 ; FC_NFKC; 006D 0062 # So SQUARE MB +3387 ; FC_NFKC; 0067 0062 # So SQUARE GB +338A ; FC_NFKC; 0070 0066 # So SQUARE PF +338B ; FC_NFKC; 006E 0066 # So SQUARE NF +338C ; FC_NFKC; 03BC 0066 # So SQUARE MU F +3390 ; FC_NFKC; 0068 007A # So SQUARE HZ +3391 ; FC_NFKC; 006B 0068 007A # So SQUARE KHZ +3392 ; FC_NFKC; 006D 0068 007A # So SQUARE MHZ +3393 ; FC_NFKC; 0067 0068 007A # So SQUARE GHZ +3394 ; FC_NFKC; 0074 0068 007A # So SQUARE THZ +33A9 ; FC_NFKC; 0070 0061 # So SQUARE PA +33AA ; FC_NFKC; 006B 0070 0061 # So SQUARE KPA +33AB ; FC_NFKC; 006D 0070 0061 # So SQUARE MPA +33AC ; FC_NFKC; 0067 0070 0061 # So SQUARE GPA +33B4 ; FC_NFKC; 0070 0076 # So SQUARE PV +33B5 ; FC_NFKC; 006E 0076 # So SQUARE NV +33B6 ; FC_NFKC; 03BC 0076 # So SQUARE MU V +33B7 ; FC_NFKC; 006D 0076 # So SQUARE MV +33B8 ; FC_NFKC; 006B 0076 # So SQUARE KV +33B9 ; FC_NFKC; 006D 0076 # So SQUARE MV MEGA +33BA ; FC_NFKC; 0070 0077 # So SQUARE PW +33BB ; FC_NFKC; 006E 0077 # So SQUARE NW +33BC ; FC_NFKC; 03BC 0077 # So SQUARE MU W +33BD ; FC_NFKC; 006D 0077 # So SQUARE MW +33BE ; FC_NFKC; 006B 0077 # So SQUARE KW +33BF ; FC_NFKC; 006D 0077 # So SQUARE MW MEGA +33C0 ; FC_NFKC; 006B 03C9 # So SQUARE K OHM +33C1 ; FC_NFKC; 006D 03C9 # So SQUARE M OHM +33C3 ; FC_NFKC; 0062 0071 # So SQUARE BQ +33C6 ; FC_NFKC; 0063 2215 006B 0067 #So SQUARE C OVER KG +33C7 ; FC_NFKC; 0063 006F 002E # So SQUARE CO +33C8 ; FC_NFKC; 0064 0062 # So SQUARE DB +33C9 ; FC_NFKC; 0067 0079 # So SQUARE GY +33CB ; FC_NFKC; 0068 0070 # So SQUARE HP +33CD ; FC_NFKC; 006B 006B # So SQUARE KK +33CE ; FC_NFKC; 006B 006D # So SQUARE KM CAPITAL +33D7 ; FC_NFKC; 0070 0068 # So SQUARE PH +33D9 ; FC_NFKC; 0070 0070 006D # So SQUARE PPM +33DA ; FC_NFKC; 0070 0072 # So SQUARE PR +33DC ; FC_NFKC; 0073 0076 # So SQUARE SV +33DD ; FC_NFKC; 0077 0062 # So SQUARE WB +33DE ; FC_NFKC; 0076 2215 006D # So SQUARE V OVER M +33DF ; FC_NFKC; 0061 2215 006D # So SQUARE A OVER M +1D400 ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD CAPITAL A +1D401 ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD CAPITAL B +1D402 ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD CAPITAL C +1D403 ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD CAPITAL D +1D404 ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD CAPITAL E +1D405 ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD CAPITAL F +1D406 ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD CAPITAL G +1D407 ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD CAPITAL H +1D408 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD CAPITAL I +1D409 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD CAPITAL J +1D40A ; FC_NFKC; 006B # L& MATHEMATICAL BOLD CAPITAL K +1D40B ; FC_NFKC; 006C # L& MATHEMATICAL BOLD CAPITAL L +1D40C ; FC_NFKC; 006D # L& MATHEMATICAL BOLD CAPITAL M +1D40D ; FC_NFKC; 006E # L& MATHEMATICAL BOLD CAPITAL N +1D40E ; FC_NFKC; 006F # L& MATHEMATICAL BOLD CAPITAL O +1D40F ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD CAPITAL P +1D410 ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD CAPITAL Q +1D411 ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD CAPITAL R +1D412 ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD CAPITAL S +1D413 ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD CAPITAL T +1D414 ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD CAPITAL U +1D415 ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD CAPITAL V +1D416 ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD CAPITAL W +1D417 ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD CAPITAL X +1D418 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD CAPITAL Y +1D419 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD CAPITAL Z +1D434 ; FC_NFKC; 0061 # L& MATHEMATICAL ITALIC CAPITAL A +1D435 ; FC_NFKC; 0062 # L& MATHEMATICAL ITALIC CAPITAL B +1D436 ; FC_NFKC; 0063 # L& MATHEMATICAL ITALIC CAPITAL C +1D437 ; FC_NFKC; 0064 # L& MATHEMATICAL ITALIC CAPITAL D +1D438 ; FC_NFKC; 0065 # L& MATHEMATICAL ITALIC CAPITAL E +1D439 ; FC_NFKC; 0066 # L& MATHEMATICAL ITALIC CAPITAL F +1D43A ; FC_NFKC; 0067 # L& MATHEMATICAL ITALIC CAPITAL G +1D43B ; FC_NFKC; 0068 # L& MATHEMATICAL ITALIC CAPITAL H +1D43C ; FC_NFKC; 0069 # L& MATHEMATICAL ITALIC CAPITAL I +1D43D ; FC_NFKC; 006A # L& MATHEMATICAL ITALIC CAPITAL J +1D43E ; FC_NFKC; 006B # L& MATHEMATICAL ITALIC CAPITAL K +1D43F ; FC_NFKC; 006C # L& MATHEMATICAL ITALIC CAPITAL L +1D440 ; FC_NFKC; 006D # L& MATHEMATICAL ITALIC CAPITAL M +1D441 ; FC_NFKC; 006E # L& MATHEMATICAL ITALIC CAPITAL N +1D442 ; FC_NFKC; 006F # L& MATHEMATICAL ITALIC CAPITAL O +1D443 ; FC_NFKC; 0070 # L& MATHEMATICAL ITALIC CAPITAL P +1D444 ; FC_NFKC; 0071 # L& MATHEMATICAL ITALIC CAPITAL Q +1D445 ; FC_NFKC; 0072 # L& MATHEMATICAL ITALIC CAPITAL R +1D446 ; FC_NFKC; 0073 # L& MATHEMATICAL ITALIC CAPITAL S +1D447 ; FC_NFKC; 0074 # L& MATHEMATICAL ITALIC CAPITAL T +1D448 ; FC_NFKC; 0075 # L& MATHEMATICAL ITALIC CAPITAL U +1D449 ; FC_NFKC; 0076 # L& MATHEMATICAL ITALIC CAPITAL V +1D44A ; FC_NFKC; 0077 # L& MATHEMATICAL ITALIC CAPITAL W +1D44B ; FC_NFKC; 0078 # L& MATHEMATICAL ITALIC CAPITAL X +1D44C ; FC_NFKC; 0079 # L& MATHEMATICAL ITALIC CAPITAL Y +1D44D ; FC_NFKC; 007A # L& MATHEMATICAL ITALIC CAPITAL Z +1D468 ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD ITALIC CAPITAL A +1D469 ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD ITALIC CAPITAL B +1D46A ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD ITALIC CAPITAL C +1D46B ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD ITALIC CAPITAL D +1D46C ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD ITALIC CAPITAL E +1D46D ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD ITALIC CAPITAL F +1D46E ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD ITALIC CAPITAL G +1D46F ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD ITALIC CAPITAL H +1D470 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD ITALIC CAPITAL I +1D471 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD ITALIC CAPITAL J +1D472 ; FC_NFKC; 006B # L& MATHEMATICAL BOLD ITALIC CAPITAL K +1D473 ; FC_NFKC; 006C # L& MATHEMATICAL BOLD ITALIC CAPITAL L +1D474 ; FC_NFKC; 006D # L& MATHEMATICAL BOLD ITALIC CAPITAL M +1D475 ; FC_NFKC; 006E # L& MATHEMATICAL BOLD ITALIC CAPITAL N +1D476 ; FC_NFKC; 006F # L& MATHEMATICAL BOLD ITALIC CAPITAL O +1D477 ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD ITALIC CAPITAL P +1D478 ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD ITALIC CAPITAL Q +1D479 ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD ITALIC CAPITAL R +1D47A ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD ITALIC CAPITAL S +1D47B ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD ITALIC CAPITAL T +1D47C ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD ITALIC CAPITAL U +1D47D ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD ITALIC CAPITAL V +1D47E ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD ITALIC CAPITAL W +1D47F ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD ITALIC CAPITAL X +1D480 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD ITALIC CAPITAL Y +1D481 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD ITALIC CAPITAL Z +1D49C ; FC_NFKC; 0061 # L& MATHEMATICAL SCRIPT CAPITAL A +1D49E ; FC_NFKC; 0063 # L& MATHEMATICAL SCRIPT CAPITAL C +1D49F ; FC_NFKC; 0064 # L& MATHEMATICAL SCRIPT CAPITAL D +1D4A2 ; FC_NFKC; 0067 # L& MATHEMATICAL SCRIPT CAPITAL G +1D4A5 ; FC_NFKC; 006A # L& MATHEMATICAL SCRIPT CAPITAL J +1D4A6 ; FC_NFKC; 006B # L& MATHEMATICAL SCRIPT CAPITAL K +1D4A9 ; FC_NFKC; 006E # L& MATHEMATICAL SCRIPT CAPITAL N +1D4AA ; FC_NFKC; 006F # L& MATHEMATICAL SCRIPT CAPITAL O +1D4AB ; FC_NFKC; 0070 # L& MATHEMATICAL SCRIPT CAPITAL P +1D4AC ; FC_NFKC; 0071 # L& MATHEMATICAL SCRIPT CAPITAL Q +1D4AE ; FC_NFKC; 0073 # L& MATHEMATICAL SCRIPT CAPITAL S +1D4AF ; FC_NFKC; 0074 # L& MATHEMATICAL SCRIPT CAPITAL T +1D4B0 ; FC_NFKC; 0075 # L& MATHEMATICAL SCRIPT CAPITAL U +1D4B1 ; FC_NFKC; 0076 # L& MATHEMATICAL SCRIPT CAPITAL V +1D4B2 ; FC_NFKC; 0077 # L& MATHEMATICAL SCRIPT CAPITAL W +1D4B3 ; FC_NFKC; 0078 # L& MATHEMATICAL SCRIPT CAPITAL X +1D4B4 ; FC_NFKC; 0079 # L& MATHEMATICAL SCRIPT CAPITAL Y +1D4B5 ; FC_NFKC; 007A # L& MATHEMATICAL SCRIPT CAPITAL Z +1D4D0 ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD SCRIPT CAPITAL A +1D4D1 ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD SCRIPT CAPITAL B +1D4D2 ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD SCRIPT CAPITAL C +1D4D3 ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD SCRIPT CAPITAL D +1D4D4 ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD SCRIPT CAPITAL E +1D4D5 ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD SCRIPT CAPITAL F +1D4D6 ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD SCRIPT CAPITAL G +1D4D7 ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD SCRIPT CAPITAL H +1D4D8 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD SCRIPT CAPITAL I +1D4D9 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD SCRIPT CAPITAL J +1D4DA ; FC_NFKC; 006B # L& MATHEMATICAL BOLD SCRIPT CAPITAL K +1D4DB ; FC_NFKC; 006C # L& MATHEMATICAL BOLD SCRIPT CAPITAL L +1D4DC ; FC_NFKC; 006D # L& MATHEMATICAL BOLD SCRIPT CAPITAL M +1D4DD ; FC_NFKC; 006E # L& MATHEMATICAL BOLD SCRIPT CAPITAL N +1D4DE ; FC_NFKC; 006F # L& MATHEMATICAL BOLD SCRIPT CAPITAL O +1D4DF ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD SCRIPT CAPITAL P +1D4E0 ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD SCRIPT CAPITAL Q +1D4E1 ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD SCRIPT CAPITAL R +1D4E2 ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD SCRIPT CAPITAL S +1D4E3 ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD SCRIPT CAPITAL T +1D4E4 ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD SCRIPT CAPITAL U +1D4E5 ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD SCRIPT CAPITAL V +1D4E6 ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD SCRIPT CAPITAL W +1D4E7 ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD SCRIPT CAPITAL X +1D4E8 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD SCRIPT CAPITAL Y +1D4E9 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD SCRIPT CAPITAL Z +1D504 ; FC_NFKC; 0061 # L& MATHEMATICAL FRAKTUR CAPITAL A +1D505 ; FC_NFKC; 0062 # L& MATHEMATICAL FRAKTUR CAPITAL B +1D507 ; FC_NFKC; 0064 # L& MATHEMATICAL FRAKTUR CAPITAL D +1D508 ; FC_NFKC; 0065 # L& MATHEMATICAL FRAKTUR CAPITAL E +1D509 ; FC_NFKC; 0066 # L& MATHEMATICAL FRAKTUR CAPITAL F +1D50A ; FC_NFKC; 0067 # L& MATHEMATICAL FRAKTUR CAPITAL G +1D50D ; FC_NFKC; 006A # L& MATHEMATICAL FRAKTUR CAPITAL J +1D50E ; FC_NFKC; 006B # L& MATHEMATICAL FRAKTUR CAPITAL K +1D50F ; FC_NFKC; 006C # L& MATHEMATICAL FRAKTUR CAPITAL L +1D510 ; FC_NFKC; 006D # L& MATHEMATICAL FRAKTUR CAPITAL M +1D511 ; FC_NFKC; 006E # L& MATHEMATICAL FRAKTUR CAPITAL N +1D512 ; FC_NFKC; 006F # L& MATHEMATICAL FRAKTUR CAPITAL O +1D513 ; FC_NFKC; 0070 # L& MATHEMATICAL FRAKTUR CAPITAL P +1D514 ; FC_NFKC; 0071 # L& MATHEMATICAL FRAKTUR CAPITAL Q +1D516 ; FC_NFKC; 0073 # L& MATHEMATICAL FRAKTUR CAPITAL S +1D517 ; FC_NFKC; 0074 # L& MATHEMATICAL FRAKTUR CAPITAL T +1D518 ; FC_NFKC; 0075 # L& MATHEMATICAL FRAKTUR CAPITAL U +1D519 ; FC_NFKC; 0076 # L& MATHEMATICAL FRAKTUR CAPITAL V +1D51A ; FC_NFKC; 0077 # L& MATHEMATICAL FRAKTUR CAPITAL W +1D51B ; FC_NFKC; 0078 # L& MATHEMATICAL FRAKTUR CAPITAL X +1D51C ; FC_NFKC; 0079 # L& MATHEMATICAL FRAKTUR CAPITAL Y +1D538 ; FC_NFKC; 0061 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL A +1D539 ; FC_NFKC; 0062 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL B +1D53B ; FC_NFKC; 0064 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL D +1D53C ; FC_NFKC; 0065 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL E +1D53D ; FC_NFKC; 0066 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL F +1D53E ; FC_NFKC; 0067 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL G +1D540 ; FC_NFKC; 0069 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL I +1D541 ; FC_NFKC; 006A # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL J +1D542 ; FC_NFKC; 006B # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL K +1D543 ; FC_NFKC; 006C # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL L +1D544 ; FC_NFKC; 006D # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL M +1D546 ; FC_NFKC; 006F # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O +1D54A ; FC_NFKC; 0073 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL S +1D54B ; FC_NFKC; 0074 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL T +1D54C ; FC_NFKC; 0075 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL U +1D54D ; FC_NFKC; 0076 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL V +1D54E ; FC_NFKC; 0077 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL W +1D54F ; FC_NFKC; 0078 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL X +1D550 ; FC_NFKC; 0079 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL Y +1D56C ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL A +1D56D ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL B +1D56E ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL C +1D56F ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL D +1D570 ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL E +1D571 ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL F +1D572 ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL G +1D573 ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL H +1D574 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL I +1D575 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD FRAKTUR CAPITAL J +1D576 ; FC_NFKC; 006B # L& MATHEMATICAL BOLD FRAKTUR CAPITAL K +1D577 ; FC_NFKC; 006C # L& MATHEMATICAL BOLD FRAKTUR CAPITAL L +1D578 ; FC_NFKC; 006D # L& MATHEMATICAL BOLD FRAKTUR CAPITAL M +1D579 ; FC_NFKC; 006E # L& MATHEMATICAL BOLD FRAKTUR CAPITAL N +1D57A ; FC_NFKC; 006F # L& MATHEMATICAL BOLD FRAKTUR CAPITAL O +1D57B ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL P +1D57C ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL Q +1D57D ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL R +1D57E ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL S +1D57F ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL T +1D580 ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL U +1D581 ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL V +1D582 ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL W +1D583 ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL X +1D584 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL Y +1D585 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD FRAKTUR CAPITAL Z +1D5A0 ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF CAPITAL A +1D5A1 ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF CAPITAL B +1D5A2 ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF CAPITAL C +1D5A3 ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF CAPITAL D +1D5A4 ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF CAPITAL E +1D5A5 ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF CAPITAL F +1D5A6 ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF CAPITAL G +1D5A7 ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF CAPITAL H +1D5A8 ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF CAPITAL I +1D5A9 ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF CAPITAL J +1D5AA ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF CAPITAL K +1D5AB ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF CAPITAL L +1D5AC ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF CAPITAL M +1D5AD ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF CAPITAL N +1D5AE ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF CAPITAL O +1D5AF ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF CAPITAL P +1D5B0 ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF CAPITAL Q +1D5B1 ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF CAPITAL R +1D5B2 ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF CAPITAL S +1D5B3 ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF CAPITAL T +1D5B4 ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF CAPITAL U +1D5B5 ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF CAPITAL V +1D5B6 ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF CAPITAL W +1D5B7 ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF CAPITAL X +1D5B8 ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF CAPITAL Y +1D5B9 ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF CAPITAL Z +1D5D4 ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL A +1D5D5 ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL B +1D5D6 ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL C +1D5D7 ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL D +1D5D8 ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL E +1D5D9 ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL F +1D5DA ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL G +1D5DB ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL H +1D5DC ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL I +1D5DD ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL J +1D5DE ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL K +1D5DF ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL L +1D5E0 ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL M +1D5E1 ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL N +1D5E2 ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL O +1D5E3 ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL P +1D5E4 ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL Q +1D5E5 ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL R +1D5E6 ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL S +1D5E7 ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL T +1D5E8 ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL U +1D5E9 ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL V +1D5EA ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL W +1D5EB ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL X +1D5EC ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL Y +1D5ED ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL Z +1D608 ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL A +1D609 ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL B +1D60A ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL C +1D60B ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL D +1D60C ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL E +1D60D ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL F +1D60E ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL G +1D60F ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL H +1D610 ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL I +1D611 ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL J +1D612 ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL K +1D613 ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL L +1D614 ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL M +1D615 ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL N +1D616 ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL O +1D617 ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL P +1D618 ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q +1D619 ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL R +1D61A ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL S +1D61B ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL T +1D61C ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL U +1D61D ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL V +1D61E ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL W +1D61F ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL X +1D620 ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y +1D621 ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z +1D63C ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A +1D63D ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B +1D63E ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C +1D63F ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D +1D640 ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E +1D641 ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F +1D642 ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G +1D643 ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H +1D644 ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I +1D645 ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J +1D646 ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K +1D647 ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L +1D648 ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M +1D649 ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N +1D64A ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O +1D64B ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P +1D64C ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q +1D64D ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R +1D64E ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S +1D64F ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T +1D650 ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U +1D651 ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V +1D652 ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W +1D653 ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X +1D654 ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y +1D655 ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z +1D670 ; FC_NFKC; 0061 # L& MATHEMATICAL MONOSPACE CAPITAL A +1D671 ; FC_NFKC; 0062 # L& MATHEMATICAL MONOSPACE CAPITAL B +1D672 ; FC_NFKC; 0063 # L& MATHEMATICAL MONOSPACE CAPITAL C +1D673 ; FC_NFKC; 0064 # L& MATHEMATICAL MONOSPACE CAPITAL D +1D674 ; FC_NFKC; 0065 # L& MATHEMATICAL MONOSPACE CAPITAL E +1D675 ; FC_NFKC; 0066 # L& MATHEMATICAL MONOSPACE CAPITAL F +1D676 ; FC_NFKC; 0067 # L& MATHEMATICAL MONOSPACE CAPITAL G +1D677 ; FC_NFKC; 0068 # L& MATHEMATICAL MONOSPACE CAPITAL H +1D678 ; FC_NFKC; 0069 # L& MATHEMATICAL MONOSPACE CAPITAL I +1D679 ; FC_NFKC; 006A # L& MATHEMATICAL MONOSPACE CAPITAL J +1D67A ; FC_NFKC; 006B # L& MATHEMATICAL MONOSPACE CAPITAL K +1D67B ; FC_NFKC; 006C # L& MATHEMATICAL MONOSPACE CAPITAL L +1D67C ; FC_NFKC; 006D # L& MATHEMATICAL MONOSPACE CAPITAL M +1D67D ; FC_NFKC; 006E # L& MATHEMATICAL MONOSPACE CAPITAL N +1D67E ; FC_NFKC; 006F # L& MATHEMATICAL MONOSPACE CAPITAL O +1D67F ; FC_NFKC; 0070 # L& MATHEMATICAL MONOSPACE CAPITAL P +1D680 ; FC_NFKC; 0071 # L& MATHEMATICAL MONOSPACE CAPITAL Q +1D681 ; FC_NFKC; 0072 # L& MATHEMATICAL MONOSPACE CAPITAL R +1D682 ; FC_NFKC; 0073 # L& MATHEMATICAL MONOSPACE CAPITAL S +1D683 ; FC_NFKC; 0074 # L& MATHEMATICAL MONOSPACE CAPITAL T +1D684 ; FC_NFKC; 0075 # L& MATHEMATICAL MONOSPACE CAPITAL U +1D685 ; FC_NFKC; 0076 # L& MATHEMATICAL MONOSPACE CAPITAL V +1D686 ; FC_NFKC; 0077 # L& MATHEMATICAL MONOSPACE CAPITAL W +1D687 ; FC_NFKC; 0078 # L& MATHEMATICAL MONOSPACE CAPITAL X +1D688 ; FC_NFKC; 0079 # L& MATHEMATICAL MONOSPACE CAPITAL Y +1D689 ; FC_NFKC; 007A # L& MATHEMATICAL MONOSPACE CAPITAL Z +1D6A8 ; FC_NFKC; 03B1 # L& MATHEMATICAL BOLD CAPITAL ALPHA +1D6A9 ; FC_NFKC; 03B2 # L& MATHEMATICAL BOLD CAPITAL BETA +1D6AA ; FC_NFKC; 03B3 # L& MATHEMATICAL BOLD CAPITAL GAMMA +1D6AB ; FC_NFKC; 03B4 # L& MATHEMATICAL BOLD CAPITAL DELTA +1D6AC ; FC_NFKC; 03B5 # L& MATHEMATICAL BOLD CAPITAL EPSILON +1D6AD ; FC_NFKC; 03B6 # L& MATHEMATICAL BOLD CAPITAL ZETA +1D6AE ; FC_NFKC; 03B7 # L& MATHEMATICAL BOLD CAPITAL ETA +1D6AF ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD CAPITAL THETA +1D6B0 ; FC_NFKC; 03B9 # L& MATHEMATICAL BOLD CAPITAL IOTA +1D6B1 ; FC_NFKC; 03BA # L& MATHEMATICAL BOLD CAPITAL KAPPA +1D6B2 ; FC_NFKC; 03BB # L& MATHEMATICAL BOLD CAPITAL LAMDA +1D6B3 ; FC_NFKC; 03BC # L& MATHEMATICAL BOLD CAPITAL MU +1D6B4 ; FC_NFKC; 03BD # L& MATHEMATICAL BOLD CAPITAL NU +1D6B5 ; FC_NFKC; 03BE # L& MATHEMATICAL BOLD CAPITAL XI +1D6B6 ; FC_NFKC; 03BF # L& MATHEMATICAL BOLD CAPITAL OMICRON +1D6B7 ; FC_NFKC; 03C0 # L& MATHEMATICAL BOLD CAPITAL PI +1D6B8 ; FC_NFKC; 03C1 # L& MATHEMATICAL BOLD CAPITAL RHO +1D6B9 ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD CAPITAL THETA SYMBOL +1D6BA ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD CAPITAL SIGMA +1D6BB ; FC_NFKC; 03C4 # L& MATHEMATICAL BOLD CAPITAL TAU +1D6BC ; FC_NFKC; 03C5 # L& MATHEMATICAL BOLD CAPITAL UPSILON +1D6BD ; FC_NFKC; 03C6 # L& MATHEMATICAL BOLD CAPITAL PHI +1D6BE ; FC_NFKC; 03C7 # L& MATHEMATICAL BOLD CAPITAL CHI +1D6BF ; FC_NFKC; 03C8 # L& MATHEMATICAL BOLD CAPITAL PSI +1D6C0 ; FC_NFKC; 03C9 # L& MATHEMATICAL BOLD CAPITAL OMEGA +1D6D3 ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD SMALL FINAL SIGMA +1D6E2 ; FC_NFKC; 03B1 # L& MATHEMATICAL ITALIC CAPITAL ALPHA +1D6E3 ; FC_NFKC; 03B2 # L& MATHEMATICAL ITALIC CAPITAL BETA +1D6E4 ; FC_NFKC; 03B3 # L& MATHEMATICAL ITALIC CAPITAL GAMMA +1D6E5 ; FC_NFKC; 03B4 # L& MATHEMATICAL ITALIC CAPITAL DELTA +1D6E6 ; FC_NFKC; 03B5 # L& MATHEMATICAL ITALIC CAPITAL EPSILON +1D6E7 ; FC_NFKC; 03B6 # L& MATHEMATICAL ITALIC CAPITAL ZETA +1D6E8 ; FC_NFKC; 03B7 # L& MATHEMATICAL ITALIC CAPITAL ETA +1D6E9 ; FC_NFKC; 03B8 # L& MATHEMATICAL ITALIC CAPITAL THETA +1D6EA ; FC_NFKC; 03B9 # L& MATHEMATICAL ITALIC CAPITAL IOTA +1D6EB ; FC_NFKC; 03BA # L& MATHEMATICAL ITALIC CAPITAL KAPPA +1D6EC ; FC_NFKC; 03BB # L& MATHEMATICAL ITALIC CAPITAL LAMDA +1D6ED ; FC_NFKC; 03BC # L& MATHEMATICAL ITALIC CAPITAL MU +1D6EE ; FC_NFKC; 03BD # L& MATHEMATICAL ITALIC CAPITAL NU +1D6EF ; FC_NFKC; 03BE # L& MATHEMATICAL ITALIC CAPITAL XI +1D6F0 ; FC_NFKC; 03BF # L& MATHEMATICAL ITALIC CAPITAL OMICRON +1D6F1 ; FC_NFKC; 03C0 # L& MATHEMATICAL ITALIC CAPITAL PI +1D6F2 ; FC_NFKC; 03C1 # L& MATHEMATICAL ITALIC CAPITAL RHO +1D6F3 ; FC_NFKC; 03B8 # L& MATHEMATICAL ITALIC CAPITAL THETA SYMBOL +1D6F4 ; FC_NFKC; 03C3 # L& MATHEMATICAL ITALIC CAPITAL SIGMA +1D6F5 ; FC_NFKC; 03C4 # L& MATHEMATICAL ITALIC CAPITAL TAU +1D6F6 ; FC_NFKC; 03C5 # L& MATHEMATICAL ITALIC CAPITAL UPSILON +1D6F7 ; FC_NFKC; 03C6 # L& MATHEMATICAL ITALIC CAPITAL PHI +1D6F8 ; FC_NFKC; 03C7 # L& MATHEMATICAL ITALIC CAPITAL CHI +1D6F9 ; FC_NFKC; 03C8 # L& MATHEMATICAL ITALIC CAPITAL PSI +1D6FA ; FC_NFKC; 03C9 # L& MATHEMATICAL ITALIC CAPITAL OMEGA +1D70D ; FC_NFKC; 03C3 # L& MATHEMATICAL ITALIC SMALL FINAL SIGMA +1D71C ; FC_NFKC; 03B1 # L& MATHEMATICAL BOLD ITALIC CAPITAL ALPHA +1D71D ; FC_NFKC; 03B2 # L& MATHEMATICAL BOLD ITALIC CAPITAL BETA +1D71E ; FC_NFKC; 03B3 # L& MATHEMATICAL BOLD ITALIC CAPITAL GAMMA +1D71F ; FC_NFKC; 03B4 # L& MATHEMATICAL BOLD ITALIC CAPITAL DELTA +1D720 ; FC_NFKC; 03B5 # L& MATHEMATICAL BOLD ITALIC CAPITAL EPSILON +1D721 ; FC_NFKC; 03B6 # L& MATHEMATICAL BOLD ITALIC CAPITAL ZETA +1D722 ; FC_NFKC; 03B7 # L& MATHEMATICAL BOLD ITALIC CAPITAL ETA +1D723 ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD ITALIC CAPITAL THETA +1D724 ; FC_NFKC; 03B9 # L& MATHEMATICAL BOLD ITALIC CAPITAL IOTA +1D725 ; FC_NFKC; 03BA # L& MATHEMATICAL BOLD ITALIC CAPITAL KAPPA +1D726 ; FC_NFKC; 03BB # L& MATHEMATICAL BOLD ITALIC CAPITAL LAMDA +1D727 ; FC_NFKC; 03BC # L& MATHEMATICAL BOLD ITALIC CAPITAL MU +1D728 ; FC_NFKC; 03BD # L& MATHEMATICAL BOLD ITALIC CAPITAL NU +1D729 ; FC_NFKC; 03BE # L& MATHEMATICAL BOLD ITALIC CAPITAL XI +1D72A ; FC_NFKC; 03BF # L& MATHEMATICAL BOLD ITALIC CAPITAL OMICRON +1D72B ; FC_NFKC; 03C0 # L& MATHEMATICAL BOLD ITALIC CAPITAL PI +1D72C ; FC_NFKC; 03C1 # L& MATHEMATICAL BOLD ITALIC CAPITAL RHO +1D72D ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL +1D72E ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD ITALIC CAPITAL SIGMA +1D72F ; FC_NFKC; 03C4 # L& MATHEMATICAL BOLD ITALIC CAPITAL TAU +1D730 ; FC_NFKC; 03C5 # L& MATHEMATICAL BOLD ITALIC CAPITAL UPSILON +1D731 ; FC_NFKC; 03C6 # L& MATHEMATICAL BOLD ITALIC CAPITAL PHI +1D732 ; FC_NFKC; 03C7 # L& MATHEMATICAL BOLD ITALIC CAPITAL CHI +1D733 ; FC_NFKC; 03C8 # L& MATHEMATICAL BOLD ITALIC CAPITAL PSI +1D734 ; FC_NFKC; 03C9 # L& MATHEMATICAL BOLD ITALIC CAPITAL OMEGA +1D747 ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA +1D756 ; FC_NFKC; 03B1 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA +1D757 ; FC_NFKC; 03B2 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA +1D758 ; FC_NFKC; 03B3 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA +1D759 ; FC_NFKC; 03B4 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA +1D75A ; FC_NFKC; 03B5 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON +1D75B ; FC_NFKC; 03B6 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA +1D75C ; FC_NFKC; 03B7 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA +1D75D ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA +1D75E ; FC_NFKC; 03B9 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA +1D75F ; FC_NFKC; 03BA # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA +1D760 ; FC_NFKC; 03BB # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA +1D761 ; FC_NFKC; 03BC # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL MU +1D762 ; FC_NFKC; 03BD # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL NU +1D763 ; FC_NFKC; 03BE # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL XI +1D764 ; FC_NFKC; 03BF # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON +1D765 ; FC_NFKC; 03C0 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL PI +1D766 ; FC_NFKC; 03C1 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO +1D767 ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL +1D768 ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA +1D769 ; FC_NFKC; 03C4 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU +1D76A ; FC_NFKC; 03C5 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON +1D76B ; FC_NFKC; 03C6 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI +1D76C ; FC_NFKC; 03C7 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI +1D76D ; FC_NFKC; 03C8 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI +1D76E ; FC_NFKC; 03C9 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA +1D781 ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA +1D790 ; FC_NFKC; 03B1 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA +1D791 ; FC_NFKC; 03B2 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA +1D792 ; FC_NFKC; 03B3 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA +1D793 ; FC_NFKC; 03B4 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA +1D794 ; FC_NFKC; 03B5 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON +1D795 ; FC_NFKC; 03B6 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA +1D796 ; FC_NFKC; 03B7 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA +1D797 ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA +1D798 ; FC_NFKC; 03B9 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA +1D799 ; FC_NFKC; 03BA # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA +1D79A ; FC_NFKC; 03BB # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA +1D79B ; FC_NFKC; 03BC # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU +1D79C ; FC_NFKC; 03BD # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU +1D79D ; FC_NFKC; 03BE # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI +1D79E ; FC_NFKC; 03BF # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON +1D79F ; FC_NFKC; 03C0 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI +1D7A0 ; FC_NFKC; 03C1 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO +1D7A1 ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL +1D7A2 ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA +1D7A3 ; FC_NFKC; 03C4 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU +1D7A4 ; FC_NFKC; 03C5 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON +1D7A5 ; FC_NFKC; 03C6 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI +1D7A6 ; FC_NFKC; 03C7 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI +1D7A7 ; FC_NFKC; 03C8 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI +1D7A8 ; FC_NFKC; 03C9 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA +1D7BB ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA +1D7CA ; FC_NFKC; 03DD # L& MATHEMATICAL BOLD CAPITAL DIGAMMA + +# Total code points: 566 + +# ================================================ + +# Derived Property: Full_Composition_Exclusion +# Generated from: Composition Exclusions + Singletons + Non-Starter Decompositions + +0340..0341 ; Full_Composition_Exclusion # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK +0343..0344 ; Full_Composition_Exclusion # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS +0374 ; Full_Composition_Exclusion # Lm GREEK NUMERAL SIGN +037E ; Full_Composition_Exclusion # Po GREEK QUESTION MARK +0387 ; Full_Composition_Exclusion # Po GREEK ANO TELEIA +0958..095F ; Full_Composition_Exclusion # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA +09DC..09DD ; Full_Composition_Exclusion # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA +09DF ; Full_Composition_Exclusion # Lo BENGALI LETTER YYA +0A33 ; Full_Composition_Exclusion # Lo GURMUKHI LETTER LLA +0A36 ; Full_Composition_Exclusion # Lo GURMUKHI LETTER SHA +0A59..0A5B ; Full_Composition_Exclusion # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA +0A5E ; Full_Composition_Exclusion # Lo GURMUKHI LETTER FA +0B5C..0B5D ; Full_Composition_Exclusion # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA +0F43 ; Full_Composition_Exclusion # Lo TIBETAN LETTER GHA +0F4D ; Full_Composition_Exclusion # Lo TIBETAN LETTER DDHA +0F52 ; Full_Composition_Exclusion # Lo TIBETAN LETTER DHA +0F57 ; Full_Composition_Exclusion # Lo TIBETAN LETTER BHA +0F5C ; Full_Composition_Exclusion # Lo TIBETAN LETTER DZHA +0F69 ; Full_Composition_Exclusion # Lo TIBETAN LETTER KSSA +0F73 ; Full_Composition_Exclusion # Mn TIBETAN VOWEL SIGN II +0F75..0F76 ; Full_Composition_Exclusion # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R +0F78 ; Full_Composition_Exclusion # Mn TIBETAN VOWEL SIGN VOCALIC L +0F81 ; Full_Composition_Exclusion # Mn TIBETAN VOWEL SIGN REVERSED II +0F93 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER GHA +0F9D ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER DDHA +0FA2 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER DHA +0FA7 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER BHA +0FAC ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER DZHA +0FB9 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER KSSA +1F71 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER ALPHA WITH OXIA +1F73 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER EPSILON WITH OXIA +1F75 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER ETA WITH OXIA +1F77 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER IOTA WITH OXIA +1F79 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER OMICRON WITH OXIA +1F7B ; Full_Composition_Exclusion # L& GREEK SMALL LETTER UPSILON WITH OXIA +1F7D ; Full_Composition_Exclusion # L& GREEK SMALL LETTER OMEGA WITH OXIA +1FBB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER ALPHA WITH OXIA +1FBE ; Full_Composition_Exclusion # L& GREEK PROSGEGRAMMENI +1FC9 ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER EPSILON WITH OXIA +1FCB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER ETA WITH OXIA +1FD3 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FDB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER IOTA WITH OXIA +1FE3 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA +1FEB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER UPSILON WITH OXIA +1FEE..1FEF ; Full_Composition_Exclusion # Sk [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA +1FF9 ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER OMICRON WITH OXIA +1FFB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER OMEGA WITH OXIA +1FFD ; Full_Composition_Exclusion # Sk GREEK OXIA +2000..2001 ; Full_Composition_Exclusion # Zs [2] EN QUAD..EM QUAD +2126 ; Full_Composition_Exclusion # L& OHM SIGN +212A..212B ; Full_Composition_Exclusion # L& [2] KELVIN SIGN..ANGSTROM SIGN +2329 ; Full_Composition_Exclusion # Ps LEFT-POINTING ANGLE BRACKET +232A ; Full_Composition_Exclusion # Pe RIGHT-POINTING ANGLE BRACKET +2ADC ; Full_Composition_Exclusion # Sm FORKING +F900..FA0D ; Full_Composition_Exclusion # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D +FA10 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA10 +FA12 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA12 +FA15..FA1E ; Full_Composition_Exclusion # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E +FA20 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA20 +FA22 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA22 +FA25..FA26 ; Full_Composition_Exclusion # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26 +FA2A..FA2D ; Full_Composition_Exclusion # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D +FA30..FA6A ; Full_Composition_Exclusion # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A +FA70..FAD9 ; Full_Composition_Exclusion # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 +FB1D ; Full_Composition_Exclusion # Lo HEBREW LETTER YOD WITH HIRIQ +FB1F ; Full_Composition_Exclusion # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH +FB2A..FB36 ; Full_Composition_Exclusion # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH +FB38..FB3C ; Full_Composition_Exclusion # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH +FB3E ; Full_Composition_Exclusion # Lo HEBREW LETTER MEM WITH DAGESH +FB40..FB41 ; Full_Composition_Exclusion # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH +FB43..FB44 ; Full_Composition_Exclusion # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH +FB46..FB4E ; Full_Composition_Exclusion # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE +1D15E..1D164 ; Full_Composition_Exclusion # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE +1D1BB..1D1C0 ; Full_Composition_Exclusion # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK +2F800..2FA1D ; Full_Composition_Exclusion # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D + +# Total code points: 1115 + +# ================================================ + +# Property: NFD_Quick_Check + +# All code points not explicitly listed for NFD_Quick_Check +# have the value Yes (Y). + +# @missing: 0000..10FFFF; NFD_QC; Yes + +# ================================================ + +# NFD_Quick_Check=No + +00C0..00C5 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE +00C7..00CF ; NFD_QC; N # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS +00D1..00D6 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS +00D9..00DD ; NFD_QC; N # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE +00E0..00E5 ; NFD_QC; N # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE +00E7..00EF ; NFD_QC; N # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS +00F1..00F6 ; NFD_QC; N # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS +00F9..00FD ; NFD_QC; N # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE +00FF..010F ; NFD_QC; N # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON +0112..0125 ; NFD_QC; N # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX +0128..0130 ; NFD_QC; N # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE +0134..0137 ; NFD_QC; N # L& [4] LATIN CAPITAL LETTER J WITH CIRCUMFLEX..LATIN SMALL LETTER K WITH CEDILLA +0139..013E ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH CARON +0143..0148 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N WITH CARON +014C..0151 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE +0154..0165 ; NFD_QC; N # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON +0168..017E ; NFD_QC; N # L& [23] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER Z WITH CARON +01A0..01A1 ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN +01AF..01B0 ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN +01CD..01DC ; NFD_QC; N # L& [16] LATIN CAPITAL LETTER A WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DE..01E3 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON +01E6..01F0 ; NFD_QC; N # L& [11] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER J WITH CARON +01F4..01F5 ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER G WITH ACUTE..LATIN SMALL LETTER G WITH ACUTE +01F8..021B ; NFD_QC; N # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW +021E..021F ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON +0226..0233 ; NFD_QC; N # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON +0340..0341 ; NFD_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK +0343..0344 ; NFD_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS +0374 ; NFD_QC; N # Lm GREEK NUMERAL SIGN +037E ; NFD_QC; N # Po GREEK QUESTION MARK +0385 ; NFD_QC; N # Sk GREEK DIALYTIKA TONOS +0386 ; NFD_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH TONOS +0387 ; NFD_QC; N # Po GREEK ANO TELEIA +0388..038A ; NFD_QC; N # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS +038C ; NFD_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH TONOS +038E..0390 ; NFD_QC; N # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +03AA..03B0 ; NFD_QC; N # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +03CA..03CE ; NFD_QC; N # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS +03D3..03D4 ; NFD_QC; N # L& [2] GREEK UPSILON WITH ACUTE AND HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL +0400..0401 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO +0403 ; NFD_QC; N # L& CYRILLIC CAPITAL LETTER GJE +0407 ; NFD_QC; N # L& CYRILLIC CAPITAL LETTER YI +040C..040E ; NFD_QC; N # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U +0419 ; NFD_QC; N # L& CYRILLIC CAPITAL LETTER SHORT I +0439 ; NFD_QC; N # L& CYRILLIC SMALL LETTER SHORT I +0450..0451 ; NFD_QC; N # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO +0453 ; NFD_QC; N # L& CYRILLIC SMALL LETTER GJE +0457 ; NFD_QC; N # L& CYRILLIC SMALL LETTER YI +045C..045E ; NFD_QC; N # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U +0476..0477 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +04C1..04C2 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE +04D0..04D3 ; NFD_QC; N # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS +04D6..04D7 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE +04DA..04DF ; NFD_QC; N # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS +04E2..04E7 ; NFD_QC; N # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS +04EA..04F5 ; NFD_QC; N # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS +04F8..04F9 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS +0622..0626 ; NFD_QC; N # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE +06C0 ; NFD_QC; N # Lo ARABIC LETTER HEH WITH YEH ABOVE +06C2 ; NFD_QC; N # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE +06D3 ; NFD_QC; N # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE +0929 ; NFD_QC; N # Lo DEVANAGARI LETTER NNNA +0931 ; NFD_QC; N # Lo DEVANAGARI LETTER RRA +0934 ; NFD_QC; N # Lo DEVANAGARI LETTER LLLA +0958..095F ; NFD_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA +09CB..09CC ; NFD_QC; N # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU +09DC..09DD ; NFD_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA +09DF ; NFD_QC; N # Lo BENGALI LETTER YYA +0A33 ; NFD_QC; N # Lo GURMUKHI LETTER LLA +0A36 ; NFD_QC; N # Lo GURMUKHI LETTER SHA +0A59..0A5B ; NFD_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA +0A5E ; NFD_QC; N # Lo GURMUKHI LETTER FA +0B48 ; NFD_QC; N # Mc ORIYA VOWEL SIGN AI +0B4B..0B4C ; NFD_QC; N # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU +0B5C..0B5D ; NFD_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA +0B94 ; NFD_QC; N # Lo TAMIL LETTER AU +0BCA..0BCC ; NFD_QC; N # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU +0C48 ; NFD_QC; N # Mn TELUGU VOWEL SIGN AI +0CC0 ; NFD_QC; N # Mc KANNADA VOWEL SIGN II +0CC7..0CC8 ; NFD_QC; N # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI +0CCA..0CCB ; NFD_QC; N # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO +0D4A..0D4C ; NFD_QC; N # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU +0DDA ; NFD_QC; N # Mc SINHALA VOWEL SIGN DIGA KOMBUVA +0DDC..0DDE ; NFD_QC; N # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA +0F43 ; NFD_QC; N # Lo TIBETAN LETTER GHA +0F4D ; NFD_QC; N # Lo TIBETAN LETTER DDHA +0F52 ; NFD_QC; N # Lo TIBETAN LETTER DHA +0F57 ; NFD_QC; N # Lo TIBETAN LETTER BHA +0F5C ; NFD_QC; N # Lo TIBETAN LETTER DZHA +0F69 ; NFD_QC; N # Lo TIBETAN LETTER KSSA +0F73 ; NFD_QC; N # Mn TIBETAN VOWEL SIGN II +0F75..0F76 ; NFD_QC; N # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R +0F78 ; NFD_QC; N # Mn TIBETAN VOWEL SIGN VOCALIC L +0F81 ; NFD_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II +0F93 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER GHA +0F9D ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA +0FA2 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER DHA +0FA7 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER BHA +0FAC ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA +0FB9 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA +1026 ; NFD_QC; N # Lo MYANMAR LETTER UU +1B06 ; NFD_QC; N # Lo BALINESE LETTER AKARA TEDUNG +1B08 ; NFD_QC; N # Lo BALINESE LETTER IKARA TEDUNG +1B0A ; NFD_QC; N # Lo BALINESE LETTER UKARA TEDUNG +1B0C ; NFD_QC; N # Lo BALINESE LETTER RA REPA TEDUNG +1B0E ; NFD_QC; N # Lo BALINESE LETTER LA LENGA TEDUNG +1B12 ; NFD_QC; N # Lo BALINESE LETTER OKARA TEDUNG +1B3B ; NFD_QC; N # Mc BALINESE VOWEL SIGN RA REPA TEDUNG +1B3D ; NFD_QC; N # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG +1B40..1B41 ; NFD_QC; N # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG +1B43 ; NFD_QC; N # Mc BALINESE VOWEL SIGN PEPET TEDUNG +1E00..1E99 ; NFD_QC; N # L& [154] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH RING ABOVE +1E9B ; NFD_QC; N # L& LATIN SMALL LETTER LONG S WITH DOT ABOVE +1EA0..1EF9 ; NFD_QC; N # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE +1F00..1F15 ; NFD_QC; N # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +1F18..1F1D ; NFD_QC; N # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +1F20..1F45 ; NFD_QC; N # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +1F48..1F4D ; NFD_QC; N # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +1F50..1F57 ; NFD_QC; N # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI +1F59 ; NFD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA +1F5B ; NFD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +1F5D ; NFD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +1F5F..1F7D ; NFD_QC; N # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA +1F80..1FB4 ; NFD_QC; N # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +1FB6..1FBC ; NFD_QC; N # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI +1FBE ; NFD_QC; N # L& GREEK PROSGEGRAMMENI +1FC1 ; NFD_QC; N # Sk GREEK DIALYTIKA AND PERISPOMENI +1FC2..1FC4 ; NFD_QC; N # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +1FC6..1FCC ; NFD_QC; N # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI +1FCD..1FCF ; NFD_QC; N # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI +1FD0..1FD3 ; NFD_QC; N # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FD6..1FDB ; NFD_QC; N # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA +1FDD..1FDF ; NFD_QC; N # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI +1FE0..1FEC ; NFD_QC; N # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA +1FED..1FEF ; NFD_QC; N # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA +1FF2..1FF4 ; NFD_QC; N # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +1FF6..1FFC ; NFD_QC; N # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +1FFD ; NFD_QC; N # Sk GREEK OXIA +2000..2001 ; NFD_QC; N # Zs [2] EN QUAD..EM QUAD +2126 ; NFD_QC; N # L& OHM SIGN +212A..212B ; NFD_QC; N # L& [2] KELVIN SIGN..ANGSTROM SIGN +219A..219B ; NFD_QC; N # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE +21AE ; NFD_QC; N # Sm LEFT RIGHT ARROW WITH STROKE +21CD ; NFD_QC; N # So LEFTWARDS DOUBLE ARROW WITH STROKE +21CE..21CF ; NFD_QC; N # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE +2204 ; NFD_QC; N # Sm THERE DOES NOT EXIST +2209 ; NFD_QC; N # Sm NOT AN ELEMENT OF +220C ; NFD_QC; N # Sm DOES NOT CONTAIN AS MEMBER +2224 ; NFD_QC; N # Sm DOES NOT DIVIDE +2226 ; NFD_QC; N # Sm NOT PARALLEL TO +2241 ; NFD_QC; N # Sm NOT TILDE +2244 ; NFD_QC; N # Sm NOT ASYMPTOTICALLY EQUAL TO +2247 ; NFD_QC; N # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO +2249 ; NFD_QC; N # Sm NOT ALMOST EQUAL TO +2260 ; NFD_QC; N # Sm NOT EQUAL TO +2262 ; NFD_QC; N # Sm NOT IDENTICAL TO +226D..2271 ; NFD_QC; N # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO +2274..2275 ; NFD_QC; N # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO +2278..2279 ; NFD_QC; N # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN +2280..2281 ; NFD_QC; N # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED +2284..2285 ; NFD_QC; N # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF +2288..2289 ; NFD_QC; N # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO +22AC..22AF ; NFD_QC; N # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +22E0..22E3 ; NFD_QC; N # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO +22EA..22ED ; NFD_QC; N # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL +2329 ; NFD_QC; N # Ps LEFT-POINTING ANGLE BRACKET +232A ; NFD_QC; N # Pe RIGHT-POINTING ANGLE BRACKET +2ADC ; NFD_QC; N # Sm FORKING +304C ; NFD_QC; N # Lo HIRAGANA LETTER GA +304E ; NFD_QC; N # Lo HIRAGANA LETTER GI +3050 ; NFD_QC; N # Lo HIRAGANA LETTER GU +3052 ; NFD_QC; N # Lo HIRAGANA LETTER GE +3054 ; NFD_QC; N # Lo HIRAGANA LETTER GO +3056 ; NFD_QC; N # Lo HIRAGANA LETTER ZA +3058 ; NFD_QC; N # Lo HIRAGANA LETTER ZI +305A ; NFD_QC; N # Lo HIRAGANA LETTER ZU +305C ; NFD_QC; N # Lo HIRAGANA LETTER ZE +305E ; NFD_QC; N # Lo HIRAGANA LETTER ZO +3060 ; NFD_QC; N # Lo HIRAGANA LETTER DA +3062 ; NFD_QC; N # Lo HIRAGANA LETTER DI +3065 ; NFD_QC; N # Lo HIRAGANA LETTER DU +3067 ; NFD_QC; N # Lo HIRAGANA LETTER DE +3069 ; NFD_QC; N # Lo HIRAGANA LETTER DO +3070..3071 ; NFD_QC; N # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA +3073..3074 ; NFD_QC; N # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI +3076..3077 ; NFD_QC; N # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU +3079..307A ; NFD_QC; N # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE +307C..307D ; NFD_QC; N # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO +3094 ; NFD_QC; N # Lo HIRAGANA LETTER VU +309E ; NFD_QC; N # Lm HIRAGANA VOICED ITERATION MARK +30AC ; NFD_QC; N # Lo KATAKANA LETTER GA +30AE ; NFD_QC; N # Lo KATAKANA LETTER GI +30B0 ; NFD_QC; N # Lo KATAKANA LETTER GU +30B2 ; NFD_QC; N # Lo KATAKANA LETTER GE +30B4 ; NFD_QC; N # Lo KATAKANA LETTER GO +30B6 ; NFD_QC; N # Lo KATAKANA LETTER ZA +30B8 ; NFD_QC; N # Lo KATAKANA LETTER ZI +30BA ; NFD_QC; N # Lo KATAKANA LETTER ZU +30BC ; NFD_QC; N # Lo KATAKANA LETTER ZE +30BE ; NFD_QC; N # Lo KATAKANA LETTER ZO +30C0 ; NFD_QC; N # Lo KATAKANA LETTER DA +30C2 ; NFD_QC; N # Lo KATAKANA LETTER DI +30C5 ; NFD_QC; N # Lo KATAKANA LETTER DU +30C7 ; NFD_QC; N # Lo KATAKANA LETTER DE +30C9 ; NFD_QC; N # Lo KATAKANA LETTER DO +30D0..30D1 ; NFD_QC; N # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA +30D3..30D4 ; NFD_QC; N # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI +30D6..30D7 ; NFD_QC; N # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU +30D9..30DA ; NFD_QC; N # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE +30DC..30DD ; NFD_QC; N # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO +30F4 ; NFD_QC; N # Lo KATAKANA LETTER VU +30F7..30FA ; NFD_QC; N # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO +30FE ; NFD_QC; N # Lm KATAKANA VOICED ITERATION MARK +AC00..D7A3 ; NFD_QC; N # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH +F900..FA0D ; NFD_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D +FA10 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10 +FA12 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12 +FA15..FA1E ; NFD_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E +FA20 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20 +FA22 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22 +FA25..FA26 ; NFD_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26 +FA2A..FA2D ; NFD_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D +FA30..FA6A ; NFD_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A +FA70..FAD9 ; NFD_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 +FB1D ; NFD_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ +FB1F ; NFD_QC; N # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH +FB2A..FB36 ; NFD_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH +FB38..FB3C ; NFD_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH +FB3E ; NFD_QC; N # Lo HEBREW LETTER MEM WITH DAGESH +FB40..FB41 ; NFD_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH +FB43..FB44 ; NFD_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH +FB46..FB4E ; NFD_QC; N # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE +1D15E..1D164 ; NFD_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE +1D1BB..1D1C0 ; NFD_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK +2F800..2FA1D ; NFD_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D + +# Total code points: 13215 + +# ================================================ + +# Property: NFC_Quick_Check + +# All code points not explicitly listed for NFC_Quick_Check +# have the value Yes (Y). + +# @missing: 0000..10FFFF; NFC_QC; Yes + +# ================================================ + +# NFC_Quick_Check=No + +0340..0341 ; NFC_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK +0343..0344 ; NFC_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS +0374 ; NFC_QC; N # Lm GREEK NUMERAL SIGN +037E ; NFC_QC; N # Po GREEK QUESTION MARK +0387 ; NFC_QC; N # Po GREEK ANO TELEIA +0958..095F ; NFC_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA +09DC..09DD ; NFC_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA +09DF ; NFC_QC; N # Lo BENGALI LETTER YYA +0A33 ; NFC_QC; N # Lo GURMUKHI LETTER LLA +0A36 ; NFC_QC; N # Lo GURMUKHI LETTER SHA +0A59..0A5B ; NFC_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA +0A5E ; NFC_QC; N # Lo GURMUKHI LETTER FA +0B5C..0B5D ; NFC_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA +0F43 ; NFC_QC; N # Lo TIBETAN LETTER GHA +0F4D ; NFC_QC; N # Lo TIBETAN LETTER DDHA +0F52 ; NFC_QC; N # Lo TIBETAN LETTER DHA +0F57 ; NFC_QC; N # Lo TIBETAN LETTER BHA +0F5C ; NFC_QC; N # Lo TIBETAN LETTER DZHA +0F69 ; NFC_QC; N # Lo TIBETAN LETTER KSSA +0F73 ; NFC_QC; N # Mn TIBETAN VOWEL SIGN II +0F75..0F76 ; NFC_QC; N # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R +0F78 ; NFC_QC; N # Mn TIBETAN VOWEL SIGN VOCALIC L +0F81 ; NFC_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II +0F93 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER GHA +0F9D ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA +0FA2 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER DHA +0FA7 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER BHA +0FAC ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA +0FB9 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA +1F71 ; NFC_QC; N # L& GREEK SMALL LETTER ALPHA WITH OXIA +1F73 ; NFC_QC; N # L& GREEK SMALL LETTER EPSILON WITH OXIA +1F75 ; NFC_QC; N # L& GREEK SMALL LETTER ETA WITH OXIA +1F77 ; NFC_QC; N # L& GREEK SMALL LETTER IOTA WITH OXIA +1F79 ; NFC_QC; N # L& GREEK SMALL LETTER OMICRON WITH OXIA +1F7B ; NFC_QC; N # L& GREEK SMALL LETTER UPSILON WITH OXIA +1F7D ; NFC_QC; N # L& GREEK SMALL LETTER OMEGA WITH OXIA +1FBB ; NFC_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH OXIA +1FBE ; NFC_QC; N # L& GREEK PROSGEGRAMMENI +1FC9 ; NFC_QC; N # L& GREEK CAPITAL LETTER EPSILON WITH OXIA +1FCB ; NFC_QC; N # L& GREEK CAPITAL LETTER ETA WITH OXIA +1FD3 ; NFC_QC; N # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FDB ; NFC_QC; N # L& GREEK CAPITAL LETTER IOTA WITH OXIA +1FE3 ; NFC_QC; N # L& GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA +1FEB ; NFC_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH OXIA +1FEE..1FEF ; NFC_QC; N # Sk [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA +1FF9 ; NFC_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH OXIA +1FFB ; NFC_QC; N # L& GREEK CAPITAL LETTER OMEGA WITH OXIA +1FFD ; NFC_QC; N # Sk GREEK OXIA +2000..2001 ; NFC_QC; N # Zs [2] EN QUAD..EM QUAD +2126 ; NFC_QC; N # L& OHM SIGN +212A..212B ; NFC_QC; N # L& [2] KELVIN SIGN..ANGSTROM SIGN +2329 ; NFC_QC; N # Ps LEFT-POINTING ANGLE BRACKET +232A ; NFC_QC; N # Pe RIGHT-POINTING ANGLE BRACKET +2ADC ; NFC_QC; N # Sm FORKING +F900..FA0D ; NFC_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D +FA10 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10 +FA12 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12 +FA15..FA1E ; NFC_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E +FA20 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20 +FA22 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22 +FA25..FA26 ; NFC_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26 +FA2A..FA2D ; NFC_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D +FA30..FA6A ; NFC_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A +FA70..FAD9 ; NFC_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 +FB1D ; NFC_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ +FB1F ; NFC_QC; N # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH +FB2A..FB36 ; NFC_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH +FB38..FB3C ; NFC_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH +FB3E ; NFC_QC; N # Lo HEBREW LETTER MEM WITH DAGESH +FB40..FB41 ; NFC_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH +FB43..FB44 ; NFC_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH +FB46..FB4E ; NFC_QC; N # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE +1D15E..1D164 ; NFC_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE +1D1BB..1D1C0 ; NFC_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK +2F800..2FA1D ; NFC_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D + +# Total code points: 1115 + +# ================================================ + +# NFC_Quick_Check=Maybe + +0300..0304 ; NFC_QC; M # Mn [5] COMBINING GRAVE ACCENT..COMBINING MACRON +0306..030C ; NFC_QC; M # Mn [7] COMBINING BREVE..COMBINING CARON +030F ; NFC_QC; M # Mn COMBINING DOUBLE GRAVE ACCENT +0311 ; NFC_QC; M # Mn COMBINING INVERTED BREVE +0313..0314 ; NFC_QC; M # Mn [2] COMBINING COMMA ABOVE..COMBINING REVERSED COMMA ABOVE +031B ; NFC_QC; M # Mn COMBINING HORN +0323..0328 ; NFC_QC; M # Mn [6] COMBINING DOT BELOW..COMBINING OGONEK +032D..032E ; NFC_QC; M # Mn [2] COMBINING CIRCUMFLEX ACCENT BELOW..COMBINING BREVE BELOW +0330..0331 ; NFC_QC; M # Mn [2] COMBINING TILDE BELOW..COMBINING MACRON BELOW +0338 ; NFC_QC; M # Mn COMBINING LONG SOLIDUS OVERLAY +0342 ; NFC_QC; M # Mn COMBINING GREEK PERISPOMENI +0345 ; NFC_QC; M # Mn COMBINING GREEK YPOGEGRAMMENI +0653..0655 ; NFC_QC; M # Mn [3] ARABIC MADDAH ABOVE..ARABIC HAMZA BELOW +093C ; NFC_QC; M # Mn DEVANAGARI SIGN NUKTA +09BE ; NFC_QC; M # Mc BENGALI VOWEL SIGN AA +09D7 ; NFC_QC; M # Mc BENGALI AU LENGTH MARK +0B3E ; NFC_QC; M # Mc ORIYA VOWEL SIGN AA +0B56 ; NFC_QC; M # Mn ORIYA AI LENGTH MARK +0B57 ; NFC_QC; M # Mc ORIYA AU LENGTH MARK +0BBE ; NFC_QC; M # Mc TAMIL VOWEL SIGN AA +0BD7 ; NFC_QC; M # Mc TAMIL AU LENGTH MARK +0C56 ; NFC_QC; M # Mn TELUGU AI LENGTH MARK +0CC2 ; NFC_QC; M # Mc KANNADA VOWEL SIGN UU +0CD5..0CD6 ; NFC_QC; M # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK +0D3E ; NFC_QC; M # Mc MALAYALAM VOWEL SIGN AA +0D57 ; NFC_QC; M # Mc MALAYALAM AU LENGTH MARK +0DCA ; NFC_QC; M # Mn SINHALA SIGN AL-LAKUNA +0DCF ; NFC_QC; M # Mc SINHALA VOWEL SIGN AELA-PILLA +0DDF ; NFC_QC; M # Mc SINHALA VOWEL SIGN GAYANUKITTA +102E ; NFC_QC; M # Mn MYANMAR VOWEL SIGN II +1161..1175 ; NFC_QC; M # Lo [21] HANGUL JUNGSEONG A..HANGUL JUNGSEONG I +11A8..11C2 ; NFC_QC; M # Lo [27] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG HIEUH +1B35 ; NFC_QC; M # Mc BALINESE VOWEL SIGN TEDUNG +3099..309A ; NFC_QC; M # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK + +# Total code points: 102 + +# ================================================ + +# Property: NFKD_Quick_Check + +# All code points not explicitly listed for NFKD_Quick_Check +# have the value Yes (Y). + +# @missing: 0000..10FFFF; NFKD_QC; Yes + +# ================================================ + +# NFKD_Quick_Check=No + +00A0 ; NFKD_QC; N # Zs NO-BREAK SPACE +00A8 ; NFKD_QC; N # Sk DIAERESIS +00AA ; NFKD_QC; N # L& FEMININE ORDINAL INDICATOR +00AF ; NFKD_QC; N # Sk MACRON +00B2..00B3 ; NFKD_QC; N # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE +00B4 ; NFKD_QC; N # Sk ACUTE ACCENT +00B5 ; NFKD_QC; N # L& MICRO SIGN +00B8 ; NFKD_QC; N # Sk CEDILLA +00B9 ; NFKD_QC; N # No SUPERSCRIPT ONE +00BA ; NFKD_QC; N # L& MASCULINE ORDINAL INDICATOR +00BC..00BE ; NFKD_QC; N # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS +00C0..00C5 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE +00C7..00CF ; NFKD_QC; N # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS +00D1..00D6 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS +00D9..00DD ; NFKD_QC; N # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE +00E0..00E5 ; NFKD_QC; N # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE +00E7..00EF ; NFKD_QC; N # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS +00F1..00F6 ; NFKD_QC; N # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS +00F9..00FD ; NFKD_QC; N # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE +00FF..010F ; NFKD_QC; N # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON +0112..0125 ; NFKD_QC; N # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX +0128..0130 ; NFKD_QC; N # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE +0132..0137 ; NFKD_QC; N # L& [6] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LETTER K WITH CEDILLA +0139..0140 ; NFKD_QC; N # L& [8] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH MIDDLE DOT +0143..0149 ; NFKD_QC; N # L& [7] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE +014C..0151 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE +0154..0165 ; NFKD_QC; N # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON +0168..017F ; NFKD_QC; N # L& [24] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER LONG S +01A0..01A1 ; NFKD_QC; N # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN +01AF..01B0 ; NFKD_QC; N # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN +01C4..01DC ; NFKD_QC; N # L& [25] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DE..01E3 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON +01E6..01F5 ; NFKD_QC; N # L& [16] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER G WITH ACUTE +01F8..021B ; NFKD_QC; N # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW +021E..021F ; NFKD_QC; N # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON +0226..0233 ; NFKD_QC; N # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON +02B0..02B8 ; NFKD_QC; N # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y +02D8..02DD ; NFKD_QC; N # Sk [6] BREVE..DOUBLE ACUTE ACCENT +02E0..02E4 ; NFKD_QC; N # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP +0340..0341 ; NFKD_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK +0343..0344 ; NFKD_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS +0374 ; NFKD_QC; N # Lm GREEK NUMERAL SIGN +037A ; NFKD_QC; N # Lm GREEK YPOGEGRAMMENI +037E ; NFKD_QC; N # Po GREEK QUESTION MARK +0384..0385 ; NFKD_QC; N # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS +0386 ; NFKD_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH TONOS +0387 ; NFKD_QC; N # Po GREEK ANO TELEIA +0388..038A ; NFKD_QC; N # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS +038C ; NFKD_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH TONOS +038E..0390 ; NFKD_QC; N # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +03AA..03B0 ; NFKD_QC; N # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +03CA..03CE ; NFKD_QC; N # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS +03D0..03D6 ; NFKD_QC; N # L& [7] GREEK BETA SYMBOL..GREEK PI SYMBOL +03F0..03F2 ; NFKD_QC; N # L& [3] GREEK KAPPA SYMBOL..GREEK LUNATE SIGMA SYMBOL +03F4..03F5 ; NFKD_QC; N # L& [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL +03F9 ; NFKD_QC; N # L& GREEK CAPITAL LUNATE SIGMA SYMBOL +0400..0401 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO +0403 ; NFKD_QC; N # L& CYRILLIC CAPITAL LETTER GJE +0407 ; NFKD_QC; N # L& CYRILLIC CAPITAL LETTER YI +040C..040E ; NFKD_QC; N # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U +0419 ; NFKD_QC; N # L& CYRILLIC CAPITAL LETTER SHORT I +0439 ; NFKD_QC; N # L& CYRILLIC SMALL LETTER SHORT I +0450..0451 ; NFKD_QC; N # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO +0453 ; NFKD_QC; N # L& CYRILLIC SMALL LETTER GJE +0457 ; NFKD_QC; N # L& CYRILLIC SMALL LETTER YI +045C..045E ; NFKD_QC; N # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U +0476..0477 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +04C1..04C2 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE +04D0..04D3 ; NFKD_QC; N # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS +04D6..04D7 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE +04DA..04DF ; NFKD_QC; N # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS +04E2..04E7 ; NFKD_QC; N # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS +04EA..04F5 ; NFKD_QC; N # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS +04F8..04F9 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS +0587 ; NFKD_QC; N # L& ARMENIAN SMALL LIGATURE ECH YIWN +0622..0626 ; NFKD_QC; N # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE +0675..0678 ; NFKD_QC; N # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH +06C0 ; NFKD_QC; N # Lo ARABIC LETTER HEH WITH YEH ABOVE +06C2 ; NFKD_QC; N # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE +06D3 ; NFKD_QC; N # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE +0929 ; NFKD_QC; N # Lo DEVANAGARI LETTER NNNA +0931 ; NFKD_QC; N # Lo DEVANAGARI LETTER RRA +0934 ; NFKD_QC; N # Lo DEVANAGARI LETTER LLLA +0958..095F ; NFKD_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA +09CB..09CC ; NFKD_QC; N # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU +09DC..09DD ; NFKD_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA +09DF ; NFKD_QC; N # Lo BENGALI LETTER YYA +0A33 ; NFKD_QC; N # Lo GURMUKHI LETTER LLA +0A36 ; NFKD_QC; N # Lo GURMUKHI LETTER SHA +0A59..0A5B ; NFKD_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA +0A5E ; NFKD_QC; N # Lo GURMUKHI LETTER FA +0B48 ; NFKD_QC; N # Mc ORIYA VOWEL SIGN AI +0B4B..0B4C ; NFKD_QC; N # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU +0B5C..0B5D ; NFKD_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA +0B94 ; NFKD_QC; N # Lo TAMIL LETTER AU +0BCA..0BCC ; NFKD_QC; N # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU +0C48 ; NFKD_QC; N # Mn TELUGU VOWEL SIGN AI +0CC0 ; NFKD_QC; N # Mc KANNADA VOWEL SIGN II +0CC7..0CC8 ; NFKD_QC; N # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI +0CCA..0CCB ; NFKD_QC; N # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO +0D4A..0D4C ; NFKD_QC; N # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU +0DDA ; NFKD_QC; N # Mc SINHALA VOWEL SIGN DIGA KOMBUVA +0DDC..0DDE ; NFKD_QC; N # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA +0E33 ; NFKD_QC; N # Lo THAI CHARACTER SARA AM +0EB3 ; NFKD_QC; N # Lo LAO VOWEL SIGN AM +0EDC..0EDD ; NFKD_QC; N # Lo [2] LAO HO NO..LAO HO MO +0F0C ; NFKD_QC; N # Po TIBETAN MARK DELIMITER TSHEG BSTAR +0F43 ; NFKD_QC; N # Lo TIBETAN LETTER GHA +0F4D ; NFKD_QC; N # Lo TIBETAN LETTER DDHA +0F52 ; NFKD_QC; N # Lo TIBETAN LETTER DHA +0F57 ; NFKD_QC; N # Lo TIBETAN LETTER BHA +0F5C ; NFKD_QC; N # Lo TIBETAN LETTER DZHA +0F69 ; NFKD_QC; N # Lo TIBETAN LETTER KSSA +0F73 ; NFKD_QC; N # Mn TIBETAN VOWEL SIGN II +0F75..0F79 ; NFKD_QC; N # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL +0F81 ; NFKD_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II +0F93 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER GHA +0F9D ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA +0FA2 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER DHA +0FA7 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER BHA +0FAC ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA +0FB9 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA +1026 ; NFKD_QC; N # Lo MYANMAR LETTER UU +10FC ; NFKD_QC; N # Lm MODIFIER LETTER GEORGIAN NAR +1B06 ; NFKD_QC; N # Lo BALINESE LETTER AKARA TEDUNG +1B08 ; NFKD_QC; N # Lo BALINESE LETTER IKARA TEDUNG +1B0A ; NFKD_QC; N # Lo BALINESE LETTER UKARA TEDUNG +1B0C ; NFKD_QC; N # Lo BALINESE LETTER RA REPA TEDUNG +1B0E ; NFKD_QC; N # Lo BALINESE LETTER LA LENGA TEDUNG +1B12 ; NFKD_QC; N # Lo BALINESE LETTER OKARA TEDUNG +1B3B ; NFKD_QC; N # Mc BALINESE VOWEL SIGN RA REPA TEDUNG +1B3D ; NFKD_QC; N # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG +1B40..1B41 ; NFKD_QC; N # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG +1B43 ; NFKD_QC; N # Mc BALINESE VOWEL SIGN PEPET TEDUNG +1D2C..1D2E ; NFKD_QC; N # Lm [3] MODIFIER LETTER CAPITAL A..MODIFIER LETTER CAPITAL B +1D30..1D3A ; NFKD_QC; N # Lm [11] MODIFIER LETTER CAPITAL D..MODIFIER LETTER CAPITAL N +1D3C..1D4D ; NFKD_QC; N # Lm [18] MODIFIER LETTER CAPITAL O..MODIFIER LETTER SMALL G +1D4F..1D61 ; NFKD_QC; N # Lm [19] MODIFIER LETTER SMALL K..MODIFIER LETTER SMALL CHI +1D62..1D6A ; NFKD_QC; N # L& [9] LATIN SUBSCRIPT SMALL LETTER I..GREEK SUBSCRIPT SMALL LETTER CHI +1D78 ; NFKD_QC; N # Lm MODIFIER LETTER CYRILLIC EN +1D9B..1DBF ; NFKD_QC; N # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA +1E00..1E9B ; NFKD_QC; N # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE +1EA0..1EF9 ; NFKD_QC; N # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE +1F00..1F15 ; NFKD_QC; N # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +1F18..1F1D ; NFKD_QC; N # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +1F20..1F45 ; NFKD_QC; N # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +1F48..1F4D ; NFKD_QC; N # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +1F50..1F57 ; NFKD_QC; N # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI +1F59 ; NFKD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA +1F5B ; NFKD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +1F5D ; NFKD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +1F5F..1F7D ; NFKD_QC; N # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA +1F80..1FB4 ; NFKD_QC; N # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +1FB6..1FBC ; NFKD_QC; N # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI +1FBD ; NFKD_QC; N # Sk GREEK KORONIS +1FBE ; NFKD_QC; N # L& GREEK PROSGEGRAMMENI +1FBF..1FC1 ; NFKD_QC; N # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI +1FC2..1FC4 ; NFKD_QC; N # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +1FC6..1FCC ; NFKD_QC; N # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI +1FCD..1FCF ; NFKD_QC; N # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI +1FD0..1FD3 ; NFKD_QC; N # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FD6..1FDB ; NFKD_QC; N # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA +1FDD..1FDF ; NFKD_QC; N # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI +1FE0..1FEC ; NFKD_QC; N # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA +1FED..1FEF ; NFKD_QC; N # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA +1FF2..1FF4 ; NFKD_QC; N # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +1FF6..1FFC ; NFKD_QC; N # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +1FFD..1FFE ; NFKD_QC; N # Sk [2] GREEK OXIA..GREEK DASIA +2000..200A ; NFKD_QC; N # Zs [11] EN QUAD..HAIR SPACE +2011 ; NFKD_QC; N # Pd NON-BREAKING HYPHEN +2017 ; NFKD_QC; N # Po DOUBLE LOW LINE +2024..2026 ; NFKD_QC; N # Po [3] ONE DOT LEADER..HORIZONTAL ELLIPSIS +202F ; NFKD_QC; N # Zs NARROW NO-BREAK SPACE +2033..2034 ; NFKD_QC; N # Po [2] DOUBLE PRIME..TRIPLE PRIME +2036..2037 ; NFKD_QC; N # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME +203C ; NFKD_QC; N # Po DOUBLE EXCLAMATION MARK +203E ; NFKD_QC; N # Po OVERLINE +2047..2049 ; NFKD_QC; N # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK +2057 ; NFKD_QC; N # Po QUADRUPLE PRIME +205F ; NFKD_QC; N # Zs MEDIUM MATHEMATICAL SPACE +2070 ; NFKD_QC; N # No SUPERSCRIPT ZERO +2071 ; NFKD_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER I +2074..2079 ; NFKD_QC; N # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE +207A..207C ; NFKD_QC; N # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN +207D ; NFKD_QC; N # Ps SUPERSCRIPT LEFT PARENTHESIS +207E ; NFKD_QC; N # Pe SUPERSCRIPT RIGHT PARENTHESIS +207F ; NFKD_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER N +2080..2089 ; NFKD_QC; N # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE +208A..208C ; NFKD_QC; N # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN +208D ; NFKD_QC; N # Ps SUBSCRIPT LEFT PARENTHESIS +208E ; NFKD_QC; N # Pe SUBSCRIPT RIGHT PARENTHESIS +2090..2094 ; NFKD_QC; N # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA +20A8 ; NFKD_QC; N # Sc RUPEE SIGN +2100..2101 ; NFKD_QC; N # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT +2102 ; NFKD_QC; N # L& DOUBLE-STRUCK CAPITAL C +2103 ; NFKD_QC; N # So DEGREE CELSIUS +2105..2106 ; NFKD_QC; N # So [2] CARE OF..CADA UNA +2107 ; NFKD_QC; N # L& EULER CONSTANT +2109 ; NFKD_QC; N # So DEGREE FAHRENHEIT +210A..2113 ; NFKD_QC; N # L& [10] SCRIPT SMALL G..SCRIPT SMALL L +2115 ; NFKD_QC; N # L& DOUBLE-STRUCK CAPITAL N +2116 ; NFKD_QC; N # So NUMERO SIGN +2119..211D ; NFKD_QC; N # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R +2120..2122 ; NFKD_QC; N # So [3] SERVICE MARK..TRADE MARK SIGN +2124 ; NFKD_QC; N # L& DOUBLE-STRUCK CAPITAL Z +2126 ; NFKD_QC; N # L& OHM SIGN +2128 ; NFKD_QC; N # L& BLACK-LETTER CAPITAL Z +212A..212D ; NFKD_QC; N # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C +212F..2131 ; NFKD_QC; N # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F +2133..2134 ; NFKD_QC; N # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O +2135..2138 ; NFKD_QC; N # Lo [4] ALEF SYMBOL..DALET SYMBOL +2139 ; NFKD_QC; N # L& INFORMATION SOURCE +213B ; NFKD_QC; N # So FACSIMILE SIGN +213C..213F ; NFKD_QC; N # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI +2140 ; NFKD_QC; N # Sm DOUBLE-STRUCK N-ARY SUMMATION +2145..2149 ; NFKD_QC; N # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J +2153..215F ; NFKD_QC; N # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE +2160..217F ; NFKD_QC; N # Nl [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND +219A..219B ; NFKD_QC; N # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE +21AE ; NFKD_QC; N # Sm LEFT RIGHT ARROW WITH STROKE +21CD ; NFKD_QC; N # So LEFTWARDS DOUBLE ARROW WITH STROKE +21CE..21CF ; NFKD_QC; N # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE +2204 ; NFKD_QC; N # Sm THERE DOES NOT EXIST +2209 ; NFKD_QC; N # Sm NOT AN ELEMENT OF +220C ; NFKD_QC; N # Sm DOES NOT CONTAIN AS MEMBER +2224 ; NFKD_QC; N # Sm DOES NOT DIVIDE +2226 ; NFKD_QC; N # Sm NOT PARALLEL TO +222C..222D ; NFKD_QC; N # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL +222F..2230 ; NFKD_QC; N # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL +2241 ; NFKD_QC; N # Sm NOT TILDE +2244 ; NFKD_QC; N # Sm NOT ASYMPTOTICALLY EQUAL TO +2247 ; NFKD_QC; N # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO +2249 ; NFKD_QC; N # Sm NOT ALMOST EQUAL TO +2260 ; NFKD_QC; N # Sm NOT EQUAL TO +2262 ; NFKD_QC; N # Sm NOT IDENTICAL TO +226D..2271 ; NFKD_QC; N # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO +2274..2275 ; NFKD_QC; N # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO +2278..2279 ; NFKD_QC; N # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN +2280..2281 ; NFKD_QC; N # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED +2284..2285 ; NFKD_QC; N # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF +2288..2289 ; NFKD_QC; N # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO +22AC..22AF ; NFKD_QC; N # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +22E0..22E3 ; NFKD_QC; N # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO +22EA..22ED ; NFKD_QC; N # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL +2329 ; NFKD_QC; N # Ps LEFT-POINTING ANGLE BRACKET +232A ; NFKD_QC; N # Pe RIGHT-POINTING ANGLE BRACKET +2460..249B ; NFKD_QC; N # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP +249C..24E9 ; NFKD_QC; N # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z +24EA ; NFKD_QC; N # No CIRCLED DIGIT ZERO +2A0C ; NFKD_QC; N # Sm QUADRUPLE INTEGRAL OPERATOR +2A74..2A76 ; NFKD_QC; N # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS +2ADC ; NFKD_QC; N # Sm FORKING +2C7C ; NFKD_QC; N # L& LATIN SUBSCRIPT SMALL LETTER J +2C7D ; NFKD_QC; N # Lm MODIFIER LETTER CAPITAL V +2D6F ; NFKD_QC; N # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK +2E9F ; NFKD_QC; N # So CJK RADICAL MOTHER +2EF3 ; NFKD_QC; N # So CJK RADICAL C-SIMPLIFIED TURTLE +2F00..2FD5 ; NFKD_QC; N # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE +3000 ; NFKD_QC; N # Zs IDEOGRAPHIC SPACE +3036 ; NFKD_QC; N # So CIRCLED POSTAL MARK +3038..303A ; NFKD_QC; N # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY +304C ; NFKD_QC; N # Lo HIRAGANA LETTER GA +304E ; NFKD_QC; N # Lo HIRAGANA LETTER GI +3050 ; NFKD_QC; N # Lo HIRAGANA LETTER GU +3052 ; NFKD_QC; N # Lo HIRAGANA LETTER GE +3054 ; NFKD_QC; N # Lo HIRAGANA LETTER GO +3056 ; NFKD_QC; N # Lo HIRAGANA LETTER ZA +3058 ; NFKD_QC; N # Lo HIRAGANA LETTER ZI +305A ; NFKD_QC; N # Lo HIRAGANA LETTER ZU +305C ; NFKD_QC; N # Lo HIRAGANA LETTER ZE +305E ; NFKD_QC; N # Lo HIRAGANA LETTER ZO +3060 ; NFKD_QC; N # Lo HIRAGANA LETTER DA +3062 ; NFKD_QC; N # Lo HIRAGANA LETTER DI +3065 ; NFKD_QC; N # Lo HIRAGANA LETTER DU +3067 ; NFKD_QC; N # Lo HIRAGANA LETTER DE +3069 ; NFKD_QC; N # Lo HIRAGANA LETTER DO +3070..3071 ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA +3073..3074 ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI +3076..3077 ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU +3079..307A ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE +307C..307D ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO +3094 ; NFKD_QC; N # Lo HIRAGANA LETTER VU +309B..309C ; NFKD_QC; N # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +309E ; NFKD_QC; N # Lm HIRAGANA VOICED ITERATION MARK +309F ; NFKD_QC; N # Lo HIRAGANA DIGRAPH YORI +30AC ; NFKD_QC; N # Lo KATAKANA LETTER GA +30AE ; NFKD_QC; N # Lo KATAKANA LETTER GI +30B0 ; NFKD_QC; N # Lo KATAKANA LETTER GU +30B2 ; NFKD_QC; N # Lo KATAKANA LETTER GE +30B4 ; NFKD_QC; N # Lo KATAKANA LETTER GO +30B6 ; NFKD_QC; N # Lo KATAKANA LETTER ZA +30B8 ; NFKD_QC; N # Lo KATAKANA LETTER ZI +30BA ; NFKD_QC; N # Lo KATAKANA LETTER ZU +30BC ; NFKD_QC; N # Lo KATAKANA LETTER ZE +30BE ; NFKD_QC; N # Lo KATAKANA LETTER ZO +30C0 ; NFKD_QC; N # Lo KATAKANA LETTER DA +30C2 ; NFKD_QC; N # Lo KATAKANA LETTER DI +30C5 ; NFKD_QC; N # Lo KATAKANA LETTER DU +30C7 ; NFKD_QC; N # Lo KATAKANA LETTER DE +30C9 ; NFKD_QC; N # Lo KATAKANA LETTER DO +30D0..30D1 ; NFKD_QC; N # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA +30D3..30D4 ; NFKD_QC; N # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI +30D6..30D7 ; NFKD_QC; N # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU +30D9..30DA ; NFKD_QC; N # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE +30DC..30DD ; NFKD_QC; N # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO +30F4 ; NFKD_QC; N # Lo KATAKANA LETTER VU +30F7..30FA ; NFKD_QC; N # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO +30FE ; NFKD_QC; N # Lm KATAKANA VOICED ITERATION MARK +30FF ; NFKD_QC; N # Lo KATAKANA DIGRAPH KOTO +3131..318E ; NFKD_QC; N # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE +3192..3195 ; NFKD_QC; N # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK +3196..319F ; NFKD_QC; N # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK +3200..321E ; NFKD_QC; N # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU +3220..3229 ; NFKD_QC; N # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN +322A..3243 ; NFKD_QC; N # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH +3250 ; NFKD_QC; N # So PARTNERSHIP SIGN +3251..325F ; NFKD_QC; N # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE +3260..327E ; NFKD_QC; N # So [31] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U +3280..3289 ; NFKD_QC; N # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN +328A..32B0 ; NFKD_QC; N # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT +32B1..32BF ; NFKD_QC; N # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY +32C0..32FE ; NFKD_QC; N # So [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO +3300..33FF ; NFKD_QC; N # So [256] SQUARE APAATO..SQUARE GAL +A770 ; NFKD_QC; N # Lm MODIFIER LETTER US +AC00..D7A3 ; NFKD_QC; N # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH +F900..FA0D ; NFKD_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D +FA10 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10 +FA12 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12 +FA15..FA1E ; NFKD_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E +FA20 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20 +FA22 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22 +FA25..FA26 ; NFKD_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26 +FA2A..FA2D ; NFKD_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D +FA30..FA6A ; NFKD_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A +FA70..FAD9 ; NFKD_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 +FB00..FB06 ; NFKD_QC; N # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST +FB13..FB17 ; NFKD_QC; N # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH +FB1D ; NFKD_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ +FB1F..FB28 ; NFKD_QC; N # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV +FB29 ; NFKD_QC; N # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN +FB2A..FB36 ; NFKD_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH +FB38..FB3C ; NFKD_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH +FB3E ; NFKD_QC; N # Lo HEBREW LETTER MEM WITH DAGESH +FB40..FB41 ; NFKD_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH +FB43..FB44 ; NFKD_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH +FB46..FBB1 ; NFKD_QC; N # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM +FBD3..FD3D ; NFKD_QC; N # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM +FD50..FD8F ; NFKD_QC; N # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM +FD92..FDC7 ; NFKD_QC; N # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM +FDF0..FDFB ; NFKD_QC; N # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU +FDFC ; NFKD_QC; N # Sc RIAL SIGN +FE10..FE16 ; NFKD_QC; N # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK +FE17 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET +FE18 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET +FE19 ; NFKD_QC; N # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS +FE30 ; NFKD_QC; N # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER +FE31..FE32 ; NFKD_QC; N # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH +FE33..FE34 ; NFKD_QC; N # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE +FE35 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS +FE36 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS +FE37 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET +FE38 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET +FE39 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET +FE3A ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET +FE3B ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET +FE3C ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET +FE3D ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET +FE3E ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET +FE3F ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET +FE40 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET +FE41 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET +FE42 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET +FE43 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET +FE44 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET +FE47 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET +FE48 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET +FE49..FE4C ; NFKD_QC; N # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE +FE4D..FE4F ; NFKD_QC; N # Pc [3] DASHED LOW LINE..WAVY LOW LINE +FE50..FE52 ; NFKD_QC; N # Po [3] SMALL COMMA..SMALL FULL STOP +FE54..FE57 ; NFKD_QC; N # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK +FE58 ; NFKD_QC; N # Pd SMALL EM DASH +FE59 ; NFKD_QC; N # Ps SMALL LEFT PARENTHESIS +FE5A ; NFKD_QC; N # Pe SMALL RIGHT PARENTHESIS +FE5B ; NFKD_QC; N # Ps SMALL LEFT CURLY BRACKET +FE5C ; NFKD_QC; N # Pe SMALL RIGHT CURLY BRACKET +FE5D ; NFKD_QC; N # Ps SMALL LEFT TORTOISE SHELL BRACKET +FE5E ; NFKD_QC; N # Pe SMALL RIGHT TORTOISE SHELL BRACKET +FE5F..FE61 ; NFKD_QC; N # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK +FE62 ; NFKD_QC; N # Sm SMALL PLUS SIGN +FE63 ; NFKD_QC; N # Pd SMALL HYPHEN-MINUS +FE64..FE66 ; NFKD_QC; N # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN +FE68 ; NFKD_QC; N # Po SMALL REVERSE SOLIDUS +FE69 ; NFKD_QC; N # Sc SMALL DOLLAR SIGN +FE6A..FE6B ; NFKD_QC; N # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT +FE70..FE72 ; NFKD_QC; N # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM +FE74 ; NFKD_QC; N # Lo ARABIC KASRATAN ISOLATED FORM +FE76..FEFC ; NFKD_QC; N # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM +FF01..FF03 ; NFKD_QC; N # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN +FF04 ; NFKD_QC; N # Sc FULLWIDTH DOLLAR SIGN +FF05..FF07 ; NFKD_QC; N # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE +FF08 ; NFKD_QC; N # Ps FULLWIDTH LEFT PARENTHESIS +FF09 ; NFKD_QC; N # Pe FULLWIDTH RIGHT PARENTHESIS +FF0A ; NFKD_QC; N # Po FULLWIDTH ASTERISK +FF0B ; NFKD_QC; N # Sm FULLWIDTH PLUS SIGN +FF0C ; NFKD_QC; N # Po FULLWIDTH COMMA +FF0D ; NFKD_QC; N # Pd FULLWIDTH HYPHEN-MINUS +FF0E..FF0F ; NFKD_QC; N # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS +FF10..FF19 ; NFKD_QC; N # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE +FF1A..FF1B ; NFKD_QC; N # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON +FF1C..FF1E ; NFKD_QC; N # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN +FF1F..FF20 ; NFKD_QC; N # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT +FF21..FF3A ; NFKD_QC; N # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z +FF3B ; NFKD_QC; N # Ps FULLWIDTH LEFT SQUARE BRACKET +FF3C ; NFKD_QC; N # Po FULLWIDTH REVERSE SOLIDUS +FF3D ; NFKD_QC; N # Pe FULLWIDTH RIGHT SQUARE BRACKET +FF3E ; NFKD_QC; N # Sk FULLWIDTH CIRCUMFLEX ACCENT +FF3F ; NFKD_QC; N # Pc FULLWIDTH LOW LINE +FF40 ; NFKD_QC; N # Sk FULLWIDTH GRAVE ACCENT +FF41..FF5A ; NFKD_QC; N # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z +FF5B ; NFKD_QC; N # Ps FULLWIDTH LEFT CURLY BRACKET +FF5C ; NFKD_QC; N # Sm FULLWIDTH VERTICAL LINE +FF5D ; NFKD_QC; N # Pe FULLWIDTH RIGHT CURLY BRACKET +FF5E ; NFKD_QC; N # Sm FULLWIDTH TILDE +FF5F ; NFKD_QC; N # Ps FULLWIDTH LEFT WHITE PARENTHESIS +FF60 ; NFKD_QC; N # Pe FULLWIDTH RIGHT WHITE PARENTHESIS +FF61 ; NFKD_QC; N # Po HALFWIDTH IDEOGRAPHIC FULL STOP +FF62 ; NFKD_QC; N # Ps HALFWIDTH LEFT CORNER BRACKET +FF63 ; NFKD_QC; N # Pe HALFWIDTH RIGHT CORNER BRACKET +FF64..FF65 ; NFKD_QC; N # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT +FF66..FF6F ; NFKD_QC; N # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU +FF70 ; NFKD_QC; N # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK +FF71..FF9D ; NFKD_QC; N # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N +FF9E..FF9F ; NFKD_QC; N # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK +FFA0..FFBE ; NFKD_QC; N # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH +FFC2..FFC7 ; NFKD_QC; N # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E +FFCA..FFCF ; NFKD_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE +FFD2..FFD7 ; NFKD_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU +FFDA..FFDC ; NFKD_QC; N # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I +FFE0..FFE1 ; NFKD_QC; N # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN +FFE2 ; NFKD_QC; N # Sm FULLWIDTH NOT SIGN +FFE3 ; NFKD_QC; N # Sk FULLWIDTH MACRON +FFE4 ; NFKD_QC; N # So FULLWIDTH BROKEN BAR +FFE5..FFE6 ; NFKD_QC; N # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN +FFE8 ; NFKD_QC; N # So HALFWIDTH FORMS LIGHT VERTICAL +FFE9..FFEC ; NFKD_QC; N # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW +FFED..FFEE ; NFKD_QC; N # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE +1D15E..1D164 ; NFKD_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE +1D1BB..1D1C0 ; NFKD_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK +1D400..1D454 ; NFKD_QC; N # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G +1D456..1D49C ; NFKD_QC; N # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A +1D49E..1D49F ; NFKD_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D +1D4A2 ; NFKD_QC; N # L& MATHEMATICAL SCRIPT CAPITAL G +1D4A5..1D4A6 ; NFKD_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K +1D4A9..1D4AC ; NFKD_QC; N # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q +1D4AE..1D4B9 ; NFKD_QC; N # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D +1D4BB ; NFKD_QC; N # L& MATHEMATICAL SCRIPT SMALL F +1D4BD..1D4C3 ; NFKD_QC; N # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N +1D4C5..1D505 ; NFKD_QC; N # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B +1D507..1D50A ; NFKD_QC; N # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G +1D50D..1D514 ; NFKD_QC; N # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q +1D516..1D51C ; NFKD_QC; N # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y +1D51E..1D539 ; NFKD_QC; N # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B +1D53B..1D53E ; NFKD_QC; N # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G +1D540..1D544 ; NFKD_QC; N # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M +1D546 ; NFKD_QC; N # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O +1D54A..1D550 ; NFKD_QC; N # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y +1D552..1D6A5 ; NFKD_QC; N # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J +1D6A8..1D6C0 ; NFKD_QC; N # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA +1D6C1 ; NFKD_QC; N # Sm MATHEMATICAL BOLD NABLA +1D6C2..1D6DA ; NFKD_QC; N # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA +1D6DB ; NFKD_QC; N # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL +1D6DC..1D6FA ; NFKD_QC; N # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA +1D6FB ; NFKD_QC; N # Sm MATHEMATICAL ITALIC NABLA +1D6FC..1D714 ; NFKD_QC; N # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA +1D715 ; NFKD_QC; N # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL +1D716..1D734 ; NFKD_QC; N # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA +1D735 ; NFKD_QC; N # Sm MATHEMATICAL BOLD ITALIC NABLA +1D736..1D74E ; NFKD_QC; N # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA +1D74F ; NFKD_QC; N # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL +1D750..1D76E ; NFKD_QC; N # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA +1D76F ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD NABLA +1D770..1D788 ; NFKD_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA +1D789 ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL +1D78A..1D7A8 ; NFKD_QC; N # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA +1D7A9 ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA +1D7AA..1D7C2 ; NFKD_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA +1D7C3 ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL +1D7C4..1D7CB ; NFKD_QC; N # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA +1D7CE..1D7FF ; NFKD_QC; N # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE +2F800..2FA1D ; NFKD_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D + +# Total code points: 16577 + +# ================================================ + +# Property: NFKC_Quick_Check + +# All code points not explicitly listed for NFKC_Quick_Check +# have the value Yes (Y). + +# @missing: 0000..10FFFF; NFKC_QC; Yes + +# ================================================ + +# NFKC_Quick_Check=No + +00A0 ; NFKC_QC; N # Zs NO-BREAK SPACE +00A8 ; NFKC_QC; N # Sk DIAERESIS +00AA ; NFKC_QC; N # L& FEMININE ORDINAL INDICATOR +00AF ; NFKC_QC; N # Sk MACRON +00B2..00B3 ; NFKC_QC; N # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE +00B4 ; NFKC_QC; N # Sk ACUTE ACCENT +00B5 ; NFKC_QC; N # L& MICRO SIGN +00B8 ; NFKC_QC; N # Sk CEDILLA +00B9 ; NFKC_QC; N # No SUPERSCRIPT ONE +00BA ; NFKC_QC; N # L& MASCULINE ORDINAL INDICATOR +00BC..00BE ; NFKC_QC; N # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS +0132..0133 ; NFKC_QC; N # L& [2] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LIGATURE IJ +013F..0140 ; NFKC_QC; N # L& [2] LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH MIDDLE DOT +0149 ; NFKC_QC; N # L& LATIN SMALL LETTER N PRECEDED BY APOSTROPHE +017F ; NFKC_QC; N # L& LATIN SMALL LETTER LONG S +01C4..01CC ; NFKC_QC; N # L& [9] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER NJ +01F1..01F3 ; NFKC_QC; N # L& [3] LATIN CAPITAL LETTER DZ..LATIN SMALL LETTER DZ +02B0..02B8 ; NFKC_QC; N # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y +02D8..02DD ; NFKC_QC; N # Sk [6] BREVE..DOUBLE ACUTE ACCENT +02E0..02E4 ; NFKC_QC; N # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP +0340..0341 ; NFKC_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK +0343..0344 ; NFKC_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS +0374 ; NFKC_QC; N # Lm GREEK NUMERAL SIGN +037A ; NFKC_QC; N # Lm GREEK YPOGEGRAMMENI +037E ; NFKC_QC; N # Po GREEK QUESTION MARK +0384..0385 ; NFKC_QC; N # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS +0387 ; NFKC_QC; N # Po GREEK ANO TELEIA +03D0..03D6 ; NFKC_QC; N # L& [7] GREEK BETA SYMBOL..GREEK PI SYMBOL +03F0..03F2 ; NFKC_QC; N # L& [3] GREEK KAPPA SYMBOL..GREEK LUNATE SIGMA SYMBOL +03F4..03F5 ; NFKC_QC; N # L& [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL +03F9 ; NFKC_QC; N # L& GREEK CAPITAL LUNATE SIGMA SYMBOL +0587 ; NFKC_QC; N # L& ARMENIAN SMALL LIGATURE ECH YIWN +0675..0678 ; NFKC_QC; N # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH +0958..095F ; NFKC_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA +09DC..09DD ; NFKC_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA +09DF ; NFKC_QC; N # Lo BENGALI LETTER YYA +0A33 ; NFKC_QC; N # Lo GURMUKHI LETTER LLA +0A36 ; NFKC_QC; N # Lo GURMUKHI LETTER SHA +0A59..0A5B ; NFKC_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA +0A5E ; NFKC_QC; N # Lo GURMUKHI LETTER FA +0B5C..0B5D ; NFKC_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA +0E33 ; NFKC_QC; N # Lo THAI CHARACTER SARA AM +0EB3 ; NFKC_QC; N # Lo LAO VOWEL SIGN AM +0EDC..0EDD ; NFKC_QC; N # Lo [2] LAO HO NO..LAO HO MO +0F0C ; NFKC_QC; N # Po TIBETAN MARK DELIMITER TSHEG BSTAR +0F43 ; NFKC_QC; N # Lo TIBETAN LETTER GHA +0F4D ; NFKC_QC; N # Lo TIBETAN LETTER DDHA +0F52 ; NFKC_QC; N # Lo TIBETAN LETTER DHA +0F57 ; NFKC_QC; N # Lo TIBETAN LETTER BHA +0F5C ; NFKC_QC; N # Lo TIBETAN LETTER DZHA +0F69 ; NFKC_QC; N # Lo TIBETAN LETTER KSSA +0F73 ; NFKC_QC; N # Mn TIBETAN VOWEL SIGN II +0F75..0F79 ; NFKC_QC; N # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL +0F81 ; NFKC_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II +0F93 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER GHA +0F9D ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA +0FA2 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER DHA +0FA7 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER BHA +0FAC ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA +0FB9 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA +10FC ; NFKC_QC; N # Lm MODIFIER LETTER GEORGIAN NAR +1D2C..1D2E ; NFKC_QC; N # Lm [3] MODIFIER LETTER CAPITAL A..MODIFIER LETTER CAPITAL B +1D30..1D3A ; NFKC_QC; N # Lm [11] MODIFIER LETTER CAPITAL D..MODIFIER LETTER CAPITAL N +1D3C..1D4D ; NFKC_QC; N # Lm [18] MODIFIER LETTER CAPITAL O..MODIFIER LETTER SMALL G +1D4F..1D61 ; NFKC_QC; N # Lm [19] MODIFIER LETTER SMALL K..MODIFIER LETTER SMALL CHI +1D62..1D6A ; NFKC_QC; N # L& [9] LATIN SUBSCRIPT SMALL LETTER I..GREEK SUBSCRIPT SMALL LETTER CHI +1D78 ; NFKC_QC; N # Lm MODIFIER LETTER CYRILLIC EN +1D9B..1DBF ; NFKC_QC; N # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA +1E9A..1E9B ; NFKC_QC; N # L& [2] LATIN SMALL LETTER A WITH RIGHT HALF RING..LATIN SMALL LETTER LONG S WITH DOT ABOVE +1F71 ; NFKC_QC; N # L& GREEK SMALL LETTER ALPHA WITH OXIA +1F73 ; NFKC_QC; N # L& GREEK SMALL LETTER EPSILON WITH OXIA +1F75 ; NFKC_QC; N # L& GREEK SMALL LETTER ETA WITH OXIA +1F77 ; NFKC_QC; N # L& GREEK SMALL LETTER IOTA WITH OXIA +1F79 ; NFKC_QC; N # L& GREEK SMALL LETTER OMICRON WITH OXIA +1F7B ; NFKC_QC; N # L& GREEK SMALL LETTER UPSILON WITH OXIA +1F7D ; NFKC_QC; N # L& GREEK SMALL LETTER OMEGA WITH OXIA +1FBB ; NFKC_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH OXIA +1FBD ; NFKC_QC; N # Sk GREEK KORONIS +1FBE ; NFKC_QC; N # L& GREEK PROSGEGRAMMENI +1FBF..1FC1 ; NFKC_QC; N # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI +1FC9 ; NFKC_QC; N # L& GREEK CAPITAL LETTER EPSILON WITH OXIA +1FCB ; NFKC_QC; N # L& GREEK CAPITAL LETTER ETA WITH OXIA +1FCD..1FCF ; NFKC_QC; N # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI +1FD3 ; NFKC_QC; N # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FDB ; NFKC_QC; N # L& GREEK CAPITAL LETTER IOTA WITH OXIA +1FDD..1FDF ; NFKC_QC; N # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI +1FE3 ; NFKC_QC; N # L& GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA +1FEB ; NFKC_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH OXIA +1FED..1FEF ; NFKC_QC; N # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA +1FF9 ; NFKC_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH OXIA +1FFB ; NFKC_QC; N # L& GREEK CAPITAL LETTER OMEGA WITH OXIA +1FFD..1FFE ; NFKC_QC; N # Sk [2] GREEK OXIA..GREEK DASIA +2000..200A ; NFKC_QC; N # Zs [11] EN QUAD..HAIR SPACE +2011 ; NFKC_QC; N # Pd NON-BREAKING HYPHEN +2017 ; NFKC_QC; N # Po DOUBLE LOW LINE +2024..2026 ; NFKC_QC; N # Po [3] ONE DOT LEADER..HORIZONTAL ELLIPSIS +202F ; NFKC_QC; N # Zs NARROW NO-BREAK SPACE +2033..2034 ; NFKC_QC; N # Po [2] DOUBLE PRIME..TRIPLE PRIME +2036..2037 ; NFKC_QC; N # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME +203C ; NFKC_QC; N # Po DOUBLE EXCLAMATION MARK +203E ; NFKC_QC; N # Po OVERLINE +2047..2049 ; NFKC_QC; N # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK +2057 ; NFKC_QC; N # Po QUADRUPLE PRIME +205F ; NFKC_QC; N # Zs MEDIUM MATHEMATICAL SPACE +2070 ; NFKC_QC; N # No SUPERSCRIPT ZERO +2071 ; NFKC_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER I +2074..2079 ; NFKC_QC; N # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE +207A..207C ; NFKC_QC; N # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN +207D ; NFKC_QC; N # Ps SUPERSCRIPT LEFT PARENTHESIS +207E ; NFKC_QC; N # Pe SUPERSCRIPT RIGHT PARENTHESIS +207F ; NFKC_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER N +2080..2089 ; NFKC_QC; N # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE +208A..208C ; NFKC_QC; N # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN +208D ; NFKC_QC; N # Ps SUBSCRIPT LEFT PARENTHESIS +208E ; NFKC_QC; N # Pe SUBSCRIPT RIGHT PARENTHESIS +2090..2094 ; NFKC_QC; N # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA +20A8 ; NFKC_QC; N # Sc RUPEE SIGN +2100..2101 ; NFKC_QC; N # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT +2102 ; NFKC_QC; N # L& DOUBLE-STRUCK CAPITAL C +2103 ; NFKC_QC; N # So DEGREE CELSIUS +2105..2106 ; NFKC_QC; N # So [2] CARE OF..CADA UNA +2107 ; NFKC_QC; N # L& EULER CONSTANT +2109 ; NFKC_QC; N # So DEGREE FAHRENHEIT +210A..2113 ; NFKC_QC; N # L& [10] SCRIPT SMALL G..SCRIPT SMALL L +2115 ; NFKC_QC; N # L& DOUBLE-STRUCK CAPITAL N +2116 ; NFKC_QC; N # So NUMERO SIGN +2119..211D ; NFKC_QC; N # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R +2120..2122 ; NFKC_QC; N # So [3] SERVICE MARK..TRADE MARK SIGN +2124 ; NFKC_QC; N # L& DOUBLE-STRUCK CAPITAL Z +2126 ; NFKC_QC; N # L& OHM SIGN +2128 ; NFKC_QC; N # L& BLACK-LETTER CAPITAL Z +212A..212D ; NFKC_QC; N # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C +212F..2131 ; NFKC_QC; N # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F +2133..2134 ; NFKC_QC; N # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O +2135..2138 ; NFKC_QC; N # Lo [4] ALEF SYMBOL..DALET SYMBOL +2139 ; NFKC_QC; N # L& INFORMATION SOURCE +213B ; NFKC_QC; N # So FACSIMILE SIGN +213C..213F ; NFKC_QC; N # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI +2140 ; NFKC_QC; N # Sm DOUBLE-STRUCK N-ARY SUMMATION +2145..2149 ; NFKC_QC; N # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J +2153..215F ; NFKC_QC; N # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE +2160..217F ; NFKC_QC; N # Nl [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND +222C..222D ; NFKC_QC; N # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL +222F..2230 ; NFKC_QC; N # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL +2329 ; NFKC_QC; N # Ps LEFT-POINTING ANGLE BRACKET +232A ; NFKC_QC; N # Pe RIGHT-POINTING ANGLE BRACKET +2460..249B ; NFKC_QC; N # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP +249C..24E9 ; NFKC_QC; N # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z +24EA ; NFKC_QC; N # No CIRCLED DIGIT ZERO +2A0C ; NFKC_QC; N # Sm QUADRUPLE INTEGRAL OPERATOR +2A74..2A76 ; NFKC_QC; N # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS +2ADC ; NFKC_QC; N # Sm FORKING +2C7C ; NFKC_QC; N # L& LATIN SUBSCRIPT SMALL LETTER J +2C7D ; NFKC_QC; N # Lm MODIFIER LETTER CAPITAL V +2D6F ; NFKC_QC; N # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK +2E9F ; NFKC_QC; N # So CJK RADICAL MOTHER +2EF3 ; NFKC_QC; N # So CJK RADICAL C-SIMPLIFIED TURTLE +2F00..2FD5 ; NFKC_QC; N # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE +3000 ; NFKC_QC; N # Zs IDEOGRAPHIC SPACE +3036 ; NFKC_QC; N # So CIRCLED POSTAL MARK +3038..303A ; NFKC_QC; N # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY +309B..309C ; NFKC_QC; N # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +309F ; NFKC_QC; N # Lo HIRAGANA DIGRAPH YORI +30FF ; NFKC_QC; N # Lo KATAKANA DIGRAPH KOTO +3131..318E ; NFKC_QC; N # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE +3192..3195 ; NFKC_QC; N # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK +3196..319F ; NFKC_QC; N # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK +3200..321E ; NFKC_QC; N # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU +3220..3229 ; NFKC_QC; N # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN +322A..3243 ; NFKC_QC; N # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH +3250 ; NFKC_QC; N # So PARTNERSHIP SIGN +3251..325F ; NFKC_QC; N # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE +3260..327E ; NFKC_QC; N # So [31] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U +3280..3289 ; NFKC_QC; N # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN +328A..32B0 ; NFKC_QC; N # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT +32B1..32BF ; NFKC_QC; N # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY +32C0..32FE ; NFKC_QC; N # So [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO +3300..33FF ; NFKC_QC; N # So [256] SQUARE APAATO..SQUARE GAL +A770 ; NFKC_QC; N # Lm MODIFIER LETTER US +F900..FA0D ; NFKC_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D +FA10 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10 +FA12 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12 +FA15..FA1E ; NFKC_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E +FA20 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20 +FA22 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22 +FA25..FA26 ; NFKC_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26 +FA2A..FA2D ; NFKC_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D +FA30..FA6A ; NFKC_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A +FA70..FAD9 ; NFKC_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 +FB00..FB06 ; NFKC_QC; N # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST +FB13..FB17 ; NFKC_QC; N # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH +FB1D ; NFKC_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ +FB1F..FB28 ; NFKC_QC; N # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV +FB29 ; NFKC_QC; N # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN +FB2A..FB36 ; NFKC_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH +FB38..FB3C ; NFKC_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH +FB3E ; NFKC_QC; N # Lo HEBREW LETTER MEM WITH DAGESH +FB40..FB41 ; NFKC_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH +FB43..FB44 ; NFKC_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH +FB46..FBB1 ; NFKC_QC; N # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM +FBD3..FD3D ; NFKC_QC; N # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM +FD50..FD8F ; NFKC_QC; N # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM +FD92..FDC7 ; NFKC_QC; N # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM +FDF0..FDFB ; NFKC_QC; N # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU +FDFC ; NFKC_QC; N # Sc RIAL SIGN +FE10..FE16 ; NFKC_QC; N # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK +FE17 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET +FE18 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET +FE19 ; NFKC_QC; N # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS +FE30 ; NFKC_QC; N # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER +FE31..FE32 ; NFKC_QC; N # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH +FE33..FE34 ; NFKC_QC; N # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE +FE35 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS +FE36 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS +FE37 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET +FE38 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET +FE39 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET +FE3A ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET +FE3B ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET +FE3C ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET +FE3D ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET +FE3E ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET +FE3F ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET +FE40 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET +FE41 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET +FE42 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET +FE43 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET +FE44 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET +FE47 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET +FE48 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET +FE49..FE4C ; NFKC_QC; N # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE +FE4D..FE4F ; NFKC_QC; N # Pc [3] DASHED LOW LINE..WAVY LOW LINE +FE50..FE52 ; NFKC_QC; N # Po [3] SMALL COMMA..SMALL FULL STOP +FE54..FE57 ; NFKC_QC; N # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK +FE58 ; NFKC_QC; N # Pd SMALL EM DASH +FE59 ; NFKC_QC; N # Ps SMALL LEFT PARENTHESIS +FE5A ; NFKC_QC; N # Pe SMALL RIGHT PARENTHESIS +FE5B ; NFKC_QC; N # Ps SMALL LEFT CURLY BRACKET +FE5C ; NFKC_QC; N # Pe SMALL RIGHT CURLY BRACKET +FE5D ; NFKC_QC; N # Ps SMALL LEFT TORTOISE SHELL BRACKET +FE5E ; NFKC_QC; N # Pe SMALL RIGHT TORTOISE SHELL BRACKET +FE5F..FE61 ; NFKC_QC; N # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK +FE62 ; NFKC_QC; N # Sm SMALL PLUS SIGN +FE63 ; NFKC_QC; N # Pd SMALL HYPHEN-MINUS +FE64..FE66 ; NFKC_QC; N # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN +FE68 ; NFKC_QC; N # Po SMALL REVERSE SOLIDUS +FE69 ; NFKC_QC; N # Sc SMALL DOLLAR SIGN +FE6A..FE6B ; NFKC_QC; N # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT +FE70..FE72 ; NFKC_QC; N # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM +FE74 ; NFKC_QC; N # Lo ARABIC KASRATAN ISOLATED FORM +FE76..FEFC ; NFKC_QC; N # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM +FF01..FF03 ; NFKC_QC; N # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN +FF04 ; NFKC_QC; N # Sc FULLWIDTH DOLLAR SIGN +FF05..FF07 ; NFKC_QC; N # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE +FF08 ; NFKC_QC; N # Ps FULLWIDTH LEFT PARENTHESIS +FF09 ; NFKC_QC; N # Pe FULLWIDTH RIGHT PARENTHESIS +FF0A ; NFKC_QC; N # Po FULLWIDTH ASTERISK +FF0B ; NFKC_QC; N # Sm FULLWIDTH PLUS SIGN +FF0C ; NFKC_QC; N # Po FULLWIDTH COMMA +FF0D ; NFKC_QC; N # Pd FULLWIDTH HYPHEN-MINUS +FF0E..FF0F ; NFKC_QC; N # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS +FF10..FF19 ; NFKC_QC; N # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE +FF1A..FF1B ; NFKC_QC; N # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON +FF1C..FF1E ; NFKC_QC; N # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN +FF1F..FF20 ; NFKC_QC; N # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT +FF21..FF3A ; NFKC_QC; N # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z +FF3B ; NFKC_QC; N # Ps FULLWIDTH LEFT SQUARE BRACKET +FF3C ; NFKC_QC; N # Po FULLWIDTH REVERSE SOLIDUS +FF3D ; NFKC_QC; N # Pe FULLWIDTH RIGHT SQUARE BRACKET +FF3E ; NFKC_QC; N # Sk FULLWIDTH CIRCUMFLEX ACCENT +FF3F ; NFKC_QC; N # Pc FULLWIDTH LOW LINE +FF40 ; NFKC_QC; N # Sk FULLWIDTH GRAVE ACCENT +FF41..FF5A ; NFKC_QC; N # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z +FF5B ; NFKC_QC; N # Ps FULLWIDTH LEFT CURLY BRACKET +FF5C ; NFKC_QC; N # Sm FULLWIDTH VERTICAL LINE +FF5D ; NFKC_QC; N # Pe FULLWIDTH RIGHT CURLY BRACKET +FF5E ; NFKC_QC; N # Sm FULLWIDTH TILDE +FF5F ; NFKC_QC; N # Ps FULLWIDTH LEFT WHITE PARENTHESIS +FF60 ; NFKC_QC; N # Pe FULLWIDTH RIGHT WHITE PARENTHESIS +FF61 ; NFKC_QC; N # Po HALFWIDTH IDEOGRAPHIC FULL STOP +FF62 ; NFKC_QC; N # Ps HALFWIDTH LEFT CORNER BRACKET +FF63 ; NFKC_QC; N # Pe HALFWIDTH RIGHT CORNER BRACKET +FF64..FF65 ; NFKC_QC; N # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT +FF66..FF6F ; NFKC_QC; N # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU +FF70 ; NFKC_QC; N # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK +FF71..FF9D ; NFKC_QC; N # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N +FF9E..FF9F ; NFKC_QC; N # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK +FFA0..FFBE ; NFKC_QC; N # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH +FFC2..FFC7 ; NFKC_QC; N # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E +FFCA..FFCF ; NFKC_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE +FFD2..FFD7 ; NFKC_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU +FFDA..FFDC ; NFKC_QC; N # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I +FFE0..FFE1 ; NFKC_QC; N # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN +FFE2 ; NFKC_QC; N # Sm FULLWIDTH NOT SIGN +FFE3 ; NFKC_QC; N # Sk FULLWIDTH MACRON +FFE4 ; NFKC_QC; N # So FULLWIDTH BROKEN BAR +FFE5..FFE6 ; NFKC_QC; N # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN +FFE8 ; NFKC_QC; N # So HALFWIDTH FORMS LIGHT VERTICAL +FFE9..FFEC ; NFKC_QC; N # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW +FFED..FFEE ; NFKC_QC; N # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE +1D15E..1D164 ; NFKC_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE +1D1BB..1D1C0 ; NFKC_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK +1D400..1D454 ; NFKC_QC; N # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G +1D456..1D49C ; NFKC_QC; N # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A +1D49E..1D49F ; NFKC_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D +1D4A2 ; NFKC_QC; N # L& MATHEMATICAL SCRIPT CAPITAL G +1D4A5..1D4A6 ; NFKC_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K +1D4A9..1D4AC ; NFKC_QC; N # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q +1D4AE..1D4B9 ; NFKC_QC; N # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D +1D4BB ; NFKC_QC; N # L& MATHEMATICAL SCRIPT SMALL F +1D4BD..1D4C3 ; NFKC_QC; N # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N +1D4C5..1D505 ; NFKC_QC; N # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B +1D507..1D50A ; NFKC_QC; N # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G +1D50D..1D514 ; NFKC_QC; N # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q +1D516..1D51C ; NFKC_QC; N # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y +1D51E..1D539 ; NFKC_QC; N # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B +1D53B..1D53E ; NFKC_QC; N # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G +1D540..1D544 ; NFKC_QC; N # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M +1D546 ; NFKC_QC; N # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O +1D54A..1D550 ; NFKC_QC; N # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y +1D552..1D6A5 ; NFKC_QC; N # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J +1D6A8..1D6C0 ; NFKC_QC; N # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA +1D6C1 ; NFKC_QC; N # Sm MATHEMATICAL BOLD NABLA +1D6C2..1D6DA ; NFKC_QC; N # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA +1D6DB ; NFKC_QC; N # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL +1D6DC..1D6FA ; NFKC_QC; N # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA +1D6FB ; NFKC_QC; N # Sm MATHEMATICAL ITALIC NABLA +1D6FC..1D714 ; NFKC_QC; N # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA +1D715 ; NFKC_QC; N # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL +1D716..1D734 ; NFKC_QC; N # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA +1D735 ; NFKC_QC; N # Sm MATHEMATICAL BOLD ITALIC NABLA +1D736..1D74E ; NFKC_QC; N # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA +1D74F ; NFKC_QC; N # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL +1D750..1D76E ; NFKC_QC; N # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA +1D76F ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD NABLA +1D770..1D788 ; NFKC_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA +1D789 ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL +1D78A..1D7A8 ; NFKC_QC; N # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA +1D7A9 ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA +1D7AA..1D7C2 ; NFKC_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA +1D7C3 ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL +1D7C4..1D7CB ; NFKC_QC; N # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA +1D7CE..1D7FF ; NFKC_QC; N # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE +2F800..2FA1D ; NFKC_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D + +# Total code points: 4489 + +# ================================================ + +# NFKC_Quick_Check=Maybe + +0300..0304 ; NFKC_QC; M # Mn [5] COMBINING GRAVE ACCENT..COMBINING MACRON +0306..030C ; NFKC_QC; M # Mn [7] COMBINING BREVE..COMBINING CARON +030F ; NFKC_QC; M # Mn COMBINING DOUBLE GRAVE ACCENT +0311 ; NFKC_QC; M # Mn COMBINING INVERTED BREVE +0313..0314 ; NFKC_QC; M # Mn [2] COMBINING COMMA ABOVE..COMBINING REVERSED COMMA ABOVE +031B ; NFKC_QC; M # Mn COMBINING HORN +0323..0328 ; NFKC_QC; M # Mn [6] COMBINING DOT BELOW..COMBINING OGONEK +032D..032E ; NFKC_QC; M # Mn [2] COMBINING CIRCUMFLEX ACCENT BELOW..COMBINING BREVE BELOW +0330..0331 ; NFKC_QC; M # Mn [2] COMBINING TILDE BELOW..COMBINING MACRON BELOW +0338 ; NFKC_QC; M # Mn COMBINING LONG SOLIDUS OVERLAY +0342 ; NFKC_QC; M # Mn COMBINING GREEK PERISPOMENI +0345 ; NFKC_QC; M # Mn COMBINING GREEK YPOGEGRAMMENI +0653..0655 ; NFKC_QC; M # Mn [3] ARABIC MADDAH ABOVE..ARABIC HAMZA BELOW +093C ; NFKC_QC; M # Mn DEVANAGARI SIGN NUKTA +09BE ; NFKC_QC; M # Mc BENGALI VOWEL SIGN AA +09D7 ; NFKC_QC; M # Mc BENGALI AU LENGTH MARK +0B3E ; NFKC_QC; M # Mc ORIYA VOWEL SIGN AA +0B56 ; NFKC_QC; M # Mn ORIYA AI LENGTH MARK +0B57 ; NFKC_QC; M # Mc ORIYA AU LENGTH MARK +0BBE ; NFKC_QC; M # Mc TAMIL VOWEL SIGN AA +0BD7 ; NFKC_QC; M # Mc TAMIL AU LENGTH MARK +0C56 ; NFKC_QC; M # Mn TELUGU AI LENGTH MARK +0CC2 ; NFKC_QC; M # Mc KANNADA VOWEL SIGN UU +0CD5..0CD6 ; NFKC_QC; M # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK +0D3E ; NFKC_QC; M # Mc MALAYALAM VOWEL SIGN AA +0D57 ; NFKC_QC; M # Mc MALAYALAM AU LENGTH MARK +0DCA ; NFKC_QC; M # Mn SINHALA SIGN AL-LAKUNA +0DCF ; NFKC_QC; M # Mc SINHALA VOWEL SIGN AELA-PILLA +0DDF ; NFKC_QC; M # Mc SINHALA VOWEL SIGN GAYANUKITTA +102E ; NFKC_QC; M # Mn MYANMAR VOWEL SIGN II +1161..1175 ; NFKC_QC; M # Lo [21] HANGUL JUNGSEONG A..HANGUL JUNGSEONG I +11A8..11C2 ; NFKC_QC; M # Lo [27] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG HIEUH +1B35 ; NFKC_QC; M # Mc BALINESE VOWEL SIGN TEDUNG +3099..309A ; NFKC_QC; M # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK + +# Total code points: 102 + +# ================================================ + +# Derived Property: Expands_On_NFD +# Generated according to UAX #15. +# Characters whose normalized length is not one. +# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact. +# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters! + +00C0..00C5 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE +00C7..00CF ; Expands_On_NFD # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS +00D1..00D6 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS +00D9..00DD ; Expands_On_NFD # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE +00E0..00E5 ; Expands_On_NFD # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE +00E7..00EF ; Expands_On_NFD # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS +00F1..00F6 ; Expands_On_NFD # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS +00F9..00FD ; Expands_On_NFD # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE +00FF..010F ; Expands_On_NFD # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON +0112..0125 ; Expands_On_NFD # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX +0128..0130 ; Expands_On_NFD # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE +0134..0137 ; Expands_On_NFD # L& [4] LATIN CAPITAL LETTER J WITH CIRCUMFLEX..LATIN SMALL LETTER K WITH CEDILLA +0139..013E ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH CARON +0143..0148 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N WITH CARON +014C..0151 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE +0154..0165 ; Expands_On_NFD # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON +0168..017E ; Expands_On_NFD # L& [23] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER Z WITH CARON +01A0..01A1 ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN +01AF..01B0 ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN +01CD..01DC ; Expands_On_NFD # L& [16] LATIN CAPITAL LETTER A WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DE..01E3 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON +01E6..01F0 ; Expands_On_NFD # L& [11] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER J WITH CARON +01F4..01F5 ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER G WITH ACUTE..LATIN SMALL LETTER G WITH ACUTE +01F8..021B ; Expands_On_NFD # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW +021E..021F ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON +0226..0233 ; Expands_On_NFD # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON +0344 ; Expands_On_NFD # Mn COMBINING GREEK DIALYTIKA TONOS +0385 ; Expands_On_NFD # Sk GREEK DIALYTIKA TONOS +0386 ; Expands_On_NFD # L& GREEK CAPITAL LETTER ALPHA WITH TONOS +0388..038A ; Expands_On_NFD # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS +038C ; Expands_On_NFD # L& GREEK CAPITAL LETTER OMICRON WITH TONOS +038E..0390 ; Expands_On_NFD # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +03AA..03B0 ; Expands_On_NFD # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +03CA..03CE ; Expands_On_NFD # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS +03D3..03D4 ; Expands_On_NFD # L& [2] GREEK UPSILON WITH ACUTE AND HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL +0400..0401 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO +0403 ; Expands_On_NFD # L& CYRILLIC CAPITAL LETTER GJE +0407 ; Expands_On_NFD # L& CYRILLIC CAPITAL LETTER YI +040C..040E ; Expands_On_NFD # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U +0419 ; Expands_On_NFD # L& CYRILLIC CAPITAL LETTER SHORT I +0439 ; Expands_On_NFD # L& CYRILLIC SMALL LETTER SHORT I +0450..0451 ; Expands_On_NFD # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO +0453 ; Expands_On_NFD # L& CYRILLIC SMALL LETTER GJE +0457 ; Expands_On_NFD # L& CYRILLIC SMALL LETTER YI +045C..045E ; Expands_On_NFD # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U +0476..0477 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +04C1..04C2 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE +04D0..04D3 ; Expands_On_NFD # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS +04D6..04D7 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE +04DA..04DF ; Expands_On_NFD # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS +04E2..04E7 ; Expands_On_NFD # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS +04EA..04F5 ; Expands_On_NFD # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS +04F8..04F9 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS +0622..0626 ; Expands_On_NFD # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE +06C0 ; Expands_On_NFD # Lo ARABIC LETTER HEH WITH YEH ABOVE +06C2 ; Expands_On_NFD # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE +06D3 ; Expands_On_NFD # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE +0929 ; Expands_On_NFD # Lo DEVANAGARI LETTER NNNA +0931 ; Expands_On_NFD # Lo DEVANAGARI LETTER RRA +0934 ; Expands_On_NFD # Lo DEVANAGARI LETTER LLLA +0958..095F ; Expands_On_NFD # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA +09CB..09CC ; Expands_On_NFD # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU +09DC..09DD ; Expands_On_NFD # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA +09DF ; Expands_On_NFD # Lo BENGALI LETTER YYA +0A33 ; Expands_On_NFD # Lo GURMUKHI LETTER LLA +0A36 ; Expands_On_NFD # Lo GURMUKHI LETTER SHA +0A59..0A5B ; Expands_On_NFD # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA +0A5E ; Expands_On_NFD # Lo GURMUKHI LETTER FA +0B48 ; Expands_On_NFD # Mc ORIYA VOWEL SIGN AI +0B4B..0B4C ; Expands_On_NFD # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU +0B5C..0B5D ; Expands_On_NFD # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA +0B94 ; Expands_On_NFD # Lo TAMIL LETTER AU +0BCA..0BCC ; Expands_On_NFD # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU +0C48 ; Expands_On_NFD # Mn TELUGU VOWEL SIGN AI +0CC0 ; Expands_On_NFD # Mc KANNADA VOWEL SIGN II +0CC7..0CC8 ; Expands_On_NFD # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI +0CCA..0CCB ; Expands_On_NFD # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO +0D4A..0D4C ; Expands_On_NFD # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU +0DDA ; Expands_On_NFD # Mc SINHALA VOWEL SIGN DIGA KOMBUVA +0DDC..0DDE ; Expands_On_NFD # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA +0F43 ; Expands_On_NFD # Lo TIBETAN LETTER GHA +0F4D ; Expands_On_NFD # Lo TIBETAN LETTER DDHA +0F52 ; Expands_On_NFD # Lo TIBETAN LETTER DHA +0F57 ; Expands_On_NFD # Lo TIBETAN LETTER BHA +0F5C ; Expands_On_NFD # Lo TIBETAN LETTER DZHA +0F69 ; Expands_On_NFD # Lo TIBETAN LETTER KSSA +0F73 ; Expands_On_NFD # Mn TIBETAN VOWEL SIGN II +0F75..0F76 ; Expands_On_NFD # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R +0F78 ; Expands_On_NFD # Mn TIBETAN VOWEL SIGN VOCALIC L +0F81 ; Expands_On_NFD # Mn TIBETAN VOWEL SIGN REVERSED II +0F93 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER GHA +0F9D ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER DDHA +0FA2 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER DHA +0FA7 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER BHA +0FAC ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER DZHA +0FB9 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER KSSA +1026 ; Expands_On_NFD # Lo MYANMAR LETTER UU +1B06 ; Expands_On_NFD # Lo BALINESE LETTER AKARA TEDUNG +1B08 ; Expands_On_NFD # Lo BALINESE LETTER IKARA TEDUNG +1B0A ; Expands_On_NFD # Lo BALINESE LETTER UKARA TEDUNG +1B0C ; Expands_On_NFD # Lo BALINESE LETTER RA REPA TEDUNG +1B0E ; Expands_On_NFD # Lo BALINESE LETTER LA LENGA TEDUNG +1B12 ; Expands_On_NFD # Lo BALINESE LETTER OKARA TEDUNG +1B3B ; Expands_On_NFD # Mc BALINESE VOWEL SIGN RA REPA TEDUNG +1B3D ; Expands_On_NFD # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG +1B40..1B41 ; Expands_On_NFD # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG +1B43 ; Expands_On_NFD # Mc BALINESE VOWEL SIGN PEPET TEDUNG +1E00..1E99 ; Expands_On_NFD # L& [154] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH RING ABOVE +1E9B ; Expands_On_NFD # L& LATIN SMALL LETTER LONG S WITH DOT ABOVE +1EA0..1EF9 ; Expands_On_NFD # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE +1F00..1F15 ; Expands_On_NFD # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +1F18..1F1D ; Expands_On_NFD # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +1F20..1F45 ; Expands_On_NFD # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +1F48..1F4D ; Expands_On_NFD # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +1F50..1F57 ; Expands_On_NFD # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI +1F59 ; Expands_On_NFD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA +1F5B ; Expands_On_NFD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +1F5D ; Expands_On_NFD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +1F5F..1F7D ; Expands_On_NFD # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA +1F80..1FB4 ; Expands_On_NFD # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +1FB6..1FBC ; Expands_On_NFD # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI +1FC1 ; Expands_On_NFD # Sk GREEK DIALYTIKA AND PERISPOMENI +1FC2..1FC4 ; Expands_On_NFD # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +1FC6..1FCC ; Expands_On_NFD # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI +1FCD..1FCF ; Expands_On_NFD # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI +1FD0..1FD3 ; Expands_On_NFD # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FD6..1FDB ; Expands_On_NFD # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA +1FDD..1FDF ; Expands_On_NFD # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI +1FE0..1FEC ; Expands_On_NFD # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA +1FED..1FEE ; Expands_On_NFD # Sk [2] GREEK DIALYTIKA AND VARIA..GREEK DIALYTIKA AND OXIA +1FF2..1FF4 ; Expands_On_NFD # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +1FF6..1FFC ; Expands_On_NFD # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +212B ; Expands_On_NFD # L& ANGSTROM SIGN +219A..219B ; Expands_On_NFD # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE +21AE ; Expands_On_NFD # Sm LEFT RIGHT ARROW WITH STROKE +21CD ; Expands_On_NFD # So LEFTWARDS DOUBLE ARROW WITH STROKE +21CE..21CF ; Expands_On_NFD # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE +2204 ; Expands_On_NFD # Sm THERE DOES NOT EXIST +2209 ; Expands_On_NFD # Sm NOT AN ELEMENT OF +220C ; Expands_On_NFD # Sm DOES NOT CONTAIN AS MEMBER +2224 ; Expands_On_NFD # Sm DOES NOT DIVIDE +2226 ; Expands_On_NFD # Sm NOT PARALLEL TO +2241 ; Expands_On_NFD # Sm NOT TILDE +2244 ; Expands_On_NFD # Sm NOT ASYMPTOTICALLY EQUAL TO +2247 ; Expands_On_NFD # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO +2249 ; Expands_On_NFD # Sm NOT ALMOST EQUAL TO +2260 ; Expands_On_NFD # Sm NOT EQUAL TO +2262 ; Expands_On_NFD # Sm NOT IDENTICAL TO +226D..2271 ; Expands_On_NFD # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO +2274..2275 ; Expands_On_NFD # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO +2278..2279 ; Expands_On_NFD # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN +2280..2281 ; Expands_On_NFD # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED +2284..2285 ; Expands_On_NFD # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF +2288..2289 ; Expands_On_NFD # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO +22AC..22AF ; Expands_On_NFD # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +22E0..22E3 ; Expands_On_NFD # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO +22EA..22ED ; Expands_On_NFD # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL +2ADC ; Expands_On_NFD # Sm FORKING +304C ; Expands_On_NFD # Lo HIRAGANA LETTER GA +304E ; Expands_On_NFD # Lo HIRAGANA LETTER GI +3050 ; Expands_On_NFD # Lo HIRAGANA LETTER GU +3052 ; Expands_On_NFD # Lo HIRAGANA LETTER GE +3054 ; Expands_On_NFD # Lo HIRAGANA LETTER GO +3056 ; Expands_On_NFD # Lo HIRAGANA LETTER ZA +3058 ; Expands_On_NFD # Lo HIRAGANA LETTER ZI +305A ; Expands_On_NFD # Lo HIRAGANA LETTER ZU +305C ; Expands_On_NFD # Lo HIRAGANA LETTER ZE +305E ; Expands_On_NFD # Lo HIRAGANA LETTER ZO +3060 ; Expands_On_NFD # Lo HIRAGANA LETTER DA +3062 ; Expands_On_NFD # Lo HIRAGANA LETTER DI +3065 ; Expands_On_NFD # Lo HIRAGANA LETTER DU +3067 ; Expands_On_NFD # Lo HIRAGANA LETTER DE +3069 ; Expands_On_NFD # Lo HIRAGANA LETTER DO +3070..3071 ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA +3073..3074 ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI +3076..3077 ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU +3079..307A ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE +307C..307D ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO +3094 ; Expands_On_NFD # Lo HIRAGANA LETTER VU +309E ; Expands_On_NFD # Lm HIRAGANA VOICED ITERATION MARK +30AC ; Expands_On_NFD # Lo KATAKANA LETTER GA +30AE ; Expands_On_NFD # Lo KATAKANA LETTER GI +30B0 ; Expands_On_NFD # Lo KATAKANA LETTER GU +30B2 ; Expands_On_NFD # Lo KATAKANA LETTER GE +30B4 ; Expands_On_NFD # Lo KATAKANA LETTER GO +30B6 ; Expands_On_NFD # Lo KATAKANA LETTER ZA +30B8 ; Expands_On_NFD # Lo KATAKANA LETTER ZI +30BA ; Expands_On_NFD # Lo KATAKANA LETTER ZU +30BC ; Expands_On_NFD # Lo KATAKANA LETTER ZE +30BE ; Expands_On_NFD # Lo KATAKANA LETTER ZO +30C0 ; Expands_On_NFD # Lo KATAKANA LETTER DA +30C2 ; Expands_On_NFD # Lo KATAKANA LETTER DI +30C5 ; Expands_On_NFD # Lo KATAKANA LETTER DU +30C7 ; Expands_On_NFD # Lo KATAKANA LETTER DE +30C9 ; Expands_On_NFD # Lo KATAKANA LETTER DO +30D0..30D1 ; Expands_On_NFD # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA +30D3..30D4 ; Expands_On_NFD # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI +30D6..30D7 ; Expands_On_NFD # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU +30D9..30DA ; Expands_On_NFD # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE +30DC..30DD ; Expands_On_NFD # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO +30F4 ; Expands_On_NFD # Lo KATAKANA LETTER VU +30F7..30FA ; Expands_On_NFD # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO +30FE ; Expands_On_NFD # Lm KATAKANA VOICED ITERATION MARK +AC00..D7A3 ; Expands_On_NFD # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH +FB1D ; Expands_On_NFD # Lo HEBREW LETTER YOD WITH HIRIQ +FB1F ; Expands_On_NFD # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH +FB2A..FB36 ; Expands_On_NFD # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH +FB38..FB3C ; Expands_On_NFD # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH +FB3E ; Expands_On_NFD # Lo HEBREW LETTER MEM WITH DAGESH +FB40..FB41 ; Expands_On_NFD # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH +FB43..FB44 ; Expands_On_NFD # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH +FB46..FB4E ; Expands_On_NFD # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE +1D15E..1D164 ; Expands_On_NFD # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE +1D1BB..1D1C0 ; Expands_On_NFD # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK + +# Total code points: 12203 + +# ================================================ + +# Derived Property: Expands_On_NFC +# Generated according to UAX #15. +# Characters whose normalized length is not one. +# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact. +# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters! + +0344 ; Expands_On_NFC # Mn COMBINING GREEK DIALYTIKA TONOS +0958..095F ; Expands_On_NFC # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA +09DC..09DD ; Expands_On_NFC # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA +09DF ; Expands_On_NFC # Lo BENGALI LETTER YYA +0A33 ; Expands_On_NFC # Lo GURMUKHI LETTER LLA +0A36 ; Expands_On_NFC # Lo GURMUKHI LETTER SHA +0A59..0A5B ; Expands_On_NFC # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA +0A5E ; Expands_On_NFC # Lo GURMUKHI LETTER FA +0B5C..0B5D ; Expands_On_NFC # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA +0F43 ; Expands_On_NFC # Lo TIBETAN LETTER GHA +0F4D ; Expands_On_NFC # Lo TIBETAN LETTER DDHA +0F52 ; Expands_On_NFC # Lo TIBETAN LETTER DHA +0F57 ; Expands_On_NFC # Lo TIBETAN LETTER BHA +0F5C ; Expands_On_NFC # Lo TIBETAN LETTER DZHA +0F69 ; Expands_On_NFC # Lo TIBETAN LETTER KSSA +0F73 ; Expands_On_NFC # Mn TIBETAN VOWEL SIGN II +0F75..0F76 ; Expands_On_NFC # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R +0F78 ; Expands_On_NFC # Mn TIBETAN VOWEL SIGN VOCALIC L +0F81 ; Expands_On_NFC # Mn TIBETAN VOWEL SIGN REVERSED II +0F93 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER GHA +0F9D ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER DDHA +0FA2 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER DHA +0FA7 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER BHA +0FAC ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER DZHA +0FB9 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER KSSA +2ADC ; Expands_On_NFC # Sm FORKING +FB1D ; Expands_On_NFC # Lo HEBREW LETTER YOD WITH HIRIQ +FB1F ; Expands_On_NFC # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH +FB2A..FB36 ; Expands_On_NFC # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH +FB38..FB3C ; Expands_On_NFC # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH +FB3E ; Expands_On_NFC # Lo HEBREW LETTER MEM WITH DAGESH +FB40..FB41 ; Expands_On_NFC # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH +FB43..FB44 ; Expands_On_NFC # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH +FB46..FB4E ; Expands_On_NFC # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE +1D15E..1D164 ; Expands_On_NFC # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE +1D1BB..1D1C0 ; Expands_On_NFC # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK + +# Total code points: 85 + +# ================================================ + +# Derived Property: Expands_On_NFKD +# Generated according to UAX #15. +# Characters whose normalized length is not one. +# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact. +# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters! + +00A8 ; Expands_On_NFKD # Sk DIAERESIS +00AF ; Expands_On_NFKD # Sk MACRON +00B4 ; Expands_On_NFKD # Sk ACUTE ACCENT +00B8 ; Expands_On_NFKD # Sk CEDILLA +00BC..00BE ; Expands_On_NFKD # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS +00C0..00C5 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE +00C7..00CF ; Expands_On_NFKD # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS +00D1..00D6 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS +00D9..00DD ; Expands_On_NFKD # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE +00E0..00E5 ; Expands_On_NFKD # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE +00E7..00EF ; Expands_On_NFKD # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS +00F1..00F6 ; Expands_On_NFKD # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS +00F9..00FD ; Expands_On_NFKD # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE +00FF..010F ; Expands_On_NFKD # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON +0112..0125 ; Expands_On_NFKD # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX +0128..0130 ; Expands_On_NFKD # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE +0132..0137 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LETTER K WITH CEDILLA +0139..0140 ; Expands_On_NFKD # L& [8] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH MIDDLE DOT +0143..0149 ; Expands_On_NFKD # L& [7] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE +014C..0151 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE +0154..0165 ; Expands_On_NFKD # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON +0168..017E ; Expands_On_NFKD # L& [23] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER Z WITH CARON +01A0..01A1 ; Expands_On_NFKD # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN +01AF..01B0 ; Expands_On_NFKD # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN +01C4..01DC ; Expands_On_NFKD # L& [25] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DE..01E3 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON +01E6..01F5 ; Expands_On_NFKD # L& [16] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER G WITH ACUTE +01F8..021B ; Expands_On_NFKD # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW +021E..021F ; Expands_On_NFKD # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON +0226..0233 ; Expands_On_NFKD # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON +02D8..02DD ; Expands_On_NFKD # Sk [6] BREVE..DOUBLE ACUTE ACCENT +0344 ; Expands_On_NFKD # Mn COMBINING GREEK DIALYTIKA TONOS +037A ; Expands_On_NFKD # Lm GREEK YPOGEGRAMMENI +0384..0385 ; Expands_On_NFKD # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS +0386 ; Expands_On_NFKD # L& GREEK CAPITAL LETTER ALPHA WITH TONOS +0388..038A ; Expands_On_NFKD # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS +038C ; Expands_On_NFKD # L& GREEK CAPITAL LETTER OMICRON WITH TONOS +038E..0390 ; Expands_On_NFKD # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +03AA..03B0 ; Expands_On_NFKD # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +03CA..03CE ; Expands_On_NFKD # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS +03D3..03D4 ; Expands_On_NFKD # L& [2] GREEK UPSILON WITH ACUTE AND HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL +0400..0401 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO +0403 ; Expands_On_NFKD # L& CYRILLIC CAPITAL LETTER GJE +0407 ; Expands_On_NFKD # L& CYRILLIC CAPITAL LETTER YI +040C..040E ; Expands_On_NFKD # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U +0419 ; Expands_On_NFKD # L& CYRILLIC CAPITAL LETTER SHORT I +0439 ; Expands_On_NFKD # L& CYRILLIC SMALL LETTER SHORT I +0450..0451 ; Expands_On_NFKD # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO +0453 ; Expands_On_NFKD # L& CYRILLIC SMALL LETTER GJE +0457 ; Expands_On_NFKD # L& CYRILLIC SMALL LETTER YI +045C..045E ; Expands_On_NFKD # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U +0476..0477 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +04C1..04C2 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE +04D0..04D3 ; Expands_On_NFKD # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS +04D6..04D7 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE +04DA..04DF ; Expands_On_NFKD # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS +04E2..04E7 ; Expands_On_NFKD # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS +04EA..04F5 ; Expands_On_NFKD # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS +04F8..04F9 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS +0587 ; Expands_On_NFKD # L& ARMENIAN SMALL LIGATURE ECH YIWN +0622..0626 ; Expands_On_NFKD # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE +0675..0678 ; Expands_On_NFKD # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH +06C0 ; Expands_On_NFKD # Lo ARABIC LETTER HEH WITH YEH ABOVE +06C2 ; Expands_On_NFKD # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE +06D3 ; Expands_On_NFKD # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE +0929 ; Expands_On_NFKD # Lo DEVANAGARI LETTER NNNA +0931 ; Expands_On_NFKD # Lo DEVANAGARI LETTER RRA +0934 ; Expands_On_NFKD # Lo DEVANAGARI LETTER LLLA +0958..095F ; Expands_On_NFKD # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA +09CB..09CC ; Expands_On_NFKD # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU +09DC..09DD ; Expands_On_NFKD # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA +09DF ; Expands_On_NFKD # Lo BENGALI LETTER YYA +0A33 ; Expands_On_NFKD # Lo GURMUKHI LETTER LLA +0A36 ; Expands_On_NFKD # Lo GURMUKHI LETTER SHA +0A59..0A5B ; Expands_On_NFKD # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA +0A5E ; Expands_On_NFKD # Lo GURMUKHI LETTER FA +0B48 ; Expands_On_NFKD # Mc ORIYA VOWEL SIGN AI +0B4B..0B4C ; Expands_On_NFKD # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU +0B5C..0B5D ; Expands_On_NFKD # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA +0B94 ; Expands_On_NFKD # Lo TAMIL LETTER AU +0BCA..0BCC ; Expands_On_NFKD # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU +0C48 ; Expands_On_NFKD # Mn TELUGU VOWEL SIGN AI +0CC0 ; Expands_On_NFKD # Mc KANNADA VOWEL SIGN II +0CC7..0CC8 ; Expands_On_NFKD # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI +0CCA..0CCB ; Expands_On_NFKD # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO +0D4A..0D4C ; Expands_On_NFKD # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU +0DDA ; Expands_On_NFKD # Mc SINHALA VOWEL SIGN DIGA KOMBUVA +0DDC..0DDE ; Expands_On_NFKD # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA +0E33 ; Expands_On_NFKD # Lo THAI CHARACTER SARA AM +0EB3 ; Expands_On_NFKD # Lo LAO VOWEL SIGN AM +0EDC..0EDD ; Expands_On_NFKD # Lo [2] LAO HO NO..LAO HO MO +0F43 ; Expands_On_NFKD # Lo TIBETAN LETTER GHA +0F4D ; Expands_On_NFKD # Lo TIBETAN LETTER DDHA +0F52 ; Expands_On_NFKD # Lo TIBETAN LETTER DHA +0F57 ; Expands_On_NFKD # Lo TIBETAN LETTER BHA +0F5C ; Expands_On_NFKD # Lo TIBETAN LETTER DZHA +0F69 ; Expands_On_NFKD # Lo TIBETAN LETTER KSSA +0F73 ; Expands_On_NFKD # Mn TIBETAN VOWEL SIGN II +0F75..0F79 ; Expands_On_NFKD # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL +0F81 ; Expands_On_NFKD # Mn TIBETAN VOWEL SIGN REVERSED II +0F93 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER GHA +0F9D ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER DDHA +0FA2 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER DHA +0FA7 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER BHA +0FAC ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER DZHA +0FB9 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER KSSA +1026 ; Expands_On_NFKD # Lo MYANMAR LETTER UU +1B06 ; Expands_On_NFKD # Lo BALINESE LETTER AKARA TEDUNG +1B08 ; Expands_On_NFKD # Lo BALINESE LETTER IKARA TEDUNG +1B0A ; Expands_On_NFKD # Lo BALINESE LETTER UKARA TEDUNG +1B0C ; Expands_On_NFKD # Lo BALINESE LETTER RA REPA TEDUNG +1B0E ; Expands_On_NFKD # Lo BALINESE LETTER LA LENGA TEDUNG +1B12 ; Expands_On_NFKD # Lo BALINESE LETTER OKARA TEDUNG +1B3B ; Expands_On_NFKD # Mc BALINESE VOWEL SIGN RA REPA TEDUNG +1B3D ; Expands_On_NFKD # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG +1B40..1B41 ; Expands_On_NFKD # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG +1B43 ; Expands_On_NFKD # Mc BALINESE VOWEL SIGN PEPET TEDUNG +1E00..1E9B ; Expands_On_NFKD # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE +1EA0..1EF9 ; Expands_On_NFKD # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE +1F00..1F15 ; Expands_On_NFKD # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +1F18..1F1D ; Expands_On_NFKD # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +1F20..1F45 ; Expands_On_NFKD # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +1F48..1F4D ; Expands_On_NFKD # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +1F50..1F57 ; Expands_On_NFKD # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI +1F59 ; Expands_On_NFKD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA +1F5B ; Expands_On_NFKD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +1F5D ; Expands_On_NFKD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +1F5F..1F7D ; Expands_On_NFKD # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA +1F80..1FB4 ; Expands_On_NFKD # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +1FB6..1FBC ; Expands_On_NFKD # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI +1FBD ; Expands_On_NFKD # Sk GREEK KORONIS +1FBF..1FC1 ; Expands_On_NFKD # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI +1FC2..1FC4 ; Expands_On_NFKD # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +1FC6..1FCC ; Expands_On_NFKD # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI +1FCD..1FCF ; Expands_On_NFKD # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI +1FD0..1FD3 ; Expands_On_NFKD # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FD6..1FDB ; Expands_On_NFKD # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA +1FDD..1FDF ; Expands_On_NFKD # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI +1FE0..1FEC ; Expands_On_NFKD # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA +1FED..1FEE ; Expands_On_NFKD # Sk [2] GREEK DIALYTIKA AND VARIA..GREEK DIALYTIKA AND OXIA +1FF2..1FF4 ; Expands_On_NFKD # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +1FF6..1FFC ; Expands_On_NFKD # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +1FFD..1FFE ; Expands_On_NFKD # Sk [2] GREEK OXIA..GREEK DASIA +2017 ; Expands_On_NFKD # Po DOUBLE LOW LINE +2025..2026 ; Expands_On_NFKD # Po [2] TWO DOT LEADER..HORIZONTAL ELLIPSIS +2033..2034 ; Expands_On_NFKD # Po [2] DOUBLE PRIME..TRIPLE PRIME +2036..2037 ; Expands_On_NFKD # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME +203C ; Expands_On_NFKD # Po DOUBLE EXCLAMATION MARK +203E ; Expands_On_NFKD # Po OVERLINE +2047..2049 ; Expands_On_NFKD # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK +2057 ; Expands_On_NFKD # Po QUADRUPLE PRIME +20A8 ; Expands_On_NFKD # Sc RUPEE SIGN +2100..2101 ; Expands_On_NFKD # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT +2103 ; Expands_On_NFKD # So DEGREE CELSIUS +2105..2106 ; Expands_On_NFKD # So [2] CARE OF..CADA UNA +2109 ; Expands_On_NFKD # So DEGREE FAHRENHEIT +2116 ; Expands_On_NFKD # So NUMERO SIGN +2120..2122 ; Expands_On_NFKD # So [3] SERVICE MARK..TRADE MARK SIGN +212B ; Expands_On_NFKD # L& ANGSTROM SIGN +213B ; Expands_On_NFKD # So FACSIMILE SIGN +2153..215F ; Expands_On_NFKD # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE +2161..2163 ; Expands_On_NFKD # Nl [3] ROMAN NUMERAL TWO..ROMAN NUMERAL FOUR +2165..2168 ; Expands_On_NFKD # Nl [4] ROMAN NUMERAL SIX..ROMAN NUMERAL NINE +216A..216B ; Expands_On_NFKD # Nl [2] ROMAN NUMERAL ELEVEN..ROMAN NUMERAL TWELVE +2171..2173 ; Expands_On_NFKD # Nl [3] SMALL ROMAN NUMERAL TWO..SMALL ROMAN NUMERAL FOUR +2175..2178 ; Expands_On_NFKD # Nl [4] SMALL ROMAN NUMERAL SIX..SMALL ROMAN NUMERAL NINE +217A..217B ; Expands_On_NFKD # Nl [2] SMALL ROMAN NUMERAL ELEVEN..SMALL ROMAN NUMERAL TWELVE +219A..219B ; Expands_On_NFKD # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE +21AE ; Expands_On_NFKD # Sm LEFT RIGHT ARROW WITH STROKE +21CD ; Expands_On_NFKD # So LEFTWARDS DOUBLE ARROW WITH STROKE +21CE..21CF ; Expands_On_NFKD # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE +2204 ; Expands_On_NFKD # Sm THERE DOES NOT EXIST +2209 ; Expands_On_NFKD # Sm NOT AN ELEMENT OF +220C ; Expands_On_NFKD # Sm DOES NOT CONTAIN AS MEMBER +2224 ; Expands_On_NFKD # Sm DOES NOT DIVIDE +2226 ; Expands_On_NFKD # Sm NOT PARALLEL TO +222C..222D ; Expands_On_NFKD # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL +222F..2230 ; Expands_On_NFKD # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL +2241 ; Expands_On_NFKD # Sm NOT TILDE +2244 ; Expands_On_NFKD # Sm NOT ASYMPTOTICALLY EQUAL TO +2247 ; Expands_On_NFKD # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO +2249 ; Expands_On_NFKD # Sm NOT ALMOST EQUAL TO +2260 ; Expands_On_NFKD # Sm NOT EQUAL TO +2262 ; Expands_On_NFKD # Sm NOT IDENTICAL TO +226D..2271 ; Expands_On_NFKD # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO +2274..2275 ; Expands_On_NFKD # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO +2278..2279 ; Expands_On_NFKD # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN +2280..2281 ; Expands_On_NFKD # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED +2284..2285 ; Expands_On_NFKD # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF +2288..2289 ; Expands_On_NFKD # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO +22AC..22AF ; Expands_On_NFKD # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +22E0..22E3 ; Expands_On_NFKD # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO +22EA..22ED ; Expands_On_NFKD # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL +2469..249B ; Expands_On_NFKD # No [51] CIRCLED NUMBER TEN..NUMBER TWENTY FULL STOP +249C..24B5 ; Expands_On_NFKD # So [26] PARENTHESIZED LATIN SMALL LETTER A..PARENTHESIZED LATIN SMALL LETTER Z +2A0C ; Expands_On_NFKD # Sm QUADRUPLE INTEGRAL OPERATOR +2A74..2A76 ; Expands_On_NFKD # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS +2ADC ; Expands_On_NFKD # Sm FORKING +304C ; Expands_On_NFKD # Lo HIRAGANA LETTER GA +304E ; Expands_On_NFKD # Lo HIRAGANA LETTER GI +3050 ; Expands_On_NFKD # Lo HIRAGANA LETTER GU +3052 ; Expands_On_NFKD # Lo HIRAGANA LETTER GE +3054 ; Expands_On_NFKD # Lo HIRAGANA LETTER GO +3056 ; Expands_On_NFKD # Lo HIRAGANA LETTER ZA +3058 ; Expands_On_NFKD # Lo HIRAGANA LETTER ZI +305A ; Expands_On_NFKD # Lo HIRAGANA LETTER ZU +305C ; Expands_On_NFKD # Lo HIRAGANA LETTER ZE +305E ; Expands_On_NFKD # Lo HIRAGANA LETTER ZO +3060 ; Expands_On_NFKD # Lo HIRAGANA LETTER DA +3062 ; Expands_On_NFKD # Lo HIRAGANA LETTER DI +3065 ; Expands_On_NFKD # Lo HIRAGANA LETTER DU +3067 ; Expands_On_NFKD # Lo HIRAGANA LETTER DE +3069 ; Expands_On_NFKD # Lo HIRAGANA LETTER DO +3070..3071 ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA +3073..3074 ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI +3076..3077 ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU +3079..307A ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE +307C..307D ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO +3094 ; Expands_On_NFKD # Lo HIRAGANA LETTER VU +309B..309C ; Expands_On_NFKD # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +309E ; Expands_On_NFKD # Lm HIRAGANA VOICED ITERATION MARK +309F ; Expands_On_NFKD # Lo HIRAGANA DIGRAPH YORI +30AC ; Expands_On_NFKD # Lo KATAKANA LETTER GA +30AE ; Expands_On_NFKD # Lo KATAKANA LETTER GI +30B0 ; Expands_On_NFKD # Lo KATAKANA LETTER GU +30B2 ; Expands_On_NFKD # Lo KATAKANA LETTER GE +30B4 ; Expands_On_NFKD # Lo KATAKANA LETTER GO +30B6 ; Expands_On_NFKD # Lo KATAKANA LETTER ZA +30B8 ; Expands_On_NFKD # Lo KATAKANA LETTER ZI +30BA ; Expands_On_NFKD # Lo KATAKANA LETTER ZU +30BC ; Expands_On_NFKD # Lo KATAKANA LETTER ZE +30BE ; Expands_On_NFKD # Lo KATAKANA LETTER ZO +30C0 ; Expands_On_NFKD # Lo KATAKANA LETTER DA +30C2 ; Expands_On_NFKD # Lo KATAKANA LETTER DI +30C5 ; Expands_On_NFKD # Lo KATAKANA LETTER DU +30C7 ; Expands_On_NFKD # Lo KATAKANA LETTER DE +30C9 ; Expands_On_NFKD # Lo KATAKANA LETTER DO +30D0..30D1 ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA +30D3..30D4 ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI +30D6..30D7 ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU +30D9..30DA ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE +30DC..30DD ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO +30F4 ; Expands_On_NFKD # Lo KATAKANA LETTER VU +30F7..30FA ; Expands_On_NFKD # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO +30FE ; Expands_On_NFKD # Lm KATAKANA VOICED ITERATION MARK +30FF ; Expands_On_NFKD # Lo KATAKANA DIGRAPH KOTO +3200..321E ; Expands_On_NFKD # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU +3220..3229 ; Expands_On_NFKD # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN +322A..3243 ; Expands_On_NFKD # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH +3250 ; Expands_On_NFKD # So PARTNERSHIP SIGN +3251..325F ; Expands_On_NFKD # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE +326E..327E ; Expands_On_NFKD # So [17] CIRCLED HANGUL KIYEOK A..CIRCLED HANGUL IEUNG U +32B1..32BF ; Expands_On_NFKD # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY +32C0..32CF ; Expands_On_NFKD # So [16] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..LIMITED LIABILITY SIGN +3300..33FF ; Expands_On_NFKD # So [256] SQUARE APAATO..SQUARE GAL +AC00..D7A3 ; Expands_On_NFKD # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH +FB00..FB06 ; Expands_On_NFKD # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST +FB13..FB17 ; Expands_On_NFKD # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH +FB1D ; Expands_On_NFKD # Lo HEBREW LETTER YOD WITH HIRIQ +FB1F ; Expands_On_NFKD # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH +FB2A..FB36 ; Expands_On_NFKD # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH +FB38..FB3C ; Expands_On_NFKD # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH +FB3E ; Expands_On_NFKD # Lo HEBREW LETTER MEM WITH DAGESH +FB40..FB41 ; Expands_On_NFKD # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH +FB43..FB44 ; Expands_On_NFKD # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH +FB46..FB4F ; Expands_On_NFKD # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED +FBA4..FBA5 ; Expands_On_NFKD # Lo [2] ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM..ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM +FBB0..FBB1 ; Expands_On_NFKD # Lo [2] ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM +FBDD ; Expands_On_NFKD # Lo ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM +FBEA..FBFB ; Expands_On_NFKD # Lo [18] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM..ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM +FC00..FD3D ; Expands_On_NFKD # Lo [318] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM +FD50..FD8F ; Expands_On_NFKD # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM +FD92..FDC7 ; Expands_On_NFKD # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM +FDF0..FDFB ; Expands_On_NFKD # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU +FDFC ; Expands_On_NFKD # Sc RIAL SIGN +FE19 ; Expands_On_NFKD # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS +FE30 ; Expands_On_NFKD # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER +FE49..FE4C ; Expands_On_NFKD # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE +FE70..FE72 ; Expands_On_NFKD # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM +FE74 ; Expands_On_NFKD # Lo ARABIC KASRATAN ISOLATED FORM +FE76..FE7F ; Expands_On_NFKD # Lo [10] ARABIC FATHA ISOLATED FORM..ARABIC SUKUN MEDIAL FORM +FE81..FE8C ; Expands_On_NFKD # Lo [12] ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM +FEF5..FEFC ; Expands_On_NFKD # Lo [8] ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM +FFE3 ; Expands_On_NFKD # Sk FULLWIDTH MACRON +1D15E..1D164 ; Expands_On_NFKD # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE +1D1BB..1D1C0 ; Expands_On_NFKD # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK + +# Total code points: 13310 + +# ================================================ + +# Derived Property: Expands_On_NFKC +# Generated according to UAX #15. +# Characters whose normalized length is not one. +# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact. +# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters! + +00A8 ; Expands_On_NFKC # Sk DIAERESIS +00AF ; Expands_On_NFKC # Sk MACRON +00B4 ; Expands_On_NFKC # Sk ACUTE ACCENT +00B8 ; Expands_On_NFKC # Sk CEDILLA +00BC..00BE ; Expands_On_NFKC # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS +0132..0133 ; Expands_On_NFKC # L& [2] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LIGATURE IJ +013F..0140 ; Expands_On_NFKC # L& [2] LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH MIDDLE DOT +0149 ; Expands_On_NFKC # L& LATIN SMALL LETTER N PRECEDED BY APOSTROPHE +01C4..01CC ; Expands_On_NFKC # L& [9] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER NJ +01F1..01F3 ; Expands_On_NFKC # L& [3] LATIN CAPITAL LETTER DZ..LATIN SMALL LETTER DZ +02D8..02DD ; Expands_On_NFKC # Sk [6] BREVE..DOUBLE ACUTE ACCENT +0344 ; Expands_On_NFKC # Mn COMBINING GREEK DIALYTIKA TONOS +037A ; Expands_On_NFKC # Lm GREEK YPOGEGRAMMENI +0384..0385 ; Expands_On_NFKC # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS +0587 ; Expands_On_NFKC # L& ARMENIAN SMALL LIGATURE ECH YIWN +0675..0678 ; Expands_On_NFKC # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH +0958..095F ; Expands_On_NFKC # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA +09DC..09DD ; Expands_On_NFKC # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA +09DF ; Expands_On_NFKC # Lo BENGALI LETTER YYA +0A33 ; Expands_On_NFKC # Lo GURMUKHI LETTER LLA +0A36 ; Expands_On_NFKC # Lo GURMUKHI LETTER SHA +0A59..0A5B ; Expands_On_NFKC # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA +0A5E ; Expands_On_NFKC # Lo GURMUKHI LETTER FA +0B5C..0B5D ; Expands_On_NFKC # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA +0E33 ; Expands_On_NFKC # Lo THAI CHARACTER SARA AM +0EB3 ; Expands_On_NFKC # Lo LAO VOWEL SIGN AM +0EDC..0EDD ; Expands_On_NFKC # Lo [2] LAO HO NO..LAO HO MO +0F43 ; Expands_On_NFKC # Lo TIBETAN LETTER GHA +0F4D ; Expands_On_NFKC # Lo TIBETAN LETTER DDHA +0F52 ; Expands_On_NFKC # Lo TIBETAN LETTER DHA +0F57 ; Expands_On_NFKC # Lo TIBETAN LETTER BHA +0F5C ; Expands_On_NFKC # Lo TIBETAN LETTER DZHA +0F69 ; Expands_On_NFKC # Lo TIBETAN LETTER KSSA +0F73 ; Expands_On_NFKC # Mn TIBETAN VOWEL SIGN II +0F75..0F79 ; Expands_On_NFKC # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL +0F81 ; Expands_On_NFKC # Mn TIBETAN VOWEL SIGN REVERSED II +0F93 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER GHA +0F9D ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER DDHA +0FA2 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER DHA +0FA7 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER BHA +0FAC ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER DZHA +0FB9 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER KSSA +1E9A ; Expands_On_NFKC # L& LATIN SMALL LETTER A WITH RIGHT HALF RING +1FBD ; Expands_On_NFKC # Sk GREEK KORONIS +1FBF..1FC1 ; Expands_On_NFKC # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI +1FCD..1FCF ; Expands_On_NFKC # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI +1FDD..1FDF ; Expands_On_NFKC # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI +1FED..1FEE ; Expands_On_NFKC # Sk [2] GREEK DIALYTIKA AND VARIA..GREEK DIALYTIKA AND OXIA +1FFD..1FFE ; Expands_On_NFKC # Sk [2] GREEK OXIA..GREEK DASIA +2017 ; Expands_On_NFKC # Po DOUBLE LOW LINE +2025..2026 ; Expands_On_NFKC # Po [2] TWO DOT LEADER..HORIZONTAL ELLIPSIS +2033..2034 ; Expands_On_NFKC # Po [2] DOUBLE PRIME..TRIPLE PRIME +2036..2037 ; Expands_On_NFKC # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME +203C ; Expands_On_NFKC # Po DOUBLE EXCLAMATION MARK +203E ; Expands_On_NFKC # Po OVERLINE +2047..2049 ; Expands_On_NFKC # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK +2057 ; Expands_On_NFKC # Po QUADRUPLE PRIME +20A8 ; Expands_On_NFKC # Sc RUPEE SIGN +2100..2101 ; Expands_On_NFKC # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT +2103 ; Expands_On_NFKC # So DEGREE CELSIUS +2105..2106 ; Expands_On_NFKC # So [2] CARE OF..CADA UNA +2109 ; Expands_On_NFKC # So DEGREE FAHRENHEIT +2116 ; Expands_On_NFKC # So NUMERO SIGN +2120..2122 ; Expands_On_NFKC # So [3] SERVICE MARK..TRADE MARK SIGN +213B ; Expands_On_NFKC # So FACSIMILE SIGN +2153..215F ; Expands_On_NFKC # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE +2161..2163 ; Expands_On_NFKC # Nl [3] ROMAN NUMERAL TWO..ROMAN NUMERAL FOUR +2165..2168 ; Expands_On_NFKC # Nl [4] ROMAN NUMERAL SIX..ROMAN NUMERAL NINE +216A..216B ; Expands_On_NFKC # Nl [2] ROMAN NUMERAL ELEVEN..ROMAN NUMERAL TWELVE +2171..2173 ; Expands_On_NFKC # Nl [3] SMALL ROMAN NUMERAL TWO..SMALL ROMAN NUMERAL FOUR +2175..2178 ; Expands_On_NFKC # Nl [4] SMALL ROMAN NUMERAL SIX..SMALL ROMAN NUMERAL NINE +217A..217B ; Expands_On_NFKC # Nl [2] SMALL ROMAN NUMERAL ELEVEN..SMALL ROMAN NUMERAL TWELVE +222C..222D ; Expands_On_NFKC # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL +222F..2230 ; Expands_On_NFKC # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL +2469..249B ; Expands_On_NFKC # No [51] CIRCLED NUMBER TEN..NUMBER TWENTY FULL STOP +249C..24B5 ; Expands_On_NFKC # So [26] PARENTHESIZED LATIN SMALL LETTER A..PARENTHESIZED LATIN SMALL LETTER Z +2A0C ; Expands_On_NFKC # Sm QUADRUPLE INTEGRAL OPERATOR +2A74..2A76 ; Expands_On_NFKC # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS +2ADC ; Expands_On_NFKC # Sm FORKING +309B..309C ; Expands_On_NFKC # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +309F ; Expands_On_NFKC # Lo HIRAGANA DIGRAPH YORI +30FF ; Expands_On_NFKC # Lo KATAKANA DIGRAPH KOTO +3200..321E ; Expands_On_NFKC # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU +3220..3229 ; Expands_On_NFKC # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN +322A..3243 ; Expands_On_NFKC # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH +3250 ; Expands_On_NFKC # So PARTNERSHIP SIGN +3251..325F ; Expands_On_NFKC # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE +327C..327D ; Expands_On_NFKC # So [2] CIRCLED KOREAN CHARACTER CHAMKO..CIRCLED KOREAN CHARACTER JUEUI +32B1..32BF ; Expands_On_NFKC # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY +32C0..32CF ; Expands_On_NFKC # So [16] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..LIMITED LIABILITY SIGN +3300..33FF ; Expands_On_NFKC # So [256] SQUARE APAATO..SQUARE GAL +FB00..FB06 ; Expands_On_NFKC # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST +FB13..FB17 ; Expands_On_NFKC # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH +FB1D ; Expands_On_NFKC # Lo HEBREW LETTER YOD WITH HIRIQ +FB1F ; Expands_On_NFKC # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH +FB2A..FB36 ; Expands_On_NFKC # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH +FB38..FB3C ; Expands_On_NFKC # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH +FB3E ; Expands_On_NFKC # Lo HEBREW LETTER MEM WITH DAGESH +FB40..FB41 ; Expands_On_NFKC # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH +FB43..FB44 ; Expands_On_NFKC # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH +FB46..FB4F ; Expands_On_NFKC # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED +FBDD ; Expands_On_NFKC # Lo ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM +FBEA..FBFB ; Expands_On_NFKC # Lo [18] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM..ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM +FC00..FD3D ; Expands_On_NFKC # Lo [318] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM +FD50..FD8F ; Expands_On_NFKC # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM +FD92..FDC7 ; Expands_On_NFKC # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM +FDF0..FDFB ; Expands_On_NFKC # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU +FDFC ; Expands_On_NFKC # Sc RIAL SIGN +FE19 ; Expands_On_NFKC # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS +FE30 ; Expands_On_NFKC # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER +FE49..FE4C ; Expands_On_NFKC # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE +FE70..FE72 ; Expands_On_NFKC # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM +FE74 ; Expands_On_NFKC # Lo ARABIC KASRATAN ISOLATED FORM +FE76..FE7F ; Expands_On_NFKC # Lo [10] ARABIC FATHA ISOLATED FORM..ARABIC SUKUN MEDIAL FORM +FEF5..FEFC ; Expands_On_NFKC # Lo [8] ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM +FFE3 ; Expands_On_NFKC # Sk FULLWIDTH MACRON +1D15E..1D164 ; Expands_On_NFKC # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE +1D1BB..1D1C0 ; Expands_On_NFKC # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK + +# Total code points: 1171 + +# EOF diff --git a/i18n/NameAliases.txt b/i18n/NameAliases.txt new file mode 100644 index 000000000..2588b795c --- /dev/null +++ b/i18n/NameAliases.txt @@ -0,0 +1,40 @@ +# NameAliases-5.1.0.txt +# Date: 2008-02-11, 11:36:00 PST [KW] +# +# This file is a normative contributory data file in the +# Unicode Character Database. +# +# Copyright (c) 2005-2008 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# +# This file defines the formal name aliases for Unicode characters. +# +# For informative aliases see NamesList.txt +# +# For documentation, see UCD.html and NamesList.html +# +# FORMAT +# +# Each line has two fields +# First field: Code point +# Second field: Alias +# +# In case multiple aliases are assigned, additional aliases +# would be provided on separate lines +# +#----------------------------------------------------------------- +01A2;LATIN CAPITAL LETTER GHA +01A3;LATIN SMALL LETTER GHA +0CDE;KANNADA LETTER LLLA +0E9D;LAO LETTER FO FON +0E9F;LAO LETTER FO FAY +0EA3;LAO LETTER RO +0EA5;LAO LETTER LO +0FD0;TIBETAN MARK BKA- SHOG GI MGO RGYAN +A015;YI SYLLABLE ITERATION MARK +FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET +1D0C5;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS + +# Total code points: 11 + +# EOF diff --git a/i18n/NormalizationCorrections.txt b/i18n/NormalizationCorrections.txt new file mode 100644 index 000000000..8b449af48 --- /dev/null +++ b/i18n/NormalizationCorrections.txt @@ -0,0 +1,48 @@ +# NormalizationCorrections-5.1.0.txt +# Date: 2008-03-20, 17:44:00 PDT [KW] +# +# This file is a normative contributory data file in the +# Unicode Character Database. +# +# Copyright (c) 1991-2008 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# +# The normalization stabilization policy of the Unicode +# Consortium ordinarily precludes any change to the decomposition +# for any character, once established in a relevant version +# of the UnicodeData.txt data file. However, under certain +# exceptional (and rare) conditions, an error in a decomposition +# mapping may be discovered that is truly just an unintended +# typo in the data, and not a matter of dubious interpretation. +# +# Whenever such an error may be found, and if it meets the +# requirements for possible exceptions to normalization +# stability, the correction is entered in this data file, +# so that any implementation depending on absolute stability +# of normalization, *including* any errors in the data, can +# safely reconstruct the exact state of the data tables at +# any given version of Unicode. +# +# Currently this list has exactly six entries in it, one for the +# typo found and corrected in Corrigendum #3, and five for +# the typos and misidentifications found and corrected in +# Corrigendum #4. All efforts +# will be made to keep the entries limited to just those fixes. +# +# Interpretation of the fields: +# Field 0: Unicode code point +# Field 1: Original (erroneous) decomposition +# Field 2: Corrected decomposition +# Field 3: Version of Unicode for which the correction was +# entered into UnicodeData.txt, in n.n.n format. +# Comment: Indicates the Unicode Corrigendum which documents +# the correction +# +# For more information, see UAX #15, Unicode Normalization Forms. +# +F951;96FB;964B;3.2.0 # Corrigendum 3 +2F868;2136A;36FC;4.0.0 # Corrigendum 4 +2F874;5F33;5F53;4.0.0 # Corrigendum 4 +2F91F;43AB;243AB;4.0.0 # Corrigendum 4 +2F95F;7AAE;7AEE;4.0.0 # Corrigendum 4 +2F9BF;4D57;45D7;4.0.0 # Corrigendum 4 diff --git a/i18n/SpecialCasing.txt b/i18n/SpecialCasing.txt new file mode 100644 index 000000000..92e70a4a3 --- /dev/null +++ b/i18n/SpecialCasing.txt @@ -0,0 +1,274 @@ +# SpecialCasing-5.1.0.txt +# Date: 2008-03-03, 21:58:10 GMT [MD] +# +# Unicode Character Database +# Copyright (c) 1991-2008 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# For documentation, see UCD.html +# +# 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 independent of context and language. +# For more information, see the discussion of Case Mappings in the Unicode Standard. +# +# All code points not listed in this file that do not have a simple case mappings +# in UnicodeData.txt map to themselves. +# ================================================================================ +# 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 language IDs +# 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. +# The condition list is not represented in the UCD as a formal property. +# +# A language ID is defined by BCP 47, with '-' and '_' treated equivalently. +# +# A context for a character C is defined by Section 3.13 Default Case +# Operations, of The Unicode Standard, Version 5.0. +# (This is identical to the context defined by Unicode 4.1.0, +# as specified in http://www.unicode.org/versions/Unicode4.1.0/) +# +# Parsers of this file must be prepared to deal with future additions to this format: +# * Additional contexts +# * Additional fields +# ================================================================================ +# @missing 0000..10FFFF; <slc>; <stc>; <suc> +# ================================================================================ +# 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 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 +# The remainder of this file provides conditional casing data used to produce +# full case mappings. +# ================================================================================ +# Language-Insensitive Mappings +# These are characters whose full case mappings do not depend on language, but do +# depend on context (which characters come before or after). For more information +# see the header of this file and the Unicode Standard. +# ================================================================================ + +# 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 + +# ================================================================================ +# Language-Sensitive Mappings +# These are characters whose full case mappings depend on language and perhaps also +# context (which characters come before or after). For more information +# see the header of this file and the Unicode Standard. +# ================================================================================ + +# 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_I; # COMBINING DOT ABOVE +0307; ; 0307; 0307; az After_I; # 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 + +# EOF + diff --git a/i18n/UnicodeData.txt b/i18n/UnicodeData.txt new file mode 100644 index 000000000..77db788cf --- /dev/null +++ b/i18n/UnicodeData.txt @@ -0,0 +1,19336 @@ +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;ES;;;;;N;;;;; +002C;COMMA;Po;0;CS;;;;;N;;;;; +002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;; +002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;; +002F;SOLIDUS;Po;0;CS;;;;;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;Cf;0;BN;;;;;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;N;SUPERSCRIPT DIGIT TWO;;;; +00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;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;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;;0243;;0243 +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;;023D;;023D +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;01C5 +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;01C8 +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;01CB +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;01F2 +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; +0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;; +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 +0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;; +0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;; +0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;; +0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;; +0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;; +0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;; +023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;2C65; +023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C; +023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B +023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A; +023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;2C66; +023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;;; +0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;;; +0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0242; +0242;LATIN SMALL LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241 +0243;LATIN CAPITAL LETTER B WITH STROKE;Lu;0;L;;;;;N;;;;0180; +0244;LATIN CAPITAL LETTER U BAR;Lu;0;L;;;;;N;;;;0289; +0245;LATIN CAPITAL LETTER TURNED V;Lu;0;L;;;;;N;;;;028C; +0246;LATIN CAPITAL LETTER E WITH STROKE;Lu;0;L;;;;;N;;;;0247; +0247;LATIN SMALL LETTER E WITH STROKE;Ll;0;L;;;;;N;;;0246;;0246 +0248;LATIN CAPITAL LETTER J WITH STROKE;Lu;0;L;;;;;N;;;;0249; +0249;LATIN SMALL LETTER J WITH STROKE;Ll;0;L;;;;;N;;;0248;;0248 +024A;LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;Lu;0;L;;;;;N;;;;024B; +024B;LATIN SMALL LETTER Q WITH HOOK TAIL;Ll;0;L;;;;;N;;;024A;;024A +024C;LATIN CAPITAL LETTER R WITH STROKE;Lu;0;L;;;;;N;;;;024D; +024D;LATIN SMALL LETTER R WITH STROKE;Ll;0;L;;;;;N;;;024C;;024C +024E;LATIN CAPITAL LETTER Y WITH STROKE;Lu;0;L;;;;;N;;;;024F; +024F;LATIN SMALL LETTER Y WITH STROKE;Ll;0;L;;;;;N;;;024E;;024E +0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;2C6F;;2C6F +0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;2C6D;;2C6D +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;;;2C62;;2C62 +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;;2C6E;;2C6E +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;;2C64;;2C64 +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;;;0244;;0244 +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;;;0245;;0245 +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;Lo;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;;;;; +02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;; +02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;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;Lm;0;ON;;;;;N;;;;; +02BA;MODIFIER LETTER DOUBLE PRIME;Lm;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;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;; +02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;; +02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;; +02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;Mandarin Chinese first tone;;; +02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;; +02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;; +02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;; +02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;; +02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;; +02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;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;Lm;0;ON;;;;;N;;;;; +02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;; +02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;; +02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;; +02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; +02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; +02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;; +02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;; +02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;; +02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;; +02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;; +02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;; +02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;; +02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;; +02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;; +02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;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;;;;; +0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; +0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; +0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;; +0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;; +0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; +0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; +0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; +0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; +0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;; +0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;; +035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; +035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;; +035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;; +035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;; +035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;; +035F;COMBINING DOUBLE MACRON BELOW;Mn;233;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;;;;; +0370;GREEK CAPITAL LETTER HETA;Lu;0;L;;;;;N;;;;0371; +0371;GREEK SMALL LETTER HETA;Ll;0;L;;;;;N;;;0370;;0370 +0372;GREEK CAPITAL LETTER ARCHAIC SAMPI;Lu;0;L;;;;;N;;;;0373; +0373;GREEK SMALL LETTER ARCHAIC SAMPI;Ll;0;L;;;;;N;;;0372;;0372 +0374;GREEK NUMERAL SIGN;Lm;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;; +0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;; +0376;GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;Lu;0;L;;;;;N;;;;0377; +0377;GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;Ll;0;L;;;;;N;;;0376;;0376 +037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;; +037B;GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FD;;03FD +037C;GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FE;;03FE +037D;GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FF;;03FF +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 +03CF;GREEK CAPITAL KAI SYMBOL;Lu;0;L;;;;;N;;;;03D7; +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;;;03CF;;03CF +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;;03F9;;03F9 +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;;;;; +03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8; +03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7 +03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L;<compat> 03A3;;;;N;;;;03F2; +03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB; +03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA +03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;; +03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037B; +03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037C; +03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037D; +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;;;; +0487;COMBINING CYRILLIC POKRYTIE;Mn;230;NSM;;;;;N;;;;; +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;;;04CF; +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 +04CF;CYRILLIC SMALL LETTER PALOCHKA;Ll;0;L;;;;;N;;;04C0;;04C0 +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 +04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7; +04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6 +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 +04FA;CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;Lu;0;L;;;;;N;;;;04FB; +04FB;CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;Ll;0;L;;;;;N;;;04FA;;04FA +04FC;CYRILLIC CAPITAL LETTER HA WITH HOOK;Lu;0;L;;;;;N;;;;04FD; +04FD;CYRILLIC SMALL LETTER HA WITH HOOK;Ll;0;L;;;;;N;;;04FC;;04FC +04FE;CYRILLIC CAPITAL LETTER HA WITH STROKE;Lu;0;L;;;;;N;;;;04FF; +04FF;CYRILLIC SMALL LETTER HA WITH STROKE;Ll;0;L;;;;;N;;;04FE;;04FE +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 +0510;CYRILLIC CAPITAL LETTER REVERSED ZE;Lu;0;L;;;;;N;;;;0511; +0511;CYRILLIC SMALL LETTER REVERSED ZE;Ll;0;L;;;;;N;;;0510;;0510 +0512;CYRILLIC CAPITAL LETTER EL WITH HOOK;Lu;0;L;;;;;N;;;;0513; +0513;CYRILLIC SMALL LETTER EL WITH HOOK;Ll;0;L;;;;;N;;;0512;;0512 +0514;CYRILLIC CAPITAL LETTER LHA;Lu;0;L;;;;;N;;;;0515; +0515;CYRILLIC SMALL LETTER LHA;Ll;0;L;;;;;N;;;0514;;0514 +0516;CYRILLIC CAPITAL LETTER RHA;Lu;0;L;;;;;N;;;;0517; +0517;CYRILLIC SMALL LETTER RHA;Ll;0;L;;;;;N;;;0516;;0516 +0518;CYRILLIC CAPITAL LETTER YAE;Lu;0;L;;;;;N;;;;0519; +0519;CYRILLIC SMALL LETTER YAE;Ll;0;L;;;;;N;;;0518;;0518 +051A;CYRILLIC CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;051B; +051B;CYRILLIC SMALL LETTER QA;Ll;0;L;;;;;N;;;051A;;051A +051C;CYRILLIC CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;051D; +051D;CYRILLIC SMALL LETTER WE;Ll;0;L;;;;;N;;;051C;;051C +051E;CYRILLIC CAPITAL LETTER ALEUT KA;Lu;0;L;;;;;N;;;;051F; +051F;CYRILLIC SMALL LETTER ALEUT KA;Ll;0;L;;;;;N;;;051E;;051E +0520;CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0521; +0521;CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0520;;0520 +0522;CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0523; +0523;CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0522;;0522 +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;;;;; +05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;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;;;;; +05BA;HEBREW POINT HOLAM HASER FOR VAV;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;Pd;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;;;;; +05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;; +05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;; +05C7;HEBREW POINT QAMATS QATAN;Mn;18;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;;;;; +0600;ARABIC NUMBER SIGN;Cf;0;AN;;;;;N;;;;; +0601;ARABIC SIGN SANAH;Cf;0;AN;;;;;N;;;;; +0602;ARABIC FOOTNOTE MARKER;Cf;0;AN;;;;;N;;;;; +0603;ARABIC SIGN SAFHA;Cf;0;AN;;;;;N;;;;; +0606;ARABIC-INDIC CUBE ROOT;Sm;0;ON;;;;;N;;;;; +0607;ARABIC-INDIC FOURTH ROOT;Sm;0;ON;;;;;N;;;;; +0608;ARABIC RAY;Sm;0;AL;;;;;N;;;;; +0609;ARABIC-INDIC PER MILLE SIGN;Po;0;ET;;;;;N;;;;; +060A;ARABIC-INDIC PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; +060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;; +060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;; +060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;; +060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;; +060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;; +0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;; +0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;; +0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;; +0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;; +0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;; +0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;; +0616;ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Mn;230;NSM;;;;;N;;;;; +0617;ARABIC SMALL HIGH ZAIN;Mn;230;NSM;;;;;N;;;;; +0618;ARABIC SMALL FATHA;Mn;30;NSM;;;;;N;;;;; +0619;ARABIC SMALL DAMMA;Mn;31;NSM;;;;;N;;;;; +061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;; +061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;; +061E;ARABIC TRIPLE DOT PUNCTUATION MARK;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;;;;; +063B;ARABIC LETTER KEHEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +063C;ARABIC LETTER KEHEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +063D;ARABIC LETTER FARSI YEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; +063E;ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +063F;ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE;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;;;;; +0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;; +0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;; +0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;; +0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;; +065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; +065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; +065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; +065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;; +065E;ARABIC FATHA WITH TWO DOTS;Mn;230;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;AN;;;;;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;;;;; +06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;; +06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;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;;;;; +06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;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;;;;; +072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;; +072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;; +072F;SYRIAC LETTER PERSIAN DHALATH;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;;;;; +074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;; +074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;; +074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;; +0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;; +0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; +0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; +0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;; +0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; +0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; +075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; +075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;; +075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;; +075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; +0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; +0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; +0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;; +0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;; +076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;; +076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; +076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;; +076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; +076E;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW;Lo;0;AL;;;;;N;;;;; +076F;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; +0770;ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; +0771;ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; +0772;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;; +0773;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; +0774;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; +0775;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; +0776;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; +0777;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;; +0778;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; +0779;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; +077A;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; +077B;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; +077C;ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;; +077D;ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE;Lo;0;AL;;;;;N;;;;; +077E;ARABIC LETTER SEEN WITH INVERTED V;Lo;0;AL;;;;;N;;;;; +077F;ARABIC LETTER KAF WITH TWO DOTS ABOVE;Lo;0;AL;;;;;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;;;;; +07C0;NKO DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;; +07C1;NKO DIGIT ONE;Nd;0;R;;1;1;1;N;;;;; +07C2;NKO DIGIT TWO;Nd;0;R;;2;2;2;N;;;;; +07C3;NKO DIGIT THREE;Nd;0;R;;3;3;3;N;;;;; +07C4;NKO DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;; +07C5;NKO DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;; +07C6;NKO DIGIT SIX;Nd;0;R;;6;6;6;N;;;;; +07C7;NKO DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;; +07C8;NKO DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;; +07C9;NKO DIGIT NINE;Nd;0;R;;9;9;9;N;;;;; +07CA;NKO LETTER A;Lo;0;R;;;;;N;;;;; +07CB;NKO LETTER EE;Lo;0;R;;;;;N;;;;; +07CC;NKO LETTER I;Lo;0;R;;;;;N;;;;; +07CD;NKO LETTER E;Lo;0;R;;;;;N;;;;; +07CE;NKO LETTER U;Lo;0;R;;;;;N;;;;; +07CF;NKO LETTER OO;Lo;0;R;;;;;N;;;;; +07D0;NKO LETTER O;Lo;0;R;;;;;N;;;;; +07D1;NKO LETTER DAGBASINNA;Lo;0;R;;;;;N;;;;; +07D2;NKO LETTER N;Lo;0;R;;;;;N;;;;; +07D3;NKO LETTER BA;Lo;0;R;;;;;N;;;;; +07D4;NKO LETTER PA;Lo;0;R;;;;;N;;;;; +07D5;NKO LETTER TA;Lo;0;R;;;;;N;;;;; +07D6;NKO LETTER JA;Lo;0;R;;;;;N;;;;; +07D7;NKO LETTER CHA;Lo;0;R;;;;;N;;;;; +07D8;NKO LETTER DA;Lo;0;R;;;;;N;;;;; +07D9;NKO LETTER RA;Lo;0;R;;;;;N;;;;; +07DA;NKO LETTER RRA;Lo;0;R;;;;;N;;;;; +07DB;NKO LETTER SA;Lo;0;R;;;;;N;;;;; +07DC;NKO LETTER GBA;Lo;0;R;;;;;N;;;;; +07DD;NKO LETTER FA;Lo;0;R;;;;;N;;;;; +07DE;NKO LETTER KA;Lo;0;R;;;;;N;;;;; +07DF;NKO LETTER LA;Lo;0;R;;;;;N;;;;; +07E0;NKO LETTER NA WOLOSO;Lo;0;R;;;;;N;;;;; +07E1;NKO LETTER MA;Lo;0;R;;;;;N;;;;; +07E2;NKO LETTER NYA;Lo;0;R;;;;;N;;;;; +07E3;NKO LETTER NA;Lo;0;R;;;;;N;;;;; +07E4;NKO LETTER HA;Lo;0;R;;;;;N;;;;; +07E5;NKO LETTER WA;Lo;0;R;;;;;N;;;;; +07E6;NKO LETTER YA;Lo;0;R;;;;;N;;;;; +07E7;NKO LETTER NYA WOLOSO;Lo;0;R;;;;;N;;;;; +07E8;NKO LETTER JONA JA;Lo;0;R;;;;;N;;;;; +07E9;NKO LETTER JONA CHA;Lo;0;R;;;;;N;;;;; +07EA;NKO LETTER JONA RA;Lo;0;R;;;;;N;;;;; +07EB;NKO COMBINING SHORT HIGH TONE;Mn;230;NSM;;;;;N;;;;; +07EC;NKO COMBINING SHORT LOW TONE;Mn;230;NSM;;;;;N;;;;; +07ED;NKO COMBINING SHORT RISING TONE;Mn;230;NSM;;;;;N;;;;; +07EE;NKO COMBINING LONG DESCENDING TONE;Mn;230;NSM;;;;;N;;;;; +07EF;NKO COMBINING LONG HIGH TONE;Mn;230;NSM;;;;;N;;;;; +07F0;NKO COMBINING LONG LOW TONE;Mn;230;NSM;;;;;N;;;;; +07F1;NKO COMBINING LONG RISING TONE;Mn;230;NSM;;;;;N;;;;; +07F2;NKO COMBINING NASALIZATION MARK;Mn;220;NSM;;;;;N;;;;; +07F3;NKO COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;; +07F4;NKO HIGH TONE APOSTROPHE;Lm;0;R;;;;;N;;;;; +07F5;NKO LOW TONE APOSTROPHE;Lm;0;R;;;;;N;;;;; +07F6;NKO SYMBOL OO DENNEN;So;0;ON;;;;;N;;;;; +07F7;NKO SYMBOL GBAKURUNEN;Po;0;ON;;;;;N;;;;; +07F8;NKO COMMA;Po;0;ON;;;;;N;;;;; +07F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +07FA;NKO LAJANYALAN;Lm;0;R;;;;;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;;;;; +0904;DEVANAGARI LETTER SHORT A;Lo;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;;;;; +0971;DEVANAGARI SIGN HIGH SPACING DOT;Lm;0;L;;;;;N;;;;; +0972;DEVANAGARI LETTER CANDRA A;Lo;0;L;;;;;N;;;;; +097B;DEVANAGARI LETTER GGA;Lo;0;L;;;;;N;;;;; +097C;DEVANAGARI LETTER JJA;Lo;0;L;;;;;N;;;;; +097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;; +097E;DEVANAGARI LETTER DDDA;Lo;0;L;;;;;N;;;;; +097F;DEVANAGARI LETTER BBA;Lo;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;;;;; +09BD;BENGALI SIGN AVAGRAHA;Lo;0;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;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;;;;; +09CE;BENGALI LETTER KHANDA TA;Lo;0;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;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;;;;; +0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;; +0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;; +0A03;GURMUKHI SIGN VISARGA;Mc;0;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;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;;;;; +0A51;GURMUKHI SIGN UDAAT;Mn;0;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;;;;; +0A75;GURMUKHI SIGN YAKASH;Mn;0;NSM;;;;;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;;;;; +0A8C;GUJARATI LETTER VOCALIC L;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;;;;; +0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;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;;;;; +0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;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;;;;; +0B35;ORIYA LETTER VA;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;;;;; +0B44;ORIYA VOWEL SIGN VOCALIC RR;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;;;;; +0B62;ORIYA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +0B63;ORIYA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;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;;;;; +0B71;ORIYA LETTER WA;Lo;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;;;;; +0BB6;TAMIL LETTER SHA;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;;;;; +0BD0;TAMIL OM;Lo;0;L;;;;;N;;;;; +0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;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;;;;; +0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;Naal;;; +0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;Maatham;;; +0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;Varudam;;; +0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;Patru;;; +0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;Varavu;;; +0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;Merpadi;;; +0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;Rupai;;; +0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;Enn;;; +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;;;;; +0C3D;TELUGU SIGN AVAGRAHA;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;;;;; +0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;; +0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;; +0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +0C63;TELUGU VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;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;;;;; +0C78;TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;No;0;ON;;;;0;N;;;;; +0C79;TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;No;0;ON;;;;1;N;;;;; +0C7A;TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;No;0;ON;;;;2;N;;;;; +0C7B;TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR;No;0;ON;;;;3;N;;;;; +0C7C;TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR;No;0;ON;;;;1;N;;;;; +0C7D;TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;No;0;ON;;;;2;N;;;;; +0C7E;TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;No;0;ON;;;;3;N;;;;; +0C7F;TELUGU SIGN TUUMU;So;0;L;;;;;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;;;;; +0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0CBF;KANNADA VOWEL SIGN I;Mn;0;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;0;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;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;;;;; +0CE2;KANNADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +0CE3;KANNADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;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;;;;; +0CF1;KANNADA SIGN JIHVAMULIYA;So;0;ON;;;;;N;;;;; +0CF2;KANNADA SIGN UPADHMANIYA;So;0;ON;;;;;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;;;;; +0D3D;MALAYALAM SIGN AVAGRAHA;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;;;;; +0D44;MALAYALAM VOWEL SIGN VOCALIC RR;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;;;;; +0D62;MALAYALAM VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +0D63;MALAYALAM VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;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;;;;; +0D70;MALAYALAM NUMBER TEN;No;0;L;;;;10;N;;;;; +0D71;MALAYALAM NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; +0D72;MALAYALAM NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; +0D73;MALAYALAM FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;; +0D74;MALAYALAM FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;; +0D75;MALAYALAM FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;; +0D79;MALAYALAM DATE MARK;So;0;L;;;;;N;;;;; +0D7A;MALAYALAM LETTER CHILLU NN;Lo;0;L;;;;;N;;;;; +0D7B;MALAYALAM LETTER CHILLU N;Lo;0;L;;;;;N;;;;; +0D7C;MALAYALAM LETTER CHILLU RR;Lo;0;L;;;;;N;;;;; +0D7D;MALAYALAM LETTER CHILLU L;Lo;0;L;;;;;N;;;;; +0D7E;MALAYALAM LETTER CHILLU LL;Lo;0;L;;;;;N;;;;; +0D7F;MALAYALAM LETTER CHILLU K;Lo;0;L;;;;;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;;;;;Y;;gug ta yun;;; +0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;Y;;gug ta ye;;; +0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;Y;TIBETAN LEFT BRACE;ang kang yun;;; +0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;Y;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;;*;;; +0F6B;TIBETAN LETTER KKA;Lo;0;L;;;;;N;;;;; +0F6C;TIBETAN LETTER RRA;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;;; +0FCE;TIBETAN SIGN RDEL NAG RDEL DKAR;So;0;L;;;;;N;;dena deka;;; +0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;; +0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;ka shog gi go gyen;;; +0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;nyam yig gi go gyen;;; +0FD2;TIBETAN MARK NYIS TSHEG;Po;0;L;;;;;N;;nyi tsek;;; +0FD3;TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA;Po;0;L;;;;;N;;da nying yik go dun ma;;; +0FD4;TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA;Po;0;L;;;;;N;;da nying yik go kab ma;;; +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;;;;; +1022;MYANMAR LETTER SHAN 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;;;;; +1028;MYANMAR LETTER MON E;Lo;0;L;;;;;N;;;;; +1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;; +102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;; +102B;MYANMAR VOWEL SIGN TALL AA;Mc;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;;;;; +1033;MYANMAR VOWEL SIGN MON II;Mn;0;NSM;;;;;N;;;;; +1034;MYANMAR VOWEL SIGN MON O;Mn;0;NSM;;;;;N;;;;; +1035;MYANMAR VOWEL SIGN E ABOVE;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;;;;; +103A;MYANMAR SIGN ASAT;Mn;9;NSM;;;;;N;;;;; +103B;MYANMAR CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;; +103C;MYANMAR CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;; +103D;MYANMAR CONSONANT SIGN MEDIAL WA;Mn;0;NSM;;;;;N;;;;; +103E;MYANMAR CONSONANT SIGN MEDIAL HA;Mn;0;NSM;;;;;N;;;;; +103F;MYANMAR LETTER GREAT SA;Lo;0;L;;;;;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;;;;; +105A;MYANMAR LETTER MON NGA;Lo;0;L;;;;;N;;;;; +105B;MYANMAR LETTER MON JHA;Lo;0;L;;;;;N;;;;; +105C;MYANMAR LETTER MON BBA;Lo;0;L;;;;;N;;;;; +105D;MYANMAR LETTER MON BBE;Lo;0;L;;;;;N;;;;; +105E;MYANMAR CONSONANT SIGN MON MEDIAL NA;Mn;0;NSM;;;;;N;;;;; +105F;MYANMAR CONSONANT SIGN MON MEDIAL MA;Mn;0;NSM;;;;;N;;;;; +1060;MYANMAR CONSONANT SIGN MON MEDIAL LA;Mn;0;NSM;;;;;N;;;;; +1061;MYANMAR LETTER SGAW KAREN SHA;Lo;0;L;;;;;N;;;;; +1062;MYANMAR VOWEL SIGN SGAW KAREN EU;Mc;0;L;;;;;N;;;;; +1063;MYANMAR TONE MARK SGAW KAREN HATHI;Mc;0;L;;;;;N;;;;; +1064;MYANMAR TONE MARK SGAW KAREN KE PHO;Mc;0;L;;;;;N;;;;; +1065;MYANMAR LETTER WESTERN PWO KAREN THA;Lo;0;L;;;;;N;;;;; +1066;MYANMAR LETTER WESTERN PWO KAREN PWA;Lo;0;L;;;;;N;;;;; +1067;MYANMAR VOWEL SIGN WESTERN PWO KAREN EU;Mc;0;L;;;;;N;;;;; +1068;MYANMAR VOWEL SIGN WESTERN PWO KAREN UE;Mc;0;L;;;;;N;;;;; +1069;MYANMAR SIGN WESTERN PWO KAREN TONE-1;Mc;0;L;;;;;N;;;;; +106A;MYANMAR SIGN WESTERN PWO KAREN TONE-2;Mc;0;L;;;;;N;;;;; +106B;MYANMAR SIGN WESTERN PWO KAREN TONE-3;Mc;0;L;;;;;N;;;;; +106C;MYANMAR SIGN WESTERN PWO KAREN TONE-4;Mc;0;L;;;;;N;;;;; +106D;MYANMAR SIGN WESTERN PWO KAREN TONE-5;Mc;0;L;;;;;N;;;;; +106E;MYANMAR LETTER EASTERN PWO KAREN NNA;Lo;0;L;;;;;N;;;;; +106F;MYANMAR LETTER EASTERN PWO KAREN YWA;Lo;0;L;;;;;N;;;;; +1070;MYANMAR LETTER EASTERN PWO KAREN GHWA;Lo;0;L;;;;;N;;;;; +1071;MYANMAR VOWEL SIGN GEBA KAREN I;Mn;0;NSM;;;;;N;;;;; +1072;MYANMAR VOWEL SIGN KAYAH OE;Mn;0;NSM;;;;;N;;;;; +1073;MYANMAR VOWEL SIGN KAYAH U;Mn;0;NSM;;;;;N;;;;; +1074;MYANMAR VOWEL SIGN KAYAH EE;Mn;0;NSM;;;;;N;;;;; +1075;MYANMAR LETTER SHAN KA;Lo;0;L;;;;;N;;;;; +1076;MYANMAR LETTER SHAN KHA;Lo;0;L;;;;;N;;;;; +1077;MYANMAR LETTER SHAN GA;Lo;0;L;;;;;N;;;;; +1078;MYANMAR LETTER SHAN CA;Lo;0;L;;;;;N;;;;; +1079;MYANMAR LETTER SHAN ZA;Lo;0;L;;;;;N;;;;; +107A;MYANMAR LETTER SHAN NYA;Lo;0;L;;;;;N;;;;; +107B;MYANMAR LETTER SHAN DA;Lo;0;L;;;;;N;;;;; +107C;MYANMAR LETTER SHAN NA;Lo;0;L;;;;;N;;;;; +107D;MYANMAR LETTER SHAN PHA;Lo;0;L;;;;;N;;;;; +107E;MYANMAR LETTER SHAN FA;Lo;0;L;;;;;N;;;;; +107F;MYANMAR LETTER SHAN BA;Lo;0;L;;;;;N;;;;; +1080;MYANMAR LETTER SHAN THA;Lo;0;L;;;;;N;;;;; +1081;MYANMAR LETTER SHAN HA;Lo;0;L;;;;;N;;;;; +1082;MYANMAR CONSONANT SIGN SHAN MEDIAL WA;Mn;0;NSM;;;;;N;;;;; +1083;MYANMAR VOWEL SIGN SHAN AA;Mc;0;L;;;;;N;;;;; +1084;MYANMAR VOWEL SIGN SHAN E;Mc;0;L;;;;;N;;;;; +1085;MYANMAR VOWEL SIGN SHAN E ABOVE;Mn;0;NSM;;;;;N;;;;; +1086;MYANMAR VOWEL SIGN SHAN FINAL Y;Mn;0;NSM;;;;;N;;;;; +1087;MYANMAR SIGN SHAN TONE-2;Mc;0;L;;;;;N;;;;; +1088;MYANMAR SIGN SHAN TONE-3;Mc;0;L;;;;;N;;;;; +1089;MYANMAR SIGN SHAN TONE-5;Mc;0;L;;;;;N;;;;; +108A;MYANMAR SIGN SHAN TONE-6;Mc;0;L;;;;;N;;;;; +108B;MYANMAR SIGN SHAN COUNCIL TONE-2;Mc;0;L;;;;;N;;;;; +108C;MYANMAR SIGN SHAN COUNCIL TONE-3;Mc;0;L;;;;;N;;;;; +108D;MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE;Mn;220;NSM;;;;;N;;;;; +108E;MYANMAR LETTER RUMAI PALAUNG FA;Lo;0;L;;;;;N;;;;; +108F;MYANMAR SIGN RUMAI PALAUNG TONE-5;Mc;0;L;;;;;N;;;;; +1090;MYANMAR SHAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1091;MYANMAR SHAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1092;MYANMAR SHAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1093;MYANMAR SHAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1094;MYANMAR SHAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1095;MYANMAR SHAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1096;MYANMAR SHAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1097;MYANMAR SHAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1098;MYANMAR SHAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1099;MYANMAR SHAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +109E;MYANMAR SYMBOL SHAN ONE;So;0;L;;;;;N;;;;; +109F;MYANMAR SYMBOL SHAN EXCLAMATION;So;0;L;;;;;N;;;;; +10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;2D00; +10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;2D01; +10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;2D02; +10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;2D03; +10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;2D04; +10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;2D05; +10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;2D06; +10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;2D07; +10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;2D08; +10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;2D09; +10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;2D0A; +10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;2D0B; +10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;2D0C; +10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;2D0D; +10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;2D0E; +10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;2D0F; +10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;2D10; +10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;2D11; +10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;2D12; +10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;2D13; +10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;2D14; +10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;2D15; +10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;2D16; +10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;2D17; +10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;2D18; +10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;2D19; +10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;2D1A; +10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;2D1B; +10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;2D1C; +10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;2D1D; +10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;2D1E; +10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;2D1F; +10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;2D20; +10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;2D21; +10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;2D22; +10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;2D23; +10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;2D24; +10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;2D25; +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;;;;; +10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;; +10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;; +10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; +10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;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;;;;; +1207;ETHIOPIC SYLLABLE HOA;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;;;;; +1247;ETHIOPIC SYLLABLE QOA;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;;;;; +1287;ETHIOPIC SYLLABLE XOA;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;;;;; +12AF;ETHIOPIC SYLLABLE KOA;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;;;;; +12CF;ETHIOPIC SYLLABLE WOA;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;;;;; +12EF;ETHIOPIC SYLLABLE YOA;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;;;;; +130F;ETHIOPIC SYLLABLE GOA;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;;;;; +131F;ETHIOPIC SYLLABLE GGWAA;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;;;;; +1347;ETHIOPIC SYLLABLE TZOA;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;;;;; +135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;; +1360;ETHIOPIC SECTION MARK;So;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;No;0;L;;;1;1;N;;;;; +136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;; +136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;; +136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;; +136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;; +136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;; +136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;; +1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;; +1371;ETHIOPIC DIGIT NINE;No;0;L;;;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;;;;; +1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;; +1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;; +1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;; +1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;; +1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;; +1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;; +1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;; +1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;; +1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;; +1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;; +138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;; +138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;; +138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;; +138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;; +138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;; +138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;; +1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;; +1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;; +1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;; +1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;; +1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;; +1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;; +1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;; +1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;; +1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;; +1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;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;;;;;Y;;;;; +169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;Y;;;;; +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;Cf;0;L;;;;;N;;*;;; +17B5;KHMER VOWEL INHERENT AA;Cf;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;;;;; +17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;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;;;;; +17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;; +17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;; +17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;; +17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;; +17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;; +17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;; +17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;; +17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;; +17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;; +17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;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;Zs;0;WS;;;;;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;;;;; +18AA;MONGOLIAN LETTER MANCHU ALI GALI LHA;Lo;0;L;;;;;N;;;;; +1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;; +1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;; +1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;; +1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;; +1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;; +1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;; +1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;; +1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;; +1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;; +1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;; +190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;; +190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;; +190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;; +190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;; +190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;; +190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;; +1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;; +1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;; +1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;; +1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;; +1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;; +1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;; +1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;; +1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;; +1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;; +1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;; +191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;; +191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;; +191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;; +1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;; +1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; +1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; +1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; +1929;LIMBU SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;; +192A;LIMBU SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;; +192B;LIMBU SUBJOINED LETTER WA;Mc;0;L;;;;;N;;;;; +1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;; +1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;; +1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;; +1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;; +1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;; +1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;; +1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;; +1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;; +1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;; +1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;; +193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;; +193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;; +1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;; +1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;; +1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;; +1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;; +1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;; +1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;; +1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;; +1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;; +1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;; +1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;; +1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;; +1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;; +195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;; +195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;; +195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;; +195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;; +195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;; +195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;; +1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;; +1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;; +1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;; +1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;; +1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;; +1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;; +1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;; +1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;; +1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;; +1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;; +196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;; +196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;; +196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;; +196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;; +1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;; +1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;; +1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;; +1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;; +1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;; +1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;; +1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;; +1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;; +1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;; +1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;; +1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;; +1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;; +1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;; +1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;; +1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;; +198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;; +198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;; +198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;; +198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;; +198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;; +198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;; +1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;; +1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;; +1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;; +1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;; +1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;; +1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;; +1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;; +1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;; +1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;; +1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;; +199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;; +199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;; +199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;; +199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;; +199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;; +199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;; +19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;; +19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;; +19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;; +19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;; +19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;; +19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;; +19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;; +19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;; +19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;; +19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;; +19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;; +19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; +19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;; +19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;; +19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;; +19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;; +19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;; +19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;; +19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;; +19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;; +19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;; +19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;; +19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;; +19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;; +19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;; +19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;; +19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;; +19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;; +19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;; +19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;; +19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +19DE;NEW TAI LUE SIGN LAE;Po;0;ON;;;;;N;;;;; +19DF;NEW TAI LUE SIGN LAEV;Po;0;ON;;;;;N;;;;; +19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;; +19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;; +19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;; +19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;; +19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;; +19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;; +19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;; +19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;; +19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;; +19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;; +19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;; +19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;; +19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;; +19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;; +19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;; +19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;; +19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;; +19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;; +19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;; +19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;; +19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;; +19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;; +19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;; +19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;; +19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;; +19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;; +19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;; +19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;; +19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;; +19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;; +19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;; +19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;; +1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;; +1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;; +1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;; +1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;; +1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;; +1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;; +1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;; +1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;; +1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;; +1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;; +1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;; +1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;; +1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;; +1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;; +1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;; +1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;; +1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;; +1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;; +1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;; +1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;; +1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;; +1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;; +1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;; +1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;; +1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;; +1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; +1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;; +1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;; +1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;ardhacandra;;; +1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;candrabindu;;; +1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;anusvara;;; +1B03;BALINESE SIGN SURANG;Mn;0;NSM;;;;;N;;repha;;; +1B04;BALINESE SIGN BISAH;Mc;0;L;;;;;N;;visarga;;; +1B05;BALINESE LETTER AKARA;Lo;0;L;;;;;N;;a;;; +1B06;BALINESE LETTER AKARA TEDUNG;Lo;0;L;1B05 1B35;;;;N;;aa;;; +1B07;BALINESE LETTER IKARA;Lo;0;L;;;;;N;;i;;; +1B08;BALINESE LETTER IKARA TEDUNG;Lo;0;L;1B07 1B35;;;;N;;ii;;; +1B09;BALINESE LETTER UKARA;Lo;0;L;;;;;N;;u;;; +1B0A;BALINESE LETTER UKARA TEDUNG;Lo;0;L;1B09 1B35;;;;N;;uu;;; +1B0B;BALINESE LETTER RA REPA;Lo;0;L;;;;;N;;vocalic r;;; +1B0C;BALINESE LETTER RA REPA TEDUNG;Lo;0;L;1B0B 1B35;;;;N;;vocalic rr;;; +1B0D;BALINESE LETTER LA LENGA;Lo;0;L;;;;;N;;vocalic l;;; +1B0E;BALINESE LETTER LA LENGA TEDUNG;Lo;0;L;1B0D 1B35;;;;N;;vocalic ll;;; +1B0F;BALINESE LETTER EKARA;Lo;0;L;;;;;N;;e;;; +1B10;BALINESE LETTER AIKARA;Lo;0;L;;;;;N;;ai;;; +1B11;BALINESE LETTER OKARA;Lo;0;L;;;;;N;;o;;; +1B12;BALINESE LETTER OKARA TEDUNG;Lo;0;L;1B11 1B35;;;;N;;au;;; +1B13;BALINESE LETTER KA;Lo;0;L;;;;;N;;;;; +1B14;BALINESE LETTER KA MAHAPRANA;Lo;0;L;;;;;N;;kha;;; +1B15;BALINESE LETTER GA;Lo;0;L;;;;;N;;;;; +1B16;BALINESE LETTER GA GORA;Lo;0;L;;;;;N;;gha;;; +1B17;BALINESE LETTER NGA;Lo;0;L;;;;;N;;;;; +1B18;BALINESE LETTER CA;Lo;0;L;;;;;N;;;;; +1B19;BALINESE LETTER CA LACA;Lo;0;L;;;;;N;;cha;;; +1B1A;BALINESE LETTER JA;Lo;0;L;;;;;N;;;;; +1B1B;BALINESE LETTER JA JERA;Lo;0;L;;;;;N;;jha;;; +1B1C;BALINESE LETTER NYA;Lo;0;L;;;;;N;;;;; +1B1D;BALINESE LETTER TA LATIK;Lo;0;L;;;;;N;;tta;;; +1B1E;BALINESE LETTER TA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ttha;;; +1B1F;BALINESE LETTER DA MURDA ALPAPRANA;Lo;0;L;;;;;N;;dda;;; +1B20;BALINESE LETTER DA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ddha;;; +1B21;BALINESE LETTER NA RAMBAT;Lo;0;L;;;;;N;;nna;;; +1B22;BALINESE LETTER TA;Lo;0;L;;;;;N;;;;; +1B23;BALINESE LETTER TA TAWA;Lo;0;L;;;;;N;;tha;;; +1B24;BALINESE LETTER DA;Lo;0;L;;;;;N;;;;; +1B25;BALINESE LETTER DA MADU;Lo;0;L;;;;;N;;dha;;; +1B26;BALINESE LETTER NA;Lo;0;L;;;;;N;;;;; +1B27;BALINESE LETTER PA;Lo;0;L;;;;;N;;;;; +1B28;BALINESE LETTER PA KAPAL;Lo;0;L;;;;;N;;pha;;; +1B29;BALINESE LETTER BA;Lo;0;L;;;;;N;;;;; +1B2A;BALINESE LETTER BA KEMBANG;Lo;0;L;;;;;N;;bha;;; +1B2B;BALINESE LETTER MA;Lo;0;L;;;;;N;;;;; +1B2C;BALINESE LETTER YA;Lo;0;L;;;;;N;;;;; +1B2D;BALINESE LETTER RA;Lo;0;L;;;;;N;;;;; +1B2E;BALINESE LETTER LA;Lo;0;L;;;;;N;;;;; +1B2F;BALINESE LETTER WA;Lo;0;L;;;;;N;;;;; +1B30;BALINESE LETTER SA SAGA;Lo;0;L;;;;;N;;sha;;; +1B31;BALINESE LETTER SA SAPA;Lo;0;L;;;;;N;;ssa;;; +1B32;BALINESE LETTER SA;Lo;0;L;;;;;N;;;;; +1B33;BALINESE LETTER HA;Lo;0;L;;;;;N;;;;; +1B34;BALINESE SIGN REREKAN;Mn;7;NSM;;;;;N;;nukta;;; +1B35;BALINESE VOWEL SIGN TEDUNG;Mc;0;L;;;;;N;;aa;;; +1B36;BALINESE VOWEL SIGN ULU;Mn;0;NSM;;;;;N;;i;;; +1B37;BALINESE VOWEL SIGN ULU SARI;Mn;0;NSM;;;;;N;;ii;;; +1B38;BALINESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;u;;; +1B39;BALINESE VOWEL SIGN SUKU ILUT;Mn;0;NSM;;;;;N;;uu;;; +1B3A;BALINESE VOWEL SIGN RA REPA;Mn;0;NSM;;;;;N;;vocalic r;;; +1B3B;BALINESE VOWEL SIGN RA REPA TEDUNG;Mc;0;L;1B3A 1B35;;;;N;;vocalic rr;;; +1B3C;BALINESE VOWEL SIGN LA LENGA;Mn;0;NSM;;;;;N;;vocalic l;;; +1B3D;BALINESE VOWEL SIGN LA LENGA TEDUNG;Mc;0;L;1B3C 1B35;;;;N;;vocalic ll;;; +1B3E;BALINESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;e;;; +1B3F;BALINESE VOWEL SIGN TALING REPA;Mc;0;L;;;;;N;;ai;;; +1B40;BALINESE VOWEL SIGN TALING TEDUNG;Mc;0;L;1B3E 1B35;;;;N;;o;;; +1B41;BALINESE VOWEL SIGN TALING REPA TEDUNG;Mc;0;L;1B3F 1B35;;;;N;;au;;; +1B42;BALINESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;ae;;; +1B43;BALINESE VOWEL SIGN PEPET TEDUNG;Mc;0;L;1B42 1B35;;;;N;;oe;;; +1B44;BALINESE ADEG ADEG;Mc;9;L;;;;;N;;virama;;; +1B45;BALINESE LETTER KAF SASAK;Lo;0;L;;;;;N;;;;; +1B46;BALINESE LETTER KHOT SASAK;Lo;0;L;;;;;N;;;;; +1B47;BALINESE LETTER TZIR SASAK;Lo;0;L;;;;;N;;;;; +1B48;BALINESE LETTER EF SASAK;Lo;0;L;;;;;N;;;;; +1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;; +1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;; +1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;; +1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1B53;BALINESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1B54;BALINESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1B55;BALINESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1B56;BALINESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1B57;BALINESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1B58;BALINESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1B59;BALINESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1B5A;BALINESE PANTI;Po;0;L;;;;;N;;section;;; +1B5B;BALINESE PAMADA;Po;0;L;;;;;N;;honorific section;;; +1B5C;BALINESE WINDU;Po;0;L;;;;;N;;punctuation ring;;; +1B5D;BALINESE CARIK PAMUNGKAH;Po;0;L;;;;;N;;colon;;; +1B5E;BALINESE CARIK SIKI;Po;0;L;;;;;N;;danda;;; +1B5F;BALINESE CARIK PAREREN;Po;0;L;;;;;N;;double danda;;; +1B60;BALINESE PAMENENG;Po;0;L;;;;;N;;line-breaking hyphen;;; +1B61;BALINESE MUSICAL SYMBOL DONG;So;0;L;;;;;N;;;;; +1B62;BALINESE MUSICAL SYMBOL DENG;So;0;L;;;;;N;;;;; +1B63;BALINESE MUSICAL SYMBOL DUNG;So;0;L;;;;;N;;;;; +1B64;BALINESE MUSICAL SYMBOL DANG;So;0;L;;;;;N;;;;; +1B65;BALINESE MUSICAL SYMBOL DANG SURANG;So;0;L;;;;;N;;;;; +1B66;BALINESE MUSICAL SYMBOL DING;So;0;L;;;;;N;;;;; +1B67;BALINESE MUSICAL SYMBOL DAENG;So;0;L;;;;;N;;;;; +1B68;BALINESE MUSICAL SYMBOL DEUNG;So;0;L;;;;;N;;;;; +1B69;BALINESE MUSICAL SYMBOL DAING;So;0;L;;;;;N;;;;; +1B6A;BALINESE MUSICAL SYMBOL DANG GEDE;So;0;L;;;;;N;;;;; +1B6B;BALINESE MUSICAL SYMBOL COMBINING TEGEH;Mn;230;NSM;;;;;N;;;;; +1B6C;BALINESE MUSICAL SYMBOL COMBINING ENDEP;Mn;220;NSM;;;;;N;;;;; +1B6D;BALINESE MUSICAL SYMBOL COMBINING KEMPUL;Mn;230;NSM;;;;;N;;;;; +1B6E;BALINESE MUSICAL SYMBOL COMBINING KEMPLI;Mn;230;NSM;;;;;N;;;;; +1B6F;BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;Mn;230;NSM;;;;;N;;;;; +1B70;BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;; +1B71;BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;; +1B72;BALINESE MUSICAL SYMBOL COMBINING BENDE;Mn;230;NSM;;;;;N;;;;; +1B73;BALINESE MUSICAL SYMBOL COMBINING GONG;Mn;230;NSM;;;;;N;;;;; +1B74;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;So;0;L;;;;;N;;;;; +1B75;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;So;0;L;;;;;N;;;;; +1B76;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;So;0;L;;;;;N;;;;; +1B77;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;So;0;L;;;;;N;;;;; +1B78;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;So;0;L;;;;;N;;;;; +1B79;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;So;0;L;;;;;N;;;;; +1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;; +1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;; +1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;; +1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;; +1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;; +1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;; +1B83;SUNDANESE LETTER A;Lo;0;L;;;;;N;;;;; +1B84;SUNDANESE LETTER I;Lo;0;L;;;;;N;;;;; +1B85;SUNDANESE LETTER U;Lo;0;L;;;;;N;;;;; +1B86;SUNDANESE LETTER AE;Lo;0;L;;;;;N;;;;; +1B87;SUNDANESE LETTER O;Lo;0;L;;;;;N;;;;; +1B88;SUNDANESE LETTER E;Lo;0;L;;;;;N;;;;; +1B89;SUNDANESE LETTER EU;Lo;0;L;;;;;N;;;;; +1B8A;SUNDANESE LETTER KA;Lo;0;L;;;;;N;;;;; +1B8B;SUNDANESE LETTER QA;Lo;0;L;;;;;N;;;;; +1B8C;SUNDANESE LETTER GA;Lo;0;L;;;;;N;;;;; +1B8D;SUNDANESE LETTER NGA;Lo;0;L;;;;;N;;;;; +1B8E;SUNDANESE LETTER CA;Lo;0;L;;;;;N;;;;; +1B8F;SUNDANESE LETTER JA;Lo;0;L;;;;;N;;;;; +1B90;SUNDANESE LETTER ZA;Lo;0;L;;;;;N;;;;; +1B91;SUNDANESE LETTER NYA;Lo;0;L;;;;;N;;;;; +1B92;SUNDANESE LETTER TA;Lo;0;L;;;;;N;;;;; +1B93;SUNDANESE LETTER DA;Lo;0;L;;;;;N;;;;; +1B94;SUNDANESE LETTER NA;Lo;0;L;;;;;N;;;;; +1B95;SUNDANESE LETTER PA;Lo;0;L;;;;;N;;;;; +1B96;SUNDANESE LETTER FA;Lo;0;L;;;;;N;;;;; +1B97;SUNDANESE LETTER VA;Lo;0;L;;;;;N;;;;; +1B98;SUNDANESE LETTER BA;Lo;0;L;;;;;N;;;;; +1B99;SUNDANESE LETTER MA;Lo;0;L;;;;;N;;;;; +1B9A;SUNDANESE LETTER YA;Lo;0;L;;;;;N;;;;; +1B9B;SUNDANESE LETTER RA;Lo;0;L;;;;;N;;;;; +1B9C;SUNDANESE LETTER LA;Lo;0;L;;;;;N;;;;; +1B9D;SUNDANESE LETTER WA;Lo;0;L;;;;;N;;;;; +1B9E;SUNDANESE LETTER SA;Lo;0;L;;;;;N;;;;; +1B9F;SUNDANESE LETTER XA;Lo;0;L;;;;;N;;;;; +1BA0;SUNDANESE LETTER HA;Lo;0;L;;;;;N;;;;; +1BA1;SUNDANESE CONSONANT SIGN PAMINGKAL;Mc;0;L;;;;;N;;;;; +1BA2;SUNDANESE CONSONANT SIGN PANYAKRA;Mn;0;NSM;;;;;N;;;;; +1BA3;SUNDANESE CONSONANT SIGN PANYIKU;Mn;0;NSM;;;;;N;;;;; +1BA4;SUNDANESE VOWEL SIGN PANGHULU;Mn;0;NSM;;;;;N;;;;; +1BA5;SUNDANESE VOWEL SIGN PANYUKU;Mn;0;NSM;;;;;N;;;;; +1BA6;SUNDANESE VOWEL SIGN PANAELAENG;Mc;0;L;;;;;N;;;;; +1BA7;SUNDANESE VOWEL SIGN PANOLONG;Mc;0;L;;;;;N;;;;; +1BA8;SUNDANESE VOWEL SIGN PAMEPET;Mn;0;NSM;;;;;N;;;;; +1BA9;SUNDANESE VOWEL SIGN PANEULEUNG;Mn;0;NSM;;;;;N;;;;; +1BAA;SUNDANESE SIGN PAMAAEH;Mc;9;L;;;;;N;;;;; +1BAE;SUNDANESE LETTER KHA;Lo;0;L;;;;;N;;;;; +1BAF;SUNDANESE LETTER SYA;Lo;0;L;;;;;N;;;;; +1BB0;SUNDANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1BB1;SUNDANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1BB2;SUNDANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1BB3;SUNDANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1BB4;SUNDANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1BB5;SUNDANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1BB6;SUNDANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1BB7;SUNDANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1BB8;SUNDANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1BB9;SUNDANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1C00;LEPCHA LETTER KA;Lo;0;L;;;;;N;;;;; +1C01;LEPCHA LETTER KLA;Lo;0;L;;;;;N;;;;; +1C02;LEPCHA LETTER KHA;Lo;0;L;;;;;N;;;;; +1C03;LEPCHA LETTER GA;Lo;0;L;;;;;N;;;;; +1C04;LEPCHA LETTER GLA;Lo;0;L;;;;;N;;;;; +1C05;LEPCHA LETTER NGA;Lo;0;L;;;;;N;;;;; +1C06;LEPCHA LETTER CA;Lo;0;L;;;;;N;;;;; +1C07;LEPCHA LETTER CHA;Lo;0;L;;;;;N;;;;; +1C08;LEPCHA LETTER JA;Lo;0;L;;;;;N;;;;; +1C09;LEPCHA LETTER NYA;Lo;0;L;;;;;N;;;;; +1C0A;LEPCHA LETTER TA;Lo;0;L;;;;;N;;;;; +1C0B;LEPCHA LETTER THA;Lo;0;L;;;;;N;;;;; +1C0C;LEPCHA LETTER DA;Lo;0;L;;;;;N;;;;; +1C0D;LEPCHA LETTER NA;Lo;0;L;;;;;N;;;;; +1C0E;LEPCHA LETTER PA;Lo;0;L;;;;;N;;;;; +1C0F;LEPCHA LETTER PLA;Lo;0;L;;;;;N;;;;; +1C10;LEPCHA LETTER PHA;Lo;0;L;;;;;N;;;;; +1C11;LEPCHA LETTER FA;Lo;0;L;;;;;N;;;;; +1C12;LEPCHA LETTER FLA;Lo;0;L;;;;;N;;;;; +1C13;LEPCHA LETTER BA;Lo;0;L;;;;;N;;;;; +1C14;LEPCHA LETTER BLA;Lo;0;L;;;;;N;;;;; +1C15;LEPCHA LETTER MA;Lo;0;L;;;;;N;;;;; +1C16;LEPCHA LETTER MLA;Lo;0;L;;;;;N;;;;; +1C17;LEPCHA LETTER TSA;Lo;0;L;;;;;N;;;;; +1C18;LEPCHA LETTER TSHA;Lo;0;L;;;;;N;;;;; +1C19;LEPCHA LETTER DZA;Lo;0;L;;;;;N;;;;; +1C1A;LEPCHA LETTER YA;Lo;0;L;;;;;N;;;;; +1C1B;LEPCHA LETTER RA;Lo;0;L;;;;;N;;;;; +1C1C;LEPCHA LETTER LA;Lo;0;L;;;;;N;;;;; +1C1D;LEPCHA LETTER HA;Lo;0;L;;;;;N;;;;; +1C1E;LEPCHA LETTER HLA;Lo;0;L;;;;;N;;;;; +1C1F;LEPCHA LETTER VA;Lo;0;L;;;;;N;;;;; +1C20;LEPCHA LETTER SA;Lo;0;L;;;;;N;;;;; +1C21;LEPCHA LETTER SHA;Lo;0;L;;;;;N;;;;; +1C22;LEPCHA LETTER WA;Lo;0;L;;;;;N;;;;; +1C23;LEPCHA LETTER A;Lo;0;L;;;;;N;;;;; +1C24;LEPCHA SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;; +1C25;LEPCHA SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;; +1C26;LEPCHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +1C27;LEPCHA VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +1C28;LEPCHA VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +1C29;LEPCHA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; +1C2A;LEPCHA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +1C2B;LEPCHA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +1C2C;LEPCHA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +1C2D;LEPCHA CONSONANT SIGN K;Mn;0;NSM;;;;;N;;;;; +1C2E;LEPCHA CONSONANT SIGN M;Mn;0;NSM;;;;;N;;;;; +1C2F;LEPCHA CONSONANT SIGN L;Mn;0;NSM;;;;;N;;;;; +1C30;LEPCHA CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;; +1C31;LEPCHA CONSONANT SIGN P;Mn;0;NSM;;;;;N;;;;; +1C32;LEPCHA CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;; +1C33;LEPCHA CONSONANT SIGN T;Mn;0;NSM;;;;;N;;;;; +1C34;LEPCHA CONSONANT SIGN NYIN-DO;Mc;0;L;;;;;N;;;;; +1C35;LEPCHA CONSONANT SIGN KANG;Mc;0;L;;;;;N;;;;; +1C36;LEPCHA SIGN RAN;Mn;0;NSM;;;;;N;;;;; +1C37;LEPCHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +1C3B;LEPCHA PUNCTUATION TA-ROL;Po;0;L;;;;;N;;;;; +1C3C;LEPCHA PUNCTUATION NYET THYOOM TA-ROL;Po;0;L;;;;;N;;;;; +1C3D;LEPCHA PUNCTUATION CER-WA;Po;0;L;;;;;N;;;;; +1C3E;LEPCHA PUNCTUATION TSHOOK CER-WA;Po;0;L;;;;;N;;;;; +1C3F;LEPCHA PUNCTUATION TSHOOK;Po;0;L;;;;;N;;;;; +1C40;LEPCHA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1C41;LEPCHA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1C42;LEPCHA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1C43;LEPCHA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1C44;LEPCHA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1C45;LEPCHA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1C46;LEPCHA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1C47;LEPCHA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1C48;LEPCHA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1C49;LEPCHA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1C4D;LEPCHA LETTER TTA;Lo;0;L;;;;;N;;;;; +1C4E;LEPCHA LETTER TTHA;Lo;0;L;;;;;N;;;;; +1C4F;LEPCHA LETTER DDA;Lo;0;L;;;;;N;;;;; +1C50;OL CHIKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1C51;OL CHIKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1C52;OL CHIKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1C53;OL CHIKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1C54;OL CHIKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1C55;OL CHIKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1C56;OL CHIKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1C57;OL CHIKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1C58;OL CHIKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1C59;OL CHIKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1C5A;OL CHIKI LETTER LA;Lo;0;L;;;;;N;;;;; +1C5B;OL CHIKI LETTER AT;Lo;0;L;;;;;N;;;;; +1C5C;OL CHIKI LETTER AG;Lo;0;L;;;;;N;;;;; +1C5D;OL CHIKI LETTER ANG;Lo;0;L;;;;;N;;;;; +1C5E;OL CHIKI LETTER AL;Lo;0;L;;;;;N;;;;; +1C5F;OL CHIKI LETTER LAA;Lo;0;L;;;;;N;;;;; +1C60;OL CHIKI LETTER AAK;Lo;0;L;;;;;N;;;;; +1C61;OL CHIKI LETTER AAJ;Lo;0;L;;;;;N;;;;; +1C62;OL CHIKI LETTER AAM;Lo;0;L;;;;;N;;;;; +1C63;OL CHIKI LETTER AAW;Lo;0;L;;;;;N;;;;; +1C64;OL CHIKI LETTER LI;Lo;0;L;;;;;N;;;;; +1C65;OL CHIKI LETTER IS;Lo;0;L;;;;;N;;;;; +1C66;OL CHIKI LETTER IH;Lo;0;L;;;;;N;;;;; +1C67;OL CHIKI LETTER INY;Lo;0;L;;;;;N;;;;; +1C68;OL CHIKI LETTER IR;Lo;0;L;;;;;N;;;;; +1C69;OL CHIKI LETTER LU;Lo;0;L;;;;;N;;;;; +1C6A;OL CHIKI LETTER UC;Lo;0;L;;;;;N;;;;; +1C6B;OL CHIKI LETTER UD;Lo;0;L;;;;;N;;;;; +1C6C;OL CHIKI LETTER UNN;Lo;0;L;;;;;N;;;;; +1C6D;OL CHIKI LETTER UY;Lo;0;L;;;;;N;;;;; +1C6E;OL CHIKI LETTER LE;Lo;0;L;;;;;N;;;;; +1C6F;OL CHIKI LETTER EP;Lo;0;L;;;;;N;;;;; +1C70;OL CHIKI LETTER EDD;Lo;0;L;;;;;N;;;;; +1C71;OL CHIKI LETTER EN;Lo;0;L;;;;;N;;;;; +1C72;OL CHIKI LETTER ERR;Lo;0;L;;;;;N;;;;; +1C73;OL CHIKI LETTER LO;Lo;0;L;;;;;N;;;;; +1C74;OL CHIKI LETTER OTT;Lo;0;L;;;;;N;;;;; +1C75;OL CHIKI LETTER OB;Lo;0;L;;;;;N;;;;; +1C76;OL CHIKI LETTER OV;Lo;0;L;;;;;N;;;;; +1C77;OL CHIKI LETTER OH;Lo;0;L;;;;;N;;;;; +1C78;OL CHIKI MU TTUDDAG;Lm;0;L;;;;;N;;;;; +1C79;OL CHIKI GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;; +1C7A;OL CHIKI MU-GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;; +1C7B;OL CHIKI RELAA;Lm;0;L;;;;;N;;;;; +1C7C;OL CHIKI PHAARKAA;Lm;0;L;;;;;N;;;;; +1C7D;OL CHIKI AHAD;Lm;0;L;;;;;N;;;;; +1C7E;OL CHIKI PUNCTUATION MUCAAD;Po;0;L;;;;;N;;;;; +1C7F;OL CHIKI PUNCTUATION DOUBLE MUCAAD;Po;0;L;;;;;N;;;;; +1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;; +1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;; +1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;; +1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;; +1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;; +1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;; +1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;; +1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;; +1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;; +1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;; +1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;; +1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;; +1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;; +1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;; +1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;; +1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;; +1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;; +1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;; +1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;; +1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;; +1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;; +1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;; +1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;; +1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;; +1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;; +1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;; +1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;; +1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;; +1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;; +1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;; +1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;; +1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;; +1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;; +1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;; +1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;; +1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;; +1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;; +1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;; +1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;; +1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;; +1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;; +1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;; +1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;; +1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;; +1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L;<super> 0041;;;;N;;;;; +1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;; +1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;; +1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;; +1D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;; +1D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;; +1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;; +1D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;; +1D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;; +1D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;; +1D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;; +1D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;; +1D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;; +1D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;; +1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;; +1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;; +1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;; +1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;; +1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;; +1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;; +1D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;; +1D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;; +1D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;; +1D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;; +1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;; +1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;; +1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;; +1D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;; +1D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;; +1D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;; +1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;; +1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;; +1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;; +1D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;; +1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;; +1D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;; +1D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;; +1D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;; +1D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;; +1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;; +1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;; +1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;; +1D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;; +1D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;; +1D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;; +1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;; +1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;; +1D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;; +1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;; +1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;; +1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;; +1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;; +1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;; +1D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;; +1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L;<sub> 0069;;;;N;;;;; +1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L;<sub> 0072;;;;N;;;;; +1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L;<sub> 0075;;;;N;;;;; +1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L;<sub> 0076;;;;N;;;;; +1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L;<sub> 03B2;;;;N;;;;; +1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L;<sub> 03B3;;;;N;;;;; +1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L;<sub> 03C1;;;;N;;;;; +1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L;<sub> 03C6;;;;N;;;;; +1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L;<sub> 03C7;;;;N;;;;; +1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;; +1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;; +1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L;<super> 043D;;;;N;;;;; +1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;A77D;;A77D +1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;; +1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;; +1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;; +1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;2C63;;2C63 +1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;; +1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;; +1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;; +1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L;<super> 0252;;;;N;;;;; +1D9C;MODIFIER LETTER SMALL C;Lm;0;L;<super> 0063;;;;N;;;;; +1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L;<super> 0255;;;;N;;;;; +1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L;<super> 00F0;;;;N;;;;; +1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;; +1DA0;MODIFIER LETTER SMALL F;Lm;0;L;<super> 0066;;;;N;;;;; +1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L;<super> 025F;;;;N;;;;; +1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L;<super> 0261;;;;N;;;;; +1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L;<super> 0265;;;;N;;;;; +1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L;<super> 0268;;;;N;;;;; +1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L;<super> 0269;;;;N;;;;; +1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L;<super> 026A;;;;N;;;;; +1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L;<super> 1D7B;;;;N;;;;; +1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L;<super> 029D;;;;N;;;;; +1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L;<super> 026D;;;;N;;;;; +1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L;<super> 1D85;;;;N;;;;; +1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L;<super> 029F;;;;N;;;;; +1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L;<super> 0271;;;;N;;;;; +1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L;<super> 0270;;;;N;;;;; +1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L;<super> 0272;;;;N;;;;; +1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L;<super> 0273;;;;N;;;;; +1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L;<super> 0274;;;;N;;;;; +1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L;<super> 0275;;;;N;;;;; +1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L;<super> 0278;;;;N;;;;; +1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L;<super> 0282;;;;N;;;;; +1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L;<super> 0283;;;;N;;;;; +1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L;<super> 01AB;;;;N;;;;; +1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L;<super> 0289;;;;N;;;;; +1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L;<super> 028A;;;;N;;;;; +1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L;<super> 1D1C;;;;N;;;;; +1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L;<super> 028B;;;;N;;;;; +1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L;<super> 028C;;;;N;;;;; +1DBB;MODIFIER LETTER SMALL Z;Lm;0;L;<super> 007A;;;;N;;;;; +1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L;<super> 0290;;;;N;;;;; +1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L;<super> 0291;;;;N;;;;; +1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L;<super> 0292;;;;N;;;;; +1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L;<super> 03B8;;;;N;;;;; +1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; +1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; +1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;; +1DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;; +1DC4;COMBINING MACRON-ACUTE;Mn;230;NSM;;;;;N;;;;; +1DC5;COMBINING GRAVE-MACRON;Mn;230;NSM;;;;;N;;;;; +1DC6;COMBINING MACRON-GRAVE;Mn;230;NSM;;;;;N;;;;; +1DC7;COMBINING ACUTE-MACRON;Mn;230;NSM;;;;;N;;;;; +1DC8;COMBINING GRAVE-ACUTE-GRAVE;Mn;230;NSM;;;;;N;;;;; +1DC9;COMBINING ACUTE-GRAVE-ACUTE;Mn;230;NSM;;;;;N;;;;; +1DCA;COMBINING LATIN SMALL LETTER R BELOW;Mn;220;NSM;;;;;N;;;;; +1DCB;COMBINING BREVE-MACRON;Mn;230;NSM;;;;;N;;;;; +1DCC;COMBINING MACRON-BREVE;Mn;230;NSM;;;;;N;;;;; +1DCD;COMBINING DOUBLE CIRCUMFLEX ABOVE;Mn;234;NSM;;;;;N;;;;; +1DCE;COMBINING OGONEK ABOVE;Mn;214;NSM;;;;;N;;;;; +1DCF;COMBINING ZIGZAG BELOW;Mn;220;NSM;;;;;N;;;;; +1DD0;COMBINING IS BELOW;Mn;202;NSM;;;;;N;;;;; +1DD1;COMBINING UR ABOVE;Mn;230;NSM;;;;;N;;;;; +1DD2;COMBINING US ABOVE;Mn;230;NSM;;;;;N;;;;; +1DD3;COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE;Mn;230;NSM;;;;;N;;;;; +1DD4;COMBINING LATIN SMALL LETTER AE;Mn;230;NSM;;;;;N;;;;; +1DD5;COMBINING LATIN SMALL LETTER AO;Mn;230;NSM;;;;;N;;;;; +1DD6;COMBINING LATIN SMALL LETTER AV;Mn;230;NSM;;;;;N;;;;; +1DD7;COMBINING LATIN SMALL LETTER C CEDILLA;Mn;230;NSM;;;;;N;;;;; +1DD8;COMBINING LATIN SMALL LETTER INSULAR D;Mn;230;NSM;;;;;N;;;;; +1DD9;COMBINING LATIN SMALL LETTER ETH;Mn;230;NSM;;;;;N;;;;; +1DDA;COMBINING LATIN SMALL LETTER G;Mn;230;NSM;;;;;N;;;;; +1DDB;COMBINING LATIN LETTER SMALL CAPITAL G;Mn;230;NSM;;;;;N;;;;; +1DDC;COMBINING LATIN SMALL LETTER K;Mn;230;NSM;;;;;N;;;;; +1DDD;COMBINING LATIN SMALL LETTER L;Mn;230;NSM;;;;;N;;;;; +1DDE;COMBINING LATIN LETTER SMALL CAPITAL L;Mn;230;NSM;;;;;N;;;;; +1DDF;COMBINING LATIN LETTER SMALL CAPITAL M;Mn;230;NSM;;;;;N;;;;; +1DE0;COMBINING LATIN SMALL LETTER N;Mn;230;NSM;;;;;N;;;;; +1DE1;COMBINING LATIN LETTER SMALL CAPITAL N;Mn;230;NSM;;;;;N;;;;; +1DE2;COMBINING LATIN LETTER SMALL CAPITAL R;Mn;230;NSM;;;;;N;;;;; +1DE3;COMBINING LATIN SMALL LETTER R ROTUNDA;Mn;230;NSM;;;;;N;;;;; +1DE4;COMBINING LATIN SMALL LETTER S;Mn;230;NSM;;;;;N;;;;; +1DE5;COMBINING LATIN SMALL LETTER LONG S;Mn;230;NSM;;;;;N;;;;; +1DE6;COMBINING LATIN SMALL LETTER Z;Mn;230;NSM;;;;;N;;;;; +1DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; +1DFF;COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW;Mn;220;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 +1E9C;LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;;; +1E9D;LATIN SMALL LETTER LONG S WITH HIGH STROKE;Ll;0;L;;;;;N;;;;; +1E9E;LATIN CAPITAL LETTER SHARP S;Lu;0;L;;;;;N;;;;00DF; +1E9F;LATIN SMALL LETTER DELTA;Ll;0;L;;;;;N;;;;; +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 +1EFA;LATIN CAPITAL LETTER MIDDLE-WELSH LL;Lu;0;L;;;;;N;;;;1EFB; +1EFB;LATIN SMALL LETTER MIDDLE-WELSH LL;Ll;0;L;;;;;N;;;1EFA;;1EFA +1EFC;LATIN CAPITAL LETTER MIDDLE-WELSH V;Lu;0;L;;;;;N;;;;1EFD; +1EFD;LATIN SMALL LETTER MIDDLE-WELSH V;Ll;0;L;;;;;N;;;1EFC;;1EFC +1EFE;LATIN CAPITAL LETTER Y WITH LOOP;Lu;0;L;;;;;N;;;;1EFF; +1EFF;LATIN SMALL LETTER Y WITH LOOP;Ll;0;L;;;;;N;;;1EFE;;1EFE +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;Cf;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;CS;<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;CS;;;;;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;;;;; +2053;SWUNG DASH;Po;0;ON;;;;;N;;;;; +2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;; +2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;; +2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;; +2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;; +205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;; +205D;TRICOLON;Po;0;ON;;;;;N;;;;; +205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;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;;;;; +2064;INVISIBLE PLUS;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;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;N;SUPERSCRIPT DIGIT FOUR;;;; +2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;; +2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;; +2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;; +2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;; +2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;; +207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES;<super> 002B;;;;N;;;;; +207B;SUPERSCRIPT MINUS;Sm;0;ES;<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;N;SUBSCRIPT DIGIT ZERO;;;; +2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;; +2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;; +2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;; +2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;; +2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;; +2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;; +2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;; +2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;; +2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;; +208A;SUBSCRIPT PLUS SIGN;Sm;0;ES;<sub> 002B;;;;N;;;;; +208B;SUBSCRIPT MINUS;Sm;0;ES;<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;;;; +2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0061;;;;N;;;;; +2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L;<sub> 0065;;;;N;;;;; +2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 006F;;;;N;;;;; +2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L;<sub> 0078;;;;N;;;;; +2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L;<sub> 0259;;;;N;;;;; +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;;;;; +20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;; +20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;; +20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;; +20B5;CEDI 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;;;;; +20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; +20EC;COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;; +20ED;COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;; +20EE;COMBINING LEFT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; +20EF;COMBINING RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; +20F0;COMBINING ASTERISK ABOVE;Mn;230;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;Lu;0;L;;;;;N;TURNED F;;;214E; +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;;;;; +213B;FACSIMILE SIGN;So;0;ON;<compat> 0046 0041 0058;;;;N;;;;; +213C;DOUBLE-STRUCK SMALL PI;Ll;0;L;<font> 03C0;;;;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;;;;; +214C;PER SIGN;So;0;ON;;;;;N;;;;; +214D;AKTIESELSKAB;So;0;ON;;;;;N;;;;; +214E;TURNED SMALL F;Ll;0;L;;;;;N;;;2132;;2132 +214F;SYMBOL FOR SAMARITAN SOURCE;So;0;L;;;;;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;Lu;0;L;;;;;N;;;;2184; +2184;LATIN SMALL LETTER REVERSED C;Ll;0;L;;;;;N;;;2183;;2183 +2185;ROMAN NUMERAL SIX LATE FORM;Nl;0;L;;;;6;N;;;;; +2186;ROMAN NUMERAL FIFTY EARLY FORM;Nl;0;L;;;;50;N;;;;; +2187;ROMAN NUMERAL FIFTY THOUSAND;Nl;0;L;;;;50000;N;;;;; +2188;ROMAN NUMERAL ONE HUNDRED THOUSAND;Nl;0;L;;;;100000;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;ES;;;;;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;So;0;ON;;;;;N;;;;; +23B5;BOTTOM SQUARE BRACKET;So;0;ON;;;;;N;;;;; +23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;So;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;;;;; +23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;; +23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;; +23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;; +23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;; +23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;; +23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;; +23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;; +23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;; +23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;; +23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;; +23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;; +23DA;EARTH GROUND;So;0;ON;;;;;N;;;;; +23DB;FUSE;So;0;ON;;;;;N;;;;; +23DC;TOP PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;; +23DD;BOTTOM PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;; +23DE;TOP CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; +23DF;BOTTOM CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; +23E0;TOP TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; +23E1;BOTTOM TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; +23E2;WHITE TRAPEZIUM;So;0;ON;;;;;N;;;;; +23E3;BENZENE RING WITH CIRCLE;So;0;ON;;;;;N;;;;; +23E4;STRAIGHTNESS;So;0;ON;;;;;N;;;;; +23E5;FLATNESS;So;0;ON;;;;;N;;;;; +23E6;AC CURRENT;So;0;ON;;;;;N;;;;; +23E7;ELECTRICAL INTERSECTION;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;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;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;ON;<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;;;;; +24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;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;;;;; +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;;;;; +2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;; +2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;; +2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;; +2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;; +2618;SHAMROCK;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;;;;; +267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;; +267F;WHEELCHAIR 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;;;;; +268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;; +268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;; +268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;; +268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;; +268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;; +268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;; +2690;WHITE FLAG;So;0;ON;;;;;N;;;;; +2691;BLACK FLAG;So;0;ON;;;;;N;;;;; +2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;; +2693;ANCHOR;So;0;ON;;;;;N;;;;; +2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;; +2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;; +2696;SCALES;So;0;ON;;;;;N;;;;; +2697;ALEMBIC;So;0;ON;;;;;N;;;;; +2698;FLOWER;So;0;ON;;;;;N;;;;; +2699;GEAR;So;0;ON;;;;;N;;;;; +269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;; +269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;; +269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;; +269D;OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; +26A0;WARNING SIGN;So;0;ON;;;;;N;;;;; +26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;; +26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;; +26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;; +26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;; +26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; +26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; +26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; +26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; +26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; +26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;; +26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;; +26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;; +26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;; +26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;; +26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;; +26B0;COFFIN;So;0;ON;;;;;N;;;;; +26B1;FUNERAL URN;So;0;ON;;;;;N;;;;; +26B2;NEUTER;So;0;ON;;;;;N;;;;; +26B3;CERES;So;0;ON;;;;;N;;;;; +26B4;PALLAS;So;0;ON;;;;;N;;;;; +26B5;JUNO;So;0;ON;;;;;N;;;;; +26B6;VESTA;So;0;ON;;;;;N;;;;; +26B7;CHIRON;So;0;ON;;;;;N;;;;; +26B8;BLACK MOON LILITH;So;0;ON;;;;;N;;;;; +26B9;SEXTILE;So;0;ON;;;;;N;;;;; +26BA;SEMISEXTILE;So;0;ON;;;;;N;;;;; +26BB;QUINCUNX;So;0;ON;;;;;N;;;;; +26BC;SESQUIQUADRATE;So;0;ON;;;;;N;;;;; +26C0;WHITE DRAUGHTS MAN;So;0;ON;;;;;N;;;;; +26C1;WHITE DRAUGHTS KING;So;0;ON;;;;;N;;;;; +26C2;BLACK DRAUGHTS MAN;So;0;ON;;;;;N;;;;; +26C3;BLACK DRAUGHTS KING;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;;;; +27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;; +27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;; +27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;; +27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;; +27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;; +27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;; +27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;; +27C7;OR WITH DOT INSIDE;Sm;0;ON;;;;;N;;;;; +27C8;REVERSE SOLIDUS PRECEDING SUBSET;Sm;0;ON;;;;;Y;;;;; +27C9;SUPERSET PRECEDING SOLIDUS;Sm;0;ON;;;;;Y;;;;; +27CA;VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +27CC;LONG DIVISION;Sm;0;ON;;;;;Y;;;;; +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;;;;; +27EC;MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; +27ED;MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; +27EE;MATHEMATICAL LEFT FLATTENED PARENTHESIS;Ps;0;ON;;;;;Y;;;;; +27EF;MATHEMATICAL RIGHT FLATTENED PARENTHESIS;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;L;;;;;N;;;;; +2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;; +2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;; +2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;; +2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;; +2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;; +2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;; +2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;; +2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;; +2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;; +280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;; +280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;; +280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;; +280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;; +280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;; +280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;; +2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;; +2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;; +2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;; +2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;; +2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;; +2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;; +2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;; +2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;; +2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;; +2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;; +281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;; +281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;; +281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;; +281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;; +281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;; +281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;; +2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;; +2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;; +2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;; +2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;; +2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;; +2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;; +2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;; +2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;; +2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;; +2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;; +282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;; +282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;; +282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;; +282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;; +282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;; +282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;; +2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;; +2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;; +2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;; +2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;; +2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;; +2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;; +2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;; +2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;; +2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;; +2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;; +283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;; +283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;; +283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;; +283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;; +283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;; +283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;; +2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;; +2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;; +2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;; +2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;; +2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;; +2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;; +2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;; +2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;; +2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;; +2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;; +284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;; +284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;; +284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;; +284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;; +284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;; +284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;; +2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;; +2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;; +2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;; +2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;; +2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;; +2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;; +2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;; +2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;; +2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;; +2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;; +285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;; +285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;; +285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;; +285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;; +285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;; +285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;; +2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;; +2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;; +2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;; +2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;; +2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;; +2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;; +2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;; +2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;; +2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;; +2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;; +286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;; +286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;; +286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;; +286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;; +286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;; +286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;; +2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;; +2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;; +2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;; +2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;; +2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;; +2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;; +2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;; +2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;; +2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;; +2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;; +287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;; +287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;; +287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;; +287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;; +287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;; +287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;; +2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;; +2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;; +2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;; +2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;; +2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;; +2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;; +2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;; +2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;; +2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;; +2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;; +288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;; +288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;; +288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;; +288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;; +288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;; +288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;; +2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;; +2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;; +2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;; +2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;; +2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;; +2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;; +2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;; +2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;; +2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;; +2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;; +289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;; +289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;; +289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;; +289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;; +289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;; +289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;; +28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;; +28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;; +28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;; +28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;; +28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;; +28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;; +28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;; +28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;; +28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;; +28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;; +28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;; +28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;; +28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;; +28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;; +28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;; +28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;; +28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;; +28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;; +28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;; +28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;; +28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;; +28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;; +28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;; +28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;; +28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;; +28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;; +28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;; +28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;; +28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;; +28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;; +28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;; +28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;; +28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;; +28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;; +28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;; +28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;; +28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;; +28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;; +28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;; +28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;; +28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;; +28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;; +28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;; +28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;; +28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;; +28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;; +28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;; +28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;; +28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;; +28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;; +28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;; +28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;; +28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;; +28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;; +28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;; +28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;; +28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;; +28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;; +28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;; +28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;; +28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;; +28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;; +28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;; +28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;; +28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;; +28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;; +28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;; +28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;; +28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;; +28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;; +28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;; +28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;; +28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;; +28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;; +28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;; +28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;; +28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;; +28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;; +28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;; +28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;; +28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;; +28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;; +28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;; +28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;; +28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;; +28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;; +28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;; +28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;; +28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;; +28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;; +28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;; +28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;; +28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;; +28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;; +28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;; +28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;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;;;;; +2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; +2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; +2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; +2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; +2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;; +2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; +2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; +2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; +2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; +2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; +2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; +2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; +2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;; +2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;; +2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; +2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; +2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; +2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; +2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; +2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; +2B14;SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; +2B15;SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; +2B16;DIAMOND WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; +2B17;DIAMOND WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; +2B18;DIAMOND WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; +2B19;DIAMOND WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; +2B1A;DOTTED SQUARE;So;0;ON;;;;;N;;;;; +2B1B;BLACK LARGE SQUARE;So;0;ON;;;;;N;;;;; +2B1C;WHITE LARGE SQUARE;So;0;ON;;;;;N;;;;; +2B1D;BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;; +2B1E;WHITE VERY SMALL SQUARE;So;0;ON;;;;;N;;;;; +2B1F;BLACK PENTAGON;So;0;ON;;;;;N;;;;; +2B20;WHITE PENTAGON;So;0;ON;;;;;N;;;;; +2B21;WHITE HEXAGON;So;0;ON;;;;;N;;;;; +2B22;BLACK HEXAGON;So;0;ON;;;;;N;;;;; +2B23;HORIZONTAL BLACK HEXAGON;So;0;ON;;;;;N;;;;; +2B24;BLACK LARGE CIRCLE;So;0;ON;;;;;N;;;;; +2B25;BLACK MEDIUM DIAMOND;So;0;ON;;;;;N;;;;; +2B26;WHITE MEDIUM DIAMOND;So;0;ON;;;;;N;;;;; +2B27;BLACK MEDIUM LOZENGE;So;0;ON;;;;;N;;;;; +2B28;WHITE MEDIUM LOZENGE;So;0;ON;;;;;N;;;;; +2B29;BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; +2B2A;BLACK SMALL LOZENGE;So;0;ON;;;;;N;;;;; +2B2B;WHITE SMALL LOZENGE;So;0;ON;;;;;N;;;;; +2B2C;BLACK HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;; +2B2D;WHITE HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;; +2B2E;BLACK VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;; +2B2F;WHITE VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;; +2B30;LEFT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +2B31;THREE LEFTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; +2B32;LEFT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; +2B33;LONG LEFTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; +2B34;LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2B35;LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2B36;LEFTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2B37;LEFTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +2B38;LEFTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; +2B39;LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2B3A;LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2B3B;LEFTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; +2B3C;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2B3D;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2B3E;LEFTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; +2B3F;WAVE ARROW POINTING DIRECTLY LEFT;Sm;0;ON;;;;;N;;;;; +2B40;EQUALS SIGN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2B41;REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2B42;LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; +2B43;RIGHTWARDS ARROW THROUGH GREATER-THAN;Sm;0;ON;;;;;N;;;;; +2B44;RIGHTWARDS ARROW THROUGH SUPERSET;Sm;0;ON;;;;;N;;;;; +2B45;LEFTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;; +2B46;RIGHTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;; +2B47;REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2B48;RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; +2B49;TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2B4A;LEFTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; +2B4B;LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; +2B4C;RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; +2B50;WHITE MEDIUM STAR;So;0;ON;;;;;N;;;;; +2B51;BLACK SMALL STAR;So;0;ON;;;;;N;;;;; +2B52;WHITE SMALL STAR;So;0;ON;;;;;N;;;;; +2B53;BLACK RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;; +2B54;WHITE RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;; +2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30; +2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31; +2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32; +2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33; +2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34; +2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35; +2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36; +2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37; +2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38; +2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39; +2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A; +2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B; +2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C; +2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D; +2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E; +2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F; +2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40; +2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41; +2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42; +2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43; +2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44; +2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45; +2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46; +2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47; +2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48; +2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49; +2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A; +2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B; +2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C; +2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D; +2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E; +2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F; +2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50; +2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51; +2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52; +2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53; +2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54; +2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55; +2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56; +2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57; +2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58; +2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59; +2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A; +2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B; +2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C; +2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D; +2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E; +2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00 +2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01 +2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02 +2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03 +2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04 +2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05 +2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06 +2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07 +2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08 +2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09 +2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A +2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B +2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C +2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D +2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E +2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F +2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10 +2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11 +2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12 +2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13 +2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14 +2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15 +2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16 +2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17 +2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18 +2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19 +2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A +2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B +2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C +2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D +2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E +2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F +2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20 +2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21 +2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22 +2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23 +2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24 +2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25 +2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26 +2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27 +2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28 +2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29 +2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A +2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B +2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C +2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D +2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E +2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61; +2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60 +2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B; +2C63;LATIN CAPITAL LETTER P WITH STROKE;Lu;0;L;;;;;N;;;;1D7D; +2C64;LATIN CAPITAL LETTER R WITH TAIL;Lu;0;L;;;;;N;;;;027D; +2C65;LATIN SMALL LETTER A WITH STROKE;Ll;0;L;;;;;N;;;023A;;023A +2C66;LATIN SMALL LETTER T WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;023E;;023E +2C67;LATIN CAPITAL LETTER H WITH DESCENDER;Lu;0;L;;;;;N;;;;2C68; +2C68;LATIN SMALL LETTER H WITH DESCENDER;Ll;0;L;;;;;N;;;2C67;;2C67 +2C69;LATIN CAPITAL LETTER K WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6A; +2C6A;LATIN SMALL LETTER K WITH DESCENDER;Ll;0;L;;;;;N;;;2C69;;2C69 +2C6B;LATIN CAPITAL LETTER Z WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6C; +2C6C;LATIN SMALL LETTER Z WITH DESCENDER;Ll;0;L;;;;;N;;;2C6B;;2C6B +2C6D;LATIN CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;0251; +2C6E;LATIN CAPITAL LETTER M WITH HOOK;Lu;0;L;;;;;N;;;;0271; +2C6F;LATIN CAPITAL LETTER TURNED A;Lu;0;L;;;;;N;;;;0250; +2C71;LATIN SMALL LETTER V WITH RIGHT HOOK;Ll;0;L;;;;;N;;;;; +2C72;LATIN CAPITAL LETTER W WITH HOOK;Lu;0;L;;;;;N;;;;2C73; +2C73;LATIN SMALL LETTER W WITH HOOK;Ll;0;L;;;;;N;;;2C72;;2C72 +2C74;LATIN SMALL LETTER V WITH CURL;Ll;0;L;;;;;N;;;;; +2C75;LATIN CAPITAL LETTER HALF H;Lu;0;L;;;;;N;;;;2C76; +2C76;LATIN SMALL LETTER HALF H;Ll;0;L;;;;;N;;;2C75;;2C75 +2C77;LATIN SMALL LETTER TAILLESS PHI;Ll;0;L;;;;;N;;;;; +2C78;LATIN SMALL LETTER E WITH NOTCH;Ll;0;L;;;;;N;;;;; +2C79;LATIN SMALL LETTER TURNED R WITH TAIL;Ll;0;L;;;;;N;;;;; +2C7A;LATIN SMALL LETTER O WITH LOW RING INSIDE;Ll;0;L;;;;;N;;;;; +2C7B;LATIN LETTER SMALL CAPITAL TURNED E;Ll;0;L;;;;;N;;;;; +2C7C;LATIN SUBSCRIPT SMALL LETTER J;Ll;0;L;<sub> 006A;;;;N;;;;; +2C7D;MODIFIER LETTER CAPITAL V;Lm;0;L;<super> 0056;;;;N;;;;; +2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81; +2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80 +2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83; +2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82 +2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85; +2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84 +2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87; +2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86 +2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89; +2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88 +2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B; +2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A +2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D; +2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C +2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F; +2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E +2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91; +2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90 +2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93; +2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92 +2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95; +2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94 +2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97; +2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96 +2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99; +2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98 +2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B; +2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A +2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D; +2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C +2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F; +2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E +2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1; +2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0 +2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3; +2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2 +2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5; +2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4 +2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7; +2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6 +2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9; +2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8 +2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB; +2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA +2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD; +2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC +2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF; +2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE +2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1; +2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0 +2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3; +2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2 +2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5; +2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4 +2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7; +2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6 +2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9; +2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8 +2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB; +2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA +2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD; +2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC +2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF; +2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE +2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1; +2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0 +2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3; +2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2 +2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5; +2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4 +2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7; +2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6 +2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9; +2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8 +2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB; +2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA +2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD; +2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC +2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF; +2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE +2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1; +2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0 +2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3; +2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2 +2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5; +2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4 +2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7; +2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6 +2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9; +2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8 +2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB; +2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA +2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD; +2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC +2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF; +2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE +2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1; +2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0 +2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3; +2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2 +2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;; +2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;; +2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;; +2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;; +2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;; +2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;; +2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;; +2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;; +2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; +2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; +2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;; +2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;; +2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;; +2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;; +2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;Khutsuri;10A0;;10A0 +2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;Khutsuri;10A1;;10A1 +2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;Khutsuri;10A2;;10A2 +2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;Khutsuri;10A3;;10A3 +2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;Khutsuri;10A4;;10A4 +2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;Khutsuri;10A5;;10A5 +2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;Khutsuri;10A6;;10A6 +2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;Khutsuri;10A7;;10A7 +2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;Khutsuri;10A8;;10A8 +2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;Khutsuri;10A9;;10A9 +2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;Khutsuri;10AA;;10AA +2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;Khutsuri;10AB;;10AB +2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;Khutsuri;10AC;;10AC +2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;Khutsuri;10AD;;10AD +2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;Khutsuri;10AE;;10AE +2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;Khutsuri;10AF;;10AF +2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;Khutsuri;10B0;;10B0 +2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;Khutsuri;10B1;;10B1 +2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;Khutsuri;10B2;;10B2 +2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;Khutsuri;10B3;;10B3 +2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;Khutsuri;10B4;;10B4 +2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;Khutsuri;10B5;;10B5 +2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;Khutsuri;10B6;;10B6 +2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;Khutsuri;10B7;;10B7 +2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;Khutsuri;10B8;;10B8 +2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;Khutsuri;10B9;;10B9 +2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;Khutsuri;10BA;;10BA +2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;Khutsuri;10BB;;10BB +2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;Khutsuri;10BC;;10BC +2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;Khutsuri;10BD;;10BD +2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;Khutsuri;10BE;;10BE +2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;Khutsuri;10BF;;10BF +2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;Khutsuri;10C0;;10C0 +2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;Khutsuri;10C1;;10C1 +2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;Khutsuri;10C2;;10C2 +2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;Khutsuri;10C3;;10C3 +2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;Khutsuri;10C4;;10C4 +2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;Khutsuri;10C5;;10C5 +2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;; +2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;; +2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;; +2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;; +2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;; +2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;; +2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;; +2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;; +2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;; +2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;; +2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;; +2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;; +2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;; +2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;; +2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;; +2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;; +2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;Tuareg yab;;; +2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;; +2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;; +2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;; +2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;; +2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;; +2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;; +2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;; +2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;; +2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;; +2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;; +2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;; +2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;; +2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;; +2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;; +2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;; +2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;; +2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;; +2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;; +2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;Tuareg yaw;;; +2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;; +2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;; +2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;; +2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;; +2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;Adrar yaj;;; +2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;; +2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;; +2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;; +2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;; +2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;; +2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;; +2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;; +2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;; +2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;; +2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;; +2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;; +2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;harpoon yaz;;; +2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;; +2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L;<super> 2D61;;;;N;;tamatart;;; +2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;; +2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;; +2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;; +2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;; +2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;; +2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;; +2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;; +2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;; +2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;; +2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;; +2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;; +2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;; +2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;; +2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;; +2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;; +2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;; +2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;; +2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;; +2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;; +2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;; +2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;; +2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;; +2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;; +2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;; +2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;; +2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;; +2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;; +2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;; +2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;; +2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;; +2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;; +2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;; +2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;; +2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;; +2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;; +2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;; +2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;; +2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; +2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; +2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; +2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;; +2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;; +2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; +2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; +2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;; +2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;; +2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;; +2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;; +2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;; +2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;; +2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;; +2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;; +2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;; +2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;; +2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;; +2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;; +2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;; +2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;; +2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;; +2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;; +2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;; +2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;; +2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;; +2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;; +2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;; +2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;; +2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;; +2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;; +2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;; +2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;; +2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;; +2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;; +2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;; +2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;; +2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;; +2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;; +2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;; +2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;; +2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;; +2DE0;COMBINING CYRILLIC LETTER BE;Mn;230;NSM;;;;;N;;;;; +2DE1;COMBINING CYRILLIC LETTER VE;Mn;230;NSM;;;;;N;;;;; +2DE2;COMBINING CYRILLIC LETTER GHE;Mn;230;NSM;;;;;N;;;;; +2DE3;COMBINING CYRILLIC LETTER DE;Mn;230;NSM;;;;;N;;;;; +2DE4;COMBINING CYRILLIC LETTER ZHE;Mn;230;NSM;;;;;N;;;;; +2DE5;COMBINING CYRILLIC LETTER ZE;Mn;230;NSM;;;;;N;;;;; +2DE6;COMBINING CYRILLIC LETTER KA;Mn;230;NSM;;;;;N;;;;; +2DE7;COMBINING CYRILLIC LETTER EL;Mn;230;NSM;;;;;N;;;;; +2DE8;COMBINING CYRILLIC LETTER EM;Mn;230;NSM;;;;;N;;;;; +2DE9;COMBINING CYRILLIC LETTER EN;Mn;230;NSM;;;;;N;;;;; +2DEA;COMBINING CYRILLIC LETTER O;Mn;230;NSM;;;;;N;;;;; +2DEB;COMBINING CYRILLIC LETTER PE;Mn;230;NSM;;;;;N;;;;; +2DEC;COMBINING CYRILLIC LETTER ER;Mn;230;NSM;;;;;N;;;;; +2DED;COMBINING CYRILLIC LETTER ES;Mn;230;NSM;;;;;N;;;;; +2DEE;COMBINING CYRILLIC LETTER TE;Mn;230;NSM;;;;;N;;;;; +2DEF;COMBINING CYRILLIC LETTER HA;Mn;230;NSM;;;;;N;;;;; +2DF0;COMBINING CYRILLIC LETTER TSE;Mn;230;NSM;;;;;N;;;;; +2DF1;COMBINING CYRILLIC LETTER CHE;Mn;230;NSM;;;;;N;;;;; +2DF2;COMBINING CYRILLIC LETTER SHA;Mn;230;NSM;;;;;N;;;;; +2DF3;COMBINING CYRILLIC LETTER SHCHA;Mn;230;NSM;;;;;N;;;;; +2DF4;COMBINING CYRILLIC LETTER FITA;Mn;230;NSM;;;;;N;;;;; +2DF5;COMBINING CYRILLIC LETTER ES-TE;Mn;230;NSM;;;;;N;;;;; +2DF6;COMBINING CYRILLIC LETTER A;Mn;230;NSM;;;;;N;;;;; +2DF7;COMBINING CYRILLIC LETTER IE;Mn;230;NSM;;;;;N;;;;; +2DF8;COMBINING CYRILLIC LETTER DJERV;Mn;230;NSM;;;;;N;;;;; +2DF9;COMBINING CYRILLIC LETTER MONOGRAPH UK;Mn;230;NSM;;;;;N;;;;; +2DFA;COMBINING CYRILLIC LETTER YAT;Mn;230;NSM;;;;;N;;;;; +2DFB;COMBINING CYRILLIC LETTER YU;Mn;230;NSM;;;;;N;;;;; +2DFC;COMBINING CYRILLIC LETTER IOTIFIED A;Mn;230;NSM;;;;;N;;;;; +2DFD;COMBINING CYRILLIC LETTER LITTLE YUS;Mn;230;NSM;;;;;N;;;;; +2DFE;COMBINING CYRILLIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;; +2DFF;COMBINING CYRILLIC LETTER IOTIFIED BIG YUS;Mn;230;NSM;;;;;N;;;;; +2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; +2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; +2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; +2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; +2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; +2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; +2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; +2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; +2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;; +2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;; +2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;; +2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;; +2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;; +2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;; +2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;; +2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;; +2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; +2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; +2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;; +2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;; +2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;; +2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;; +2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;; +2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;; +2E18;INVERTED INTERROBANG;Po;0;ON;;;;;N;;;;; +2E19;PALM BRANCH;Po;0;ON;;;;;N;;;;; +2E1A;HYPHEN WITH DIAERESIS;Pd;0;ON;;;;;N;;;;; +2E1B;TILDE WITH RING ABOVE;Po;0;ON;;;;;N;;;;; +2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;; +2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;; +2E1E;TILDE WITH DOT ABOVE;Po;0;ON;;;;;N;;;;; +2E1F;TILDE WITH DOT BELOW;Po;0;ON;;;;;N;;;;; +2E20;LEFT VERTICAL BAR WITH QUILL;Pi;0;ON;;;;;Y;;;;; +2E21;RIGHT VERTICAL BAR WITH QUILL;Pf;0;ON;;;;;Y;;;;; +2E22;TOP LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;; +2E23;TOP RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;; +2E24;BOTTOM LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;; +2E25;BOTTOM RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;; +2E26;LEFT SIDEWAYS U BRACKET;Ps;0;ON;;;;;Y;;;;; +2E27;RIGHT SIDEWAYS U BRACKET;Pe;0;ON;;;;;Y;;;;; +2E28;LEFT DOUBLE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; +2E29;RIGHT DOUBLE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; +2E2A;TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +2E2B;ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;; +2E2C;SQUARED FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +2E2D;FIVE DOT MARK;Po;0;ON;;;;;N;;;;; +2E2E;REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;; +2E2F;VERTICAL TILDE;Lm;0;ON;;;;;N;;;;; +2E30;RING POINT;Po;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;Po;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;;;;; +312D;BOPOMOFO LETTER IH;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;;;;; +31C0;CJK STROKE T;So;0;ON;;;;;N;;;;; +31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;; +31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;; +31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;; +31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;; +31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;; +31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;; +31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;; +31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;; +31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;; +31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;; +31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;; +31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;; +31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;; +31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;; +31CF;CJK STROKE N;So;0;ON;;;;;N;;;;; +31D0;CJK STROKE H;So;0;ON;;;;;N;;;;; +31D1;CJK STROKE S;So;0;ON;;;;;N;;;;; +31D2;CJK STROKE P;So;0;ON;;;;;N;;;;; +31D3;CJK STROKE SP;So;0;ON;;;;;N;;;;; +31D4;CJK STROKE D;So;0;ON;;;;;N;;;;; +31D5;CJK STROKE HZ;So;0;ON;;;;;N;;;;; +31D6;CJK STROKE HG;So;0;ON;;;;;N;;;;; +31D7;CJK STROKE SZ;So;0;ON;;;;;N;;;;; +31D8;CJK STROKE SWZ;So;0;ON;;;;;N;;;;; +31D9;CJK STROKE ST;So;0;ON;;;;;N;;;;; +31DA;CJK STROKE SG;So;0;ON;;;;;N;;;;; +31DB;CJK STROKE PD;So;0;ON;;;;;N;;;;; +31DC;CJK STROKE PZ;So;0;ON;;;;;N;;;;; +31DD;CJK STROKE TN;So;0;ON;;;;;N;;;;; +31DE;CJK STROKE SZZ;So;0;ON;;;;;N;;;;; +31DF;CJK STROKE SWG;So;0;ON;;;;;N;;;;; +31E0;CJK STROKE HXWG;So;0;ON;;;;;N;;;;; +31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;; +31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;; +31E3;CJK STROKE Q;So;0;ON;;;;;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;;;; +321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON;<compat> 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;; +321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON;<compat> 0028 110B 1169 1112 116E 0029;;;;N;;;;; +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;;;;; +3250;PARTNERSHIP SIGN;So;0;ON;<square> 0050 0054 0045;;;;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;;;; +327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON;<circle> 110E 1161 11B7 1100 1169;;;;N;;;;; +327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON;<circle> 110C 116E 110B 1174;;;;N;;;;; +327E;CIRCLED HANGUL IEUNG U;So;0;ON;<circle> 110B 116E;;;;N;;;;; +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;;;;; +32CC;SQUARE HG;So;0;ON;<square> 0048 0067;;;;N;;;;; +32CD;SQUARE ERG;So;0;ON;<square> 0065 0072 0067;;;;N;;;;; +32CE;SQUARE EV;So;0;ON;<square> 0065 0056;;;;N;;;;; +32CF;LIMITED LIABILITY SIGN;So;0;ON;<square> 004C 0054 0044;;;;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;;;;; +3377;SQUARE DM;So;0;ON;<square> 0064 006D;;;;N;;;;; +3378;SQUARE DM SQUARED;So;0;ON;<square> 0064 006D 00B2;;;;N;;;;; +3379;SQUARE DM CUBED;So;0;ON;<square> 0064 006D 00B3;;;;N;;;;; +337A;SQUARE IU;So;0;ON;<square> 0049 0055;;;;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;;;; +33DE;SQUARE V OVER M;So;0;ON;<square> 0056 2215 006D;;;;N;;;;; +33DF;SQUARE A OVER M;So;0;ON;<square> 0041 2215 006D;;;;N;;;;; +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;;;;; +33FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;; +3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;; +4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;; +4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;; +4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;; +4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;; +4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;; +4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; +4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;; +4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;; +4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;; +4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;; +4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;; +4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;; +4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;; +4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;; +4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;; +4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;; +4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;; +4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; +4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;; +4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;; +4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;; +4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;; +4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;; +4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;; +4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;; +4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;; +4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;; +4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;; +4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;; +4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;; +4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;; +4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;; +4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;; +4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;; +4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;; +4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;; +4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;; +4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;; +4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; +4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;; +4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;; +4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;; +4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; +4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;; +4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;; +4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;; +4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;; +4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;; +4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;; +4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;; +4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;; +4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;; +4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;; +4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;; +4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;; +4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;; +4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;; +4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;; +4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;; +4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;; +4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;; +4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;; +4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;; +4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;; +4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;; +4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;; +9FC3;<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;Lm;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;;;;; +A500;VAI SYLLABLE EE;Lo;0;L;;;;;N;;;;; +A501;VAI SYLLABLE EEN;Lo;0;L;;;;;N;;;;; +A502;VAI SYLLABLE HEE;Lo;0;L;;;;;N;;;;; +A503;VAI SYLLABLE WEE;Lo;0;L;;;;;N;;;;; +A504;VAI SYLLABLE WEEN;Lo;0;L;;;;;N;;;;; +A505;VAI SYLLABLE PEE;Lo;0;L;;;;;N;;;;; +A506;VAI SYLLABLE BHEE;Lo;0;L;;;;;N;;;;; +A507;VAI SYLLABLE BEE;Lo;0;L;;;;;N;;;;; +A508;VAI SYLLABLE MBEE;Lo;0;L;;;;;N;;;;; +A509;VAI SYLLABLE KPEE;Lo;0;L;;;;;N;;;;; +A50A;VAI SYLLABLE MGBEE;Lo;0;L;;;;;N;;;;; +A50B;VAI SYLLABLE GBEE;Lo;0;L;;;;;N;;;;; +A50C;VAI SYLLABLE FEE;Lo;0;L;;;;;N;;;;; +A50D;VAI SYLLABLE VEE;Lo;0;L;;;;;N;;;;; +A50E;VAI SYLLABLE TEE;Lo;0;L;;;;;N;;;;; +A50F;VAI SYLLABLE THEE;Lo;0;L;;;;;N;;;;; +A510;VAI SYLLABLE DHEE;Lo;0;L;;;;;N;;;;; +A511;VAI SYLLABLE DHHEE;Lo;0;L;;;;;N;;;;; +A512;VAI SYLLABLE LEE;Lo;0;L;;;;;N;;;;; +A513;VAI SYLLABLE REE;Lo;0;L;;;;;N;;;;; +A514;VAI SYLLABLE DEE;Lo;0;L;;;;;N;;;;; +A515;VAI SYLLABLE NDEE;Lo;0;L;;;;;N;;;;; +A516;VAI SYLLABLE SEE;Lo;0;L;;;;;N;;;;; +A517;VAI SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; +A518;VAI SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; +A519;VAI SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; +A51A;VAI SYLLABLE CEE;Lo;0;L;;;;;N;;;;; +A51B;VAI SYLLABLE JEE;Lo;0;L;;;;;N;;;;; +A51C;VAI SYLLABLE NJEE;Lo;0;L;;;;;N;;;;; +A51D;VAI SYLLABLE YEE;Lo;0;L;;;;;N;;;;; +A51E;VAI SYLLABLE KEE;Lo;0;L;;;;;N;;;;; +A51F;VAI SYLLABLE NGGEE;Lo;0;L;;;;;N;;;;; +A520;VAI SYLLABLE GEE;Lo;0;L;;;;;N;;;;; +A521;VAI SYLLABLE MEE;Lo;0;L;;;;;N;;;;; +A522;VAI SYLLABLE NEE;Lo;0;L;;;;;N;;;;; +A523;VAI SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; +A524;VAI SYLLABLE I;Lo;0;L;;;;;N;;;;; +A525;VAI SYLLABLE IN;Lo;0;L;;;;;N;;;;; +A526;VAI SYLLABLE HI;Lo;0;L;;;;;N;;;;; +A527;VAI SYLLABLE HIN;Lo;0;L;;;;;N;;;;; +A528;VAI SYLLABLE WI;Lo;0;L;;;;;N;;;;; +A529;VAI SYLLABLE WIN;Lo;0;L;;;;;N;;;;; +A52A;VAI SYLLABLE PI;Lo;0;L;;;;;N;;;;; +A52B;VAI SYLLABLE BHI;Lo;0;L;;;;;N;;;;; +A52C;VAI SYLLABLE BI;Lo;0;L;;;;;N;;;;; +A52D;VAI SYLLABLE MBI;Lo;0;L;;;;;N;;;;; +A52E;VAI SYLLABLE KPI;Lo;0;L;;;;;N;;;;; +A52F;VAI SYLLABLE MGBI;Lo;0;L;;;;;N;;;;; +A530;VAI SYLLABLE GBI;Lo;0;L;;;;;N;;;;; +A531;VAI SYLLABLE FI;Lo;0;L;;;;;N;;;;; +A532;VAI SYLLABLE VI;Lo;0;L;;;;;N;;;;; +A533;VAI SYLLABLE TI;Lo;0;L;;;;;N;;;;; +A534;VAI SYLLABLE THI;Lo;0;L;;;;;N;;;;; +A535;VAI SYLLABLE DHI;Lo;0;L;;;;;N;;;;; +A536;VAI SYLLABLE DHHI;Lo;0;L;;;;;N;;;;; +A537;VAI SYLLABLE LI;Lo;0;L;;;;;N;;;;; +A538;VAI SYLLABLE RI;Lo;0;L;;;;;N;;;;; +A539;VAI SYLLABLE DI;Lo;0;L;;;;;N;;;;; +A53A;VAI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; +A53B;VAI SYLLABLE SI;Lo;0;L;;;;;N;;;;; +A53C;VAI SYLLABLE SHI;Lo;0;L;;;;;N;;;;; +A53D;VAI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; +A53E;VAI SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; +A53F;VAI SYLLABLE CI;Lo;0;L;;;;;N;;;;; +A540;VAI SYLLABLE JI;Lo;0;L;;;;;N;;;;; +A541;VAI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; +A542;VAI SYLLABLE YI;Lo;0;L;;;;;N;;;;; +A543;VAI SYLLABLE KI;Lo;0;L;;;;;N;;;;; +A544;VAI SYLLABLE NGGI;Lo;0;L;;;;;N;;;;; +A545;VAI SYLLABLE GI;Lo;0;L;;;;;N;;;;; +A546;VAI SYLLABLE MI;Lo;0;L;;;;;N;;;;; +A547;VAI SYLLABLE NI;Lo;0;L;;;;;N;;;;; +A548;VAI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; +A549;VAI SYLLABLE A;Lo;0;L;;;;;N;;;;; +A54A;VAI SYLLABLE AN;Lo;0;L;;;;;N;;;;; +A54B;VAI SYLLABLE NGAN;Lo;0;L;;;;;N;;;;; +A54C;VAI SYLLABLE HA;Lo;0;L;;;;;N;;;;; +A54D;VAI SYLLABLE HAN;Lo;0;L;;;;;N;;;;; +A54E;VAI SYLLABLE WA;Lo;0;L;;;;;N;;;;; +A54F;VAI SYLLABLE WAN;Lo;0;L;;;;;N;;;;; +A550;VAI SYLLABLE PA;Lo;0;L;;;;;N;;;;; +A551;VAI SYLLABLE BHA;Lo;0;L;;;;;N;;;;; +A552;VAI SYLLABLE BA;Lo;0;L;;;;;N;;;;; +A553;VAI SYLLABLE MBA;Lo;0;L;;;;;N;;;;; +A554;VAI SYLLABLE KPA;Lo;0;L;;;;;N;;;;; +A555;VAI SYLLABLE KPAN;Lo;0;L;;;;;N;;;;; +A556;VAI SYLLABLE MGBA;Lo;0;L;;;;;N;;;;; +A557;VAI SYLLABLE GBA;Lo;0;L;;;;;N;;;;; +A558;VAI SYLLABLE FA;Lo;0;L;;;;;N;;;;; +A559;VAI SYLLABLE VA;Lo;0;L;;;;;N;;;;; +A55A;VAI SYLLABLE TA;Lo;0;L;;;;;N;;;;; +A55B;VAI SYLLABLE THA;Lo;0;L;;;;;N;;;;; +A55C;VAI SYLLABLE DHA;Lo;0;L;;;;;N;;;;; +A55D;VAI SYLLABLE DHHA;Lo;0;L;;;;;N;;;;; +A55E;VAI SYLLABLE LA;Lo;0;L;;;;;N;;;;; +A55F;VAI SYLLABLE RA;Lo;0;L;;;;;N;;;;; +A560;VAI SYLLABLE DA;Lo;0;L;;;;;N;;;;; +A561;VAI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; +A562;VAI SYLLABLE SA;Lo;0;L;;;;;N;;;;; +A563;VAI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; +A564;VAI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; +A565;VAI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; +A566;VAI SYLLABLE CA;Lo;0;L;;;;;N;;;;; +A567;VAI SYLLABLE JA;Lo;0;L;;;;;N;;;;; +A568;VAI SYLLABLE NJA;Lo;0;L;;;;;N;;;;; +A569;VAI SYLLABLE YA;Lo;0;L;;;;;N;;;;; +A56A;VAI SYLLABLE KA;Lo;0;L;;;;;N;;;;; +A56B;VAI SYLLABLE KAN;Lo;0;L;;;;;N;;;;; +A56C;VAI SYLLABLE NGGA;Lo;0;L;;;;;N;;;;; +A56D;VAI SYLLABLE GA;Lo;0;L;;;;;N;;;;; +A56E;VAI SYLLABLE MA;Lo;0;L;;;;;N;;;;; +A56F;VAI SYLLABLE NA;Lo;0;L;;;;;N;;;;; +A570;VAI SYLLABLE NYA;Lo;0;L;;;;;N;;;;; +A571;VAI SYLLABLE OO;Lo;0;L;;;;;N;;;;; +A572;VAI SYLLABLE OON;Lo;0;L;;;;;N;;;;; +A573;VAI SYLLABLE HOO;Lo;0;L;;;;;N;;;;; +A574;VAI SYLLABLE WOO;Lo;0;L;;;;;N;;;;; +A575;VAI SYLLABLE WOON;Lo;0;L;;;;;N;;;;; +A576;VAI SYLLABLE POO;Lo;0;L;;;;;N;;;;; +A577;VAI SYLLABLE BHOO;Lo;0;L;;;;;N;;;;; +A578;VAI SYLLABLE BOO;Lo;0;L;;;;;N;;;;; +A579;VAI SYLLABLE MBOO;Lo;0;L;;;;;N;;;;; +A57A;VAI SYLLABLE KPOO;Lo;0;L;;;;;N;;;;; +A57B;VAI SYLLABLE MGBOO;Lo;0;L;;;;;N;;;;; +A57C;VAI SYLLABLE GBOO;Lo;0;L;;;;;N;;;;; +A57D;VAI SYLLABLE FOO;Lo;0;L;;;;;N;;;;; +A57E;VAI SYLLABLE VOO;Lo;0;L;;;;;N;;;;; +A57F;VAI SYLLABLE TOO;Lo;0;L;;;;;N;;;;; +A580;VAI SYLLABLE THOO;Lo;0;L;;;;;N;;;;; +A581;VAI SYLLABLE DHOO;Lo;0;L;;;;;N;;;;; +A582;VAI SYLLABLE DHHOO;Lo;0;L;;;;;N;;;;; +A583;VAI SYLLABLE LOO;Lo;0;L;;;;;N;;;;; +A584;VAI SYLLABLE ROO;Lo;0;L;;;;;N;;;;; +A585;VAI SYLLABLE DOO;Lo;0;L;;;;;N;;;;; +A586;VAI SYLLABLE NDOO;Lo;0;L;;;;;N;;;;; +A587;VAI SYLLABLE SOO;Lo;0;L;;;;;N;;;;; +A588;VAI SYLLABLE SHOO;Lo;0;L;;;;;N;;;;; +A589;VAI SYLLABLE ZOO;Lo;0;L;;;;;N;;;;; +A58A;VAI SYLLABLE ZHOO;Lo;0;L;;;;;N;;;;; +A58B;VAI SYLLABLE COO;Lo;0;L;;;;;N;;;;; +A58C;VAI SYLLABLE JOO;Lo;0;L;;;;;N;;;;; +A58D;VAI SYLLABLE NJOO;Lo;0;L;;;;;N;;;;; +A58E;VAI SYLLABLE YOO;Lo;0;L;;;;;N;;;;; +A58F;VAI SYLLABLE KOO;Lo;0;L;;;;;N;;;;; +A590;VAI SYLLABLE NGGOO;Lo;0;L;;;;;N;;;;; +A591;VAI SYLLABLE GOO;Lo;0;L;;;;;N;;;;; +A592;VAI SYLLABLE MOO;Lo;0;L;;;;;N;;;;; +A593;VAI SYLLABLE NOO;Lo;0;L;;;;;N;;;;; +A594;VAI SYLLABLE NYOO;Lo;0;L;;;;;N;;;;; +A595;VAI SYLLABLE U;Lo;0;L;;;;;N;;;;; +A596;VAI SYLLABLE UN;Lo;0;L;;;;;N;;;;; +A597;VAI SYLLABLE HU;Lo;0;L;;;;;N;;;;; +A598;VAI SYLLABLE HUN;Lo;0;L;;;;;N;;;;; +A599;VAI SYLLABLE WU;Lo;0;L;;;;;N;;;;; +A59A;VAI SYLLABLE WUN;Lo;0;L;;;;;N;;;;; +A59B;VAI SYLLABLE PU;Lo;0;L;;;;;N;;;;; +A59C;VAI SYLLABLE BHU;Lo;0;L;;;;;N;;;;; +A59D;VAI SYLLABLE BU;Lo;0;L;;;;;N;;;;; +A59E;VAI SYLLABLE MBU;Lo;0;L;;;;;N;;;;; +A59F;VAI SYLLABLE KPU;Lo;0;L;;;;;N;;;;; +A5A0;VAI SYLLABLE MGBU;Lo;0;L;;;;;N;;;;; +A5A1;VAI SYLLABLE GBU;Lo;0;L;;;;;N;;;;; +A5A2;VAI SYLLABLE FU;Lo;0;L;;;;;N;;;;; +A5A3;VAI SYLLABLE VU;Lo;0;L;;;;;N;;;;; +A5A4;VAI SYLLABLE TU;Lo;0;L;;;;;N;;;;; +A5A5;VAI SYLLABLE THU;Lo;0;L;;;;;N;;;;; +A5A6;VAI SYLLABLE DHU;Lo;0;L;;;;;N;;;;; +A5A7;VAI SYLLABLE DHHU;Lo;0;L;;;;;N;;;;; +A5A8;VAI SYLLABLE LU;Lo;0;L;;;;;N;;;;; +A5A9;VAI SYLLABLE RU;Lo;0;L;;;;;N;;;;; +A5AA;VAI SYLLABLE DU;Lo;0;L;;;;;N;;;;; +A5AB;VAI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; +A5AC;VAI SYLLABLE SU;Lo;0;L;;;;;N;;;;; +A5AD;VAI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; +A5AE;VAI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; +A5AF;VAI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; +A5B0;VAI SYLLABLE CU;Lo;0;L;;;;;N;;;;; +A5B1;VAI SYLLABLE JU;Lo;0;L;;;;;N;;;;; +A5B2;VAI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; +A5B3;VAI SYLLABLE YU;Lo;0;L;;;;;N;;;;; +A5B4;VAI SYLLABLE KU;Lo;0;L;;;;;N;;;;; +A5B5;VAI SYLLABLE NGGU;Lo;0;L;;;;;N;;;;; +A5B6;VAI SYLLABLE GU;Lo;0;L;;;;;N;;;;; +A5B7;VAI SYLLABLE MU;Lo;0;L;;;;;N;;;;; +A5B8;VAI SYLLABLE NU;Lo;0;L;;;;;N;;;;; +A5B9;VAI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; +A5BA;VAI SYLLABLE O;Lo;0;L;;;;;N;;;;; +A5BB;VAI SYLLABLE ON;Lo;0;L;;;;;N;;;;; +A5BC;VAI SYLLABLE NGON;Lo;0;L;;;;;N;;;;; +A5BD;VAI SYLLABLE HO;Lo;0;L;;;;;N;;;;; +A5BE;VAI SYLLABLE HON;Lo;0;L;;;;;N;;;;; +A5BF;VAI SYLLABLE WO;Lo;0;L;;;;;N;;;;; +A5C0;VAI SYLLABLE WON;Lo;0;L;;;;;N;;;;; +A5C1;VAI SYLLABLE PO;Lo;0;L;;;;;N;;;;; +A5C2;VAI SYLLABLE BHO;Lo;0;L;;;;;N;;;;; +A5C3;VAI SYLLABLE BO;Lo;0;L;;;;;N;;;;; +A5C4;VAI SYLLABLE MBO;Lo;0;L;;;;;N;;;;; +A5C5;VAI SYLLABLE KPO;Lo;0;L;;;;;N;;;;; +A5C6;VAI SYLLABLE MGBO;Lo;0;L;;;;;N;;;;; +A5C7;VAI SYLLABLE GBO;Lo;0;L;;;;;N;;;;; +A5C8;VAI SYLLABLE GBON;Lo;0;L;;;;;N;;;;; +A5C9;VAI SYLLABLE FO;Lo;0;L;;;;;N;;;;; +A5CA;VAI SYLLABLE VO;Lo;0;L;;;;;N;;;;; +A5CB;VAI SYLLABLE TO;Lo;0;L;;;;;N;;;;; +A5CC;VAI SYLLABLE THO;Lo;0;L;;;;;N;;;;; +A5CD;VAI SYLLABLE DHO;Lo;0;L;;;;;N;;;;; +A5CE;VAI SYLLABLE DHHO;Lo;0;L;;;;;N;;;;; +A5CF;VAI SYLLABLE LO;Lo;0;L;;;;;N;;;;; +A5D0;VAI SYLLABLE RO;Lo;0;L;;;;;N;;;;; +A5D1;VAI SYLLABLE DO;Lo;0;L;;;;;N;;;;; +A5D2;VAI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; +A5D3;VAI SYLLABLE SO;Lo;0;L;;;;;N;;;;; +A5D4;VAI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; +A5D5;VAI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; +A5D6;VAI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; +A5D7;VAI SYLLABLE CO;Lo;0;L;;;;;N;;;;; +A5D8;VAI SYLLABLE JO;Lo;0;L;;;;;N;;;;; +A5D9;VAI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; +A5DA;VAI SYLLABLE YO;Lo;0;L;;;;;N;;;;; +A5DB;VAI SYLLABLE KO;Lo;0;L;;;;;N;;;;; +A5DC;VAI SYLLABLE NGGO;Lo;0;L;;;;;N;;;;; +A5DD;VAI SYLLABLE GO;Lo;0;L;;;;;N;;;;; +A5DE;VAI SYLLABLE MO;Lo;0;L;;;;;N;;;;; +A5DF;VAI SYLLABLE NO;Lo;0;L;;;;;N;;;;; +A5E0;VAI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; +A5E1;VAI SYLLABLE E;Lo;0;L;;;;;N;;;;; +A5E2;VAI SYLLABLE EN;Lo;0;L;;;;;N;;;;; +A5E3;VAI SYLLABLE NGEN;Lo;0;L;;;;;N;;;;; +A5E4;VAI SYLLABLE HE;Lo;0;L;;;;;N;;;;; +A5E5;VAI SYLLABLE HEN;Lo;0;L;;;;;N;;;;; +A5E6;VAI SYLLABLE WE;Lo;0;L;;;;;N;;;;; +A5E7;VAI SYLLABLE WEN;Lo;0;L;;;;;N;;;;; +A5E8;VAI SYLLABLE PE;Lo;0;L;;;;;N;;;;; +A5E9;VAI SYLLABLE BHE;Lo;0;L;;;;;N;;;;; +A5EA;VAI SYLLABLE BE;Lo;0;L;;;;;N;;;;; +A5EB;VAI SYLLABLE MBE;Lo;0;L;;;;;N;;;;; +A5EC;VAI SYLLABLE KPE;Lo;0;L;;;;;N;;;;; +A5ED;VAI SYLLABLE KPEN;Lo;0;L;;;;;N;;;;; +A5EE;VAI SYLLABLE MGBE;Lo;0;L;;;;;N;;;;; +A5EF;VAI SYLLABLE GBE;Lo;0;L;;;;;N;;;;; +A5F0;VAI SYLLABLE GBEN;Lo;0;L;;;;;N;;;;; +A5F1;VAI SYLLABLE FE;Lo;0;L;;;;;N;;;;; +A5F2;VAI SYLLABLE VE;Lo;0;L;;;;;N;;;;; +A5F3;VAI SYLLABLE TE;Lo;0;L;;;;;N;;;;; +A5F4;VAI SYLLABLE THE;Lo;0;L;;;;;N;;;;; +A5F5;VAI SYLLABLE DHE;Lo;0;L;;;;;N;;;;; +A5F6;VAI SYLLABLE DHHE;Lo;0;L;;;;;N;;;;; +A5F7;VAI SYLLABLE LE;Lo;0;L;;;;;N;;;;; +A5F8;VAI SYLLABLE RE;Lo;0;L;;;;;N;;;;; +A5F9;VAI SYLLABLE DE;Lo;0;L;;;;;N;;;;; +A5FA;VAI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; +A5FB;VAI SYLLABLE SE;Lo;0;L;;;;;N;;;;; +A5FC;VAI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; +A5FD;VAI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; +A5FE;VAI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; +A5FF;VAI SYLLABLE CE;Lo;0;L;;;;;N;;;;; +A600;VAI SYLLABLE JE;Lo;0;L;;;;;N;;;;; +A601;VAI SYLLABLE NJE;Lo;0;L;;;;;N;;;;; +A602;VAI SYLLABLE YE;Lo;0;L;;;;;N;;;;; +A603;VAI SYLLABLE KE;Lo;0;L;;;;;N;;;;; +A604;VAI SYLLABLE NGGE;Lo;0;L;;;;;N;;;;; +A605;VAI SYLLABLE NGGEN;Lo;0;L;;;;;N;;;;; +A606;VAI SYLLABLE GE;Lo;0;L;;;;;N;;;;; +A607;VAI SYLLABLE GEN;Lo;0;L;;;;;N;;;;; +A608;VAI SYLLABLE ME;Lo;0;L;;;;;N;;;;; +A609;VAI SYLLABLE NE;Lo;0;L;;;;;N;;;;; +A60A;VAI SYLLABLE NYE;Lo;0;L;;;;;N;;;;; +A60B;VAI SYLLABLE NG;Lo;0;L;;;;;N;;;;; +A60C;VAI SYLLABLE LENGTHENER;Lm;0;L;;;;;N;;;;; +A60D;VAI COMMA;Po;0;ON;;;;;N;;;;; +A60E;VAI FULL STOP;Po;0;ON;;;;;N;;;;; +A60F;VAI QUESTION MARK;Po;0;ON;;;;;N;;;;; +A610;VAI SYLLABLE NDOLE FA;Lo;0;L;;;;;N;;;;; +A611;VAI SYLLABLE NDOLE KA;Lo;0;L;;;;;N;;;;; +A612;VAI SYLLABLE NDOLE SOO;Lo;0;L;;;;;N;;;;; +A613;VAI SYMBOL FEENG;Lo;0;L;;;;;N;;;;; +A614;VAI SYMBOL KEENG;Lo;0;L;;;;;N;;;;; +A615;VAI SYMBOL TING;Lo;0;L;;;;;N;;;;; +A616;VAI SYMBOL NII;Lo;0;L;;;;;N;;;;; +A617;VAI SYMBOL BANG;Lo;0;L;;;;;N;;;;; +A618;VAI SYMBOL FAA;Lo;0;L;;;;;N;;;;; +A619;VAI SYMBOL TAA;Lo;0;L;;;;;N;;;;; +A61A;VAI SYMBOL DANG;Lo;0;L;;;;;N;;;;; +A61B;VAI SYMBOL DOONG;Lo;0;L;;;;;N;;;;; +A61C;VAI SYMBOL KUNG;Lo;0;L;;;;;N;;;;; +A61D;VAI SYMBOL TONG;Lo;0;L;;;;;N;;;;; +A61E;VAI SYMBOL DO-O;Lo;0;L;;;;;N;;;;; +A61F;VAI SYMBOL JONG;Lo;0;L;;;;;N;;;;; +A620;VAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +A621;VAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +A622;VAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +A623;VAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +A624;VAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +A625;VAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +A626;VAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +A627;VAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +A628;VAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +A629;VAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +A62A;VAI SYLLABLE NDOLE MA;Lo;0;L;;;;;N;;;;; +A62B;VAI SYLLABLE NDOLE DO;Lo;0;L;;;;;N;;;;; +A640;CYRILLIC CAPITAL LETTER ZEMLYA;Lu;0;L;;;;;N;;;;A641; +A641;CYRILLIC SMALL LETTER ZEMLYA;Ll;0;L;;;;;N;;;A640;;A640 +A642;CYRILLIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;A643; +A643;CYRILLIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;A642;;A642 +A644;CYRILLIC CAPITAL LETTER REVERSED DZE;Lu;0;L;;;;;N;;;;A645; +A645;CYRILLIC SMALL LETTER REVERSED DZE;Ll;0;L;;;;;N;;;A644;;A644 +A646;CYRILLIC CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;A647; +A647;CYRILLIC SMALL LETTER IOTA;Ll;0;L;;;;;N;;;A646;;A646 +A648;CYRILLIC CAPITAL LETTER DJERV;Lu;0;L;;;;;N;;;;A649; +A649;CYRILLIC SMALL LETTER DJERV;Ll;0;L;;;;;N;;;A648;;A648 +A64A;CYRILLIC CAPITAL LETTER MONOGRAPH UK;Lu;0;L;;;;;N;;;;A64B; +A64B;CYRILLIC SMALL LETTER MONOGRAPH UK;Ll;0;L;;;;;N;;;A64A;;A64A +A64C;CYRILLIC CAPITAL LETTER BROAD OMEGA;Lu;0;L;;;;;N;;;;A64D; +A64D;CYRILLIC SMALL LETTER BROAD OMEGA;Ll;0;L;;;;;N;;;A64C;;A64C +A64E;CYRILLIC CAPITAL LETTER NEUTRAL YER;Lu;0;L;;;;;N;;;;A64F; +A64F;CYRILLIC SMALL LETTER NEUTRAL YER;Ll;0;L;;;;;N;;;A64E;;A64E +A650;CYRILLIC CAPITAL LETTER YERU WITH BACK YER;Lu;0;L;;;;;N;;;;A651; +A651;CYRILLIC SMALL LETTER YERU WITH BACK YER;Ll;0;L;;;;;N;;;A650;;A650 +A652;CYRILLIC CAPITAL LETTER IOTIFIED YAT;Lu;0;L;;;;;N;;;;A653; +A653;CYRILLIC SMALL LETTER IOTIFIED YAT;Ll;0;L;;;;;N;;;A652;;A652 +A654;CYRILLIC CAPITAL LETTER REVERSED YU;Lu;0;L;;;;;N;;;;A655; +A655;CYRILLIC SMALL LETTER REVERSED YU;Ll;0;L;;;;;N;;;A654;;A654 +A656;CYRILLIC CAPITAL LETTER IOTIFIED A;Lu;0;L;;;;;N;;;;A657; +A657;CYRILLIC SMALL LETTER IOTIFIED A;Ll;0;L;;;;;N;;;A656;;A656 +A658;CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A659; +A659;CYRILLIC SMALL LETTER CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A658;;A658 +A65A;CYRILLIC CAPITAL LETTER BLENDED YUS;Lu;0;L;;;;;N;;;;A65B; +A65B;CYRILLIC SMALL LETTER BLENDED YUS;Ll;0;L;;;;;N;;;A65A;;A65A +A65C;CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A65D; +A65D;CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A65C;;A65C +A65E;CYRILLIC CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;A65F; +A65F;CYRILLIC SMALL LETTER YN;Ll;0;L;;;;;N;;;A65E;;A65E +A662;CYRILLIC CAPITAL LETTER SOFT DE;Lu;0;L;;;;;N;;;;A663; +A663;CYRILLIC SMALL LETTER SOFT DE;Ll;0;L;;;;;N;;;A662;;A662 +A664;CYRILLIC CAPITAL LETTER SOFT EL;Lu;0;L;;;;;N;;;;A665; +A665;CYRILLIC SMALL LETTER SOFT EL;Ll;0;L;;;;;N;;;A664;;A664 +A666;CYRILLIC CAPITAL LETTER SOFT EM;Lu;0;L;;;;;N;;;;A667; +A667;CYRILLIC SMALL LETTER SOFT EM;Ll;0;L;;;;;N;;;A666;;A666 +A668;CYRILLIC CAPITAL LETTER MONOCULAR O;Lu;0;L;;;;;N;;;;A669; +A669;CYRILLIC SMALL LETTER MONOCULAR O;Ll;0;L;;;;;N;;;A668;;A668 +A66A;CYRILLIC CAPITAL LETTER BINOCULAR O;Lu;0;L;;;;;N;;;;A66B; +A66B;CYRILLIC SMALL LETTER BINOCULAR O;Ll;0;L;;;;;N;;;A66A;;A66A +A66C;CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;Lu;0;L;;;;;N;;;;A66D; +A66D;CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;Ll;0;L;;;;;N;;;A66C;;A66C +A66E;CYRILLIC LETTER MULTIOCULAR O;Lo;0;L;;;;;N;;;;; +A66F;COMBINING CYRILLIC VZMET;Mn;230;NSM;;;;;N;;;;; +A670;COMBINING CYRILLIC TEN MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; +A671;COMBINING CYRILLIC HUNDRED MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; +A672;COMBINING CYRILLIC THOUSAND MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; +A673;SLAVONIC ASTERISK;Po;0;ON;;;;;N;;;;; +A67C;COMBINING CYRILLIC KAVYKA;Mn;230;NSM;;;;;N;;;;; +A67D;COMBINING CYRILLIC PAYEROK;Mn;230;NSM;;;;;N;;;;; +A67E;CYRILLIC KAVYKA;Po;0;ON;;;;;N;;;;; +A67F;CYRILLIC PAYEROK;Lm;0;ON;;;;;N;;;;; +A680;CYRILLIC CAPITAL LETTER DWE;Lu;0;L;;;;;N;;;;A681; +A681;CYRILLIC SMALL LETTER DWE;Ll;0;L;;;;;N;;;A680;;A680 +A682;CYRILLIC CAPITAL LETTER DZWE;Lu;0;L;;;;;N;;;;A683; +A683;CYRILLIC SMALL LETTER DZWE;Ll;0;L;;;;;N;;;A682;;A682 +A684;CYRILLIC CAPITAL LETTER ZHWE;Lu;0;L;;;;;N;;;;A685; +A685;CYRILLIC SMALL LETTER ZHWE;Ll;0;L;;;;;N;;;A684;;A684 +A686;CYRILLIC CAPITAL LETTER CCHE;Lu;0;L;;;;;N;;;;A687; +A687;CYRILLIC SMALL LETTER CCHE;Ll;0;L;;;;;N;;;A686;;A686 +A688;CYRILLIC CAPITAL LETTER DZZE;Lu;0;L;;;;;N;;;;A689; +A689;CYRILLIC SMALL LETTER DZZE;Ll;0;L;;;;;N;;;A688;;A688 +A68A;CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;A68B; +A68B;CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;A68A;;A68A +A68C;CYRILLIC CAPITAL LETTER TWE;Lu;0;L;;;;;N;;;;A68D; +A68D;CYRILLIC SMALL LETTER TWE;Ll;0;L;;;;;N;;;A68C;;A68C +A68E;CYRILLIC CAPITAL LETTER TSWE;Lu;0;L;;;;;N;;;;A68F; +A68F;CYRILLIC SMALL LETTER TSWE;Ll;0;L;;;;;N;;;A68E;;A68E +A690;CYRILLIC CAPITAL LETTER TSSE;Lu;0;L;;;;;N;;;;A691; +A691;CYRILLIC SMALL LETTER TSSE;Ll;0;L;;;;;N;;;A690;;A690 +A692;CYRILLIC CAPITAL LETTER TCHE;Lu;0;L;;;;;N;;;;A693; +A693;CYRILLIC SMALL LETTER TCHE;Ll;0;L;;;;;N;;;A692;;A692 +A694;CYRILLIC CAPITAL LETTER HWE;Lu;0;L;;;;;N;;;;A695; +A695;CYRILLIC SMALL LETTER HWE;Ll;0;L;;;;;N;;;A694;;A694 +A696;CYRILLIC CAPITAL LETTER SHWE;Lu;0;L;;;;;N;;;;A697; +A697;CYRILLIC SMALL LETTER SHWE;Ll;0;L;;;;;N;;;A696;;A696 +A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;; +A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;; +A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;; +A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;; +A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;; +A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;; +A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;; +A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;; +A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; +A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; +A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; +A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; +A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; +A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;; +A718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;; +A719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;; +A71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;; +A71B;MODIFIER LETTER RAISED UP ARROW;Lm;0;ON;;;;;N;;;;; +A71C;MODIFIER LETTER RAISED DOWN ARROW;Lm;0;ON;;;;;N;;;;; +A71D;MODIFIER LETTER RAISED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; +A71E;MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; +A71F;MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; +A720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;; +A721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;; +A722;LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;Lu;0;L;;;;;N;;;;A723; +A723;LATIN SMALL LETTER EGYPTOLOGICAL ALEF;Ll;0;L;;;;;N;;;A722;;A722 +A724;LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;Lu;0;L;;;;;N;;;;A725; +A725;LATIN SMALL LETTER EGYPTOLOGICAL AIN;Ll;0;L;;;;;N;;;A724;;A724 +A726;LATIN CAPITAL LETTER HENG;Lu;0;L;;;;;N;;;;A727; +A727;LATIN SMALL LETTER HENG;Ll;0;L;;;;;N;;;A726;;A726 +A728;LATIN CAPITAL LETTER TZ;Lu;0;L;;;;;N;;;;A729; +A729;LATIN SMALL LETTER TZ;Ll;0;L;;;;;N;;;A728;;A728 +A72A;LATIN CAPITAL LETTER TRESILLO;Lu;0;L;;;;;N;;;;A72B; +A72B;LATIN SMALL LETTER TRESILLO;Ll;0;L;;;;;N;;;A72A;;A72A +A72C;LATIN CAPITAL LETTER CUATRILLO;Lu;0;L;;;;;N;;;;A72D; +A72D;LATIN SMALL LETTER CUATRILLO;Ll;0;L;;;;;N;;;A72C;;A72C +A72E;LATIN CAPITAL LETTER CUATRILLO WITH COMMA;Lu;0;L;;;;;N;;;;A72F; +A72F;LATIN SMALL LETTER CUATRILLO WITH COMMA;Ll;0;L;;;;;N;;;A72E;;A72E +A730;LATIN LETTER SMALL CAPITAL F;Ll;0;L;;;;;N;;;;; +A731;LATIN LETTER SMALL CAPITAL S;Ll;0;L;;;;;N;;;;; +A732;LATIN CAPITAL LETTER AA;Lu;0;L;;;;;N;;;;A733; +A733;LATIN SMALL LETTER AA;Ll;0;L;;;;;N;;;A732;;A732 +A734;LATIN CAPITAL LETTER AO;Lu;0;L;;;;;N;;;;A735; +A735;LATIN SMALL LETTER AO;Ll;0;L;;;;;N;;;A734;;A734 +A736;LATIN CAPITAL LETTER AU;Lu;0;L;;;;;N;;;;A737; +A737;LATIN SMALL LETTER AU;Ll;0;L;;;;;N;;;A736;;A736 +A738;LATIN CAPITAL LETTER AV;Lu;0;L;;;;;N;;;;A739; +A739;LATIN SMALL LETTER AV;Ll;0;L;;;;;N;;;A738;;A738 +A73A;LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR;Lu;0;L;;;;;N;;;;A73B; +A73B;LATIN SMALL LETTER AV WITH HORIZONTAL BAR;Ll;0;L;;;;;N;;;A73A;;A73A +A73C;LATIN CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;A73D; +A73D;LATIN SMALL LETTER AY;Ll;0;L;;;;;N;;;A73C;;A73C +A73E;LATIN CAPITAL LETTER REVERSED C WITH DOT;Lu;0;L;;;;;N;;;;A73F; +A73F;LATIN SMALL LETTER REVERSED C WITH DOT;Ll;0;L;;;;;N;;;A73E;;A73E +A740;LATIN CAPITAL LETTER K WITH STROKE;Lu;0;L;;;;;N;;;;A741; +A741;LATIN SMALL LETTER K WITH STROKE;Ll;0;L;;;;;N;;;A740;;A740 +A742;LATIN CAPITAL LETTER K WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A743; +A743;LATIN SMALL LETTER K WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A742;;A742 +A744;LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A745; +A745;LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE;Ll;0;L;;;;;N;;;A744;;A744 +A746;LATIN CAPITAL LETTER BROKEN L;Lu;0;L;;;;;N;;;;A747; +A747;LATIN SMALL LETTER BROKEN L;Ll;0;L;;;;;N;;;A746;;A746 +A748;LATIN CAPITAL LETTER L WITH HIGH STROKE;Lu;0;L;;;;;N;;;;A749; +A749;LATIN SMALL LETTER L WITH HIGH STROKE;Ll;0;L;;;;;N;;;A748;;A748 +A74A;LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY;Lu;0;L;;;;;N;;;;A74B; +A74B;LATIN SMALL LETTER O WITH LONG STROKE OVERLAY;Ll;0;L;;;;;N;;;A74A;;A74A +A74C;LATIN CAPITAL LETTER O WITH LOOP;Lu;0;L;;;;;N;;;;A74D; +A74D;LATIN SMALL LETTER O WITH LOOP;Ll;0;L;;;;;N;;;A74C;;A74C +A74E;LATIN CAPITAL LETTER OO;Lu;0;L;;;;;N;;;;A74F; +A74F;LATIN SMALL LETTER OO;Ll;0;L;;;;;N;;;A74E;;A74E +A750;LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A751; +A751;LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A750;;A750 +A752;LATIN CAPITAL LETTER P WITH FLOURISH;Lu;0;L;;;;;N;;;;A753; +A753;LATIN SMALL LETTER P WITH FLOURISH;Ll;0;L;;;;;N;;;A752;;A752 +A754;LATIN CAPITAL LETTER P WITH SQUIRREL TAIL;Lu;0;L;;;;;N;;;;A755; +A755;LATIN SMALL LETTER P WITH SQUIRREL TAIL;Ll;0;L;;;;;N;;;A754;;A754 +A756;LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A757; +A757;LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A756;;A756 +A758;LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A759; +A759;LATIN SMALL LETTER Q WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A758;;A758 +A75A;LATIN CAPITAL LETTER R ROTUNDA;Lu;0;L;;;;;N;;;;A75B; +A75B;LATIN SMALL LETTER R ROTUNDA;Ll;0;L;;;;;N;;;A75A;;A75A +A75C;LATIN CAPITAL LETTER RUM ROTUNDA;Lu;0;L;;;;;N;;;;A75D; +A75D;LATIN SMALL LETTER RUM ROTUNDA;Ll;0;L;;;;;N;;;A75C;;A75C +A75E;LATIN CAPITAL LETTER V WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A75F; +A75F;LATIN SMALL LETTER V WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A75E;;A75E +A760;LATIN CAPITAL LETTER VY;Lu;0;L;;;;;N;;;;A761; +A761;LATIN SMALL LETTER VY;Ll;0;L;;;;;N;;;A760;;A760 +A762;LATIN CAPITAL LETTER VISIGOTHIC Z;Lu;0;L;;;;;N;;;;A763; +A763;LATIN SMALL LETTER VISIGOTHIC Z;Ll;0;L;;;;;N;;;A762;;A762 +A764;LATIN CAPITAL LETTER THORN WITH STROKE;Lu;0;L;;;;;N;;;;A765; +A765;LATIN SMALL LETTER THORN WITH STROKE;Ll;0;L;;;;;N;;;A764;;A764 +A766;LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A767; +A767;LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A766;;A766 +A768;LATIN CAPITAL LETTER VEND;Lu;0;L;;;;;N;;;;A769; +A769;LATIN SMALL LETTER VEND;Ll;0;L;;;;;N;;;A768;;A768 +A76A;LATIN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;A76B; +A76B;LATIN SMALL LETTER ET;Ll;0;L;;;;;N;;;A76A;;A76A +A76C;LATIN CAPITAL LETTER IS;Lu;0;L;;;;;N;;;;A76D; +A76D;LATIN SMALL LETTER IS;Ll;0;L;;;;;N;;;A76C;;A76C +A76E;LATIN CAPITAL LETTER CON;Lu;0;L;;;;;N;;;;A76F; +A76F;LATIN SMALL LETTER CON;Ll;0;L;;;;;N;;;A76E;;A76E +A770;MODIFIER LETTER US;Lm;0;L;<super> A76F;;;;N;;;;; +A771;LATIN SMALL LETTER DUM;Ll;0;L;;;;;N;;;;; +A772;LATIN SMALL LETTER LUM;Ll;0;L;;;;;N;;;;; +A773;LATIN SMALL LETTER MUM;Ll;0;L;;;;;N;;;;; +A774;LATIN SMALL LETTER NUM;Ll;0;L;;;;;N;;;;; +A775;LATIN SMALL LETTER RUM;Ll;0;L;;;;;N;;;;; +A776;LATIN LETTER SMALL CAPITAL RUM;Ll;0;L;;;;;N;;;;; +A777;LATIN SMALL LETTER TUM;Ll;0;L;;;;;N;;;;; +A778;LATIN SMALL LETTER UM;Ll;0;L;;;;;N;;;;; +A779;LATIN CAPITAL LETTER INSULAR D;Lu;0;L;;;;;N;;;;A77A; +A77A;LATIN SMALL LETTER INSULAR D;Ll;0;L;;;;;N;;;A779;;A779 +A77B;LATIN CAPITAL LETTER INSULAR F;Lu;0;L;;;;;N;;;;A77C; +A77C;LATIN SMALL LETTER INSULAR F;Ll;0;L;;;;;N;;;A77B;;A77B +A77D;LATIN CAPITAL LETTER INSULAR G;Lu;0;L;;;;;N;;;;1D79; +A77E;LATIN CAPITAL LETTER TURNED INSULAR G;Lu;0;L;;;;;N;;;;A77F; +A77F;LATIN SMALL LETTER TURNED INSULAR G;Ll;0;L;;;;;N;;;A77E;;A77E +A780;LATIN CAPITAL LETTER TURNED L;Lu;0;L;;;;;N;;;;A781; +A781;LATIN SMALL LETTER TURNED L;Ll;0;L;;;;;N;;;A780;;A780 +A782;LATIN CAPITAL LETTER INSULAR R;Lu;0;L;;;;;N;;;;A783; +A783;LATIN SMALL LETTER INSULAR R;Ll;0;L;;;;;N;;;A782;;A782 +A784;LATIN CAPITAL LETTER INSULAR S;Lu;0;L;;;;;N;;;;A785; +A785;LATIN SMALL LETTER INSULAR S;Ll;0;L;;;;;N;;;A784;;A784 +A786;LATIN CAPITAL LETTER INSULAR T;Lu;0;L;;;;;N;;;;A787; +A787;LATIN SMALL LETTER INSULAR T;Ll;0;L;;;;;N;;;A786;;A786 +A788;MODIFIER LETTER LOW CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;;;;; +A789;MODIFIER LETTER COLON;Sk;0;L;;;;;N;;;;; +A78A;MODIFIER LETTER SHORT EQUALS SIGN;Sk;0;L;;;;;N;;;;; +A78B;LATIN CAPITAL LETTER SALTILLO;Lu;0;L;;;;;N;;;;A78C; +A78C;LATIN SMALL LETTER SALTILLO;Ll;0;L;;;;;N;;;A78B;;A78B +A7FB;LATIN EPIGRAPHIC LETTER REVERSED F;Lo;0;L;;;;;N;;;;; +A7FC;LATIN EPIGRAPHIC LETTER REVERSED P;Lo;0;L;;;;;N;;;;; +A7FD;LATIN EPIGRAPHIC LETTER INVERTED M;Lo;0;L;;;;;N;;;;; +A7FE;LATIN EPIGRAPHIC LETTER I LONGA;Lo;0;L;;;;;N;;;;; +A7FF;LATIN EPIGRAPHIC LETTER ARCHAIC M;Lo;0;L;;;;;N;;;;; +A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;; +A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;; +A802;SYLOTI NAGRI SIGN DVISVARA;Mn;0;NSM;;;;;N;;;;; +A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;; +A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;; +A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;; +A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;; +A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;; +A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;; +A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;; +A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;; +A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;; +A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;; +A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;; +A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;; +A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;; +A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;; +A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;; +A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;; +A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;; +A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;; +A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;; +A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;; +A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;; +A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;; +A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;; +A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;; +A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;; +A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;; +A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;; +A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;; +A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;; +A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;; +A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;; +A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;; +A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; +A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;; +A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;; +A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;; +A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;; +A840;PHAGS-PA LETTER KA;Lo;0;L;;;;;N;;;;; +A841;PHAGS-PA LETTER KHA;Lo;0;L;;;;;N;;;;; +A842;PHAGS-PA LETTER GA;Lo;0;L;;;;;N;;;;; +A843;PHAGS-PA LETTER NGA;Lo;0;L;;;;;N;;;;; +A844;PHAGS-PA LETTER CA;Lo;0;L;;;;;N;;;;; +A845;PHAGS-PA LETTER CHA;Lo;0;L;;;;;N;;;;; +A846;PHAGS-PA LETTER JA;Lo;0;L;;;;;N;;;;; +A847;PHAGS-PA LETTER NYA;Lo;0;L;;;;;N;;;;; +A848;PHAGS-PA LETTER TA;Lo;0;L;;;;;N;;;;; +A849;PHAGS-PA LETTER THA;Lo;0;L;;;;;N;;;;; +A84A;PHAGS-PA LETTER DA;Lo;0;L;;;;;N;;;;; +A84B;PHAGS-PA LETTER NA;Lo;0;L;;;;;N;;;;; +A84C;PHAGS-PA LETTER PA;Lo;0;L;;;;;N;;;;; +A84D;PHAGS-PA LETTER PHA;Lo;0;L;;;;;N;;;;; +A84E;PHAGS-PA LETTER BA;Lo;0;L;;;;;N;;;;; +A84F;PHAGS-PA LETTER MA;Lo;0;L;;;;;N;;;;; +A850;PHAGS-PA LETTER TSA;Lo;0;L;;;;;N;;;;; +A851;PHAGS-PA LETTER TSHA;Lo;0;L;;;;;N;;;;; +A852;PHAGS-PA LETTER DZA;Lo;0;L;;;;;N;;;;; +A853;PHAGS-PA LETTER WA;Lo;0;L;;;;;N;;;;; +A854;PHAGS-PA LETTER ZHA;Lo;0;L;;;;;N;;;;; +A855;PHAGS-PA LETTER ZA;Lo;0;L;;;;;N;;;;; +A856;PHAGS-PA LETTER SMALL A;Lo;0;L;;;;;N;;;;; +A857;PHAGS-PA LETTER YA;Lo;0;L;;;;;N;;;;; +A858;PHAGS-PA LETTER RA;Lo;0;L;;;;;N;;;;; +A859;PHAGS-PA LETTER LA;Lo;0;L;;;;;N;;;;; +A85A;PHAGS-PA LETTER SHA;Lo;0;L;;;;;N;;;;; +A85B;PHAGS-PA LETTER SA;Lo;0;L;;;;;N;;;;; +A85C;PHAGS-PA LETTER HA;Lo;0;L;;;;;N;;;;; +A85D;PHAGS-PA LETTER A;Lo;0;L;;;;;N;;;;; +A85E;PHAGS-PA LETTER I;Lo;0;L;;;;;N;;;;; +A85F;PHAGS-PA LETTER U;Lo;0;L;;;;;N;;;;; +A860;PHAGS-PA LETTER E;Lo;0;L;;;;;N;;;;; +A861;PHAGS-PA LETTER O;Lo;0;L;;;;;N;;;;; +A862;PHAGS-PA LETTER QA;Lo;0;L;;;;;N;;;;; +A863;PHAGS-PA LETTER XA;Lo;0;L;;;;;N;;;;; +A864;PHAGS-PA LETTER FA;Lo;0;L;;;;;N;;;;; +A865;PHAGS-PA LETTER GGA;Lo;0;L;;;;;N;;;;; +A866;PHAGS-PA LETTER EE;Lo;0;L;;;;;N;;;;; +A867;PHAGS-PA SUBJOINED LETTER WA;Lo;0;L;;;;;N;;;;; +A868;PHAGS-PA SUBJOINED LETTER YA;Lo;0;L;;;;;N;;;;; +A869;PHAGS-PA LETTER TTA;Lo;0;L;;;;;N;;;;; +A86A;PHAGS-PA LETTER TTHA;Lo;0;L;;;;;N;;;;; +A86B;PHAGS-PA LETTER DDA;Lo;0;L;;;;;N;;;;; +A86C;PHAGS-PA LETTER NNA;Lo;0;L;;;;;N;;;;; +A86D;PHAGS-PA LETTER ALTERNATE YA;Lo;0;L;;;;;N;;;;; +A86E;PHAGS-PA LETTER VOICELESS SHA;Lo;0;L;;;;;N;;;;; +A86F;PHAGS-PA LETTER VOICED HA;Lo;0;L;;;;;N;;;;; +A870;PHAGS-PA LETTER ASPIRATED FA;Lo;0;L;;;;;N;;;;; +A871;PHAGS-PA SUBJOINED LETTER RA;Lo;0;L;;;;;N;;;;; +A872;PHAGS-PA SUPERFIXED LETTER RA;Lo;0;L;;;;;N;;;;; +A873;PHAGS-PA LETTER CANDRABINDU;Lo;0;L;;;;;N;;;;; +A874;PHAGS-PA SINGLE HEAD MARK;Po;0;ON;;;;;N;;;;; +A875;PHAGS-PA DOUBLE HEAD MARK;Po;0;ON;;;;;N;;;;; +A876;PHAGS-PA MARK SHAD;Po;0;ON;;;;;N;;;;; +A877;PHAGS-PA MARK DOUBLE SHAD;Po;0;ON;;;;;N;;;;; +A880;SAURASHTRA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +A881;SAURASHTRA SIGN VISARGA;Mc;0;L;;;;;N;;;;; +A882;SAURASHTRA LETTER A;Lo;0;L;;;;;N;;;;; +A883;SAURASHTRA LETTER AA;Lo;0;L;;;;;N;;;;; +A884;SAURASHTRA LETTER I;Lo;0;L;;;;;N;;;;; +A885;SAURASHTRA LETTER II;Lo;0;L;;;;;N;;;;; +A886;SAURASHTRA LETTER U;Lo;0;L;;;;;N;;;;; +A887;SAURASHTRA LETTER UU;Lo;0;L;;;;;N;;;;; +A888;SAURASHTRA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +A889;SAURASHTRA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +A88A;SAURASHTRA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +A88B;SAURASHTRA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +A88C;SAURASHTRA LETTER E;Lo;0;L;;;;;N;;;;; +A88D;SAURASHTRA LETTER EE;Lo;0;L;;;;;N;;;;; +A88E;SAURASHTRA LETTER AI;Lo;0;L;;;;;N;;;;; +A88F;SAURASHTRA LETTER O;Lo;0;L;;;;;N;;;;; +A890;SAURASHTRA LETTER OO;Lo;0;L;;;;;N;;;;; +A891;SAURASHTRA LETTER AU;Lo;0;L;;;;;N;;;;; +A892;SAURASHTRA LETTER KA;Lo;0;L;;;;;N;;;;; +A893;SAURASHTRA LETTER KHA;Lo;0;L;;;;;N;;;;; +A894;SAURASHTRA LETTER GA;Lo;0;L;;;;;N;;;;; +A895;SAURASHTRA LETTER GHA;Lo;0;L;;;;;N;;;;; +A896;SAURASHTRA LETTER NGA;Lo;0;L;;;;;N;;;;; +A897;SAURASHTRA LETTER CA;Lo;0;L;;;;;N;;;;; +A898;SAURASHTRA LETTER CHA;Lo;0;L;;;;;N;;;;; +A899;SAURASHTRA LETTER JA;Lo;0;L;;;;;N;;;;; +A89A;SAURASHTRA LETTER JHA;Lo;0;L;;;;;N;;;;; +A89B;SAURASHTRA LETTER NYA;Lo;0;L;;;;;N;;;;; +A89C;SAURASHTRA LETTER TTA;Lo;0;L;;;;;N;;;;; +A89D;SAURASHTRA LETTER TTHA;Lo;0;L;;;;;N;;;;; +A89E;SAURASHTRA LETTER DDA;Lo;0;L;;;;;N;;;;; +A89F;SAURASHTRA LETTER DDHA;Lo;0;L;;;;;N;;;;; +A8A0;SAURASHTRA LETTER NNA;Lo;0;L;;;;;N;;;;; +A8A1;SAURASHTRA LETTER TA;Lo;0;L;;;;;N;;;;; +A8A2;SAURASHTRA LETTER THA;Lo;0;L;;;;;N;;;;; +A8A3;SAURASHTRA LETTER DA;Lo;0;L;;;;;N;;;;; +A8A4;SAURASHTRA LETTER DHA;Lo;0;L;;;;;N;;;;; +A8A5;SAURASHTRA LETTER NA;Lo;0;L;;;;;N;;;;; +A8A6;SAURASHTRA LETTER PA;Lo;0;L;;;;;N;;;;; +A8A7;SAURASHTRA LETTER PHA;Lo;0;L;;;;;N;;;;; +A8A8;SAURASHTRA LETTER BA;Lo;0;L;;;;;N;;;;; +A8A9;SAURASHTRA LETTER BHA;Lo;0;L;;;;;N;;;;; +A8AA;SAURASHTRA LETTER MA;Lo;0;L;;;;;N;;;;; +A8AB;SAURASHTRA LETTER YA;Lo;0;L;;;;;N;;;;; +A8AC;SAURASHTRA LETTER RA;Lo;0;L;;;;;N;;;;; +A8AD;SAURASHTRA LETTER LA;Lo;0;L;;;;;N;;;;; +A8AE;SAURASHTRA LETTER VA;Lo;0;L;;;;;N;;;;; +A8AF;SAURASHTRA LETTER SHA;Lo;0;L;;;;;N;;;;; +A8B0;SAURASHTRA LETTER SSA;Lo;0;L;;;;;N;;;;; +A8B1;SAURASHTRA LETTER SA;Lo;0;L;;;;;N;;;;; +A8B2;SAURASHTRA LETTER HA;Lo;0;L;;;;;N;;;;; +A8B3;SAURASHTRA LETTER LLA;Lo;0;L;;;;;N;;;;; +A8B4;SAURASHTRA CONSONANT SIGN HAARU;Mc;0;L;;;;;N;;;;; +A8B5;SAURASHTRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +A8B6;SAURASHTRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +A8B7;SAURASHTRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +A8B8;SAURASHTRA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +A8B9;SAURASHTRA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +A8BA;SAURASHTRA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; +A8BB;SAURASHTRA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; +A8BC;SAURASHTRA VOWEL SIGN VOCALIC L;Mc;0;L;;;;;N;;;;; +A8BD;SAURASHTRA VOWEL SIGN VOCALIC LL;Mc;0;L;;;;;N;;;;; +A8BE;SAURASHTRA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +A8BF;SAURASHTRA VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; +A8C0;SAURASHTRA VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +A8C1;SAURASHTRA VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +A8C2;SAURASHTRA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; +A8C3;SAURASHTRA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +A8C4;SAURASHTRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +A8CE;SAURASHTRA DANDA;Po;0;L;;;;;N;;;;; +A8CF;SAURASHTRA DOUBLE DANDA;Po;0;L;;;;;N;;;;; +A8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +A8D1;SAURASHTRA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +A8D2;SAURASHTRA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +A8D3;SAURASHTRA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +A8D4;SAURASHTRA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +A8D5;SAURASHTRA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +A8D6;SAURASHTRA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +A8D7;SAURASHTRA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +A8D8;SAURASHTRA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +A8D9;SAURASHTRA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +A903;KAYAH LI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +A904;KAYAH LI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +A905;KAYAH LI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +A906;KAYAH LI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +A907;KAYAH LI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +A908;KAYAH LI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +A909;KAYAH LI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +A90A;KAYAH LI LETTER KA;Lo;0;L;;;;;N;;;;; +A90B;KAYAH LI LETTER KHA;Lo;0;L;;;;;N;;;;; +A90C;KAYAH LI LETTER GA;Lo;0;L;;;;;N;;;;; +A90D;KAYAH LI LETTER NGA;Lo;0;L;;;;;N;;;;; +A90E;KAYAH LI LETTER SA;Lo;0;L;;;;;N;;;;; +A90F;KAYAH LI LETTER SHA;Lo;0;L;;;;;N;;;;; +A910;KAYAH LI LETTER ZA;Lo;0;L;;;;;N;;;;; +A911;KAYAH LI LETTER NYA;Lo;0;L;;;;;N;;;;; +A912;KAYAH LI LETTER TA;Lo;0;L;;;;;N;;;;; +A913;KAYAH LI LETTER HTA;Lo;0;L;;;;;N;;;;; +A914;KAYAH LI LETTER NA;Lo;0;L;;;;;N;;;;; +A915;KAYAH LI LETTER PA;Lo;0;L;;;;;N;;;;; +A916;KAYAH LI LETTER PHA;Lo;0;L;;;;;N;;;;; +A917;KAYAH LI LETTER MA;Lo;0;L;;;;;N;;;;; +A918;KAYAH LI LETTER DA;Lo;0;L;;;;;N;;;;; +A919;KAYAH LI LETTER BA;Lo;0;L;;;;;N;;;;; +A91A;KAYAH LI LETTER RA;Lo;0;L;;;;;N;;;;; +A91B;KAYAH LI LETTER YA;Lo;0;L;;;;;N;;;;; +A91C;KAYAH LI LETTER LA;Lo;0;L;;;;;N;;;;; +A91D;KAYAH LI LETTER WA;Lo;0;L;;;;;N;;;;; +A91E;KAYAH LI LETTER THA;Lo;0;L;;;;;N;;;;; +A91F;KAYAH LI LETTER HA;Lo;0;L;;;;;N;;;;; +A920;KAYAH LI LETTER VA;Lo;0;L;;;;;N;;;;; +A921;KAYAH LI LETTER CA;Lo;0;L;;;;;N;;;;; +A922;KAYAH LI LETTER A;Lo;0;L;;;;;N;;;;; +A923;KAYAH LI LETTER OE;Lo;0;L;;;;;N;;;;; +A924;KAYAH LI LETTER I;Lo;0;L;;;;;N;;;;; +A925;KAYAH LI LETTER OO;Lo;0;L;;;;;N;;;;; +A926;KAYAH LI VOWEL UE;Mn;0;NSM;;;;;N;;;;; +A927;KAYAH LI VOWEL E;Mn;0;NSM;;;;;N;;;;; +A928;KAYAH LI VOWEL U;Mn;0;NSM;;;;;N;;;;; +A929;KAYAH LI VOWEL EE;Mn;0;NSM;;;;;N;;;;; +A92A;KAYAH LI VOWEL O;Mn;0;NSM;;;;;N;;;;; +A92B;KAYAH LI TONE PLOPHU;Mn;220;NSM;;;;;N;;;;; +A92C;KAYAH LI TONE CALYA;Mn;220;NSM;;;;;N;;;;; +A92D;KAYAH LI TONE CALYA PLOPHU;Mn;220;NSM;;;;;N;;;;; +A92E;KAYAH LI SIGN CWI;Po;0;L;;;;;N;;;;; +A92F;KAYAH LI SIGN SHYA;Po;0;L;;;;;N;;;;; +A930;REJANG LETTER KA;Lo;0;L;;;;;N;;;;; +A931;REJANG LETTER GA;Lo;0;L;;;;;N;;;;; +A932;REJANG LETTER NGA;Lo;0;L;;;;;N;;;;; +A933;REJANG LETTER TA;Lo;0;L;;;;;N;;;;; +A934;REJANG LETTER DA;Lo;0;L;;;;;N;;;;; +A935;REJANG LETTER NA;Lo;0;L;;;;;N;;;;; +A936;REJANG LETTER PA;Lo;0;L;;;;;N;;;;; +A937;REJANG LETTER BA;Lo;0;L;;;;;N;;;;; +A938;REJANG LETTER MA;Lo;0;L;;;;;N;;;;; +A939;REJANG LETTER CA;Lo;0;L;;;;;N;;;;; +A93A;REJANG LETTER JA;Lo;0;L;;;;;N;;;;; +A93B;REJANG LETTER NYA;Lo;0;L;;;;;N;;;;; +A93C;REJANG LETTER SA;Lo;0;L;;;;;N;;;;; +A93D;REJANG LETTER RA;Lo;0;L;;;;;N;;;;; +A93E;REJANG LETTER LA;Lo;0;L;;;;;N;;;;; +A93F;REJANG LETTER YA;Lo;0;L;;;;;N;;;;; +A940;REJANG LETTER WA;Lo;0;L;;;;;N;;;;; +A941;REJANG LETTER HA;Lo;0;L;;;;;N;;;;; +A942;REJANG LETTER MBA;Lo;0;L;;;;;N;;;;; +A943;REJANG LETTER NGGA;Lo;0;L;;;;;N;;;;; +A944;REJANG LETTER NDA;Lo;0;L;;;;;N;;;;; +A945;REJANG LETTER NYJA;Lo;0;L;;;;;N;;;;; +A946;REJANG LETTER A;Lo;0;L;;;;;N;;;;; +A947;REJANG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +A948;REJANG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +A949;REJANG VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +A94A;REJANG VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +A94B;REJANG VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; +A94C;REJANG VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +A94D;REJANG VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;; +A94E;REJANG VOWEL SIGN EA;Mn;0;NSM;;;;;N;;;;; +A94F;REJANG CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;; +A950;REJANG CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;; +A951;REJANG CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;; +A952;REJANG CONSONANT SIGN H;Mc;0;L;;;;;N;;;;; +A953;REJANG VIRAMA;Mc;9;L;;;;;N;;;;; +A95F;REJANG SECTION MARK;Po;0;L;;;;;N;;;;; +AA00;CHAM LETTER A;Lo;0;L;;;;;N;;;;; +AA01;CHAM LETTER I;Lo;0;L;;;;;N;;;;; +AA02;CHAM LETTER U;Lo;0;L;;;;;N;;;;; +AA03;CHAM LETTER E;Lo;0;L;;;;;N;;;;; +AA04;CHAM LETTER AI;Lo;0;L;;;;;N;;;;; +AA05;CHAM LETTER O;Lo;0;L;;;;;N;;;;; +AA06;CHAM LETTER KA;Lo;0;L;;;;;N;;;;; +AA07;CHAM LETTER KHA;Lo;0;L;;;;;N;;;;; +AA08;CHAM LETTER GA;Lo;0;L;;;;;N;;;;; +AA09;CHAM LETTER GHA;Lo;0;L;;;;;N;;;;; +AA0A;CHAM LETTER NGUE;Lo;0;L;;;;;N;;;;; +AA0B;CHAM LETTER NGA;Lo;0;L;;;;;N;;;;; +AA0C;CHAM LETTER CHA;Lo;0;L;;;;;N;;;;; +AA0D;CHAM LETTER CHHA;Lo;0;L;;;;;N;;;;; +AA0E;CHAM LETTER JA;Lo;0;L;;;;;N;;;;; +AA0F;CHAM LETTER JHA;Lo;0;L;;;;;N;;;;; +AA10;CHAM LETTER NHUE;Lo;0;L;;;;;N;;;;; +AA11;CHAM LETTER NHA;Lo;0;L;;;;;N;;;;; +AA12;CHAM LETTER NHJA;Lo;0;L;;;;;N;;;;; +AA13;CHAM LETTER TA;Lo;0;L;;;;;N;;;;; +AA14;CHAM LETTER THA;Lo;0;L;;;;;N;;;;; +AA15;CHAM LETTER DA;Lo;0;L;;;;;N;;;;; +AA16;CHAM LETTER DHA;Lo;0;L;;;;;N;;;;; +AA17;CHAM LETTER NUE;Lo;0;L;;;;;N;;;;; +AA18;CHAM LETTER NA;Lo;0;L;;;;;N;;;;; +AA19;CHAM LETTER DDA;Lo;0;L;;;;;N;;;;; +AA1A;CHAM LETTER PA;Lo;0;L;;;;;N;;;;; +AA1B;CHAM LETTER PPA;Lo;0;L;;;;;N;;;;; +AA1C;CHAM LETTER PHA;Lo;0;L;;;;;N;;;;; +AA1D;CHAM LETTER BA;Lo;0;L;;;;;N;;;;; +AA1E;CHAM LETTER BHA;Lo;0;L;;;;;N;;;;; +AA1F;CHAM LETTER MUE;Lo;0;L;;;;;N;;;;; +AA20;CHAM LETTER MA;Lo;0;L;;;;;N;;;;; +AA21;CHAM LETTER BBA;Lo;0;L;;;;;N;;;;; +AA22;CHAM LETTER YA;Lo;0;L;;;;;N;;;;; +AA23;CHAM LETTER RA;Lo;0;L;;;;;N;;;;; +AA24;CHAM LETTER LA;Lo;0;L;;;;;N;;;;; +AA25;CHAM LETTER VA;Lo;0;L;;;;;N;;;;; +AA26;CHAM LETTER SSA;Lo;0;L;;;;;N;;;;; +AA27;CHAM LETTER SA;Lo;0;L;;;;;N;;;;; +AA28;CHAM LETTER HA;Lo;0;L;;;;;N;;;;; +AA29;CHAM VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; +AA2A;CHAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +AA2B;CHAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +AA2C;CHAM VOWEL SIGN EI;Mn;0;NSM;;;;;N;;;;; +AA2D;CHAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +AA2E;CHAM VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;; +AA2F;CHAM VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +AA30;CHAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +AA31;CHAM VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +AA32;CHAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;; +AA33;CHAM CONSONANT SIGN YA;Mc;0;L;;;;;N;;;;; +AA34;CHAM CONSONANT SIGN RA;Mc;0;L;;;;;N;;;;; +AA35;CHAM CONSONANT SIGN LA;Mn;0;NSM;;;;;N;;;;; +AA36;CHAM CONSONANT SIGN WA;Mn;0;NSM;;;;;N;;;;; +AA40;CHAM LETTER FINAL K;Lo;0;L;;;;;N;;;;; +AA41;CHAM LETTER FINAL G;Lo;0;L;;;;;N;;;;; +AA42;CHAM LETTER FINAL NG;Lo;0;L;;;;;N;;;;; +AA43;CHAM CONSONANT SIGN FINAL NG;Mn;0;NSM;;;;;N;;;;; +AA44;CHAM LETTER FINAL CH;Lo;0;L;;;;;N;;;;; +AA45;CHAM LETTER FINAL T;Lo;0;L;;;;;N;;;;; +AA46;CHAM LETTER FINAL N;Lo;0;L;;;;;N;;;;; +AA47;CHAM LETTER FINAL P;Lo;0;L;;;;;N;;;;; +AA48;CHAM LETTER FINAL Y;Lo;0;L;;;;;N;;;;; +AA49;CHAM LETTER FINAL R;Lo;0;L;;;;;N;;;;; +AA4A;CHAM LETTER FINAL L;Lo;0;L;;;;;N;;;;; +AA4B;CHAM LETTER FINAL SS;Lo;0;L;;;;;N;;;;; +AA4C;CHAM CONSONANT SIGN FINAL M;Mn;0;NSM;;;;;N;;;;; +AA4D;CHAM CONSONANT SIGN FINAL H;Mc;0;L;;;;;N;;;;; +AA50;CHAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +AA51;CHAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +AA52;CHAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +AA53;CHAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +AA54;CHAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +AA55;CHAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +AA56;CHAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +AA57;CHAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +AA58;CHAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +AA59;CHAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +AA5C;CHAM PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;; +AA5D;CHAM PUNCTUATION DANDA;Po;0;L;;;;;N;;;;; +AA5E;CHAM PUNCTUATION DOUBLE DANDA;Po;0;L;;;;;N;;;;; +AA5F;CHAM PUNCTUATION TRIPLE DANDA;Po;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;;;;; +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;;;3;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;;;10;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;;;2;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;;;0;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;;;6;N;;;;; +F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;; +F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;6;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;;;10;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;;;;; +FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;; +FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;; +FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;; +FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;; +FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;; +FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;; +FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;; +FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;; +FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;; +FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;; +FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;; +FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;; +FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;; +FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;; +FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;; +FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;; +FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;; +FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;; +FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;; +FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;; +FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;; +FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;; +FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;; +FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;; +FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;; +FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;; +FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;; +FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;; +FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;; +FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;; +FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;; +FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;; +FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;; +FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;; +FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;; +FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;; +FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;; +FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;; +FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;; +FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;; +FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;; +FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;; +FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;; +FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;; +FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;; +FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;; +FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;; +FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;; +FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;; +FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;; +FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;; +FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;; +FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;; +FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;; +FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;; +FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;; +FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;; +FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;; +FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;; +FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;; +FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;; +FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;; +FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;; +FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;; +FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;; +FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;; +FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;; +FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;; +FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;; +FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;; +FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;; +FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;; +FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;; +FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;; +FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;; +FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;; +FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;; +FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;; +FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;; +FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;; +FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;; +FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;; +FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;; +FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;; +FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;; +FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;; +FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;; +FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;; +FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;; +FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;; +FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;; +FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;; +FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;; +FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;; +FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;; +FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;; +FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;; +FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;; +FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;; +FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;; +FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;; +FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;; +FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;; +FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;; +FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;; +FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;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;ES;<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;;;;; +FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;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;;;;; +FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON;<vertical> 002C;;;;N;;;;; +FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON;<vertical> 3001;;;;N;;;;; +FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON;<vertical> 3002;;;;N;;;;; +FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON;<vertical> 003A;;;;N;;;;; +FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON;<vertical> 003B;;;;N;;;;; +FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON;<vertical> 0021;;;;N;;;;; +FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON;<vertical> 003F;;;;N;;;;; +FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;<vertical> 3016;;;;N;;;;; +FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON;<vertical> 3017;;;;N;;;;; +FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON;<vertical> 2026;;;;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;;;;; +FE24;COMBINING MACRON LEFT HALF;Mn;230;NSM;;;;;N;;;;; +FE25;COMBINING MACRON RIGHT HALF;Mn;230;NSM;;;;;N;;;;; +FE26;COMBINING CONJOINING MACRON;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;;;;; +FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON;<vertical> 005B;;;;N;;;;; +FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON;<vertical> 005D;;;;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;;;;Y;SMALL OPENING PARENTHESIS;;;; +FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;Y;SMALL CLOSING PARENTHESIS;;;; +FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;Y;SMALL OPENING CURLY BRACKET;;;; +FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;Y;SMALL CLOSING CURLY BRACKET;;;; +FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;Y;SMALL OPENING TORTOISE SHELL BRACKET;;;; +FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;Y;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;ES;<small> 002B;;;;N;;;;; +FE63;SMALL HYPHEN-MINUS;Pd;0;ES;<small> 002D;;;;N;;;;; +FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;Y;;;;; +FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;Y;;;;; +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;ES;<wide> 002B;;;;N;;;;; +FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;; +FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES;<wide> 002D;;;;N;;;;; +FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;; +FF0F;FULLWIDTH SOLIDUS;Po;0;CS;<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;Po;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;ON;;;;;N;;;;; +FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;; +FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;; +FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; +FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; +10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;; +10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;; +10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;; +10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;; +10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;; +10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;; +10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;; +10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;; +10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;; +10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;; +1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;; +1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;; +1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;; +1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;; +1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;; +10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;; +10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;; +10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;; +10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;; +10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;; +10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;; +10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;; +10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;; +10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;; +10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;; +1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;; +1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;; +1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;; +1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;; +1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;; +1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;; +10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;; +10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;; +10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;; +10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;; +10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;; +10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;; +10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;; +10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;; +10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;; +1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;; +1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;; +1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;; +1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;; +1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;; +1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;; +10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;; +10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;; +10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;; +10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;; +10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;; +10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;; +10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;; +10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;; +10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;; +10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;; +1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;; +1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;; +1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;; +1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;; +10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;; +10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;; +10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;; +10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;; +10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;; +10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;; +10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;; +10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;; +10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;; +10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;; +1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;; +1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;; +1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;; +1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;; +10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;; +10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;; +10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;; +10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;; +10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;; +10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;; +10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;; +10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;; +10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;; +10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;; +1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;; +1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;; +1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;; +1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;; +10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;; +10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;; +10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;; +10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;; +10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;; +10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;; +10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;; +10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;; +10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;; +10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;; +1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;; +1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;; +1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;; +1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;; +1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;; +1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;; +10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;; +10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;; +10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;; +10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;; +10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;; +10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;; +10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;; +10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;; +10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;; +10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;; +1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;; +1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;; +1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;; +1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;; +1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;; +1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;; +100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;; +100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;; +100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;; +100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;; +100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;; +100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;; +100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;; +100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;; +100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;; +100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;; +100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;; +100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;; +100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;; +100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;; +100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;; +100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;; +100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;; +100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;; +100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;; +100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;; +100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;; +100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;; +100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;; +100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;; +100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;; +100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;; +100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;; +100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;; +100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;; +100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;; +100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;; +100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;; +100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;; +100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;; +100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;; +100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;; +100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;; +100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;; +100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;; +100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;; +100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;; +100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;pug;;; +100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;; +100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;gup;;; +100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;; +100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;; +100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;; +100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;; +100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;; +100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;; +100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;; +100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;; +100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;; +100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;; +100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;; +100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;; +100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;; +100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;; +100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;; +100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;; +100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;; +100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;; +100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;; +100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;; +100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;; +100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;; +100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;; +100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;; +100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;; +100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;; +100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;; +100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;; +100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;; +100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;; +100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;; +100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;; +100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;; +100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;; +100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;; +100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;; +100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;; +100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;; +100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;; +100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;; +100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;; +100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;; +100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;; +100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;; +100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;; +100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;; +100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;; +10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;; +10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;; +10102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;; +10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;; +10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;; +10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;; +1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;; +1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;; +1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;; +1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;; +1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;; +1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;; +10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;; +10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;; +10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;; +10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;; +10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;; +10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;; +10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;; +10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;; +10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;; +10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; +1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;; +1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;; +1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;; +1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;; +1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;; +1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;; +10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;; +10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;; +10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; +10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;; +10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;; +10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;; +10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;; +10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;; +10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;; +10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;; +1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;; +1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; +1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;; +1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;; +1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;; +1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;; +10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;; +10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;; +10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;; +10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;; +10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;; +10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;; +10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;; +1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;; +1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;; +1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; +1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; +1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;; +1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;; +10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;; +10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;; +10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;; +10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;; +10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;; +10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; +10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;; +10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;; +10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;; +1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;; +1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;; +1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;; +1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;; +1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;; +1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;; +10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;; +10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;; +10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;; +10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;; +10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;; +10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;; +10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;; +10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;; +10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;; +10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;; +1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;; +1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;; +1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;; +1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; +1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; +1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;; +10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;; +10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;; +10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;; +10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;; +10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;; +10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;; +10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;; +10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;; +10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;; +10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;; +1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;; +1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;; +1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;; +10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; +10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;; +10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;; +10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;; +10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;; +10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;; +10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;; +10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;; +1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;; +1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;; +1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;; +1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;; +1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;; +1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;; +10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;; +10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;; +10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;; +10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;; +10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;; +10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;; +10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;; +10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;; +10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;; +10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;; +1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;; +10190;ROMAN SEXTANS SIGN;So;0;ON;;;;;N;;;;; +10191;ROMAN UNCIA SIGN;So;0;ON;;;;;N;;;;; +10192;ROMAN SEMUNCIA SIGN;So;0;ON;;;;;N;;;;; +10193;ROMAN SEXTULA SIGN;So;0;ON;;;;;N;;;;; +10194;ROMAN DIMIDIA SEXTULA SIGN;So;0;ON;;;;;N;;;;; +10195;ROMAN SILIQUA SIGN;So;0;ON;;;;;N;;;;; +10196;ROMAN DENARIUS SIGN;So;0;ON;;;;;N;;;;; +10197;ROMAN QUINARIUS SIGN;So;0;ON;;;;;N;;;;; +10198;ROMAN SESTERTIUS SIGN;So;0;ON;;;;;N;;;;; +10199;ROMAN DUPONDIUS SIGN;So;0;ON;;;;;N;;;;; +1019A;ROMAN AS SIGN;So;0;ON;;;;;N;;;;; +1019B;ROMAN CENTURIAL SIGN;So;0;ON;;;;;N;;;;; +101D0;PHAISTOS DISC SIGN PEDESTRIAN;So;0;L;;;;;N;;;;; +101D1;PHAISTOS DISC SIGN PLUMED HEAD;So;0;L;;;;;N;;;;; +101D2;PHAISTOS DISC SIGN TATTOOED HEAD;So;0;L;;;;;N;;;;; +101D3;PHAISTOS DISC SIGN CAPTIVE;So;0;L;;;;;N;;;;; +101D4;PHAISTOS DISC SIGN CHILD;So;0;L;;;;;N;;;;; +101D5;PHAISTOS DISC SIGN WOMAN;So;0;L;;;;;N;;;;; +101D6;PHAISTOS DISC SIGN HELMET;So;0;L;;;;;N;;;;; +101D7;PHAISTOS DISC SIGN GAUNTLET;So;0;L;;;;;N;;;;; +101D8;PHAISTOS DISC SIGN TIARA;So;0;L;;;;;N;;;;; +101D9;PHAISTOS DISC SIGN ARROW;So;0;L;;;;;N;;;;; +101DA;PHAISTOS DISC SIGN BOW;So;0;L;;;;;N;;;;; +101DB;PHAISTOS DISC SIGN SHIELD;So;0;L;;;;;N;;;;; +101DC;PHAISTOS DISC SIGN CLUB;So;0;L;;;;;N;;;;; +101DD;PHAISTOS DISC SIGN MANACLES;So;0;L;;;;;N;;;;; +101DE;PHAISTOS DISC SIGN MATTOCK;So;0;L;;;;;N;;;;; +101DF;PHAISTOS DISC SIGN SAW;So;0;L;;;;;N;;;;; +101E0;PHAISTOS DISC SIGN LID;So;0;L;;;;;N;;;;; +101E1;PHAISTOS DISC SIGN BOOMERANG;So;0;L;;;;;N;;;;; +101E2;PHAISTOS DISC SIGN CARPENTRY PLANE;So;0;L;;;;;N;;;;; +101E3;PHAISTOS DISC SIGN DOLIUM;So;0;L;;;;;N;;;;; +101E4;PHAISTOS DISC SIGN COMB;So;0;L;;;;;N;;;;; +101E5;PHAISTOS DISC SIGN SLING;So;0;L;;;;;N;;;;; +101E6;PHAISTOS DISC SIGN COLUMN;So;0;L;;;;;N;;;;; +101E7;PHAISTOS DISC SIGN BEEHIVE;So;0;L;;;;;N;;;;; +101E8;PHAISTOS DISC SIGN SHIP;So;0;L;;;;;N;;;;; +101E9;PHAISTOS DISC SIGN HORN;So;0;L;;;;;N;;;;; +101EA;PHAISTOS DISC SIGN HIDE;So;0;L;;;;;N;;;;; +101EB;PHAISTOS DISC SIGN BULLS LEG;So;0;L;;;;;N;;;;; +101EC;PHAISTOS DISC SIGN CAT;So;0;L;;;;;N;;;;; +101ED;PHAISTOS DISC SIGN RAM;So;0;L;;;;;N;;;;; +101EE;PHAISTOS DISC SIGN EAGLE;So;0;L;;;;;N;;;;; +101EF;PHAISTOS DISC SIGN DOVE;So;0;L;;;;;N;;;;; +101F0;PHAISTOS DISC SIGN TUNNY;So;0;L;;;;;N;;;;; +101F1;PHAISTOS DISC SIGN BEE;So;0;L;;;;;N;;;;; +101F2;PHAISTOS DISC SIGN PLANE TREE;So;0;L;;;;;N;;;;; +101F3;PHAISTOS DISC SIGN VINE;So;0;L;;;;;N;;;;; +101F4;PHAISTOS DISC SIGN PAPYRUS;So;0;L;;;;;N;;;;; +101F5;PHAISTOS DISC SIGN ROSETTE;So;0;L;;;;;N;;;;; +101F6;PHAISTOS DISC SIGN LILY;So;0;L;;;;;N;;;;; +101F7;PHAISTOS DISC SIGN OX BACK;So;0;L;;;;;N;;;;; +101F8;PHAISTOS DISC SIGN FLUTE;So;0;L;;;;;N;;;;; +101F9;PHAISTOS DISC SIGN GRATER;So;0;L;;;;;N;;;;; +101FA;PHAISTOS DISC SIGN STRAINER;So;0;L;;;;;N;;;;; +101FB;PHAISTOS DISC SIGN SMALL AXE;So;0;L;;;;;N;;;;; +101FC;PHAISTOS DISC SIGN WAVY BAND;So;0;L;;;;;N;;;;; +101FD;PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;Mn;220;NSM;;;;;N;;;;; +10280;LYCIAN LETTER A;Lo;0;L;;;;;N;;;;; +10281;LYCIAN LETTER E;Lo;0;L;;;;;N;;;;; +10282;LYCIAN LETTER B;Lo;0;L;;;;;N;;;;; +10283;LYCIAN LETTER BH;Lo;0;L;;;;;N;;;;; +10284;LYCIAN LETTER G;Lo;0;L;;;;;N;;;;; +10285;LYCIAN LETTER D;Lo;0;L;;;;;N;;;;; +10286;LYCIAN LETTER I;Lo;0;L;;;;;N;;;;; +10287;LYCIAN LETTER W;Lo;0;L;;;;;N;;;;; +10288;LYCIAN LETTER Z;Lo;0;L;;;;;N;;;;; +10289;LYCIAN LETTER TH;Lo;0;L;;;;;N;;;;; +1028A;LYCIAN LETTER J;Lo;0;L;;;;;N;;;;; +1028B;LYCIAN LETTER K;Lo;0;L;;;;;N;;;;; +1028C;LYCIAN LETTER Q;Lo;0;L;;;;;N;;;;; +1028D;LYCIAN LETTER L;Lo;0;L;;;;;N;;;;; +1028E;LYCIAN LETTER M;Lo;0;L;;;;;N;;;;; +1028F;LYCIAN LETTER N;Lo;0;L;;;;;N;;;;; +10290;LYCIAN LETTER MM;Lo;0;L;;;;;N;;;;; +10291;LYCIAN LETTER NN;Lo;0;L;;;;;N;;;;; +10292;LYCIAN LETTER U;Lo;0;L;;;;;N;;;;; +10293;LYCIAN LETTER P;Lo;0;L;;;;;N;;;;; +10294;LYCIAN LETTER KK;Lo;0;L;;;;;N;;;;; +10295;LYCIAN LETTER R;Lo;0;L;;;;;N;;;;; +10296;LYCIAN LETTER S;Lo;0;L;;;;;N;;;;; +10297;LYCIAN LETTER T;Lo;0;L;;;;;N;;;;; +10298;LYCIAN LETTER TT;Lo;0;L;;;;;N;;;;; +10299;LYCIAN LETTER AN;Lo;0;L;;;;;N;;;;; +1029A;LYCIAN LETTER EN;Lo;0;L;;;;;N;;;;; +1029B;LYCIAN LETTER H;Lo;0;L;;;;;N;;;;; +1029C;LYCIAN LETTER X;Lo;0;L;;;;;N;;;;; +102A0;CARIAN LETTER A;Lo;0;L;;;;;N;;;;; +102A1;CARIAN LETTER P2;Lo;0;L;;;;;N;;;;; +102A2;CARIAN LETTER D;Lo;0;L;;;;;N;;;;; +102A3;CARIAN LETTER L;Lo;0;L;;;;;N;;;;; +102A4;CARIAN LETTER UUU;Lo;0;L;;;;;N;;;;; +102A5;CARIAN LETTER R;Lo;0;L;;;;;N;;;;; +102A6;CARIAN LETTER LD;Lo;0;L;;;;;N;;;;; +102A7;CARIAN LETTER A2;Lo;0;L;;;;;N;;;;; +102A8;CARIAN LETTER Q;Lo;0;L;;;;;N;;;;; +102A9;CARIAN LETTER B;Lo;0;L;;;;;N;;;;; +102AA;CARIAN LETTER M;Lo;0;L;;;;;N;;;;; +102AB;CARIAN LETTER O;Lo;0;L;;;;;N;;;;; +102AC;CARIAN LETTER D2;Lo;0;L;;;;;N;;;;; +102AD;CARIAN LETTER T;Lo;0;L;;;;;N;;;;; +102AE;CARIAN LETTER SH;Lo;0;L;;;;;N;;;;; +102AF;CARIAN LETTER SH2;Lo;0;L;;;;;N;;;;; +102B0;CARIAN LETTER S;Lo;0;L;;;;;N;;;;; +102B1;CARIAN LETTER C-18;Lo;0;L;;;;;N;;;;; +102B2;CARIAN LETTER U;Lo;0;L;;;;;N;;;;; +102B3;CARIAN LETTER NN;Lo;0;L;;;;;N;;;;; +102B4;CARIAN LETTER X;Lo;0;L;;;;;N;;;;; +102B5;CARIAN LETTER N;Lo;0;L;;;;;N;;;;; +102B6;CARIAN LETTER TT2;Lo;0;L;;;;;N;;;;; +102B7;CARIAN LETTER P;Lo;0;L;;;;;N;;;;; +102B8;CARIAN LETTER SS;Lo;0;L;;;;;N;;;;; +102B9;CARIAN LETTER I;Lo;0;L;;;;;N;;;;; +102BA;CARIAN LETTER E;Lo;0;L;;;;;N;;;;; +102BB;CARIAN LETTER UUUU;Lo;0;L;;;;;N;;;;; +102BC;CARIAN LETTER K;Lo;0;L;;;;;N;;;;; +102BD;CARIAN LETTER K2;Lo;0;L;;;;;N;;;;; +102BE;CARIAN LETTER ND;Lo;0;L;;;;;N;;;;; +102BF;CARIAN LETTER UU;Lo;0;L;;;;;N;;;;; +102C0;CARIAN LETTER G;Lo;0;L;;;;;N;;;;; +102C1;CARIAN LETTER G2;Lo;0;L;;;;;N;;;;; +102C2;CARIAN LETTER ST;Lo;0;L;;;;;N;;;;; +102C3;CARIAN LETTER ST2;Lo;0;L;;;;;N;;;;; +102C4;CARIAN LETTER NG;Lo;0;L;;;;;N;;;;; +102C5;CARIAN LETTER II;Lo;0;L;;;;;N;;;;; +102C6;CARIAN LETTER C-39;Lo;0;L;;;;;N;;;;; +102C7;CARIAN LETTER TT;Lo;0;L;;;;;N;;;;; +102C8;CARIAN LETTER UUU2;Lo;0;L;;;;;N;;;;; +102C9;CARIAN LETTER RR;Lo;0;L;;;;;N;;;;; +102CA;CARIAN LETTER MB;Lo;0;L;;;;;N;;;;; +102CB;CARIAN LETTER MB2;Lo;0;L;;;;;N;;;;; +102CC;CARIAN LETTER MB3;Lo;0;L;;;;;N;;;;; +102CD;CARIAN LETTER MB4;Lo;0;L;;;;;N;;;;; +102CE;CARIAN LETTER LD2;Lo;0;L;;;;;N;;;;; +102CF;CARIAN LETTER E2;Lo;0;L;;;;;N;;;;; +102D0;CARIAN LETTER UUU3;Lo;0;L;;;;;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;Nl;0;L;;;;90;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;;;;900;N;;;;; +10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;; +10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;; +10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;; +10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;; +10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;; +10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;; +10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;; +10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;; +10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;; +10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;; +1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;; +1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;; +1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;; +1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;; +1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;; +1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;; +10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;; +10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;; +10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;; +10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;; +10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;; +10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;; +10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;; +10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;; +10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;; +10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;; +1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;; +1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;; +1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;; +1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;; +1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;; +103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;; +103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;; +103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;; +103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;; +103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;; +103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;; +103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;; +103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;; +103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;; +103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;; +103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;; +103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;; +103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;; +103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;; +103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;; +103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;; +103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;; +103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;; +103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;; +103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;; +103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;; +103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;; +103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;; +103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;; +103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;; +103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;; +103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;; +103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;; +103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;; +103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;; +103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;; +103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;; +103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;; +103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;; +103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;; +103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;; +103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;; +103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;; +103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;; +103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;; +103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;; +103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;; +103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;; +103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;; +103D0;OLD PERSIAN WORD DIVIDER;Po;0;L;;;;;N;;;;; +103D1;OLD PERSIAN NUMBER ONE;Nl;0;L;;;;1;N;;;;; +103D2;OLD PERSIAN NUMBER TWO;Nl;0;L;;;;2;N;;;;; +103D3;OLD PERSIAN NUMBER TEN;Nl;0;L;;;;10;N;;;;; +103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;L;;;;20;N;;;;; +103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;L;;;;100;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; +10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E; +10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F; +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 +1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426 +1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427 +10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;; +10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;; +10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;; +10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;; +10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;; +10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;; +10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;; +10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;; +10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;; +10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;; +1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;; +1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;; +1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;; +1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;; +1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;; +1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;; +10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;; +10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;; +10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;; +10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;; +10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;; +10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;; +10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;; +10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;; +10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;; +10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;; +1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;; +1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;; +1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;; +1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;; +1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;; +1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;; +10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;; +10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;; +10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;; +10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;; +10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;; +10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;; +10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;; +10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;; +10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;; +10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;; +1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;; +1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;; +1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;; +1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;; +1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;; +1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;; +10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;; +10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;; +10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;; +10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;; +10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;; +10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;; +10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;; +10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;; +10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;; +10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;; +1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;; +1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;; +1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;; +1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;; +1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;; +1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;; +10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;; +10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;; +10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;; +10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;; +10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;; +10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;; +10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;; +10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;; +10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;; +10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;; +1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;; +1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;; +1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;; +1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;; +104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;; +10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;; +10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;; +10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;; +10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;; +10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;; +10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;; +1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;; +1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;; +1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;; +1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;; +1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;; +1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;; +10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;; +10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;; +10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;; +10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;; +10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;; +10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;; +10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;; +10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;; +10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;; +10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;; +1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;; +1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;; +1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;; +1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;; +1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;; +1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;; +10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;; +10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;; +10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;; +10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;; +10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;; +10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;; +10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;; +10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;; +10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;; +10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;; +1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;; +1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;; +1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;; +1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;; +1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;; +1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;; +10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;; +10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;; +10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;; +10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;; +10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;; +10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;; +10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;; +10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;; +1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;; +1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;; +10900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;; +10901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;; +10902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;; +10903;PHOENICIAN LETTER DELT;Lo;0;R;;;;;N;;;;; +10904;PHOENICIAN LETTER HE;Lo;0;R;;;;;N;;;;; +10905;PHOENICIAN LETTER WAU;Lo;0;R;;;;;N;;;;; +10906;PHOENICIAN LETTER ZAI;Lo;0;R;;;;;N;;;;; +10907;PHOENICIAN LETTER HET;Lo;0;R;;;;;N;;;;; +10908;PHOENICIAN LETTER TET;Lo;0;R;;;;;N;;;;; +10909;PHOENICIAN LETTER YOD;Lo;0;R;;;;;N;;;;; +1090A;PHOENICIAN LETTER KAF;Lo;0;R;;;;;N;;;;; +1090B;PHOENICIAN LETTER LAMD;Lo;0;R;;;;;N;;;;; +1090C;PHOENICIAN LETTER MEM;Lo;0;R;;;;;N;;;;; +1090D;PHOENICIAN LETTER NUN;Lo;0;R;;;;;N;;;;; +1090E;PHOENICIAN LETTER SEMK;Lo;0;R;;;;;N;;;;; +1090F;PHOENICIAN LETTER AIN;Lo;0;R;;;;;N;;;;; +10910;PHOENICIAN LETTER PE;Lo;0;R;;;;;N;;;;; +10911;PHOENICIAN LETTER SADE;Lo;0;R;;;;;N;;;;; +10912;PHOENICIAN LETTER QOF;Lo;0;R;;;;;N;;;;; +10913;PHOENICIAN LETTER ROSH;Lo;0;R;;;;;N;;;;; +10914;PHOENICIAN LETTER SHIN;Lo;0;R;;;;;N;;;;; +10915;PHOENICIAN LETTER TAU;Lo;0;R;;;;;N;;;;; +10916;PHOENICIAN NUMBER ONE;No;0;R;;;;1;N;;;;; +10917;PHOENICIAN NUMBER TEN;No;0;R;;;;10;N;;;;; +10918;PHOENICIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;; +10919;PHOENICIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; +1091F;PHOENICIAN WORD SEPARATOR;Po;0;ON;;;;;N;;;;; +10920;LYDIAN LETTER A;Lo;0;R;;;;;N;;;;; +10921;LYDIAN LETTER B;Lo;0;R;;;;;N;;;;; +10922;LYDIAN LETTER G;Lo;0;R;;;;;N;;;;; +10923;LYDIAN LETTER D;Lo;0;R;;;;;N;;;;; +10924;LYDIAN LETTER E;Lo;0;R;;;;;N;;;;; +10925;LYDIAN LETTER V;Lo;0;R;;;;;N;;;;; +10926;LYDIAN LETTER I;Lo;0;R;;;;;N;;;;; +10927;LYDIAN LETTER Y;Lo;0;R;;;;;N;;;;; +10928;LYDIAN LETTER K;Lo;0;R;;;;;N;;;;; +10929;LYDIAN LETTER L;Lo;0;R;;;;;N;;;;; +1092A;LYDIAN LETTER M;Lo;0;R;;;;;N;;;;; +1092B;LYDIAN LETTER N;Lo;0;R;;;;;N;;;;; +1092C;LYDIAN LETTER O;Lo;0;R;;;;;N;;;;; +1092D;LYDIAN LETTER R;Lo;0;R;;;;;N;;;;; +1092E;LYDIAN LETTER SS;Lo;0;R;;;;;N;;;;; +1092F;LYDIAN LETTER T;Lo;0;R;;;;;N;;;;; +10930;LYDIAN LETTER U;Lo;0;R;;;;;N;;;;; +10931;LYDIAN LETTER F;Lo;0;R;;;;;N;;;;; +10932;LYDIAN LETTER Q;Lo;0;R;;;;;N;;;;; +10933;LYDIAN LETTER S;Lo;0;R;;;;;N;;;;; +10934;LYDIAN LETTER TT;Lo;0;R;;;;;N;;;;; +10935;LYDIAN LETTER AN;Lo;0;R;;;;;N;;;;; +10936;LYDIAN LETTER EN;Lo;0;R;;;;;N;;;;; +10937;LYDIAN LETTER LY;Lo;0;R;;;;;N;;;;; +10938;LYDIAN LETTER NN;Lo;0;R;;;;;N;;;;; +10939;LYDIAN LETTER C;Lo;0;R;;;;;N;;;;; +1093F;LYDIAN TRIANGULAR MARK;Po;0;R;;;;;N;;;;; +10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;; +10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; +10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;; +10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; +10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;; +10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;; +10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;; +10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;; +10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;; +10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;; +10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;; +10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;; +10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;; +10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;; +10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;; +10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;; +10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;; +10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;; +10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;; +10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;; +10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;; +10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;; +10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;; +10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;; +10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;; +10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;; +10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;; +10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;; +10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;; +10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;; +10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;; +10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;; +10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;; +10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;; +10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;; +10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;; +10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;; +10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;; +10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;; +10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;; +10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;; +10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; +10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;; +10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;; +10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;; +10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;; +10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;; +10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;; +10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;; +10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; +10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; +10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;; +10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;; +10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;; +10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;; +10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;; +10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;; +10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;; +10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;; +10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;; +12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;; +12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;; +12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;; +12003;CUNEIFORM SIGN A TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +12004;CUNEIFORM SIGN A TIMES HA;Lo;0;L;;;;;N;;;;; +12005;CUNEIFORM SIGN A TIMES IGI;Lo;0;L;;;;;N;;;;; +12006;CUNEIFORM SIGN A TIMES LAGAR GUNU;Lo;0;L;;;;;N;;;;; +12007;CUNEIFORM SIGN A TIMES MUSH;Lo;0;L;;;;;N;;;;; +12008;CUNEIFORM SIGN A TIMES SAG;Lo;0;L;;;;;N;;;;; +12009;CUNEIFORM SIGN A2;Lo;0;L;;;;;N;;;;; +1200A;CUNEIFORM SIGN AB;Lo;0;L;;;;;N;;;;; +1200B;CUNEIFORM SIGN AB TIMES ASH2;Lo;0;L;;;;;N;;;;; +1200C;CUNEIFORM SIGN AB TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;; +1200D;CUNEIFORM SIGN AB TIMES GAL;Lo;0;L;;;;;N;;;;; +1200E;CUNEIFORM SIGN AB TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +1200F;CUNEIFORM SIGN AB TIMES HA;Lo;0;L;;;;;N;;;;; +12010;CUNEIFORM SIGN AB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +12011;CUNEIFORM SIGN AB TIMES IMIN;Lo;0;L;;;;;N;;;;; +12012;CUNEIFORM SIGN AB TIMES LAGAB;Lo;0;L;;;;;N;;;;; +12013;CUNEIFORM SIGN AB TIMES SHESH;Lo;0;L;;;;;N;;;;; +12014;CUNEIFORM SIGN AB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; +12015;CUNEIFORM SIGN AB GUNU;Lo;0;L;;;;;N;;;;; +12016;CUNEIFORM SIGN AB2;Lo;0;L;;;;;N;;;;; +12017;CUNEIFORM SIGN AB2 TIMES BALAG;Lo;0;L;;;;;N;;;;; +12018;CUNEIFORM SIGN AB2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +12019;CUNEIFORM SIGN AB2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; +1201A;CUNEIFORM SIGN AB2 TIMES SHA3;Lo;0;L;;;;;N;;;;; +1201B;CUNEIFORM SIGN AB2 TIMES TAK4;Lo;0;L;;;;;N;;;;; +1201C;CUNEIFORM SIGN AD;Lo;0;L;;;;;N;;;;; +1201D;CUNEIFORM SIGN AK;Lo;0;L;;;;;N;;;;; +1201E;CUNEIFORM SIGN AK TIMES ERIN2;Lo;0;L;;;;;N;;;;; +1201F;CUNEIFORM SIGN AK TIMES SHITA PLUS GISH;Lo;0;L;;;;;N;;;;; +12020;CUNEIFORM SIGN AL;Lo;0;L;;;;;N;;;;; +12021;CUNEIFORM SIGN AL TIMES AL;Lo;0;L;;;;;N;;;;; +12022;CUNEIFORM SIGN AL TIMES DIM2;Lo;0;L;;;;;N;;;;; +12023;CUNEIFORM SIGN AL TIMES GISH;Lo;0;L;;;;;N;;;;; +12024;CUNEIFORM SIGN AL TIMES HA;Lo;0;L;;;;;N;;;;; +12025;CUNEIFORM SIGN AL TIMES KAD3;Lo;0;L;;;;;N;;;;; +12026;CUNEIFORM SIGN AL TIMES KI;Lo;0;L;;;;;N;;;;; +12027;CUNEIFORM SIGN AL TIMES SHE;Lo;0;L;;;;;N;;;;; +12028;CUNEIFORM SIGN AL TIMES USH;Lo;0;L;;;;;N;;;;; +12029;CUNEIFORM SIGN ALAN;Lo;0;L;;;;;N;;;;; +1202A;CUNEIFORM SIGN ALEPH;Lo;0;L;;;;;N;;;;; +1202B;CUNEIFORM SIGN AMAR;Lo;0;L;;;;;N;;;;; +1202C;CUNEIFORM SIGN AMAR TIMES SHE;Lo;0;L;;;;;N;;;;; +1202D;CUNEIFORM SIGN AN;Lo;0;L;;;;;N;;;;; +1202E;CUNEIFORM SIGN AN OVER AN;Lo;0;L;;;;;N;;;;; +1202F;CUNEIFORM SIGN AN THREE TIMES;Lo;0;L;;;;;N;;;;; +12030;CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA;Lo;0;L;;;;;N;;;;; +12031;CUNEIFORM SIGN AN PLUS NAGA SQUARED;Lo;0;L;;;;;N;;;;; +12032;CUNEIFORM SIGN ANSHE;Lo;0;L;;;;;N;;;;; +12033;CUNEIFORM SIGN APIN;Lo;0;L;;;;;N;;;;; +12034;CUNEIFORM SIGN ARAD;Lo;0;L;;;;;N;;;;; +12035;CUNEIFORM SIGN ARAD TIMES KUR;Lo;0;L;;;;;N;;;;; +12036;CUNEIFORM SIGN ARKAB;Lo;0;L;;;;;N;;;;; +12037;CUNEIFORM SIGN ASAL2;Lo;0;L;;;;;N;;;;; +12038;CUNEIFORM SIGN ASH;Lo;0;L;;;;;N;;;;; +12039;CUNEIFORM SIGN ASH ZIDA TENU;Lo;0;L;;;;;N;;;;; +1203A;CUNEIFORM SIGN ASH KABA TENU;Lo;0;L;;;;;N;;;;; +1203B;CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP;Lo;0;L;;;;;N;;;;; +1203C;CUNEIFORM SIGN ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;; +1203D;CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;; +1203E;CUNEIFORM SIGN ASH2;Lo;0;L;;;;;N;;;;; +1203F;CUNEIFORM SIGN ASHGAB;Lo;0;L;;;;;N;;;;; +12040;CUNEIFORM SIGN BA;Lo;0;L;;;;;N;;;;; +12041;CUNEIFORM SIGN BAD;Lo;0;L;;;;;N;;;;; +12042;CUNEIFORM SIGN BAG3;Lo;0;L;;;;;N;;;;; +12043;CUNEIFORM SIGN BAHAR2;Lo;0;L;;;;;N;;;;; +12044;CUNEIFORM SIGN BAL;Lo;0;L;;;;;N;;;;; +12045;CUNEIFORM SIGN BAL OVER BAL;Lo;0;L;;;;;N;;;;; +12046;CUNEIFORM SIGN BALAG;Lo;0;L;;;;;N;;;;; +12047;CUNEIFORM SIGN BAR;Lo;0;L;;;;;N;;;;; +12048;CUNEIFORM SIGN BARA2;Lo;0;L;;;;;N;;;;; +12049;CUNEIFORM SIGN BI;Lo;0;L;;;;;N;;;;; +1204A;CUNEIFORM SIGN BI TIMES A;Lo;0;L;;;;;N;;;;; +1204B;CUNEIFORM SIGN BI TIMES GAR;Lo;0;L;;;;;N;;;;; +1204C;CUNEIFORM SIGN BI TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +1204D;CUNEIFORM SIGN BU;Lo;0;L;;;;;N;;;;; +1204E;CUNEIFORM SIGN BU OVER BU AB;Lo;0;L;;;;;N;;;;; +1204F;CUNEIFORM SIGN BU OVER BU UN;Lo;0;L;;;;;N;;;;; +12050;CUNEIFORM SIGN BU CROSSING BU;Lo;0;L;;;;;N;;;;; +12051;CUNEIFORM SIGN BULUG;Lo;0;L;;;;;N;;;;; +12052;CUNEIFORM SIGN BULUG OVER BULUG;Lo;0;L;;;;;N;;;;; +12053;CUNEIFORM SIGN BUR;Lo;0;L;;;;;N;;;;; +12054;CUNEIFORM SIGN BUR2;Lo;0;L;;;;;N;;;;; +12055;CUNEIFORM SIGN DA;Lo;0;L;;;;;N;;;;; +12056;CUNEIFORM SIGN DAG;Lo;0;L;;;;;N;;;;; +12057;CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH;Lo;0;L;;;;;N;;;;; +12058;CUNEIFORM SIGN DAG KISIM5 TIMES AMAR;Lo;0;L;;;;;N;;;;; +12059;CUNEIFORM SIGN DAG KISIM5 TIMES BALAG;Lo;0;L;;;;;N;;;;; +1205A;CUNEIFORM SIGN DAG KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;; +1205B;CUNEIFORM SIGN DAG KISIM5 TIMES GA;Lo;0;L;;;;;N;;;;; +1205C;CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH;Lo;0;L;;;;;N;;;;; +1205D;CUNEIFORM SIGN DAG KISIM5 TIMES GI;Lo;0;L;;;;;N;;;;; +1205E;CUNEIFORM SIGN DAG KISIM5 TIMES GIR2;Lo;0;L;;;;;N;;;;; +1205F;CUNEIFORM SIGN DAG KISIM5 TIMES GUD;Lo;0;L;;;;;N;;;;; +12060;CUNEIFORM SIGN DAG KISIM5 TIMES HA;Lo;0;L;;;;;N;;;;; +12061;CUNEIFORM SIGN DAG KISIM5 TIMES IR;Lo;0;L;;;;;N;;;;; +12062;CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU;Lo;0;L;;;;;N;;;;; +12063;CUNEIFORM SIGN DAG KISIM5 TIMES KAK;Lo;0;L;;;;;N;;;;; +12064;CUNEIFORM SIGN DAG KISIM5 TIMES LA;Lo;0;L;;;;;N;;;;; +12065;CUNEIFORM SIGN DAG KISIM5 TIMES LU;Lo;0;L;;;;;N;;;;; +12066;CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2;Lo;0;L;;;;;N;;;;; +12067;CUNEIFORM SIGN DAG KISIM5 TIMES LUM;Lo;0;L;;;;;N;;;;; +12068;CUNEIFORM SIGN DAG KISIM5 TIMES NE;Lo;0;L;;;;;N;;;;; +12069;CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;; +1206A;CUNEIFORM SIGN DAG KISIM5 TIMES SI;Lo;0;L;;;;;N;;;;; +1206B;CUNEIFORM SIGN DAG KISIM5 TIMES TAK4;Lo;0;L;;;;;N;;;;; +1206C;CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2;Lo;0;L;;;;;N;;;;; +1206D;CUNEIFORM SIGN DAG KISIM5 TIMES USH;Lo;0;L;;;;;N;;;;; +1206E;CUNEIFORM SIGN DAM;Lo;0;L;;;;;N;;;;; +1206F;CUNEIFORM SIGN DAR;Lo;0;L;;;;;N;;;;; +12070;CUNEIFORM SIGN DARA3;Lo;0;L;;;;;N;;;;; +12071;CUNEIFORM SIGN DARA4;Lo;0;L;;;;;N;;;;; +12072;CUNEIFORM SIGN DI;Lo;0;L;;;;;N;;;;; +12073;CUNEIFORM SIGN DIB;Lo;0;L;;;;;N;;;;; +12074;CUNEIFORM SIGN DIM;Lo;0;L;;;;;N;;;;; +12075;CUNEIFORM SIGN DIM TIMES SHE;Lo;0;L;;;;;N;;;;; +12076;CUNEIFORM SIGN DIM2;Lo;0;L;;;;;N;;;;; +12077;CUNEIFORM SIGN DIN;Lo;0;L;;;;;N;;;;; +12078;CUNEIFORM SIGN DIN KASKAL U GUNU DISH;Lo;0;L;;;;;N;;;;; +12079;CUNEIFORM SIGN DISH;Lo;0;L;;;;;N;;;;; +1207A;CUNEIFORM SIGN DU;Lo;0;L;;;;;N;;;;; +1207B;CUNEIFORM SIGN DU OVER DU;Lo;0;L;;;;;N;;;;; +1207C;CUNEIFORM SIGN DU GUNU;Lo;0;L;;;;;N;;;;; +1207D;CUNEIFORM SIGN DU SHESHIG;Lo;0;L;;;;;N;;;;; +1207E;CUNEIFORM SIGN DUB;Lo;0;L;;;;;N;;;;; +1207F;CUNEIFORM SIGN DUB TIMES ESH2;Lo;0;L;;;;;N;;;;; +12080;CUNEIFORM SIGN DUB2;Lo;0;L;;;;;N;;;;; +12081;CUNEIFORM SIGN DUG;Lo;0;L;;;;;N;;;;; +12082;CUNEIFORM SIGN DUGUD;Lo;0;L;;;;;N;;;;; +12083;CUNEIFORM SIGN DUH;Lo;0;L;;;;;N;;;;; +12084;CUNEIFORM SIGN DUN;Lo;0;L;;;;;N;;;;; +12085;CUNEIFORM SIGN DUN3;Lo;0;L;;;;;N;;;;; +12086;CUNEIFORM SIGN DUN3 GUNU;Lo;0;L;;;;;N;;;;; +12087;CUNEIFORM SIGN DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; +12088;CUNEIFORM SIGN DUN4;Lo;0;L;;;;;N;;;;; +12089;CUNEIFORM SIGN DUR2;Lo;0;L;;;;;N;;;;; +1208A;CUNEIFORM SIGN E;Lo;0;L;;;;;N;;;;; +1208B;CUNEIFORM SIGN E TIMES PAP;Lo;0;L;;;;;N;;;;; +1208C;CUNEIFORM SIGN E OVER E NUN OVER NUN;Lo;0;L;;;;;N;;;;; +1208D;CUNEIFORM SIGN E2;Lo;0;L;;;;;N;;;;; +1208E;CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA;Lo;0;L;;;;;N;;;;; +1208F;CUNEIFORM SIGN E2 TIMES GAR;Lo;0;L;;;;;N;;;;; +12090;CUNEIFORM SIGN E2 TIMES MI;Lo;0;L;;;;;N;;;;; +12091;CUNEIFORM SIGN E2 TIMES SAL;Lo;0;L;;;;;N;;;;; +12092;CUNEIFORM SIGN E2 TIMES SHE;Lo;0;L;;;;;N;;;;; +12093;CUNEIFORM SIGN E2 TIMES U;Lo;0;L;;;;;N;;;;; +12094;CUNEIFORM SIGN EDIN;Lo;0;L;;;;;N;;;;; +12095;CUNEIFORM SIGN EGIR;Lo;0;L;;;;;N;;;;; +12096;CUNEIFORM SIGN EL;Lo;0;L;;;;;N;;;;; +12097;CUNEIFORM SIGN EN;Lo;0;L;;;;;N;;;;; +12098;CUNEIFORM SIGN EN TIMES GAN2;Lo;0;L;;;;;N;;;;; +12099;CUNEIFORM SIGN EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +1209A;CUNEIFORM SIGN EN TIMES ME;Lo;0;L;;;;;N;;;;; +1209B;CUNEIFORM SIGN EN CROSSING EN;Lo;0;L;;;;;N;;;;; +1209C;CUNEIFORM SIGN EN OPPOSING EN;Lo;0;L;;;;;N;;;;; +1209D;CUNEIFORM SIGN EN SQUARED;Lo;0;L;;;;;N;;;;; +1209E;CUNEIFORM SIGN EREN;Lo;0;L;;;;;N;;;;; +1209F;CUNEIFORM SIGN ERIN2;Lo;0;L;;;;;N;;;;; +120A0;CUNEIFORM SIGN ESH2;Lo;0;L;;;;;N;;;;; +120A1;CUNEIFORM SIGN EZEN;Lo;0;L;;;;;N;;;;; +120A2;CUNEIFORM SIGN EZEN TIMES A;Lo;0;L;;;;;N;;;;; +120A3;CUNEIFORM SIGN EZEN TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;; +120A4;CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL;Lo;0;L;;;;;N;;;;; +120A5;CUNEIFORM SIGN EZEN TIMES AN;Lo;0;L;;;;;N;;;;; +120A6;CUNEIFORM SIGN EZEN TIMES BAD;Lo;0;L;;;;;N;;;;; +120A7;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;; +120A8;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; +120A9;CUNEIFORM SIGN EZEN TIMES HA;Lo;0;L;;;;;N;;;;; +120AA;CUNEIFORM SIGN EZEN TIMES HA GUNU;Lo;0;L;;;;;N;;;;; +120AB;CUNEIFORM SIGN EZEN TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +120AC;CUNEIFORM SIGN EZEN TIMES KASKAL;Lo;0;L;;;;;N;;;;; +120AD;CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED;Lo;0;L;;;;;N;;;;; +120AE;CUNEIFORM SIGN EZEN TIMES KU3;Lo;0;L;;;;;N;;;;; +120AF;CUNEIFORM SIGN EZEN TIMES LA;Lo;0;L;;;;;N;;;;; +120B0;CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL;Lo;0;L;;;;;N;;;;; +120B1;CUNEIFORM SIGN EZEN TIMES LI;Lo;0;L;;;;;N;;;;; +120B2;CUNEIFORM SIGN EZEN TIMES LU;Lo;0;L;;;;;N;;;;; +120B3;CUNEIFORM SIGN EZEN TIMES U2;Lo;0;L;;;;;N;;;;; +120B4;CUNEIFORM SIGN EZEN TIMES UD;Lo;0;L;;;;;N;;;;; +120B5;CUNEIFORM SIGN GA;Lo;0;L;;;;;N;;;;; +120B6;CUNEIFORM SIGN GA GUNU;Lo;0;L;;;;;N;;;;; +120B7;CUNEIFORM SIGN GA2;Lo;0;L;;;;;N;;;;; +120B8;CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;; +120B9;CUNEIFORM SIGN GA2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;; +120BA;CUNEIFORM SIGN GA2 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;; +120BB;CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB;Lo;0;L;;;;;N;;;;; +120BC;CUNEIFORM SIGN GA2 TIMES AN;Lo;0;L;;;;;N;;;;; +120BD;CUNEIFORM SIGN GA2 TIMES ASH;Lo;0;L;;;;;N;;;;; +120BE;CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL;Lo;0;L;;;;;N;;;;; +120BF;CUNEIFORM SIGN GA2 TIMES BAD;Lo;0;L;;;;;N;;;;; +120C0;CUNEIFORM SIGN GA2 TIMES BAR PLUS RA;Lo;0;L;;;;;N;;;;; +120C1;CUNEIFORM SIGN GA2 TIMES BUR;Lo;0;L;;;;;N;;;;; +120C2;CUNEIFORM SIGN GA2 TIMES BUR PLUS RA;Lo;0;L;;;;;N;;;;; +120C3;CUNEIFORM SIGN GA2 TIMES DA;Lo;0;L;;;;;N;;;;; +120C4;CUNEIFORM SIGN GA2 TIMES DI;Lo;0;L;;;;;N;;;;; +120C5;CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE;Lo;0;L;;;;;N;;;;; +120C6;CUNEIFORM SIGN GA2 TIMES DUB;Lo;0;L;;;;;N;;;;; +120C7;CUNEIFORM SIGN GA2 TIMES EL;Lo;0;L;;;;;N;;;;; +120C8;CUNEIFORM SIGN GA2 TIMES EL PLUS LA;Lo;0;L;;;;;N;;;;; +120C9;CUNEIFORM SIGN GA2 TIMES EN;Lo;0;L;;;;;N;;;;; +120CA;CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +120CB;CUNEIFORM SIGN GA2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +120CC;CUNEIFORM SIGN GA2 TIMES GAR;Lo;0;L;;;;;N;;;;; +120CD;CUNEIFORM SIGN GA2 TIMES GI;Lo;0;L;;;;;N;;;;; +120CE;CUNEIFORM SIGN GA2 TIMES GI4;Lo;0;L;;;;;N;;;;; +120CF;CUNEIFORM SIGN GA2 TIMES GI4 PLUS A;Lo;0;L;;;;;N;;;;; +120D0;CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU;Lo;0;L;;;;;N;;;;; +120D1;CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2;Lo;0;L;;;;;N;;;;; +120D2;CUNEIFORM SIGN GA2 TIMES HAL;Lo;0;L;;;;;N;;;;; +120D3;CUNEIFORM SIGN GA2 TIMES HAL PLUS LA;Lo;0;L;;;;;N;;;;; +120D4;CUNEIFORM SIGN GA2 TIMES HI PLUS LI;Lo;0;L;;;;;N;;;;; +120D5;CUNEIFORM SIGN GA2 TIMES HUB2;Lo;0;L;;;;;N;;;;; +120D6;CUNEIFORM SIGN GA2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +120D7;CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH;Lo;0;L;;;;;N;;;;; +120D8;CUNEIFORM SIGN GA2 TIMES KAK;Lo;0;L;;;;;N;;;;; +120D9;CUNEIFORM SIGN GA2 TIMES KASKAL;Lo;0;L;;;;;N;;;;; +120DA;CUNEIFORM SIGN GA2 TIMES KID;Lo;0;L;;;;;N;;;;; +120DB;CUNEIFORM SIGN GA2 TIMES KID PLUS LAL;Lo;0;L;;;;;N;;;;; +120DC;CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN;Lo;0;L;;;;;N;;;;; +120DD;CUNEIFORM SIGN GA2 TIMES LA;Lo;0;L;;;;;N;;;;; +120DE;CUNEIFORM SIGN GA2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; +120DF;CUNEIFORM SIGN GA2 TIMES MI;Lo;0;L;;;;;N;;;;; +120E0;CUNEIFORM SIGN GA2 TIMES NUN;Lo;0;L;;;;;N;;;;; +120E1;CUNEIFORM SIGN GA2 TIMES NUN OVER NUN;Lo;0;L;;;;;N;;;;; +120E2;CUNEIFORM SIGN GA2 TIMES PA;Lo;0;L;;;;;N;;;;; +120E3;CUNEIFORM SIGN GA2 TIMES SAL;Lo;0;L;;;;;N;;;;; +120E4;CUNEIFORM SIGN GA2 TIMES SAR;Lo;0;L;;;;;N;;;;; +120E5;CUNEIFORM SIGN GA2 TIMES SHE;Lo;0;L;;;;;N;;;;; +120E6;CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR;Lo;0;L;;;;;N;;;;; +120E7;CUNEIFORM SIGN GA2 TIMES SHID;Lo;0;L;;;;;N;;;;; +120E8;CUNEIFORM SIGN GA2 TIMES SUM;Lo;0;L;;;;;N;;;;; +120E9;CUNEIFORM SIGN GA2 TIMES TAK4;Lo;0;L;;;;;N;;;;; +120EA;CUNEIFORM SIGN GA2 TIMES U;Lo;0;L;;;;;N;;;;; +120EB;CUNEIFORM SIGN GA2 TIMES UD;Lo;0;L;;;;;N;;;;; +120EC;CUNEIFORM SIGN GA2 TIMES UD PLUS DU;Lo;0;L;;;;;N;;;;; +120ED;CUNEIFORM SIGN GA2 OVER GA2;Lo;0;L;;;;;N;;;;; +120EE;CUNEIFORM SIGN GABA;Lo;0;L;;;;;N;;;;; +120EF;CUNEIFORM SIGN GABA CROSSING GABA;Lo;0;L;;;;;N;;;;; +120F0;CUNEIFORM SIGN GAD;Lo;0;L;;;;;N;;;;; +120F1;CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; +120F2;CUNEIFORM SIGN GAL;Lo;0;L;;;;;N;;;;; +120F3;CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; +120F4;CUNEIFORM SIGN GALAM;Lo;0;L;;;;;N;;;;; +120F5;CUNEIFORM SIGN GAM;Lo;0;L;;;;;N;;;;; +120F6;CUNEIFORM SIGN GAN;Lo;0;L;;;;;N;;;;; +120F7;CUNEIFORM SIGN GAN2;Lo;0;L;;;;;N;;;;; +120F8;CUNEIFORM SIGN GAN2 TENU;Lo;0;L;;;;;N;;;;; +120F9;CUNEIFORM SIGN GAN2 OVER GAN2;Lo;0;L;;;;;N;;;;; +120FA;CUNEIFORM SIGN GAN2 CROSSING GAN2;Lo;0;L;;;;;N;;;;; +120FB;CUNEIFORM SIGN GAR;Lo;0;L;;;;;N;;;;; +120FC;CUNEIFORM SIGN GAR3;Lo;0;L;;;;;N;;;;; +120FD;CUNEIFORM SIGN GASHAN;Lo;0;L;;;;;N;;;;; +120FE;CUNEIFORM SIGN GESHTIN;Lo;0;L;;;;;N;;;;; +120FF;CUNEIFORM SIGN GESHTIN TIMES KUR;Lo;0;L;;;;;N;;;;; +12100;CUNEIFORM SIGN GI;Lo;0;L;;;;;N;;;;; +12101;CUNEIFORM SIGN GI TIMES E;Lo;0;L;;;;;N;;;;; +12102;CUNEIFORM SIGN GI TIMES U;Lo;0;L;;;;;N;;;;; +12103;CUNEIFORM SIGN GI CROSSING GI;Lo;0;L;;;;;N;;;;; +12104;CUNEIFORM SIGN GI4;Lo;0;L;;;;;N;;;;; +12105;CUNEIFORM SIGN GI4 OVER GI4;Lo;0;L;;;;;N;;;;; +12106;CUNEIFORM SIGN GI4 CROSSING GI4;Lo;0;L;;;;;N;;;;; +12107;CUNEIFORM SIGN GIDIM;Lo;0;L;;;;;N;;;;; +12108;CUNEIFORM SIGN GIR2;Lo;0;L;;;;;N;;;;; +12109;CUNEIFORM SIGN GIR2 GUNU;Lo;0;L;;;;;N;;;;; +1210A;CUNEIFORM SIGN GIR3;Lo;0;L;;;;;N;;;;; +1210B;CUNEIFORM SIGN GIR3 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;; +1210C;CUNEIFORM SIGN GIR3 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +1210D;CUNEIFORM SIGN GIR3 TIMES IGI;Lo;0;L;;;;;N;;;;; +1210E;CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI;Lo;0;L;;;;;N;;;;; +1210F;CUNEIFORM SIGN GIR3 TIMES PA;Lo;0;L;;;;;N;;;;; +12110;CUNEIFORM SIGN GISAL;Lo;0;L;;;;;N;;;;; +12111;CUNEIFORM SIGN GISH;Lo;0;L;;;;;N;;;;; +12112;CUNEIFORM SIGN GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; +12113;CUNEIFORM SIGN GISH TIMES BAD;Lo;0;L;;;;;N;;;;; +12114;CUNEIFORM SIGN GISH TIMES TAK4;Lo;0;L;;;;;N;;;;; +12115;CUNEIFORM SIGN GISH TENU;Lo;0;L;;;;;N;;;;; +12116;CUNEIFORM SIGN GU;Lo;0;L;;;;;N;;;;; +12117;CUNEIFORM SIGN GU CROSSING GU;Lo;0;L;;;;;N;;;;; +12118;CUNEIFORM SIGN GU2;Lo;0;L;;;;;N;;;;; +12119;CUNEIFORM SIGN GU2 TIMES KAK;Lo;0;L;;;;;N;;;;; +1211A;CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +1211B;CUNEIFORM SIGN GU2 TIMES NUN;Lo;0;L;;;;;N;;;;; +1211C;CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2;Lo;0;L;;;;;N;;;;; +1211D;CUNEIFORM SIGN GU2 GUNU;Lo;0;L;;;;;N;;;;; +1211E;CUNEIFORM SIGN GUD;Lo;0;L;;;;;N;;;;; +1211F;CUNEIFORM SIGN GUD TIMES A PLUS KUR;Lo;0;L;;;;;N;;;;; +12120;CUNEIFORM SIGN GUD TIMES KUR;Lo;0;L;;;;;N;;;;; +12121;CUNEIFORM SIGN GUD OVER GUD LUGAL;Lo;0;L;;;;;N;;;;; +12122;CUNEIFORM SIGN GUL;Lo;0;L;;;;;N;;;;; +12123;CUNEIFORM SIGN GUM;Lo;0;L;;;;;N;;;;; +12124;CUNEIFORM SIGN GUM TIMES SHE;Lo;0;L;;;;;N;;;;; +12125;CUNEIFORM SIGN GUR;Lo;0;L;;;;;N;;;;; +12126;CUNEIFORM SIGN GUR7;Lo;0;L;;;;;N;;;;; +12127;CUNEIFORM SIGN GURUN;Lo;0;L;;;;;N;;;;; +12128;CUNEIFORM SIGN GURUSH;Lo;0;L;;;;;N;;;;; +12129;CUNEIFORM SIGN HA;Lo;0;L;;;;;N;;;;; +1212A;CUNEIFORM SIGN HA TENU;Lo;0;L;;;;;N;;;;; +1212B;CUNEIFORM SIGN HA GUNU;Lo;0;L;;;;;N;;;;; +1212C;CUNEIFORM SIGN HAL;Lo;0;L;;;;;N;;;;; +1212D;CUNEIFORM SIGN HI;Lo;0;L;;;;;N;;;;; +1212E;CUNEIFORM SIGN HI TIMES ASH;Lo;0;L;;;;;N;;;;; +1212F;CUNEIFORM SIGN HI TIMES ASH2;Lo;0;L;;;;;N;;;;; +12130;CUNEIFORM SIGN HI TIMES BAD;Lo;0;L;;;;;N;;;;; +12131;CUNEIFORM SIGN HI TIMES DISH;Lo;0;L;;;;;N;;;;; +12132;CUNEIFORM SIGN HI TIMES GAD;Lo;0;L;;;;;N;;;;; +12133;CUNEIFORM SIGN HI TIMES KIN;Lo;0;L;;;;;N;;;;; +12134;CUNEIFORM SIGN HI TIMES NUN;Lo;0;L;;;;;N;;;;; +12135;CUNEIFORM SIGN HI TIMES SHE;Lo;0;L;;;;;N;;;;; +12136;CUNEIFORM SIGN HI TIMES U;Lo;0;L;;;;;N;;;;; +12137;CUNEIFORM SIGN HU;Lo;0;L;;;;;N;;;;; +12138;CUNEIFORM SIGN HUB2;Lo;0;L;;;;;N;;;;; +12139;CUNEIFORM SIGN HUB2 TIMES AN;Lo;0;L;;;;;N;;;;; +1213A;CUNEIFORM SIGN HUB2 TIMES HAL;Lo;0;L;;;;;N;;;;; +1213B;CUNEIFORM SIGN HUB2 TIMES KASKAL;Lo;0;L;;;;;N;;;;; +1213C;CUNEIFORM SIGN HUB2 TIMES LISH;Lo;0;L;;;;;N;;;;; +1213D;CUNEIFORM SIGN HUB2 TIMES UD;Lo;0;L;;;;;N;;;;; +1213E;CUNEIFORM SIGN HUL2;Lo;0;L;;;;;N;;;;; +1213F;CUNEIFORM SIGN I;Lo;0;L;;;;;N;;;;; +12140;CUNEIFORM SIGN I A;Lo;0;L;;;;;N;;;;; +12141;CUNEIFORM SIGN IB;Lo;0;L;;;;;N;;;;; +12142;CUNEIFORM SIGN IDIM;Lo;0;L;;;;;N;;;;; +12143;CUNEIFORM SIGN IDIM OVER IDIM BUR;Lo;0;L;;;;;N;;;;; +12144;CUNEIFORM SIGN IDIM OVER IDIM SQUARED;Lo;0;L;;;;;N;;;;; +12145;CUNEIFORM SIGN IG;Lo;0;L;;;;;N;;;;; +12146;CUNEIFORM SIGN IGI;Lo;0;L;;;;;N;;;;; +12147;CUNEIFORM SIGN IGI DIB;Lo;0;L;;;;;N;;;;; +12148;CUNEIFORM SIGN IGI RI;Lo;0;L;;;;;N;;;;; +12149;CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD;Lo;0;L;;;;;N;;;;; +1214A;CUNEIFORM SIGN IGI GUNU;Lo;0;L;;;;;N;;;;; +1214B;CUNEIFORM SIGN IL;Lo;0;L;;;;;N;;;;; +1214C;CUNEIFORM SIGN IL TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +1214D;CUNEIFORM SIGN IL2;Lo;0;L;;;;;N;;;;; +1214E;CUNEIFORM SIGN IM;Lo;0;L;;;;;N;;;;; +1214F;CUNEIFORM SIGN IM TIMES TAK4;Lo;0;L;;;;;N;;;;; +12150;CUNEIFORM SIGN IM CROSSING IM;Lo;0;L;;;;;N;;;;; +12151;CUNEIFORM SIGN IM OPPOSING IM;Lo;0;L;;;;;N;;;;; +12152;CUNEIFORM SIGN IM SQUARED;Lo;0;L;;;;;N;;;;; +12153;CUNEIFORM SIGN IMIN;Lo;0;L;;;;;N;;;;; +12154;CUNEIFORM SIGN IN;Lo;0;L;;;;;N;;;;; +12155;CUNEIFORM SIGN IR;Lo;0;L;;;;;N;;;;; +12156;CUNEIFORM SIGN ISH;Lo;0;L;;;;;N;;;;; +12157;CUNEIFORM SIGN KA;Lo;0;L;;;;;N;;;;; +12158;CUNEIFORM SIGN KA TIMES A;Lo;0;L;;;;;N;;;;; +12159;CUNEIFORM SIGN KA TIMES AD;Lo;0;L;;;;;N;;;;; +1215A;CUNEIFORM SIGN KA TIMES AD PLUS KU3;Lo;0;L;;;;;N;;;;; +1215B;CUNEIFORM SIGN KA TIMES ASH2;Lo;0;L;;;;;N;;;;; +1215C;CUNEIFORM SIGN KA TIMES BAD;Lo;0;L;;;;;N;;;;; +1215D;CUNEIFORM SIGN KA TIMES BALAG;Lo;0;L;;;;;N;;;;; +1215E;CUNEIFORM SIGN KA TIMES BAR;Lo;0;L;;;;;N;;;;; +1215F;CUNEIFORM SIGN KA TIMES BI;Lo;0;L;;;;;N;;;;; +12160;CUNEIFORM SIGN KA TIMES ERIN2;Lo;0;L;;;;;N;;;;; +12161;CUNEIFORM SIGN KA TIMES ESH2;Lo;0;L;;;;;N;;;;; +12162;CUNEIFORM SIGN KA TIMES GA;Lo;0;L;;;;;N;;;;; +12163;CUNEIFORM SIGN KA TIMES GAL;Lo;0;L;;;;;N;;;;; +12164;CUNEIFORM SIGN KA TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +12165;CUNEIFORM SIGN KA TIMES GAR;Lo;0;L;;;;;N;;;;; +12166;CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A;Lo;0;L;;;;;N;;;;; +12167;CUNEIFORM SIGN KA TIMES GI;Lo;0;L;;;;;N;;;;; +12168;CUNEIFORM SIGN KA TIMES GIR2;Lo;0;L;;;;;N;;;;; +12169;CUNEIFORM SIGN KA TIMES GISH PLUS SAR;Lo;0;L;;;;;N;;;;; +1216A;CUNEIFORM SIGN KA TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; +1216B;CUNEIFORM SIGN KA TIMES GU;Lo;0;L;;;;;N;;;;; +1216C;CUNEIFORM SIGN KA TIMES GUR7;Lo;0;L;;;;;N;;;;; +1216D;CUNEIFORM SIGN KA TIMES IGI;Lo;0;L;;;;;N;;;;; +1216E;CUNEIFORM SIGN KA TIMES IM;Lo;0;L;;;;;N;;;;; +1216F;CUNEIFORM SIGN KA TIMES KAK;Lo;0;L;;;;;N;;;;; +12170;CUNEIFORM SIGN KA TIMES KI;Lo;0;L;;;;;N;;;;; +12171;CUNEIFORM SIGN KA TIMES KID;Lo;0;L;;;;;N;;;;; +12172;CUNEIFORM SIGN KA TIMES LI;Lo;0;L;;;;;N;;;;; +12173;CUNEIFORM SIGN KA TIMES LU;Lo;0;L;;;;;N;;;;; +12174;CUNEIFORM SIGN KA TIMES ME;Lo;0;L;;;;;N;;;;; +12175;CUNEIFORM SIGN KA TIMES ME PLUS DU;Lo;0;L;;;;;N;;;;; +12176;CUNEIFORM SIGN KA TIMES ME PLUS GI;Lo;0;L;;;;;N;;;;; +12177;CUNEIFORM SIGN KA TIMES ME PLUS TE;Lo;0;L;;;;;N;;;;; +12178;CUNEIFORM SIGN KA TIMES MI;Lo;0;L;;;;;N;;;;; +12179;CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ;Lo;0;L;;;;;N;;;;; +1217A;CUNEIFORM SIGN KA TIMES NE;Lo;0;L;;;;;N;;;;; +1217B;CUNEIFORM SIGN KA TIMES NUN;Lo;0;L;;;;;N;;;;; +1217C;CUNEIFORM SIGN KA TIMES PI;Lo;0;L;;;;;N;;;;; +1217D;CUNEIFORM SIGN KA TIMES RU;Lo;0;L;;;;;N;;;;; +1217E;CUNEIFORM SIGN KA TIMES SA;Lo;0;L;;;;;N;;;;; +1217F;CUNEIFORM SIGN KA TIMES SAR;Lo;0;L;;;;;N;;;;; +12180;CUNEIFORM SIGN KA TIMES SHA;Lo;0;L;;;;;N;;;;; +12181;CUNEIFORM SIGN KA TIMES SHE;Lo;0;L;;;;;N;;;;; +12182;CUNEIFORM SIGN KA TIMES SHID;Lo;0;L;;;;;N;;;;; +12183;CUNEIFORM SIGN KA TIMES SHU;Lo;0;L;;;;;N;;;;; +12184;CUNEIFORM SIGN KA TIMES SIG;Lo;0;L;;;;;N;;;;; +12185;CUNEIFORM SIGN KA TIMES SUHUR;Lo;0;L;;;;;N;;;;; +12186;CUNEIFORM SIGN KA TIMES TAR;Lo;0;L;;;;;N;;;;; +12187;CUNEIFORM SIGN KA TIMES U;Lo;0;L;;;;;N;;;;; +12188;CUNEIFORM SIGN KA TIMES U2;Lo;0;L;;;;;N;;;;; +12189;CUNEIFORM SIGN KA TIMES UD;Lo;0;L;;;;;N;;;;; +1218A;CUNEIFORM SIGN KA TIMES UMUM TIMES PA;Lo;0;L;;;;;N;;;;; +1218B;CUNEIFORM SIGN KA TIMES USH;Lo;0;L;;;;;N;;;;; +1218C;CUNEIFORM SIGN KA TIMES ZI;Lo;0;L;;;;;N;;;;; +1218D;CUNEIFORM SIGN KA2;Lo;0;L;;;;;N;;;;; +1218E;CUNEIFORM SIGN KA2 CROSSING KA2;Lo;0;L;;;;;N;;;;; +1218F;CUNEIFORM SIGN KAB;Lo;0;L;;;;;N;;;;; +12190;CUNEIFORM SIGN KAD2;Lo;0;L;;;;;N;;;;; +12191;CUNEIFORM SIGN KAD3;Lo;0;L;;;;;N;;;;; +12192;CUNEIFORM SIGN KAD4;Lo;0;L;;;;;N;;;;; +12193;CUNEIFORM SIGN KAD5;Lo;0;L;;;;;N;;;;; +12194;CUNEIFORM SIGN KAD5 OVER KAD5;Lo;0;L;;;;;N;;;;; +12195;CUNEIFORM SIGN KAK;Lo;0;L;;;;;N;;;;; +12196;CUNEIFORM SIGN KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +12197;CUNEIFORM SIGN KAL;Lo;0;L;;;;;N;;;;; +12198;CUNEIFORM SIGN KAL TIMES BAD;Lo;0;L;;;;;N;;;;; +12199;CUNEIFORM SIGN KAL CROSSING KAL;Lo;0;L;;;;;N;;;;; +1219A;CUNEIFORM SIGN KAM2;Lo;0;L;;;;;N;;;;; +1219B;CUNEIFORM SIGN KAM4;Lo;0;L;;;;;N;;;;; +1219C;CUNEIFORM SIGN KASKAL;Lo;0;L;;;;;N;;;;; +1219D;CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;; +1219E;CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;; +1219F;CUNEIFORM SIGN KESH2;Lo;0;L;;;;;N;;;;; +121A0;CUNEIFORM SIGN KI;Lo;0;L;;;;;N;;;;; +121A1;CUNEIFORM SIGN KI TIMES BAD;Lo;0;L;;;;;N;;;;; +121A2;CUNEIFORM SIGN KI TIMES U;Lo;0;L;;;;;N;;;;; +121A3;CUNEIFORM SIGN KI TIMES UD;Lo;0;L;;;;;N;;;;; +121A4;CUNEIFORM SIGN KID;Lo;0;L;;;;;N;;;;; +121A5;CUNEIFORM SIGN KIN;Lo;0;L;;;;;N;;;;; +121A6;CUNEIFORM SIGN KISAL;Lo;0;L;;;;;N;;;;; +121A7;CUNEIFORM SIGN KISH;Lo;0;L;;;;;N;;;;; +121A8;CUNEIFORM SIGN KISIM5;Lo;0;L;;;;;N;;;;; +121A9;CUNEIFORM SIGN KISIM5 OVER KISIM5;Lo;0;L;;;;;N;;;;; +121AA;CUNEIFORM SIGN KU;Lo;0;L;;;;;N;;;;; +121AB;CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2;Lo;0;L;;;;;N;;;;; +121AC;CUNEIFORM SIGN KU3;Lo;0;L;;;;;N;;;;; +121AD;CUNEIFORM SIGN KU4;Lo;0;L;;;;;N;;;;; +121AE;CUNEIFORM SIGN KU4 VARIANT FORM;Lo;0;L;;;;;N;;;;; +121AF;CUNEIFORM SIGN KU7;Lo;0;L;;;;;N;;;;; +121B0;CUNEIFORM SIGN KUL;Lo;0;L;;;;;N;;;;; +121B1;CUNEIFORM SIGN KUL GUNU;Lo;0;L;;;;;N;;;;; +121B2;CUNEIFORM SIGN KUN;Lo;0;L;;;;;N;;;;; +121B3;CUNEIFORM SIGN KUR;Lo;0;L;;;;;N;;;;; +121B4;CUNEIFORM SIGN KUR OPPOSING KUR;Lo;0;L;;;;;N;;;;; +121B5;CUNEIFORM SIGN KUSHU2;Lo;0;L;;;;;N;;;;; +121B6;CUNEIFORM SIGN KWU318;Lo;0;L;;;;;N;;;;; +121B7;CUNEIFORM SIGN LA;Lo;0;L;;;;;N;;;;; +121B8;CUNEIFORM SIGN LAGAB;Lo;0;L;;;;;N;;;;; +121B9;CUNEIFORM SIGN LAGAB TIMES A;Lo;0;L;;;;;N;;;;; +121BA;CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;; +121BB;CUNEIFORM SIGN LAGAB TIMES A PLUS GAR;Lo;0;L;;;;;N;;;;; +121BC;CUNEIFORM SIGN LAGAB TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;; +121BD;CUNEIFORM SIGN LAGAB TIMES AL;Lo;0;L;;;;;N;;;;; +121BE;CUNEIFORM SIGN LAGAB TIMES AN;Lo;0;L;;;;;N;;;;; +121BF;CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU;Lo;0;L;;;;;N;;;;; +121C0;CUNEIFORM SIGN LAGAB TIMES BAD;Lo;0;L;;;;;N;;;;; +121C1;CUNEIFORM SIGN LAGAB TIMES BI;Lo;0;L;;;;;N;;;;; +121C2;CUNEIFORM SIGN LAGAB TIMES DAR;Lo;0;L;;;;;N;;;;; +121C3;CUNEIFORM SIGN LAGAB TIMES EN;Lo;0;L;;;;;N;;;;; +121C4;CUNEIFORM SIGN LAGAB TIMES GA;Lo;0;L;;;;;N;;;;; +121C5;CUNEIFORM SIGN LAGAB TIMES GAR;Lo;0;L;;;;;N;;;;; +121C6;CUNEIFORM SIGN LAGAB TIMES GUD;Lo;0;L;;;;;N;;;;; +121C7;CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD;Lo;0;L;;;;;N;;;;; +121C8;CUNEIFORM SIGN LAGAB TIMES HA;Lo;0;L;;;;;N;;;;; +121C9;CUNEIFORM SIGN LAGAB TIMES HAL;Lo;0;L;;;;;N;;;;; +121CA;CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN;Lo;0;L;;;;;N;;;;; +121CB;CUNEIFORM SIGN LAGAB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +121CC;CUNEIFORM SIGN LAGAB TIMES IM;Lo;0;L;;;;;N;;;;; +121CD;CUNEIFORM SIGN LAGAB TIMES IM PLUS HA;Lo;0;L;;;;;N;;;;; +121CE;CUNEIFORM SIGN LAGAB TIMES IM PLUS LU;Lo;0;L;;;;;N;;;;; +121CF;CUNEIFORM SIGN LAGAB TIMES KI;Lo;0;L;;;;;N;;;;; +121D0;CUNEIFORM SIGN LAGAB TIMES KIN;Lo;0;L;;;;;N;;;;; +121D1;CUNEIFORM SIGN LAGAB TIMES KU3;Lo;0;L;;;;;N;;;;; +121D2;CUNEIFORM SIGN LAGAB TIMES KUL;Lo;0;L;;;;;N;;;;; +121D3;CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A;Lo;0;L;;;;;N;;;;; +121D4;CUNEIFORM SIGN LAGAB TIMES LAGAB;Lo;0;L;;;;;N;;;;; +121D5;CUNEIFORM SIGN LAGAB TIMES LISH;Lo;0;L;;;;;N;;;;; +121D6;CUNEIFORM SIGN LAGAB TIMES LU;Lo;0;L;;;;;N;;;;; +121D7;CUNEIFORM SIGN LAGAB TIMES LUL;Lo;0;L;;;;;N;;;;; +121D8;CUNEIFORM SIGN LAGAB TIMES ME;Lo;0;L;;;;;N;;;;; +121D9;CUNEIFORM SIGN LAGAB TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; +121DA;CUNEIFORM SIGN LAGAB TIMES MUSH;Lo;0;L;;;;;N;;;;; +121DB;CUNEIFORM SIGN LAGAB TIMES NE;Lo;0;L;;;;;N;;;;; +121DC;CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;; +121DD;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2;Lo;0;L;;;;;N;;;;; +121DE;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU;Lo;0;L;;;;;N;;;;; +121DF;CUNEIFORM SIGN LAGAB TIMES SHU2;Lo;0;L;;;;;N;;;;; +121E0;CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2;Lo;0;L;;;;;N;;;;; +121E1;CUNEIFORM SIGN LAGAB TIMES SUM;Lo;0;L;;;;;N;;;;; +121E2;CUNEIFORM SIGN LAGAB TIMES TAG;Lo;0;L;;;;;N;;;;; +121E3;CUNEIFORM SIGN LAGAB TIMES TAK4;Lo;0;L;;;;;N;;;;; +121E4;CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA;Lo;0;L;;;;;N;;;;; +121E5;CUNEIFORM SIGN LAGAB TIMES U;Lo;0;L;;;;;N;;;;; +121E6;CUNEIFORM SIGN LAGAB TIMES U PLUS A;Lo;0;L;;;;;N;;;;; +121E7;CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; +121E8;CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; +121E9;CUNEIFORM SIGN LAGAB TIMES UD;Lo;0;L;;;;;N;;;;; +121EA;CUNEIFORM SIGN LAGAB TIMES USH;Lo;0;L;;;;;N;;;;; +121EB;CUNEIFORM SIGN LAGAB SQUARED;Lo;0;L;;;;;N;;;;; +121EC;CUNEIFORM SIGN LAGAR;Lo;0;L;;;;;N;;;;; +121ED;CUNEIFORM SIGN LAGAR TIMES SHE;Lo;0;L;;;;;N;;;;; +121EE;CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;; +121EF;CUNEIFORM SIGN LAGAR GUNU;Lo;0;L;;;;;N;;;;; +121F0;CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE;Lo;0;L;;;;;N;;;;; +121F1;CUNEIFORM SIGN LAHSHU;Lo;0;L;;;;;N;;;;; +121F2;CUNEIFORM SIGN LAL;Lo;0;L;;;;;N;;;;; +121F3;CUNEIFORM SIGN LAL TIMES LAL;Lo;0;L;;;;;N;;;;; +121F4;CUNEIFORM SIGN LAM;Lo;0;L;;;;;N;;;;; +121F5;CUNEIFORM SIGN LAM TIMES KUR;Lo;0;L;;;;;N;;;;; +121F6;CUNEIFORM SIGN LAM TIMES KUR PLUS RU;Lo;0;L;;;;;N;;;;; +121F7;CUNEIFORM SIGN LI;Lo;0;L;;;;;N;;;;; +121F8;CUNEIFORM SIGN LIL;Lo;0;L;;;;;N;;;;; +121F9;CUNEIFORM SIGN LIMMU2;Lo;0;L;;;;;N;;;;; +121FA;CUNEIFORM SIGN LISH;Lo;0;L;;;;;N;;;;; +121FB;CUNEIFORM SIGN LU;Lo;0;L;;;;;N;;;;; +121FC;CUNEIFORM SIGN LU TIMES BAD;Lo;0;L;;;;;N;;;;; +121FD;CUNEIFORM SIGN LU2;Lo;0;L;;;;;N;;;;; +121FE;CUNEIFORM SIGN LU2 TIMES AL;Lo;0;L;;;;;N;;;;; +121FF;CUNEIFORM SIGN LU2 TIMES BAD;Lo;0;L;;;;;N;;;;; +12200;CUNEIFORM SIGN LU2 TIMES ESH2;Lo;0;L;;;;;N;;;;; +12201;CUNEIFORM SIGN LU2 TIMES ESH2 TENU;Lo;0;L;;;;;N;;;;; +12202;CUNEIFORM SIGN LU2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +12203;CUNEIFORM SIGN LU2 TIMES HI TIMES BAD;Lo;0;L;;;;;N;;;;; +12204;CUNEIFORM SIGN LU2 TIMES IM;Lo;0;L;;;;;N;;;;; +12205;CUNEIFORM SIGN LU2 TIMES KAD2;Lo;0;L;;;;;N;;;;; +12206;CUNEIFORM SIGN LU2 TIMES KAD3;Lo;0;L;;;;;N;;;;; +12207;CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH;Lo;0;L;;;;;N;;;;; +12208;CUNEIFORM SIGN LU2 TIMES KI;Lo;0;L;;;;;N;;;;; +12209;CUNEIFORM SIGN LU2 TIMES LA PLUS ASH;Lo;0;L;;;;;N;;;;; +1220A;CUNEIFORM SIGN LU2 TIMES LAGAB;Lo;0;L;;;;;N;;;;; +1220B;CUNEIFORM SIGN LU2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; +1220C;CUNEIFORM SIGN LU2 TIMES NE;Lo;0;L;;;;;N;;;;; +1220D;CUNEIFORM SIGN LU2 TIMES NU;Lo;0;L;;;;;N;;;;; +1220E;CUNEIFORM SIGN LU2 TIMES SI PLUS ASH;Lo;0;L;;;;;N;;;;; +1220F;CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU;Lo;0;L;;;;;N;;;;; +12210;CUNEIFORM SIGN LU2 TIMES TUG2;Lo;0;L;;;;;N;;;;; +12211;CUNEIFORM SIGN LU2 TENU;Lo;0;L;;;;;N;;;;; +12212;CUNEIFORM SIGN LU2 CROSSING LU2;Lo;0;L;;;;;N;;;;; +12213;CUNEIFORM SIGN LU2 OPPOSING LU2;Lo;0;L;;;;;N;;;;; +12214;CUNEIFORM SIGN LU2 SQUARED;Lo;0;L;;;;;N;;;;; +12215;CUNEIFORM SIGN LU2 SHESHIG;Lo;0;L;;;;;N;;;;; +12216;CUNEIFORM SIGN LU3;Lo;0;L;;;;;N;;;;; +12217;CUNEIFORM SIGN LUGAL;Lo;0;L;;;;;N;;;;; +12218;CUNEIFORM SIGN LUGAL OVER LUGAL;Lo;0;L;;;;;N;;;;; +12219;CUNEIFORM SIGN LUGAL OPPOSING LUGAL;Lo;0;L;;;;;N;;;;; +1221A;CUNEIFORM SIGN LUGAL SHESHIG;Lo;0;L;;;;;N;;;;; +1221B;CUNEIFORM SIGN LUH;Lo;0;L;;;;;N;;;;; +1221C;CUNEIFORM SIGN LUL;Lo;0;L;;;;;N;;;;; +1221D;CUNEIFORM SIGN LUM;Lo;0;L;;;;;N;;;;; +1221E;CUNEIFORM SIGN LUM OVER LUM;Lo;0;L;;;;;N;;;;; +1221F;CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR;Lo;0;L;;;;;N;;;;; +12220;CUNEIFORM SIGN MA;Lo;0;L;;;;;N;;;;; +12221;CUNEIFORM SIGN MA TIMES TAK4;Lo;0;L;;;;;N;;;;; +12222;CUNEIFORM SIGN MA GUNU;Lo;0;L;;;;;N;;;;; +12223;CUNEIFORM SIGN MA2;Lo;0;L;;;;;N;;;;; +12224;CUNEIFORM SIGN MAH;Lo;0;L;;;;;N;;;;; +12225;CUNEIFORM SIGN MAR;Lo;0;L;;;;;N;;;;; +12226;CUNEIFORM SIGN MASH;Lo;0;L;;;;;N;;;;; +12227;CUNEIFORM SIGN MASH2;Lo;0;L;;;;;N;;;;; +12228;CUNEIFORM SIGN ME;Lo;0;L;;;;;N;;;;; +12229;CUNEIFORM SIGN MES;Lo;0;L;;;;;N;;;;; +1222A;CUNEIFORM SIGN MI;Lo;0;L;;;;;N;;;;; +1222B;CUNEIFORM SIGN MIN;Lo;0;L;;;;;N;;;;; +1222C;CUNEIFORM SIGN MU;Lo;0;L;;;;;N;;;;; +1222D;CUNEIFORM SIGN MU OVER MU;Lo;0;L;;;;;N;;;;; +1222E;CUNEIFORM SIGN MUG;Lo;0;L;;;;;N;;;;; +1222F;CUNEIFORM SIGN MUG GUNU;Lo;0;L;;;;;N;;;;; +12230;CUNEIFORM SIGN MUNSUB;Lo;0;L;;;;;N;;;;; +12231;CUNEIFORM SIGN MURGU2;Lo;0;L;;;;;N;;;;; +12232;CUNEIFORM SIGN MUSH;Lo;0;L;;;;;N;;;;; +12233;CUNEIFORM SIGN MUSH TIMES A;Lo;0;L;;;;;N;;;;; +12234;CUNEIFORM SIGN MUSH TIMES KUR;Lo;0;L;;;;;N;;;;; +12235;CUNEIFORM SIGN MUSH TIMES ZA;Lo;0;L;;;;;N;;;;; +12236;CUNEIFORM SIGN MUSH OVER MUSH;Lo;0;L;;;;;N;;;;; +12237;CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA;Lo;0;L;;;;;N;;;;; +12238;CUNEIFORM SIGN MUSH CROSSING MUSH;Lo;0;L;;;;;N;;;;; +12239;CUNEIFORM SIGN MUSH3;Lo;0;L;;;;;N;;;;; +1223A;CUNEIFORM SIGN MUSH3 TIMES A;Lo;0;L;;;;;N;;;;; +1223B;CUNEIFORM SIGN MUSH3 TIMES A PLUS DI;Lo;0;L;;;;;N;;;;; +1223C;CUNEIFORM SIGN MUSH3 TIMES DI;Lo;0;L;;;;;N;;;;; +1223D;CUNEIFORM SIGN MUSH3 GUNU;Lo;0;L;;;;;N;;;;; +1223E;CUNEIFORM SIGN NA;Lo;0;L;;;;;N;;;;; +1223F;CUNEIFORM SIGN NA2;Lo;0;L;;;;;N;;;;; +12240;CUNEIFORM SIGN NAGA;Lo;0;L;;;;;N;;;;; +12241;CUNEIFORM SIGN NAGA INVERTED;Lo;0;L;;;;;N;;;;; +12242;CUNEIFORM SIGN NAGA TIMES SHU TENU;Lo;0;L;;;;;N;;;;; +12243;CUNEIFORM SIGN NAGA OPPOSING NAGA;Lo;0;L;;;;;N;;;;; +12244;CUNEIFORM SIGN NAGAR;Lo;0;L;;;;;N;;;;; +12245;CUNEIFORM SIGN NAM NUTILLU;Lo;0;L;;;;;N;;;;; +12246;CUNEIFORM SIGN NAM;Lo;0;L;;;;;N;;;;; +12247;CUNEIFORM SIGN NAM2;Lo;0;L;;;;;N;;;;; +12248;CUNEIFORM SIGN NE;Lo;0;L;;;;;N;;;;; +12249;CUNEIFORM SIGN NE TIMES A;Lo;0;L;;;;;N;;;;; +1224A;CUNEIFORM SIGN NE TIMES UD;Lo;0;L;;;;;N;;;;; +1224B;CUNEIFORM SIGN NE SHESHIG;Lo;0;L;;;;;N;;;;; +1224C;CUNEIFORM SIGN NI;Lo;0;L;;;;;N;;;;; +1224D;CUNEIFORM SIGN NI TIMES E;Lo;0;L;;;;;N;;;;; +1224E;CUNEIFORM SIGN NI2;Lo;0;L;;;;;N;;;;; +1224F;CUNEIFORM SIGN NIM;Lo;0;L;;;;;N;;;;; +12250;CUNEIFORM SIGN NIM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +12251;CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;; +12252;CUNEIFORM SIGN NINDA2;Lo;0;L;;;;;N;;;;; +12253;CUNEIFORM SIGN NINDA2 TIMES AN;Lo;0;L;;;;;N;;;;; +12254;CUNEIFORM SIGN NINDA2 TIMES ASH;Lo;0;L;;;;;N;;;;; +12255;CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH;Lo;0;L;;;;;N;;;;; +12256;CUNEIFORM SIGN NINDA2 TIMES GUD;Lo;0;L;;;;;N;;;;; +12257;CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;; +12258;CUNEIFORM SIGN NINDA2 TIMES NE;Lo;0;L;;;;;N;;;;; +12259;CUNEIFORM SIGN NINDA2 TIMES NUN;Lo;0;L;;;;;N;;;;; +1225A;CUNEIFORM SIGN NINDA2 TIMES SHE;Lo;0;L;;;;;N;;;;; +1225B;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN;Lo;0;L;;;;;N;;;;; +1225C;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH;Lo;0;L;;;;;N;;;;; +1225D;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH;Lo;0;L;;;;;N;;;;; +1225E;CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; +1225F;CUNEIFORM SIGN NINDA2 TIMES USH;Lo;0;L;;;;;N;;;;; +12260;CUNEIFORM SIGN NISAG;Lo;0;L;;;;;N;;;;; +12261;CUNEIFORM SIGN NU;Lo;0;L;;;;;N;;;;; +12262;CUNEIFORM SIGN NU11;Lo;0;L;;;;;N;;;;; +12263;CUNEIFORM SIGN NUN;Lo;0;L;;;;;N;;;;; +12264;CUNEIFORM SIGN NUN LAGAR TIMES GAR;Lo;0;L;;;;;N;;;;; +12265;CUNEIFORM SIGN NUN LAGAR TIMES MASH;Lo;0;L;;;;;N;;;;; +12266;CUNEIFORM SIGN NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;; +12267;CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;; +12268;CUNEIFORM SIGN NUN LAGAR TIMES USH;Lo;0;L;;;;;N;;;;; +12269;CUNEIFORM SIGN NUN TENU;Lo;0;L;;;;;N;;;;; +1226A;CUNEIFORM SIGN NUN OVER NUN;Lo;0;L;;;;;N;;;;; +1226B;CUNEIFORM SIGN NUN CROSSING NUN;Lo;0;L;;;;;N;;;;; +1226C;CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR;Lo;0;L;;;;;N;;;;; +1226D;CUNEIFORM SIGN NUNUZ;Lo;0;L;;;;;N;;;;; +1226E;CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB;Lo;0;L;;;;;N;;;;; +1226F;CUNEIFORM SIGN NUNUZ AB2 TIMES BI;Lo;0;L;;;;;N;;;;; +12270;CUNEIFORM SIGN NUNUZ AB2 TIMES DUG;Lo;0;L;;;;;N;;;;; +12271;CUNEIFORM SIGN NUNUZ AB2 TIMES GUD;Lo;0;L;;;;;N;;;;; +12272;CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +12273;CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3;Lo;0;L;;;;;N;;;;; +12274;CUNEIFORM SIGN NUNUZ AB2 TIMES LA;Lo;0;L;;;;;N;;;;; +12275;CUNEIFORM SIGN NUNUZ AB2 TIMES NE;Lo;0;L;;;;;N;;;;; +12276;CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3;Lo;0;L;;;;;N;;;;; +12277;CUNEIFORM SIGN NUNUZ AB2 TIMES U2;Lo;0;L;;;;;N;;;;; +12278;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;; +12279;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U;Lo;0;L;;;;;N;;;;; +1227A;CUNEIFORM SIGN PA;Lo;0;L;;;;;N;;;;; +1227B;CUNEIFORM SIGN PAD;Lo;0;L;;;;;N;;;;; +1227C;CUNEIFORM SIGN PAN;Lo;0;L;;;;;N;;;;; +1227D;CUNEIFORM SIGN PAP;Lo;0;L;;;;;N;;;;; +1227E;CUNEIFORM SIGN PESH2;Lo;0;L;;;;;N;;;;; +1227F;CUNEIFORM SIGN PI;Lo;0;L;;;;;N;;;;; +12280;CUNEIFORM SIGN PI TIMES A;Lo;0;L;;;;;N;;;;; +12281;CUNEIFORM SIGN PI TIMES AB;Lo;0;L;;;;;N;;;;; +12282;CUNEIFORM SIGN PI TIMES BI;Lo;0;L;;;;;N;;;;; +12283;CUNEIFORM SIGN PI TIMES BU;Lo;0;L;;;;;N;;;;; +12284;CUNEIFORM SIGN PI TIMES E;Lo;0;L;;;;;N;;;;; +12285;CUNEIFORM SIGN PI TIMES I;Lo;0;L;;;;;N;;;;; +12286;CUNEIFORM SIGN PI TIMES IB;Lo;0;L;;;;;N;;;;; +12287;CUNEIFORM SIGN PI TIMES U;Lo;0;L;;;;;N;;;;; +12288;CUNEIFORM SIGN PI TIMES U2;Lo;0;L;;;;;N;;;;; +12289;CUNEIFORM SIGN PI CROSSING PI;Lo;0;L;;;;;N;;;;; +1228A;CUNEIFORM SIGN PIRIG;Lo;0;L;;;;;N;;;;; +1228B;CUNEIFORM SIGN PIRIG TIMES KAL;Lo;0;L;;;;;N;;;;; +1228C;CUNEIFORM SIGN PIRIG TIMES UD;Lo;0;L;;;;;N;;;;; +1228D;CUNEIFORM SIGN PIRIG TIMES ZA;Lo;0;L;;;;;N;;;;; +1228E;CUNEIFORM SIGN PIRIG OPPOSING PIRIG;Lo;0;L;;;;;N;;;;; +1228F;CUNEIFORM SIGN RA;Lo;0;L;;;;;N;;;;; +12290;CUNEIFORM SIGN RAB;Lo;0;L;;;;;N;;;;; +12291;CUNEIFORM SIGN RI;Lo;0;L;;;;;N;;;;; +12292;CUNEIFORM SIGN RU;Lo;0;L;;;;;N;;;;; +12293;CUNEIFORM SIGN SA;Lo;0;L;;;;;N;;;;; +12294;CUNEIFORM SIGN SAG NUTILLU;Lo;0;L;;;;;N;;;;; +12295;CUNEIFORM SIGN SAG;Lo;0;L;;;;;N;;;;; +12296;CUNEIFORM SIGN SAG TIMES A;Lo;0;L;;;;;N;;;;; +12297;CUNEIFORM SIGN SAG TIMES DU;Lo;0;L;;;;;N;;;;; +12298;CUNEIFORM SIGN SAG TIMES DUB;Lo;0;L;;;;;N;;;;; +12299;CUNEIFORM SIGN SAG TIMES HA;Lo;0;L;;;;;N;;;;; +1229A;CUNEIFORM SIGN SAG TIMES KAK;Lo;0;L;;;;;N;;;;; +1229B;CUNEIFORM SIGN SAG TIMES KUR;Lo;0;L;;;;;N;;;;; +1229C;CUNEIFORM SIGN SAG TIMES LUM;Lo;0;L;;;;;N;;;;; +1229D;CUNEIFORM SIGN SAG TIMES MI;Lo;0;L;;;;;N;;;;; +1229E;CUNEIFORM SIGN SAG TIMES NUN;Lo;0;L;;;;;N;;;;; +1229F;CUNEIFORM SIGN SAG TIMES SAL;Lo;0;L;;;;;N;;;;; +122A0;CUNEIFORM SIGN SAG TIMES SHID;Lo;0;L;;;;;N;;;;; +122A1;CUNEIFORM SIGN SAG TIMES TAB;Lo;0;L;;;;;N;;;;; +122A2;CUNEIFORM SIGN SAG TIMES U2;Lo;0;L;;;;;N;;;;; +122A3;CUNEIFORM SIGN SAG TIMES UB;Lo;0;L;;;;;N;;;;; +122A4;CUNEIFORM SIGN SAG TIMES UM;Lo;0;L;;;;;N;;;;; +122A5;CUNEIFORM SIGN SAG TIMES UR;Lo;0;L;;;;;N;;;;; +122A6;CUNEIFORM SIGN SAG TIMES USH;Lo;0;L;;;;;N;;;;; +122A7;CUNEIFORM SIGN SAG OVER SAG;Lo;0;L;;;;;N;;;;; +122A8;CUNEIFORM SIGN SAG GUNU;Lo;0;L;;;;;N;;;;; +122A9;CUNEIFORM SIGN SAL;Lo;0;L;;;;;N;;;;; +122AA;CUNEIFORM SIGN SAL LAGAB TIMES ASH2;Lo;0;L;;;;;N;;;;; +122AB;CUNEIFORM SIGN SANGA2;Lo;0;L;;;;;N;;;;; +122AC;CUNEIFORM SIGN SAR;Lo;0;L;;;;;N;;;;; +122AD;CUNEIFORM SIGN SHA;Lo;0;L;;;;;N;;;;; +122AE;CUNEIFORM SIGN SHA3;Lo;0;L;;;;;N;;;;; +122AF;CUNEIFORM SIGN SHA3 TIMES A;Lo;0;L;;;;;N;;;;; +122B0;CUNEIFORM SIGN SHA3 TIMES BAD;Lo;0;L;;;;;N;;;;; +122B1;CUNEIFORM SIGN SHA3 TIMES GISH;Lo;0;L;;;;;N;;;;; +122B2;CUNEIFORM SIGN SHA3 TIMES NE;Lo;0;L;;;;;N;;;;; +122B3;CUNEIFORM SIGN SHA3 TIMES SHU2;Lo;0;L;;;;;N;;;;; +122B4;CUNEIFORM SIGN SHA3 TIMES TUR;Lo;0;L;;;;;N;;;;; +122B5;CUNEIFORM SIGN SHA3 TIMES U;Lo;0;L;;;;;N;;;;; +122B6;CUNEIFORM SIGN SHA3 TIMES U PLUS A;Lo;0;L;;;;;N;;;;; +122B7;CUNEIFORM SIGN SHA6;Lo;0;L;;;;;N;;;;; +122B8;CUNEIFORM SIGN SHAB6;Lo;0;L;;;;;N;;;;; +122B9;CUNEIFORM SIGN SHAR2;Lo;0;L;;;;;N;;;;; +122BA;CUNEIFORM SIGN SHE;Lo;0;L;;;;;N;;;;; +122BB;CUNEIFORM SIGN SHE HU;Lo;0;L;;;;;N;;;;; +122BC;CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; +122BD;CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR;Lo;0;L;;;;;N;;;;; +122BE;CUNEIFORM SIGN SHEG9;Lo;0;L;;;;;N;;;;; +122BF;CUNEIFORM SIGN SHEN;Lo;0;L;;;;;N;;;;; +122C0;CUNEIFORM SIGN SHESH;Lo;0;L;;;;;N;;;;; +122C1;CUNEIFORM SIGN SHESH2;Lo;0;L;;;;;N;;;;; +122C2;CUNEIFORM SIGN SHESHLAM;Lo;0;L;;;;;N;;;;; +122C3;CUNEIFORM SIGN SHID;Lo;0;L;;;;;N;;;;; +122C4;CUNEIFORM SIGN SHID TIMES A;Lo;0;L;;;;;N;;;;; +122C5;CUNEIFORM SIGN SHID TIMES IM;Lo;0;L;;;;;N;;;;; +122C6;CUNEIFORM SIGN SHIM;Lo;0;L;;;;;N;;;;; +122C7;CUNEIFORM SIGN SHIM TIMES A;Lo;0;L;;;;;N;;;;; +122C8;CUNEIFORM SIGN SHIM TIMES BAL;Lo;0;L;;;;;N;;;;; +122C9;CUNEIFORM SIGN SHIM TIMES BULUG;Lo;0;L;;;;;N;;;;; +122CA;CUNEIFORM SIGN SHIM TIMES DIN;Lo;0;L;;;;;N;;;;; +122CB;CUNEIFORM SIGN SHIM TIMES GAR;Lo;0;L;;;;;N;;;;; +122CC;CUNEIFORM SIGN SHIM TIMES IGI;Lo;0;L;;;;;N;;;;; +122CD;CUNEIFORM SIGN SHIM TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +122CE;CUNEIFORM SIGN SHIM TIMES KUSHU2;Lo;0;L;;;;;N;;;;; +122CF;CUNEIFORM SIGN SHIM TIMES LUL;Lo;0;L;;;;;N;;;;; +122D0;CUNEIFORM SIGN SHIM TIMES MUG;Lo;0;L;;;;;N;;;;; +122D1;CUNEIFORM SIGN SHIM TIMES SAL;Lo;0;L;;;;;N;;;;; +122D2;CUNEIFORM SIGN SHINIG;Lo;0;L;;;;;N;;;;; +122D3;CUNEIFORM SIGN SHIR;Lo;0;L;;;;;N;;;;; +122D4;CUNEIFORM SIGN SHIR TENU;Lo;0;L;;;;;N;;;;; +122D5;CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR;Lo;0;L;;;;;N;;;;; +122D6;CUNEIFORM SIGN SHITA;Lo;0;L;;;;;N;;;;; +122D7;CUNEIFORM SIGN SHU;Lo;0;L;;;;;N;;;;; +122D8;CUNEIFORM SIGN SHU OVER INVERTED SHU;Lo;0;L;;;;;N;;;;; +122D9;CUNEIFORM SIGN SHU2;Lo;0;L;;;;;N;;;;; +122DA;CUNEIFORM SIGN SHUBUR;Lo;0;L;;;;;N;;;;; +122DB;CUNEIFORM SIGN SI;Lo;0;L;;;;;N;;;;; +122DC;CUNEIFORM SIGN SI GUNU;Lo;0;L;;;;;N;;;;; +122DD;CUNEIFORM SIGN SIG;Lo;0;L;;;;;N;;;;; +122DE;CUNEIFORM SIGN SIG4;Lo;0;L;;;;;N;;;;; +122DF;CUNEIFORM SIGN SIG4 OVER SIG4 SHU2;Lo;0;L;;;;;N;;;;; +122E0;CUNEIFORM SIGN SIK2;Lo;0;L;;;;;N;;;;; +122E1;CUNEIFORM SIGN SILA3;Lo;0;L;;;;;N;;;;; +122E2;CUNEIFORM SIGN SU;Lo;0;L;;;;;N;;;;; +122E3;CUNEIFORM SIGN SU OVER SU;Lo;0;L;;;;;N;;;;; +122E4;CUNEIFORM SIGN SUD;Lo;0;L;;;;;N;;;;; +122E5;CUNEIFORM SIGN SUD2;Lo;0;L;;;;;N;;;;; +122E6;CUNEIFORM SIGN SUHUR;Lo;0;L;;;;;N;;;;; +122E7;CUNEIFORM SIGN SUM;Lo;0;L;;;;;N;;;;; +122E8;CUNEIFORM SIGN SUMASH;Lo;0;L;;;;;N;;;;; +122E9;CUNEIFORM SIGN SUR;Lo;0;L;;;;;N;;;;; +122EA;CUNEIFORM SIGN SUR9;Lo;0;L;;;;;N;;;;; +122EB;CUNEIFORM SIGN TA;Lo;0;L;;;;;N;;;;; +122EC;CUNEIFORM SIGN TA ASTERISK;Lo;0;L;;;;;N;;;;; +122ED;CUNEIFORM SIGN TA TIMES HI;Lo;0;L;;;;;N;;;;; +122EE;CUNEIFORM SIGN TA TIMES MI;Lo;0;L;;;;;N;;;;; +122EF;CUNEIFORM SIGN TA GUNU;Lo;0;L;;;;;N;;;;; +122F0;CUNEIFORM SIGN TAB;Lo;0;L;;;;;N;;;;; +122F1;CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH;Lo;0;L;;;;;N;;;;; +122F2;CUNEIFORM SIGN TAB SQUARED;Lo;0;L;;;;;N;;;;; +122F3;CUNEIFORM SIGN TAG;Lo;0;L;;;;;N;;;;; +122F4;CUNEIFORM SIGN TAG TIMES BI;Lo;0;L;;;;;N;;;;; +122F5;CUNEIFORM SIGN TAG TIMES GUD;Lo;0;L;;;;;N;;;;; +122F6;CUNEIFORM SIGN TAG TIMES SHE;Lo;0;L;;;;;N;;;;; +122F7;CUNEIFORM SIGN TAG TIMES SHU;Lo;0;L;;;;;N;;;;; +122F8;CUNEIFORM SIGN TAG TIMES TUG2;Lo;0;L;;;;;N;;;;; +122F9;CUNEIFORM SIGN TAG TIMES UD;Lo;0;L;;;;;N;;;;; +122FA;CUNEIFORM SIGN TAK4;Lo;0;L;;;;;N;;;;; +122FB;CUNEIFORM SIGN TAR;Lo;0;L;;;;;N;;;;; +122FC;CUNEIFORM SIGN TE;Lo;0;L;;;;;N;;;;; +122FD;CUNEIFORM SIGN TE GUNU;Lo;0;L;;;;;N;;;;; +122FE;CUNEIFORM SIGN TI;Lo;0;L;;;;;N;;;;; +122FF;CUNEIFORM SIGN TI TENU;Lo;0;L;;;;;N;;;;; +12300;CUNEIFORM SIGN TIL;Lo;0;L;;;;;N;;;;; +12301;CUNEIFORM SIGN TIR;Lo;0;L;;;;;N;;;;; +12302;CUNEIFORM SIGN TIR TIMES TAK4;Lo;0;L;;;;;N;;;;; +12303;CUNEIFORM SIGN TIR OVER TIR;Lo;0;L;;;;;N;;;;; +12304;CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; +12305;CUNEIFORM SIGN TU;Lo;0;L;;;;;N;;;;; +12306;CUNEIFORM SIGN TUG2;Lo;0;L;;;;;N;;;;; +12307;CUNEIFORM SIGN TUK;Lo;0;L;;;;;N;;;;; +12308;CUNEIFORM SIGN TUM;Lo;0;L;;;;;N;;;;; +12309;CUNEIFORM SIGN TUR;Lo;0;L;;;;;N;;;;; +1230A;CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA;Lo;0;L;;;;;N;;;;; +1230B;CUNEIFORM SIGN U;Lo;0;L;;;;;N;;;;; +1230C;CUNEIFORM SIGN U GUD;Lo;0;L;;;;;N;;;;; +1230D;CUNEIFORM SIGN U U U;Lo;0;L;;;;;N;;;;; +1230E;CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR;Lo;0;L;;;;;N;;;;; +1230F;CUNEIFORM SIGN U OVER U SUR OVER SUR;Lo;0;L;;;;;N;;;;; +12310;CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED;Lo;0;L;;;;;N;;;;; +12311;CUNEIFORM SIGN U2;Lo;0;L;;;;;N;;;;; +12312;CUNEIFORM SIGN UB;Lo;0;L;;;;;N;;;;; +12313;CUNEIFORM SIGN UD;Lo;0;L;;;;;N;;;;; +12314;CUNEIFORM SIGN UD KUSHU2;Lo;0;L;;;;;N;;;;; +12315;CUNEIFORM SIGN UD TIMES BAD;Lo;0;L;;;;;N;;;;; +12316;CUNEIFORM SIGN UD TIMES MI;Lo;0;L;;;;;N;;;;; +12317;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; +12318;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU;Lo;0;L;;;;;N;;;;; +12319;CUNEIFORM SIGN UD GUNU;Lo;0;L;;;;;N;;;;; +1231A;CUNEIFORM SIGN UD SHESHIG;Lo;0;L;;;;;N;;;;; +1231B;CUNEIFORM SIGN UD SHESHIG TIMES BAD;Lo;0;L;;;;;N;;;;; +1231C;CUNEIFORM SIGN UDUG;Lo;0;L;;;;;N;;;;; +1231D;CUNEIFORM SIGN UM;Lo;0;L;;;;;N;;;;; +1231E;CUNEIFORM SIGN UM TIMES LAGAB;Lo;0;L;;;;;N;;;;; +1231F;CUNEIFORM SIGN UM TIMES ME PLUS DA;Lo;0;L;;;;;N;;;;; +12320;CUNEIFORM SIGN UM TIMES SHA3;Lo;0;L;;;;;N;;;;; +12321;CUNEIFORM SIGN UM TIMES U;Lo;0;L;;;;;N;;;;; +12322;CUNEIFORM SIGN UMBIN;Lo;0;L;;;;;N;;;;; +12323;CUNEIFORM SIGN UMUM;Lo;0;L;;;;;N;;;;; +12324;CUNEIFORM SIGN UMUM TIMES KASKAL;Lo;0;L;;;;;N;;;;; +12325;CUNEIFORM SIGN UMUM TIMES PA;Lo;0;L;;;;;N;;;;; +12326;CUNEIFORM SIGN UN;Lo;0;L;;;;;N;;;;; +12327;CUNEIFORM SIGN UN GUNU;Lo;0;L;;;;;N;;;;; +12328;CUNEIFORM SIGN UR;Lo;0;L;;;;;N;;;;; +12329;CUNEIFORM SIGN UR CROSSING UR;Lo;0;L;;;;;N;;;;; +1232A;CUNEIFORM SIGN UR SHESHIG;Lo;0;L;;;;;N;;;;; +1232B;CUNEIFORM SIGN UR2;Lo;0;L;;;;;N;;;;; +1232C;CUNEIFORM SIGN UR2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;; +1232D;CUNEIFORM SIGN UR2 TIMES A PLUS NA;Lo;0;L;;;;;N;;;;; +1232E;CUNEIFORM SIGN UR2 TIMES AL;Lo;0;L;;;;;N;;;;; +1232F;CUNEIFORM SIGN UR2 TIMES HA;Lo;0;L;;;;;N;;;;; +12330;CUNEIFORM SIGN UR2 TIMES NUN;Lo;0;L;;;;;N;;;;; +12331;CUNEIFORM SIGN UR2 TIMES U2;Lo;0;L;;;;;N;;;;; +12332;CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; +12333;CUNEIFORM SIGN UR2 TIMES U2 PLUS BI;Lo;0;L;;;;;N;;;;; +12334;CUNEIFORM SIGN UR4;Lo;0;L;;;;;N;;;;; +12335;CUNEIFORM SIGN URI;Lo;0;L;;;;;N;;;;; +12336;CUNEIFORM SIGN URI3;Lo;0;L;;;;;N;;;;; +12337;CUNEIFORM SIGN URU;Lo;0;L;;;;;N;;;;; +12338;CUNEIFORM SIGN URU TIMES A;Lo;0;L;;;;;N;;;;; +12339;CUNEIFORM SIGN URU TIMES ASHGAB;Lo;0;L;;;;;N;;;;; +1233A;CUNEIFORM SIGN URU TIMES BAR;Lo;0;L;;;;;N;;;;; +1233B;CUNEIFORM SIGN URU TIMES DUN;Lo;0;L;;;;;N;;;;; +1233C;CUNEIFORM SIGN URU TIMES GA;Lo;0;L;;;;;N;;;;; +1233D;CUNEIFORM SIGN URU TIMES GAL;Lo;0;L;;;;;N;;;;; +1233E;CUNEIFORM SIGN URU TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +1233F;CUNEIFORM SIGN URU TIMES GAR;Lo;0;L;;;;;N;;;;; +12340;CUNEIFORM SIGN URU TIMES GU;Lo;0;L;;;;;N;;;;; +12341;CUNEIFORM SIGN URU TIMES HA;Lo;0;L;;;;;N;;;;; +12342;CUNEIFORM SIGN URU TIMES IGI;Lo;0;L;;;;;N;;;;; +12343;CUNEIFORM SIGN URU TIMES IM;Lo;0;L;;;;;N;;;;; +12344;CUNEIFORM SIGN URU TIMES ISH;Lo;0;L;;;;;N;;;;; +12345;CUNEIFORM SIGN URU TIMES KI;Lo;0;L;;;;;N;;;;; +12346;CUNEIFORM SIGN URU TIMES LUM;Lo;0;L;;;;;N;;;;; +12347;CUNEIFORM SIGN URU TIMES MIN;Lo;0;L;;;;;N;;;;; +12348;CUNEIFORM SIGN URU TIMES PA;Lo;0;L;;;;;N;;;;; +12349;CUNEIFORM SIGN URU TIMES SHE;Lo;0;L;;;;;N;;;;; +1234A;CUNEIFORM SIGN URU TIMES SIG4;Lo;0;L;;;;;N;;;;; +1234B;CUNEIFORM SIGN URU TIMES TU;Lo;0;L;;;;;N;;;;; +1234C;CUNEIFORM SIGN URU TIMES U PLUS GUD;Lo;0;L;;;;;N;;;;; +1234D;CUNEIFORM SIGN URU TIMES UD;Lo;0;L;;;;;N;;;;; +1234E;CUNEIFORM SIGN URU TIMES URUDA;Lo;0;L;;;;;N;;;;; +1234F;CUNEIFORM SIGN URUDA;Lo;0;L;;;;;N;;;;; +12350;CUNEIFORM SIGN URUDA TIMES U;Lo;0;L;;;;;N;;;;; +12351;CUNEIFORM SIGN USH;Lo;0;L;;;;;N;;;;; +12352;CUNEIFORM SIGN USH TIMES A;Lo;0;L;;;;;N;;;;; +12353;CUNEIFORM SIGN USH TIMES KU;Lo;0;L;;;;;N;;;;; +12354;CUNEIFORM SIGN USH TIMES KUR;Lo;0;L;;;;;N;;;;; +12355;CUNEIFORM SIGN USH TIMES TAK4;Lo;0;L;;;;;N;;;;; +12356;CUNEIFORM SIGN USHX;Lo;0;L;;;;;N;;;;; +12357;CUNEIFORM SIGN USH2;Lo;0;L;;;;;N;;;;; +12358;CUNEIFORM SIGN USHUMX;Lo;0;L;;;;;N;;;;; +12359;CUNEIFORM SIGN UTUKI;Lo;0;L;;;;;N;;;;; +1235A;CUNEIFORM SIGN UZ3;Lo;0;L;;;;;N;;;;; +1235B;CUNEIFORM SIGN UZ3 TIMES KASKAL;Lo;0;L;;;;;N;;;;; +1235C;CUNEIFORM SIGN UZU;Lo;0;L;;;;;N;;;;; +1235D;CUNEIFORM SIGN ZA;Lo;0;L;;;;;N;;;;; +1235E;CUNEIFORM SIGN ZA TENU;Lo;0;L;;;;;N;;;;; +1235F;CUNEIFORM SIGN ZA SQUARED TIMES KUR;Lo;0;L;;;;;N;;;;; +12360;CUNEIFORM SIGN ZAG;Lo;0;L;;;;;N;;;;; +12361;CUNEIFORM SIGN ZAMX;Lo;0;L;;;;;N;;;;; +12362;CUNEIFORM SIGN ZE2;Lo;0;L;;;;;N;;;;; +12363;CUNEIFORM SIGN ZI;Lo;0;L;;;;;N;;;;; +12364;CUNEIFORM SIGN ZI OVER ZI;Lo;0;L;;;;;N;;;;; +12365;CUNEIFORM SIGN ZI3;Lo;0;L;;;;;N;;;;; +12366;CUNEIFORM SIGN ZIB;Lo;0;L;;;;;N;;;;; +12367;CUNEIFORM SIGN ZIB KABA TENU;Lo;0;L;;;;;N;;;;; +12368;CUNEIFORM SIGN ZIG;Lo;0;L;;;;;N;;;;; +12369;CUNEIFORM SIGN ZIZ2;Lo;0;L;;;;;N;;;;; +1236A;CUNEIFORM SIGN ZU;Lo;0;L;;;;;N;;;;; +1236B;CUNEIFORM SIGN ZU5;Lo;0;L;;;;;N;;;;; +1236C;CUNEIFORM SIGN ZU5 TIMES A;Lo;0;L;;;;;N;;;;; +1236D;CUNEIFORM SIGN ZUBUR;Lo;0;L;;;;;N;;;;; +1236E;CUNEIFORM SIGN ZUM;Lo;0;L;;;;;N;;;;; +12400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;; +12401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;; +12402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;; +12403;CUNEIFORM NUMERIC SIGN FIVE ASH;Nl;0;L;;;;5;N;;;;; +12404;CUNEIFORM NUMERIC SIGN SIX ASH;Nl;0;L;;;;6;N;;;;; +12405;CUNEIFORM NUMERIC SIGN SEVEN ASH;Nl;0;L;;;;7;N;;;;; +12406;CUNEIFORM NUMERIC SIGN EIGHT ASH;Nl;0;L;;;;8;N;;;;; +12407;CUNEIFORM NUMERIC SIGN NINE ASH;Nl;0;L;;;;9;N;;;;; +12408;CUNEIFORM NUMERIC SIGN THREE DISH;Nl;0;L;;;;3;N;;;;; +12409;CUNEIFORM NUMERIC SIGN FOUR DISH;Nl;0;L;;;;4;N;;;;; +1240A;CUNEIFORM NUMERIC SIGN FIVE DISH;Nl;0;L;;;;5;N;;;;; +1240B;CUNEIFORM NUMERIC SIGN SIX DISH;Nl;0;L;;;;6;N;;;;; +1240C;CUNEIFORM NUMERIC SIGN SEVEN DISH;Nl;0;L;;;;7;N;;;;; +1240D;CUNEIFORM NUMERIC SIGN EIGHT DISH;Nl;0;L;;;;8;N;;;;; +1240E;CUNEIFORM NUMERIC SIGN NINE DISH;Nl;0;L;;;;9;N;;;;; +1240F;CUNEIFORM NUMERIC SIGN FOUR U;Nl;0;L;;;;4;N;;;;; +12410;CUNEIFORM NUMERIC SIGN FIVE U;Nl;0;L;;;;5;N;;;;; +12411;CUNEIFORM NUMERIC SIGN SIX U;Nl;0;L;;;;6;N;;;;; +12412;CUNEIFORM NUMERIC SIGN SEVEN U;Nl;0;L;;;;7;N;;;;; +12413;CUNEIFORM NUMERIC SIGN EIGHT U;Nl;0;L;;;;8;N;;;;; +12414;CUNEIFORM NUMERIC SIGN NINE U;Nl;0;L;;;;9;N;;;;; +12415;CUNEIFORM NUMERIC SIGN ONE GESH2;Nl;0;L;;;;1;N;;;;; +12416;CUNEIFORM NUMERIC SIGN TWO GESH2;Nl;0;L;;;;2;N;;;;; +12417;CUNEIFORM NUMERIC SIGN THREE GESH2;Nl;0;L;;;;3;N;;;;; +12418;CUNEIFORM NUMERIC SIGN FOUR GESH2;Nl;0;L;;;;4;N;;;;; +12419;CUNEIFORM NUMERIC SIGN FIVE GESH2;Nl;0;L;;;;5;N;;;;; +1241A;CUNEIFORM NUMERIC SIGN SIX GESH2;Nl;0;L;;;;6;N;;;;; +1241B;CUNEIFORM NUMERIC SIGN SEVEN GESH2;Nl;0;L;;;;7;N;;;;; +1241C;CUNEIFORM NUMERIC SIGN EIGHT GESH2;Nl;0;L;;;;8;N;;;;; +1241D;CUNEIFORM NUMERIC SIGN NINE GESH2;Nl;0;L;;;;9;N;;;;; +1241E;CUNEIFORM NUMERIC SIGN ONE GESHU;Nl;0;L;;;;1;N;;;;; +1241F;CUNEIFORM NUMERIC SIGN TWO GESHU;Nl;0;L;;;;2;N;;;;; +12420;CUNEIFORM NUMERIC SIGN THREE GESHU;Nl;0;L;;;;3;N;;;;; +12421;CUNEIFORM NUMERIC SIGN FOUR GESHU;Nl;0;L;;;;4;N;;;;; +12422;CUNEIFORM NUMERIC SIGN FIVE GESHU;Nl;0;L;;;;5;N;;;;; +12423;CUNEIFORM NUMERIC SIGN TWO SHAR2;Nl;0;L;;;;2;N;;;;; +12424;CUNEIFORM NUMERIC SIGN THREE SHAR2;Nl;0;L;;;;3;N;;;;; +12425;CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM;Nl;0;L;;;;3;N;;;;; +12426;CUNEIFORM NUMERIC SIGN FOUR SHAR2;Nl;0;L;;;;4;N;;;;; +12427;CUNEIFORM NUMERIC SIGN FIVE SHAR2;Nl;0;L;;;;5;N;;;;; +12428;CUNEIFORM NUMERIC SIGN SIX SHAR2;Nl;0;L;;;;6;N;;;;; +12429;CUNEIFORM NUMERIC SIGN SEVEN SHAR2;Nl;0;L;;;;7;N;;;;; +1242A;CUNEIFORM NUMERIC SIGN EIGHT SHAR2;Nl;0;L;;;;8;N;;;;; +1242B;CUNEIFORM NUMERIC SIGN NINE SHAR2;Nl;0;L;;;;9;N;;;;; +1242C;CUNEIFORM NUMERIC SIGN ONE SHARU;Nl;0;L;;;;1;N;;;;; +1242D;CUNEIFORM NUMERIC SIGN TWO SHARU;Nl;0;L;;;;2;N;;;;; +1242E;CUNEIFORM NUMERIC SIGN THREE SHARU;Nl;0;L;;;;3;N;;;;; +1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;; +12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;; +12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;; +12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;; +12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;; +12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;; +12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;; +12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;; +12437;CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM;Nl;0;L;;;;3;N;;;;; +12438;CUNEIFORM NUMERIC SIGN FOUR BURU;Nl;0;L;;;;4;N;;;;; +12439;CUNEIFORM NUMERIC SIGN FIVE BURU;Nl;0;L;;;;5;N;;;;; +1243A;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16;Nl;0;L;;;;3;N;;;;; +1243B;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21;Nl;0;L;;;;3;N;;;;; +1243C;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU;Nl;0;L;;;;4;N;;;;; +1243D;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4;Nl;0;L;;;;4;N;;;;; +1243E;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A;Nl;0;L;;;;4;N;;;;; +1243F;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B;Nl;0;L;;;;4;N;;;;; +12440;CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9;Nl;0;L;;;;6;N;;;;; +12441;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3;Nl;0;L;;;;7;N;;;;; +12442;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A;Nl;0;L;;;;7;N;;;;; +12443;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B;Nl;0;L;;;;7;N;;;;; +12444;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU;Nl;0;L;;;;8;N;;;;; +12445;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3;Nl;0;L;;;;8;N;;;;; +12446;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU;Nl;0;L;;;;9;N;;;;; +12447;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3;Nl;0;L;;;;9;N;;;;; +12448;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4;Nl;0;L;;;;9;N;;;;; +12449;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A;Nl;0;L;;;;9;N;;;;; +1244A;CUNEIFORM NUMERIC SIGN TWO ASH TENU;Nl;0;L;;;;2;N;;;;; +1244B;CUNEIFORM NUMERIC SIGN THREE ASH TENU;Nl;0;L;;;;3;N;;;;; +1244C;CUNEIFORM NUMERIC SIGN FOUR ASH TENU;Nl;0;L;;;;4;N;;;;; +1244D;CUNEIFORM NUMERIC SIGN FIVE ASH TENU;Nl;0;L;;;;5;N;;;;; +1244E;CUNEIFORM NUMERIC SIGN SIX ASH TENU;Nl;0;L;;;;6;N;;;;; +1244F;CUNEIFORM NUMERIC SIGN ONE BAN2;Nl;0;L;;;;1;N;;;;; +12450;CUNEIFORM NUMERIC SIGN TWO BAN2;Nl;0;L;;;;2;N;;;;; +12451;CUNEIFORM NUMERIC SIGN THREE BAN2;Nl;0;L;;;;3;N;;;;; +12452;CUNEIFORM NUMERIC SIGN FOUR BAN2;Nl;0;L;;;;4;N;;;;; +12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;; +12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;; +12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;; +12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;; +12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;; +12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;; +12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;; +1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;; +1245B;CUNEIFORM NUMERIC SIGN TWO THIRDS DISH;Nl;0;L;;;;2/3;N;;;;; +1245C;CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH;Nl;0;L;;;;5/6;N;;;;; +1245D;CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A;Nl;0;L;;;;1/3;N;;;;; +1245E;CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A;Nl;0;L;;;;2/3;N;;;;; +1245F;CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH;Nl;0;L;;;;1/8;N;;;;; +12460;CUNEIFORM NUMERIC SIGN ONE QUARTER ASH;Nl;0;L;;;;1/4;N;;;;; +12461;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH;Nl;0;L;;;;1/6;N;;;;; +12462;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER;Nl;0;L;;;;1/4;N;;;;; +12470;CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;Po;0;L;;;;;N;;;;; +12471;CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;Po;0;L;;;;;N;;;;; +12472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;; +12473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;N;;;;; +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;;;;; +1D129;MUSICAL SYMBOL MULTIPLE MEASURE REST;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;;;;; +1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; +1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; +1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;; +1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; +1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; +1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;; +1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; +1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; +1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;; +1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;; +1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; +1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; +1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; +1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; +1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;; +1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;; +1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; +1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; +1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; +1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;; +1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;; +1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;; +1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; +1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; +1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; +1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; +1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; +1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; +1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; +1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; +1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; +1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; +1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; +1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; +1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; +1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; +1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; +1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; +1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; +1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; +1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; +1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; +1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; +1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; +1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;; +1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;; +1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;; +1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;; +1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;; +1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;; +1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;; +1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;; +1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;; +1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;; +1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;; +1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;; +1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;; +1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;; +1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;; +1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;; +1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;; +1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; +1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; +1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; +1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; +1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; +1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;; +1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;; +1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;; +1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;; +1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;ren *;;; +1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;tian ren *;;; +1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;di ren *;;; +1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;ren tian *;;; +1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;ren di *;;; +1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;ren ren *;;; +1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;; +1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;; +1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;; +1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;; +1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;; +1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;; +1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;; +1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; +1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;; +1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;; +1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;; +1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;; +1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; +1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;; +1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;; +1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;; +1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;; +1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; +1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; +1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;; +1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;; +1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;; +1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;; +1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;; +1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;; +1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;; +1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;; +1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;; +1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;; +1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;; +1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;; +1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;; +1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;; +1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;; +1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;; +1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;; +1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;; +1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;; +1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;; +1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;; +1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;; +1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;; +1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;; +1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;; +1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;; +1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;; +1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;; +1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;; +1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;; +1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;; +1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;; +1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;; +1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;; +1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;; +1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;; +1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;; +1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;; +1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;; +1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;; +1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;; +1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;; +1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;; +1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;; +1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;; +1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;; +1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;; +1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;; +1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;; +1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;; +1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;; +1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;; +1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;; +1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;; +1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;; +1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;; +1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;; +1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;; +1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;; +1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;; +1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;; +1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;; +1D360;COUNTING ROD UNIT DIGIT ONE;No;0;L;;;;1;N;;;;; +1D361;COUNTING ROD UNIT DIGIT TWO;No;0;L;;;;2;N;;;;; +1D362;COUNTING ROD UNIT DIGIT THREE;No;0;L;;;;3;N;;;;; +1D363;COUNTING ROD UNIT DIGIT FOUR;No;0;L;;;;4;N;;;;; +1D364;COUNTING ROD UNIT DIGIT FIVE;No;0;L;;;;5;N;;;;; +1D365;COUNTING ROD UNIT DIGIT SIX;No;0;L;;;;6;N;;;;; +1D366;COUNTING ROD UNIT DIGIT SEVEN;No;0;L;;;;7;N;;;;; +1D367;COUNTING ROD UNIT DIGIT EIGHT;No;0;L;;;;8;N;;;;; +1D368;COUNTING ROD UNIT DIGIT NINE;No;0;L;;;;9;N;;;;; +1D369;COUNTING ROD TENS DIGIT ONE;No;0;L;;;;10;N;;;;; +1D36A;COUNTING ROD TENS DIGIT TWO;No;0;L;;;;20;N;;;;; +1D36B;COUNTING ROD TENS DIGIT THREE;No;0;L;;;;30;N;;;;; +1D36C;COUNTING ROD TENS DIGIT FOUR;No;0;L;;;;40;N;;;;; +1D36D;COUNTING ROD TENS DIGIT FIVE;No;0;L;;;;50;N;;;;; +1D36E;COUNTING ROD TENS DIGIT SIX;No;0;L;;;;60;N;;;;; +1D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;; +1D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;; +1D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;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;;;;; +1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;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;;;;; +1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L;<font> 0131;;;;N;;;;; +1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L;<font> 0237;;;;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;;;;Y;;;;; +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;;;;Y;;;;; +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;;;;Y;;;;; +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;;;;Y;;;;; +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;;;;Y;;;;; +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;;;;; +1D7CA;MATHEMATICAL BOLD CAPITAL DIGAMMA;Lu;0;L;<font> 03DC;;;;N;;;;; +1D7CB;MATHEMATICAL BOLD SMALL DIGAMMA;Ll;0;L;<font> 03DD;;;;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;;;;; +1F000;MAHJONG TILE EAST WIND;So;0;ON;;;;;N;;;;; +1F001;MAHJONG TILE SOUTH WIND;So;0;ON;;;;;N;;;;; +1F002;MAHJONG TILE WEST WIND;So;0;ON;;;;;N;;;;; +1F003;MAHJONG TILE NORTH WIND;So;0;ON;;;;;N;;;;; +1F004;MAHJONG TILE RED DRAGON;So;0;ON;;;;;N;;;;; +1F005;MAHJONG TILE GREEN DRAGON;So;0;ON;;;;;N;;;;; +1F006;MAHJONG TILE WHITE DRAGON;So;0;ON;;;;;N;;;;; +1F007;MAHJONG TILE ONE OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F008;MAHJONG TILE TWO OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F009;MAHJONG TILE THREE OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F00A;MAHJONG TILE FOUR OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F00B;MAHJONG TILE FIVE OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F00C;MAHJONG TILE SIX OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F00D;MAHJONG TILE SEVEN OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F00E;MAHJONG TILE EIGHT OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F00F;MAHJONG TILE NINE OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F010;MAHJONG TILE ONE OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F011;MAHJONG TILE TWO OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F012;MAHJONG TILE THREE OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F013;MAHJONG TILE FOUR OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F014;MAHJONG TILE FIVE OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F015;MAHJONG TILE SIX OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F016;MAHJONG TILE SEVEN OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F017;MAHJONG TILE EIGHT OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F018;MAHJONG TILE NINE OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F019;MAHJONG TILE ONE OF CIRCLES;So;0;ON;;;;;N;;;;; +1F01A;MAHJONG TILE TWO OF CIRCLES;So;0;ON;;;;;N;;;;; +1F01B;MAHJONG TILE THREE OF CIRCLES;So;0;ON;;;;;N;;;;; +1F01C;MAHJONG TILE FOUR OF CIRCLES;So;0;ON;;;;;N;;;;; +1F01D;MAHJONG TILE FIVE OF CIRCLES;So;0;ON;;;;;N;;;;; +1F01E;MAHJONG TILE SIX OF CIRCLES;So;0;ON;;;;;N;;;;; +1F01F;MAHJONG TILE SEVEN OF CIRCLES;So;0;ON;;;;;N;;;;; +1F020;MAHJONG TILE EIGHT OF CIRCLES;So;0;ON;;;;;N;;;;; +1F021;MAHJONG TILE NINE OF CIRCLES;So;0;ON;;;;;N;;;;; +1F022;MAHJONG TILE PLUM;So;0;ON;;;;;N;;;;; +1F023;MAHJONG TILE ORCHID;So;0;ON;;;;;N;;;;; +1F024;MAHJONG TILE BAMBOO;So;0;ON;;;;;N;;;;; +1F025;MAHJONG TILE CHRYSANTHEMUM;So;0;ON;;;;;N;;;;; +1F026;MAHJONG TILE SPRING;So;0;ON;;;;;N;;;;; +1F027;MAHJONG TILE SUMMER;So;0;ON;;;;;N;;;;; +1F028;MAHJONG TILE AUTUMN;So;0;ON;;;;;N;;;;; +1F029;MAHJONG TILE WINTER;So;0;ON;;;;;N;;;;; +1F02A;MAHJONG TILE JOKER;So;0;ON;;;;;N;;;;; +1F02B;MAHJONG TILE BACK;So;0;ON;;;;;N;;;;; +1F030;DOMINO TILE HORIZONTAL BACK;So;0;ON;;;;;N;;;;; +1F031;DOMINO TILE HORIZONTAL-00-00;So;0;ON;;;;;N;;;;; +1F032;DOMINO TILE HORIZONTAL-00-01;So;0;ON;;;;;N;;;;; +1F033;DOMINO TILE HORIZONTAL-00-02;So;0;ON;;;;;N;;;;; +1F034;DOMINO TILE HORIZONTAL-00-03;So;0;ON;;;;;N;;;;; +1F035;DOMINO TILE HORIZONTAL-00-04;So;0;ON;;;;;N;;;;; +1F036;DOMINO TILE HORIZONTAL-00-05;So;0;ON;;;;;N;;;;; +1F037;DOMINO TILE HORIZONTAL-00-06;So;0;ON;;;;;N;;;;; +1F038;DOMINO TILE HORIZONTAL-01-00;So;0;ON;;;;;N;;;;; +1F039;DOMINO TILE HORIZONTAL-01-01;So;0;ON;;;;;N;;;;; +1F03A;DOMINO TILE HORIZONTAL-01-02;So;0;ON;;;;;N;;;;; +1F03B;DOMINO TILE HORIZONTAL-01-03;So;0;ON;;;;;N;;;;; +1F03C;DOMINO TILE HORIZONTAL-01-04;So;0;ON;;;;;N;;;;; +1F03D;DOMINO TILE HORIZONTAL-01-05;So;0;ON;;;;;N;;;;; +1F03E;DOMINO TILE HORIZONTAL-01-06;So;0;ON;;;;;N;;;;; +1F03F;DOMINO TILE HORIZONTAL-02-00;So;0;ON;;;;;N;;;;; +1F040;DOMINO TILE HORIZONTAL-02-01;So;0;ON;;;;;N;;;;; +1F041;DOMINO TILE HORIZONTAL-02-02;So;0;ON;;;;;N;;;;; +1F042;DOMINO TILE HORIZONTAL-02-03;So;0;ON;;;;;N;;;;; +1F043;DOMINO TILE HORIZONTAL-02-04;So;0;ON;;;;;N;;;;; +1F044;DOMINO TILE HORIZONTAL-02-05;So;0;ON;;;;;N;;;;; +1F045;DOMINO TILE HORIZONTAL-02-06;So;0;ON;;;;;N;;;;; +1F046;DOMINO TILE HORIZONTAL-03-00;So;0;ON;;;;;N;;;;; +1F047;DOMINO TILE HORIZONTAL-03-01;So;0;ON;;;;;N;;;;; +1F048;DOMINO TILE HORIZONTAL-03-02;So;0;ON;;;;;N;;;;; +1F049;DOMINO TILE HORIZONTAL-03-03;So;0;ON;;;;;N;;;;; +1F04A;DOMINO TILE HORIZONTAL-03-04;So;0;ON;;;;;N;;;;; +1F04B;DOMINO TILE HORIZONTAL-03-05;So;0;ON;;;;;N;;;;; +1F04C;DOMINO TILE HORIZONTAL-03-06;So;0;ON;;;;;N;;;;; +1F04D;DOMINO TILE HORIZONTAL-04-00;So;0;ON;;;;;N;;;;; +1F04E;DOMINO TILE HORIZONTAL-04-01;So;0;ON;;;;;N;;;;; +1F04F;DOMINO TILE HORIZONTAL-04-02;So;0;ON;;;;;N;;;;; +1F050;DOMINO TILE HORIZONTAL-04-03;So;0;ON;;;;;N;;;;; +1F051;DOMINO TILE HORIZONTAL-04-04;So;0;ON;;;;;N;;;;; +1F052;DOMINO TILE HORIZONTAL-04-05;So;0;ON;;;;;N;;;;; +1F053;DOMINO TILE HORIZONTAL-04-06;So;0;ON;;;;;N;;;;; +1F054;DOMINO TILE HORIZONTAL-05-00;So;0;ON;;;;;N;;;;; +1F055;DOMINO TILE HORIZONTAL-05-01;So;0;ON;;;;;N;;;;; +1F056;DOMINO TILE HORIZONTAL-05-02;So;0;ON;;;;;N;;;;; +1F057;DOMINO TILE HORIZONTAL-05-03;So;0;ON;;;;;N;;;;; +1F058;DOMINO TILE HORIZONTAL-05-04;So;0;ON;;;;;N;;;;; +1F059;DOMINO TILE HORIZONTAL-05-05;So;0;ON;;;;;N;;;;; +1F05A;DOMINO TILE HORIZONTAL-05-06;So;0;ON;;;;;N;;;;; +1F05B;DOMINO TILE HORIZONTAL-06-00;So;0;ON;;;;;N;;;;; +1F05C;DOMINO TILE HORIZONTAL-06-01;So;0;ON;;;;;N;;;;; +1F05D;DOMINO TILE HORIZONTAL-06-02;So;0;ON;;;;;N;;;;; +1F05E;DOMINO TILE HORIZONTAL-06-03;So;0;ON;;;;;N;;;;; +1F05F;DOMINO TILE HORIZONTAL-06-04;So;0;ON;;;;;N;;;;; +1F060;DOMINO TILE HORIZONTAL-06-05;So;0;ON;;;;;N;;;;; +1F061;DOMINO TILE HORIZONTAL-06-06;So;0;ON;;;;;N;;;;; +1F062;DOMINO TILE VERTICAL BACK;So;0;ON;;;;;N;;;;; +1F063;DOMINO TILE VERTICAL-00-00;So;0;ON;;;;;N;;;;; +1F064;DOMINO TILE VERTICAL-00-01;So;0;ON;;;;;N;;;;; +1F065;DOMINO TILE VERTICAL-00-02;So;0;ON;;;;;N;;;;; +1F066;DOMINO TILE VERTICAL-00-03;So;0;ON;;;;;N;;;;; +1F067;DOMINO TILE VERTICAL-00-04;So;0;ON;;;;;N;;;;; +1F068;DOMINO TILE VERTICAL-00-05;So;0;ON;;;;;N;;;;; +1F069;DOMINO TILE VERTICAL-00-06;So;0;ON;;;;;N;;;;; +1F06A;DOMINO TILE VERTICAL-01-00;So;0;ON;;;;;N;;;;; +1F06B;DOMINO TILE VERTICAL-01-01;So;0;ON;;;;;N;;;;; +1F06C;DOMINO TILE VERTICAL-01-02;So;0;ON;;;;;N;;;;; +1F06D;DOMINO TILE VERTICAL-01-03;So;0;ON;;;;;N;;;;; +1F06E;DOMINO TILE VERTICAL-01-04;So;0;ON;;;;;N;;;;; +1F06F;DOMINO TILE VERTICAL-01-05;So;0;ON;;;;;N;;;;; +1F070;DOMINO TILE VERTICAL-01-06;So;0;ON;;;;;N;;;;; +1F071;DOMINO TILE VERTICAL-02-00;So;0;ON;;;;;N;;;;; +1F072;DOMINO TILE VERTICAL-02-01;So;0;ON;;;;;N;;;;; +1F073;DOMINO TILE VERTICAL-02-02;So;0;ON;;;;;N;;;;; +1F074;DOMINO TILE VERTICAL-02-03;So;0;ON;;;;;N;;;;; +1F075;DOMINO TILE VERTICAL-02-04;So;0;ON;;;;;N;;;;; +1F076;DOMINO TILE VERTICAL-02-05;So;0;ON;;;;;N;;;;; +1F077;DOMINO TILE VERTICAL-02-06;So;0;ON;;;;;N;;;;; +1F078;DOMINO TILE VERTICAL-03-00;So;0;ON;;;;;N;;;;; +1F079;DOMINO TILE VERTICAL-03-01;So;0;ON;;;;;N;;;;; +1F07A;DOMINO TILE VERTICAL-03-02;So;0;ON;;;;;N;;;;; +1F07B;DOMINO TILE VERTICAL-03-03;So;0;ON;;;;;N;;;;; +1F07C;DOMINO TILE VERTICAL-03-04;So;0;ON;;;;;N;;;;; +1F07D;DOMINO TILE VERTICAL-03-05;So;0;ON;;;;;N;;;;; +1F07E;DOMINO TILE VERTICAL-03-06;So;0;ON;;;;;N;;;;; +1F07F;DOMINO TILE VERTICAL-04-00;So;0;ON;;;;;N;;;;; +1F080;DOMINO TILE VERTICAL-04-01;So;0;ON;;;;;N;;;;; +1F081;DOMINO TILE VERTICAL-04-02;So;0;ON;;;;;N;;;;; +1F082;DOMINO TILE VERTICAL-04-03;So;0;ON;;;;;N;;;;; +1F083;DOMINO TILE VERTICAL-04-04;So;0;ON;;;;;N;;;;; +1F084;DOMINO TILE VERTICAL-04-05;So;0;ON;;;;;N;;;;; +1F085;DOMINO TILE VERTICAL-04-06;So;0;ON;;;;;N;;;;; +1F086;DOMINO TILE VERTICAL-05-00;So;0;ON;;;;;N;;;;; +1F087;DOMINO TILE VERTICAL-05-01;So;0;ON;;;;;N;;;;; +1F088;DOMINO TILE VERTICAL-05-02;So;0;ON;;;;;N;;;;; +1F089;DOMINO TILE VERTICAL-05-03;So;0;ON;;;;;N;;;;; +1F08A;DOMINO TILE VERTICAL-05-04;So;0;ON;;;;;N;;;;; +1F08B;DOMINO TILE VERTICAL-05-05;So;0;ON;;;;;N;;;;; +1F08C;DOMINO TILE VERTICAL-05-06;So;0;ON;;;;;N;;;;; +1F08D;DOMINO TILE VERTICAL-06-00;So;0;ON;;;;;N;;;;; +1F08E;DOMINO TILE VERTICAL-06-01;So;0;ON;;;;;N;;;;; +1F08F;DOMINO TILE VERTICAL-06-02;So;0;ON;;;;;N;;;;; +1F090;DOMINO TILE VERTICAL-06-03;So;0;ON;;;;;N;;;;; +1F091;DOMINO TILE VERTICAL-06-04;So;0;ON;;;;;N;;;;; +1F092;DOMINO TILE VERTICAL-06-05;So;0;ON;;;;;N;;;;; +1F093;DOMINO TILE VERTICAL-06-06;So;0;ON;;;;;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;36FC;;;;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;5F53;;;;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;;;9;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;243AB;;;;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;7AEE;;;;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;45D7;;;;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;;;;; +E0100;VARIATION SELECTOR-17;Mn;0;NSM;;;;;N;;;;; +E0101;VARIATION SELECTOR-18;Mn;0;NSM;;;;;N;;;;; +E0102;VARIATION SELECTOR-19;Mn;0;NSM;;;;;N;;;;; +E0103;VARIATION SELECTOR-20;Mn;0;NSM;;;;;N;;;;; +E0104;VARIATION SELECTOR-21;Mn;0;NSM;;;;;N;;;;; +E0105;VARIATION SELECTOR-22;Mn;0;NSM;;;;;N;;;;; +E0106;VARIATION SELECTOR-23;Mn;0;NSM;;;;;N;;;;; +E0107;VARIATION SELECTOR-24;Mn;0;NSM;;;;;N;;;;; +E0108;VARIATION SELECTOR-25;Mn;0;NSM;;;;;N;;;;; +E0109;VARIATION SELECTOR-26;Mn;0;NSM;;;;;N;;;;; +E010A;VARIATION SELECTOR-27;Mn;0;NSM;;;;;N;;;;; +E010B;VARIATION SELECTOR-28;Mn;0;NSM;;;;;N;;;;; +E010C;VARIATION SELECTOR-29;Mn;0;NSM;;;;;N;;;;; +E010D;VARIATION SELECTOR-30;Mn;0;NSM;;;;;N;;;;; +E010E;VARIATION SELECTOR-31;Mn;0;NSM;;;;;N;;;;; +E010F;VARIATION SELECTOR-32;Mn;0;NSM;;;;;N;;;;; +E0110;VARIATION SELECTOR-33;Mn;0;NSM;;;;;N;;;;; +E0111;VARIATION SELECTOR-34;Mn;0;NSM;;;;;N;;;;; +E0112;VARIATION SELECTOR-35;Mn;0;NSM;;;;;N;;;;; +E0113;VARIATION SELECTOR-36;Mn;0;NSM;;;;;N;;;;; +E0114;VARIATION SELECTOR-37;Mn;0;NSM;;;;;N;;;;; +E0115;VARIATION SELECTOR-38;Mn;0;NSM;;;;;N;;;;; +E0116;VARIATION SELECTOR-39;Mn;0;NSM;;;;;N;;;;; +E0117;VARIATION SELECTOR-40;Mn;0;NSM;;;;;N;;;;; +E0118;VARIATION SELECTOR-41;Mn;0;NSM;;;;;N;;;;; +E0119;VARIATION SELECTOR-42;Mn;0;NSM;;;;;N;;;;; +E011A;VARIATION SELECTOR-43;Mn;0;NSM;;;;;N;;;;; +E011B;VARIATION SELECTOR-44;Mn;0;NSM;;;;;N;;;;; +E011C;VARIATION SELECTOR-45;Mn;0;NSM;;;;;N;;;;; +E011D;VARIATION SELECTOR-46;Mn;0;NSM;;;;;N;;;;; +E011E;VARIATION SELECTOR-47;Mn;0;NSM;;;;;N;;;;; +E011F;VARIATION SELECTOR-48;Mn;0;NSM;;;;;N;;;;; +E0120;VARIATION SELECTOR-49;Mn;0;NSM;;;;;N;;;;; +E0121;VARIATION SELECTOR-50;Mn;0;NSM;;;;;N;;;;; +E0122;VARIATION SELECTOR-51;Mn;0;NSM;;;;;N;;;;; +E0123;VARIATION SELECTOR-52;Mn;0;NSM;;;;;N;;;;; +E0124;VARIATION SELECTOR-53;Mn;0;NSM;;;;;N;;;;; +E0125;VARIATION SELECTOR-54;Mn;0;NSM;;;;;N;;;;; +E0126;VARIATION SELECTOR-55;Mn;0;NSM;;;;;N;;;;; +E0127;VARIATION SELECTOR-56;Mn;0;NSM;;;;;N;;;;; +E0128;VARIATION SELECTOR-57;Mn;0;NSM;;;;;N;;;;; +E0129;VARIATION SELECTOR-58;Mn;0;NSM;;;;;N;;;;; +E012A;VARIATION SELECTOR-59;Mn;0;NSM;;;;;N;;;;; +E012B;VARIATION SELECTOR-60;Mn;0;NSM;;;;;N;;;;; +E012C;VARIATION SELECTOR-61;Mn;0;NSM;;;;;N;;;;; +E012D;VARIATION SELECTOR-62;Mn;0;NSM;;;;;N;;;;; +E012E;VARIATION SELECTOR-63;Mn;0;NSM;;;;;N;;;;; +E012F;VARIATION SELECTOR-64;Mn;0;NSM;;;;;N;;;;; +E0130;VARIATION SELECTOR-65;Mn;0;NSM;;;;;N;;;;; +E0131;VARIATION SELECTOR-66;Mn;0;NSM;;;;;N;;;;; +E0132;VARIATION SELECTOR-67;Mn;0;NSM;;;;;N;;;;; +E0133;VARIATION SELECTOR-68;Mn;0;NSM;;;;;N;;;;; +E0134;VARIATION SELECTOR-69;Mn;0;NSM;;;;;N;;;;; +E0135;VARIATION SELECTOR-70;Mn;0;NSM;;;;;N;;;;; +E0136;VARIATION SELECTOR-71;Mn;0;NSM;;;;;N;;;;; +E0137;VARIATION SELECTOR-72;Mn;0;NSM;;;;;N;;;;; +E0138;VARIATION SELECTOR-73;Mn;0;NSM;;;;;N;;;;; +E0139;VARIATION SELECTOR-74;Mn;0;NSM;;;;;N;;;;; +E013A;VARIATION SELECTOR-75;Mn;0;NSM;;;;;N;;;;; +E013B;VARIATION SELECTOR-76;Mn;0;NSM;;;;;N;;;;; +E013C;VARIATION SELECTOR-77;Mn;0;NSM;;;;;N;;;;; +E013D;VARIATION SELECTOR-78;Mn;0;NSM;;;;;N;;;;; +E013E;VARIATION SELECTOR-79;Mn;0;NSM;;;;;N;;;;; +E013F;VARIATION SELECTOR-80;Mn;0;NSM;;;;;N;;;;; +E0140;VARIATION SELECTOR-81;Mn;0;NSM;;;;;N;;;;; +E0141;VARIATION SELECTOR-82;Mn;0;NSM;;;;;N;;;;; +E0142;VARIATION SELECTOR-83;Mn;0;NSM;;;;;N;;;;; +E0143;VARIATION SELECTOR-84;Mn;0;NSM;;;;;N;;;;; +E0144;VARIATION SELECTOR-85;Mn;0;NSM;;;;;N;;;;; +E0145;VARIATION SELECTOR-86;Mn;0;NSM;;;;;N;;;;; +E0146;VARIATION SELECTOR-87;Mn;0;NSM;;;;;N;;;;; +E0147;VARIATION SELECTOR-88;Mn;0;NSM;;;;;N;;;;; +E0148;VARIATION SELECTOR-89;Mn;0;NSM;;;;;N;;;;; +E0149;VARIATION SELECTOR-90;Mn;0;NSM;;;;;N;;;;; +E014A;VARIATION SELECTOR-91;Mn;0;NSM;;;;;N;;;;; +E014B;VARIATION SELECTOR-92;Mn;0;NSM;;;;;N;;;;; +E014C;VARIATION SELECTOR-93;Mn;0;NSM;;;;;N;;;;; +E014D;VARIATION SELECTOR-94;Mn;0;NSM;;;;;N;;;;; +E014E;VARIATION SELECTOR-95;Mn;0;NSM;;;;;N;;;;; +E014F;VARIATION SELECTOR-96;Mn;0;NSM;;;;;N;;;;; +E0150;VARIATION SELECTOR-97;Mn;0;NSM;;;;;N;;;;; +E0151;VARIATION SELECTOR-98;Mn;0;NSM;;;;;N;;;;; +E0152;VARIATION SELECTOR-99;Mn;0;NSM;;;;;N;;;;; +E0153;VARIATION SELECTOR-100;Mn;0;NSM;;;;;N;;;;; +E0154;VARIATION SELECTOR-101;Mn;0;NSM;;;;;N;;;;; +E0155;VARIATION SELECTOR-102;Mn;0;NSM;;;;;N;;;;; +E0156;VARIATION SELECTOR-103;Mn;0;NSM;;;;;N;;;;; +E0157;VARIATION SELECTOR-104;Mn;0;NSM;;;;;N;;;;; +E0158;VARIATION SELECTOR-105;Mn;0;NSM;;;;;N;;;;; +E0159;VARIATION SELECTOR-106;Mn;0;NSM;;;;;N;;;;; +E015A;VARIATION SELECTOR-107;Mn;0;NSM;;;;;N;;;;; +E015B;VARIATION SELECTOR-108;Mn;0;NSM;;;;;N;;;;; +E015C;VARIATION SELECTOR-109;Mn;0;NSM;;;;;N;;;;; +E015D;VARIATION SELECTOR-110;Mn;0;NSM;;;;;N;;;;; +E015E;VARIATION SELECTOR-111;Mn;0;NSM;;;;;N;;;;; +E015F;VARIATION SELECTOR-112;Mn;0;NSM;;;;;N;;;;; +E0160;VARIATION SELECTOR-113;Mn;0;NSM;;;;;N;;;;; +E0161;VARIATION SELECTOR-114;Mn;0;NSM;;;;;N;;;;; +E0162;VARIATION SELECTOR-115;Mn;0;NSM;;;;;N;;;;; +E0163;VARIATION SELECTOR-116;Mn;0;NSM;;;;;N;;;;; +E0164;VARIATION SELECTOR-117;Mn;0;NSM;;;;;N;;;;; +E0165;VARIATION SELECTOR-118;Mn;0;NSM;;;;;N;;;;; +E0166;VARIATION SELECTOR-119;Mn;0;NSM;;;;;N;;;;; +E0167;VARIATION SELECTOR-120;Mn;0;NSM;;;;;N;;;;; +E0168;VARIATION SELECTOR-121;Mn;0;NSM;;;;;N;;;;; +E0169;VARIATION SELECTOR-122;Mn;0;NSM;;;;;N;;;;; +E016A;VARIATION SELECTOR-123;Mn;0;NSM;;;;;N;;;;; +E016B;VARIATION SELECTOR-124;Mn;0;NSM;;;;;N;;;;; +E016C;VARIATION SELECTOR-125;Mn;0;NSM;;;;;N;;;;; +E016D;VARIATION SELECTOR-126;Mn;0;NSM;;;;;N;;;;; +E016E;VARIATION SELECTOR-127;Mn;0;NSM;;;;;N;;;;; +E016F;VARIATION SELECTOR-128;Mn;0;NSM;;;;;N;;;;; +E0170;VARIATION SELECTOR-129;Mn;0;NSM;;;;;N;;;;; +E0171;VARIATION SELECTOR-130;Mn;0;NSM;;;;;N;;;;; +E0172;VARIATION SELECTOR-131;Mn;0;NSM;;;;;N;;;;; +E0173;VARIATION SELECTOR-132;Mn;0;NSM;;;;;N;;;;; +E0174;VARIATION SELECTOR-133;Mn;0;NSM;;;;;N;;;;; +E0175;VARIATION SELECTOR-134;Mn;0;NSM;;;;;N;;;;; +E0176;VARIATION SELECTOR-135;Mn;0;NSM;;;;;N;;;;; +E0177;VARIATION SELECTOR-136;Mn;0;NSM;;;;;N;;;;; +E0178;VARIATION SELECTOR-137;Mn;0;NSM;;;;;N;;;;; +E0179;VARIATION SELECTOR-138;Mn;0;NSM;;;;;N;;;;; +E017A;VARIATION SELECTOR-139;Mn;0;NSM;;;;;N;;;;; +E017B;VARIATION SELECTOR-140;Mn;0;NSM;;;;;N;;;;; +E017C;VARIATION SELECTOR-141;Mn;0;NSM;;;;;N;;;;; +E017D;VARIATION SELECTOR-142;Mn;0;NSM;;;;;N;;;;; +E017E;VARIATION SELECTOR-143;Mn;0;NSM;;;;;N;;;;; +E017F;VARIATION SELECTOR-144;Mn;0;NSM;;;;;N;;;;; +E0180;VARIATION SELECTOR-145;Mn;0;NSM;;;;;N;;;;; +E0181;VARIATION SELECTOR-146;Mn;0;NSM;;;;;N;;;;; +E0182;VARIATION SELECTOR-147;Mn;0;NSM;;;;;N;;;;; +E0183;VARIATION SELECTOR-148;Mn;0;NSM;;;;;N;;;;; +E0184;VARIATION SELECTOR-149;Mn;0;NSM;;;;;N;;;;; +E0185;VARIATION SELECTOR-150;Mn;0;NSM;;;;;N;;;;; +E0186;VARIATION SELECTOR-151;Mn;0;NSM;;;;;N;;;;; +E0187;VARIATION SELECTOR-152;Mn;0;NSM;;;;;N;;;;; +E0188;VARIATION SELECTOR-153;Mn;0;NSM;;;;;N;;;;; +E0189;VARIATION SELECTOR-154;Mn;0;NSM;;;;;N;;;;; +E018A;VARIATION SELECTOR-155;Mn;0;NSM;;;;;N;;;;; +E018B;VARIATION SELECTOR-156;Mn;0;NSM;;;;;N;;;;; +E018C;VARIATION SELECTOR-157;Mn;0;NSM;;;;;N;;;;; +E018D;VARIATION SELECTOR-158;Mn;0;NSM;;;;;N;;;;; +E018E;VARIATION SELECTOR-159;Mn;0;NSM;;;;;N;;;;; +E018F;VARIATION SELECTOR-160;Mn;0;NSM;;;;;N;;;;; +E0190;VARIATION SELECTOR-161;Mn;0;NSM;;;;;N;;;;; +E0191;VARIATION SELECTOR-162;Mn;0;NSM;;;;;N;;;;; +E0192;VARIATION SELECTOR-163;Mn;0;NSM;;;;;N;;;;; +E0193;VARIATION SELECTOR-164;Mn;0;NSM;;;;;N;;;;; +E0194;VARIATION SELECTOR-165;Mn;0;NSM;;;;;N;;;;; +E0195;VARIATION SELECTOR-166;Mn;0;NSM;;;;;N;;;;; +E0196;VARIATION SELECTOR-167;Mn;0;NSM;;;;;N;;;;; +E0197;VARIATION SELECTOR-168;Mn;0;NSM;;;;;N;;;;; +E0198;VARIATION SELECTOR-169;Mn;0;NSM;;;;;N;;;;; +E0199;VARIATION SELECTOR-170;Mn;0;NSM;;;;;N;;;;; +E019A;VARIATION SELECTOR-171;Mn;0;NSM;;;;;N;;;;; +E019B;VARIATION SELECTOR-172;Mn;0;NSM;;;;;N;;;;; +E019C;VARIATION SELECTOR-173;Mn;0;NSM;;;;;N;;;;; +E019D;VARIATION SELECTOR-174;Mn;0;NSM;;;;;N;;;;; +E019E;VARIATION SELECTOR-175;Mn;0;NSM;;;;;N;;;;; +E019F;VARIATION SELECTOR-176;Mn;0;NSM;;;;;N;;;;; +E01A0;VARIATION SELECTOR-177;Mn;0;NSM;;;;;N;;;;; +E01A1;VARIATION SELECTOR-178;Mn;0;NSM;;;;;N;;;;; +E01A2;VARIATION SELECTOR-179;Mn;0;NSM;;;;;N;;;;; +E01A3;VARIATION SELECTOR-180;Mn;0;NSM;;;;;N;;;;; +E01A4;VARIATION SELECTOR-181;Mn;0;NSM;;;;;N;;;;; +E01A5;VARIATION SELECTOR-182;Mn;0;NSM;;;;;N;;;;; +E01A6;VARIATION SELECTOR-183;Mn;0;NSM;;;;;N;;;;; +E01A7;VARIATION SELECTOR-184;Mn;0;NSM;;;;;N;;;;; +E01A8;VARIATION SELECTOR-185;Mn;0;NSM;;;;;N;;;;; +E01A9;VARIATION SELECTOR-186;Mn;0;NSM;;;;;N;;;;; +E01AA;VARIATION SELECTOR-187;Mn;0;NSM;;;;;N;;;;; +E01AB;VARIATION SELECTOR-188;Mn;0;NSM;;;;;N;;;;; +E01AC;VARIATION SELECTOR-189;Mn;0;NSM;;;;;N;;;;; +E01AD;VARIATION SELECTOR-190;Mn;0;NSM;;;;;N;;;;; +E01AE;VARIATION SELECTOR-191;Mn;0;NSM;;;;;N;;;;; +E01AF;VARIATION SELECTOR-192;Mn;0;NSM;;;;;N;;;;; +E01B0;VARIATION SELECTOR-193;Mn;0;NSM;;;;;N;;;;; +E01B1;VARIATION SELECTOR-194;Mn;0;NSM;;;;;N;;;;; +E01B2;VARIATION SELECTOR-195;Mn;0;NSM;;;;;N;;;;; +E01B3;VARIATION SELECTOR-196;Mn;0;NSM;;;;;N;;;;; +E01B4;VARIATION SELECTOR-197;Mn;0;NSM;;;;;N;;;;; +E01B5;VARIATION SELECTOR-198;Mn;0;NSM;;;;;N;;;;; +E01B6;VARIATION SELECTOR-199;Mn;0;NSM;;;;;N;;;;; +E01B7;VARIATION SELECTOR-200;Mn;0;NSM;;;;;N;;;;; +E01B8;VARIATION SELECTOR-201;Mn;0;NSM;;;;;N;;;;; +E01B9;VARIATION SELECTOR-202;Mn;0;NSM;;;;;N;;;;; +E01BA;VARIATION SELECTOR-203;Mn;0;NSM;;;;;N;;;;; +E01BB;VARIATION SELECTOR-204;Mn;0;NSM;;;;;N;;;;; +E01BC;VARIATION SELECTOR-205;Mn;0;NSM;;;;;N;;;;; +E01BD;VARIATION SELECTOR-206;Mn;0;NSM;;;;;N;;;;; +E01BE;VARIATION SELECTOR-207;Mn;0;NSM;;;;;N;;;;; +E01BF;VARIATION SELECTOR-208;Mn;0;NSM;;;;;N;;;;; +E01C0;VARIATION SELECTOR-209;Mn;0;NSM;;;;;N;;;;; +E01C1;VARIATION SELECTOR-210;Mn;0;NSM;;;;;N;;;;; +E01C2;VARIATION SELECTOR-211;Mn;0;NSM;;;;;N;;;;; +E01C3;VARIATION SELECTOR-212;Mn;0;NSM;;;;;N;;;;; +E01C4;VARIATION SELECTOR-213;Mn;0;NSM;;;;;N;;;;; +E01C5;VARIATION SELECTOR-214;Mn;0;NSM;;;;;N;;;;; +E01C6;VARIATION SELECTOR-215;Mn;0;NSM;;;;;N;;;;; +E01C7;VARIATION SELECTOR-216;Mn;0;NSM;;;;;N;;;;; +E01C8;VARIATION SELECTOR-217;Mn;0;NSM;;;;;N;;;;; +E01C9;VARIATION SELECTOR-218;Mn;0;NSM;;;;;N;;;;; +E01CA;VARIATION SELECTOR-219;Mn;0;NSM;;;;;N;;;;; +E01CB;VARIATION SELECTOR-220;Mn;0;NSM;;;;;N;;;;; +E01CC;VARIATION SELECTOR-221;Mn;0;NSM;;;;;N;;;;; +E01CD;VARIATION SELECTOR-222;Mn;0;NSM;;;;;N;;;;; +E01CE;VARIATION SELECTOR-223;Mn;0;NSM;;;;;N;;;;; +E01CF;VARIATION SELECTOR-224;Mn;0;NSM;;;;;N;;;;; +E01D0;VARIATION SELECTOR-225;Mn;0;NSM;;;;;N;;;;; +E01D1;VARIATION SELECTOR-226;Mn;0;NSM;;;;;N;;;;; +E01D2;VARIATION SELECTOR-227;Mn;0;NSM;;;;;N;;;;; +E01D3;VARIATION SELECTOR-228;Mn;0;NSM;;;;;N;;;;; +E01D4;VARIATION SELECTOR-229;Mn;0;NSM;;;;;N;;;;; +E01D5;VARIATION SELECTOR-230;Mn;0;NSM;;;;;N;;;;; +E01D6;VARIATION SELECTOR-231;Mn;0;NSM;;;;;N;;;;; +E01D7;VARIATION SELECTOR-232;Mn;0;NSM;;;;;N;;;;; +E01D8;VARIATION SELECTOR-233;Mn;0;NSM;;;;;N;;;;; +E01D9;VARIATION SELECTOR-234;Mn;0;NSM;;;;;N;;;;; +E01DA;VARIATION SELECTOR-235;Mn;0;NSM;;;;;N;;;;; +E01DB;VARIATION SELECTOR-236;Mn;0;NSM;;;;;N;;;;; +E01DC;VARIATION SELECTOR-237;Mn;0;NSM;;;;;N;;;;; +E01DD;VARIATION SELECTOR-238;Mn;0;NSM;;;;;N;;;;; +E01DE;VARIATION SELECTOR-239;Mn;0;NSM;;;;;N;;;;; +E01DF;VARIATION SELECTOR-240;Mn;0;NSM;;;;;N;;;;; +E01E0;VARIATION SELECTOR-241;Mn;0;NSM;;;;;N;;;;; +E01E1;VARIATION SELECTOR-242;Mn;0;NSM;;;;;N;;;;; +E01E2;VARIATION SELECTOR-243;Mn;0;NSM;;;;;N;;;;; +E01E3;VARIATION SELECTOR-244;Mn;0;NSM;;;;;N;;;;; +E01E4;VARIATION SELECTOR-245;Mn;0;NSM;;;;;N;;;;; +E01E5;VARIATION SELECTOR-246;Mn;0;NSM;;;;;N;;;;; +E01E6;VARIATION SELECTOR-247;Mn;0;NSM;;;;;N;;;;; +E01E7;VARIATION SELECTOR-248;Mn;0;NSM;;;;;N;;;;; +E01E8;VARIATION SELECTOR-249;Mn;0;NSM;;;;;N;;;;; +E01E9;VARIATION SELECTOR-250;Mn;0;NSM;;;;;N;;;;; +E01EA;VARIATION SELECTOR-251;Mn;0;NSM;;;;;N;;;;; +E01EB;VARIATION SELECTOR-252;Mn;0;NSM;;;;;N;;;;; +E01EC;VARIATION SELECTOR-253;Mn;0;NSM;;;;;N;;;;; +E01ED;VARIATION SELECTOR-254;Mn;0;NSM;;;;;N;;;;; +E01EE;VARIATION SELECTOR-255;Mn;0;NSM;;;;;N;;;;; +E01EF;VARIATION SELECTOR-256;Mn;0;NSM;;;;;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/i18n/unidata.bin b/i18n/unidata.bin new file mode 100644 index 0000000000000000000000000000000000000000..93b262a6e0322940962aa0e2e6fb471fd8a73242 GIT binary patch literal 1207562 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%0APfek8<n3ire3 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�AwVE=Y4@tAK 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ΜLRZ{gRXjE)lop_@c%tMl1kh;%g=jzW=uMoPzB1LC?suOo~&IRYu z7^RyYBl_siDVaL^kUDWke;&WZuz5jB0;<mQe!V#D5qtC(kxNwDrI&yw{^;>?t{%V8 zua}gI>zvupU!or`Ly0qbS;|?9{t5b04x3ky%m0N*dU@<B&_802PV50md6d|rza~x6 z$;))|vOj?jlYayM#3TJp>XM`B#3MZcp8QO&O#LeL6LsEU)vLnuO(VTJ<-{nRyiDiJ z2T=7|$hF{WSKF$So9VnGq1QvtcM^fBbN(X_oB`3v&Gbfcf=-Om6aPYzo~ZQEn^3nY z<-F6c6QlHZuxp{D>F>fPQJxHak2)<)z;i}TZ^d<JjogMhZIIuG60h`j^uHbTKS0+W zq<~b~??Al|K}X7XPeT8Q@pooiX=0jAjMBUO6WDdZrYn?ntKPlFe!V;Xd9J7TK+d4Q z>}~2jxo*9Xd(&ob?EBDHzLTi)PK4ec450o%Y{}X5!PsRk+O20oKSBQq`XTuJ6nUtL zYOBF+eHi>_e<4Z#Y|&bMIQGOfeWXaxM?pu+1N1SpH5QBm<LS!;q3RQ<H;M5~f=-4` zrq5I0r&4b!KBi&Eb3T0rGO<nP{Z^fIt3Df^eNBCi(n_DpSa?rN=Q|`id7i!yzvOy4 zd7e&Ar!S`c#atV5JAEnsc}GlNhW&EpljnUp=Rx!pl&_?WSf{VXj(rB5c&C3wTVIR1 z`dZpphkm^Yk(3AaICb6+(>E#>eG_eeOIZ%Sa%g)qJbMlLchut@SA8os+t6*Nz3sI1 zJ^T)7I8b$RyFWp_oz&->B>InF7xjLk>}UGV`>y&gU^n&mP@jBGCnoCqO~CWJXgYfm z`oXE^b>gCa1lyzZ?-+A&9GsxeNo-G<pkJr(bDDZ*z**+v9P~W&0`wwt&K`t*89Uyo z(63VG*M@cVU!}`BdkXqp<a^M2(EIto-+k~v%F!P}f0yd&kBCdeL;VTz6UOof*Y_#? za9EObC+(1<>29m0yQTBG7JXj#052dm>cmD}r#wJA0pZt!)aMzV9;Pgej|gKllx_h@ zP7BC#N<c_zK!G=55eWfnY}<eh-j1G}ETE!`l9B@azEGf`NC`Y6Ee-JOE>K9Z1PWV{ z0(@&J5Cfje&JB=@1&D`vcwQ_F6az1S;viN^3%rP332b;*A`pjNyvPiYg9TWJ21=nT zE#(AwUm`%>6(}S80oI~{vVh-n4ZI?%2FlZZ1?p9#U!1!QyoSCK{d%3cZ=ff(1&D0{ zVq1XyhCpS?`CeP#E##_Yt_7;0tB%ZX{sd}LzZSN&v8j!|4yX%Xk9OXso%+;iKs)R? z1R9}lOgo9xZGxU$E6~gYd^74br~DntS|GnmJ4wtRaV+p2lo%FhC9e&%mNNov0B17- z#I68&R-hgJO^|N|+Jh8ysnj8c1&Cn*VpyOf<(=@&Iy2B2ISn}-kY5G5V&82-$3Qpa z?v#Iw++$#3pa(Pq%5S6vdiID8^kV*d!;^aj`qJNil=qh$f&Rz?kOxXT0)yZO<A<0P z$TERGEB<nTGZ}#)lzj?@q8~>8hA|%ER$#cS1%@lF0(@IP@HrR>IBOf=Ia^?iNDA;< z)B$2vU_A3Z0ejx-3QVN_Brq9%3U#LrUmci6TQlg-Oxv!&Ea(@M5uXBcsWT5>^W+_Y z`G6P|SZIQKl2{es8<2s;lrIrU0pe3&8CXu)m$b|K_kk7knQuS_R?)B3l&yi1hXr{5 zKCl))e77~Q4qNs=1K;3_{m;Ng>TLqw(q0boX8J=c3XqEhc%~NEHd6|0r|wSL+(|z< zpB5nI1a{HxPx$y5o^uuf-meevetm#%#0B;t@8_O6fbJl3b_o4p+U6bAz)|Y+E&af8 ze4a2tyC;_B1Ww}rH2%+kv*^xIcAk3YnfnXy7nkk`T!dc6$7TFpfxk-mRqTHS*U(*; zR|oh$T!3d_fn5536PsJiiHX}%V&D$+E_SRN1NZs6e*k?*Kl!boz$1J-w%!Rmf&T;k zDZB$X#g2dr>ZYCsJlv~Z#^<A7et3Q4r~t7i5MiEK2L{Q-f|AlFD2r)9Vogx7Bn6f1 z+@J;CYSn_gZyK~kpAXuB3RnXM3n-bvf+92c40WHywvZAXEQ~#Q7`PUU9<e{jIxzU0 zycX;T^4u#}lzOcHf}8~lz5t3V-Gby_!55{{!4j0kiKJjWeJCj<1xukXjqWAr%Th|P z4EnOzl>@Jclwf%g7pwp(iiJV)t03=}1}jO~!Pf!bnhw6%VRtY=L<g(Thqp{%_m=Pn ztKzd7a&`PxSJHyyPr;fd<g`5S+pfXdv2BBOkn5tahg^?3<WIr+(E88@^o4a_upyN9 z=!1<wV?gc{Y=WNH6C{5MHWf)ha;RYQj{Ae04GX@zY*a9bGGb1U_vV8wM<oP#&L3<G z+BI7p{6MI|6zZjd4zd>f5ZjK-T}LSExnL*ine?OSX+hR@!8Bynbis6N$eDuVOu;Vb zOxhJ2Vo#7fDcGHHehlp)Wd<{#JlhKP0=+5cw>yG;pnZ}1LOGj}2lhgP0|3wWgM+|e z<|GrFEas7XDL8~ae~SH3#yk}N!{prHXN-w;UvPw!5d55WMk0^GmNj2+4E4rhKaOiR z4m#ch_s@9dh`1A+$hDk^pGnvgcY;%}pGtk!fWhhTGo*|l`B88db!HFi7W{%bbL(^q z&gK4^zbrSn0J;b)RxH6K(53iT#yzo|F?@+_HhxX4z{g7DRa}o%(ACh@^mz?sU(p`F z-w|9(o8&{m_0rbhdgO25H~c41X9L(sTbn2+NBTbp_04)YCK?|OvbGF<XT1~L(rHp~ zEB63#EciX+C#MSTV6JvxzZ3ibex%)9=vi9^e?tD5vHXI(8@t_%VGq|}FFdg=$eG*V z0r-P}_wR#;u{{ER6#X$M`=~);Tks@)PU7zrb4LypJcI7+Uq}j`r7y&}AaO1a7oZox zC3KgeCU}P`NSq7)3a;VnI`jtD;Wun@O>n>FN{%40E_llX?U?j7^fvTPK9oK|&YT7B zLhnJz$AS;&FEKFq5Z&+DcY=@T=VN?5LH7rE3LL=6{pzBxZg>rN0OvY_K6HL5A*h1@ z;|`(^Nppi?d`IMrV1#;xG%6&`e-M(Dv=GnzL&U+5H9I$Cl~Y1C5goEaRVe2;LIt1& zq0dO?L(htoP$5tlK3ePu#fXFu@7jlo#I_9;#fJ9<LdE2*p%?I19Dl{p@%$^q`ZH7l zT0+zf#bF;$SxIDau25;pUJ}znFQI=~P79H5h04+<YtYau=wE@BM_(R2=R88JIYY0C z%+RY+PUtoGN=hb33%w5i27P-2%5(qFo9M{HLY3`6s3D$tg~-7|RRQnchxlf0s0RJ5 zNn5q>Ra=S+)uB#ZP!GJVYz@_y(n1YrlNcCk)NE;}G5+4m!`u+>2ZUO}x02=pHPl)p zg;*bk+Rz^p@8h>EHti%w=mYfaO)y5zz=l$!x}j8gK&Zo)%|jo~sTAr2Pn-*-%Nbxt zs0)4Tirfv_4PV{q^T+t=0nI?)6TT;N(+gW-T!?+k5HT)9eESpF^<}O(?;7e)djrr9 z#AcwhH8co+gDKC%M;4S=7a9WpDRiim5E=&m8T@eiJwlol`W%d;K4(2be9tX3n!b-= zKE|Ts9i|YmE<~*R8**-FJZ(+DW+MC~Fq!Kz1$ioc;kRi+)46|UP-mtI+A=9;UPH5> ztPMl6=>zM-&>ZG#F8X<3K4l9`P`&^k3u%KhXd%{!p(WhIOR!(c*p@+;(-tu?lntNF zby-2*SHiD?=UG^24cGcB<gdB@<X|CUVTiLJdEnb2p>O2G5Z^)yZKSPD*b~1(Iq*49 z_BlhF;aMMswm`RHzYRTcEVLcjq~Fuu@1ex9&<^^zleT`4H-vtK-$lP!7lz2uLd3HW z@hr3(I}>}rUi|Jux8DS|`;iYo4~n=Dd!3=f^z#UIM*+{wLdPlNd`Rdd*X9)RY1%pi ze-_Gj+(LZ+D8#vt5NFdumlR9rGJe^s%)?c5zan3gQbN~y?+RUKUT@Pc;#26Z5)Cp# z_oz!;3O#^6Kz_*I%I}Qhk-R$e82yucQ1=P<3^6M7R2m-Q99qbUFBjBJdm42;{7rc& z_aXa%jvU}`jA!?u5Z8<t6^fW(jGXNV8A@7Ml9Ix#5yL{Hgp~$~VPaL-YC^Gut@7$H z-{TG2k=5+nunLWWMqyU~@Saon896P?`PgtFu`pa18clf&cn(|Eis2&gMQDfk6@H%b zVp2|+_!TaWuDCrq97}l#c;Z$#e#HJTaVyL@j&N!Cm*8KPmWIoKve<DZElj)$m(K?} zo|T0wh=ee|=@@>sODOyrZB%Kjh2O$Qb;eeM@|tpPxRyu?^F7^g9pt)FLbx72-iCi$ za)j$Et-=kEd8QR^NM9OJw=v^MlpBP3mKAOa-;DC+_-+n;#{|4dTa=v}W=$C8y~}VC zb(7H%yTZh=F!Ae8(C?OjTrJF*jBp#u->0lC_QbGoJ9Hnww+AVf-QiT^4wRF>{SEOa z-;uJ8*mQ#O%q!ekt`H`V3$tDfcWHP$+!b`AtUGl-W}F|>w;u33-wJ0)(czxh@{B9o zo4Ulda3A!<w=l6S+z(q5{UuA7m=+$0%|JOZJcxT>aEF{Q>&Eb>=u8a7Zdi}#Fu(l~ z9u7YOd@fH5kEG2}*o`(pz0v5$fU#0acwE7v;qi=@d@Vfje+BAH1e36voDWO4Jf3G@ z;lIFm+3O5XMK|p~0Uy)AbjpZ{;TiBIh>2n1;om?v3(UsX7l8NZ!@Nfyo`-He?Jj_4 zT^e3w0-XtBV|dBGgYlWVr6#a3>9TwvoBZ<s3D}tB#MeK8Z1UMA;7zQ6CkG9)ubKyb z8!F5@T4DB9!|bhw*;@^-1?;Vc*;@^NLpgh^;f+xCRm1G7hKaRdp2LMVckL4<-iE&e z#M|&zuniDv!`}m9Y<MSjKm6}PWQNHt!#@IY%kWRMWrBC|!@odxL-#=U0^ZFJ?+3h_ zA3liw5cY>na6cZV{t@o2qsW{U4s%v7e4M{A&I^Z6qC2Hb1FgcR;m^RIAqJeK?3~gq zd>$R^=P+?Od;vcf0nhBhm+^B2T*Vi0IeaZ2!k@=qhhE3_2KwKyF_DYzrj!xBwV+k_ zHuNsKd+6?CLmnA^ASH$$((do@kL0;w-oFn&q5Kcx*Hdg9dB}ifgq`p%%3Szx^Y^MD zdrUAc6JGQ_{P=;6K9CRU1n?b1A3_&K4%23YzeDz4Ba);><m}uCXH6oa%(aLjQX-bV zYa><>7qQD}5mopj#O+7{<bv2f^G~2R<!31~QD{M{NMUFUI-d7Mo|6(IMMP$#s602q z`wo#}Blbs#-;v_^z}DnrO~A)e=S5HgIW8a6HTih@5l??h!m~b)l%kKNsl#vfM#_kU zNLgsP*tU^ZL{fy`ZHTZ35~+wS=TRcBqI(U#lF|*dits!z@&@*AQkEdpNM-mc@T}D% zRYl!MRrqSm18ek14eHj!S1sz*M&>zSq%L;#hHj1U|3IVxw1JcpX{_{#BtqG1jWh*3 z_lq<~eg}OE=)1^CAQ}EWbS<H+kcsJ$HjL+ebZw!$0}=TEw8uw^bS*+Wk945leAg+$ z@9{=Dfsc?ogEaVb&;@j*kGyjg>5e^n6OkV1GC)tjdE-cL&<DOR=m+{^KLFi8+8jjN z<eiaBz;C!jK4DBl7~3%VXyP;a!n3>xd#Vw>B^((E&-)IM(a2+v`7T{#95&;rKLH)F zH^MW#2zw5ZDU4w%_trFQrqj0>@SG`*%tD@x`~^JwsFAr)_8KDd(ea(8$U?9PnX_>b zeiJjY6q{xEU5@`Rp~SKX@5Dz|b}t%P)hQvej{fF!uN2AYml)aJDJk+J@?NglUg$o# z4@imdEI)Dp9Hd`|sDGF_I5IRh!r8RQN%&KM_Xr|qz}fiA5!RZK^V5b$hzXI4)V~P5 zgv}-VULM*Yas~N1`s>^)H}LTraxQ*zp*QIpXLlp4EhD$(;*s0XJ5chs$X)1N%I`sm z1rcIF<N@@diTa6=hv>=UB9G8N22Z3(kv}LSCV->}>&yu2%m^_d;*t|0F52eZ^oWLz zm=Gb4i+GtYAM@sC4t3-J_jM4N7!V2nJ7_ZuB8<bx&NYY$hAff{;({UM1Va%E4U3dw zunskBa*AOWnTASvlwvUoDBX;L^%D)^fbnd#T?YA_Q3$@Ulw=gfJ{sE?!1*(y2zES& zGx)tqqZnnx0;4$8L@f3%(pCxDiW6~0JY^-(^Y?D>J1s^jXz3dJjnepd3I1i;e;Hq8 z77Z{si)OsCXopcAeMRb2tXjc%6~0o#<3=Uu>;J@*!^Z2BC!nj+Z<<jBA61oBMm5@~ zPTd;lYeH+%$6AcFwvuVoL9PqxiD-lUOrySKx6uH(A$%kF#@HlMuZdLGXd)5}az2B< zf1^1z@1SoX#ThNozpJDfNyy2vW+aQc2G8LPayz3H^;?5Bl=1CKgZ)c`+|J<rOoLcp zw8u{hcBzz;+x-dbI$-l5edq}76x-JL2%F9zjWMNT$6D3sBIOvYR}J<6^1ydAjE_MN zbQ$O}7$@g1j9&2MbVi?XHH|)UX`>%~<=f*1&;Jdc!x_W~V=%VlaYoiZK^gl1#wWBt zM2<5)MIPF0wJ{9JvwvfRNHIPKoWn3iF%EJ&W6b{v7@KK7mNq!IVT^+x4;{~(a(2Vu z+Z+aYo-rBUlgnH)$nA`&^p!nMgWS!S4rVOMHD=1IjoI)#yEEo6r*oLUxst=+JqBYw zdfuNhh&je0e6y!%ECEZgU51WztFavUOOOr7p^TMW!<E!sg}j>jYtVf~yI;u}#@AA& zu@>L!DC1nN!QO$f0c^x(6E>T${}#I(=9e|A@g4rzKQOjZzRd(W6RcMa@+gCI9mWo> z<4!2KltFAWe&qi75qTH-pDann&)ENhemA<^!f)(>XT56dMJDzc`;iZrKxg70JTcHX zMA>0{9D$NA8OKcE`xx?Z^e6Cr68lr=S-%>m@qGrK-=Z?kTGEVj(DP8<M>mL%#w8QX z?Ik(axD2jHTaBxL=W)h0%2>x5*SS}2Apb`D#7pBQ?eHAV;2E58r$M4|7kZDn#72X- z_<tiOkMi9PgLSU)`@lrw5p6%F{E4#Fc*3>#gL+TtuY-O%>9ebRoZ$u<*Mj%Z4c_}S zd|Z3KywxBk8Uf@WedBzH5e5-_8OVmxT9V|Qk}MWUBKxMKDCv>~ofY1u^p)&_zX13s zB}*!RToC$<oGLvFUkH6+>P1UYQcONXvJ^x8=cIV4NZEN(QTXRUG3;NUthk&m#ZvFZ z*m+V3Xgp;l#dN8Zv`s1veF?lwn`LOHEOp9Z{|arC$A5)<Ae($e>Q=<&Rp@JyQ>uji zb^7)Ob>GBy0{Y76s?hFR_^AqC4PABW)-Zvt269bMOT<XE<!w?O^mWmjs0ZE#_0cuJ z#zaH>H)6gT(_SL_CMK|HLRnL2Gy2~g-8=sd`t%OvE$HvN*d_^GN(S$VRH-Gj75#0E z?>5wXKenCpJ~nOP+i^YGQT73Rd-(S7DIk?O>Hz&v=`M8yohbi^@tNohpC%<sX|$Iv zuammKcSY9?`)*v9?)do_|2>d1%3POvQr3%p^+N6q`hdRJ^rL=%^aGfiftGY>5O#wZ z$6(saM3;s93FG~Q`5hwSrB9KEQg<l6hf(h{`Z64O1nqwg9f>@O`lI2;K*!2ArE%05 z&m5ST06&pAFfoZXCgXDowo~yn4NRw<8Tg*b7-q#^k!Dl&1$E}o&pD#9G?!~KkGk{e z`vS0#vPHDBNYs-S!!N<!#8R+~{x8SZm(<IqY=s;nt$?n?*GlxOpsS&4<TcV)=)X2W zJ(I5epTIcQ(${rhJ#Bx3?FJM0GqDkVQ$CP4fp3v>@SQ_jo0+Tc=-U?VfvwFv(l*BN z3uD@iZV%Xt?LHH<vk!Sc`~hqaFkc55!y)9uaubj)9ib0Lp~ui2$NzE0dV*_kk~U5u zpGJSi1pPGW*?iFES;l@2`8@XL@o@qF7m+V<-(AA*W%w)k;2tyitN$ISa~1qbo7b?s z4sOuqZ}`atH__jcj!3uZ-yQh7w0Dm&--kX}bVYjDY>o5?-%sG5Ft(?(=Mak|C-;C0 zz1svjH+41Ycw~>{#m+aoyX2=VNZUc?C<F~7M?^A+k_<UrmPC{+0|BonePxSCmaQU7 zCicm8^eQw;RF(@YStl1%y35Zht>r?pM<(vc(a15BKL?6{qTqQztdm~=#X&51QB0Rh zU>_$%$?+mpj#skelITlG%jD7`S$;`+Nq$*MmdnsySt&~{C$EuTK~Kz+E6`pA>?;m! zD8DL=mfw)J$!~I(CuHB0D}yTZ^(}N&<(_gi<myVgTmxDY)B?5TRGFA2*M&Dx4-nJj z`n2Bw+EB5|jcB7W{Y#{*3A8D+8MHa{9VuRJLH&2}^DZ<gAIK)3oDcjZ)A#p8yxbC9 zD-k2NLf0C;4Sh24K00EW+|C5P+cC}$@ZTOeh4xaAQ=uKO{g65Dh@QA6cVf;uQTHR- z>`Yl2x^%{!PTejux5-^&+sPj@mL8O4P`@Yh)eD>6l2h)Dz7Ob2d;LIvFaVo@v^9u1 zAB>y{vcM-`2!22PVx3GJlZjpO2<GN<+8v3%QU8S1BaZ^3DI0@+ENzZuyyNKSc;pGx zC7#I>O>n<V#P1}0O-4Tj-BkK8l|D?P-gKh$47s8_6aB0?P2^eloWnfMW!&@V`+UnD zd4b$SUPxWynY<VsaZDzT$;%ovk(X2NOYR91+04NT=t{~~fz`~x8p^+dH$e=O*WzOx zy7ly7Ju)#$-oSmZf%b?`GVw{?B;S-baesdc&9O(xo8@itclg>;K3?7`jgW~;@^<Qe z&)9ar?*u<cC*&Wc&GIghEdPX$pYd;k_$BXV{Cn`fm$vsY@5C+n0J;N|9mM7kIE+7H zmV6X?3>?Si1U4tIIf?&M$fvn-r<wON*qw!*gPvzzFVMG(^z9OTyNvA>>JyLTU*U;6 z@-_Tl=i1yrCho|&+%q@fZ((yA`8GCp=+|B5{T}o_{vJ^NkoJGa=8@<r6NBW(*god( z`3d*lANYI9cpT`R@J{Sq$Zq<p;m<=|uSk}CfH)-UP#qfRctH*@w;}AqT-OLX!vu3} zWZx8$6eVP+3>6|v2qj%8N|vxF+XQ);uqmyDoxcE;zZUZ^p#XLT(HHCyBc4Hi7M|Qp z6b8{^5j|TYp2Mby(p?mR7R^I4G+8{4O)=ybXvakH*mfe;k}O_CS0W#@R|3RgOTH#b zN+U!mP+FQNUJ}XTW%^czcFOWUZ8>bn*F<?}h4Ja4BK>(C{tYo*yosK;B`U*Lfq#p7 zRY5hzQC-A{8l7JkHOpKV#4J%qath*=AYO^LL4D8wGz5)6W4w@m3Gy$|gmE=d`iiC^ zRWuXvg19B#p`R@%d$-{ULEI8aj46q>l4<une7D4=74zC!+9uk-zYp5thnOTj0OVPM zn8g3Gn?(oa=|g;UL?$K)Vv^`YA5HoZb|2CA&XkdFiFD8feOLO^RYZwywAmf`W8{zV z-vfJMl;{cVg}%25>XUbgKD65xyMFOkM1O3^yTm}+83YD%Z8HIJN_>KzI3+%%E^#Uk z!=Rsm;gpR4pG%bmF-s7$K#UlL@6nWx0b|jP>yw^`@%ScIiHY=k5_2^fkaLNt*i18l zY+^c?0cL_(U^ZpsUVj7K7u1`BZZ5oudC2pj3&29K2rLFmz*6j%nZU-R#IXMi%FVJb zp<hC?O~7a4V+B|VR)N)E4fqOt4c0P$>-gVnJ^VM+*<gZtCfx`n&I#h&zXCn^nD~}@ zIh1YY9@-53jyd{{>#_xYtEeZoLbsXV9^BS-v)Io4v7^XMu@jpg@bM#ay$k%rwf`Br zUrcaKenH+1_8{-Yj$BUcqrH9b`_UgjK8W2x?&CwqhxuDLg6=4PFGr!r&=VI0xtutG zd=i_J)F&>A)AaE)@|l56#98i>bLh_Jp-CRSK-mSxbCG-S66Ke%Cub8^p~Ok?E53il z<{Ir^N4~-RMUEzZL(YZX1jI^loAz$Q-$8$uI``o3qkljjA0R(O{vAA`ACGD031xqn zpxr-^pTaw^b7147Z5Ly4<5Pq8Q0C1C{!QLzf@^6~V(8z%hba?Jh0b-*kpu9-d{8Hd zE`<Lux(NP>vw}D)40xzQoK+;*qex1+BJ)3(kW&>!>8@DNS%D4MkyQ`{UjP&Y&xl3J zv*-#fOjioyBL+$ysE`9HMe#vQRf=Kr0;}8NN^2z+ya-Al#{pufQWBH`rR8+xC3G)i zUj|whT{-XyD34qLu+CLj<0`L#O4z@S?hV>}leQ~ED@*m1x9ERWWMZjO4O-m<<EoCn zhLWY!q~EnDs|{ZV)J3j`{5E`jF<ohZpN7<F3~kIfh^I<Z<Yu&KqB-LwrYbD}>sKWS zIT`vMK3YOsf!65S@Gomur7dWO`~kE*HYxZ`#ovd}59x0w`t=cV=l{RJm^*Ww(nOY$ z4($TE!grId@IQ09@-Z^8TFHR#N&kCseaIyh*2esmXDR*cQA+>%O_Tv(AY&NBJPr~u z%3$m=k+c3C_%L;!$d#2(q-13X{HORbK@3-hArrrq&zP6t@FU<yFn^!Z)=2C}Arrrq zF=Q=cX=fb#c<jhAl?kjeCM;^LkZUUBm&#=NIR%@k)FXx~)Bi%UG98~YkY|d@%1mr$ zA<w3bFQ9Yi`&_R3JjOJi|LGS{e<8MuOrSUEV(b=EwuJF6#h%!$EEmZjUip%;Y{s{O z{;b5F{8L#C*3h4?DEpdrSUW50(2;*C>#4UM-8aw;w7HS?HgV5>i;noK5POx)*ltGt z4xae?H}JUyY^9xTB30SWefGW8qwJ98DLavWK>s7UUFd!SKQsToFn7E0w@2Ek?1d-p zD&(OGaaTD&yCx<6DhIhg4{?7Sme(o7U*#xeNAYzG{<ySEIZnGLkjY7vQ_LglXypuZ zaR&J;?Ve+9STifEnU#z9y96#{b0r^)=L)*3@mCb`Q{@`^>(nuEgZjTA=TeqS*-d!j zu5ydM-eP`kL+>Ep#m>Y%`1|PYPpzmtfPV!42tSYEpTLu+Du3{|{*>`MfRlc^M3myD zTpQX@(df4ydtGuW0qldwp{BY*%v21KtQhi37D<_Ik)c9vVo`uaPPbSsdo1Lk7Q3{~ zqKfI3C@IQPK$>SMAQo8)!apM_TX;@rc^1A9lzh}eth7W!O~jyk4q60SRJ?9^o-*=K zkZdU?dn_-&7ymC9VJS`>;;DuF)KWsp%0nD{yoq{4E%B6>#78L+V<|1gTVBG3wY8-T z`m)%RLoNq>#RR+w*4dT{Ca7NlyNcMqO8wWUUy1V9k>5a1ytO1CCqOHUR152GOBLu_ z(5j5Lnn<=(SNd9NfSMx?SZaaV%tsx{>r$s4e(DWuVtE_Xhi}lJiKQWEL|J3e$wJ(< zkkeY4VBZ8v{IxWNH_;3<mquIOfwlneT0NE|%9H;I+9D=f-b2@t{<p+mE3Orh+0uq< z^uEZlw8f?!<sT^NmJcXv56E*ZsZgFLT0Ufa9pO7shuqfE8JZ?-wh$vNUC?(0<g}LV z)cIIMS$a^OK|4J`FKl{KMvS!drG1_sTKbD*3wf+%AmxL&R|ccYq)rz7`9$7k8G`&N z{TZrsw+w|62mb^%!)W6(<l*qcsn1&6@;UR&b3_aA&@!5~#)x_r@>$C`bmQR1Lnkn| zJVUfhLO=Px1OCjiDcDcJFR{`xjr(po^?1f;naNzuqK(<uk>^_G{1dV5kb7F@qMJv3 zo;h0Pb3GP77eW_-#mw&#=u&Kmk(OnQ&jh)w<xA?AAeXhQu->(-kers4w6zM|>ZZD7 z4f?M|vgK?3?$+{mw+^hw_c!!q1AfV0E#$72Z}WltExvQG*^JG1%*z&ZThVO;+lQxG zzDKvS+C0k-%-=3_KVkQ?w8HWWK6dAWF|$s$?4d6CsbwFw#77Hp5p1>`pnnI^A8L5Q za@exRa)fz0$~8U4wdC2Ng>|~+B(|rZr-&1$i3ewx1J>!5bLe=MXt{v@i~P-8!tOFM zanW)G-^51CRmOG|f4?eL%QbKv|2L>dJhbFObD=k-EXz&qnOn%W0kP0>7kU>;Ec~BA zy?eBIpRqpx4{7&z#`B1J#7oO#_{a3`3GMzNk}XfMb;vs{PINBH-N<gKvPF}wTRfC| z83%c(#gDz8x;j1sjDZ}~68a0tc|7sd@-M)rDMz?xBk+c(Y$Xr1%1U3WkfN-LiR_zs zu)teQh^#znLvI^!z-q_-nT`jn#8_)#kqok|(eN?(5HWfDb4r%=Idny^F9Kf_`aCEG zPn@;#oDyVNW8q&!Pi(c8fR+&TtZ`DZm3-A&Qt56j_4XcXY3R$8m-*j9a-LmTIn`Pg z`*O{$Tgxd{EAiG^K}@$+kg}}ATI;LGuhI9{7+0kc2dq3Vuo7>r#9J$|_D>)uP*xea zinPsICAOXQE&5#*T{X(8%N}bD%4$lZ^FXd^t&Pt*$aS%=C(X0IEf!hpGcNXVtPP=! zn4iYfO{6X{*V+_HoV7NGz9TuU#98aR)FIAVlj&!&RN49-x|YbTm@gBpk=uw=>-)4v zY_$?wtslS>U#;!oQ<%dP<W%?$*mr>ES%S6WKS4iDxswSw-P(zJ;UnxiW1oi4bo$#x z*=FrZpSnqRt?b`edr&6>o1W1gYp>K3);=Ip8ettSud$AxKKm`!kzf=yqos7~m{v!u zW0~{uv@yX1zD>%y-#QVyNtR?QxubOo^{3*08uE0?XHb6zGP$C47V>Q9?D#8I*80{t z+zWFlXPs}IPahXhz7T&4rJdGA(8ct933I%(>^v*$d@Hff`lSi#m^7Q~mrXk>;8!-R zmxph#-HI=sFIu;AZNH~%hkVnz1G<wj@1*S?@cW}Z%DM~PPxv+QGx()PjCD74_eh(q zd%-@+_tTaMVwm+{J{TiwZ0jN9!}vPPTpR(cv8~6LyJPZB>v8xKa=i6~w8%<Kv!0^- z6n|r<Y3B^`S^9StdJcMyd0?$=y+E0Xi-0w@^)hpCMJ{K(iu|i|!Fmnb>)ii0u>B3) zZ^-O_SZ~q?ayu*gA6DX-^)Bt)g=Y`MdS7m0eSn{b*b=L(<abu$l=TU^Kd|NbqxC6s z;b5Mf$i%7t3T(;wtZsa0atzsUmX+9L^`ZA;uj5arzX5rhmHf}jb4hEMd5mzs8B&x@ zQd)y;Hd%7ogml-YDCst0k<CV#T`aQMp{leD#M`1kf%q%7g4s81tdnief<m$FZ0wiV z$op(DfLLTJ0xbe9s&uy%g+7n(=S7UISdSRn3zU)P*<t~)$i}lrTM22KEly6g#nX04 z_)_qt;a`Hj40!%%BgWWx{+NeX;LGE$ypm<BAbV^T!K>gkPzk&a-T-f6PmHlumeXzI zbhau|vhA$~O>9-6)zDX`oVB!#Jrx`A#a2_AXR8Tci?(aS*P(5mQ`+h=A8&*D^rHd& zYlyB9Z8xS)BDzHEh%vUN)N6)abMOvrwm{F`iY*B~StQ%u%f4$PceAw`*u+L`v9*z` zHl9t|+Ty1jHti_;K<R614^08Y6<Y@r@)}zQ^yF{0jtx)PI)RTsXOM<I9k9l=b>-T0 z!@fK1beAjIK8EjMf_gnH$+iqp+13-8XOp&G)HP}E{|=O!WqnLA9+UR{Pr$A(=m+|P z0oV-upTIZ=;%^W(gRwV}39`5kK0!Z(`TUfz50xt0$QNy&iDVmjqHQ?!hSUEMjPrA@ z?MM-2BmUXgqp^(vW5GDUGf&$Dq1z_nXA*QW@)R%?AJe!8ra`C6J8jePGlTM(fIS)8 zY}))n>S>z;Pwr=%X99Z@^SNIZ(2s@aSS#BWVYe853AV&Q+fw?o41PHv{@Jp@3ff-@ zT?JNSyN2<tq1~@&_iJ=(!8-KoP2k(4-<UxE4L&!B>9&p3*~GQ`mO43<ZKiB9w%@_C zUbbyP-oib%6`O5<b+YYy=81S}+e!O7`Fs5V9cyLVF7Olb&)^q$VySHp*o*x>bo;48 z9Q_-N=>TB=#&$@mY-7*ac7#41<!_pt&~_ZklVjUSa0>o3^bGVYeLV-y8rgOM$}>sZ zCFo`773fv)EBrO+b?6Q3e}gCgv#}ojS5U^YN!u-a-KOjg{WWoydiS9B!2|FR`FH3e z=HoGTPyPwU@C5w9b$d!X4#w()cL6uDhU|g&GEN`Vk4{GyfDeKYau_)RZ-_;9Ns6+| z|BmdNc3Dof3z2MBu(8N}?N+&>-3D)`Och!7sD7#T0z;kl!XnCE1btET&!aDf`~q@u ze3GO64a$j;_7_Ery#zE4n|P(Wy`;3vUP`3eOUpa$FDZTPFGE@X+KG>L;-kHslx%+m zyYkpnkkjoIv3V6e`Io&CeSDoV&d}K3q$~klWn}i5?d;dst19Vs@+~_t(Ov^x4SdyP zOtp|}o1hQ1k?T-a7u3V{?fOmZtat4V;2WZA1SRjXCt}Bbv%RT&(@x%HZ;s77BHrGD zHr~Zo5@ku~lfiq`Yl(d;^sV7rL)$2Q?QO7mU)pTvd857Ehy!+Fqn*6Vo<f}z#cEF# z)9u7ZJ2{vALv+MPdq-?K!G8qb8J>L`JL_9}7i_vR{;ue|LAxUpAO8enV2|0(9<x0I zT~GL)%ro)P&YIWWo4)r!*B3wi(DgSVCxcWw>tFjoFo=E+o?6kKN!gHbwd_Oa+fY&2 zJ`A6qQ8pYuBPjd)FI2XZ$Js|pmF=S>r=2)vAA>v=jHA8r*iXQA;(r2V6P0cDNwiB| zXP*M50%Dt;yzWoX=5#QFIh=`Z7Sseep8X5tIZ$GqeJ;M{(a-tPJo^Hvo_!%;AKJc{ zxg)mOmtwaJKg*%yb@pt@YR|?Gd7XXbU)XHtnV@|YHmjMZHR!)W{)+lv!>|1pY_@ZT z#?Es>`+97NdG-y+8?fC7zsZE$Gmm}?{Z=H~bFd}u*}nr@nAfdf8+O}!#Mrmf7xG9u zG0(mOKPKIo5A1i!mF+)RlI=e-$GfDRcJfL4&(!~g@v=6y?=gW7VxgUNv3(zOKYk8C zSr6L}QGOUdhnb@zqMrRIGI^x^*oY(c<J_Ak;ZI?Inz5Xr4RS~Oxh7}q=h0te-Y(&X zT+x07dX;v5rT#Vik}uj>1KV$8{AB-)>u?ua_FL@4H2VX}A5w>yW`Bh5$53LLot)7A z2Yol`(|l0ITGsBMk39dgyJ*)9)qn>ZFVqVqw&lSOubZHbi2!keywD!vo@32wj|@$< zN3w6K#5q+Kl~rP$D#Ub^b*rjC6{y98oSsLm@Oe<Wt5(4JRkbTws;X>LqeP5a0GWJI zeFi*>ZJ~T%Q%KZP3(Ki$w9;3Nk$0-kDXmrZvDKoARec`H8dhcBS|wjpW2IE}MQn+M zYMhd;#*a9lmZYqdJxVPtuTzPI>dWZMfU=-m{1x>T%F9d1Y6W~%1jIr0HQMJaVIEkE zs&C-)P1;FdtmKJm70Tbr2jwPTRivs_rOhfiqe^T9o7L*nWA8<+32Mn6mH4RE$wRVQ zhjG`XKlLbM4@RxexEi2qNO>a@_-!ODQyW`7D(h2~IH@*8-;91YqpjwE{84Rz9cxrI zN!q3oC)M}hTT1m*_O?~>N41TJSKr5fTe*qa4*CK0I7g_mE>%+{r`iD!8`X}ptEsF( z)z1G8+UU$UI8Ugi(??>Y+SLR;x{74A8-4B${TTFsCpM}*DeH+$Y*c%jpsn7_Ejgmv z7rr09h>z+3?v(-baUgvjL_342Lu^#DOkkHKuTeh%L+JCT@@RFaXs8a8=Bb}iZ#dVM zJWu_cwnie4Qu?Yq4^)YdD)CVrM_c33O@N<>Ezbhg$;<({p2{;nbt>&mqrcOcTb}o+ zGoiDfv!P!==iqCubU~em|M}EeK>daEkM*s(2zfC)xt+QcJ<s*jWzgl+VU4SPNgd*# znw<~)Wusd`d&EO^74|&qQ`s9)iGwO}Q2h%2Yp|BFu0vkW9DPH*4fx!MeiQf>o;as& z2H$}#OKPd)bt>m@)bGI#_?=Mppw%D2F3O2z>Mz`jyTwj*598SjI6J74%c;aK^#FfU z2N}~L?lacH>Je$DdXzfHnypcfGrp7DAE%H{Q+9?ipXJ^<*RY;?e(r4bI%B%QJpV?! ztYcNyvFa`8ZS3zr$-&fn_`Z+)fcujiO#Pkq9wC#1sl==Q_rTW^Wx7hdQ=ifoVxH<i z=ioXznL`({yGM-bo_Rpk7>k!OANQ7@avcP?CP8!|#u|o3kPRh0ir5xKz7{3J6W7=% z2Ju&*o1-jBR+N=88?ejiQEHEvsHm9-q6$dPC}LRDvmz>r7#3AHJ0^-}a#1l-a@2ET zQB)BTA4N_V^*nMh>XFk$6~})pet7N{RYFvbio-r$+89-m@={RthofGCzO1y4Dg$3u zN{uRqJ^RB^<>i}E<Zn?G@%ifi#onFAT{Zpx|KI0arOrH`bA?QW5W0+^R1`%QMImzt zA%qYz&twi63z?@7GEbT3c?y|lLgwLj-&f~wT<;9;@8>)G^K-jBZqL_xt=C$6?S0Pm zvew>fpZJzRSN>&<V>!oPKAMXy&u4ubvkyAfMD4qYtsq{`imlWzDz*~ad@i<1bXaWF zh7qyuxm?U#E+$XK);Ma>*c!&%OTD>UOm2$FOR=>ab8YmE^od#1#^j~gx{k9h?cZj2 ztiSONpzAr-`r~HA%;RFs>Na4@Pq7WzgJ{TLW85g15Zf3-^f^@BCeABlQ*4G|*c@A6 z%gFTDR@%8g7Td;{w-s+~8yi09nb>yDeFx<c`jV4k=58_f$znTY&X4UZb{Fg#OpEPi z%%k+NJLI9*o^;R76Jnzse=jk6V;_Bv@j36SZa?<^>c)yafF3{(405pp^>fhZez9?4 z4(4~iE#|pI>@dhfF?lFvKVa-A@#blNz#o>6i7bWTv166Z(PExM#LUrRCt|$%lR}Ik z)RXJ+JvrH!PT@PXhB2JV=e}Ibye)PHCa9CUVrSB`+BC<`a;&rUH&OYVkjRvnIb7^q zdLHDknEW*t<qOowV=;LwHmTFh7M;wVtZuS?FLI2F*_ZIiW3ef|KU4TFbsV`YcDcGM zT+1t+*HvtDxY#xHT3jdIe&^Wrd{d3xdNp>VW8BDh6Q*f@GnLn3=4&x))!1};oBnR2 zx7Tn!w>#b)xHCFFc2_Vnb~pPT_Pxe)AHAPGKxg1Vwr9Jshv_5wwznqsnDIT1C$xK# z?<sv-tH$i9i9Lg7VZ9oA9xt$8#7lTNXo^{{#$FZw8hwrLb<D&Y%GRtg&n;rJ;CV&t z9r5q-y%+S1$&0ZMjMa09*hhRH2OVSPaWVS~W1lI1uKWf2OXqFQ7W)cc8?${fu{r9$ zWq*h7m48sSpD^~5K7Xda@cqj7Tf>NW0C_BKeipa4C2md@ZyWTCTX)9W1<mpHlV-(Z zFb9j9gT<4PIdS*w;%Rl6AQsOC9nl=mMVsUK=&*Q!U1XOU+Q!Qb!{hGN#T!TTi+9jw zVSO*6yl97^@x`JY<DDF@Gpsk`OQ>5?-(A?&oAIUfu?+31e%VM<T)v7guWotTjlY}v zrg1akD;WEV`gT7qzOp_%UyZLSzI${`e6@x#@zom!$JbD2tr_nb&BfQ$zE=y)E!ta5 zZ{<GP$X{`DtN2=u>E3^QZDZ`~82$Lx(Z@Rc>(c&?H-OK*x%hf?{YZ!S`p(t<!MHpY z-yp>JLfw#WL-B)L8*9?|Ms1qoo(II;vx^UzI4eGs+W!*YEO;b7jP3q^d<$dVQruSJ zw{}ijQ}eF4XRYyVl((hBqfPPcuzh4!d<XrHa81pz;yd{q&9UO{(fu`!GtzmOf5pwe z;=4NLu6(-%6XT=k?#8@_&vnnBDLxu|>3?s>H1~>+QE&bg-#3zr@7rl+e7|5qe1Gv{ zae(V{pt^(f=RR9}oG~4&d`O7v6Y8Ng^mC~1h+G&yyyw`sJuC4e+YFB%rF=B|7~?Z1 ziys%67C+AMk7u8tU(aFV)~NCE{NwrMzWB-fCsX+@ev0;|L}PJzFK&$*KTTc8>FhJ~ z>%LrE-iuFg-6n{Y`{HNOvz&*yTYMs0?u%Qu#?9a2_OQgy=acK=7e=PU-It3`cAdQg z62F*U;ykDDnWM!$lZ{_4_6oi$m9OHzntctuR^4@c*GHzu?N^E4pkMn_;y1CUslS>3 z7T>j7^(&9XZ&P<0zuXnSBbXY$GngH}OPzg!@q75KHRJc`<9^4p){M{Kdr-TF`0Wjh zo2$hiam+{QV|W}-h;^?mE`P<J4iOvj4EtHfd3Lt}@#n@4i@y+^9)C&f%dqB*%U|)= zLfX!0QESim>&i1Dx%f=qfj3;cH?@C@&%HJbj=#+|&x^a~7JrxT-FC6K`Cj~ee^Va> zi^e}RwvW_*Z0w&HyFJtK&wNKdH_k7d<CogauAzRm>-d$ruho5{-5lj_Po5V4PRx($ ze^ma7{d0(Ze%9|V{=Te36G0G5L?Uw%=4uIZwS>7^q9HP@g*LP;|9pJy8U`mkuSm#w ziCDw5L_Fx2Nbt*fi6l+&r^KgeMr<}ZGLd8FwXwG^Q4~`O;VT6b66NTaL?zmkXp9U` zbfEV5B^J<rK`|Z0ge(;4msmL3oLFSsjKrd17E{-$hS<>V9HRe_#jynclC%r|QjW2d z<1fu#CfYM$ZJOxXyI-QKzL({fHxtW8u1Lt6iEd)M(I)5Hq~1C;v7)|KjE+yN6iiFl z8<?;rO|06`HqqT!S91=YVI<aYtRC8UMw(btY_Di@Lf%aD(T8_K5^K}Gw4ZZXhptQe z(*aa|Ojv&=))zAn&H8t*F0mmU1bYG#8;Nm`4zYx1q=_Lxb7Clali!)0*hJe+eI}a) zvlGL#+uV4zhz?6^X*^pgZ{0bT*rv_BiQ($Ei?mH_&)z}(2;<yQpF4@!S<Fa&?|me8 z6EljvyO=%1nByfzv-fhGy^YWOE-?o7pd>s`NbGMc?!_g{@e=Y};s9|6p1x?}AZ2-N zF2-^QpB$Gs;=e&(o;@UvbWY}i3HwtJOW325I3_qOajehvIOXGw=lEbw;soE76MZ+w zE1z`6sfm*#qZ9I8;#6^`8T;vx;fXWY@>}9eoMrrHYwx*3!rC-(4&=7Pd3@(bJ7Qwu z0%P~wAu%c1oG^z=T;!Tu<nz1O=Xi<nOi_O+E^`g!xWpB>QoF0fnztpccFb$|t`%#q zN#gowE-^KDA#sE9jp}c59M5bMH;Z$xEpe;ZTh)0lBypR+FYD2S=L?BDsdqvWchh_5 zz1rR<{(i^4U-<#&WnG$hu+z-MLy=htc`oq?9u@PL{vLDO$F+Sz+1fN=zLt2(_vUG~ zxmw~`{^yM0xpr+6&$C~wN53z27@BwqFXI*cy5E*~O&_mQ`|lEOu;0|?Eh^t7W*OHk z=kPXthrWyVVE&f)K>ddy+M35DK7xFgFpo=^$0a_4X9|fg#DD3Uc|RoamG7WEB#Cdd zn-k*Nglb)y_*U$9#`wLz)gPRTyqB;xP5kWqe&O?cA@N%@mkcJ&N=Bk%l5$;AuA56_ zShAsEc(RRh+hAC-ZL}#lU&mLH?Hbx9+w-~4hNfhEbiZUG$R(4JDajN&jZDL+WOk=q zQm#wNb;$y|IO)BlT$d~-7EhK7vyv5kxyP35;JEYC1+-bP!_Z_$eJ<3yUvlA~Ice^f zw3j)#SY&vzlks#`XRVr)&yq``i}F(Xv{p^ZXUS!vKO~o7ca1hDmo>iSjC*;$ZhTEx z!7=2oq`h@XxhpAmC09jv<<+!bJw!Rg{j_8c+A}&nxu$XSV)r(tKKfV-Yb*EVH`hz9 zBW4|CYu03c3{YMV>$3+!4ohwjG$l9W8-&4-!;%}1ot)fQ-KGsAlJ?9chtbWIw}5wW zlh&olt?4$7vn}6nY^S_E{|<D7@{ZVvy))lPx{KId`F7L4cR!M&=<fWx^X=idd$LDk zFXg?J_hFB5eZ6;^^!y;XKmS;L9l$=2ZElvd9!(ysd<a{vN*+cJ<2#&B9!h!!nzT<Y zd9<<|lr#@Z%0J2D^lL7bJbuK0<O%A=yQU{aMkP;<4ok{E$y0syr@8j_2`A5J7@VA- z?V0Se*k}9hO$??c&p9BHJXh?6`kO>UChPa2k&7lTW>1O6l9!6TOuc(uNzXWwSLpXj z<*ORTB;}jr)gjU57QKdEqy4qoUgucXD^FFvLClTfZ}b`8#BZNl@@93`i^*H{YmSw? ztzi^KByU%L2mhUXcZIO;a!ffWd5`w@@|kO4O!9vA1AGrC&rtuM@jYa`5A#3bxQ|fx z$69!d{dmwe`FNyX@(Dbtz5T#RbFbtx>}S}|>gPG}&$~u1uwSGvQSV<QUvZpQor7nc z$=9`+DQ+fxL%TOz|2K{Qt;o3KEdICYJL=vIW+&fOeh=^ad_EBOA)mQc@?-U%gz$%a z%J-T6KM$rQzi>SF#gemwo=NYhCC#&va!_)Pzt=hZ-ztAczjw?ZobQj$)w9i{c~<fl z<zJP5YZ#UCzHBNI8J>zpC#F2dOtqObE7dlbnwl>%Bh@ZAEG5^ZV*GZdrs9!dsYEa` zWp0&9H4ILfU!~GC6U<I!^^p_jetxPDZBDtLpE9pXm6a>%8u>iiOwHdgCba;2!G;m3 zj_MZD*TVb@8;g5msYRn>Qr?|Nb<(~w|KjSGsE2QfhT*9t#dL{GPc3CkOB>TN%3Z}R ztIuV{ET?S!nd+w8#J_^$uE2JmEVWXIW38mTvY1uGuIl*R^}8DX>R4m90V!+H)S7MI zOZ7r;G1i-@wVbPaW~sH=eM7YCE54t8<e`*%W~u&S`?rgw28dhFd9JU1V05WebL5KD z2F9@=zqwRuuvmF0wNb}cQX8o=pGpl;H^exGI=1;#YSR$*rrK>5OiNjFrsSy97Lk6b zEwR;kBUA33rMA^(cyw55JLB=ZGqr<bj?i|;kj@iQJ8HL+`knblI&XO@wQJCn+Ra!; zDeoTbnA$_^o-Ish(b2&RsnN=N>2oi-ceE+BH{B;Pu7xqiwXZSk$G5-!tSeLITd4zT zD2Miej$xgdGWV)7E_IOjamojaIoS9QS+Zm5P;qiw>hN(hQb+LH1Dx_qG<9@jPU;x3 z@>=Rx=XtEQ@>}Y7u_5mLr%voJG-Z96I!Wxw#&in*snl9Bbvm`LEj7XU*w>pntJBQX z*~UIm{5kqLmwhfhPrv3^DbGGr=hF*%_e)*CC-<d1|4dDCoXM`?MZS0L_opuLd00!P zE>(Y-I`_y@m$R?nbDu1ACA~`A)#9uvQ`f4yPMp0Rsq5MHcBH0?yMf+_n<A&C%(+tX zUg{Ry>RjZ#l>Hnj&j3=l`+K}Y`A*}L`%>~=O8!gTt$a7VXZZA#Iatd6j@11=&j-}Y zd8r50J>+})5c^@@(MKHfQT;#Wb2ax$Jz;!LvY#@Br`0{9{j<u?1rt-x(-$JMQr>$= zS!1TGF;lOIdsUyW8P{t*AGt0yQ=6H_@dn?U`Y_i@%?jb0rH{8G9aHbnclBj2T<U$} z_<(*W<|Chr_smisYxjx2qfhY}|L3m7=lb;=AoZp4Y}dmtLZqxKQ(x0>)X$;cs`CsW z^_{%+z44iArG6A+eVMYhY~dGv^R3ixlV+uZ-u=>%AeN5OsIoa%x=nOq3vHu4)APYz z+_c=6j@4)wm5#wX5$QxQEuCyTC!GqeNvDyC3`=Ll<!FxPqs=YY^O3e6E?v@>du!<m zJReARfae2gdvenYYGYlQmIu=dvlpg|(2zydd)FcD`DVJaz81$44b##~itmD@8gl8S z=`xYg>8{aXY3s-Ia*^Tb<@vh7v(5Ah#<C*yTp+!&zE|n^N_rK#Y6xFQclK(N-b=3* z&81gouMxr@(j(}Y?pc_XUQ_?xD@*r|j!Dad>9ve+E$Y49^xB<fru#Z}KlVC&=3!}h zFx|g~a%c~zhi?GZ<6A$(vD}kO4`iFKrQMfHyB{|f<<Q<RgdOUjkPbuBgN$deV{a6h zlinECqv@eRQ+g9|=5=ZFy0m#+TFy+H*QL$t(&lw(^SZQoUD~`ZZC;n&4%_Q<2X*#} zq~*@Eb!d7==f9Kdw=*57ybE?^+Z&P|MRyOTruX2p9!-x{_S`eQH{C~h4EAO3$G1Nn zEA{}s1C7(XE^S_yHm^&Y*QF1IIbGVEE^SViKGN}zq9I2ctLF;oW7)^CkB6L>K2h2G zU+I%@va+0)K9%j=ue3E~TFy&PV4tb4vwXH^Ip4D}aomjbImTmNmp)I-`Nu7u_N+7Q zK3V!AaToi}U1BU#*q5>|6LYy(IW2vqn5!Dvrmxn=HEZ-qUkh`%^bOHi`bKSTa@=WS z-%H=@vz)G-+?BrF@$b<89liRc?}VI{zPn*m`tJ05Y4f%8z54b$0_pp;eL&p|z8O^B zN<XOYP#+TikhTwteZ)E0la_u=8++2yPf+W|^i%X{vCn94zLqvuOFw4}&$D0H?veD1 z6JJToUunNxl70=Zi}%bk{RXvnH!WwSXK8DFn0}l6j`rqg>32gSv(n~iY4f!7`zO4R z{y>~LTKZ$LpU_Wz=RTvK>+6fr{nB3s6VtP``-<-?`nA82ubsm;n6u5YX*nzXz5c%! z@403AM`igc?Vf+y-i-9muKh3UU)waNe+y!npka6>h>pqFpOLXn%vc*{8kE~8w~Y+X z%oiP&k+U-G5$iBC6Bm=1G^>SV(3~+>%cO&unGDTFduDRt^89jCrWl!?u{O+<8%AMp zrqVDb;~rS1gYx|Pw_i82ptAW|#(S<Ac`CDrx<w;XGK*=~$v8SG+k=tuK2~Ol-N$E^ zJnyiKxmjiz@m(ErS;t<Ey04Y#=J?&jHmO@dc|~Jbk-ZXK+3{A<*Q)I9;?2i0s|Ou3 z?rCN0ugLV&ZcV;kw6}Wqv@+&n8S}AB-%c|#ef8Z>+&bE?8_i|poy-9C0Oz=#IC&;B z5Y6f~pc_UzW(KhbyB6;AXEqMb&kWIis5YBuYyOqll)Y(WPG&Rley1t3Ikw>6GK6nS z=jk_1GFuzdHhk{)XSU^cZ!5DMzx85f2kl4n?w8q7{Z1jyA=I5ijBRIqj5K!hvdpg7 zjo*8znNe-u%k0kH!<fv^GJCc#F0-fhqqTAWE3>!b$~PJBU}g5@-%r{7ugqBWW7XSZ zkue9$$T^vD`Z<{I5FBcp=3AM=eP(h_=13~vWV}m|G2hA@Tf_AU?c?Zi&f|FfpP+oA z^E;6}UOy-4?_|DHluvQ2Q*oMOo!;i&%o*$n!PLx|`t>_bnX{G6y)vFvX3kabo_*$g z^>R?=Lg#FanX$&qT%^B?L&RO|I$jc;keQ<HGT*z)*PW8Nf?lP3HLekNt#SB`lgxF_ z_j*j#-wlym#@s4%llp1mrqP>yPi|)0H=FS;LS{N{Gp^gI`Bmml{yUAy{3>&I&@*!n zJbTRC=R0!0`UirMh-Ex~%*@cYcMme|ZDk(jv!={EqV1#3!~Lzy<J51SWS(^Go)Y)8 z@7pu#pB4L@&;2<*`(`sQD8E=kpP~Iyh%vaom3f){N{HB3_+Is0dQJIt{k^Viotb&V z=i&EIGH)8|TaG=;-_6^6?`ZQb-V^h_`uFJvHH_s0eCU`T;bUz-(ch=yKZE&K<_mm@ z+4u@yyRP4CG&wUzU;eS@%=gak2W@^-{wdm=G3UxyV`hHk`z@HAmAA6yTiIym30d>4 zYy-PZ!|-ey{<e{!+4+J~v+m<(+w;4pm5nLKBg3<apedUi-7lNsPb;T)%4IXX`(?Ay z=B#^L*?e?*wh$SXEk=iBOWK#kRYLS_4_UU6uLI_97?oWhn#(R2nUU?-FebYY-@=f? zvWseO4_UTTv}e}4`q{<d*=E)pE89iPQbEV;(#qZ)&DukjHOI;>$F`R?+l@8_Q?o1Z z$zfUfE9>{@va2}8s_MH($7fg5&+2py<sNW9E4wD2xm31yWKOmZpZyovwUztw_oM45 zuZ#X{Ysjp7S=sf)4&-ar{{{^svKz9kA+zqsXE(ye%0rZgvNtgfIV-!F@eR{{bM_YO zEwPpI*2>$kx5aSf?Uc7?`z^Wb2xar0>`v^RoySPmZ5P*jSJ!GcpUo)t?yi?yl$C=p zEIV3xugLW5-s0Vd&yG>vmu;U#)|xOo_PD0(0pi9PyZv3+L--F3nzM)L>u`Dmwf{AH zl)9t!dyF>67{{^tKTf;jUE>ps=|smLul}SO+Q~avc_({Hq$%s3R#x80+B1<g|H+;K z_tdjzMml8A@_n%8%T822hn}m=d68LJYrd?tUe@!%>;=Yfp<`R?WhWb}d+J&DxU!dE zN^ni~Qsv8Vxp7>f?<?t5^lI_)Pxjgn_16aHXRmWE*BiSvUiJo`-;F*$IVd|Vn3$D^ zvNzLPly9vux@U`RU6=h6+K1)4^m|uiO7?F3-s70}I*0r8WA9h?0mqkzvhq;&A@;*; zYrO2Ea8E1ycnyC)j|UU7PdL{nU6ZF8+Gd~j`P##peO8<2#691_>=u1N+zaYnbe?ii z_GQ=mWxiLGU!||%b@emV**BJbL-|eiTgLa6an7P|yN>UOdDpn!a}Mv*4-T4={m`*L zcI;2oed^es@qaGXzSiuQ`j{PU&dzpz=1$qK*G*-=b`9;>&wi`V@9@3vr}s0n?rUX# zYC9+UGk)nXH2bS~^QG)>{+``i&jmqqPVUK>Gv(}=XrUq6lxs6-R?c(8+<feIY`G_A ztv8owb1uf`epfEhFvbn~3Aq$aBXf3#Tvl9OT|P2AXa1BcMn>n%pK@isa>IyRg*Gb7 zJ-H6l{q@}Zk$$-aA{}!J1`~4~`K<Tqn3<E4atj;JBK+2UIe96!Si`7XC*{u3VY$x6 zusGYjuiO&KOGbO<x&+g5OLZ8UTUy`C7+Y8I%hKiO^0XUm(#9Msw?bqVhUeV>%2^BM z<f`1tg;}{(qRlz?;B)SM<yNECf4Mc-)_%Dj=&629e)FwdZ))wATZ?VZmGc}i*Vi@f z7YxsNj+m3Pa-JjR2GI44ZGB^Q|2@~NjrCh@1NH`edgeCN-nuL|%osQ4H<!w7!58Y5 z{98um<hEjO-7qb;we#Gj<14vsm4`R9%?($-onvk<euwCooON2xoGQ1YW6E1ObE@3V z#<epYNv+v(yNKUa{B9WK^WI&%J$z1ksyBzq`Q5nO-rBntpBv-a+9Q_RkG+4pSkC>d z+yTz%fM9m+K=B6!Q*+}+_sbp3Zw{3^B$$~ylzmu;@7H0DbvWd-oaci%IW2dz&*2yx zEB-ioyfK^r`7AdcC&BM`<W9k<#^IS@?sUgIL!T2IcY-$d>gUdiHs`G0a&lPi9Gt7} zJTd2McfRrkoo41P)P9n4n5=veE;bhVD`(!6yVQAIMlaXKo`>8O>??7VYjAb%emOZT zcdeLfqtkQpSMGY{sdTD7{Dx)jMs02qZw{5a+4yeey9KxMPxo2gW_-7+yTf$|k+*Vp zjh&pk%b4y{zF%AWwsJF+AB25dIqSKccZ_n6`ph5WdmK-|{ixhi^l5!OqyCwoDfcXu zqjGXo&fYEBl=Hq(&OP{?{FF0C%Dt>?A6L#kuH382uZ6H*<9nUX6#E9By<E9BgO0hk z9N#|I+}rGT@UHTE%I~v3aQqKpKUeN!?LT4L_mH!nEBCpwc~S05_H2Bm{I&8oZ2P%# z-zv*fIqw$b+>grrsK1|l&wh67UtFhO*uT=>qOp7sotTeAhUMj`d;@I=n(}QLM&;YG z=VP~Hw~r3X$D+;octhKKLcBFyKBYdbO-9-NhJ2RhXr2~=sd?{(=S$jn-zZ<<Yn(JI zFCXRSkM_*ZPZtP|%P+v^o$!3eUj6b5InKh$i-?tj@{6%MHH^u3#^RBt{1SA@h7tKL z?4|U(v_6&z5x0!-b&U+qFWYubemN}9-z}PJK@Q5h_nw!B^459z6~)Ox`IQ|*{>iV( z-`%mT_wx3D<>jFK8j*4NHK^Y;%J-l>YlyMOKEI}Zdg;d+FyALKCBIg5e17e1md*Ed zP1fOC*E#fOn?L34Tg|U;eC{pf<)Z&YU(Mn+Foq2=NX%e5INF@wNZrQDL)b&a3}tVk zE@V^oX0GjK#^IOy^5$82IV``WHX-I(`K_a4^4s_<<gdK__IdNIynFQd?dcA#`v^X{ zE5DPr)`0nu&TSXIUHNu%PNT59_&t>O<R7h{z3S1=UfS;MbJ<6Xd-C~xBh&NdUitmm zV{w4v9N6)dy!Vmv=3sfbD}RX3CPePa%UyYU?J+oixc-j7k*?QK{6_~J^G6%kF~Nkq z`B>h4_x$noM4Ma6=4bg6e6PH3nIEs-94&8d)}kkmn~^`6?fz8$RO2!~%b!lqpmJN@ zo`?Kd+Mn(Ceg!r!x8={(-o2^(dB%0V<6gigx8*0bxi>!<-m}bKtnLy%xh;Pwy^Q~I zT%qnt?cICNU!{NZv-~ymTHm+p_~o^KkG`(g|5RhU!7;phnYTwjZw{Bgxm_&p_cHV5 zaC!S8^6q!#Z^P}5b%$f#8T8BF<?r?GpecWk`g_&g2lu)15BOYWxc(1n`%us`@0n!& zVQn6vkBWKBcgDS~{1dMKlMBwuKc(&&vCod~mw(o=<-z>(uGRCd_Y2A|YV#6aW?Lub z<-Yu@juY}4UiTfCX<X)L`8Q#If8Krh{M&d3?;4Naf6Kow?gQudp>ceqkB{~DaimY) zJT3nzKI3y=KL2@Sbp8wWm)d<vXYV#VKRc4jf8|(T2dC!089N|9$N7C1St|d%K7MG^ zod0qAQTd;Y@n_{<wD~o}u{?{+{}vfm2p|s@qCs<^Au^|6uUA11EX;>?L9Ec8hQ#3h zRzV&tB-lxIDkM6dHWkt|qnr(4XZdn8-!QmP;49YCFse}0M`_Zmg85s)+^rx_7CO-R z8%7ispbIK@qzgfQEG$A7Rks-Jq~Ff^Upz9rumpQabWvVPd1<!%Sm+wUb|0*;EPFY2 z$nwhFl$+QgD=4q1yb?QPW#v_rS7omn%@ypED6Hn3SC33DtU-G;j48MuR#;O^FLp06 z@?pUotzbWF!5poyHd{_C*zZ;7Cw3jI>zw<GA0TEu*Lr<Akh&*UFi$IN7)(WT!8=EV z!TRu9Lj^goApaGHi1E&PVH4#|qs@g)gX0RDxfa93Z$55DVGA)^s+0R#kpBwXu;stP z@JPRc99Xaqwy?eO4k5-8GQ#<ozZG^;zjJVYVWhryF>dp=!fw6`o>3Nd*Uuh&dqz4I z<iUd9XDjTb?cR}*1-Y-_ee%M-V)n!S7|VBn81uG*cgYKWN3$UJ7394Z4%JrfE690; z!?is^`AB+{SnnAXj-kgYALsn-<u9Djc|zet@#CGVy%dF$#LI1kQ`p`mFSy@TIDOqz z!Mv?tA4TCzpVL{!dv-9gFi~IUXm_r@&ePZVxPb3MW$Vqt<PJj%7dfW=TZKzp&nbMD z>gTd(GjauUw!#(s=4}PJt#B2e+*Y_6*Jx+nR=7?d*LRv(n5y1y`xeaE3OBNE5_6Mr zOmi)7R=$OOi_hg&$DSTcE8OP0aJxS4aDI2vyXf8Y9x7)Q?4>B&uiXRse?VU|)IDe% z53#)?S$IU<qan(Vs`IX7;c@m8^hy4wLLB2Mbx*V9v4Ureg=eD81^4I+&xw7$VSM2Q z=l-HP?@tz9GX9s_#R~3s6<#$4^SFZFvMjvr9A;|s2Hx!WO5rX3S?Xuex7EL`?K{rR zJ^O<DU31Y#Xut3HA?|$@K8y}4d`RWEI$mh8Kj!<`*hBp!ME{={<EOArEqosBSdjY) z^4`4B_m`1r1^dGa)~|)H9rJ5_d_(6bf7?QH;albJ#LAC_A7D>x;U_9T7Jh-eSom$y ztYQ$HT8z*rypLIIv;C-|yjYwsGNstAVN9_-V$q4kcn~WlqRmBX)?yMVK5N#Z`C-xA zuxM^r^xHv2_soh#eU+%3SFErbX@`ap#rY$1iVKKcFqm5GNUckY3$x7$i;Ie}H>21| zxij@VvbY3$N!mr-QdG_>nhzG`yyCL#kmZz@SMJ8{Ca%dbR-h|lCAPg_#Z|B>yF0ZG zEw0X9gPQvltwE71uGuiED906hJC8n&yOug@(Bj%>PcHVQ>ol}2n)emGcU~Nz?Rw(Z z51NVtX|wY-zbkG?2hqWFBkea9Z!c?cNOVlm`{u<>wB0l^yttYEhUsH-DyJ1aH!N<2 zts_mvZRoaixIVUv%qnglOe^l7A9K0lj$(I$^=ENp2*39yi|*?ecg1deqqG~P-R|p7 zDel3R%Zk>Z#l0MNZ?=Dn0TYYvqZRkXe#W;y|5)Sk46%3s`#^TcL5?|&9;~hVYDM$8 z;$if#XjAcUJ~^#;q`r<a#-r&m;;loA$EiCWCq!dK&k>96;TQcjQ1N7(Voay%=d@sU z@icz-(u!y3X9C}u%6=Q8=(i+`XZt)SDx0qr&&7F>>BaM@xmxi;v6J-WUVd@1wiiXN zD0;3~v=%LzuN5zKy{$!y@>=nV5XZD0E!s0tyoz4UcMYF;Tk%@H>wGrXv!`~RP`p9? zjr1lujowUe5pNzg7vsIP&Ar9xj%Q6;yq$WVsCXyeUF^I0Ja;VKEB?L?LyPiT(b}}= zo_=wL&qaPKKFIfw&*5P{`K{=F8gfPXt@xPnSf>`B;D6E>-P<q9ZN;axd4}zM@ZxjE z^?bv$;tOJ4H0~F*f5|z&EbbM&3ir>7uR}g7zF|yn1`~>JiJ3*;rtfr`S(L|$?`=N4 z_}=J##SgUkaO{BMM?2+;pWsuU@n@6XD}K)ZMPz94%RWyOXN&(zS>7qiImNH(HzCIL zjk5exlz)o$hqb6RYBA({<M@HvH&Oh_ckE~S3w~w$4UCexSt-&mxD<^HFPWQ_+EC9O zOMX+g)Q<X1-BOJDP2Ez0CXr&hZ(qu&%ToIzN_jr{r)17mDzW9ClC^26v0+Tf{j$>h zSb)7Cm48YLvE8dL$v>q<+44`RQ)GI{nzXcd5Gz@emX_dKlHKL($)zsQVWp)T+Lo4K z+Y?b*u3>m-`G!%YZsMB6m}8YzpmI-X#h|IQ5?z_fKP7XlQg`*MX}7vI)}JNM97{bS zO(pBk(wfmRE%fTuuhg5}N9<Zu4l2n%rGCzH9eu1Tw!c35_iic;z<SE-N1HLGG|)M_ zhhN&jxHjY;6r$~*Xj5r0|3=2)-&H6LalQOLP)R;2+51)6jJjV|+B}$9+Csg1`6a(A zR@z#7&m2qJ=zkk!^Q_Wv?LxMLXOAU&!Ac|ecXTe+nx&oev9mr#>SLE+WXW2yw41t7 zV%!@m?QU#)INqMha#LxvagA2qtHaRJ-VNhR`|ynsKgRL)b<X?wJmja+SmU$jzI1?d zJ`e|q@lH|6oU3$5o95CX&ht>mJ&Ydi7)Kb}k<sy`qm<3JO2<S}CAq0|96g?%Ku^@i zc<oP$%)+qJ$@COH`Kfdo`!v4OsX154UWbxBtfe#6pA}3ioy|AVxF@QYqe|yCOe<MW zmd<zF3!Kx1e3SSli}S4U5BM*NHkZuBN|)$sioPzzWx<5f<@%SeN>@78mEx{qUoA$y zDqZ6<zlL7RA95Z0`ry=(^<!x&ZcsKKE8WNrxykuiN0!XVO1JcRq9livZq>g$R+>(y z)7xq|#%(^Q+kJoJvXW<%rMuX7(|e5NUf1zHvG*IZxmrmsD?Pvtb%xJ*27OT3db9LU z2s_k=)yZ+CM_d!XnO5@tQRy)}&VGVEssE?MK26QpO3$*NqtC;9t@I*&2`{tF)k>ZV zlwLFT*D+JSZ@4CJ_<MX)*)xICEakVA-%);7?0Z2|>3#YEKJ?xANE^=uO6FcAdtOVQ z7>D0*EP2<c^f})b(dN<@uGyF3XG5+l$#JD`T!U}K&Y|B1$CbX*#=NTZgK_;x&8tf0 zRi$6V{L1IwW+(@d;pND>Q_9hX;pH~biRHG@TzS4AR&Ez<YN36@sB%m>PR*^#iH5di z>&<d<(yVeS+FZ8xwVa{Z=$Nv(RXI-!`YdW+5?>C{Mvg0+W0mcxDBDv}o}Yh#5dKiz ze?zR?F(fjl>^FbP3+ZcNZ5H8Ml)4{RUW|5veHLZ8ue=0%iC{u`N&R#YzZ6|s-7>Um z=LzLyBdPLo;+Ci8U*&GJ8<hvkO$}qpejlxDUu=0r<&~)4yeO|sSJCgP`s?o8R%5U3 zeB{D%kA`Vw^RaSI=h4#`?FlRQ;_J=VCzxH956f#gzqO6Qdzj^ZSch+2<^I&1th^rE zy}0tgK2MaJu>t>vJLSrQFgQ51yb;})Z^&-L%R}|MiSdNke^K5{d6?@wjBXyn4%M^G z@)r6wM=P77mA8(LFPo#4x5aR_JXqddtUOpAfgRa9QFFBNNaGzzcL`yKx@!nKRP(j6 z+}NV>V|kSCNXYJvw}*4t)Az<Rgz{dn52I|}RvshHI<&km-OuO0AC({HB5r@@Z!T9p zfbT$`{ejWu@<A9EX(}J=x*x)SC_Pjk?#q=uPbkZk<s;iPmyg2H>dfQH$Li-e$2>lG zrF?=mC)UvJM2wI2ET4pv`A_+snPuzM@~PTeua-S$D9fGY3Ho<0u6(AxJ!dG(o#lza z%(8!Nr0jWV`CP|2&vibZ{{mybfbT+WCPk)~CmW;uS-#lVLM~B1#r3s*Eng<)GW}jI zM&2x6sVr}n<;}93ITz)tor`sBS>7yP$Cfk8o;#Fp&{obY-{gCClQB$V-^?dxmgUPo za9r!!@~zrUkB%?jhTD(cs(go-JN0AFZ22yAemkRl51+YT`QEVuT2#I)oBx$VeZcqc z0k(WumMhD0CPtJWg1xh4d9v*OT-hA3{J8QH^hrF$ep>u9#`X+-HiR9j-;-?NdHMog z<a;SZUoUC<vh#Yy^?6lU?krp5mffo>+sjdY)7a(B@+|e%x8-+w^(((?eDC3XKKJU% z-c>5go8^yPb9uA;iMo(a)qUps^|?Mht0;fTH@kPg@>kK0WjV8KUReId_wyU)I7c7f zDt|}6qu+<HzgPEzm>=m+d_U{!XDW}Df6>pcY|mRUxooXk2@q)*Q;9|=RvH=xSM2ks zm?u`|qwON8O8W~tRAOQhZSJikVP9G$O*3M$Vsb&Ok`IaYtmM@dqPa>jm{74+t;nMl zd9)&rR^-vj{QL_jyFXXyh=s=Xt1PVTV%x7)Su8rfvbgvq;GSHii#AI&jHoOP`LW_X z^@`s`t1QP}o_0eM+q$%3Zdfrdtav_Av6rK=s$+RRQCUrSb>%hKJsR3pdWu=o@p{o- z<7QOk!AhTyNK>VcSnJcu+9A;~m9-;NDt)srRQh2Z*Tp)u(qG+x;FZdNuH!4~u?GfI z5v#ZlS81m1#Z_r;QNJTu*)Zr>8RT5um#b`K92@Iz2+S2Ln>gmC&UG{68KzEdtZeZ+ z9V=V3xwo>V@>U`2P`5U=t@ULNS=m;bZRzk3;|tktT&}Xcn4R=3UsgsoOskCCDOcGA z*0Yt}Fbcb459|r~u(Fry>6t`jAGUm0u@AO|{q$)sY-KDCU>~U7zO>3Xu?OQ2913gL z%HcRd+ap8RAxE)~HkPA(4#&Xz0F~n$^Z1~-azb=i<wVzEyz)snnNO~(oXS4UbvfN} z&S0A(R?gIqdvleul+SK6yfQH|y>bqpb!-dgIoA2=-J`466H=Mv`#2f$T;<{rW4ze+ z&%2hDDaLRqtY<5i!#cJi$5pNpb2XLMD%WabK3KVKbic}VuHE&R+UJSN4Y(0Exfau0 zlbdl1+r7DpJXSI1tK3dKPpz2qRqoQ~-MB~Gy|@p4%dujfSCO;+z}ROvhX;KxA7Vf3 zGqi8E@~D`{T$9IwiIvA;j#qio_@43|d^$3x@~m@xE|RM}AIz-0fEUj@tRh!cJX65L z7G8B7?EA00uJ4(~^oF`OqfM1JeXrkQ`&XqZv*_C`G|{HYJ9roGiFx03^Y3w0K2$Gn z{U`eL%(e0{K4E+2TKNp-e-*#y*ut0W+0HxUD?a-}DxSSoJbSHtYix2@<$IrrIbh`n z*Wt%r{VG4X4suuJmk`(B7w7w{c+Vaht#2FsyMc}Fu{Aa{v~6sIw!!Si`JxjW+Xb=4 z_B9$tv1d2NXk44bxEYN}wmjCDMh02r_~o(2LXGJ7#sZ4Ua#;)VSz`r_{2eeq7Qlk& z2+w017goPWpC=j@jW#!$|229Z+t`^d-Y~dviO8JBC6&9t+^=!zwsRVn(SO$(V!HA# ztA4p?&&K5&hBtPL4r`R>8dq3%O5=(XXEm;jRoT|Ojcf4tKu_nqCVHVa`WTDntBq@` z^DLpUAJ&0&Zlif!qde9)fDQ=GZ<NOx?Nw_u$7{6rqp{gF-2fX#n;HkH8yvz8b)$NW zEi7;RPZ*DTc8%7@jdEV&CfF2mUZeYUjhn060``$KZUw)Y+qg}nsc~Cl^6a6}KL5t; zU5_2;2<+%{mfITTw#JeA3E72h?)L}!*%iB~8-?BBd2HjJVn#df(R458yBFQtxq45k zaUYCPx39SU_|5+s_h*NUWt;o`L3B)`{c(+QVdFu@GY$twbB%`>@1f!j3-MhD^>F<j zPUXeMBlKln*m$Jx#!=dM|FiKJ{$oQN+w<B+dv+U-7jpvp#GtuxyqJ@m@5#!iz<#+# z_xKu5S9b<`g1R$1zS4M>y0cfF(&+wPqrBL7uDWyi&pTnMMsvW%Nxu{P|NpgI0k`S@ z>;D@6>lXj#8vL(}e_o^MJTK?}Q(wf<TjL*P3_|>)VL=<Ttui0=gTF!hI{bK?e`PiZ z;_%}nzmsIAkVd9TmgbO0p%vj3uBW72Mx{#lZRmjcu|SYS5G;s}SO^Pakt&PQ#n1`i z6<-`nV97eVu<Kb$xyI7$WzZGNV!2i<uN=}1O;`adR#}OLtc+D!v8r-+tcKOAtU*J1 zpl6jeX^md&-spq1ur~VE(T}|j)~(W?h771<J@)z-=n6H{4KN6UvC&_!G5?S%L+K{i z^uJ^?@gc+N*qpsZl`ZL3*c#hlTMVybJNEY2p~?ulBX+{h7>Qk4v8!^8-PohBdmVeQ z>)BIzH1@*Y*au^<FZRR!7+c2y>;rKS#^K<9!69M}#bG!cNBoJ#R^_?%M~SKDXys#Y z?B8&ly5n&IPQ>{Cf|JCaj8p13m3>;3)9D$ln4o+n&T7Tk${`bR&OdOj`g+b&J|7qS z54cd<NtpZ(T%^7=7xVp}<P!bYGe!B*d2kuuW%Ary4ecPfT!y@YUWu!MY;ZNb<{#<$ zFJk`a=UV+;_b<3!%+&vj+~8O@{tY*&n-|mgZ^kXSwaRpQTOGHv@4%f^?xKHBSM?$P z6j!VNr`Rt4y05z(^PVdA($?I^cRwDeV+Q-dzu+PMhw%s=#bbCJPt@@w`>Fqur^P>m zXYpK>=jngL3*ukG%Xp;~uPXm{bPiq%7D4bkud`<cy%Fla;|+21;!Xay{(@O%A+yXj z=4#h@*r6{7-o`usimv|<*ZnW+-_?JO_t@`O`GAIeh>!5`zozql5&K8KpXmQneD)_+ zYE^Ds-|ZjjTgU&o{JCTO9bc#q`4Y476~4wdnDZyPDTlQ7|If<b>hHV1;Cucb=1J$^ zNB;k$-XGfa<yw4~R_*>Ot``6A^(SNcxfQ=C|BBzLOO6PQq5*Bt_Wvlo|DpdL)%t<| z5cluKIiGV0X%{RKX;1%?&hzm75f{@Y{ud<plSus|UH?VQU-y&Ne~k<~+lriW9t9MG z9tic{QxaQGS-FD7U?qe)FS@t*JE;5jbdJm~egQ1_|B#N3U1K43Jqs%@5_F9$O8<$) z#QYVV)cqBUs|#7;U$UgQE?5dnV;OX<V_9~{a{mh~uT70^?526rHL?Q#idd=2$~0sZ ztcvbf4XamKgZ8M>ldjo{Udp}E2Ww&NzoD<XzoMVI|D+pV$h_+Q=e~9H8?r9?2i+0s zpBbS1->{zekoEt8f$E#F0XD>-e_*is)@;PLk$ku@olDoq5Z7yn^3eZ+O~n2ko2vhJ z^llZ`qgDCe_7g-lbIf6NY|gH+1$#?ug{`Y>L%01G3=fKt?Zj=59WbKGjx=N^?2M7~ zU>ClSUH^gI)c+Hs#Qfi2cgL9*d+>+s`8SMKw-@%tKJ#D<U&y|H!+z@O*<X2VD-KYu z=RoC<gQ|?9AqV4-Iu2#mIE;OG9Y?T_{1+T0=IA<(VTT;sisO`z#|c$Vq&3E~Lr$u4 zGHuN%eE)`1#nm{C{a2i>F64|lCa_y`CSS-|IJ?S38gfpRbLn|Ff1dP>T)=-}l}R*Y zGA_c!bzH)pQsq(_a@jn%oNr!S!GDGPbtS#36;~@?Q{`HEoxFEFtud7yaszIxauW@i zR>#fkTmCn4tG@n<>FRE4AsM-y-cjXFdKd1-Jyq_dA@^0epFV&Yc(BSt^kF=LNAVaQ z{|~xXeKq}a%oF10#gqI`;b}aBXYpK>=jjVoUZgc%V!zyqSCs2{Rr$3bi6HWND`qO! z^M>-D>Gpg1O?4q}VHV!5@(yjyyL|7}@jg4`1AI6SKH~crpWst`hR^>*vZee5-<MTp z(~z(5HNN>9=BNw#w#s+3#`o+Ws{BZQs^e$&FI9e}zs)5Y%zd2Hq7in8LbL&G>S)WZ zXFlb6+9`*${};r>#F6+1lIm-u*db|TkgbxVt;zG%D6mT?qY)i2KNi4(=!k`|a2<=V z7egm>#^P84OQH*ws<Jd)rb<`3ESAIa=!Pb&fEBS4R>mq=72Sg_(beecSOY!K6KkRu zdZSO3wdmUDi+)wsq3fbQ24KB9)@Rok$Zp04*s#hVTF+qRjj%C>U??`hrq~R_usOEC zme>kgV;gJ>^PuQ<bbIW85!ewsVP}jC8l$_=U9lTRVR!6-Juw=4VQ=h%F;(`Z`(tdC z1L%P`2;*=t4#A-~42R<g9Eqb^akO&CF*vr$arA^LC(`kCoWu?}8K>Y>oQBhJ1}5N4 zoQ1P75$E7soQLyq0WQQOOvXi3E~b}Y3NFQExExpDN?e7jaSg7mavi<C%2av-Zp2NP zhMRE<ZpC!mhTCxm?!;ZV8~5N|+=u(|0A^HqkUoTm@dzHpV|W}-;7L4%r|}G)#dCNb zFVyiO`z5@LSMVxc!|Rw?<qi5K-oh-rjrZ_AKEQ|gsLIFm6MTx#@OhOl=$Dv{ukba# z!5n;x@9;f-z>oL|KjRntir?lwMsEmc1W_n7v_V_UhjwU>7~)7Ei4@YvAd4LGD4>WE z%BY|b9WXx@z=Bme(i#h~7seu36pOW@lX7P)jwPxrNxNXFps`_Tx(vEv**cbEFOP0$ z!U|XsD`91<f>qHSt78rHKu@fRUg(WJSPN^{(U)DLAA23Fi~bmZ^{_sgu>m&3APf$= zH*7>V#!zg6O|e;(VRUnBfi1BWw#GKtw#slCvR#$!=?)ly9kCO3#z^dfU9lTRVR!6- zJuw=4VecyY(2z0M7yDs<jKu*}4x}LmVH^&|Avm;-!`LB*<A^$rWQQDuqpKW4|B7SP z9f#v_0#3wuoP?8c3QomoI2~tT0?x!)I2#jjPSB;{TzVeP#|5~s$|O1&7vbXH>DF+G zHdB-@4LUbmMnkS>p>tKka_5FC`L3+$RqU&A&7bJpaINxOYIdkK!n&G0xBfci>$JJP zh0e4_&@h!fmA^GN81D`IH>m%ES~+OAQQeJV=4xnnZe`cX^U}~a*MAeeNk2E~Z?0X_ z&JEM}rm3%SvvQ4F_-|33OT8U5+{!;)pVP%mZ?S6{`h$ksTIl>Iy`ArNZEn|Qt{s*` zyH>8(Km2!S_h&jc+^Nl<2^#JacUQ0yx>xOPRjt*{)w{*rgL`ow?#Ba|fd}yr9>ybh z6p!I?Jb@?iRF$V`$TN5r&sBMzzJM3;5?;nDconbVb<D&YcoT17R?xrUZTe1?cj<e0 zA0JftkbZ=Zt9(K~#b@{&U*Jp3o(Es?g?wG*8#)Ky*6|(td;EYO@lzc?vwx}bEB&oy zJ6G2>!Q5?KZKAXR9BtZSKD0*+aU@!iR8Ap{46?`}j{=G)q5Kb2)Hk97=Enk95FN1) z7RI7j44u#!i(`o@OVTb_3QJ=dbj7lDEXQ6R-Oz*;s;o#?!pc|$tD-wr!|GV0N)Or- zYoZr=SLs97!rJJIepm<VqCW;;J*<y`XvPNE5Q8un8)0J%!6w)gn_(C>#}?QUTVZQ# zgKaS!+hKd`fDzacJ7H&x#4gwsyI~Y|#~#=dqp=tE#y%K>eX$?*$5<Rt<v?2FAoe&M zj6-l}D-KgW97o_t9989LdJK-maX20)U_4I3$v6e4;xwF&GwPVYJ`-o*Y)r&CI2Y&P zd|ZGFF$t4#5iZ6hn1V}j87{{axDr?4YFvYBaUHJ5RNR0YaZ{CP^k&?GTQMEC;db1C zJ8>88#yz+<SftH;^!_Rj&>48J%0u*FJc38@7#_zHc(Te<^cg&h=kR=$7wC(42`^W9 zg}#c{@H%GJ@di8OO}tgdEcV-Y2k+uNypIp?AwH_|G5w^<r}Q&?jxX>fX5%Y-jc+gq z-{QL}-_sxPW0jxi&-fL;1wq>Ykt$KzfHqLkc0RO2`zkRS5=WwrBs(O9G%|ldmOmti zJPIhHgfbe@0rO)4EQpR+2n%BoEQ-a@sY++MIF`VY=z^uNG?qbEEQ{r^Ji4I?D^yvL zu7s7b3RXpTtcKOG26~_;)<iG#Mjxz&wb2*rU|p<-^)V35*Z>=15C#V;wcUtrj3F3` zO|U68t1^skjxDeyw!+rf2HRpdw!`+=0VA*@cEU*Pf?YAH%I<Uz?1|CXtIFPVAB@4i z*sqTL*&$<b01ga_Z4aX3svJxY!J#+|hvNtwiKB2dj=`}w4#(pJoLI+r_DMK7=-l=c zdKym08JK`GaTd<TM4W?jaURaEasj;%lQ0<<;bL5ZDYz7u;c{GoD{&RB#x+&0rPtwl zOs#SQy%9HI8g9ldxE0fJ8*Z<12fY(_Rk@qqgL|voNAJf2n1KiJ5FW1M5%!~a43Fap zJc*}*u5F*D&)``+hv)GEUc^gy8L!|~yoT2?6K~*6yoFhK8}Hy<yodMk0Y1b>_!yty zQ+$Tc@ddubY<yMaYucJ`_~zhSe24Gx1AfF$_!+<8SKp)Gf?&P?5k#vr(0bY^hqSGt z!F=t|9x=p`Kr-kyUy7!YK^8gWQ9u!;AUj`~R;o184wxScU_o@mLRc7!U{NfFPUwuq zu|$<6X%{SorLhdUVp%MQ<*Rg~O;`adVkNAMRj?|$V>PUfHP8b+u_k(<H~L^Ltc||t zhjp+n`eOjrtFk^Fh-Pen4KWCVu@N@L5Ddj8*c6*#7&gZi*b-Y~n>w~-565=c9y?$J zcEnED86&IgLU*lWH})v(jy-}RLY>Q=bY6_+-wS(VAB?GEU-o|39|zz-9E5Q=7>D3c z9EQVjB#x?bG(85#;<zfu(-Uwa##cFso{Up)Do(@cI0F-KCeEsIHl2uba4ycn`M3ZV zViG1-xrkm|$0h73xD=P+a$JEcaTTt{HMkDfV=8XIjkpQZa5HYft(cD6a69e@8t1!{ z-i5nykH3L?aUc7BJb)Q^5D(#DJc38@7#^?k1bq@u;b}Zm<yrb1p2rJ#5ij9oyn<Kp z8eYdtyn#3I7G~jXyn}b~9^S_X_z)lAV|;>7@fp4__Alvde1)&^4d&ome24Gx1AfF$ z_yxb>w;*U2Ac80w&<1TWAKC@kcI{~laU_uBOVM;IGRj%x)aPjdMU+rR1&!!{`Kv5I z7eq%agoT4*yG7`tSPY%exys_fg6)=IFIlAvT?$KAS%!ASvRDqwqg$0Gx&l_jN>~}I zU{!R-YFHg>pa*(lP4ueLoA$w4SQ~xOugW@fUG&EQtcUe65Y5;C8&(-a2V*1GXd}9D zl_7K}Ho>OY48yQFw!oIy3R`0vY>VO84%=e~jKGfA2|HsXcEPUL4WqC-_Q0MPjlHlp z_Q4qJi~X>F3tifcr3c_Z9E5Q=xQ;`D9_<cQKJ0h;wmY1C1dhZ}I2y;`SR9Ar>o|dZ zBF5t+oQzX&DozW!wL6`j@xQ<XZT^Wf#nf|_^4XZ!igT1h&aHADt#Q8dzd-p9`m$@( z`v>y(uM+x0yLH?8_*zVB-(Qt`x4Y0d{))-!{%>%R<Fw{tzDqC#m*O&9?z6Qoq1~0P z!&OzT=D!Bl;yPT9ski|*;wDVP&A0`(VmfZa?YIMX;;t%p(|d3)?!)~-?{*Kg(1Ql8 z2z?>_TlvGdT3vmcfxpMi(AR^1Vo0lU>-x=puYX9pKNwVJ*Zb@3A-~5w91LvtNDKXG zP$jf$<$614_o$f1{s%m+ZH*_`Ay48dJdJ1YES~>MR{EQ|ziSuPb#M2=?*#06dQ|H| zUoEcQw^G#~YUmHCkFB+-?{i*u*go{vbY3w*yBEd0)IyJ{*2?wzcXjn~e{a9+IIs9S zdgXU*ZHMKM1>3zU=5;!gzVR2l$zS6w_Pm(I|2E#iyLb=p;{$w%kMJ=*!Ke5PpI7;U zeu>%m3SU?GhR(sa_zvIW2mFYi@H2kFulOwp+6RariUzbn+bZ+Xb`aD)hBy*I|Mp3m z3c9sV(@d2te~z7N(a`Q&SFZQh;==mYakaWIzMe3))?d9pwCDQs;tMFEgmNn?%KtO^ zwr_N-#-KL>^skm{8rFq&SYL~)wFz}l)gQK<7h${5ANDb?`k;LW{`s*07DPuZ6s**K zVOq~3%8LXGwqKMkhEC{=#e>H7OVB0J1xp3R_Dj=c&=t#Kxj!+e{qn~B2LZcA=nw7I z_4D%Ae6_a!y>@e5nu37{b<jNQ&=<5{0V`r9to#qGqJC9$$7)qpry*<n13iKv?R)-- zLCQhZ7uvP@(6?E&F0^ZP_3>eBecM`HsIBe4_pPa)Ug%w=4_&JjYb*CfzZQ0GzYbm3 z82bl1v>(7;59=!rq|J`M0o}lLpG#;Dth2*%Ev9A<sn&;WLSK!r9M*;HLtm)%ZENjo z^|f|?rT;dr)_&gc8yd@8dRMhp{y(Xk{ck_kAm=d{8)4%rL+DU!f=#g*hGBDTfi0_S zMYqN_Rko$Wu^qO@4j6$Qu@iRw3r6zq;=8je-7VO%{U{o;JNCey7+qyAx;OU07~j1y zEgIUb+4*<hzWUrR*cPGgFb_NQ1?~3_cEg@k4a@r=)S9opT(iUazh<nuzvBS)2e#0o z{Xs#E?o~Ue^M!WJA8J^xuMgYSe66(>U(?q0LHlvq)^o73^(A^&weLLa&=<5n6o=t( z9DyTo6pqF*I2Om@c$|O}F}})4^kke;<y3kaPX7-EwLgPz0?x!)^Wbd0xeTmo(0(Fc zh`lH6&!y*8IiFsD3o!|kaS<-YC76OsaTzYh6}Ym>RrG3HQ^&RJ>u^1$;s)G=X}B4; z;8skpavKe~-T#Yk_qop19`mq6U(o)JI_@-AuqUGZ-F)}_PLKBYvhOp;x}QFP8F*0c ze26~WLhtsE&`0qY9>)`S5>Mf2JcDQP9G=Gucu~%Mu|-3>HG_Wly`=6Xu`mBle|At; z4(-qv#?&;lLw~KV)~4qBLthc|s&ju;+qpV$9(L#p+P~&+{Wa(Qn!GZX(60GI4GHT) ze=WA&ANp$LT5Ns!Kke7W&upPv`#1bQ>Mi!Hf5F>g-od+g5AWjxeCS+1q8}UMC;I!8 z{TV*T7x)sh@s;cO_3!krvqOKa9BNRdKECE_t+n`?wyqD_f1|&UIr!G`zct3WI%FPp z=nL9^hwrQWK!3zf|B|1BMcV%&_E-EC1hD{-pnoh%Yc#Oipe^P@JG6)37UJR)>>5dS z3Tb4JMGkosf-bQlEuoAG8qopsV*xCPj#U<-3u6&1ip9_go%ORgT>?v@3zovtLFd>q zv}@2ew(RfpuCqgbtsH7lr9Qsqo0rzw)bu}NmeXfzmgnncJm$|;9XJm=^aZgdtPl)} zt@w`wv6aNuSeYHNN|jY<cdQn4jjc}C_%G-owr2}nVr$Y~=#4&A)}m{pFZy8}tP6A2 z*g!O60}S#x4W=7oNR^><6KvW-x7cQM7&gb2b!^4nO8af-_EmOrE+g5yU=()8o*0e2 zus8O>zS<qoLJ&Jp`5=tLAvhF=;|Lrr=2&_>#^a<qPGyIj-a?laJyZOd%IDx*oCp8U zi(QDxxJdoQ^b%b5J6&Q|@L#E1<0|&mxVFmmw4SNTH{zx$)3l$)4!Ie(DBp_P*mvSC z+>Lu$=o-71hTMmT@dzHrlXwbG;~6~b`}iDv9xwRYd6B+U<>jC;=Kl||SMeHNuQHRq zQRPh<^42_<#rHPefjk_Ohhy*i8~C7wfw2#RkRbLEKE@}l_*D6`f5m38&&7R#FERUf zwyd*5|7NYqb7Q{}AM!Q63ARNLn}cuvg75f$(3f1>qCe6fl|%i>-|Wxy7yOFff*>9Q z{o@fD4K{0`f!z=ciOZ=iv<-HM%d2sDwT1Td4|a>klywqMAc<6!G|lKUB+JeQ-Qzhb z&&CTVqJ%OkRpi=u4LLVHKNi4(=!k`|Fczt@C|wMls&uCEZd~4t%e(O|Ep&@7MVH1h z=o+jPmt*70vE{vZH#A`dtcaDca?m5b%Ae@298`TZt;K}pus$r;$JOdX4P*X}TDzLg zJ9brl{2S!e_-f8`HRGA9J?3GDz97Cj)<6&R#G2@Z-spq1ur~TaE{)5jak(_!9|Nka zM?=;R2F3qB;_f@X?lJx!{$<mZG)Xg?*^HK=C@q2@2!bFeN{gZ>s*0APsJ&{G4z#FM zTkXA9Z8d7|(b}6D_w#ek=cFe`ir@YHeee5^=i~Lh-q&?L=OpRpIwL2i%`&nTTeA%< zY|D1ON88KR(A;SUxnpc6X`k)1GrO=WgJZkN-5C-aD)-2+r}174`~S(_u6G~yWjOo& zj}7|2aEy*`$Np|x<N!u2#)0|=*#i!iBb~p8$jB%TWwg1&<l(U+<QT^KH+Q6r9K|?} z<`|A;Jjcb3mnYbJCdd;roMe1*XzX-~JSCBtbw}e=FS<-e8Wz(Joldp>w108B`Tw`h zaM?^}>YbI)D4U3~xq~|Dg-&NPk#jhg^Ef}vB=rSc$YiF(rrPVKsXKC!{>6XO-02d% z>9HB|(sr6UU1ofFY^ID{5vn^~DX)rMEw72qlGkz_*K-3mauYXm3$wYE+qj)OxHEQ_ zyqkNtH_d(O`+0x|UH?P!VIJX89^-MI;7Ok1Y3A?@&+;74^Fr)J`4TTPmsfZ-p<bqo z`l)eh&40_+9PfYPb(de9dFCQ-xNUFv*(bBHgF5PkPH*y-`-!*PY3THh%l@;_>0Rgh zyDtCl`Ym?NdoKUJ<Gk<slUd(E9rZ$|5BQLe_?S=ll+XB_`7GdzP|@j2`4wM>yiVW9 zZ~2bzeP4cPGq8g?>V>p^v_2X~Qgf+H^^^IdHIbkA*>(Kvdzj3|4(g~EI{m`0&i&tH z%0l(;{K;P-bPg=Rk}Sp2EED>6UREy0@~l9o#c+VmUFb?TvdE5gmpSB;7waMODWH&| zkk`3bme7+@$|$FTN~-8ZH8s>y7YaM~mVH=}mFUaLtir1FV>MQ1jaYxVW}AWPl&Bxo zsrkkAQ}Z3I&+MhvE;{a7jz55btj#*C8=5-T%XI4*ug?ZyQ0E32*^rIcm_{~XQ#Ok= z$<5h<EoqKzCAVgq(7SVs+?MUwo>q2XM|NURY-hO(yD}KhM?3E>hcJ{q*ps~&7OFe% zE%#yH(7*F=8QG8hIe-xy7@9jD)TT)tV(I-<FPe|~sdcF}srmFwtx4sgxr1HDNXHo& zTH<W&ppJT>^C8xal7}*y!#JEH7!w;SkK`!Eg~rZD%ami(i?p=W$LdGMJO21YhR(;y z<6|et37p7DoXjbl`i~krpXU0L8q(^h7h<V?lu<9WK7CDUZ7Nf1Q<>_w&(j@man3N8 z=}bM3LuiV#xq~|Dh0bR)k#jhg^EjVLT)>4)j!ltM{cNYTX;z0=)Q{@ad^8u;nQKz> zsmpbgsmr9Yqcx%PMXoQ?#d?>x-b+GjoP#>3qh3Sj>DJB&gF9c!W$Kw+5$Zc%*`d%u zKkEHAS6O#;hHH#xaV^)m&g<N!WHxqCN4?PbdT!vx*iABWv+wiGzV2kUc2GyX(D{}O zvyE@{@8mY$gWDbB4&yu9Y3+QM@!i~G-M#WY?&kp><e@O4^TYBH9!(h3`7!x8Pw*s9 z@icRIhG%(>=Xrsbc$vAp;(qE?`5Lb?k2iSJe)pE!@OGP^jx4VCPxGm{#pgSYo#|b@ z_wYBOG{@P}K^^t#JAYv9hkV4xe8Q)E&U_Zw≤zbpAs9rTQzr=9}2Ja`Bq}VQ%r4 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	*-q+P;d2^Y( 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%0AQH*aP^d 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 a?#uDQJgT|(lUrHTQx^M_#Xjw#e!BqjKR{ss literal 0 HcmV?d00001 diff --git a/lisp/Config.linux_gencgc b/lisp/Config.linux_gencgc index 4940669c9..23f5b232d 100644 --- a/lisp/Config.linux_gencgc +++ b/lisp/Config.linux_gencgc @@ -33,6 +33,11 @@ RUNTIME += -DFEATURE_SSE2 endif endif +# Enable support for Unicode +ifdef FEATURE_UNICODE +RUNTIME += -DUNICODE +endif + # __NO_CTYPE so builds on glibc 2.3 will run on (some) older glibc's. ifneq (,$(filter 2% 3%, $(shell $(CC) -dumpversion))) CPPFLAGS = -D__NO_CTYPE -D_GNU_SOURCE -I. -I$(PATH1) -I- $(RUNTIME) diff --git a/lisp/Config.ppc_darwin b/lisp/Config.ppc_darwin index dd8e47b08..8609a4d88 100644 --- a/lisp/Config.ppc_darwin +++ b/lisp/Config.ppc_darwin @@ -18,6 +18,7 @@ LD = ld NM = $(PATH1)/darwin-nm CPP = cpp -no-cpp-precomp DEPEND = $(CC) -MM + ifdef FEATURE_LINKAGE_TABLE LINKAGE = -DLINKAGE_TABLE endif @@ -28,7 +29,12 @@ GENCGC = -DGENCGC GC_SRC = gencgc.c endif -CFLAGS = $(OSX_VERSION) -g -O3 -no-cpp-precomp -DDARWIN -Dppc $(LINKAGE) $(GENCGC) +# Enable support for Unicode +ifdef FEATURE_UNICODE +UNICODE = -DUNICODE +endif + +CFLAGS = $(OSX_VERSION) -g -O3 -no-cpp-precomp -DDARWIN -Dppc $(LINKAGE) $(GENCGC) $(UNICODE) ASFLAGS = $(OSX_VERSION) -traditional -g -O3 -no-cpp-precomp -DDARWIN -Dppc $(LINKAGE) $(GENCGC) UNDEFSYMPATTERN = -Xlinker -u -Xlinker & diff --git a/lisp/Config.sun4_solaris_sunc b/lisp/Config.sun4_solaris_sunc index 6ae1954a7..2b8f4c16c 100644 --- a/lisp/Config.sun4_solaris_sunc +++ b/lisp/Config.sun4_solaris_sunc @@ -35,10 +35,15 @@ GENCGC = -DGENCGC GC_SRC = gencgc.c endif -CPPFLAGS = -I. -I$(PATH1) -DSOLARIS -DSVR4 $(CC_V8PLUS) $(LINKAGE) $(GENCGC) +# Enable support for Unicode +ifdef FEATURE_UNICODE +UNICODE = -DUNICODE +endif + +CPPFLAGS = -I. -I$(PATH1) -DSOLARIS -DSVR4 $(CC_V8PLUS) $(LINKAGE) $(GENCGC) $(UNICODE) -CC = cc -O -xlibmieee +CC = cc -xlibmieee CPP = cc -E CFLAGS = -g $(CC_V8PLUS) ASFLAGS = $(AS_V8PLUS) diff --git a/lisp/Config.x86_common b/lisp/Config.x86_common index 0613fd85b..8e89b4bb9 100644 --- a/lisp/Config.x86_common +++ b/lisp/Config.x86_common @@ -28,6 +28,10 @@ ifneq ($(or $(FEATURE_X87),$(FEATURE_SSE2)),) CPP_DEFINE_OPTIONS += -DFEATURE_SSE2 endif +ifdef FEATURE_UNICODE +CPP_DEFINE_OPTIONS += -DUNICODE +endif + CC = gcc LD = ld diff --git a/lisp/FreeBSD-os.c b/lisp/FreeBSD-os.c index 64fc681ba..6807a647c 100644 --- a/lisp/FreeBSD-os.c +++ b/lisp/FreeBSD-os.c @@ -12,7 +12,7 @@ * Much hacked by Paul Werkowski * GENCGC support by Douglas Crosher, 1996, 1997. * - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/FreeBSD-os.c,v 1.29 2009/01/20 04:45:18 agoncharov Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/FreeBSD-os.c,v 1.30 2009/06/11 16:04:01 rtoy Rel $ * */ @@ -51,33 +51,33 @@ os_sigcontext_reg(ucontext_t *scp, int index) switch (index) { case 0: - rv = &scp->uc_mcontext.mc_eax; - break; + rv = &scp->uc_mcontext.mc_eax; + break; case 2: - rv = &scp->uc_mcontext.mc_ecx; - break; + rv = &scp->uc_mcontext.mc_ecx; + break; case 4: - rv = &scp->uc_mcontext.mc_edx; - break; + rv = &scp->uc_mcontext.mc_edx; + break; case 6: - rv = &scp->uc_mcontext.mc_ebx; - break; + rv = &scp->uc_mcontext.mc_ebx; + break; case 8: - rv = &scp->uc_mcontext.mc_esp; - break; + rv = &scp->uc_mcontext.mc_esp; + break; case 10: - rv = &scp->uc_mcontext.mc_ebp; - break; + rv = &scp->uc_mcontext.mc_ebp; + break; case 12: - rv = &scp->uc_mcontext.mc_esi; - break; + rv = &scp->uc_mcontext.mc_esi; + break; case 14: - rv = &scp->uc_mcontext.mc_edi; - break; + rv = &scp->uc_mcontext.mc_edi; + break; default: - rv = NULL; + rv = NULL; } - + /* Pre-cast to (void *), to avoid the compiler warning: * dereferencing type-punned pointer will break strict-aliasing rules */ diff --git a/lisp/alloc.c b/lisp/alloc.c index 1ed0c9a90..ed181d099 100644 --- a/lisp/alloc.c +++ b/lisp/alloc.c @@ -1,5 +1,6 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/alloc.c,v 1.11 2009/01/20 03:58:11 agoncharov Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/alloc.c,v 1.12 2009/06/11 16:04:01 rtoy Rel $ */ +#include <stdio.h> #include <string.h> #include "lisp.h" @@ -113,6 +114,7 @@ alloc_number(long n) } } +#ifndef UNICODE lispobj alloc_string(const char *str) { @@ -122,9 +124,32 @@ alloc_string(const char *str) vec->length = make_fixnum(len); strcpy((char *) vec->data, str); + return result; +} +#else +lispobj +alloc_string(const char *str) +{ + int k; + int len = strlen(str); + lispobj result = alloc_vector(type_SimpleString, len + 1, 16); + struct vector *vec = (struct vector *) PTR(result); + unsigned short int *wide_char_data; + + vec->length = make_fixnum(len); + wide_char_data = (unsigned short int*) vec->data; + for (k = 0; k < len; ++k) { + wide_char_data[k] = str[k] & 0xff; + } +#if 0 + fprintf(stderr, "alloc-string: 0x%lx %d -> `%s'\n", + result, len, str); +#endif + return result; } +#endif lispobj alloc_sap(void *ptr) diff --git a/lisp/backtrace.c b/lisp/backtrace.c index 1dd77c7fa..865ffab25 100644 --- a/lisp/backtrace.c +++ b/lisp/backtrace.c @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/backtrace.c,v 1.16 2009/01/20 03:20:55 agoncharov Exp $ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/backtrace.c,v 1.17 2009/06/11 16:04:01 rtoy Rel $ * * Simple backtrace facility. More or less from Rob's lisp version. */ @@ -214,9 +214,16 @@ backtrace(int nframes) } if (TypeOf(*object) == type_SimpleString) { struct vector *string; - +#ifdef UNICODE + char c_string[1000]; +#endif string = (struct vector *) object; - printf("%s, ", (char *) string->data); +#ifdef UNICODE + convert_lisp_string(c_string, string->data, string->length >> 2); + printf("%s, ", c_string); +#else + printf("%s, ", (char *) string->data); +#endif } else printf("(Not simple string??\?), "); } else @@ -288,22 +295,42 @@ print_entry_name(lispobj name) if (TypeOf(*object) == type_SymbolHeader) { struct symbol *symbol = (struct symbol *) object; struct vector *string; +#ifdef UNICODE + char c_string[1000]; +#endif if (symbol->package != NIL) { struct instance *pkg = (struct instance *) PTR(symbol->package); lispobj pkg_name = pkg->slots[2]; string = (struct vector *) PTR(pkg_name); +#ifndef UNICODE printf("%s::", (char *) string->data); +#else + convert_lisp_string(c_string, string->data, string->length >> 2); + printf("%s:;", c_string); +#endif } object = (lispobj *) PTR(symbol->name); string = (struct vector *) object; +#ifndef UNICODE printf("%s", (char *) string->data); +#else + convert_lisp_string(c_string, string->data, string->length >> 2); + printf("%s:;", c_string); +#endif } else if (TypeOf(*object) == type_SimpleString) { struct vector *string = (struct vector *) object; - +#ifdef UNICODE + char c_string[1000]; +#endif +#ifndef UNICODE printf("\"%s\"", (char *) string->data); +#else + convert_lisp_string(c_string, string->data, string->length >> 2); + printf("\"%s\"", c_string); +#endif } else printf("<??? type %d>", (int) TypeOf(*object)); } else diff --git a/lisp/gencgc.c b/lisp/gencgc.c index 483e29f54..18b7bd16a 100644 --- a/lisp/gencgc.c +++ b/lisp/gencgc.c @@ -7,7 +7,7 @@ * * Douglas Crosher, 1996, 1997, 1998, 1999. * - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gencgc.c,v 1.97 2008/09/16 08:52:31 cshapiro Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gencgc.c,v 1.98 2009/06/11 16:04:01 rtoy Exp $ * */ @@ -1589,76 +1589,174 @@ gc_alloc_large(int nbytes, int unboxed, struct alloc_region *alloc_region) } /* - * Allocate bytes from the boxed_region. It first checks if there is - * room, if not then it calls gc_alloc_new_region to find a new region - * with enough space. A pointer to the start of the region is returned. + * If the current region has more than this much space left, we don't + * want to abandon the region (wasting space), but do a "large" alloc + * to a new region. */ -static void * -gc_alloc(int nbytes) + +int region_empty_threshold = 32; + + +/* + * How many consecutive large alloc we can do before we abandon the + * current region + */ +int consecutive_large_alloc_limit = 10; + + +/* + * This is for debugging. It gets incremented every time we have to + * abandon the current region, because we done too many gc_alloc's in + * the current region without changing the region. + */ +struct alloc_stats { - char *new_free_pointer; + int consecutive_alloc; + int abandon_region_count; + int regions_differ_count; + struct alloc_region saved_region; +}; -#if 0 - fprintf(stderr, "gc_alloc %d\n", nbytes); -#endif +struct alloc_stats boxed_stats = +{0, 0, 0, + {NULL, NULL, -1, -1, NULL}}; + +struct alloc_stats unboxed_stats = +{0, 0, 0, + {NULL, NULL, -1, -1, NULL}}; + +/* + * Try to allocate from the current region. If it's possible, do the + * allocation and return the object. If it's not possible, return + * (void*) -1. + */ +static inline void * +gc_alloc_try_current_region(int nbytes, struct alloc_region *region, int unboxed, + struct alloc_stats *stats) +{ + char *new_free_pointer; /* Check if there is room in the current alloc region. */ - new_free_pointer = boxed_region.free_pointer + nbytes; + new_free_pointer = region->free_pointer + nbytes; - if (new_free_pointer <= boxed_region.end_addr) { + if (new_free_pointer <= region->end_addr) { /* If so then allocate from the current alloc region. */ - char *new_obj = boxed_region.free_pointer; + char *new_obj = region->free_pointer; - boxed_region.free_pointer = new_free_pointer; + region->free_pointer = new_free_pointer; /* Check if the alloc region is almost empty. */ - if (boxed_region.end_addr - boxed_region.free_pointer <= 32) { + if (region->end_addr - region->free_pointer <= 32) { /* If so finished with the current region. */ - gc_alloc_update_page_tables(0, &boxed_region); + gc_alloc_update_page_tables(unboxed, region); /* Setup a new region. */ - gc_alloc_new_region(32, 0, &boxed_region); + gc_alloc_new_region(32, unboxed, region); } + + stats->consecutive_alloc = 0; + memcpy(&stats->saved_region, region, sizeof(stats->saved_region)); + return (void *) new_obj; + } else { + return (void *) -1; + } +} + +/* + * Allocate bytes from a boxed or unboxed region. It first checks if + * there is room, if not then it calls gc_alloc_new_region to find a + * new region with enough space. A pointer to the start of the region + * is returned. The parameter "unboxed" should be 0 (boxed) or 1 + * (unboxed). + */ +static void * +gc_alloc_region(int nbytes, struct alloc_region *region, int unboxed, struct alloc_stats *stats) +{ + void *new_obj; + +#if 0 + fprintf(stderr, "gc_alloc %d\n", nbytes); +#endif + + /* Check if there is room in the current alloc region. */ + + new_obj = gc_alloc_try_current_region(nbytes, region, unboxed, stats); + if (new_obj != (void *) -1) { + return new_obj; } /* Else not enough free space in the current region. */ + /* + * If the allocation is large enough, always do a large alloc This + * helps GC so we don't have to copy this object again. + */ + + if (nbytes >= large_object_size) { + return gc_alloc_large(nbytes, unboxed, region); + } + /* * If there is a bit of room left in the current region then * allocate a large object. */ - if (boxed_region.end_addr - boxed_region.free_pointer > 32) - return gc_alloc_large(nbytes, 0, &boxed_region); + + /* + * This has potentially very bad behavior on sparc if the current + * boxed region is too small for the allocation, but the free + * space is greater than 32 (region_empty_threshold). The + * scenario is where we're always allocating something that won't + * fit in the boxed region, and we keep calling gc_alloc_large. + * Since gc_alloc_large doesn't change the region, the next + * allocation will again be out-of-line and we hit a kernel trap + * again. And so on, so we waste all of our time doing kernel + * traps to allocate small things. This also affects ppc. + * + * X86 has the same issue, but the affect is less because the + * out-of-line allocation is a just a function call, not a kernel + * trap. + * + * Heuristic: If we do too many consecutive large allocations + * because the current region has some space left, we give up and + * abandon the region. This will prevent the bad scenario above + * from killing allocation performance. + * + */ + + if ((region->end_addr - region->free_pointer > region_empty_threshold) + && (stats->consecutive_alloc < consecutive_large_alloc_limit)) { + /* + * Is the saved region the same as the current region? If so, + * update the counter. If not, that means we did some other + * (inline) allocation, so reset the counter and region + */ + if (memcmp(&stats->saved_region, region, sizeof(stats->saved_region)) == 0) { + ++stats->consecutive_alloc; + } else { + stats->consecutive_alloc = 0; + ++stats->regions_differ_count; + memcpy(&stats->saved_region, region, sizeof(stats->saved_region)); + } + + return gc_alloc_large(nbytes, unboxed, region); + } + + stats->consecutive_alloc = 0; + ++stats->abandon_region_count; /* Else find a new region. */ /* Finished with the current region. */ - gc_alloc_update_page_tables(0, &boxed_region); + gc_alloc_update_page_tables(unboxed, region); /* Setup a new region. */ - gc_alloc_new_region(nbytes, 0, &boxed_region); + gc_alloc_new_region(nbytes, unboxed, region); /* Should now be enough room. */ - /* Check if there is room in the current region. */ - new_free_pointer = boxed_region.free_pointer + nbytes; - - if (new_free_pointer <= boxed_region.end_addr) { - /* If so then allocate from the current region. */ - void *new_obj = boxed_region.free_pointer; - - boxed_region.free_pointer = new_free_pointer; - - /* Check if the current region is almost empty. */ - if (boxed_region.end_addr - boxed_region.free_pointer <= 32) { - /* If so find, finished with the current region. */ - gc_alloc_update_page_tables(0, &boxed_region); - - /* Setup a new region. */ - gc_alloc_new_region(32, 0, &boxed_region); - } - - return (void *) new_obj; + new_obj = gc_alloc_try_current_region(nbytes, region, unboxed, stats); + if (new_obj != (void *) -1) { + return new_obj; } /* Shouldn't happen? */ @@ -1666,6 +1764,21 @@ gc_alloc(int nbytes) return 0; } +/* + * Allocate bytes from the boxed_region. It first checks if there is + * room, if not then it calls gc_alloc_new_region to find a new region + * with enough space. A pointer to the start of the region is returned. + */ +static inline void * +gc_alloc(int nbytes) +{ + void* obj; + + obj = gc_alloc_region(nbytes, &boxed_region, 0, &boxed_stats); + + return obj; +} + /* * Allocate space from the boxed_region. If there is not enough free * space then call gc_alloc to do the job. A pointer to the start of @@ -1720,82 +1833,14 @@ gc_quick_alloc_large(int nbytes) return gc_alloc(nbytes); } - - - -static void * +static inline void * gc_alloc_unboxed(int nbytes) { - char *new_free_pointer; + void *obj; -#if 0 - fprintf(stderr, "gc_alloc_unboxed %d\n", nbytes); -#endif - - /* Check if there is room in the current region. */ - new_free_pointer = unboxed_region.free_pointer + nbytes; - - if (new_free_pointer <= unboxed_region.end_addr) { - /* If so then allocate from the current region. */ - void *new_obj = unboxed_region.free_pointer; - - unboxed_region.free_pointer = new_free_pointer; - - /* Check if the current region is almost empty. */ - if ((unboxed_region.end_addr - unboxed_region.free_pointer) <= 32) { - /* If so finished with the current region. */ - gc_alloc_update_page_tables(1, &unboxed_region); - - /* Setup a new region. */ - gc_alloc_new_region(32, 1, &unboxed_region); - } - - return (void *) new_obj; - } - - /* Else not enough free space in the current region. */ + obj = gc_alloc_region(nbytes, &unboxed_region, 1, &unboxed_stats); - /* - * If there is a bit of room left in the current region then - * allocate a large object. - */ - if (unboxed_region.end_addr - unboxed_region.free_pointer > 32) - return gc_alloc_large(nbytes, 1, &unboxed_region); - - /* Else find a new region. */ - - /* Finished with the current region. */ - gc_alloc_update_page_tables(1, &unboxed_region); - - /* Setup a new region. */ - gc_alloc_new_region(nbytes, 1, &unboxed_region); - - /* Should now be enough room. */ - - /* Check if there is room in the current region. */ - new_free_pointer = unboxed_region.free_pointer + nbytes; - - if (new_free_pointer <= unboxed_region.end_addr) { - /* If so then allocate from the current region. */ - void *new_obj = unboxed_region.free_pointer; - - unboxed_region.free_pointer = new_free_pointer; - - /* Check if the current region is almost empty. */ - if ((unboxed_region.end_addr - unboxed_region.free_pointer) <= 32) { - /* If so find, finished with the current region. */ - gc_alloc_update_page_tables(1, &unboxed_region); - - /* Setup a new region. */ - gc_alloc_new_region(32, 1, &unboxed_region); - } - - return (void *) new_obj; - } - - /* Shouldn't happen? */ - gc_assert(0); - return 0; + return obj; } static inline void * @@ -1862,6 +1907,7 @@ static int (*sizetab[256]) (lispobj * where); static struct weak_pointer *weak_pointers; static struct scavenger_hook *scavenger_hooks = (struct scavenger_hook *) NIL; +/* Like (ceiling x y), but y is constrained to be a power of two */ #define CEILING(x,y) (((x) + ((y) - 1)) & (~((y) - 1))) @@ -3590,10 +3636,18 @@ size_string(lispobj * where) vector = (struct vector *) where; length = fixnum_value(vector->length) + 1; +#ifndef UNICODE #ifdef __x86_64 nwords = CEILING(NWORDS(length, 8) + 2, 2); #else nwords = CEILING(NWORDS(length, 4) + 2, 2); +#endif +#else + /* + * Strings are just like arrays with 16-bit elements, and contain + * one more element than the slot length indicates. + */ + nwords = CEILING(NWORDS(length, 2) + 2, 2); #endif return nwords; } diff --git a/lisp/interr.c b/lisp/interr.c index 87f6d5431..9b1f2e706 100644 --- a/lisp/interr.c +++ b/lisp/interr.c @@ -1,5 +1,5 @@ /* - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interr.c,v 1.9 2008/03/15 15:00:06 agoncharov Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interr.c,v 1.10 2009/06/11 16:04:01 rtoy Rel $ * * Stuff to handle internal errors. * @@ -161,10 +161,46 @@ internal_error(os_context_t * context) /* Utility routines used by random pieces of code. */ lispobj -debug_print(lispobj string) +debug_print(lispobj object) { - printf("%s\n", (char *) (((struct vector *) PTR(string))->data)); + +#ifndef UNICODE + printf("%s\n", (char *) (((struct vector *) PTR(object))->data)); fflush(stdout); - +#else + if (Pointerp(object)) { + struct vector *lisp_string = (struct vector*) PTR(object); + + if ((unsigned long) lisp_string->header == type_SimpleString) { + unsigned short int* lisp_chars; + int len; + int k; + + len = lisp_string->length >> 2; + lisp_chars = (unsigned short int*) lisp_string->data; + + for (k = 0; k < len; ++k) { + /* + * Do we really want to dump out 4 bytes? Should we + * just print out the low 8 bits of each Lisp + * character? + */ + putw(*lisp_chars, stdout); + ++lisp_chars; + } + putchar('\n'); + + fflush(stdout); + } else { + print(object); + } + } else { +#if 1 + printf("obj @0x%lx: ", (unsigned long) object); +#endif + print(object); + } +#endif return NIL; } + diff --git a/lisp/os-common.c b/lisp/os-common.c index 4a5493e0d..e872b6efa 100644 --- a/lisp/os-common.c +++ b/lisp/os-common.c @@ -1,6 +1,6 @@ /* - $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/os-common.c,v 1.27 2008/03/19 09:17:13 cshapiro Exp $ + $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/os-common.c,v 1.28 2009/06/11 16:04:01 rtoy Exp $ This code was written as part of the CMU Common Lisp project at Carnegie Mellon University, and has been placed in the public domain. @@ -139,6 +139,27 @@ extern void call_into_c(void); #define LINKAGE_DATA_ENTRY_SIZE 3 #endif +#ifdef UNICODE +/* + * FIXME: + * Unicode hack to convert Lisp 16-bit string to 8-bit string by lopping off the high bits. + */ + +char* +convert_lisp_string(char* c_string, void* lisp_string, int len) +{ + int k; + unsigned short int* wide_string = (unsigned short int*) lisp_string; + + for (k = 0; k < len; ++k) { + c_string[k] = (wide_string[k]) & 0xff; + } + c_string[k] = 0; + + return c_string; +} +#endif + void os_foreign_linkage_init(void) { @@ -154,36 +175,42 @@ os_foreign_linkage_init(void) data_vector = (struct vector *) PTR(linkage_data->data); for (i = 0; i < table_size; i += LINKAGE_DATA_ENTRY_SIZE) { struct vector *symbol_name - = (struct vector *) PTR(data_vector->data[i]); long type = fixnum_value(data_vector->data[i + 1]); lispobj lib_list = data_vector->data[i + 2]; - +#ifdef UNICODE + /* FIXME: 1000 may not be long enough. Add checks to make sure it's ok!!!!*/ + char c_symbol_name[1000]; /* * Verify the "known" entries. This had better match what * init-foreign-linkage in new-genesis does! */ + + convert_lisp_string(c_symbol_name, symbol_name->data, (symbol_name->length >> 2)); +#else +#define c_symbol_name ((char*) symbol_name->data) +#endif if (i == 0) { #if defined(sparc) - if (type != 1 || strcmp((char *) symbol_name->data, "call_into_c")) { + if (type != 1 || strcmp(c_symbol_name, "call_into_c")) { fprintf(stderr, "linkage_data is %s but expected call_into_c\n", (char *) symbol_name->data); lose("First element of linkage_data is bogus.\n"); } arch_make_linkage_entry(i, (void*) call_into_c, 1); #elif (defined(DARWIN) && defined(__ppc__)) - if (type != 1 || strcmp((char *) symbol_name->data, "_call_into_c")) { + if (type != 1 || strcmp(c_symbol_name, "_call_into_c")) { fprintf(stderr, "linkage_data is %s but expected call_into_c\n", - (char *) symbol_name->data); + (char *) c_symbol_name); lose("First element of linkage_data is bogus.\n"); } arch_make_linkage_entry(i, &call_into_c, 1); #else - if (type != 1 || strcmp((char *) symbol_name->data, + if (type != 1 || strcmp(c_symbol_name, "resolve_linkage_tramp")) { fprintf(stderr, "linkage_data is %s but expected resolve_linkage_tramp\n", - (char *) symbol_name->data); + (char *) c_symbol_name); lose("First element of linkage_data is bogus.\n"); } arch_make_linkage_entry(i, &resolve_linkage_tramp, 1); @@ -191,10 +218,10 @@ os_foreign_linkage_init(void) continue; } if (type == 2 && lib_list == NIL) { - void *target_addr = os_dlsym((char *) symbol_name->data, NIL); + void *target_addr = os_dlsym(c_symbol_name, NIL); if (!target_addr) { - lose("%s is not defined.\n", (char *) symbol_name->data); + lose("%s is not defined.\n", c_symbol_name); } arch_make_linkage_entry(i / LINKAGE_DATA_ENTRY_SIZE, target_addr, type); @@ -225,16 +252,19 @@ os_resolve_data_linkage(void) data_vector = (struct vector *) PTR(linkage_data->data); for (i = 0; i < table_size; i += LINKAGE_DATA_ENTRY_SIZE) { struct vector *symbol_name - = (struct vector *) PTR(data_vector->data[i]); long type = fixnum_value(data_vector->data[i + 1]); lispobj lib_list = data_vector->data[i + 2]; +#ifdef UNICODE + char c_symbol_name[1000]; + convert_lisp_string(c_symbol_name, symbol_name->data, (symbol_name->length >> 2)); +#endif if (type == 2 && lib_list != NIL) { - void *target_addr = os_dlsym((char *) symbol_name->data, lib_list); + void *target_addr = os_dlsym(c_symbol_name, lib_list); if (!target_addr) { - lose("%s is not defined.\n", (char *) symbol_name->data); + lose("%s is not defined.\n", c_symbol_name); } arch_make_linkage_entry(i / LINKAGE_DATA_ENTRY_SIZE, target_addr, type); @@ -261,6 +291,9 @@ os_link_one_symbol(long entry) long type; void *target_addr; long table_index = entry * LINKAGE_DATA_ENTRY_SIZE; +#ifdef UNICODE + char c_symbol_name[1000]; +#endif linkage_data = (struct array *) PTR(linkage_data_obj); table_size = fixnum_value(linkage_data->fill_pointer); @@ -270,12 +303,17 @@ os_link_one_symbol(long entry) data_vector = (struct vector *) PTR(linkage_data->data); symbol_name = (struct vector *) PTR(data_vector->data[table_index]); type = fixnum_value(data_vector->data[table_index + 1]); - target_addr = os_dlsym((char *) symbol_name->data, + +#ifdef UNICODE + convert_lisp_string(c_symbol_name, symbol_name->data, (symbol_name->length >> 2)); +#endif + + target_addr = os_dlsym(c_symbol_name, data_vector->data[table_index + 2]); #if 0 fprintf(stderr, "Looked up %s symbol %s at %lx\n", type == 1 ? "code" : "data", - (char *) symbol_name->data, (unsigned long) target_addr); + c_symbol_name, (unsigned long) target_addr); #endif if (!target_addr) { undefined_foreign_symbol_trap((lispobj) data_vector->data[table_index]); diff --git a/lisp/print.c b/lisp/print.c index c81c80623..0b8bac72b 100644 --- a/lisp/print.c +++ b/lisp/print.c @@ -1,4 +1,4 @@ -/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/print.c,v 1.24 2009/04/08 16:27:20 rtoy Exp $ */ +/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/print.c,v 1.25 2009/06/11 16:04:01 rtoy Rel $ */ #include <stdio.h> #include <string.h> @@ -386,11 +386,23 @@ brief_otherptr(lispobj obj) case type_SimpleString: vector = (struct vector *) ptr; putchar('"'); +#ifndef UNICODE for (charptr = (char *) vector->data; *charptr != '\0'; charptr++) { if (*charptr == '"') putchar('\\'); putchar(*charptr); } +#else + /* FIXME: Unicode hack! */ + { + int len = (((struct vector *) ptr)->length) >> 2; + unsigned short int *wcharptr = (unsigned short int *) vector->data; + + while (len-- > 0) { + putw(*wcharptr++, stdout); + } + } +#endif putchar('"'); break; @@ -595,8 +607,13 @@ print_otherptr(lispobj obj) NEWLINE; cptr = (char *) (ptr + 1); putchar('\"'); - while (length-- > 0) + while (length-- > 0) { putchar(*cptr++); +#ifdef UNICODE + /* FIXME: Unicode Hack! */ + putchar(*cptr++); +#endif + } putchar('\"'); break; diff --git a/lisp/purify.c b/lisp/purify.c index 64a70f1c4..fe5789202 100644 --- a/lisp/purify.c +++ b/lisp/purify.c @@ -10,7 +10,7 @@ and x86/GENCGC stack scavenging, by Douglas Crosher, 1996, 1997, 1998. - $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/purify.c,v 1.42 2008/03/21 09:36:42 cshapiro Exp $ + $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/purify.c,v 1.43 2009/06/11 16:04:01 rtoy Rel $ */ #include <stdio.h> @@ -1089,8 +1089,11 @@ ptrans_otherptr(lispobj thing, lispobj header, boolean constant) return ptrans_boxed(thing, header, FALSE); case type_SimpleString: +#ifndef UNICODE return ptrans_vector(thing, 8, 1, FALSE, constant); - +#else + return ptrans_vector(thing, 16, 1, FALSE, constant); +#endif case type_SimpleBitVector: return ptrans_vector(thing, 1, 0, FALSE, constant); @@ -1361,8 +1364,13 @@ pscav(lispobj * addr, int nwords, boolean constant) 2); #else count = +#ifndef UNICODE CEILING(NWORDS(fixnum_value(vector->length) + 1, 4) + 2, 2); +#else + CEILING(NWORDS(fixnum_value(vector->length) + 1, 2) + 2, + 2); +#endif #endif break; diff --git a/motif/lisp/callbacks.lisp b/motif/lisp/callbacks.lisp index 3a0a27f2a..97df4cd5d 100644 --- a/motif/lisp/callbacks.lisp +++ b/motif/lisp/callbacks.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/motif/lisp/callbacks.lisp,v 1.5 2003/04/11 12:09:10 pmai Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/motif/lisp/callbacks.lisp,v 1.6 2009/06/11 16:04:01 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -197,7 +197,7 @@ ;;; When the server begins processing a callback, it will dump the callback ;;; data into the message in slot order. The client will unpack the data ;;; and create a callback structure which will be passed to the Lisp -;;; callback as the call-data. It reason field, possibly together with the +;;; callback as the call-data. The reason field, possibly together with the ;;; widget class, will be enough to determine what callback structure is ;;; appropriate. The event slot is the (XEvent *) received in C. If the ;;; client wants access to the event, there will be some sort of macro such diff --git a/motif/lisp/conversion.lisp b/motif/lisp/conversion.lisp index c00c834bf..d81344e23 100644 --- a/motif/lisp/conversion.lisp +++ b/motif/lisp/conversion.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/motif/lisp/conversion.lisp,v 1.5 2000/02/15 11:59:24 pw Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/motif/lisp/conversion.lisp,v 1.6 2009/06/11 16:04:01 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -143,6 +143,7 @@ (defun packet-write-string (packet string start length) (declare (simple-string string) (fixnum start length)) + #-unicode (kernel:copy-to-system-area string (+ (the fixnum (* start vm:byte-bits)) (the fixnum @@ -150,12 +151,24 @@ (packet-head packet) (* (packet-fill packet) vm:byte-bits) (* length vm:byte-bits)) + #+unicode + ;;@@ For now, just copy low octet of each char. What should this do? + (let ((head (packet-head packet)) + (fill (packet-fill packet))) + ;; The length passed in is one more than the length of the string. + ;; (Why?) Perhaps the correct solution is to make the caller use + ;; the correct length? + (dotimes (i (1- length)) + (setf (lisp:bref head (1- (incf fill))) + (logand #xFF (char-code (schar string (+ i start)))))) + (setf (lisp::bref head (1- (incf fill))) 0)) (incf (packet-fill packet) length) (incf (packet-length packet) length)) (defun packet-read-string (packet string start length) (declare (simple-string string) (fixnum start length)) + #-unicode (kernel:copy-from-system-area (packet-head packet) (* (packet-fill packet) vm:byte-bits) string @@ -163,6 +176,16 @@ (the fixnum (* vm:vector-data-offset vm:word-bits))) (* length vm:byte-bits)) + #+unicode + ;;@@ For now, directly convert each octet. What should this do? + (let ((head (packet-head packet)) + (fill (packet-fill packet))) + ;; The length passed in is one more than the length of the string. + ;; (Why?) Perhaps the correct solution is to make the caller use + ;; the correct length? + (dotimes (i (1- length)) + (setf (schar string (+ i start)) + (code-char (lisp:bref head (1- (incf fill))))))) (incf (packet-fill packet) length)) (defun message-read-string (message length) diff --git a/motif/lisp/interface-glue.lisp b/motif/lisp/interface-glue.lisp index 94ff95165..74dd576b7 100644 --- a/motif/lisp/interface-glue.lisp +++ b/motif/lisp/interface-glue.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/motif/lisp/interface-glue.lisp,v 1.5 1998/01/07 12:18:58 pw Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/motif/lisp/interface-glue.lisp,v 1.6 2009/06/11 16:04:01 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -212,7 +212,7 @@ (progn ,@forms) (xlib:display-force-output *x-display*))) -;;; This is the functions which listens for input from the server and calls +;;; This is the function which listens for input from the server and calls ;;; the dispatcher when it detects incoming data. (defun toolkit-handler (connection) (unless (motif-connection-terminated connection) diff --git a/pcl/simple-streams/classes.lisp b/pcl/simple-streams/classes.lisp index eab4b67f9..3b637d8bd 100644 --- a/pcl/simple-streams/classes.lisp +++ b/pcl/simple-streams/classes.lisp @@ -5,7 +5,7 @@ ;;; domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/classes.lisp,v 1.6 2007/11/05 15:25:04 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/classes.lisp,v 1.7 2009/06/11 16:04:01 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -103,6 +103,25 @@ ;;;; Generic function definitions +(fmakunbound '(setf stream-external-format)) + +(defmethod (setf stream-external-format) (extfmt (stream sys:fd-stream)) + (setf (lisp::fd-stream-external-format stream) + (if (eq extfmt :default) + :default + (ef-name (find-external-format extfmt))) + (lisp::fd-stream-oc-state stream) nil + (lisp::fd-stream-co-state stream) nil) + extfmt) + +(defmethod (setf stream-external-format) (extfmt (stream synonym-stream)) + (setf (stream-external-format (symbol-value (synonym-stream-symbol stream))) + extfmt)) + +(defmethod (setf stream-external-format) (extfmt (stream sys:lisp-stream)) + (error "Don't know how to set external-format for ~S." stream)) + + (defgeneric device-open (stream options) (:documentation "Write me")) diff --git a/pcl/simple-streams/external-formats/aliases b/pcl/simple-streams/external-formats/aliases index 44dba931b..cd4bc7970 100644 --- a/pcl/simple-streams/external-formats/aliases +++ b/pcl/simple-streams/external-formats/aliases @@ -1,37 +1,53 @@ +;; -*- Mode: Lisp -*- +;; +;; List of aliases for external formats. +;; The first column is the alias; the second is the implementation name +;; null void latin1 iso8859-1 latin-1 iso8859-1 iso-8859-1 iso8859-1 + latin2 iso8859-2 latin-2 iso8859-2 iso-8859-2 iso8859-2 + latin3 iso8859-3 latin-3 iso8859-3 iso-8859-3 iso8859-3 + latin4 iso8859-4 latin-4 iso8859-4 iso-8859-4 iso8859-4 + cyrillic iso8859-5 iso-8859-5 iso8859-5 arabic iso8859-6 iso-8859-6 iso8859-6 + greek iso8859-7 iso-8859-7 iso8859-7 + hebrew iso8859-8 iso-8859-8 iso8859-8 + latin5 iso8859-9 latin-5 iso8859-9 iso-8859-9 iso8859-9 + latin6 iso8859-10 latin-6 iso8859-10 iso-8859-10 iso8859-10 + latin7 iso8859-13 latin-7 iso8859-13 iso-8859-13 iso8859-13 + latin8 iso8859-14 latin-8 iso8859-14 iso-8859-14 iso8859-14 + latin9 iso8859-15 latin-9 iso8859-15 iso-8859-15 iso8859-15 @@ -39,21 +55,40 @@ iso-8859-15 iso8859-15 utf utf-8 utf8 utf-8 -utf16 utf-16-be -utf-16 utf-16-be -utf32 ucs-4 -ucs2 ucs-2 -ucs4 ucs-4 +;; UTF-16 will recognize a BOM at the beginning of the file and will +;; output the BOM. (UTF-16 output is always big-endian.) UTF-16BE +;; and UTF-16LE do not recognize the BOM will not output the BOM. +;; This is what Unicode standard says for UTF-16 formats. +utf16 utf-16 +utf-16be utf-16-be +utf16-be utf-16-be +utf-16le utf-16-le +utf16-le utf-16-le + +;; Like UTF-16, UTF-32 recognizes the BOM and outputs the BOM. UTF-32 +;; output is always big-endian. UTF-32BE and UTF-32LE neither +;; recognizes the BOM on input nor write the BOM on output. +utf32 utf-32 +utf32-be utf-32-be +utf-32be utf-32-be +utf32-le utf-32-le +utf-32le utf-32-le + +;;ucs2 ucs-2 +;;ucs4 ucs-4 windows-1252 cp1252 windows-cp1252 cp1252 windows-latin1 cp1252 -iso-2022-jp iso2022-jp -iso2022jp iso2022-jp -jis7 iso2022-jp -ujis euc-jp -eucjp euc-jp - +;; These are not yet implemented +;;iso-2022-jp iso2022-jp +;;iso2022jp iso2022-jp +;;jis7 iso2022-jp +;;ujis euc-jp +;;eucjp euc-jp +;; This is a composing format for converting DOS end-of-line +;; characters to Lisp #\newline character. On output, #\newline is +;; converted to CR LF sequence. dos crlf diff --git a/pcl/simple-streams/external-formats/beta-gk.lisp b/pcl/simple-streams/external-formats/beta-gk.lisp new file mode 100644 index 000000000..f16dff267 --- /dev/null +++ b/pcl/simple-streams/external-formats/beta-gk.lisp @@ -0,0 +1,235 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/beta-gk.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +;; This is a composing format that translates (lower-case) Beta code +;; (an ASCII encoding of ancient Greek) into Unicode Greek. + +(defvar *betamap* + '((109 956) + ((102 966) + ((98 946) + ((58 183) + ((42 42 (108 923) + ((100 916) + ((92 8175 (105 8154) ((101 8136) ((97 8122)) ((104 8138))) + ((117 8170) ((111 8184)) ((119 8186)))) + ((41 8127 (101 7960) + ((92 8141 (105 7994) + ((101 7962) ((97 7946 (124 8074))) ((104 7978 (124 8090)))) + ((119 8042 (124 8106)) ((111 8010)) NIL)) + ((61 8143 (105 7998) + ((104 7982 (124 8094)) ((97 7950 (124 8078))) NIL) + ((119 8046 (124 8110)))) + ((47 8142 (105 7996) + ((101 7964) ((97 7948 (124 8076))) ((104 7980 (124 8092)))) + ((119 8044 (124 8108)) ((111 8012)) NIL))) + NIL) + ((97 7944 (124 8072)))) + ((111 8008) ((105 7992) ((104 7976 (124 8088))) NIL) + ((119 8040 (124 8104))))) + ((40 8190 (104 7977 (124 8089)) + ((92 8157 (105 7995) + ((101 7963) ((97 7947 (124 8075))) ((104 7979 (124 8091)))) + ((117 8027) ((111 8011)) ((119 8043 (124 8107))))) + ((61 8159 (105 7999) + ((104 7983 (124 8095)) ((97 7951 (124 8079))) NIL) + ((119 8047 (124 8110)) ((117 8031)) NIL)) + ((47 8158 (105 7997) + ((101 7965) ((97 7949 (124 8077))) ((104 7981 (124 8093)))) + ((117 8029) ((111 8013)) ((119 8045 (124 8109)))))) + NIL) + ((101 7961) ((97 7945 (124 8073))) NIL)) + ((114 8172) ((111 8009) ((105 7993)) NIL) + ((119 8041 (124 8105)) ((117 8025)) NIL)))) + ((47 8189 (105 8155) ((101 8137) ((97 8123)) ((104 8139))) + ((117 8171) ((111 8185)) ((119 8187)))))) + ((98 914) ((97 913 (124 8124))) ((99 926)))) + ((104 919 (124 8140)) ((102 934) ((101 917)) ((103 915))) + ((107 922) ((105 921 (43 938))) NIL))) + ((116 932) + ((112 928) ((110 925) ((109 924)) ((111 927))) + ((114 929) ((113 920)) ((115 931)))) + ((120 935) ((118 988) ((117 933 (43 939))) ((119 937 (124 8188)))) + ((122 918) ((121 936)) NIL))))) + ((97 945 (61 8118 (124 8119)) + ((41 7936 (92 7938 (124 8066)) + ((61 7942 (124 8070)) ((47 7940 (124 8068))) NIL) ((124 8064))) + ((40 7937 (92 7939 (124 8067)) + ((61 7943 (124 8071)) ((47 7941 (124 8069))) NIL) ((124 8065)))) + ((47 8049 (124 8116)))) + ((124 8115) ((92 8048 (124 8114))) NIL)))) + ((100 948) ((99 958)) + ((101 949 (47 8051) + ((41 7952 (92 7954) ((47 7956)) NIL) + ((40 7953 (92 7955) ((47 7957)) NIL)) NIL) + ((92 8050)))))) + ((106 962) + ((104 951 (61 8134 (124 8135)) + ((41 7968 (92 7970 (124 8082)) + ((61 7974 (124 8086)) ((47 7972 (124 8084))) NIL) ((124 8080))) + ((40 7969 (92 7971 (124 8083)) + ((61 7975 (124 8087)) ((47 7973 (124 8085))) NIL) ((124 8081)))) + ((47 8053 (124 8132)))) + ((124 8131) ((92 8052 (124 8130))) NIL)) + ((103 947)) + ((105 953 (47 8055 (43 8147)) + ((41 7984 (61 7990) ((47 7988)) ((92 7986))) + ((40 7985 (61 7991) ((47 7989)) ((92 7987)))) ((43 970))) + ((92 8054 (43 8146)) ((61 8150 (43 8151))) NIL)))) + ((108 955) ((107 954)) NIL))) + ((116 964) + ((113 952) + ((111 959 (47 8057) + ((41 8000 (92 8002) ((47 8004)) NIL) + ((40 8001 (92 8003) ((47 8005)) NIL)) NIL) + ((92 8056))) + ((110 957)) ((112 960))) + ((115 963) ((114 961 (41 8164) ((40 8165)) NIL)) NIL)) + ((120 967) + ((118 989) + ((117 965 (47 8059 (43 8163)) + ((41 8016 (61 8022) ((47 8020)) ((92 8018))) + ((40 8017 (61 8023) ((47 8021)) ((92 8019)))) ((43 971))) + ((92 8058 (43 8162)) ((61 8166 (43 8167))) NIL))) + ((119 969 (61 8182 (124 8183)) + ((41 8032 (92 8034 (124 8098)) + ((61 8038 (124 8102)) ((47 8036 (124 8100))) NIL) ((124 8096))) + ((40 8033 (92 8035 (124 8099)) + ((61 8039 (124 8103)) ((47 8037 (124 8101))) NIL) ((124 8097)))) + ((47 8061 (124 8180)))) + ((124 8179) ((92 8060 (124 8178))) NIL)))) + ((122 950) ((121 968)) NIL))))) + +(defvar *betamap-rev* + '(((8064 . 47) + . #(#(97 41 124) #(97 40 124) #(97 41 92 124) #(97 40 92 124) + #(97 41 47 124) #(97 40 47 124) #(97 41 61 124) #(97 40 61 124) + #(42 41 97 124) #(42 40 97 124) #(42 41 92 97 124) #(42 40 92 97 124) + #(42 41 47 97 124) #(42 40 47 97 124) #(42 41 61 97 124) + #(42 40 61 97 124) #(104 41 124) #(104 40 124) #(104 41 92 124) + #(104 40 92 124) #(104 41 47 124) #(104 40 47 124) #(104 41 61 124) + #(104 40 61 124) #(42 41 104 124) #(42 40 104 124) #(42 41 92 104 124) + #(42 40 92 104 124) #(42 41 47 104 124) #(42 40 47 104 124) + #(42 41 61 104 124) #(42 40 61 104 124) #(119 41 124) #(119 40 124) + #(119 41 92 124) #(119 40 92 124) #(119 41 47 124) #(119 40 47 124) + #(119 41 61 124) #(119 40 61 124) #(42 41 119 124) #(42 40 119 124) + #(42 41 92 119 124) #(42 40 92 119 124) #(42 41 47 119 124) + #(42 40 47 119 124) #(42 40 61 119 124))) + (((7936 . 22) + . #(#(97 41) #(97 40) #(97 41 92) #(97 40 92) #(97 41 47) #(97 40 47) + #(97 41 61) #(97 40 61) #(42 41 97) #(42 40 97) #(42 41 92 97) + #(42 40 92 97) #(42 41 47 97) #(42 40 47 97) #(42 41 61 97) + #(42 40 61 97) #(101 41) #(101 40) #(101 41 92) #(101 40 92) + #(101 41 47) #(101 40 47))) + (((945 . 27) + . #(#(97) #(98) #(103) #(100) #(101) #(122) #(104) #(113) #(105) #(107) + #(108) #(109) #(110) #(99) #(111) #(112) #(114) #(106) #(115) #(116) + #(117) #(102) #(120) #(121) #(119) #(105 43) #(117 43))) + (((913 . 27) + . #(#(42 97) #(42 98) #(42 103) #(42 100) #(42 101) #(42 122) #(42 104) + #(42 113) #(42 105) #(42 107) #(42 108) #(42 109) #(42 110) + #(42 99) #(42 111) #(42 112) #(42 114) NIL #(42 115) #(42 116) + #(42 117) #(42 102) #(42 120) #(42 121) #(42 119) #(42 105 43) + #(42 117 43))) + ((183 . #(58))) NIL) + (((988 . 2) . #(#(42 118) #(118))))) + (((8008 . 6) + . #(#(42 41 111) #(42 40 111) #(42 41 92 111) #(42 40 92 111) + #(42 41 47 111) #(42 40 47 111))) + (((7968 . 38) + . #(#(104 41) #(104 40) #(104 41 92) #(104 40 92) #(104 41 47) + #(104 40 47) #(104 41 61) #(104 40 61) #(42 41 104) #(42 40 104) + #(42 41 92 104) #(42 40 92 104) #(42 41 47 104) #(42 40 47 104) + #(42 41 61 104) #(42 40 61 104) #(105 41) #(105 40) #(105 41 92) + #(105 40 92) #(105 41 47) #(105 40 47) #(105 41 61) #(105 40 61) + #(42 41 105) #(42 40 105) #(42 41 92 105) #(42 40 92 105) + #(42 41 47 105) #(42 40 47 105) #(42 41 61 105) #(42 40 61 105) + #(111 41) #(111 40) #(111 41 92) #(111 40 92) #(111 41 47) + #(111 40 47))) + (((7960 . 6) + . #(#(42 41 101) #(42 40 101) #(42 41 92 101) #(42 40 92 101) + #(42 41 47 101) #(42 40 47 101)))) + NIL) + (((8016 . 46) + . #(#(117 41) #(117 40) #(117 41 92) #(117 40 92) #(117 41 47) + #(117 40 47) #(117 41 61) #(117 40 61) NIL #(42 40 117) NIL + #(42 40 92 117) NIL #(42 40 47 117) NIL #(42 40 61 117) #(119 41) + #(119 40) #(119 41 92) #(119 40 92) #(119 41 47) #(119 40 47) + #(119 41 61) #(119 40 61) #(42 41 119) #(42 40 119) #(42 41 92 119) + #(42 40 92 119) #(42 41 47 119) #(42 40 47 119) #(42 41 61 119) + #(42 40 61 119) #(97 92) #(97 47) #(101 92) #(101 47) #(104 92) + #(104 47) #(105 92) #(105 47) #(111 92) #(111 47) #(117 92) + #(117 47) #(119 92) #(119 47)))))) + (((8150 . 2) . #(#(105 61) #(105 61 43))) + ((8127 . #(42 41)) + (((8122 . 3) . #(#(42 92 97) #(42 47 97) #(42 97 124))) + (((8113 . 7) + . #(#(97 95) #(97 92 124) #(97 124) #(97 47 124) NIL #(97 61) + #(97 61 124)))) + NIL) + (((8130 . 18) + . #(#(104 92 124) #(104 124) #(104 47 124) NIL #(104 61) #(104 61 124) + #(42 92 101) #(42 47 101) #(42 92 104) #(42 47 104) #(42 104 124) + #(42 41 92) #(42 41 47) #(42 41 61) NIL #(105 95) #(105 92 43) + #(105 47 43))))) + ((8175 . #(42 92)) + (((8170 . 3) . #(#(42 92 117) #(42 47 117) #(42 40 114))) + (((8154 . 14) + . #(#(42 92 105) #(42 47 105) NIL #(42 40 92) #(42 40 47) #(42 40 61) + NIL #(117 95) #(117 92 43) #(117 47 43) #(114 41) #(114 40) + #(117 61) #(117 61 43)))) + NIL) + (((8178 . 13) + . #(#(119 92 124) #(119 124) #(119 47 124) NIL #(119 61) #(119 61 124) + #(42 92 111) #(42 47 111) #(42 92 119) #(42 47 119) #(42 119 124) + #(42 47) #(42 40)))))))) + + +(define-composing-external-format :beta-gk (:min 1 :max 6) ; 6?? + (input (state input unput ch wd ent nch nwd nent) + `(flet ((lookup (c map) + (loop while map do + ;; should work on upper case too + (cond ((< c (caar map)) (setq map (cadr map))) + ((> c (caar map)) (setq map (caddr map))) + (t (return (car map))))))) + (multiple-value-bind (,ch ,wd) ,input + (let ((,ent (and ,ch (lookup ,ch *betamap*)))) + (if (null ,ent) + (values ,ch ,wd) + (loop + (unless (cddr ,ent) (return (values (cadr ,ent) ,wd))) + (multiple-value-bind (,nch ,nwd) ,input + (if (null ,nch) + (return (values (cadr ,ent) ,wd)) + (let ((,nent (lookup ,nch (cddr ,ent)))) + (if (null ,nent) + (progn (,unput ,nwd) + (return (values (cadr ,ent) ,wd))) + (setq ,wd (+ ,wd ,nwd) + ,ch ,nch + ,ent ,nent))))))))))) + (output (code state output tmp rev) + `(let ((,rev *betamap-rev*) + (,tmp nil)) + (loop while ,rev do + (if (consp (caar ,rev)) + (cond ((< ,code (caaar ,rev)) (setq ,rev (cadr ,rev))) + ((>= ,code (+ (caaar ,rev) (cdaar ,rev))) + (setq ,rev (caddr ,rev))) + (t + (setq ,tmp (aref (cdar ,rev) (- ,code (caaar ,rev)))) + (return))) + (cond ((< ,code (caar ,rev)) (setq ,rev (cadr ,rev))) + ((> ,code (caar ,rev)) (setq ,rev (caddr ,rev))) + (t + (setq ,tmp (cdar ,rev)) + (return))))) + (if ,tmp + (ext:dovector (tmp3 ,tmp) (,output tmp3)) + (,output (if (> ,code 255) #x3F ,code)))))) diff --git a/pcl/simple-streams/external-formats/cp1250.lisp b/pcl/simple-streams/external-formats/cp1250.lisp new file mode 100644 index 000000000..d7ab822dd --- /dev/null +++ b/pcl/simple-streams/external-formats/cp1250.lisp @@ -0,0 +1,26 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/cp1250.lisp,v 1.2 2009/06/11 16:04:02 rtoy Exp $") + +(in-package "STREAM") + +(defconstant +ms-cp1250+ + (make-array 128 :element-type '(unsigned-byte 16) + :initial-contents #(8364 65534 8218 65534 8222 8230 8224 8225 65534 8240 + 352 8249 346 356 381 377 65534 8216 8217 8220 8221 + 8226 8211 8212 65534 8482 353 8250 347 357 382 378 160 + 711 728 321 164 260 166 167 168 169 350 171 172 173 + 174 379 176 177 731 322 180 181 182 183 184 261 351 + 187 317 733 318 380 340 193 194 258 196 313 262 199 + 268 201 280 203 282 205 206 270 272 323 327 211 212 + 336 214 215 344 366 218 368 220 221 354 223 341 225 + 226 259 228 314 263 231 269 233 281 235 283 237 238 + 271 273 324 328 243 244 337 246 247 345 367 250 369 + 252 253 355 729))) + +(define-external-format :cp1250 (:mac-roman) + ((table +ms-cp1250+))) diff --git a/pcl/simple-streams/external-formats/cp1251.lisp b/pcl/simple-streams/external-formats/cp1251.lisp new file mode 100644 index 000000000..7182c181f --- /dev/null +++ b/pcl/simple-streams/external-formats/cp1251.lisp @@ -0,0 +1,27 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/cp1251.lisp,v 1.2 2009/06/11 16:04:02 rtoy Exp $") + +(in-package "STREAM") + +(defconstant +ms-cp1251+ + (make-array 128 :element-type '(unsigned-byte 16) + :initial-contents #(1026 1027 8218 1107 8222 8230 8224 8225 8364 8240 1033 + 8249 1034 1036 1035 1039 1106 8216 8217 8220 8221 8226 + 8211 8212 65534 8482 1113 8250 1114 1116 1115 1119 160 + 1038 1118 1032 164 1168 166 167 1025 169 1028 171 172 + 173 174 1031 176 177 1030 1110 1169 181 182 183 1105 + 8470 1108 187 1112 1029 1109 1111 1040 1041 1042 1043 + 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 + 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 + 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 + 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 + 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 + 1099 1100 1101 1102 1103))) + +(define-external-format :cp1251 (:mac-roman) + ((table +ms-cp1251+))) diff --git a/pcl/simple-streams/external-formats/cp1252.lisp b/pcl/simple-streams/external-formats/cp1252.lisp new file mode 100644 index 000000000..a604de0cd --- /dev/null +++ b/pcl/simple-streams/external-formats/cp1252.lisp @@ -0,0 +1,26 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/cp1252.lisp,v 1.2 2009/06/11 16:04:02 rtoy Exp $") + +(in-package "STREAM") + +(defconstant +ms-cp1252+ + (make-array 128 :element-type '(unsigned-byte 16) + :initial-contents #(8364 65534 8218 402 8222 8230 8224 8225 710 8240 352 + 8249 338 65534 381 65534 65534 8216 8217 8220 8221 + 8226 8211 8212 732 8482 353 8250 339 65534 382 376 160 + 161 162 163 164 165 166 167 168 169 170 171 172 173 + 174 175 176 177 178 179 180 181 182 183 184 185 186 + 187 188 189 190 191 192 193 194 195 196 197 198 199 + 200 201 202 203 204 205 206 207 208 209 210 211 212 + 213 214 215 216 217 218 219 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))) + +(define-external-format :cp1252 (:mac-roman) + ((table +ms-cp1252+))) diff --git a/pcl/simple-streams/external-formats/cp1253.lisp b/pcl/simple-streams/external-formats/cp1253.lisp new file mode 100644 index 000000000..fc32d7c69 --- /dev/null +++ b/pcl/simple-streams/external-formats/cp1253.lisp @@ -0,0 +1,12 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/cp1253.lisp,v 1.2 2009/06/11 16:04:02 rtoy Exp $") + +(in-package "STREAM") + +(define-external-format :cp1253 (:mac-roman) + ((table +ms-cp1253+))) diff --git a/pcl/simple-streams/external-formats/cp1254.lisp b/pcl/simple-streams/external-formats/cp1254.lisp new file mode 100644 index 000000000..18ae5a97a --- /dev/null +++ b/pcl/simple-streams/external-formats/cp1254.lisp @@ -0,0 +1,26 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/cp1254.lisp,v 1.2 2009/06/11 16:04:02 rtoy Exp $") + +(in-package "STREAM") + +(defconstant +ms-cp1254+ + (make-array 128 :element-type '(unsigned-byte 16) + :initial-contents #(8364 65534 8218 402 8222 8230 8224 8225 710 8240 352 + 8249 338 65534 65534 65534 65534 8216 8217 8220 8221 + 8226 8211 8212 732 8482 353 8250 339 65534 65534 376 + 160 161 162 163 164 165 166 167 168 169 170 171 172 + 173 174 175 176 177 178 179 180 181 182 183 184 185 + 186 187 188 189 190 191 192 193 194 195 196 197 198 + 199 200 201 202 203 204 205 206 207 286 209 210 211 + 212 213 214 215 216 217 218 219 220 304 350 223 224 + 225 226 227 228 229 230 231 232 233 234 235 236 237 + 238 239 287 241 242 243 244 245 246 247 248 249 250 + 251 252 305 351 255))) + +(define-external-format :cp1254 (:mac-roman) + ((table +ms-cp1254+))) diff --git a/pcl/simple-streams/external-formats/cp1255.lisp b/pcl/simple-streams/external-formats/cp1255.lisp new file mode 100644 index 000000000..5926b6ec7 --- /dev/null +++ b/pcl/simple-streams/external-formats/cp1255.lisp @@ -0,0 +1,27 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/cp1255.lisp,v 1.2 2009/06/11 16:04:02 rtoy Exp $") + +(in-package "STREAM") + +(defconstant +ms-cp1255+ + (make-array 128 :element-type '(unsigned-byte 16) + :initial-contents #(8364 65534 8218 402 8222 8230 8224 8225 710 8240 65534 + 8249 65534 65534 65534 65534 65534 8216 8217 8220 8221 + 8226 8211 8212 732 8482 65534 8250 65534 65534 65534 + 65534 160 161 162 163 8362 165 166 167 168 169 215 171 + 172 173 174 175 176 177 178 179 180 181 182 183 184 + 185 247 187 188 189 190 191 1456 1457 1458 1459 1460 + 1461 1462 1463 1464 1465 65534 1467 1468 1469 1470 + 1471 1472 1473 1474 1475 1520 1521 1522 1523 1524 + 65534 65534 65534 65534 65534 65534 65534 1488 1489 + 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 + 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 + 1512 1513 1514 65534 65534 8206 8207 65534))) + +(define-external-format :cp1255 (:mac-roman) + ((table +ms-cp1255+))) diff --git a/pcl/simple-streams/external-formats/cp1256.lisp b/pcl/simple-streams/external-formats/cp1256.lisp new file mode 100644 index 000000000..f3fbc8d4a --- /dev/null +++ b/pcl/simple-streams/external-formats/cp1256.lisp @@ -0,0 +1,27 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/cp1256.lisp,v 1.2 2009/06/11 16:04:02 rtoy Exp $") + +(in-package "STREAM") + +(defconstant +ms-cp1256+ + (make-array 128 :element-type '(unsigned-byte 16) + :initial-contents #(8364 1662 8218 402 8222 8230 8224 8225 710 8240 1657 + 8249 338 1670 1688 1672 1711 8216 8217 8220 8221 8226 + 8211 8212 1705 8482 1681 8250 339 8204 8205 1722 160 + 1548 162 163 164 165 166 167 168 169 1726 171 172 173 + 174 175 176 177 178 179 180 181 182 183 184 185 1563 + 187 188 189 190 1567 1729 1569 1570 1571 1572 1573 + 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 + 1585 1586 1587 1588 1589 1590 215 1591 1592 1593 1594 + 1600 1601 1602 1603 224 1604 226 1605 1606 1607 1608 + 231 232 233 234 235 1609 1610 238 239 1611 1612 1613 + 1614 244 1615 1616 247 1617 249 1618 251 252 8206 8207 + 1746))) + +(define-external-format :cp1256 (:mac-roman) + ((table +ms-cp1256+))) diff --git a/pcl/simple-streams/external-formats/cp1257.lisp b/pcl/simple-streams/external-formats/cp1257.lisp new file mode 100644 index 000000000..884d3ce0c --- /dev/null +++ b/pcl/simple-streams/external-formats/cp1257.lisp @@ -0,0 +1,26 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/cp1257.lisp,v 1.2 2009/06/11 16:04:02 rtoy Exp $") + +(in-package "STREAM") + +(defconstant +ms-cp1257+ + (make-array 128 :element-type '(unsigned-byte 16) + :initial-contents #(8364 65534 8218 65534 8222 8230 8224 8225 65534 8240 + 65534 8249 65534 168 711 184 65534 8216 8217 8220 8221 + 8226 8211 8212 65534 8482 65534 8250 65534 175 731 + 65534 160 65534 162 163 164 65534 166 167 216 169 342 + 171 172 173 174 198 176 177 178 179 180 181 182 183 + 248 185 343 187 188 189 190 230 260 302 256 262 196 + 197 280 274 268 201 377 278 290 310 298 315 352 323 + 325 211 332 213 214 215 370 321 346 362 220 379 381 + 223 261 303 257 263 228 229 281 275 269 233 378 279 + 291 311 299 316 353 324 326 243 333 245 246 247 371 + 322 347 363 252 380 382 729))) + +(define-external-format :cp1257 (:mac-roman) + ((table +ms-cp1257+))) diff --git a/pcl/simple-streams/external-formats/cp1258.lisp b/pcl/simple-streams/external-formats/cp1258.lisp new file mode 100644 index 000000000..3aec38ed5 --- /dev/null +++ b/pcl/simple-streams/external-formats/cp1258.lisp @@ -0,0 +1,26 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/cp1258.lisp,v 1.2 2009/06/11 16:04:02 rtoy Exp $") + +(in-package "STREAM") + +(defconstant +ms-cp1258+ + (make-array 128 :element-type '(unsigned-byte 16) + :initial-contents #(8364 65534 8218 402 8222 8230 8224 8225 710 8240 65534 + 8249 338 65534 65534 65534 65534 8216 8217 8220 8221 + 8226 8211 8212 732 8482 65534 8250 339 65534 65534 376 + 160 161 162 163 164 165 166 167 168 169 170 171 172 + 173 174 175 176 177 178 179 180 181 182 183 184 185 + 186 187 188 189 190 191 192 193 194 258 196 197 198 + 199 200 201 202 203 768 205 206 207 272 209 777 211 + 212 416 214 215 216 217 218 219 220 431 771 223 224 + 225 226 259 228 229 230 231 232 233 234 235 769 237 + 238 239 273 241 803 243 244 417 246 247 248 249 250 + 251 252 432 8363 255))) + +(define-external-format :cp1258 (:mac-roman) + ((table +ms-cp1258+))) diff --git a/pcl/simple-streams/external-formats/crlf.lisp b/pcl/simple-streams/external-formats/crlf.lisp index c66ba90ef..1d5ccc53d 100644 --- a/pcl/simple-streams/external-formats/crlf.lisp +++ b/pcl/simple-streams/external-formats/crlf.lisp @@ -4,9 +4,11 @@ ;;; This code was written by Paul Foley and has been placed in the public ;;; domain. ;;; -(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/crlf.lisp,v 1.1 2008/06/19 01:41:34 rtoy Exp $") +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/crlf.lisp,v 1.2 2009/06/11 16:04:02 rtoy Exp $") -(define-composing-external-format :crlf +(in-package "STREAM") + +(define-composing-external-format :crlf (:max 2) (input (state input unput tmp1 tmp2 tmp3 tmp4) `(multiple-value-bind (,tmp1 ,tmp2) ,input (when (= ,tmp1 #x000D) diff --git a/pcl/simple-streams/external-formats/final-sigma.lisp b/pcl/simple-streams/external-formats/final-sigma.lisp new file mode 100644 index 000000000..244cc9f57 --- /dev/null +++ b/pcl/simple-streams/external-formats/final-sigma.lisp @@ -0,0 +1,23 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/final-sigma.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +;; This is a composing format that attempts to detect sigma in +;; word-final position and change it from "σ" (U+03C3) to "Ï‚" (U+03C2). + +(define-composing-external-format :final-sigma (:size 1) + (input (state input unput tmp1 tmp2 tmp3 tmp4) + `(multiple-value-bind (,tmp1 ,tmp2) ,input + (when (= ,tmp1 #x03C3) + (multiple-value-bind (,tmp3 ,tmp4) ,input + (when (or (not ,tmp3) (and (< ,tmp3 #x0370) (/= ,tmp3 #x0027))) + (setq ,tmp1 #x03C2)) + (when ,tmp3 + (,unput ,tmp4)))) + (values ,tmp1 ,tmp2))) + (output (code state output) + `(,output ,code))) diff --git a/pcl/simple-streams/external-formats/iso8859-1.lisp b/pcl/simple-streams/external-formats/iso8859-1.lisp index 00ace6442..02a598801 100644 --- a/pcl/simple-streams/external-formats/iso8859-1.lisp +++ b/pcl/simple-streams/external-formats/iso8859-1.lisp @@ -4,12 +4,16 @@ ;;; This code was written by Paul Foley and has been placed in the public ;;; domain. ;;; -(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/iso8859-1.lisp,v 1.2 2008/06/19 01:41:34 rtoy Exp $") +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/iso8859-1.lisp,v 1.3 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") ;; This is actually implemented in the external-formats code ;; It appears here only for reference, and will never get loaded -(define-external-format :iso8859-1 +(define-external-format :iso8859-1 (:size 1) + () + (octets-to-code (state input unput) (values ,input 1)) (code-to-octets (code state output) diff --git a/pcl/simple-streams/external-formats/iso8859-10.lisp b/pcl/simple-streams/external-formats/iso8859-10.lisp new file mode 100644 index 000000000..547a8950c --- /dev/null +++ b/pcl/simple-streams/external-formats/iso8859-10.lisp @@ -0,0 +1,23 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/iso8859-10.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +iso-8859-10+ + (make-array 96 :element-type '(unsigned-byte 16) + :initial-contents #(160 260 274 290 298 296 310 167 315 272 352 358 381 + 173 362 330 176 261 275 291 299 297 311 183 316 273 + 353 359 382 8213 363 331 256 193 194 195 196 197 198 + 302 268 201 280 203 278 205 206 207 208 325 332 211 + 212 213 214 360 216 370 218 219 220 221 222 223 257 + 225 226 227 228 229 230 303 269 233 281 235 279 237 + 238 239 240 326 333 243 244 245 246 361 248 371 250 + 251 252 253 254 312))) + +(define-external-format :iso8859-10 (:iso8859-2) + ((table +iso-8859-10+))) diff --git a/pcl/simple-streams/external-formats/iso8859-13.lisp b/pcl/simple-streams/external-formats/iso8859-13.lisp new file mode 100644 index 000000000..bc3b45660 --- /dev/null +++ b/pcl/simple-streams/external-formats/iso8859-13.lisp @@ -0,0 +1,23 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/iso8859-13.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +iso-8859-13+ + (make-array 96 :element-type '(unsigned-byte 16) + :initial-contents #(160 8221 162 163 164 8222 166 167 216 169 342 171 172 + 173 174 198 176 177 178 179 8220 181 182 183 248 185 + 343 187 188 189 190 230 260 302 256 262 196 197 280 + 274 268 201 377 278 290 310 298 315 352 323 325 211 + 332 213 214 215 370 321 346 362 220 379 381 223 261 + 303 257 263 228 229 281 275 269 233 378 279 291 311 + 299 316 353 324 326 243 333 245 246 247 371 322 347 + 363 252 380 382 8217))) + +(define-external-format :iso8859-13 (:iso8859-2) + ((table +iso-8859-13+))) diff --git a/pcl/simple-streams/external-formats/iso8859-14.lisp b/pcl/simple-streams/external-formats/iso8859-14.lisp new file mode 100644 index 000000000..6a39c01e8 --- /dev/null +++ b/pcl/simple-streams/external-formats/iso8859-14.lisp @@ -0,0 +1,23 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/iso8859-14.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +iso-8859-14+ + (make-array 96 :element-type '(unsigned-byte 16) + :initial-contents #(160 7682 7683 163 266 267 7690 167 7808 169 7810 7691 + 7922 173 174 376 7710 7711 288 289 7744 7745 182 7766 + 7809 7767 7811 7776 7923 7812 7813 7777 192 193 194 + 195 196 197 198 199 200 201 202 203 204 205 206 207 + 372 209 210 211 212 213 214 7786 216 217 218 219 220 + 221 374 223 224 225 226 227 228 229 230 231 232 233 + 234 235 236 237 238 239 373 241 242 243 244 245 246 + 7787 248 249 250 251 252 253 375 255))) + +(define-external-format :iso8859-14 (:iso8859-2) + ((table +iso-8859-14+))) diff --git a/pcl/simple-streams/external-formats/iso8859-15.lisp b/pcl/simple-streams/external-formats/iso8859-15.lisp new file mode 100644 index 000000000..b5fe19caa --- /dev/null +++ b/pcl/simple-streams/external-formats/iso8859-15.lisp @@ -0,0 +1,23 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/iso8859-15.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +iso-8859-15+ + (make-array 96 :element-type '(unsigned-byte 16) + :initial-contents #(160 161 162 163 8364 165 352 167 353 169 170 171 172 + 173 174 175 176 177 178 179 381 181 182 183 382 185 + 186 187 338 339 376 191 192 193 194 195 196 197 198 + 199 200 201 202 203 204 205 206 207 208 209 210 211 + 212 213 214 215 216 217 218 219 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))) + +(define-external-format :iso8859-15 (:iso8859-2) + ((table +iso-8859-15+))) diff --git a/pcl/simple-streams/external-formats/iso8859-2.lisp b/pcl/simple-streams/external-formats/iso8859-2.lisp new file mode 100644 index 000000000..0b9376b2e --- /dev/null +++ b/pcl/simple-streams/external-formats/iso8859-2.lisp @@ -0,0 +1,33 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/iso8859-2.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +iso-8859-2+ + (make-array 96 :element-type '(unsigned-byte 16) + :initial-contents #(160 260 728 321 164 317 346 167 168 352 350 356 377 + 173 381 379 176 261 731 322 180 318 347 711 184 353 + 351 357 378 733 382 380 340 193 194 258 196 313 262 + 199 268 201 280 203 282 205 206 270 272 323 327 211 + 212 336 214 215 344 366 218 368 220 221 354 223 341 + 225 226 259 228 314 263 231 269 233 281 235 283 237 + 238 271 273 324 328 243 244 337 246 247 345 367 250 + 369 252 253 355 729))) + +(define-external-format :iso8859-2 (:size 1) + ((table +iso-8859-2+ :type (simple-array (unsigned-byte 16) (96))) + (itable (invert-table table) :type lisp::ntrie16)) + + (octets-to-code (state input unput code) + `(let ((,code ,input)) + (values (if (< ,code 160) ,code (aref ,table (- ,code 160))) 1))) + (code-to-octets (code state output present) + `(,output (if (< ,code 160) + ,code + (let ((,code (get-inverse ,itable ,code))) + (if ,code (+ (the (unsigned-byte 7) ,code) 160) #x3F)))))) diff --git a/pcl/simple-streams/external-formats/iso8859-3.lisp b/pcl/simple-streams/external-formats/iso8859-3.lisp new file mode 100644 index 000000000..a32c47eef --- /dev/null +++ b/pcl/simple-streams/external-formats/iso8859-3.lisp @@ -0,0 +1,23 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/iso8859-3.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +iso-8859-3+ + (make-array 96 :element-type '(unsigned-byte 16) + :initial-contents #(160 294 728 163 164 65534 292 167 168 304 350 286 308 + 173 65534 379 176 295 178 179 180 181 293 183 184 305 + 351 287 309 189 65534 380 192 193 194 65534 196 266 + 264 199 200 201 202 203 204 205 206 207 65534 209 210 + 211 212 288 214 215 284 217 218 219 220 364 348 223 + 224 225 226 65534 228 267 265 231 232 233 234 235 236 + 237 238 239 65534 241 242 243 244 289 246 247 285 249 + 250 251 252 365 349 729))) + +(define-external-format :iso8859-3 (:iso8859-2) + ((table +iso-8859-3+))) diff --git a/pcl/simple-streams/external-formats/iso8859-4.lisp b/pcl/simple-streams/external-formats/iso8859-4.lisp new file mode 100644 index 000000000..072383004 --- /dev/null +++ b/pcl/simple-streams/external-formats/iso8859-4.lisp @@ -0,0 +1,23 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/iso8859-4.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +iso-8859-4+ + (make-array 96 :element-type '(unsigned-byte 16) + :initial-contents #(160 260 312 342 164 296 315 167 168 352 274 290 358 + 173 381 175 176 261 731 343 180 297 316 711 184 353 + 275 291 359 330 382 331 256 193 194 195 196 197 198 + 302 268 201 280 203 278 205 206 298 272 325 332 310 + 212 213 214 215 216 370 218 219 220 360 362 223 257 + 225 226 227 228 229 230 303 269 233 281 235 279 237 + 238 299 273 326 333 311 244 245 246 247 248 371 250 + 251 252 361 363 729))) + +(define-external-format :iso8859-4 (:iso8859-2) + ((table +iso-8859-4+))) diff --git a/pcl/simple-streams/external-formats/iso8859-5.lisp b/pcl/simple-streams/external-formats/iso8859-5.lisp new file mode 100644 index 000000000..be988e042 --- /dev/null +++ b/pcl/simple-streams/external-formats/iso8859-5.lisp @@ -0,0 +1,24 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/iso8859-5.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +iso-8859-5+ + (make-array 96 :element-type '(unsigned-byte 16) + :initial-contents #(160 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 + 1035 1036 173 1038 1039 1040 1041 1042 1043 1044 1045 + 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 + 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 + 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 + 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 + 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 + 1101 1102 1103 8470 1105 1106 1107 1108 1109 1110 1111 + 1112 1113 1114 1115 1116 167 1118 1119))) + +(define-external-format :iso8859-5 (:iso8859-2) + ((table +iso-8859-5+))) diff --git a/pcl/simple-streams/external-formats/iso8859-6.lisp b/pcl/simple-streams/external-formats/iso8859-6.lisp new file mode 100644 index 000000000..a693fb4e6 --- /dev/null +++ b/pcl/simple-streams/external-formats/iso8859-6.lisp @@ -0,0 +1,25 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/iso8859-6.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +iso-8859-6+ + (make-array 96 :element-type '(unsigned-byte 16) + :initial-contents #(160 65534 65534 65534 164 65534 65534 65534 65534 + 65534 65534 65534 1548 173 65534 65534 65534 65534 + 65534 65534 65534 65534 65534 65534 65534 65534 65534 + 1563 65534 65534 65534 1567 65534 1569 1570 1571 1572 + 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 + 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 + 65534 65534 65534 65534 65534 1600 1601 1602 1603 1604 + 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 + 1616 1617 1618 65534 65534 65534 65534 65534 65534 + 65534 65534 65534 65534 65534 65534 65534))) + +(define-external-format :iso8859-6 (:iso8859-2) + ((table +iso-8859-6+))) diff --git a/pcl/simple-streams/external-formats/iso8859-7.lisp b/pcl/simple-streams/external-formats/iso8859-7.lisp new file mode 100644 index 000000000..1cf00b749 --- /dev/null +++ b/pcl/simple-streams/external-formats/iso8859-7.lisp @@ -0,0 +1,23 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/iso8859-7.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +iso-8859-7+ + (make-array 96 :element-type '(unsigned-byte 16) + :initial-contents #(160 8216 8217 163 65534 65534 166 167 168 169 65534 + 171 172 173 65534 8213 176 177 178 179 900 901 902 183 + 904 905 906 187 908 189 910 911 912 913 914 915 916 + 917 918 919 920 921 922 923 924 925 926 927 928 929 + 65534 931 932 933 934 935 936 937 938 939 940 941 942 + 943 944 945 946 947 948 949 950 951 952 953 954 955 + 956 957 958 959 960 961 962 963 964 965 966 967 968 + 969 970 971 972 973 974 65534))) + +(define-external-format :iso8859-7 (:iso8859-2) + ((table +iso-8859-7+))) diff --git a/pcl/simple-streams/external-formats/iso8859-8.lisp b/pcl/simple-streams/external-formats/iso8859-8.lisp new file mode 100644 index 000000000..63407e0e4 --- /dev/null +++ b/pcl/simple-streams/external-formats/iso8859-8.lisp @@ -0,0 +1,25 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/iso8859-8.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +iso-8859-8+ + (make-array 96 :element-type '(unsigned-byte 16) + :initial-contents #(160 65534 162 163 164 165 166 167 168 169 215 171 172 + 173 174 175 176 177 178 179 180 181 182 183 184 185 + 247 187 188 189 190 65534 65534 65534 65534 65534 + 65534 65534 65534 65534 65534 65534 65534 65534 65534 + 65534 65534 65534 65534 65534 65534 65534 65534 65534 + 65534 65534 65534 65534 65534 65534 65534 65534 65534 + 8215 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 + 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 + 1509 1510 1511 1512 1513 1514 65534 65534 8206 8207 + 65534))) + +(define-external-format :iso8859-8 (:iso8859-2) + ((table +iso-8859-8+))) diff --git a/pcl/simple-streams/external-formats/iso8859-9.lisp b/pcl/simple-streams/external-formats/iso8859-9.lisp new file mode 100644 index 000000000..0fd2889df --- /dev/null +++ b/pcl/simple-streams/external-formats/iso8859-9.lisp @@ -0,0 +1,23 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/iso8859-9.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +iso-8859-9+ + (make-array 96 :element-type '(unsigned-byte 16) + :initial-contents #(160 161 162 163 164 165 166 167 168 169 170 171 172 + 173 174 175 176 177 178 179 180 181 182 183 184 185 + 186 187 188 189 190 191 192 193 194 195 196 197 198 + 199 200 201 202 203 204 205 206 207 286 209 210 211 + 212 213 214 215 216 217 218 219 220 304 350 223 224 + 225 226 227 228 229 230 231 232 233 234 235 236 237 + 238 239 287 241 242 243 244 245 246 247 248 249 250 + 251 252 305 351 255))) + +(define-external-format :iso8859-9 (:iso8859-2) + ((table +iso-8859-9+))) diff --git a/pcl/simple-streams/external-formats/koi8-r.lisp b/pcl/simple-streams/external-formats/koi8-r.lisp new file mode 100644 index 000000000..a9f2b199a --- /dev/null +++ b/pcl/simple-streams/external-formats/koi8-r.lisp @@ -0,0 +1,28 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/koi8-r.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +koi8-r+ + (make-array 128 :element-type '(unsigned-byte 16) + :initial-contents #(9472 9474 9484 9488 9492 9496 9500 9508 9516 9524 + 9532 9600 9604 9608 9612 9616 9617 9618 9619 8992 + 9632 8729 8730 8776 8804 8805 160 8993 176 178 + 183 247 9552 9553 9554 1105 9555 9556 9557 9558 + 9559 9560 9561 9562 9563 9564 9565 9566 9567 9568 + 9569 1025 9570 9571 9572 9573 9574 9575 9576 9577 + 9578 9579 9580 169 1102 1072 1073 1094 1076 1077 + 1092 1075 1093 1080 1081 1082 1083 1084 1085 1086 + 1087 1103 1088 1089 1090 1091 1078 1074 1100 1099 + 1079 1096 1101 1097 1095 1098 1070 1040 1041 1062 + 1044 1045 1060 1043 1061 1048 1049 1050 1051 1052 + 1053 1054 1055 1071 1056 1057 1058 1059 1046 1042 + 1068 1067 1047 1064 1069 1065 1063 1066))) + +(define-external-format :koi8-r (:mac-roman) + ((table +koi8-r+))) diff --git a/pcl/simple-streams/external-formats/mac-cyrillic.lisp b/pcl/simple-streams/external-formats/mac-cyrillic.lisp new file mode 100644 index 000000000..4add4684a --- /dev/null +++ b/pcl/simple-streams/external-formats/mac-cyrillic.lisp @@ -0,0 +1,27 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/mac-cyrillic.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +mac-cyrillic+ + (make-array 128 :element-type '(unsigned-byte 16) + :initial-contents #(1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 + 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 + 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 8224 + 176 162 163 167 8226 182 1030 174 169 8482 1026 1106 + 8800 1027 1107 8734 177 8804 8805 1110 181 8706 1032 + 1028 1108 1031 1111 1033 1113 1034 1114 1112 1029 172 + 8730 402 8776 8710 171 187 8230 160 1035 1115 1036 + 1116 1109 8211 8212 8220 8221 8216 8217 247 8222 1038 + 1118 1039 1119 8470 1025 1105 1103 1072 1073 1074 1075 + 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 + 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 + 1098 1099 1100 1101 1102 164))) + +(define-external-format :mac-cyrillic (:mac-roman) + ((table +mac-cyrillic+))) diff --git a/pcl/simple-streams/external-formats/mac-greek.lisp b/pcl/simple-streams/external-formats/mac-greek.lisp new file mode 100644 index 000000000..6c944dc01 --- /dev/null +++ b/pcl/simple-streams/external-formats/mac-greek.lisp @@ -0,0 +1,25 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/mac-greek.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +mac-greek+ + (make-array 128 :element-type '(unsigned-byte 16) + :initial-contents #(196 185 178 201 179 214 220 901 224 226 228 900 168 + 231 233 232 234 235 163 8482 238 239 8226 189 8240 244 + 246 166 173 249 251 252 8224 915 916 920 923 926 928 + 223 174 169 931 938 167 8800 176 903 913 177 8804 8805 + 165 914 917 918 919 921 922 924 934 939 936 937 940 + 925 172 927 929 8776 932 171 187 8230 160 933 935 902 + 904 339 8211 8213 8220 8221 8216 8217 247 905 906 908 + 910 941 942 943 972 911 973 945 946 968 948 949 966 + 947 951 953 958 954 955 956 957 959 960 974 961 963 + 964 952 969 962 967 965 950 970 971 912 944 65534))) + +(define-external-format :mac-greek (:mac-roman) + ((table +mac-greek+))) diff --git a/pcl/simple-streams/external-formats/mac-icelandic.lisp b/pcl/simple-streams/external-formats/mac-icelandic.lisp new file mode 100644 index 000000000..3dcef32d8 --- /dev/null +++ b/pcl/simple-streams/external-formats/mac-icelandic.lisp @@ -0,0 +1,26 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/mac-icelandic.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +mac-icelandic+ + (make-array 128 :element-type '(unsigned-byte 16) + :initial-contents #(196 197 199 201 209 214 220 225 224 226 228 227 229 + 231 233 232 234 235 237 236 238 239 241 243 242 244 + 246 245 250 249 251 252 221 176 162 163 167 8226 182 + 223 174 169 8482 180 168 8800 198 216 8734 177 8804 + 8805 165 181 8706 8721 8719 960 8747 170 186 8486 230 + 248 191 161 172 8730 402 8776 8710 171 187 8230 160 + 192 195 213 338 339 8211 8212 8220 8221 8216 8217 247 + 9674 255 376 8260 164 208 240 222 254 253 183 8218 + 8222 8240 194 202 193 203 200 205 206 207 204 211 212 + 65534 210 218 219 217 305 710 732 175 728 729 730 184 + 733 731 711))) + +(define-external-format :mac-icelandic (:mac-roman) + ((table +mac-icelandic+))) diff --git a/pcl/simple-streams/external-formats/mac-latin2.lisp b/pcl/simple-streams/external-formats/mac-latin2.lisp new file mode 100644 index 000000000..6cd13ce84 --- /dev/null +++ b/pcl/simple-streams/external-formats/mac-latin2.lisp @@ -0,0 +1,26 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/mac-latin2.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +mac-latin2+ + (make-array 128 :element-type '(unsigned-byte 16) + :initial-contents #(196 256 257 201 260 214 220 225 261 268 228 269 262 + 263 233 377 378 270 237 271 274 275 278 243 279 244 + 246 245 250 282 283 252 8224 176 280 163 167 8226 182 + 223 174 169 8482 281 168 8800 291 302 303 298 8804 + 8805 299 310 8706 8721 322 315 316 317 318 313 314 325 + 326 323 172 8730 324 327 8710 171 187 8230 160 328 336 + 213 337 332 8211 8212 8220 8221 8216 8217 247 9674 333 + 340 341 344 8249 8250 345 342 343 352 8218 8222 353 + 346 347 193 356 357 205 381 382 362 211 212 363 366 + 218 367 368 369 370 371 221 253 311 379 321 380 290 + 711))) + +(define-external-format :mac-latin2 (:mac-roman) + ((table +mac-latin2+))) diff --git a/pcl/simple-streams/external-formats/mac-roman.lisp b/pcl/simple-streams/external-formats/mac-roman.lisp new file mode 100644 index 000000000..aa0e0b25b --- /dev/null +++ b/pcl/simple-streams/external-formats/mac-roman.lisp @@ -0,0 +1,36 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/mac-roman.lisp,v 1.2 2009/06/11 16:04:02 rtoy Exp $") + +(in-package "STREAM") + +(defconstant +mac-roman+ + (make-array 128 :element-type '(unsigned-byte 16) + :initial-contents #(196 197 199 201 209 214 220 225 224 226 228 227 229 + 231 233 232 234 235 237 236 238 239 241 243 242 244 + 246 245 250 249 251 252 8224 176 162 163 167 8226 182 + 223 174 169 8482 180 168 8800 198 216 8734 177 8804 + 8805 165 181 8706 8721 8719 960 8747 170 186 8486 230 + 248 191 161 172 8730 402 8776 8710 171 187 8230 160 + 192 195 213 338 339 8211 8212 8220 8221 8216 8217 247 + 9674 255 376 8260 164 8249 8250 64257 64258 8225 183 + 8218 8222 8240 194 202 193 203 200 205 206 207 204 211 + 212 65534 210 218 219 217 305 710 732 175 728 729 730 + 184 733 731 711))) + +(define-external-format :mac-roman (:size 1) + ((table +mac-roman+ :type (simple-array (unsigned-byte 16) (128))) + (itable (invert-table table) :type lisp::ntrie16)) + + (octets-to-code (state input unput code) + `(let ((,code ,input)) + (values (if (< ,code 128) ,code (aref ,table (- ,code 128))) 1))) + (code-to-octets (code state output present) + `(,output (if (< ,code 128) + ,code + (let ((,code (get-inverse ,itable ,code))) + (if ,code (+ (the (unsigned-byte 7) ,code) 128) #x3F)))))) diff --git a/pcl/simple-streams/external-formats/mac-turkish.lisp b/pcl/simple-streams/external-formats/mac-turkish.lisp new file mode 100644 index 000000000..4487cecfc --- /dev/null +++ b/pcl/simple-streams/external-formats/mac-turkish.lisp @@ -0,0 +1,26 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/mac-turkish.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(defconstant +mac-turkish+ + (make-array 128 :element-type '(unsigned-byte 16) + :initial-contents #(196 197 199 201 209 214 220 225 224 226 228 227 229 + 231 233 232 234 235 237 236 238 239 241 243 242 244 + 246 245 250 249 251 252 8224 176 162 163 167 8226 182 + 223 174 169 8482 180 168 8800 198 216 8734 177 8804 + 8805 165 181 8706 8721 8719 960 8747 170 186 8486 230 + 248 191 161 172 8730 402 8776 8710 171 187 8230 160 + 192 195 213 338 339 8211 8212 8220 8221 8216 8217 247 + 9674 255 376 286 287 304 305 350 351 8225 183 8218 + 8222 8240 194 202 193 203 200 205 206 207 204 211 212 + 65534 210 218 219 217 65534 710 732 175 728 729 730 + 184 733 731 711))) + +(define-external-format :mac-turkish (:mac-roman) + ((table +mac-turkish+))) diff --git a/pcl/simple-streams/external-formats/utf-16-be.lisp b/pcl/simple-streams/external-formats/utf-16-be.lisp index 3d9419242..2f95b6d5a 100644 --- a/pcl/simple-streams/external-formats/utf-16-be.lisp +++ b/pcl/simple-streams/external-formats/utf-16-be.lisp @@ -4,71 +4,41 @@ ;;; This code was written by Paul Foley and has been placed in the public ;;; domain. ;;; -(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-16-be.lisp,v 1.1 2008/06/19 01:41:34 rtoy Exp $") +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-16-be.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") -;; make state an integer: -;; or (or state 0) to cope with NIL case -;; 0 = initial state, nothing has been read yet -;; 1 = BOM has been read, little-endian -;; 2 = BOM has been read, big-endian, or non-BOM char has been read -;; -;; (oddp state) = little-endian -;; (evenp state) = big-endian -;; (zerop state) = #xFEFF/#xFFFE is BOM (to be skipped) -;; -;; when writing: output BOM if (zerop state), if BOM-output selected -;; but state doesn't choose between big-endian and little-endian output +(in-package "STREAM") -(define-external-format :utf-16-be - (octets-to-code (state input unput c1 c2 code wd next) - `(block nil - (when (null ,state) (setf ,state 0)) - (tagbody - :again - (let* ((,c1 ,input) - (,c2 ,input) - (,code (if (oddp ,state) - (+ (* 256 ,c2) ,c1) - (+ (* 256 ,c1) ,c2))) - (,wd 2)) - ;; Note that if BOM is read, WD will be 2 but 4 octets have - ;; actually been read: this is intentional - the returned - ;; width tells how much to back up to unread a character, and - ;; we don't want to back up past the BOM since the state now - ;; indicates that BOM has been seen, so that would result in - ;; the BOM being reread as a character - (cond ((<= #xDC00 ,code #xDFFF) - ;; replace with REPLACEMENT CHARACTER ? - (error "Illegal character U+~4,'0X in UTF-16 sequence." - ,code)) - ((<= #xD800 ,code #xDBFF) - (let* ((,c1 ,input) - (,c2 ,input) - (,next (if (oddp ,state) - (+ (* 256 ,c2) ,c1) - (+ (* 256 ,c1) ,c2)))) - (unless (<= #xDC00 ,next #xDFFF) - ;; replace with REPLACEMENT CHARACTER ? - ;; possibly unput 2 so it'll be read as - ;; another character next time around? - (error "Illegal surrogate pair U+~4,'0X U+~4,'0X ~ - in UTF-16 sequence." ,code ,next)) - (setq ,code (+ (ash (- ,code #xD800) 10) ,next #x2400) - ,wd 4))) - ((and (= ,code #xFFFE) (zerop ,state)) - (setf ,state 1) (go :again)) - ((and (= ,code #xFEFF) (zerop ,state)) - (setf ,state 2) (go :again)) - ((= ,code #xFFFE) - ;; replace with REPLACEMENT CHARACTER ? - (error "Illegal character U+FFFE in UTF-16 sequence."))) - (return (values ,code ,wd)))))) +;; UTF-16BE. BOM is not recognized and is never output. + +(define-external-format :utf-16-be (:size 2) + () + + (octets-to-code (state input unput c1 c2 code next) + `(let* ((,c1 ,input) + (,c2 ,input) + (,code (+ (* 256 ,c1) ,c2))) + (declare (type (integer 0 #xffff) ,code)) + (cond ((lisp::surrogatep ,code :low) + (setf ,code +replacement-character-code+)) + ((lisp::surrogatep ,code :high) + (let* ((,c1 ,input) + (,c2 ,input) + (,next (+ (* 256 ,c1) ,c2))) + ;; If we don't have a high and low surrogate, + ;; replace with REPLACEMENT CHARACTER. Possibly + ;; unput 2 so it'll be read as another character + ;; next time around? + (if (lisp::surrogatep ,next :low) + (setq ,code (+ (ash (- ,code #xD800) 10) ,next #x2400)) + (setf ,code +replacement-character-code+)))) + ((= ,code #xFFFE) + ;; Replace with REPLACEMENT CHARACTER. + (setf ,code +replacement-character-code+))) + (values ,code 2))) (code-to-octets (code state output c c1 c2) `(flet ((output (code) (,output (ldb (byte 8 8) code)) (,output (ldb (byte 8 0) code)))) - (when (and (null ,state) #|BOM wanted|#t) - (output #xFEFF) (setf ,state 2)) (cond ((< ,code #x10000) (output ,code)) ((< ,code #x110000) @@ -78,4 +48,4 @@ (output (logior ,c1 #xD800)) (output (logior ,c2 #xDC00)))) (t - (output #xFFFD)))))) + (output +replacement-character-code+)))))) diff --git a/pcl/simple-streams/external-formats/utf-16-le.lisp b/pcl/simple-streams/external-formats/utf-16-le.lisp index fa7d11c42..e9eae5ff9 100644 --- a/pcl/simple-streams/external-formats/utf-16-le.lisp +++ b/pcl/simple-streams/external-formats/utf-16-le.lisp @@ -4,71 +4,40 @@ ;;; This code was written by Paul Foley and has been placed in the public ;;; domain. ;;; -(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-16-le.lisp,v 1.1 2008/06/19 01:41:34 rtoy Exp $") +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-16-le.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") -;; make state an integer: -;; or (or state 0) to cope with NIL case -;; 0 = initial state, nothing has been read yet -;; 1 = BOM has been read, little-endian -;; 2 = BOM has been read, big-endian, or non-BOM char has been read -;; -;; (oddp state) = big-endian -;; (evenp state) = little-endian -;; (zerop state) = #xFFFE/#xFEFF is BOM (to be skipped) -;; -;; when writing: output BOM if (zerop state), if BOM-output selected -;; but state doesn't choose between big-endian and little-endian output +(in-package "STREAM") -(define-external-format :utf-16-le - (octets-to-code (state input unput c1 c2 code wd next) - `(block nil - (when (null ,state) (setf ,state 0)) - (tagbody - :again - (let* ((,c1 ,input) - (,c2 ,input) - (,code (if (oddp ,state) - (+ (* 256 ,c1) ,c2) - (+ (* 256 ,c2) ,c1))) - (,wd 2)) - ;; Note that if BOM is read, WD will be 2 but 4 octets have - ;; actually been read: this is intentional - the returned - ;; width tells how much to back up to unread a character, and - ;; we don't want to back up past the BOM since the state now - ;; indicates that BOM has been seen, so that would result in - ;; the BOM being reread as a character - (cond ((<= #xDC00 ,code #xDFFF) - ;; replace with REPLACEMENT CHARACTER ? - (error "Illegal character U+~4,'0X in UTF-16 sequence." - ,code)) - ((<= #xD800 ,code #xDBFF) - (let* ((,c1 ,input) - (,c2 ,input) - (,next (if (oddp ,state) - (+ (* 256 ,c1) ,c2) - (+ (* 256 ,c2) ,c1)))) - (unless (<= #xDC00 ,next #xDFFF) - ;; replace with REPLACEMENT CHARACTER ? - ;; possibly unput 2 so it'll be read as - ;; another character next time around? - (error "Illegal surrogate pair U+~4,'0X U+~4,'0X ~ - in UTF-16 sequence." ,code ,next)) - (setq ,code (+ (ash (- ,code #xD800) 10) ,next #x2400) - ,wd 4))) - ((and (= ,code #xFFFE) (zerop ,state)) - (setf ,state 1) (go :again)) - ((and (= ,code #xFEFF) (zerop ,state)) - (setf ,state 2) (go :again)) - ((= ,code #xFFFE) - ;; replace with REPLACEMENT CHARACTER ? - (error "Illegal character U+FFFE in UTF-16 sequence."))) - (return (values ,code ,wd)))))) +;; UTF-16LE. BOM is not recognized, and is never output. +(define-external-format :utf-16-le (:size 2) + () + + (octets-to-code (state input unput c1 c2 code next) + `(let* ((,c1 ,input) + (,c2 ,input) + (,code (+ (* 256 ,c2) ,c1))) + (declare (type (integer 0 #xffff) ,code)) + (cond ((lisp::surrogatep ,code :low) + ;; Replace with REPLACEMENT CHARACTER. + (setf ,code +replacement-character-code+)) + ((lisp::surrogatep ,code :high) + (let* ((,c1 ,input) + (,c2 ,input) + (,next (+ (* 256 ,c2) ,c1))) + ;; Replace with REPLACEMENT CHARACTER. Possibly + ;; unput 2 so it'll be read as another character + ;; next time around? + (if (lisp::surrogatep ,next :low) + (setq ,code (+ (ash (- ,code #xD800) 10) ,next #x2400)) + (setq ,code +replacement-character-code+)))) + ((= ,code #xFFFE) + ;; replace with REPLACEMENT CHARACTER ? + (error "Illegal character U+FFFE in UTF-16 sequence."))) + (values ,code 2))) (code-to-octets (code state output c c1 c2) `(flet ((output (code) (,output (ldb (byte 8 0) code)) - (,output (ldb (byte 8 8) code)))) - (when (and (null ,state) #|BOM wanted|#t) - (output #xFEFF) (setf ,state 1)) + (,output (ldb (byte 8 8) code)))) (cond ((< ,code #x10000) (output ,code)) ((< ,code #x110000) @@ -78,4 +47,4 @@ (output (logior ,c1 #xD800)) (output (logior ,c2 #xDC00)))) (t - (output #xFFFD)))))) + (output +replacement-character-code+)))))) diff --git a/pcl/simple-streams/external-formats/utf-16.lisp b/pcl/simple-streams/external-formats/utf-16.lisp new file mode 100644 index 000000000..dfc2d2bf3 --- /dev/null +++ b/pcl/simple-streams/external-formats/utf-16.lisp @@ -0,0 +1,91 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-16.lisp,v 1.2 2009/06/11 16:04:02 rtoy Exp $") + +(in-package "STREAM") + +;; From the Unicode BOM FAQ +;; (http://www.unicode.org/faq/utf_bom.html#BOM), UTF-16BE and +;; UTF-16LE should never output a BOM. On input, since we selected +;; UTF-16BE, the input stream shouldn't have a BOM. But we allow for +;; one here, anyway. This should be compatible with the Unicode spec. + +;; make state an integer: +;; or (or state 0) to cope with NIL case +;; 0 = initial state, nothing has been read yet +;; 1 = BOM has been read, little-endian +;; 2 = BOM has been read, big-endian, or non-BOM char has been read +;; +;; (oddp state) = little-endian +;; (evenp state) = big-endian +;; (zerop state) = #xFEFF/#xFFFE is BOM (to be skipped) +;; +;; When writing, never output a BOM. + +(define-external-format :utf-16 (:size 2) + () + + (octets-to-code (state input unput c1 c2 code wd next st) + `(block nil + (when (null ,state) (setf ,state 0)) + (tagbody + :again + (let* ((,st ,state) + (,c1 ,input) + (,c2 ,input) + (,code (if (oddp ,st) + (+ (* 256 ,c2) ,c1) + (+ (* 256 ,c1) ,c2))) + (,wd 2)) + (declare (type (integer 0 2) ,st) + (type (integer 0 #xffff) ,code)) + ;; Note that if BOM is read, WD will be 2 but 4 octets have + ;; actually been read: this is intentional - the returned + ;; width tells how much to back up to unread a character, and + ;; we don't want to back up past the BOM since the state now + ;; indicates that BOM has been seen, so that would result in + ;; the BOM being reread as a character + (cond ((lisp::surrogatep ,code :low) + ;; replace with REPLACEMENT CHARACTER ? + (setf ,code +replacement-character-code+)) + ((lisp::surrogatep ,code :high) + (let* ((,c1 ,input) + (,c2 ,input) + (,next (if (oddp ,st) + (+ (* 256 ,c2) ,c1) + (+ (* 256 ,c1) ,c2)))) + ;; If we don't have a high and low surrogate, + ;; replace with REPLACEMENT CHARACTER. Possibly + ;; unput 2 so it'll be read as another character + ;; next time around? + (if (lisp::surrogatep ,next :low) + (setq ,code (+ (ash (- ,code #xD800) 10) ,next #x2400) + ,wd 4) + (setf ,code +replacement-character-code+)))) + ((and (= ,code #xFFFE) (zerop ,st)) + (setf ,state 1) (go :again)) + ((and (= ,code #xFEFF) (zerop ,st)) + (setf ,state 2) (go :again)) + ((= ,code #xFFFE) + ;; Replace with REPLACEMENT CHARACTER. + (setf ,code +replacement-character-code+))) + (return (values ,code ,wd)))))) + (code-to-octets (code state output c c1 c2) + `(flet ((output (code) + (,output (ldb (byte 8 8) code)) + (,output (ldb (byte 8 0) code)))) + (unless ,state + ;; Output BOM + (output #xFEFF) + (setf ,state t)) + (cond ((< ,code #x10000) + (output ,code)) + ((< ,code #x110000) + (let* ((,c (- ,code #x10000)) + (,c1 (ldb (byte 10 10) ,c)) + (,c2 (ldb (byte 10 0) ,c))) + (output (logior ,c1 #xD800)) + (output (logior ,c2 #xDC00)))) + (t + (output +replacement-character-code+)))))) diff --git a/pcl/simple-streams/external-formats/utf-32-be.lisp b/pcl/simple-streams/external-formats/utf-32-be.lisp new file mode 100644 index 000000000..43e02104a --- /dev/null +++ b/pcl/simple-streams/external-formats/utf-32-be.lisp @@ -0,0 +1,34 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Raymond Toy and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-32-be.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(define-external-format :utf-32-be (:size 4) + () + + (octets-to-code (state input unput c c1 c2 c3 c4) + `(let* ((,c1 ,input) + (,c2 ,input) + (,c3 ,input) + (,c4 ,input) + (,c (+ (ash ,c1 24) + (ash ,c2 16) + (ash ,c3 8) + ,c4))) + (declaim (type (unsigned-byte 8) ,c1 ,c2 ,c3 ,c4) + (optimize (speed 3))) + (cond ((or (> ,c #x10ffff) + (lisp::surrogatep ,c)) + ;; Surrogates are illegal. Use replacement character. + (values +replacement-character-code+ 4)) + (t + (values ,c 4))))) + + (code-to-octets (code state output i) + `(dotimes (,i 4) + (,output (ldb (byte 8 (* 8 (- 3 ,i))) ,code))))) diff --git a/pcl/simple-streams/external-formats/utf-32-le.lisp b/pcl/simple-streams/external-formats/utf-32-le.lisp new file mode 100644 index 000000000..c8e96efab --- /dev/null +++ b/pcl/simple-streams/external-formats/utf-32-le.lisp @@ -0,0 +1,34 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Raymond Toy and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-32-le.lisp,v 1.2 2009/06/11 16:04:02 rtoy Rel $") + +(in-package "STREAM") + +(define-external-format :utf-32-le (:size 4) + () + + (octets-to-code (state input unput c c1 c2 c3 c4) + `(let* ((,c1 ,input) + (,c2 ,input) + (,c3 ,input) + (,c4 ,input) + (,c (+ ,c1 + (ash ,c2 8) + (ash ,c3 16) + (ash ,c4 24)))) + (declaim (type (unsigned-byte 8) ,c1 ,c2 ,c3 ,c4) + (optimize (speed 3))) + (cond ((or (> ,c #x10ffff) + (lisp::surrogatep ,c)) + ;; Surrogates are illegal. Use replacement character. + (values +replacement-character-code+ 4)) + (t + (values ,c 4))))) + + (code-to-octets (code state output i) + `(dotimes (,i 4) + (,output (ldb (byte 8 (* 8 ,i)) ,code))))) diff --git a/pcl/simple-streams/external-formats/utf-32.lisp b/pcl/simple-streams/external-formats/utf-32.lisp new file mode 100644 index 000000000..9d66bfe70 --- /dev/null +++ b/pcl/simple-streams/external-formats/utf-32.lisp @@ -0,0 +1,80 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*- +;;; +;;; ********************************************************************** +;;; This code was written by Raymond Toy and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-32.lisp,v 1.2 2009/06/11 16:04:02 rtoy Exp $") + +(in-package "STREAM") + +;; UTF-32, with unspecified endianness. We default to big-endian (as +;; specified), but we do recognize the BOM to specify endianness. We +;; also output the BOM (for big-endian output), although we don't have +;; to. This allows the user to have a way of outputting the BOM, +;; since UTF-32LE and UTF-32BE are specified not to output the BOM. +;; +;; This is modeled after the utf-16 format. + +;; make state an integer: +;; or (or state 0) to cope with NIL case +;; 0 = initial state, nothing has been read yet +;; 1 = BOM has been read, little-endian +;; 2 = BOM has been read, big-endian, or non-BOM char has been read +;; +;; (oddp state) = little-endian +;; (evenp state) = big-endian +;; (zerop state) = #xFEFF/#xFFFE is BOM (to be skipped) +;; +(define-external-format :utf-32 (:size 4) + () + + (octets-to-code (state input unput code c1 c2 c3 c4 st wd) + `(block nil + (when (null ,state) (setf ,state 0)) + (tagbody + :again + (let* ((,st ,state) + (,c1 ,input) + (,c2 ,input) + (,c3 ,input) + (,c4 ,input) + (,code (if (oddp ,st) + ;; Little-endian + (+ ,c1 + (ash ,c2 8) + (ash ,c3 16) + (ash ,c4 24)) + ;; Big-endian + (+ (ash ,c1 24) + (ash ,c2 16) + (ash ,c3 8) + ,c4))) + (,wd 4)) + (declaim (type (integer 0 2) ,st) + (type (unsigned-byte 8) ,c1 ,c2 ,c3 ,c4) + (type lisp:codepoint ,code) + (optimize (speed 3))) + (cond ((lisp::surrogatep ,code) + ;; Surrogates are illegal. Use replacement character. + (setf ,code +replacement-character-code+)) + ((and (zerop ,st) (= ,code #xFFFE0000)) + ;; BOM for little-endian + (setf ,state 1) + (go :again)) + ((and (zerop ,st) (= ,code #xFEFF)) + ;; BOM for big-endian + (setf ,state 2) + (go :again))) + (return (values ,code ,wd)))))) + + (code-to-octets (code state output i c) + `(flet ((out (,c) + ;; Big-endian output + (dotimes (,i 4) + (,output (ldb (byte 8 (* 8 (- 3 ,i))) ,c))))) + ;; Write BOM + (unless ,state + (out #xFEFF) + (setf ,state t)) + (out code)))) diff --git a/pcl/simple-streams/external-formats/utf-8.lisp b/pcl/simple-streams/external-formats/utf-8.lisp index 2d3c3fa58..a63a9e868 100644 --- a/pcl/simple-streams/external-formats/utf-8.lisp +++ b/pcl/simple-streams/external-formats/utf-8.lisp @@ -4,37 +4,69 @@ ;;; This code was written by Paul Foley and has been placed in the public ;;; domain. ;;; -(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-8.lisp,v 1.3 2008/06/19 01:41:34 rtoy Exp $") +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-8.lisp,v 1.4 2009/06/11 16:04:02 rtoy Rel $") -(define-external-format :utf-8 +(in-package "STREAM") + +;; A safe UTF-8 external format. Any illegal UTF-8 sequences on input +;; are replaced with the Unicode REPLACEMENT CHARACTER (U+FFFD). +;; +;; See Table 3-7, Ch 3.9 in the Unicode book. + +(define-external-format :utf-8 (:min 1 :max 4) + () (octets-to-code (state input unput c i j n) - `(flet ((utf8 (,c ,i) - (let ((,n (ash (ldb (byte (- 6 ,i) 0) ,c) (* 6 ,i)))) - (dotimes (,j ,i (values ,n (1+ ,i))) - (setf (ldb (byte 6 (* 6 (- ,i ,j 1))) ,n) - (ldb (byte 6 0) ,input)))))) - (let ((,c ,input)) - (cond ((null ,c) (values nil 0)) - ((< ,c #b10000000) (values ,c 1)) - ((< ,c #b11000000) (error "UTF-8 desync")) - ((< ,c #b11100000) (utf8 ,c 1)) - ((< ,c #b11110000) (utf8 ,c 2)) - ((< ,c #b11111000) (utf8 ,c 3)) - ((< ,c #b11111100) (utf8 ,c 4)) - ((< ,c #b11111110) (utf8 ,c 5)) - (t (error "Invalid UTF-8 character")))))) + `(labels ((utf8 (,c ,i) + (declare (type (unsigned-byte 8) ,c) + (type (integer 1 5) ,i)) + (let ((,n (ash (ldb (byte (- 6 ,i) 0) ,c) + (* 6 ,i)))) + (declare (type (unsigned-byte 31) ,n)) + (dotimes (,j ,i (check ,n ,i)) + (let ((,c ,input)) + ;; Following bytes must all have the form + ;; #b10xxxxxx. If not, put back the octet we + ;; just read and return the replacement character + ;; for the bad sequence. + (if (< (logxor ,c #x80) #x40) + (setf (ldb (byte 6 (* 6 (- ,i ,j 1))) ,n) + (ldb (byte 6 0) ,c)) + (progn + (,unput 1) + (return (values +replacement-character-code+ (1+ ,j))))))))) + (check (,n ,i) + (declare (type lisp:codepoint ,n) + (type (integer 1 5) ,i)) + ;; We check for overlong sequences (sequences that + ;; encode to codepoints that don't need that long of a + ;; sequence) and any surrogate values. + (if (or (<= ,n (the (member 127 1023 32767) (svref #(127 1023 32767) (1- ,i)))) ; overlong + (lisp::surrogatep ,n)) ; surrogate + (progn + (,unput ,i) + (values +replacement-character-code+ 1)) + (values ,n (1+ ,i))))) + (let ((,c ,input)) + (declare (optimize (ext:inhibit-warnings 3))) + (cond ((null ,c) (values nil 0)) + ((< ,c #b10000000) (values ,c 1)) + ((< ,c #b11000010) (values +replacement-character-code+ 1)) + ((< ,c #b11100000) (utf8 ,c 1)) + ((< ,c #b11110000) (utf8 ,c 2)) + ((< ,c #b11111000) (utf8 ,c 3)) + (t (values +replacement-character-code+ 1)))))) (code-to-octets (code state output i j n p init) `(flet ((utf8 (,n ,i) - (let* ((,j (- 6 ,i)) - (,p (* 6 ,i)) - (,init (logand #xFF (ash #b01111110 ,j)))) - (,output (logior ,init (ldb (byte ,j ,p) ,n))) - (dotimes (,i ,i) - (decf ,p 6) - (,output (logior 128 (ldb (byte 6 ,p) ,n))))))) + (let* ((,j (- 6 ,i)) + (,p (* 6 ,i)) + (,init (logand #xFF (ash #b01111110 ,j)))) + (,output (logior ,init (ldb (byte ,j ,p) ,n))) + (dotimes (,i ,i) + (decf ,p 6) + (,output (logior 128 (ldb (byte 6 ,p) ,n))))))) + (declare (optimize (ext:inhibit-warnings 3))) (cond ((< ,code #x80) (,output ,code)) - ((< ,code #x800) (utf8 ,code 1)) - ((< ,code #x10000) (utf8 ,code 2)) - ((< ,code #x200000) (utf8 ,code 3)) - ((< ,code #x4000000) (utf8 ,code 4)) - (t (utf8 ,code 5)))))) + ((< ,code #x800) (utf8 ,code 1)) + ((< ,code #x10000) (utf8 ,code 2)) + ((< ,code #x110000) (utf8 ,code 3)) + (t (error "How did this happen? Codepoint U+~X is illegal" ,code)))))) diff --git a/pcl/simple-streams/external-formats/void.lisp b/pcl/simple-streams/external-formats/void.lisp index 91842d7bb..629b77729 100644 --- a/pcl/simple-streams/external-formats/void.lisp +++ b/pcl/simple-streams/external-formats/void.lisp @@ -4,12 +4,13 @@ ;;; This code was written by Paul Foley and has been placed in the public ;;; domain. ;;; -(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/void.lisp,v 1.2 2008/06/19 01:41:34 rtoy Exp $") +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/void.lisp,v 1.3 2009/06/11 16:04:02 rtoy Rel $") ;; This is actually implemented in the external-formats code ;; It appears here only for reference, and will never get loaded -(define-external-format :void +(define-external-format :void (:size 0) + () (octets-to-code (state input unput) `(error 'void-external-format)) (code-to-octets (code state output) diff --git a/pcl/simple-streams/strategy.lisp b/pcl/simple-streams/strategy.lisp index f37e8efa2..aaafe278e 100644 --- a/pcl/simple-streams/strategy.lisp +++ b/pcl/simple-streams/strategy.lisp @@ -5,7 +5,7 @@ ;;; domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/strategy.lisp,v 1.12 2009/01/21 18:16:50 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/strategy.lisp,v 1.13 2009/06/11 16:04:02 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -326,7 +326,7 @@ (return-from read-char (lisp::eof-or-lose stream eof-error-p eof-value)))) (let* ((char (funcall (%read-char-fn (sm external-format stream)) - stream #'refill)) + stream #'refill)) (code (char-code char)) (ctrl (sm control-in stream))) (when (and (< code 32) ctrl (svref ctrl code)) diff --git a/tools/build-unidata.lisp b/tools/build-unidata.lisp new file mode 100644 index 000000000..6ac706223 --- /dev/null +++ b/tools/build-unidata.lisp @@ -0,0 +1,1083 @@ +;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: COMMON-LISP-USER -*- +;;; +;;; ********************************************************************** +;;; This code was written by Paul Foley and has been placed in the public +;;; domain. +;;; +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/tools/build-unidata.lisp,v 1.2 2009/06/11 16:04:02 rtoy Exp $") +;;; +;;; ********************************************************************** +;;; +;;; Build the Unicode data file +;;; +;;; This can be run from an 8-bit build just fine. The Unicode data +;;; file is read and written in portable way so it can be used on any +;;; platform. +;;; +;;; What to do: Run (build-unidata) then (write-unidata <path>) +;;; +;;; This only needs to be run if the Unicode database changes and we +;;; need a new Unicode data file. + +(in-package "COMMON-LISP-USER") + +(defstruct unidata + range + name+ + name + category + scase + numeric + decomp + combining + bidi + name1+ + name1 + qc-nfd + qc-nfkd + qc-nfc + qc-nfkc + comp-exclusions + full-case-lower + full-case-title + full-case-upper + case-fold-full + case-fold-simple + ) + +(defvar *unicode-data* (make-unidata)) + +;; The magic number for the unidata.bin file. (It's "*UCD", in +;; big-endian order.) +(defconstant +unicode-magic-number+ #x2A554344) + +;; The expected Unicode version +(defconstant +unicode-major-version+ 5) +(defconstant +unicode-minor-version+ 1) +(defconstant +unicode-update-version+ 0) + +;;; These need to be synched with code/unidata.lisp + +(defstruct dictionary + (cdbk (ext:required-argument) :read-only t :type simple-vector) + (keyv (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 8) (*))) + (keyl (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 8) (*))) + (codev (ext:required-argument) :read-only t + :type (simple-array (signed-byte 32) (*))) + (nextv (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 32) (*))) + (namev (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 32) (*)))) + +(defstruct range + (codes (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 32) (*)))) + +(defstruct ntrie + (split (ext:required-argument) :read-only t + :type (unsigned-byte 8)) + (hvec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 16) (*))) + (mvec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 16) (*)))) + +(defstruct (ntrie1 (:include ntrie)) + (lvec (ext:required-argument) :read-only t + :type (simple-array bit (*)))) + +(defstruct (ntrie2 (:include ntrie)) + (lvec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 2) (*)))) + +(defstruct (ntrie4 (:include ntrie)) + (lvec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 4) (*)))) + +(defstruct (ntrie8 (:include ntrie)) + (lvec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 8) (*)))) + +(defstruct (ntrie16 (:include ntrie)) + (lvec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 16) (*)))) + +(defstruct (ntrie32 (:include ntrie)) + (lvec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 32) (*)))) + + +(defstruct (scase (:include ntrie32)) + (svec (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 16) (*)))) + +(defstruct (decomp (:include ntrie32)) + (tabl (ext:required-argument) :read-only t + ;; This has type simple-string in unidata.lisp, but we can treat + ;; it as a vector of integers here + :type (simple-array (unsigned-byte 16) (*)))) + +(defstruct (full-case (:include ntrie32)) + (tabl (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 16) (*)))) + +(defstruct (case-folding (:include ntrie32)) + (tabl (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 16) (*)))) + +(defstruct (bidi (:include ntrie16)) + (tabl (ext:required-argument) :read-only t + :type (simple-array (unsigned-byte 16) (*)))) + +(defconstant +decomposition-type+ + '(nil "<compat>" "<initial>" "<medial>" "<final>" "<isolated>" + "<super>" "<sub>" "<fraction>" "<font>" "<noBreak>" + "<vertical>" "<wide>" "<narrow>" "<small>" "<square>" "<circle>")) + +(defconstant +bidi-class+ + '("L" "LRE" "LRO" "R" "AL" "RLE" "RLO" "PDF" "EN" "ES" "ET" "AN" "CS" + "NSM" "BN" "B" "S" "WS" "ON")) + + +;; Codebooks for encoding names. These are fairly arbitrary. Order isn't +;; important, except that if A is an initial substring of B, B must come +;; first (or A will never be used), but since they're searched in order it's +;; nice if more-common strings come before less-common ones. The entries +;; don't have to be complete words; but may not contain spaces or hyphens, +;; and there must be a single-character string for every valid character in +;; the set of names you want to look up (unless some character only ever +;; occurs in some other entry). +;; +;; *CODEBOOK* is for the modern character names, *CODEBOOK-1* is for +;; the Unicode 1.0 names. +(defvar *codebook* + #(" " "LETTER" "NA" "SMALL" "CAPITAL" "MATHEMATICAL" "RADICAL" "ARABIC" + "HANGUL" "LATIN" "SYLLABLE" "-" "WITH" "RA" "YI" "CJK" "FORM" "LIGATURE" + "FOR" "PATTERN" "SIGN" "MARK" "GREEK" "AND" "YA" "BOLD" "COMPATIBILITY" + "OLD" "KATAKANA" "SYMBOL" "ITALIC" "CUNEIFORM" "TAI" "UP" "U" "LINEAR" + "SYLLABICS" "ETHIOPIC" "ABOVE" "2" "Z" "CANADIAN" "DOTS" "LINE" + "HALFWIDTH" "X" "KANGXI" "MUSICAL" "VOWEL" "Q" "IDEOGRAPHIC" "DOT" + "RIGHTWARDS" "PARENTHESIZED" "LAM" "TIMES" "HALF" "FINAL" "ORIYA" "SERIF" + "DIGIT" "ARROW" "IDEOGRAPH" "RIGHT" "PA" "TAG" "CIRCLED" "MALAYALAM" "9" + "HAH" "SANS" "CIRCLE" "YEH" "Y" "OR" "DASIA" "WHITE" "KANNADA" "VARIATION" + "CYRILLIC" "1" "8" "SQUARE" "VARIA" "NOTATION" "TONE" "0" "3" "5" "LIGHT" + "BRAILLE" "DA" "ONE" "KA" "COMBINING" "4" "ISOLATED" "EQUAL" "NOT" + "SELECTOR" "VAI" "TO" "DOUBLE" "GEORGIAN" "OF" "BYZANTINE" "MODIFIER" + "HAMZA" "6" "ANGLE" "LEFTWARDS" "FOUR" "CARRIER" "VERTICAL" "TIBETAN" + "STROKE" "BELOW" "INITIAL" "MEEM" "PLUS" "LEFT" "7" "DOWN" "NUMBER" "TWO" + "KHMER" "OVER" "JEEM" "BARB" "SCRIPT" "MACRON" "LAO" "WEST" "W" "HOOK" + "TAMIL" "EIGHT" "COPTIC" "ALEF" "BAR" "E" "IDEOGRAM" "TA" "I" "RUNIC" + "DRAWINGS" "BLACK" "FIVE" "HORIZONTAL" "MONGOLIAN" "TILE" "GLAGOLITIC" + "LOWER" "NUMERIC" "SIX" "CREE" "BOX" "MYANMAR" "THREE" "PSILI" "LOW" + "ACUTE" "HARPOON" "BRACKET" "DEVANAGARI" "MAKSURA" "LIMBU" "FULLWIDTH" + "VOCALIC" "V" "JONGSEONG" "THAN" "HA" "CHARACTER" "BALINESE" "LI" "MA" + "NINE" "SEVEN" "DOMINO" "FRAKTUR" "HEBREW" "TILDE" "CHOSEONG" "LAGAB" + "BENGALI" "MEDIAL" "ARMENIAN" "HEAVY" "GUJARATI" "NEW" "TELUGU" "LA" + "CHAM" "OMEGA" "DESERET" "KHAROSHTHI" "SIOS" "HIRAGANA" "POINTING" "P" + "FUNCTIONAL" "APL" "THAI" "CHEROKEE" "LUE" "GURMUKHI" "F" "DIAERESIS" + "D" "SAURASHTRA" "BOPOMOFO" "B" "JUNGSEONG" "TETRAGRAM" "HIGH" "LONG" + "CIRCUMFLEX" "C" "GRAVE" "SINHALA" "ALPHA" "KHAH" "K" "TELEGRAPH" "LESS" + "OPEN" "HEXAGRAM" "H" "SYRIAC" "ACCENT" "LEPCHA" "L" "TRIANGLE" "GREATER" + "STRUCK" "OXIA" "O" "J" "REVERSED" "AEGEAN" "A" "SHORT" "TURNED" "T" "GA2" + "G" "MONOSPACE" "STOP" "S" "M" "NKO" "NUMERAL" "RIEUL" "R" "N")) + +(defvar *codebook-1* + #(" " "LETTER" "RA" "OR" "ARABIC" "SMALL" "CAPITAL" "LATIN" "GLYPH" "HANGUL" + "RIGHT" "IE" "LEFT" "CYRILLIC" "ONE" "SQUARED" "HACEK" "SQUARE" "DOUBLE" + "END" "FORMS" "WITH" "AND" "ON" "FOR" "LIGHT" "SPACING" "GEORGIAN" "EN" + "NON" "GE" "CIRCLED" "UPPER" "DOWN" "WHITE" "SO" "THAI" "ABOVE" "BRACKET" + "HALFWIDTH" "GREEK" "VERTICAL" "ISOLATE" "POINTING" "DIGIT" "HALF" "TEN" + "FINAL" "SCRIPT" "BELOW" "ACUTE" "POINT" "HEAVY" "-" "OPENING" "TE" + "GRAPHIC" "CLOSING" "HAMZAH" "OPEN" "KAERITEN" "MACRON" "BLACK" "TONOS" + "YA" "DOTS" "RING" "ANGLE" "SINGLE" "HAA" "LESS" "PERIOD" "KA" "UPSILON" + "CIRCUMFLEX" "BARB" "INITIAL" "ALEF" "FOUR" "DIAERESIS" "THAN" "SIGN" + "HOOK" "MEDIAL" "GRAVE" "PARENTHESIZED" "LIEUL" "OF" "REVERSED" "TWO" "UP" + "HORIZONTAL" "CEDILLA" "INVERSE" "SANS" "MU" "VOWEL" "ARROWS" "THREE" "FA" + "HARPOON" "BIEUB" "OVERLAY" "V" "X" "LAM" "EQUAL" "SERIF" "TIBETAN" "HA" + "DASHED" "COMMA" "GREATER" "MARK" "BARRED" "ARROW" "UNDERSCORE" "TRIANGLE" + "NUMBER" "SIOS" "FULLWIDTH" "DASH" "WAW" "LINE" "OVERSCORE" "UNDER" "U" + "TORTOISE" "BAR" "QUOTATION" "PARENTHESIS" "Q" "GIYEOG" "G" "EUM" "SARA" + "DOTLESS" "FRACTION" "OVER" "BREVE" "NOT" "YOGH" "LOWER" "DOT" "Y" "II" + "TAA" "EIGHT" "OGONEK" "SSANG" "CURLY" "JIEUJ" "MAI" "TILDE" "J" "KHO" + "DESCENDER" "HEADED" "CURL" "RETROFLEX" "R" "BAA" "SUPERSCRIPT" "TONE" + "NIEUN" "FIVE" "ZHE" "MODIFIER" "DIGEUD" "CORNER" "SUBSCRIPT" "TO" "INDIC" + "EASTERN" "LIGATURE" "CENTER" "PIEUP" "Z" "TAH" "SLASH" "WAVY" "NINE" "W" + "HIEUH" "DEVICE" "CAF" "ARMENIAN" "EPSILON" "FEATHERED" "SIX" "THO" "A" + "IOTA" "KEY" "NOR" "CONTROL" "BAN" "LENTICULAR" "L" "SEVEN" "B" "DAL" + "TAIL" "CHE" "OMEGA" "O" "HEBREW" "EQUIVALENT" "E" "SHORT" "TURNED" + "NEITHER" "CHI" "INVERTED" "MIEUM" "SEPARATOR" "TIEUT" "DHAH" "NOON" "N" + "PAIRED" "FEED" "KHAA" "SHELL" "HIGH" "TABULATION" "CHARACTER" + "IDEOGRAPHS" "I" "DAMMAH" "START" "MADDAH" "C" "TRIPLE" "STRUCK" "HORN" + "H" "K" "DELETE" "D" "TATWEEL" "STROKE" "MARBUTAH" "SHIFT" "TIP" "FROM" + "SHADOWED" "S" "THAA" "F" "M" "TRANSMISSION" "P" "TRANSFINITE" "T" "2")) + + + +(defun encode-name (string codebook) + (let ((p 0) + (res '())) + (loop while (< p (length string)) do + (dotimes (i (length codebook) + (error "\"~C\" is not in the codebook." (char string p))) + (let ((code (aref codebook i))) + (when (and (<= (length code) (- (length string) p)) + (string= string code :start1 p :end1 (+ p (length code)))) + (push i res) + (incf p (length code)) + (return))))) + (nreverse (coerce res 'vector)))) + +(defun name-lookup (name codebook keyv keyl nextv) + (let* ((current 0) + (posn 0)) + (loop + (let ((keyp (ash (aref nextv current) -18))) + (dotimes (i (aref keyl keyp) + (return-from name-lookup nil)) ; shouldn't happen + (let* ((str (aref codebook (aref keyv (+ keyp i)))) + (len (length str))) + (when (and (>= (length name) (+ posn len)) + (string= name str :start1 posn :end1 (+ posn len))) + (setq current + (+ (logand (aref nextv current) #x3FFFF) i)) + (if (= (incf posn len) (length name)) + (return-from name-lookup current) + (return))))))))) ; from DOTIMES - do outer LOOP again + +(defun build-dictionary (codebook entries) + (let ((khash (make-hash-table :test 'equalp)) + (thash (make-hash-table)) + (top 0) + (keyl (make-array 0 :element-type '(unsigned-byte 8))) + (keyv (make-array 0 :element-type '(unsigned-byte 8))) + vec1 vec2 vec3) + (labels ((add-to-trie (trie name codepoint) + (loop for ch across (encode-name name codebook) do + (let ((sub (cdr (assoc ch (rest trie))))) + (if sub + (setq trie sub) + (setq trie (cdar (push (cons ch (cons nil nil)) + (rest trie))))))) + (unless (or (null (car trie)) (= (car trie) codepoint)) + (error "Codepoints #x~4,'0X and #x~4,'0X are both named ~S." + (car trie) codepoint name)) + (setf (car trie) codepoint)) + (key (trie) + (map '(simple-array (unsigned-byte 8) (*)) #'car (rest trie))) + (pass1 (trie depth) + (setf (rest trie) (sort (rest trie) #'< :key #'car)) + (setf (gethash trie thash) + (list depth (1- (incf top)) (length (rest trie)))) + (setf (gethash (key trie) khash) t) + (mapc (lambda (x) (pass1 (cdr x) (1+ depth))) (rest trie))) + (pass2 (trie) + (let* ((x (gethash (gethash trie thash) thash)) + (n (car x))) + (setf (aref vec1 n) (if (first trie) (first trie) -1) + (aref vec2 n) (logior (ash (gethash (key trie) khash) + 18) + (cdr x)))) + (mapc (lambda (x) (pass2 (cdr x))) (rest trie)))) + (format t "~& Initializing...~%") + (let ((trie (cons nil nil))) + (loop for (name . code) in entries do (add-to-trie trie name code)) + (format t "~& Pass 1...~%") + (pass1 trie 0) + (format t "~& Sorting...~%") + (dolist (key (sort (loop for k being the hash-keys of khash + collect k) + #'> :key #'length)) + (let ((pos -1)) + (loop + (setq pos (search key keyv :start2 (1+ pos))) + (when (and pos (zerop (aref keyl pos))) + (setf (aref keyl pos) (length key))) + (when (and pos (= (aref keyl pos) (length key))) + (setf (gethash key khash) pos) + (return)) + (when (null pos) + (setf (gethash key khash) (length keyv)) + (setf keyl (adjust-array keyl (+ (length keyv) (length key)))) + (setf (aref keyl (length keyv)) (length key)) + (setf keyv (concatenate '(simple-array (unsigned-byte 8) (*)) + keyv key)) + (return))))) + (loop with off = 1 + for key in (sort (loop for x being the hash-values of thash + collect x) + (lambda (a b) (if (= (first a) (first b)) + (< (second a) (second b)) + (< (first a) (first b))))) + as i upfrom 0 + do (setf (gethash key thash) (cons i off) off (+ off (third key)))) + (setq vec1 (make-array top :element-type '(signed-byte 32)) + vec2 (make-array top :element-type '(unsigned-byte 32)) + vec3 (make-array top :element-type '(unsigned-byte 32))) + (format t "~& Pass 2...~%") + (pass2 trie) + (format t "~& Finalizing~%") + (dotimes (i top) + (let ((xxx (aref vec2 i))) + (dotimes (j (aref keyl (ash xxx -18))) + (setf (aref vec3 (+ (logand xxx #x3FFFF) j)) i)))) + (loop for (name . code) in entries do + (let ((n (name-lookup name codebook keyv keyl vec2))) + (unless n (error "Codepoint not found for ~S." name)) + (setf (ldb (byte 14 18) (aref vec3 n)) (length name)))))) + (make-dictionary :cdbk codebook + :keyv keyv :keyl keyl + :codev vec1 :nextv vec2 :namev vec3))) + +(defun pack (ucd range fn default bits split) + (let* ((lbits (1+ (logand split 15))) + (mbits (1+ (ash split -4))) + (upos 0) + (base 0) + (len (ash 1 mbits)) + (posn len) + (hvec (make-array (1+ (ash #x110000 (- (+ mbits lbits)))) + :element-type '(unsigned-byte 16))) + (ttop (1+ (ash #x110000 (- lbits)))) + (tvec (make-array ttop :element-type '(unsigned-byte 16))) + (lvec (make-array 0 :element-type (list 'unsigned-byte bits)))) + ;; pass 1 - build lvec and temporary tvec + (loop + ;;(format t "~&Pass 1: ~6,'0X~%" (ash base lbits)) + (let ((vec (make-array (ash 1 lbits) :initial-element default + :element-type (list 'unsigned-byte bits))) + (empty t)) + (loop while (and (< upos (length ucd)) + (< (ucdent-code (aref ucd upos)) + (ash (1+ base) lbits))) + do + (let* ((min (ucdent-code (aref ucd upos))) + (max (let ((x (position min (range-codes range)))) + (if (and x (evenp x)) + (aref (range-codes range) (1+ x)) + min))) + (i (max (- min (ash base lbits)) 0)) + (j (min (- max (ash base lbits)) (1- (ash 1 lbits))))) + (loop for i from i to j do + (setf (aref vec i) (funcall fn (aref ucd upos))) + (unless (= (aref vec i) default) + (setq empty nil))) + (if (< max (ash (1+ base) lbits)) + (incf upos) + (return)))) + (if empty + (setf (aref tvec base) #xFFFF) + (let ((idx (search vec lvec))) + (when (null idx) + (setq idx (length lvec)) + (setf lvec (adjust-array lvec (+ idx (ash 1 lbits)))) + (replace lvec vec :start1 idx)) + (setf (aref tvec base) idx)))) + (incf base) + (when (> (ash base lbits) #x10FFFF) + (return))) + ;; pass 2 - build hvec and transform tvec into mvec + (setf base 1 (aref hvec 0) 0) + (loop + ;;(format t "~&Pass 2: ~6,'0X~%" (ash base (+ mbits lbits))) + (let ((empty t)) + (loop for i from posn below (+ posn len) + when (/= (aref tvec i) #xFFFF) do (setq empty nil) + while empty) + (if empty + (progn + (setf (aref hvec base) #xFFFF) + (replace tvec tvec :start1 posn :start2 (+ posn len)) + (decf ttop len)) + (let ((idx (search tvec tvec + :start1 posn :end1 (+ posn len) + :end2 ttop)) + (dl len) (ds posn) (pinc len)) + (when (< idx posn) + (when (> (+ idx len) posn) + (setq dl (- posn idx) ds (+ idx len))) + (decf pinc dl) + (replace tvec tvec :start1 ds :start2 (+ ds dl)) + (decf ttop dl)) + (incf posn pinc) + (setf (aref hvec base) idx)))) + (incf base) + (when (> (ash base (+ mbits lbits)) #x10FFFF) + (return))) + (values hvec (lisp::shrink-vector tvec ttop) lvec))) + + + +(defun write-unidata (path) + (labels ((write16 (n stm) + (write-byte (ldb (byte 8 8) n) stm) + (write-byte (ldb (byte 8 0) n) stm)) + (write32 (n stm) + (write16 (ldb (byte 16 16) n) stm) + (write16 (ldb (byte 16 0) n) stm)) + (write-ntrie32 (data stm) + (write-byte (ntrie32-split data) stm) + (write16 (length (ntrie32-hvec data)) stm) + (write16 (length (ntrie32-mvec data)) stm) + (write16 (length (ntrie32-lvec data)) stm) + (write-vector (ntrie32-hvec data) stm :endian-swap :network-order) + (write-vector (ntrie32-mvec data) stm :endian-swap :network-order) + (write-vector (ntrie32-lvec data) stm :endian-swap :network-order)) + (write-ntrie16 (data stm) + (write-byte (bidi-split data) stm) + (write16 (length (bidi-hvec data)) stm) + (write16 (length (bidi-mvec data)) stm) + (write16 (length (bidi-lvec data)) stm) + (write-vector (bidi-hvec data) stm :endian-swap :network-order) + (write-vector (bidi-mvec data) stm :endian-swap :network-order) + (write-vector (bidi-lvec data) stm :endian-swap :network-order)) + (write-ntrie8 (data stm) + (write-byte (ntrie8-split data) stm) + (write16 (length (ntrie8-hvec data)) stm) + (write16 (length (ntrie8-mvec data)) stm) + (write16 (length (ntrie8-lvec data)) stm) + (write-vector (ntrie8-hvec data) stm :endian-swap :network-order) + (write-vector (ntrie8-mvec data) stm :endian-swap :network-order) + (write-vector (ntrie8-lvec data) stm :endian-swap :network-order)) + (write-ntrie2 (data stm) + (write-byte (ntrie2-split data) stm) + (write16 (length (ntrie2-hvec data)) stm) + (write16 (length (ntrie2-mvec data)) stm) + (write16 (length (ntrie2-lvec data)) stm) + (write-vector (ntrie2-hvec data) stm :endian-swap :network-order) + (write-vector (ntrie2-mvec data) stm :endian-swap :network-order) + (write-vector (ntrie2-lvec data) stm :endian-swap :network-order)) + (write-ntrie1 (data stm) + (write-byte (ntrie1-split data) stm) + (write16 (length (ntrie1-hvec data)) stm) + (write16 (length (ntrie1-mvec data)) stm) + (write16 (length (ntrie1-lvec data)) stm) + (write-vector (ntrie1-hvec data) stm :endian-swap :network-order) + (write-vector (ntrie1-mvec data) stm :endian-swap :network-order) + (write-vector (ntrie1-lvec data) stm :endian-swap :network-order)) + (updavte-index (val array) + (let ((result (vector-push val array))) + (unless result + (error "Index array too short for the data being written"))))) + (with-open-file (stm path :direction :io :if-exists :rename-and-delete + :element-type '(unsigned-byte 8)) + (let ((index (make-array 18 :fill-pointer 0))) + ;; File header + (write32 +unicode-magic-number+ stm) ; identification "magic" + ;; File format version + (write-byte 0 stm) + ;; Unicode version + (write-byte +unicode-major-version+ stm) + (write-byte +unicode-minor-version+ stm) + (write-byte +unicode-update-version+ stm) + (dotimes (i (array-dimension index 0)) + (write32 0 stm)) ; space for indices + (write32 0 stm) ; end marker + ;; Range data + (let ((data (unidata-range *unicode-data*))) + (update-index (file-position stm) index) + (write32 (length (range-codes data)) stm) + (write-vector (range-codes data) stm :endian-swap :network-order)) + ;; Character name data + (let ((data (unidata-name+ *unicode-data*))) + (update-index (file-position stm) index) + (write-byte (1- (length (dictionary-cdbk data))) stm) + (write16 (length (dictionary-keyv data)) stm) + (write32 (length (dictionary-codev data)) stm) + (let ((codebook (dictionary-cdbk data))) + (dotimes (i (length codebook)) + (write-byte (length (aref codebook i)) stm) + (dotimes (j (length (aref codebook i))) + (write-byte (char-code (char (aref codebook i) j)) stm)))) + (write-vector (dictionary-keyv data) stm :endian-swap :network-order) + (write-vector (dictionary-keyl data) stm :endian-swap :network-order) + (write-vector (dictionary-codev data) stm :endian-swap :network-order) + (write-vector (dictionary-nextv data) stm :endian-swap :network-order) + (write-vector (dictionary-namev data) stm :endian-swap :network-order)) + ;; Codepoint-to-name mapping + (let ((data (unidata-name *unicode-data*))) + (update-index (file-position stm) index) + (write-ntrie32 data stm)) + ;; Codepoint-to-category table + (let ((data (unidata-category *unicode-data*))) + (update-index (file-position stm) index) + (write-ntrie8 data stm)) + ;; Simple case mapping table + (let ((data (unidata-scase *unicode-data*))) + (update-index (file-position stm) index) + (write-ntrie32 data stm) + (write-byte (length (scase-svec data)) stm) + (write-vector (scase-svec data) stm :endian-swap :network-order)) + ;; Numeric data + (let ((data (unidata-numeric *unicode-data*))) + (update-index (file-position stm) index) + (write-ntrie32 data stm)) + ;; Decomposition data + (let ((data (unidata-decomp *unicode-data*))) + (update-index (file-position stm) index) + (write-ntrie32 data stm) + (write16 (length (decomp-tabl data)) stm) + (write-vector (decomp-tabl data) stm :endian-swap :network-order)) + ;; Combining classes + (let ((data (unidata-combining *unicode-data*))) + (update-index (file-position stm) index) + (write-ntrie8 data stm)) + ;; Bidi data + (let ((data (unidata-bidi *unicode-data*))) + (update-index (file-position stm) index) + (write-ntrie16 data stm) + (write-byte (length (bidi-tabl data)) stm) + (write-vector (bidi-tabl data) stm :endian-swap :network-order)) + ;; Unicode 1.0 names + (let ((data (unidata-name1+ *unicode-data*))) + (update-index (file-position stm) index) + (write-byte (1- (length (dictionary-cdbk data))) stm) + (write16 (length (dictionary-keyv data)) stm) + (write32 (length (dictionary-codev data)) stm) + (let ((codebook (dictionary-cdbk data))) + (dotimes (i (length codebook)) + (write-byte (length (aref codebook i)) stm) + (dotimes (j (length (aref codebook i))) + (write-byte (char-code (char (aref codebook i) j)) stm)))) + (write-vector (dictionary-keyv data) stm :endian-swap :network-order) + (write-vector (dictionary-keyl data) stm :endian-swap :network-order) + (write-vector (dictionary-codev data) stm :endian-swap :network-order) + (write-vector (dictionary-nextv data) stm :endian-swap :network-order) + (write-vector (dictionary-namev data) stm :endian-swap :network-order)) + (let ((data (unidata-name1 *unicode-data*))) + (update-index (file-position stm) index) + (write-ntrie32 data stm)) + ;; Normalization quick-check data + (update-index (file-position stm) index) + (let ((data (unidata-qc-nfd *unicode-data*))) + (write-ntrie1 data stm)) + (let ((data (unidata-qc-nfkd *unicode-data*))) + (write-ntrie1 data stm)) + (let ((data (unidata-qc-nfc *unicode-data*))) + (write-ntrie2 data stm)) + (let ((data (unidata-qc-nfkc *unicode-data*))) + (write-ntrie2 data stm)) + ;; Write composition exclusion table + (let ((data (unidata-comp-exclusions *unicode-data*))) + (update-index (file-position stm) index) + (write16 (length data) stm) + (write-vector data stm :endian-swap :network-order)) + ;; Write full-case lower data + (flet ((dump-full-case (data) + (update-index (file-position stm) index) + (write-ntrie32 data stm) + (write16 (length (full-case-tabl data)) stm) + (write-vector (full-case-tabl data) stm :endian-swap :network-order))) + (dump-full-case (unidata-full-case-lower *unicode-data*)) + (dump-full-case (unidata-full-case-title *unicode-data*)) + (dump-full-case (unidata-full-case-upper *unicode-data*))) + ;; Write case folding data + (let ((data (unidata-case-fold-simple *unicode-data*))) + (update-index (file-position stm) index) + (write-ntrie32 data stm)) + ;; case-folding full + (let ((data (unidata-case-fold-full *unicode-data*))) + (update-index (file-position stm) index) + (write-ntrie32 data stm) + (write16 (length (case-folding-tabl data)) stm) + (write-vector (case-folding-tabl data) stm :endian-swap :network-order)) + + ;; Patch up index + (file-position stm 8) + (dotimes (i (length index)) + (write32 (aref index i) stm))))) + nil) + + + +(defstruct (ucdent + (:constructor make-ucdent (code name cat comb bidi decomp + num1 num2 num3 mirror + name1 comment + upper lower title))) + code name cat comb bidi decomp num1 num2 num3 mirror name1 comment + upper lower title + aliases + mcode + norm-qc + comp-exclusion + full-case-lower + full-case-title + full-case-upper + case-fold-full + case-fold-simple + ;; ... + ) + +;; ucd-directory should be the directory where UnicodeData.txt is +;; located. +(defun foreach-ucd (name ucd-directory fn) + (format t "~& ~A~%" name) + (with-open-file (s (make-pathname :name name :type "txt" + :defaults ucd-directory)) + (cond + ((string= name "Unihan") + (loop for line = (read-line s nil) while line do + (when (char= (char line 0) #\U) + (let* ((tab1 (position #\Tab line)) + (tab2 (position #\Tab line :start (1+ tab1)))) + (funcall fn + (parse-integer line :radix 16 :start 2 :end tab1) + (subseq line (1+ tab1) tab2) + (subseq line (1+ tab2))))))) + ((string= name "CompositionExclusions") + (loop for line = (read-line s nil) while line do + (let ((code (parse-integer line :radix 16 :junk-allowed t))) + (when code + (funcall fn code))))) + (t + (loop with save = 0 + for line = (read-line s nil) as end = (position #\# line) + while line do + (loop while (and end (plusp end) + (char= (char line (1- end)) #\Space)) + do (decf end)) + (when (position #\; line :end end) + (let* ((split (loop for i = 0 then (1+ j) + as j = (position #\; line :start i :end end) + collect (string-trim '(#\Space #\Tab) + (subseq line i (or j end))) + while j)) + (first (first split)) + (second (second split)) + (length (length second)) + (brk (search ".." first)) + hi lo) + (if brk + (setq lo (parse-integer first :radix 16 :junk-allowed t) + hi (parse-integer first :radix 16 :start (+ brk 2))) + (setq lo (parse-integer first :radix 16) + hi lo)) + (cond ((and (> length 8) + (string= second ", First>" :start1 (- length 8))) + (setq save lo)) + ((and (> length 7) + (string= second ", Last>" :start1 (- length 7))) + (apply fn save hi + (concatenate 'string + (subseq second 0 (- length 7)) ">") + (rest (rest split)))) + (t + (apply fn lo hi (rest split))))))))))) + +(defun parse-decomposition (string) + (let ((type nil) (n 0)) + (when (char= (char string 0) #\<) + (setq n (1+ (position #\Space string))) + (setq type (subseq string 0 (1- n)))) + (list* type + (loop while (< n (length string)) + collect (multiple-value-bind (a b) + (parse-integer string :radix 16 + :start n :end (position #\Space string :start n)) + (setq n (1+ b)) + a))))) + +(declaim (ftype (function (&optional t) (values simple-vector range)) read-data)) +(defun read-data (&optional (ucd-directory #p"target:i18n/")) + (let ((vec (make-array 50000)) + (vec-hash (make-hash-table :size 15000)) + (pos 0) + (range (make-array 50 :element-type '(unsigned-byte 32))) + (rpos 0)) + (flet ((cat (x) (dpb (position (char x 0) "CZMPNLS") (byte 3 4) + (position (char x 1) "nsifepkcdmulto"))) + (num (x) (if (string= x "") nil (read-from-string x))) + (chr (x) (if (string= x "") nil (parse-integer x :radix 16))) + (str (x) (if (string= x "") nil x)) + (bool (x) (string= x "Y")) + (decomp (x) (if (string= x "") nil (parse-decomposition x)))) + (foreach-ucd "UnicodeData" ucd-directory + (lambda (min max name cat comb bidi decomp num1 num2 num3 + mirror name1 comment upper lower title) + (when (> max min) + (setf (aref range rpos) min (aref range (1+ rpos)) max) + (incf rpos 2)) + (when (position #\( name1) + (setq name1 (subseq name1 0 (1- (position #\( name1))))) + (setf (aref vec pos) + (make-ucdent min name (cat cat) (num comb) (str bidi) + (decomp decomp) + (num num1) (num num2) (num num3) + (bool mirror) (str name1) (str comment) + (chr upper) (chr lower) (chr title))) + (incf pos)))) + (lisp::shrink-vector vec pos) + (lisp::shrink-vector range rpos) + (flet ((find-ucd (key) + (let ((index (gethash key vec-hash))) + (if index + (aref vec index) + nil)))) + ;; Using FIND is rather slow, especially for the derived + ;; normalization props. We create a hash table that maps a + ;; codepoint to the index to VEC that contains the desired entry. + ;; This is much faster. We do it this way to keep the structure + ;; as close as possible to the original. + (loop for k from 0 below pos + do (setf (gethash (ucdent-code (aref vec k)) vec-hash) k)) + + (foreach-ucd "NameAliases" + ucd-directory + (lambda (min max alias) + (declare (ignore max)) + (push alias (ucdent-aliases (find-ucd min))))) + (foreach-ucd "NormalizationCorrections" + ucd-directory + (lambda (min max bad good &rest junk) + (declare (ignore max bad junk)) + (setf (ucdent-decomp (find-ucd min)) + (parse-decomposition good)))) + (foreach-ucd "BidiMirroring" + ucd-directory + (lambda (min max mirror) + (declare (ignore max)) + (setf (ucdent-mcode (find-ucd min)) + (parse-integer mirror :radix 16 :junk-allowed t)))) + (foreach-ucd "DerivedNormalizationProps" + ucd-directory + (lambda (min max prop &optional value) + (cond ((string= prop "NFD_QC") + (loop for i from min to max + as ent = (find-ucd i) do + (when ent + (setf (getf (ucdent-norm-qc ent) :nfd) + (intern value "KEYWORD"))))) + ((string= prop "NFKD_QC") + (loop for i from min to max + as ent = (find-ucd i) do + (when ent + (setf (getf (ucdent-norm-qc ent) :nfkd) + (intern value "KEYWORD"))))) + ((string= prop "NFC_QC") + (loop for i from min to max + as ent = (find-ucd i) do + (when ent + (setf (getf (ucdent-norm-qc ent) :nfc) + (intern value "KEYWORD"))))) + ((string= prop "NFKC_QC") + (loop for i from min to max + as ent = (find-ucd i) do + (when ent + (setf (getf (ucdent-norm-qc ent) :nfkc) + (intern value "KEYWORD")))))))) + (foreach-ucd "CompositionExclusions" + ucd-directory + (lambda (min) + (let ((entry (find-ucd min))) + (setf (ucdent-comp-exclusion entry) t)))) + + (foreach-ucd "SpecialCasing" + ucd-directory + (lambda (min max lower title upper &rest condition) + (declare (ignore max)) + (when (string= (car condition) "") + (flet ((parse-casing (string) + (rest (parse-decomposition string)))) + (let ((ent (find-ucd min))) + (setf (ucdent-full-case-lower ent) (parse-casing lower)) + (setf (ucdent-full-case-title ent) (parse-casing title)) + (setf (ucdent-full-case-upper ent) (parse-casing upper))))))) + + (foreach-ucd "CaseFolding" + ucd-directory + (lambda (min max mode expansion &rest info) + (declare (ignore max info)) + (flet ((parse-folding (string) + (rest (parse-decomposition string)))) + (let ((ent (find-ucd min))) + (cond ((string= mode "T") + ;; We ignore these language-specific foldings. + ) + ((string= mode "F") + ;; Full case folding + (setf (ucdent-case-fold-full ent) (parse-folding expansion))) + (t + ;; Simple case folding (C or S) + (setf (ucdent-case-fold-simple ent) (car (parse-folding expansion))))))))) + (values vec (make-range :codes range))))) + + + +(defun pack-name (ucdent name1 dictionary) + (let* ((cdbk (dictionary-cdbk dictionary)) + (keyv (dictionary-keyv dictionary)) + (keyl (dictionary-keyl dictionary)) + (nextv (dictionary-nextv dictionary)) + (name (if name1 (ucdent-name1 ucdent) (ucdent-name ucdent)))) + (or (and name (name-lookup name cdbk keyv keyl nextv)) 0))) + +(defun pack-case (ucdent svec) + (let* ((uo (if (ucdent-upper ucdent) + (- (ucdent-code ucdent) (ucdent-upper ucdent)) + 0)) + (lo (if (ucdent-lower ucdent) + (- (ucdent-code ucdent) (ucdent-lower ucdent)) + 0)) + (to (if (ucdent-title ucdent) + (- (ucdent-code ucdent) (ucdent-title ucdent)) + 0)) + pu pl pt) + (unless (setq pu (position (abs uo) svec)) + (setq pu (fill-pointer svec)) + (vector-push-extend (abs uo) svec)) + (unless (setq pl (position (abs lo) svec)) + (setq pl (fill-pointer svec)) + (vector-push-extend (abs lo) svec)) + (unless (setq pt (position (abs to) svec)) + (setq pt (fill-pointer svec)) + (vector-push-extend (abs to) svec)) + (logior (ash (if (minusp to) (logior 128 pt) pt) 16) + (ash (if (minusp lo) (logior 128 pl) pl) 8) + (if (minusp uo) (logior 128 pu) pu)))) + +(defun pack-numeric (ucdent) + (let* ((n3 (ucdent-num3 ucdent)) + (fl (cond ((ucdent-num1 ucdent) #x3800000) + ((ucdent-num2 ucdent) #x1800000) + (n3 #x800000) + (t 0))) + (neg (if (and n3 (minusp n3)) #x900000 0)) + (num (if n3 (ash (abs (numerator n3)) 3) 0)) + (den (if n3 (1- (denominator n3)) 0))) + (logior fl neg num den))) + +(defun pack-decomp (ucdent tabl) + (if (not (ucdent-decomp ucdent)) + 0 + (let* ((d (loop for i in (rest (ucdent-decomp ucdent)) + if (<= i #xFFFF) collect i + else collect (logior (ldb (byte 10 10) (- i #x10000)) #xD800) + and collect (logior (ldb (byte 10 0) (- i #x10000)) #xDC00))) + (l (length d)) + (n (search d tabl))) + (unless n + (setq n (fill-pointer tabl)) + (dolist (x d) (vector-push-extend x tabl))) + ;; high 5 bits: decomp type + ;; next 5 bits: unused + ;; next 6 bits: length, in code units + ;; low 16 bits: index into tabl + (logior n (ash l 16) + (ash (position (first (ucdent-decomp ucdent)) + +decomposition-type+ :test #'equalp) + 27))))) + +(defun pack-full-case (ucdent tabl entry) + (if (not (funcall entry ucdent)) + 0 + (let* ((d (loop for i in (funcall entry ucdent) + if (<= i #xFFFF) collect i + else collect (logior (ldb (byte 10 10) (- i #x10000)) #xD800) + and collect (logior (ldb (byte 10 0) (- i #x10000)) #xDC00))) + (l (length d)) + (n (search d tabl))) + (unless n + (setq n (fill-pointer tabl)) + (dolist (x d) (vector-push-extend x tabl))) + ;; next 6 bits: length, in code units + ;; low 16 bits: index into tabl + (logior n (ash l 16))))) + +(defun pack-bidi (ucdent tabl) + (logior (position (ucdent-bidi ucdent) +bidi-class+ :test #'string=) + (if (ucdent-mirror ucdent) #x20 #x00) + (if (ucdent-mcode ucdent) + (let* ((n (- (ucdent-mcode ucdent) (ucdent-code ucdent))) + (x (abs n))) + (logior + (ash (if (< x #x10) + x + (let ((k (position x tabl))) + (if k k (prog1 (fill-pointer tabl) (vector-push-extend x tabl))))) + 6) + (if (< x #x10) #x000 #x800) + (if (minusp n) #x400 #x000))) + 0))) + +(defun pack-case-folding-simple (ucdent) + (or (ucdent-case-fold-simple ucdent) + 0)) + +(defun pack-case-folding-full (entry tabl) + (if (not (ucdent-case-fold-full entry)) + 0 + (let* ((d (loop for i in (ucdent-case-fold-full entry) + if (<= i #xFFFF) collect i + else collect (logior (ldb (byte 10 10) (- i #x10000)) #xD800) + and collect (logior (ldb (byte 10 0) (- i #x10000)) #xDC00))) + (l (length d)) + (n (search d tabl))) + (unless n + (setq n (fill-pointer tabl)) + (dolist (x d) (vector-push-extend x tabl))) + ;; next 6 bits: length, in code units + ;; low 16 bits: index into tabl + (logior n (ash l 16))))) + +;; ucd-directory should be the directory where UnicodeData.txt is +;; located. +(defun build-unidata (&optional (ucd-directory "target:i18n/")) + (format t "~&Reading data~%") + (multiple-value-bind (ucd range) (read-data ucd-directory) + (setf (unidata-range *unicode-data*) range) + (format t "~&Building character name tables~%") + (let* ((data (loop for ent across ucd + when (char/= (char (ucdent-name ent) 0) #\<) + collect (cons (ucdent-name ent) (ucdent-code ent)) + when (ucdent-aliases ent) + nconc (loop for name in (ucdent-aliases ent) + collect (cons name (ucdent-code ent))))) + (dict (build-dictionary *codebook* data))) + (setf (unidata-name+ *unicode-data*) dict) + (multiple-value-bind (hvec mvec lvec) + (pack ucd range (lambda (x) (pack-name x nil dict)) 0 32 #x54) + (setf (unidata-name *unicode-data*) + (make-ntrie32 :split #x54 :hvec hvec :mvec mvec :lvec lvec)))) + (format t "~&Building Unicode 1.0 character name tables~%") + (let* ((data (loop for ent across ucd + when (plusp (length (ucdent-name1 ent))) + collect (cons (ucdent-name1 ent) (ucdent-code ent)))) + (dict (build-dictionary *codebook-1* data))) + (setf (unidata-name1+ *unicode-data*) dict) + (multiple-value-bind (hvec mvec lvec) + (pack ucd range (lambda (x) (pack-name x t dict)) 0 32 #x54) + (setf (unidata-name1 *unicode-data*) + (make-ntrie32 :split #x72 :hvec hvec :mvec mvec :lvec lvec)))) + (format t "~&Building general category table~%") + (multiple-value-bind (hvec mvec lvec) + (pack ucd range #'ucdent-cat 0 8 #x53) + (setf (unidata-category *unicode-data*) + (make-ntrie8 :split #x53 :hvec hvec :mvec mvec :lvec lvec))) + (format t "~&Building simple case-conversion table~%") + (let ((svec (make-array 100 :element-type '(unsigned-byte 16) + :fill-pointer 0 :adjustable t))) + (vector-push-extend 0 svec) + (multiple-value-bind (hvec mvec lvec) + (pack ucd range (lambda (x) (pack-case x svec)) + 0 32 #x62) + (setf (unidata-scase *unicode-data*) + (make-scase :split #x62 :hvec hvec :mvec mvec :lvec lvec + :svec (copy-seq svec))))) + (format t "~&Building numeric-values table~%") + (multiple-value-bind (hvec mvec lvec) + (pack ucd range #'pack-numeric 0 32 #x63) + (setf (unidata-numeric *unicode-data*) + (make-ntrie32 :split #x63 :hvec hvec :mvec mvec :lvec lvec))) + (format t "~&Building decomposition table~%") + (let ((tabl (make-array 6000 :element-type '(unsigned-byte 16) + :fill-pointer 0 :adjustable t))) + (multiple-value-bind (hvec mvec lvec) + (pack ucd range (lambda (x) (pack-decomp x tabl)) + 0 32 #x62) + (setf (unidata-decomp *unicode-data*) + (make-decomp :split #x62 :hvec hvec :mvec mvec :lvec lvec + :tabl (copy-seq tabl))))) + (format t "~&Building combining-class table~%") + (multiple-value-bind (hvec mvec lvec) + (pack ucd range #'ucdent-comb 0 8 #x64) + (setf (unidata-combining *unicode-data*) + (make-ntrie8 :split #x64 :hvec hvec :mvec mvec :lvec lvec))) + (format t "~&Building bidi information table~%") + (let ((tabl (make-array 10 :element-type '(unsigned-byte 16) + :fill-pointer 0 :adjustable t))) + (multiple-value-bind (hvec mvec lvec) + (pack ucd range (lambda (x) (pack-bidi x tabl)) + 0 16 #x62) + (setf (unidata-bidi *unicode-data*) + (make-bidi :split #x62 :hvec hvec :mvec mvec :lvec lvec + :tabl (copy-seq tabl))))) + (format t "~&Building normalization quick-check tables~%") + (multiple-value-bind (hvec mvec lvec) + (pack ucd range (lambda (x) + (ecase (getf (ucdent-norm-qc x) :nfd :y) + (:y 0) (:n 1))) + 0 1 #x47) + (setf (unidata-qc-nfd *unicode-data*) + (make-ntrie1 :split #x47 :hvec hvec :mvec mvec :lvec lvec))) + (multiple-value-bind (hvec mvec lvec) + (pack ucd range (lambda (x) + (ecase (getf (ucdent-norm-qc x) :nfkd :y) + (:y 0) (:n 1))) + 0 1 #x47) + (setf (unidata-qc-nfkd *unicode-data*) + (make-ntrie1 :split #x47 :hvec hvec :mvec mvec :lvec lvec))) + (multiple-value-bind (hvec mvec lvec) + (pack ucd range (lambda (x) + (ecase (getf (ucdent-norm-qc x) :nfc :y) + (:y 0) (:m 1) (:n 2))) + 0 2 #x56) + (setf (unidata-qc-nfc *unicode-data*) + (make-ntrie2 :split #x56 :hvec hvec :mvec mvec :lvec lvec))) + (multiple-value-bind (hvec mvec lvec) + (pack ucd range (lambda (x) + (ecase (getf (ucdent-norm-qc x) :nfkc :y) + (:y 0) (:m 1) (:n 2))) + 0 2 #x55) + (setf (unidata-qc-nfkc *unicode-data*) + (make-ntrie2 :split #x55 :hvec hvec :mvec mvec :lvec lvec))) + (format t "~&Building composition exclusion table~%") + (let ((exclusions (make-array 1 :element-type '(unsigned-byte 32) + :adjustable t + :fill-pointer 0))) + (loop for ent across ucd do + (when (ucdent-comp-exclusion ent) + (vector-push-extend (ucdent-code ent) exclusions))) + (setf (unidata-comp-exclusions *unicode-data*) (copy-seq exclusions))) + (format t "~&Building full case mapping tables~%") + (format t "~& Lower...~%") + (let ((tabl (make-array 100 :element-type '(unsigned-byte 16) + :fill-pointer 0 :adjustable t)) + (split #x65)) + (multiple-value-bind (hvec mvec lvec) + (pack ucd range (lambda (x) (pack-full-case x tabl #'ucdent-full-case-lower)) + 0 32 split) + (setf (unidata-full-case-lower *unicode-data*) + (make-full-case :split split :hvec hvec :mvec mvec :lvec lvec + :tabl (copy-seq tabl))))) + (format t "~& Title...~%") + (let ((tabl (make-array 100 :element-type '(unsigned-byte 16) + :fill-pointer 0 :adjustable t)) + (split #x65)) + (multiple-value-bind (hvec mvec lvec) + (pack ucd range (lambda (x) (pack-full-case x tabl #'ucdent-full-case-title)) + 0 32 split) + (setf (unidata-full-case-title *unicode-data*) + (make-full-case :split split :hvec hvec :mvec mvec :lvec lvec + :tabl (copy-seq tabl))))) + (format t "~& Upper...~%") + (let ((tabl (make-array 100 :element-type '(unsigned-byte 16) + :fill-pointer 0 :adjustable t)) + (split #x65)) + (multiple-value-bind (hvec mvec lvec) + (pack ucd range (lambda (x) (pack-full-case x tabl #'ucdent-full-case-upper)) + 0 32 split) + (setf (unidata-full-case-upper *unicode-data*) + (make-full-case :split split :hvec hvec :mvec mvec :lvec lvec + :tabl (copy-seq tabl))))) + + (format t "~&Building case-folding tables~%") + (format t "~& Simple...~%") + (let ((split #x54)) + (multiple-value-bind (hvec mvec lvec) + (pack ucd range (lambda (x) (pack-case-folding-simple x)) + 0 32 split) + (setf (unidata-case-fold-simple *unicode-data*) + (make-ntrie32 :split split :hvec hvec :mvec mvec :lvec lvec)))) + (format t "~& Full...~%") + (let ((tabl (make-array 100 :element-type '(unsigned-byte 16) + :fill-pointer 0 :adjustable t)) + (split #x65)) + (multiple-value-bind (hvec mvec lvec) + (pack ucd range (lambda (x) (pack-case-folding-full x tabl)) + 0 32 split) + (setf (unidata-case-fold-full *unicode-data*) + (make-case-folding :split split :hvec hvec :mvec mvec :lvec lvec + :tabl (copy-seq tabl))))) + nil)) + diff --git a/tools/build.sh b/tools/build.sh index 1d2491e51..f05b210d4 100755 --- a/tools/build.sh +++ b/tools/build.sh @@ -172,10 +172,13 @@ OLDLISP="${BASE}-2/lisp/lisp -noinit $FPU_MODE" ENABLE=$ENABLE3 BUILD=2 +# We shouldn't have to run build-world again because nothing should +# have changed in the C code after the first build. +BUILD_WORLD2= buildit TARGET=$BASE-4 -CLEAN_FLAGS="-K all" +#CLEAN_FLAGS="-K all" OLDLISP="${BASE}-3/lisp/lisp -noinit $FPU_MODE" ENABLE=$ENABLE4 diff --git a/tools/cross-build-world.sh b/tools/cross-build-world.sh index a900b7aab..4aa9ddd7e 100755 --- a/tools/cross-build-world.sh +++ b/tools/cross-build-world.sh @@ -1,9 +1,28 @@ #!/bin/sh +usage() { + echo "cross-build-world.sh [-crl] target-dir cross-dir cross-compiler-script [build-binary [flags]]" + echo " -c Clean target and cross directories before compiling" + echo " -r Recompile lisp runtime" + echo " -l Load cross-compiled kernel to make a new lisp kernel" +} + +while getopts "crl" arg +do + case $arg in + c) CLEAN_DIR=yes ;; + r) BUILD_RUNTIME=yes ;; + l) LOAD_KERNEL=yes ;; + h | \?) usage; exit 1 ;; + esac +done + +shift `expr $OPTIND - 1` + if [ "$1" = "" -o "$2" = "" ] then - echo "Usage: $0 target-directory cross-directory cross-compiler-script [build-binary] [build-flags...]" - exit 1 + usage + exit 1 fi if [ ! -d "$1" ] @@ -27,6 +46,7 @@ TARGET="`echo $1 | sed 's:/*$::'`" CROSS="`echo $2 | sed 's:/*$::'`" SCRIPT="$3" LISP="${4:-lisp}" + if [ $# -ge 4 ] then shift 4 @@ -34,6 +54,11 @@ else shift 3 fi +if [ "$CLEAN_DIR" = "yes" ]; then + echo "Cleaning directories: $TARGET $CROSS" + src/tools/clean-target.sh $TARGET $CROSS +fi + if [ ! -d "$CROSS" ] then # Create a directory tree that mirrors the source directory tree @@ -86,3 +111,13 @@ $LISP "$@" -noinit -nositeinit <<EOF (load "target:tools/worldbuild") (ext:quit) EOF + +if [ "$BUILD_RUNTIME" = "yes" ]; then + echo Building runtime + (cd $TARGET/lisp; make) +fi + +if [ "$LOAD_KERNEL" = "yes" ]; then + echo Load kernel.core + src/tools/load-world.sh -p $TARGET cross-compiled +fi diff --git a/tools/load-world.sh b/tools/load-world.sh index e96f5c767..672a357d5 100755 --- a/tools/load-world.sh +++ b/tools/load-world.sh @@ -2,14 +2,17 @@ usage() { - echo "load-world.sh [-?p] target-directory version-string" + echo "load-world.sh [-?p] target-directory [version-string]" echo " -p Skip loading of PCL (Mostly for cross-compiling)" echo " -? This help" + echo " If the version-string is not given, the current date and time is used" exit 1 } SKIP_PCL= NO_PCL_FEATURE= +# Default version is the date. +VERSION="CVS Head `date '+%Y-%m-%d %H:%M:%S'`" while getopts "p" arg do @@ -20,10 +23,6 @@ do esac done -if [ $# -ne 2 ]; then - usage -fi - if [ ! -d "$1" ] then echo "$1 isn't a directory" @@ -39,6 +38,11 @@ if [ -n "$SKIP_PCL" ]; then NO_PCL_FEATURE="(pushnew :no-pcl *features*)" fi +# If version string give, use it, otherwise use the default. +if [ -n "$2" ]; then + VERSION=$2 +fi + $TARGET/lisp/lisp -core $TARGET/lisp/kernel.core <<EOF (in-package :cl-user) diff --git a/tools/make-extra-dist.sh b/tools/make-extra-dist.sh index 28db10b9e..63e0a38e0 100755 --- a/tools/make-extra-dist.sh +++ b/tools/make-extra-dist.sh @@ -70,6 +70,15 @@ do $DESTDIR/lib/cmucl/lib/subsystems/ done +# Not sure we really need these, but we'll install them in the +# ext-formats directory. (Should they go somewhere else?) +#install -d ${GROUP} ${OWNER} -m 0755 $DESTDIR/lib/cmucl/lib/ext-formats +#for f in src/i18n/NameAliases.txt src/i18n/UnicodeData.txt +#do +# echo $f +# install ${GROUP} ${OWNER} -m 0644 $f $DESTDIR/lib/cmucl/lib/ext-formats/ +#done + # install -d ${GROUP} ${OWNER} -m 0755 $DESTDIR/lib/cmucl/lib/fonts/ # install ${GROUP} ${OWNER} -m 0644 misc/8x13u.snf misc/fonts.dir \ # $DESTDIR/lib/cmucl/lib/fonts/ diff --git a/tools/make-main-dist.sh b/tools/make-main-dist.sh index 210f6094b..d7617a1ae 100755 --- a/tools/make-main-dist.sh +++ b/tools/make-main-dist.sh @@ -117,7 +117,7 @@ do fi done -for f in src/pcl/simple-streams/external-formats/*.lisp src/pcl/simple-streams/external-formats/aliases +for f in src/pcl/simple-streams/external-formats/*.lisp src/pcl/simple-streams/external-formats/aliases src/i18n/unidata.bin do install ${GROUP} ${OWNER} -m 0644 $f $DESTDIR/lib/cmucl/lib/ext-formats/ done diff --git a/tools/worldbuild.lisp b/tools/worldbuild.lisp index 1dd398197..9381a033f 100644 --- a/tools/worldbuild.lisp +++ b/tools/worldbuild.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/tools/worldbuild.lisp,v 1.53 2006/06/30 18:41:32 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/tools/worldbuild.lisp,v 1.54 2009/06/11 16:04:02 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -95,6 +95,8 @@ "target:code/bit-bash" "target:code/byte-interp" "target:code/array" + #+unicode + "target:code/unidata" "target:code/char" "target:code/lispinit" "target:code/seq" diff --git a/tools/worldcom.lisp b/tools/worldcom.lisp index 1d5a182d0..b9508c27e 100644 --- a/tools/worldcom.lisp +++ b/tools/worldcom.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/tools/worldcom.lisp,v 1.99 2007/10/25 15:17:07 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/tools/worldcom.lisp,v 1.100 2009/06/11 16:04:02 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -208,6 +208,8 @@ (comf "target:compiler/proclaim") +#+unicode +(comf "target:code/unidata") (comf "target:code/char") (comf "target:code/misc") (comf "target:code/extensions" :byte-compile t) @@ -239,7 +241,11 @@ (comf "target:code/backq" :byte-compile *byte-compile*) (comf "target:code/serve-event") + +(comf "target:code/extfmts") + (comf "target:code/fd-stream") +(comf "target:code/fd-stream-extfmt") (comf "target:code/pathname") #-no-runtime (comf "target:code/pathname" :byte-compile t) (comf "target:code/filesys") @@ -292,8 +298,6 @@ (comf "target:code/remote") (comf "target:code/cmu-site") -(comf "target:code/extfmts") - (when (c:backend-featurep :mp) (comf "target:code/multi-proc")) diff --git a/tools/worldload.lisp b/tools/worldload.lisp index 943a0c510..0b0c318d6 100644 --- a/tools/worldload.lisp +++ b/tools/worldload.lisp @@ -6,7 +6,7 @@ ;;; If you want to use this code or any part of CMU Common Lisp, please contact ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/tools/worldload.lisp,v 1.109 2008/11/12 15:04:25 rtoy Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/tools/worldload.lisp,v 1.110 2009/06/11 16:04:02 rtoy Rel $ ;;; ;;; ********************************************************************** ;;; @@ -159,6 +159,11 @@ :environment-name (concatenate 'string (c:backend-name c:*backend*) " backend"))) +;; extfmts needs the compiler +;;#-(or no-compiler runtime unicode-bootstrap) +#+(and unicode (not (or unicode-bootstrap no-compiler runtime))) +(maybe-byte-load "code:fd-stream-extfmt") + ;;; PCL. ;;; #-(or no-pcl runtime) (maybe-byte-load "pcl:pclload") -- GitLab