From b62fc1758f4ae8459e6d7e8386ca547274b4daa2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= <debian@jff-webhosting.net>
Date: Fri, 1 Sep 2017 18:53:23 +0200
Subject: New upstream version 6.6.1

---
 .gitignore                        |     3 -
 CMakeLists.txt                    |     4 +-
 HISTORY                           |    19 +
 Makefile.am                       |     2 +-
 README                            |    16 +-
 README.ja                         |   195 -
 README.md                         |    29 +-
 README_japanese                   |   183 +
 configure.ac                      |     4 +-
 dist.info                         |     2 +-
 doc/API                           |    12 +-
 doc/API.ja                        |    11 +-
 doc/RE                            |    50 +-
 doc/RE.ja                         |    60 +-
 doc/UNICODE_PROPERTIES            |  1390 +--
 index.html                        |     4 +-
 index_ja.html                     |     4 +-
 src/Makefile.am                   |     2 +
 src/euc_jp.c                      |     4 +-
 src/gperf_fold_key_conv.py        |     2 +
 src/gperf_unfold_key_conv.py      |     2 +
 src/make_unicode_egcb.sh          |     7 +
 src/make_unicode_egcb_data.py     |   236 +
 src/make_unicode_fold_data.py     |     4 +-
 src/make_unicode_property_data.py |   723 +-
 src/oniguruma.h                   |    25 +-
 src/regcomp.c                     |   253 +-
 src/regenc.c                      |    10 +
 src/regenc.h                      |    11 +-
 src/regerror.c                    |     8 -
 src/regexec.c                     |   134 +-
 src/regint.h                      |    99 +-
 src/regparse.c                    |   646 +-
 src/regparse.h                    |    24 +-
 src/regsyntax.c                   |     2 +
 src/unicode.c                     |   200 +
 src/unicode_egcb_data.c           |  1382 ++
 src/unicode_property_data.c       | 24194 ++++++++++++++++++------------------
 src/unicode_property_data_posix.c |    14 +-
 test/.gitignore                   |     4 +
 test/Makefile.am                  |    11 +-
 test/test_utf8.c                  |  1066 ++
 test/testc.c                      |    19 +-
 test/testu.c                      |    40 +
 44 files changed, 17226 insertions(+), 13884 deletions(-)
 delete mode 100644 README.ja
 create mode 100644 README_japanese
 create mode 100755 src/make_unicode_egcb.sh
 create mode 100755 src/make_unicode_egcb_data.py
 create mode 100644 src/unicode_egcb_data.c
 create mode 100644 test/.gitignore
 create mode 100644 test/test_utf8.c

diff --git a/.gitignore b/.gitignore
index 99f5e71..fe616c2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,8 +20,5 @@ Makefile.in
 *~
 .libs/
 .deps/
-testc
-testcu
-testp
 /build
 m4/*.m4
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b40fb2c..9e1efe8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 2.8)
 project(oniguruma C)
 
 set(PACKAGE onig)
-set(PACKAGE_VERSION "6.5.0")
+set(PACKAGE_VERSION "6.6.0")
 
 set(USE_COMBINATION_EXPLOSION_CHECK 0)
 set(USE_CRNL_AS_LINE_TERMINATOR 0)
@@ -81,7 +81,7 @@ install_library(onig)
 install_header(src/oniguruma.h src/onigposix.h src/oniggnu.h)
 
 install_doc(doc/API doc/API.ja doc/RE doc/RE.ja doc/UNICODE_PROPERTIES)
-install_data(AUTHORS COPYING HISTORY README)
+install_data(AUTHORS COPYING HISTORY README.md)
 
 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/oniguruma.pc
   DESTINATION lib/pkgconfig)
diff --git a/HISTORY b/HISTORY
index 9db4712..91675e9 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,5 +1,24 @@
 History
 
+2017/08/30: Version 6.6.1
+
+2017/08/29: fix definition of \X to (?>\O(?:\Y\O)*)
+
+2017/08/28: Version 6.6.0
+
+2017/08/26: fix #67: can't compile with Visual Studio 2005
+2017/08/24: rename Absent clear to Range clear
+2017/08/21: [new] Extended Grapheme Cluster \X and boundary \y, \Y
+2017/08/17: fix: invalid index(ctype) value assigned to Unicode Block properties
+2017/08/16: --enable-crnl-as-line-terminator to be deprecated
+2017/08/15: [new] ASCII only mode options (?WDSP)
+2017/08/14: [new] ONIG_OPTION_XXXX_IS_ASCII  options
+2017/08/11: disable OP_CCLASS_NODE
+2017/08/11: [spec] Absent clear restore previous range value at backtrack
+2017/08/07: optimize for simple one char repetition in Absent expression
+2017/08/07: fix: invalid impl. for reluctant repetition in Absent expression
+2017/08/04: remove compile switch USE_NAMED_GROUP
+
 2017/08/03: Version 6.5.0
 
 2017/07/30: [new] support Absent clear (Absent functions)
diff --git a/Makefile.am b/Makefile.am
index b044f93..4703747 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4,7 +4,7 @@ ACLOCAL_AMFLAGS = -I m4
 
 SUBDIRS = src test sample
 
-EXTRA_DIST = oniguruma.pc.in HISTORY README.ja README.md \
+EXTRA_DIST = oniguruma.pc.in HISTORY README_japanese README.md \
 	index.html index_ja.html \
 	CMakeLists.txt dist.info oniguruma.pc.cmake.in cmake/dist.cmake \
 	src/config.h.cmake.in \
diff --git a/README b/README
index cc2b51f..00fe162 100644
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
-README  2017/07/08
+README  2017/08/25
 
-Oniguruma  ----   (C) K.Kosako <kkosako0@gmail.com>
+Oniguruma  ----   (C) K.Kosako
 
 https://github.com/kkos/oniguruma
 
@@ -179,16 +179,4 @@ Source Files
   win32/config.h     config.h for Win32
 
 
-
-ToDo
-
-  ? case fold flag: Katakana <-> Hiragana.
-  ? add ONIG_OPTION_NOTBOS/NOTEOS. (\A, \z, \Z)
- ?? \X (== \PM\pM*)
- ?? implement syntax behavior ONIG_SYN_CONTEXT_INDEP_ANCHORS.
- ?? transmission stopper. (return ONIG_STOP from match_at())
-
 and I'm thankful to Akinori MUSHA.
-
-
-Mail Address: K.Kosako <kkosako0@gmail.com>
diff --git a/README.ja b/README.ja
deleted file mode 100644
index 826a8e7..0000000
--- a/README.ja
+++ /dev/null
@@ -1,195 +0,0 @@
-README.ja  2016/05/06
-
-����  ----   (C) K.Kosako <kkosako0@gmail.com>
-
-https://github.com/kkos/oniguruma
-
-���֤�����ɽ���饤�֥��Ǥ��롣
-���Υ饤�֥�����Ĺ�ϡ����줾�������ɽ�����֥������Ȥ��Ȥ�
-ʸ�����󥳡��ǥ��󥰤����Ǥ��뤳�ȤǤ��롣
-
-���ݡ��Ȥ��Ƥ���ʸ�����󥳡��ǥ���:
-
-  ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE,
-  EUC-JP, EUC-TW, EUC-KR, EUC-CN,
-  Shift_JIS, Big5, GB18030, KOI8-R, CP1251,
-  ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5,
-  ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10,
-  ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16
-
-* GB18030: ���ݷ��λ���
-* CP1251:  Byte����
-------------------------------------------------------------
-
-�饤����
-
-  BSD�饤����
-
-
-���󥹥ȡ���
-
- ��������: Unix��Cygwin�Ķ�
-
-   1. autoreconf -vfi   (* configure������ץȤ��ʤ��Ȥ�����)
-
-   2. ./configure
-   3. make
-   4. make install
-
-   ���󥤥󥹥ȡ���
-
-     make uninstall
-
-   ������ǧ
-
-     onig-config --cflags
-     onig-config --libs
-     onig-config --prefix
-     onig-config --exec-prefix
-
-
-
- ��������: Windows 64/32bit (Visual Studio)�Ķ�
-
-   make_win64 ���뤤�� make_win32 ��¹�
-
-      onig_s.lib:  static link library
-      onig.dll:    dynamic link library
-
-   * ư��ƥ��� (ASCII/Shift_JIS)
-      1. cd src
-      2. copy ..\windows\testc.c .
-      3. nmake -f Makefile.windows ctest
-
-   (Visual Studio Community 2015 ��ư���ǧ)
-
-
-
-����ɽ��
-
-  doc/RE.ja�򻲾�
-
-
-������ˡ
-
-  ���Ѥ���ץ������ǡ�oniguruma.h�򥤥󥯥롼�ɤ���(Oniguruma API�ξ��)��
-  Oniguruma API�ˤĤ��Ƥϡ�doc/API.ja�򻲾ȡ�
-
-  oniguruma.h���������Ƥ��뷿̾UChar(== unsigned char)��̵���ˤ��������
-  �ˤϡ�ONIG_ESCAPE_UCHAR_COLLISION��define���Ƥ���oniguruma.h�򥤥󥯥롼��
-  ���뤳�ȡ����ΤȤ��ˤ�UChar��������줺��OnigUChar�Ȥ���̾��������Τߤ�
-  ͭ���ˤʤ롣
-
-  oniguruma.h���������Ƥ��뷿̾regex_t��̵���ˤ��������ˤϡ�
-  ONIG_ESCAPE_REGEX_T_COLLISION��define���Ƥ���oniguruma.h�򥤥󥯥롼��
-  ���뤳�ȡ����ΤȤ��ˤ�regex_t��������줺��OnigRegexType, OnigRegex�Ȥ���
-  ̾��������Τߤ�ͭ���ˤʤ롣
-
-  Unix/Cygwin��ǥ���ѥ��롢��󥯤�������㡧
-  (prefix��/usr/local�ΤȤ�)
-  cc sample.c -L/usr/local/lib -lonig
-
-  GNU libtool����Ѥ��Ƥ���Τǡ��ץ�åȥե����ब��ͭ�饤�֥��򥵥ݡ��Ȥ���
-  ����С����ѤǤ���褦�ˤʤäƤ��롣
-  ��Ū�饤�֥��ȶ�ͭ�饤�֥��Τɤ������Ѥ��뤫����ꤹ����ˡ���¹Ի����Ǥ�
-  �Ķ�������ˡ�ˤĤ��Ƥϡ���ʬ��Ĵ�٤Ʋ�������
-
-
-  Win32�ǥ����ƥ��å���󥯥饤�֥��(onig_s.lib)���󥯤�����ˤϡ�
-  ����ѥ��뤹��Ȥ��� -DONIG_EXTERN=extern �򥳥�ѥ���������ɲä��뤳�ȡ�
-
-
-������ץ������
-
-  sample/simple.c    �Ǿ��� (Oniguruma API)
-  sample/names.c     ̾���դ����롼�ץ�����Хå�������
-  sample/encode.c    ���Ĥ���ʸ�����󥳡��ǥ��󥰻�����
-  sample/listcap.c   �������ǽ�λ�����
-  sample/posix.c     POSIX API������
-  sample/sql.c       ���ѥ᥿ʸ����ǽ������ (SQL-like �ѥ�����)
-  sample/user_property.c �桼�����Unicode�ץ��ѥƥ��λ�����
-
-
-�ƥ��ȥץ������
-  sample/syntax.c    Perl��Java��ASISʸˡ�Υƥ���
-  sample/crnl.c      --enable-crnl-as-line-terminator �ƥ���
-
-
-�������ե�����
-
-  oniguruma.h        ����API�إå� (����)
-  onig-config.in     onig-config�ץ������ �ƥ�ץ졼��
-
-  regenc.h           ʸ�����󥳡��ǥ������Ȥߥإå�
-  regint.h           �������
-  regparse.h         regparse.c��regcomp.c������������
-  regcomp.c          ����ѥ��롢��Ŭ���ؿ�
-  regenc.c           ʸ�����󥳡��ǥ������Ȥ�
-  regerror.c         ���顼��å������ؿ�
-  regext.c           ��ĥAPI�ؿ�
-  regexec.c          �������ȹ�ؿ�
-  regparse.c         ����ɽ���ѥ�������ϴؿ�
-  regsyntax.c        ����ɽ���ѥ�����ʸˡ�ؿ����ȹ���ʸˡ���
-  regtrav.c          ��������ڽ��ؿ�
-  regversion.c       �Ǿ���ؿ�
-  st.h               �ϥå���ơ��֥�ؿ����
-  st.c               �ϥå���ơ��֥�ؿ�
-
-  oniggnu.h          GNU regex API�إå� (����)
-  reggnu.c           GNU regex API�ؿ�
-
-  onigposix.h        POSIX API�إå� (����)
-  regposerr.c        POSIX API���顼��å������ؿ�
-  regposix.c         POSIX API�ؿ�
-
-  mktable.c          ʸ�������ץơ��֥������ץ������
-  ascii.c            ASCII ���󥳡��ǥ���
-  euc_jp.c           EUC-JP ���󥳡��ǥ���
-  euc_tw.c           EUC-TW ���󥳡��ǥ���
-  euc_kr.c           EUC-KR, EUC-CN ���󥳡��ǥ���
-  sjis.c             Shift_JIS ���󥳡��ǥ���
-  big5.c             Big5 ���󥳡��ǥ���
-  gb18030.c          GB18030 ���󥳡��ǥ���
-  koi8.c             KOI8 ���󥳡��ǥ���
-  koi8_r.c           KOI8-R ���󥳡��ǥ���
-  cp1251.c           CP1251 ���󥳡��ǥ���
-  iso8859_1.c        ISO-8859-1  (Latin-1)
-  iso8859_2.c        ISO-8859-2  (Latin-2)
-  iso8859_3.c        ISO-8859-3  (Latin-3)
-  iso8859_4.c        ISO-8859-4  (Latin-4)
-  iso8859_5.c        ISO-8859-5  (Cyrillic)
-  iso8859_6.c        ISO-8859-6  (Arabic)
-  iso8859_7.c        ISO-8859-7  (Greek)
-  iso8859_8.c        ISO-8859-8  (Hebrew)
-  iso8859_9.c        ISO-8859-9  (Latin-5 �ޤ��� Turkish)
-  iso8859_10.c       ISO-8859-10 (Latin-6 �ޤ��� Nordic)
-  iso8859_11.c       ISO-8859-11 (Thai)
-  iso8859_13.c       ISO-8859-13 (Latin-7 �ޤ��� Baltic Rim)
-  iso8859_14.c       ISO-8859-14 (Latin-8 �ޤ��� Celtic)
-  iso8859_15.c       ISO-8859-15 (Latin-9 �ޤ��� West European with Euro)
-  iso8859_16.c       ISO-8859-16
-                     (Latin-10 �ޤ��� South-Eastern European with Euro)
-  utf8.c             UTF-8    ���󥳡��ǥ���
-  utf16_be.c         UTF-16BE ���󥳡��ǥ���
-  utf16_le.c         UTF-16LE ���󥳡��ǥ���
-  utf32_be.c         UTF-32BE ���󥳡��ǥ���
-  utf32_le.c         UTF-32LE ���󥳡��ǥ���
-  unicode.c          Unicode���󥳡��ǥ��󥰤ζ��̽���
-
-  win32/Makefile     Win32�� Makefile (for VC++)
-  win32/config.h     Win32�� config.h
-
-
-
-�ķ�
-
-  ? case fold flag: Katakana <-> Hiragana
-  ? ONIG_OPTION_NOTBOS/NOTEOS�ɲ� (\A, \z, \Z)
- ?? \X (== \PM\pM*)
- ?? ʸˡ���� ONIG_SYN_CONTEXT_INDEP_ANCHORS�μ���
- ?? �������ְ�ư��߱黻�� (match_at()����ONIG_STOP���֤�)
-
-and I'm thankful to Akinori MUSHA.
-
-
-���ɥ쥹: K.Kosako <kkosako0@gmail.com>
diff --git a/README.md b/README.md
index ec84884..da0ce1f 100644
--- a/README.md
+++ b/README.md
@@ -5,8 +5,8 @@ https://github.com/kkos/oniguruma
 
 FIXED Security Issues:
 --------------------------
-  CVE-2017-9224, CVE-2017-9225, CVE-2017-9226
-  CVE-2017-9227, CVE-2017-9228, CVE-2017-9229
+  **CVE-2017-9224, CVE-2017-9225, CVE-2017-9226**
+  **CVE-2017-9227, CVE-2017-9228, CVE-2017-9229**
 
 
 Oniguruma is a regular expressions library.
@@ -26,6 +26,21 @@ Supported character encodings:
 * CP1251:  contributed by Byte
 
 
+New feature of version 6.6.1
+--------------------------
+
+* Fix definition of \X
+
+
+New feature of version 6.6.0
+--------------------------
+
+* NEW: ASCII only mode options for character type/property (?WDSP)
+* NEW: Extended Grapheme Cluster boundary \y, \Y (*original)
+* NEW: Extended Grapheme Cluster \X
+* Range-clear (Absent-clear) operator restores previous range in backtrack.
+
+
 New feature of version 6.5.0
 --------------------------
 
@@ -33,24 +48,24 @@ New feature of version 6.5.0
 * NEW: \R (general newline) \N (no newline)
 * NEW: \O (true anychar)
 * NEW: if-then-else syntax   (?(...)...\|...)
-* NEW: Backreference validity checker  (*original)
+* NEW: Backreference validity checker (?(xxx)) (*original)
 * NEW: Absent repeater (?~absent)
 * NEW: Absent expression   (?~|absent|expr)  (*original)
-* NEW: Absent range cutter (?~|absent)     (*original)
+* NEW: Absent stopper (?~|absent)     (*original)
 
 
 New feature of version 6.4.0
 --------------------------
 
 * Fix fatal problem of endless repeat on Windows
-* NEW: call zero (call the total regexp)
-* NEW: relative backref and relative call by positive number
+* NEW: call zero (call the total regexp) \g<0>
+* NEW: relative backref/call by positive number \k<+n>, \g<+n>
 
 
 New feature of version 6.3.0
 --------------------------
 
-* NEW SYNTAX: escape-o-brace for octal codepoint.
+* NEW: octal codepoint \o{.....}
 
 
 New feature of version 6.1.2
diff --git a/README_japanese b/README_japanese
new file mode 100644
index 0000000..28da31b
--- /dev/null
+++ b/README_japanese
@@ -0,0 +1,183 @@
+README.ja  2017/08/25
+
+����  ----   (C) K.Kosako <kkosako0@gmail.com>
+
+https://github.com/kkos/oniguruma
+
+���֤�����ɽ���饤�֥��Ǥ��롣
+���Υ饤�֥�����Ĺ�ϡ����줾�������ɽ�����֥������Ȥ��Ȥ�
+ʸ�����󥳡��ǥ��󥰤����Ǥ��뤳�ȤǤ��롣
+
+���ݡ��Ȥ��Ƥ���ʸ�����󥳡��ǥ���:
+
+  ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE,
+  EUC-JP, EUC-TW, EUC-KR, EUC-CN,
+  Shift_JIS, Big5, GB18030, KOI8-R, CP1251,
+  ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5,
+  ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10,
+  ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16
+
+* GB18030: ���ݷ��λ���
+* CP1251:  Byte����
+------------------------------------------------------------
+
+�饤����
+
+  BSD�饤����
+
+
+���󥹥ȡ���
+
+ ��������: Unix��Cygwin�Ķ�
+
+   1. autoreconf -vfi   (* configure������ץȤ��ʤ��Ȥ�����)
+
+   2. ./configure
+   3. make
+   4. make install
+
+   ���󥤥󥹥ȡ���
+
+     make uninstall
+
+   ������ǧ
+
+     onig-config --cflags
+     onig-config --libs
+     onig-config --prefix
+     onig-config --exec-prefix
+
+
+
+ ��������: Windows 64/32bit (Visual Studio)�Ķ�
+
+   make_win64 ���뤤�� make_win32 ��¹�
+
+      onig_s.lib:  static link library
+      onig.dll:    dynamic link library
+
+   * ư��ƥ��� (ASCII/Shift_JIS)
+      1. cd src
+      2. copy ..\windows\testc.c .
+      3. nmake -f Makefile.windows ctest
+
+   (Visual Studio Community 2015 ��ư���ǧ)
+
+
+
+����ɽ��
+
+  doc/RE.ja�򻲾�
+
+
+������ˡ
+
+  ���Ѥ���ץ������ǡ�oniguruma.h�򥤥󥯥롼�ɤ���(Oniguruma API�ξ��)��
+  Oniguruma API�ˤĤ��Ƥϡ�doc/API.ja�򻲾ȡ�
+
+  oniguruma.h���������Ƥ��뷿̾UChar(== unsigned char)��̵���ˤ��������
+  �ˤϡ�ONIG_ESCAPE_UCHAR_COLLISION��define���Ƥ���oniguruma.h�򥤥󥯥롼��
+  ���뤳�ȡ����ΤȤ��ˤ�UChar��������줺��OnigUChar�Ȥ���̾��������Τߤ�
+  ͭ���ˤʤ롣
+
+  oniguruma.h���������Ƥ��뷿̾regex_t��̵���ˤ��������ˤϡ�
+  ONIG_ESCAPE_REGEX_T_COLLISION��define���Ƥ���oniguruma.h�򥤥󥯥롼��
+  ���뤳�ȡ����ΤȤ��ˤ�regex_t��������줺��OnigRegexType, OnigRegex�Ȥ���
+  ̾��������Τߤ�ͭ���ˤʤ롣
+
+  Unix/Cygwin��ǥ���ѥ��롢��󥯤�������㡧
+  (prefix��/usr/local�ΤȤ�)
+  cc sample.c -L/usr/local/lib -lonig
+
+  GNU libtool����Ѥ��Ƥ���Τǡ��ץ�åȥե����ब��ͭ�饤�֥��򥵥ݡ��Ȥ���
+  ����С����ѤǤ���褦�ˤʤäƤ��롣
+  ��Ū�饤�֥��ȶ�ͭ�饤�֥��Τɤ������Ѥ��뤫����ꤹ����ˡ���¹Ի����Ǥ�
+  �Ķ�������ˡ�ˤĤ��Ƥϡ���ʬ��Ĵ�٤Ʋ�������
+
+
+  Win32�ǥ����ƥ��å���󥯥饤�֥��(onig_s.lib)���󥯤�����ˤϡ�
+  ����ѥ��뤹��Ȥ��� -DONIG_EXTERN=extern �򥳥�ѥ���������ɲä��뤳�ȡ�
+
+
+������ץ������
+
+  sample/simple.c    �Ǿ��� (Oniguruma API)
+  sample/names.c     ̾���դ����롼�ץ�����Хå�������
+  sample/encode.c    ���Ĥ���ʸ�����󥳡��ǥ��󥰻�����
+  sample/listcap.c   �������ǽ�λ�����
+  sample/posix.c     POSIX API������
+  sample/sql.c       ���ѥ᥿ʸ����ǽ������ (SQL-like �ѥ�����)
+  sample/user_property.c �桼�����Unicode�ץ��ѥƥ��λ�����
+
+
+�ƥ��ȥץ������
+  sample/syntax.c    Perl��Java��ASISʸˡ�Υƥ���
+  sample/crnl.c      --enable-crnl-as-line-terminator �ƥ���
+
+
+�������ե�����
+
+  oniguruma.h        ����API�إå� (����)
+  onig-config.in     onig-config�ץ������ �ƥ�ץ졼��
+
+  regenc.h           ʸ�����󥳡��ǥ������Ȥߥإå�
+  regint.h           �������
+  regparse.h         regparse.c��regcomp.c������������
+  regcomp.c          ����ѥ��롢��Ŭ���ؿ�
+  regenc.c           ʸ�����󥳡��ǥ������Ȥ�
+  regerror.c         ���顼��å������ؿ�
+  regext.c           ��ĥAPI�ؿ�
+  regexec.c          �������ȹ�ؿ�
+  regparse.c         ����ɽ���ѥ�������ϴؿ�
+  regsyntax.c        ����ɽ���ѥ�����ʸˡ�ؿ����ȹ���ʸˡ���
+  regtrav.c          ��������ڽ��ؿ�
+  regversion.c       �Ǿ���ؿ�
+  st.h               �ϥå���ơ��֥�ؿ����
+  st.c               �ϥå���ơ��֥�ؿ�
+
+  oniggnu.h          GNU regex API�إå� (����)
+  reggnu.c           GNU regex API�ؿ�
+
+  onigposix.h        POSIX API�إå� (����)
+  regposerr.c        POSIX API���顼��å������ؿ�
+  regposix.c         POSIX API�ؿ�
+
+  mktable.c          ʸ�������ץơ��֥������ץ������
+  ascii.c            ASCII ���󥳡��ǥ���
+  euc_jp.c           EUC-JP ���󥳡��ǥ���
+  euc_tw.c           EUC-TW ���󥳡��ǥ���
+  euc_kr.c           EUC-KR, EUC-CN ���󥳡��ǥ���
+  sjis.c             Shift_JIS ���󥳡��ǥ���
+  big5.c             Big5 ���󥳡��ǥ���
+  gb18030.c          GB18030 ���󥳡��ǥ���
+  koi8.c             KOI8 ���󥳡��ǥ���
+  koi8_r.c           KOI8-R ���󥳡��ǥ���
+  cp1251.c           CP1251 ���󥳡��ǥ���
+  iso8859_1.c        ISO-8859-1  (Latin-1)
+  iso8859_2.c        ISO-8859-2  (Latin-2)
+  iso8859_3.c        ISO-8859-3  (Latin-3)
+  iso8859_4.c        ISO-8859-4  (Latin-4)
+  iso8859_5.c        ISO-8859-5  (Cyrillic)
+  iso8859_6.c        ISO-8859-6  (Arabic)
+  iso8859_7.c        ISO-8859-7  (Greek)
+  iso8859_8.c        ISO-8859-8  (Hebrew)
+  iso8859_9.c        ISO-8859-9  (Latin-5 �ޤ��� Turkish)
+  iso8859_10.c       ISO-8859-10 (Latin-6 �ޤ��� Nordic)
+  iso8859_11.c       ISO-8859-11 (Thai)
+  iso8859_13.c       ISO-8859-13 (Latin-7 �ޤ��� Baltic Rim)
+  iso8859_14.c       ISO-8859-14 (Latin-8 �ޤ��� Celtic)
+  iso8859_15.c       ISO-8859-15 (Latin-9 �ޤ��� West European with Euro)
+  iso8859_16.c       ISO-8859-16
+                     (Latin-10 �ޤ��� South-Eastern European with Euro)
+  utf8.c             UTF-8    ���󥳡��ǥ���
+  utf16_be.c         UTF-16BE ���󥳡��ǥ���
+  utf16_le.c         UTF-16LE ���󥳡��ǥ���
+  utf32_be.c         UTF-32BE ���󥳡��ǥ���
+  utf32_le.c         UTF-32LE ���󥳡��ǥ���
+  unicode.c          Unicode���󥳡��ǥ��󥰤ζ��̽���
+
+  win32/Makefile     Win32�� Makefile (for VC++)
+  win32/config.h     Win32�� config.h
+
+
+and I'm thankful to Akinori MUSHA.
diff --git a/configure.ac b/configure.ac
index efaf5e1..d585690 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
 dnl Process this file with autoconf to produce a configure script.
-AC_INIT(onig, 6.5.0)
+AC_INIT(onig, 6.6.1)
 
 AC_CONFIG_MACRO_DIR([m4])
 
@@ -24,7 +24,7 @@ fi
 
 dnl check for CRNL_AS_LINE_TERMINATOR
 AC_ARG_ENABLE(crnl-as-line-terminator,
-	[  --enable-crnl-as-line-terminator   enable CR+NL as line terminator],
+	[  --enable-crnl-as-line-terminator   deprecated],
 	[crnl_as_line_terminator=$enableval])
 if test "${crnl_as_line_terminator}" = yes; then
   AC_DEFINE(USE_CRNL_AS_LINE_TERMINATOR,1,[Define if enable CR+NL as line terminator])
diff --git a/dist.info b/dist.info
index 76575fe..52df1f7 100644
--- a/dist.info
+++ b/dist.info
@@ -1,7 +1,7 @@
 --- This file is part of LuaDist project
 
 name = "onig"
-version = "6.5.0"
+version = "6.6.1"
 
 desc = "Oniguruma is a regular expressions library."
 author = "K.Kosako"
diff --git a/doc/API b/doc/API
index d12a46b..f0d0f09 100644
--- a/doc/API
+++ b/doc/API
@@ -1,4 +1,4 @@
-Oniguruma API  Version 6.1.0  2016/08/22
+Oniguruma API  Version 6.6.0  2017/08/15
 
 #include <oniguruma.h>
 
@@ -83,6 +83,16 @@ Oniguruma API  Version 6.1.0  2016/08/22
       ONIG_OPTION_DONT_CAPTURE_GROUP only named group captured.
       ONIG_OPTION_CAPTURE_GROUP      named and no-named group captured.
 
+      ONIG_OPTION_WORD_IS_ASCII      ASCII only word (\w, \p{Word}, [[:word:]])
+                                     ASCII only word bound (\b)
+      ONIG_OPTION_DIGIT_IS_ASCII     ASCII only digit (\d, \p{Digit}, [[:digit:]])
+      ONIG_OPTION_SPACE_IS_ASCII     ASCII only space (\s, \p{Space}, [[:space:]])
+      ONIG_OPTION_POSIX_IS_ASCII     ASCII only POSIX properties
+                                     (includes word, digit, space)
+                                     (alnum, alpha, blank, cntrl, digit, graph,
+                                      lower, print, punct, space, upper, xdigit,
+                                      word)
+
   5 enc:        character encoding.
 
       ONIG_ENCODING_ASCII         ASCII
diff --git a/doc/API.ja b/doc/API.ja
index cd77f7f..213a783 100644
--- a/doc/API.ja
+++ b/doc/API.ja
@@ -1,4 +1,4 @@
-鬼車インターフェース Version 6.1.0   2016/08/22
+鬼車インターフェース Version 6.6.0   2017/08/15
 
 #include <oniguruma.h>
 
@@ -82,6 +82,15 @@
 
       ONIG_OPTION_DONT_CAPTURE_GROUP 名前付き捕獲式集合のみ捕獲
       ONIG_OPTION_CAPTURE_GROUP      名前無し捕獲式集合も捕獲
+      ONIG_OPTION_WORD_IS_ASCII      wordがASCIIのみ (\w, \p{Word}, [[:word:]])
+                                     word boundがASCIIのみ (\b)
+      ONIG_OPTION_DIGIT_IS_ASCII     digitがASCIIのみ (\d, \p{Digit}, [[:digit:]])
+      ONIG_OPTION_SPACE_IS_ASCII     spaceがASCIIのみ (\s, \p{Space}, [[:space:]])
+      ONIG_OPTION_POSIX_IS_ASCII     POSIXプロパティがASCIIのみ
+                                     (word, digit, spaceを全て含んでいる)
+                                     (alnum, alpha, blank, cntrl, digit, graph,
+                                      lower, print, punct, space, upper, xdigit,
+                                      word)
 
   5 enc:        文字エンコーディング
 
diff --git a/doc/RE b/doc/RE
index 16cc888..8781b38 100644
--- a/doc/RE
+++ b/doc/RE
@@ -1,4 +1,4 @@
-Oniguruma Regular Expressions Version 6.5.0    2017/07/30
+Oniguruma Regular Expressions Version 6.6.0    2017/08/29
 
 syntax: ONIG_SYNTAX_RUBY (default)
 
@@ -80,6 +80,16 @@ syntax: ONIG_SYNTAX_RUBY (default)
 
   \O       true anychar      (?m:.)    (* original function)
 
+  \X       Extended Grapheme Cluster    (?>\O(?:\Y\O)*)
+
+           \X doesn't check whether matching start position is boundary.
+           Write as \y\X if you want to ensure it.
+
+           Unicode case:
+             See [Unicode Standard Annex #29: http://unicode.org/reports/tr29/]
+
+           Not Unicode:   (?>\r\n|\O)
+
 
   Character Property
 
@@ -139,6 +149,9 @@ syntax: ONIG_SYNTAX_RUBY (default)
   $       end of the line
   \b      word boundary
   \B      non-word boundary
+  \y      Extended Grapheme Cluster boundary
+  \Y      Extended Grapheme Cluster non-boundary
+
   \A      beginning of string
   \Z      end of string, or before newline at the end
   \z      end of string
@@ -207,11 +220,19 @@ syntax: ONIG_SYNTAX_RUBY (default)
 
   (?#...)            comment
 
-  (?imx-imx)         option on/off
-                         i: ignore case
-                         m: multi-line (dot (.) also matches newline)
-                         x: extended form
-  (?imx-imx:subexp)  option on/off for subexp
+  (?imxWDSP-imxWDSP)         option on/off
+                               i: ignore case
+                               m: multi-line (dot (.) also matches newline)
+                               x: extended form
+                               W: ASCII only word (\w, \p{Word}, [[:word:]])
+                                  ASCII only word bound (\b)
+                               D: ASCII only digit (\d, \p{Digit}, [[:digit:]])
+                               S: ASCII only space (\s, \p{Space}, [[:space:]])
+                               P: ASCII only POSIX properties (includes W,D,S)
+                                  (alnum, alpha, blank, cntrl, digit, graph,
+                                   lower, print, punct, space, upper, xdigit, word)
+
+  (?imxWDSP-imxWDSP:subexp)  option on/off for subexp
 
   (?:subexp)         non-capturing group
   (subexp)           capturing group
@@ -245,24 +266,23 @@ syntax: ONIG_SYNTAX_RUBY (default)
   (?~absent)         Absent repeater    (* proposed by Tanaka Akira)
                      This works like .* (more precisely \O*), but it is
                      limited by the range that does not include the string
-                     match with absent.
+                     match with <absent>.
                      This is a written abbreviation of (?~|absent|\O*).
                      \O* is used as a repeater.
 
   (?~|absent|exp)    Absent expression  (* original)
                      This works like "exp", but it is limited by the range
-                     that does not include the string match with absent.
+                     that does not include the string match with <absent>.
 
                      ex. (?~|345|\d*)  "12345678"  ==> "12", "1", ""
 
-  (?~|absent)        Absent cutter (* original)
+  (?~|absent)        Absent stopper (* original)
                      After passed this operator, string right range is limited
                      at the point that does not include the string match whth
-                     absent.
+                     <absent>.
 
-  (?~|)              Absent clear
-                     Clear the effects caused by Absent cutters.
-                     (* This operation is not cancelled by backtrack.)
+  (?~|)              Range clear
+                     Clear the effects caused by Absent stoppers.
 
      * Nested Absent functions are not supported and the behavior
        is undefined.
@@ -273,7 +293,7 @@ syntax: ONIG_SYNTAX_RUBY (default)
 
                condition_exp can be a backreference number/name or a normal
                regular expression.
-               When condition_exp is a backreference, both then_exp and
+               When condition_exp is a backreference number/name, both then_exp and
                else_exp can be omitted.
                Then it works as a backreference validity checker.
 
@@ -420,7 +440,7 @@ A-2. Original extensions
 A-3. Missing features compared with perl 5.8.0
 
    + \N{name}
-   + \l,\u,\L,\U, \X, \C
+   + \l,\u,\L,\U,\C
    + (?{code})
    + (??{code})
 
diff --git a/doc/RE.ja b/doc/RE.ja
index c05468d..97fde3f 100644
--- a/doc/RE.ja
+++ b/doc/RE.ja
@@ -1,4 +1,4 @@
-鬼車 正規表現 Version 6.5.0    2017/07/30
+鬼車 正規表現 Version 6.6.0    2017/08/29
 
 使用文法: ONIG_SYNTAX_RUBY (既定値)
 
@@ -80,6 +80,16 @@
 
   \O       真任意文字  (?m:.)      (* 原作)
 
+  \X       拡張書記素房     (?>\O(?:\Y\O)*)
+
+           \Xは照合の開始位置が拡張書記素房の境界かどうかを確認しない。
+           それを確実にしたければ、\y\Xと書けば良い。
+
+           Unicodeの場合:
+             参照 [Unicode Standard Annex #29: http://unicode.org/reports/tr29/]
+
+           Unicode以外の場合:   (?>\r\n|\O)
+
 
   Character Property
 
@@ -139,10 +149,13 @@
   $       行末
   \b      単語境界
   \B      非単語境界
+  \y      拡張書記素房 境界
+  \Y      拡張書記素房 非境界
+
   \A      文字列先頭
   \Z      文字列末尾、または文字列末尾の改行の直前
   \z      文字列末尾
-  \G      照合開始位置
+  \G      探索開始位置
   \K      保持 (結果の開始位置をこの位置に保つ)
 
 
@@ -205,11 +218,19 @@
 7. 拡張式集合
 
   (?#...)           注釈
-  (?imx-imx)        孤立オプション
-                      i: 大文字小文字照合
-                      m: 複数行
-                      x: 拡張形式
-  (?imx-imx:式)     式オプション
+  (?imxWDSP-imxWDSP)      孤立オプション
+                            i: 大文字小文字照合
+                            m: 複数行
+                            x: 拡張形式
+                            W: wordがASCIIのみ (\w, \p{Word}, [[:word:]])
+                               word境界がASCIIのみ (\b)
+                            D: digitがASCIIのみ (\d, \p{Digit}, [[:digit:]])
+                            S: spaceがASCIIのみ (\s, \p{Space}, [[:space:]])
+                            P: POSIXプロパティがASCIIのみ (W,D,Sを全て含んでいる)
+                               (alnum, alpha, blank, cntrl, digit, graph,
+                                lower, print, punct, space, upper, xdigit, word)
+
+  (?imxWDSP-imxWDSP:式)   式オプション
 
   (式)              捕獲式集合
   (?:式)            非捕獲式集合
@@ -245,40 +266,39 @@
   <不在機能群>
 
   (?~不在式)        不在繰り返し  (*原案 田中哲)
-                    これは.*のように(より正確には\O*)動作するが、不在式に
+                    これは.*(より正確には\O*)のように動作するが、<不在式>に
                     適合する文字列を含まない範囲に制限される。
                     これは(?~|不在式|\O*)の省略表記である。
-                    \O*の部分はマルチラインオプション(?m)の影響を受けない。
 
   (?~|不在式|式)    不在式  (* 原作)
-                    これは"式"のように動作するが、不在式に適合する文字列を
+                    これは<式>のように動作するが、<不在式>に適合する文字列を
                     含まない範囲に制限される。
 
                     例 (?~|345|\d*)  "12345678"  ==> "12", "1", ""
 
-  (?~|不在式)       不在切断 (* 原作)
+  (?~|不在式)       不在停止 (* 原作)
                     この演算子を通過した後は、対象文字列の適合範囲の最後が
-                    不在式に適合する文字列を含まない範囲に制限される。
+                    <不在式>に適合する文字列を含まない範囲に制限される。
 
-  (?~|)             不在消去
-                    不在切断の効果を消して、初期状態にする。
-                    (* この演算子の効果は後退再試行で無効化されない)
+  (?~|)             範囲消去
+                    不在停止の効果を消して、初期状態にする。
 
-     * 不在機能の入れ子はサポートしておらず、挙動は不定とする。
+     * 不在機能の入れ子には対応しておらず、挙動は不定とする。
 
 
   (?(条件式)成功式|失敗式)    条件式が成功すれば成功式、失敗すれば失敗式を実行する
                              この機能の存在理由は、成功式が失敗しても失敗式には
                              行かないこと。これは他の正規表現で書くことができない。
-                             もうひとつは、条件式が後方参照のとき、後方参照値の有効性
-                             を調べる(文字列とマッチングはしない)意味になる。
+                             もうひとつは、条件式が後方参照の番号/名前のとき、
+                             後方参照値の有効性を調べる(文字列と照合はしない)
+                             意味になる。
 
   (?(条件式)成功式)           条件式が成功すれば成功式を実行する
                              (条件式が通常の式のときには、この構文は不必要だが
                               今のところエラーにはしない。)
 
 
-                    条件式は後方参照または通常の式を使用できる。
+                    条件式は後方参照の番号/名前または普通の式を使用できる。
                     条件式が後方参照の場合、成功式と失敗式の両方を省略可能であり、
                     この場合、後方参照値有効性を調べる(成功/失敗)機能のみになる。
 
@@ -428,7 +448,7 @@
 補記 3. Perl 5.8.0と比較して存在しない機能
 
    + \N{name}
-   + \l,\u,\L,\U, \X, \C
+   + \l,\u,\L,\U,\C
    + (?{code})
    + (??{code})
 
diff --git a/doc/UNICODE_PROPERTIES b/doc/UNICODE_PROPERTIES
index dedc658..8521f0c 100644
--- a/doc/UNICODE_PROPERTIES
+++ b/doc/UNICODE_PROPERTIES
@@ -1,698 +1,698 @@
 Unicode Properties (from Unicode Version: 8.0.0)
 
-  1: Any
-  2: Assigned
-  3: C
-  4: Cc
-  5: Cf
-  6: Cn
-  7: Co
-  8: Cs
-  9: L
- 10: LC
- 11: Ll
- 12: Lm
- 13: Lo
- 14: Lt
- 15: Lu
- 16: M
- 17: Mc
- 18: Me
- 19: Mn
- 20: N
- 21: Nd
- 22: Nl
- 23: No
- 24: P
- 25: Pc
- 26: Pd
- 27: Pe
- 28: Pf
- 29: Pi
- 30: Po
- 31: Ps
- 32: S
- 33: Sc
- 34: Sk
- 35: Sm
- 36: So
- 37: Z
- 38: Zl
- 39: Zp
- 40: Zs
- 41: Math
- 42: Alphabetic
- 43: Lowercase
- 44: Uppercase
- 45: Cased
- 46: Case_Ignorable
+ 15: ASCII_Hex_Digit
+ 16: Ahom
+ 17: Alphabetic
+ 18: Anatolian_Hieroglyphs
+ 19: Any
+ 20: Arabic
+ 21: Armenian
+ 22: Assigned
+ 23: Avestan
+ 24: Balinese
+ 25: Bamum
+ 26: Bassa_Vah
+ 27: Batak
+ 28: Bengali
+ 29: Bidi_Control
+ 30: Bopomofo
+ 31: Brahmi
+ 32: Braille
+ 33: Buginese
+ 34: Buhid
+ 35: C
+ 36: Canadian_Aboriginal
+ 37: Carian
+ 38: Case_Ignorable
+ 39: Cased
+ 40: Caucasian_Albanian
+ 41: Cc
+ 42: Cf
+ 43: Chakma
+ 44: Cham
+ 45: Changes_When_Casefolded
+ 46: Changes_When_Casemapped
  47: Changes_When_Lowercased
- 48: Changes_When_Uppercased
- 49: Changes_When_Titlecased
- 50: Changes_When_Casefolded
- 51: Changes_When_Casemapped
- 52: ID_Start
- 53: ID_Continue
- 54: XID_Start
- 55: XID_Continue
- 56: Default_Ignorable_Code_Point
- 57: Grapheme_Extend
- 58: Grapheme_Base
- 59: Grapheme_Link
- 60: Common
- 61: Latin
- 62: Greek
- 63: Cyrillic
- 64: Armenian
- 65: Hebrew
- 66: Arabic
- 67: Syriac
- 68: Thaana
- 69: Devanagari
- 70: Bengali
- 71: Gurmukhi
- 72: Gujarati
- 73: Oriya
- 74: Tamil
- 75: Telugu
- 76: Kannada
- 77: Malayalam
- 78: Sinhala
- 79: Thai
- 80: Lao
- 81: Tibetan
- 82: Myanmar
- 83: Georgian
- 84: Hangul
- 85: Ethiopic
- 86: Cherokee
- 87: Canadian_Aboriginal
- 88: Ogham
- 89: Runic
- 90: Khmer
- 91: Mongolian
- 92: Hiragana
- 93: Katakana
- 94: Bopomofo
- 95: Han
- 96: Yi
- 97: Old_Italic
- 98: Gothic
- 99: Deseret
-100: Inherited
-101: Tagalog
-102: Hanunoo
-103: Buhid
-104: Tagbanwa
-105: Limbu
-106: Tai_Le
-107: Linear_B
-108: Ugaritic
-109: Shavian
-110: Osmanya
-111: Cypriot
-112: Braille
-113: Buginese
-114: Coptic
-115: New_Tai_Lue
-116: Glagolitic
-117: Tifinagh
-118: Syloti_Nagri
-119: Old_Persian
-120: Kharoshthi
-121: Balinese
-122: Cuneiform
-123: Phoenician
-124: Phags_Pa
-125: Nko
-126: Sundanese
-127: Lepcha
-128: Ol_Chiki
-129: Vai
-130: Saurashtra
-131: Kayah_Li
-132: Rejang
-133: Lycian
-134: Carian
-135: Lydian
-136: Cham
-137: Tai_Tham
-138: Tai_Viet
-139: Avestan
-140: Egyptian_Hieroglyphs
-141: Samaritan
-142: Lisu
-143: Bamum
-144: Javanese
-145: Meetei_Mayek
-146: Imperial_Aramaic
-147: Old_South_Arabian
-148: Inscriptional_Parthian
-149: Inscriptional_Pahlavi
-150: Old_Turkic
-151: Kaithi
-152: Batak
-153: Brahmi
-154: Mandaic
-155: Chakma
-156: Meroitic_Cursive
-157: Meroitic_Hieroglyphs
-158: Miao
-159: Sharada
-160: Sora_Sompeng
-161: Takri
-162: Caucasian_Albanian
-163: Bassa_Vah
-164: Duployan
-165: Elbasan
-166: Grantha
-167: Pahawh_Hmong
-168: Khojki
-169: Linear_A
-170: Mahajani
-171: Manichaean
-172: Mende_Kikakui
-173: Modi
-174: Mro
-175: Old_North_Arabian
-176: Nabataean
-177: Palmyrene
-178: Pau_Cin_Hau
-179: Old_Permic
-180: Psalter_Pahlavi
-181: Siddham
-182: Khudawadi
-183: Tirhuta
-184: Warang_Citi
-185: Ahom
-186: Anatolian_Hieroglyphs
-187: Hatran
-188: Multani
-189: Old_Hungarian
-190: SignWriting
-191: White_Space
-192: Bidi_Control
-193: Join_Control
-194: Dash
-195: Hyphen
-196: Quotation_Mark
-197: Terminal_Punctuation
-198: Other_Math
-199: Hex_Digit
-200: ASCII_Hex_Digit
-201: Other_Alphabetic
-202: Ideographic
-203: Diacritic
-204: Extender
-205: Other_Lowercase
-206: Other_Uppercase
-207: Noncharacter_Code_Point
-208: Other_Grapheme_Extend
-209: IDS_Binary_Operator
-210: IDS_Trinary_Operator
-211: Radical
-212: Unified_Ideograph
-213: Other_Default_Ignorable_Code_Point
-214: Deprecated
-215: Soft_Dotted
-216: Logical_Order_Exception
-217: Other_ID_Start
-218: Other_ID_Continue
-219: STerm
-220: Variation_Selector
-221: Pattern_White_Space
-222: Pattern_Syntax
-223: Unknown
-224: Aghb
-225: AHex
-226: Arab
-227: Armi
-228: Armn
-229: Avst
-230: Bali
-231: Bamu
-232: Bass
-233: Batk
-234: Beng
-235: Bidi_C
-236: Bopo
-237: Brah
-238: Brai
-239: Bugi
-240: Buhd
-241: Cakm
-242: Cans
-243: Cari
-244: Cased_Letter
-245: Cher
-246: CI
-247: Close_Punctuation
-248: Combining_Mark
-249: Connector_Punctuation
-250: Control
-251: Copt
-252: Cprt
-253: Currency_Symbol
-254: CWCF
-255: CWCM
-256: CWL
-257: CWT
-258: CWU
-259: Cyrl
-260: Dash_Punctuation
-261: Decimal_Number
-262: Dep
-263: Deva
-264: DI
-265: Dia
-266: Dsrt
-267: Dupl
-268: Egyp
-269: Elba
-270: Enclosing_Mark
-271: Ethi
-272: Ext
-273: Final_Punctuation
-274: Format
-275: Geor
-276: Glag
-277: Goth
-278: Gran
-279: Gr_Base
-280: Grek
-281: Gr_Ext
-282: Gr_Link
-283: Gujr
-284: Guru
-285: Hang
-286: Hani
-287: Hano
-288: Hatr
-289: Hebr
-290: Hex
-291: Hira
-292: Hluw
-293: Hmng
-294: Hung
-295: IDC
-296: Ideo
-297: IDS
-298: IDSB
-299: IDST
-300: Initial_Punctuation
-301: Ital
-302: Java
-303: Join_C
-304: Kali
-305: Kana
-306: Khar
-307: Khmr
-308: Khoj
-309: Knda
-310: Kthi
-311: Lana
-312: Laoo
-313: Latn
-314: Lepc
-315: Letter
-316: Letter_Number
-317: Limb
-318: Lina
-319: Linb
-320: Line_Separator
-321: LOE
-322: Lowercase_Letter
-323: Lyci
-324: Lydi
-325: Mahj
-326: Mand
-327: Mani
-328: Mark
-329: Math_Symbol
-330: Mend
-331: Merc
-332: Mero
-333: Mlym
-334: Modifier_Letter
-335: Modifier_Symbol
-336: Mong
-337: Mroo
-338: Mtei
-339: Mult
-340: Mymr
-341: Narb
-342: Nbat
-343: NChar
-344: Nkoo
-345: Nonspacing_Mark
-346: Number
-347: OAlpha
-348: ODI
-349: Ogam
-350: OGr_Ext
-351: OIDC
-352: OIDS
-353: Olck
-354: OLower
-355: OMath
-356: Open_Punctuation
-357: Orkh
-358: Orya
-359: Osma
-360: Other
-361: Other_Letter
-362: Other_Number
-363: Other_Punctuation
-364: Other_Symbol
-365: OUpper
-366: Palm
-367: Paragraph_Separator
-368: Pat_Syn
-369: Pat_WS
-370: Pauc
-371: Perm
-372: Phag
-373: Phli
-374: Phlp
-375: Phnx
-376: Plrd
-377: Private_Use
-378: Prti
-379: Punctuation
-380: Qaac
-381: Qaai
-382: QMark
-383: Rjng
-384: Runr
-385: Samr
-386: Sarb
-387: Saur
-388: SD
-389: Separator
-390: Sgnw
-391: Shaw
-392: Shrd
-393: Sidd
-394: Sind
-395: Sinh
-396: Sora
-397: Space_Separator
-398: Spacing_Mark
-399: Sund
-400: Surrogate
-401: Sylo
-402: Symbol
-403: Syrc
-404: Tagb
-405: Takr
-406: Tale
-407: Talu
-408: Taml
-409: Tavt
-410: Telu
-411: Term
-412: Tfng
-413: Tglg
-414: Thaa
-415: Tibt
-416: Tirh
-417: Titlecase_Letter
-418: Ugar
-419: UIdeo
-420: Unassigned
-421: Uppercase_Letter
-422: Vaii
-423: VS
-424: Wara
-425: WSpace
-426: XIDC
-427: XIDS
-428: Xpeo
-429: Xsux
-430: Yiii
-431: Zinh
-432: Zyyy
-433: Zzzz
-434: In_Basic_Latin
-435: In_Latin_1_Supplement
-436: In_Latin_Extended_A
-437: In_Latin_Extended_B
-438: In_IPA_Extensions
-439: In_Spacing_Modifier_Letters
-440: In_Combining_Diacritical_Marks
-441: In_Greek_and_Coptic
-442: In_Cyrillic
-443: In_Cyrillic_Supplement
-444: In_Armenian
-445: In_Hebrew
-446: In_Arabic
-447: In_Syriac
-448: In_Arabic_Supplement
-449: In_Thaana
-450: In_NKo
-451: In_Samaritan
-452: In_Mandaic
-453: In_Arabic_Extended_A
-454: In_Devanagari
-455: In_Bengali
-456: In_Gurmukhi
-457: In_Gujarati
-458: In_Oriya
-459: In_Tamil
-460: In_Telugu
-461: In_Kannada
-462: In_Malayalam
-463: In_Sinhala
-464: In_Thai
-465: In_Lao
-466: In_Tibetan
-467: In_Myanmar
-468: In_Georgian
-469: In_Hangul_Jamo
-470: In_Ethiopic
-471: In_Ethiopic_Supplement
-472: In_Cherokee
-473: In_Unified_Canadian_Aboriginal_Syllabics
-474: In_Ogham
-475: In_Runic
-476: In_Tagalog
-477: In_Hanunoo
-478: In_Buhid
-479: In_Tagbanwa
-480: In_Khmer
-481: In_Mongolian
-482: In_Unified_Canadian_Aboriginal_Syllabics_Extended
-483: In_Limbu
-484: In_Tai_Le
-485: In_New_Tai_Lue
-486: In_Khmer_Symbols
-487: In_Buginese
-488: In_Tai_Tham
-489: In_Combining_Diacritical_Marks_Extended
-490: In_Balinese
-491: In_Sundanese
-492: In_Batak
-493: In_Lepcha
-494: In_Ol_Chiki
-495: In_Sundanese_Supplement
-496: In_Vedic_Extensions
-497: In_Phonetic_Extensions
-498: In_Phonetic_Extensions_Supplement
-499: In_Combining_Diacritical_Marks_Supplement
-500: In_Latin_Extended_Additional
-501: In_Greek_Extended
-502: In_General_Punctuation
-503: In_Superscripts_and_Subscripts
-504: In_Currency_Symbols
-505: In_Combining_Diacritical_Marks_for_Symbols
-506: In_Letterlike_Symbols
-507: In_Number_Forms
-508: In_Arrows
-509: In_Mathematical_Operators
-510: In_Miscellaneous_Technical
-511: In_Control_Pictures
-512: In_Optical_Character_Recognition
-513: In_Enclosed_Alphanumerics
-514: In_Box_Drawing
-515: In_Block_Elements
-516: In_Geometric_Shapes
-517: In_Miscellaneous_Symbols
-518: In_Dingbats
-519: In_Miscellaneous_Mathematical_Symbols_A
-520: In_Supplemental_Arrows_A
-521: In_Braille_Patterns
-522: In_Supplemental_Arrows_B
-523: In_Miscellaneous_Mathematical_Symbols_B
-524: In_Supplemental_Mathematical_Operators
-525: In_Miscellaneous_Symbols_and_Arrows
-526: In_Glagolitic
-527: In_Latin_Extended_C
-528: In_Coptic
-529: In_Georgian_Supplement
-530: In_Tifinagh
-531: In_Ethiopic_Extended
-532: In_Cyrillic_Extended_A
-533: In_Supplemental_Punctuation
-534: In_CJK_Radicals_Supplement
-535: In_Kangxi_Radicals
-536: In_Ideographic_Description_Characters
-537: In_CJK_Symbols_and_Punctuation
-538: In_Hiragana
-539: In_Katakana
-540: In_Bopomofo
-541: In_Hangul_Compatibility_Jamo
-542: In_Kanbun
-543: In_Bopomofo_Extended
-544: In_CJK_Strokes
-545: In_Katakana_Phonetic_Extensions
-546: In_Enclosed_CJK_Letters_and_Months
-547: In_CJK_Compatibility
-548: In_CJK_Unified_Ideographs_Extension_A
-549: In_Yijing_Hexagram_Symbols
-550: In_CJK_Unified_Ideographs
-551: In_Yi_Syllables
-552: In_Yi_Radicals
-553: In_Lisu
-554: In_Vai
-555: In_Cyrillic_Extended_B
-556: In_Bamum
-557: In_Modifier_Tone_Letters
-558: In_Latin_Extended_D
-559: In_Syloti_Nagri
-560: In_Common_Indic_Number_Forms
-561: In_Phags_pa
-562: In_Saurashtra
-563: In_Devanagari_Extended
-564: In_Kayah_Li
-565: In_Rejang
-566: In_Hangul_Jamo_Extended_A
-567: In_Javanese
-568: In_Myanmar_Extended_B
-569: In_Cham
-570: In_Myanmar_Extended_A
-571: In_Tai_Viet
-572: In_Meetei_Mayek_Extensions
-573: In_Ethiopic_Extended_A
-574: In_Latin_Extended_E
-575: In_Cherokee_Supplement
-576: In_Meetei_Mayek
-577: In_Hangul_Syllables
-578: In_Hangul_Jamo_Extended_B
-579: In_High_Surrogates
-580: In_High_Private_Use_Surrogates
-581: In_Low_Surrogates
-582: In_Private_Use_Area
-583: In_CJK_Compatibility_Ideographs
-584: In_Alphabetic_Presentation_Forms
-585: In_Arabic_Presentation_Forms_A
-586: In_Variation_Selectors
-587: In_Vertical_Forms
-588: In_Combining_Half_Marks
-589: In_CJK_Compatibility_Forms
-590: In_Small_Form_Variants
-591: In_Arabic_Presentation_Forms_B
-592: In_Halfwidth_and_Fullwidth_Forms
-593: In_Specials
-594: In_Linear_B_Syllabary
-595: In_Linear_B_Ideograms
-596: In_Aegean_Numbers
-597: In_Ancient_Greek_Numbers
-598: In_Ancient_Symbols
-599: In_Phaistos_Disc
-600: In_Lycian
-601: In_Carian
-602: In_Coptic_Epact_Numbers
-603: In_Old_Italic
-604: In_Gothic
-605: In_Old_Permic
-606: In_Ugaritic
-607: In_Old_Persian
-608: In_Deseret
-609: In_Shavian
-610: In_Osmanya
-611: In_Elbasan
-612: In_Caucasian_Albanian
-613: In_Linear_A
-614: In_Cypriot_Syllabary
-615: In_Imperial_Aramaic
-616: In_Palmyrene
-617: In_Nabataean
-618: In_Hatran
-619: In_Phoenician
-620: In_Lydian
-621: In_Meroitic_Hieroglyphs
-622: In_Meroitic_Cursive
-623: In_Kharoshthi
-624: In_Old_South_Arabian
-625: In_Old_North_Arabian
-626: In_Manichaean
-627: In_Avestan
-628: In_Inscriptional_Parthian
-629: In_Inscriptional_Pahlavi
-630: In_Psalter_Pahlavi
-631: In_Old_Turkic
-632: In_Old_Hungarian
-633: In_Rumi_Numeral_Symbols
-634: In_Brahmi
-635: In_Kaithi
-636: In_Sora_Sompeng
-637: In_Chakma
-638: In_Mahajani
-639: In_Sharada
-640: In_Sinhala_Archaic_Numbers
-641: In_Khojki
-642: In_Multani
-643: In_Khudawadi
-644: In_Grantha
-645: In_Tirhuta
-646: In_Siddham
-647: In_Modi
-648: In_Takri
-649: In_Ahom
-650: In_Warang_Citi
-651: In_Pau_Cin_Hau
-652: In_Cuneiform
-653: In_Cuneiform_Numbers_and_Punctuation
-654: In_Early_Dynastic_Cuneiform
-655: In_Egyptian_Hieroglyphs
-656: In_Anatolian_Hieroglyphs
-657: In_Bamum_Supplement
-658: In_Mro
-659: In_Bassa_Vah
-660: In_Pahawh_Hmong
-661: In_Miao
-662: In_Kana_Supplement
-663: In_Duployan
-664: In_Shorthand_Format_Controls
-665: In_Byzantine_Musical_Symbols
-666: In_Musical_Symbols
-667: In_Ancient_Greek_Musical_Notation
-668: In_Tai_Xuan_Jing_Symbols
-669: In_Counting_Rod_Numerals
-670: In_Mathematical_Alphanumeric_Symbols
-671: In_Sutton_SignWriting
-672: In_Mende_Kikakui
-673: In_Arabic_Mathematical_Alphabetic_Symbols
-674: In_Mahjong_Tiles
-675: In_Domino_Tiles
-676: In_Playing_Cards
-677: In_Enclosed_Alphanumeric_Supplement
-678: In_Enclosed_Ideographic_Supplement
-679: In_Miscellaneous_Symbols_and_Pictographs
-680: In_Emoticons
-681: In_Ornamental_Dingbats
-682: In_Transport_and_Map_Symbols
-683: In_Alchemical_Symbols
-684: In_Geometric_Shapes_Extended
-685: In_Supplemental_Arrows_C
-686: In_Supplemental_Symbols_and_Pictographs
-687: In_CJK_Unified_Ideographs_Extension_B
-688: In_CJK_Unified_Ideographs_Extension_C
-689: In_CJK_Unified_Ideographs_Extension_D
-690: In_CJK_Unified_Ideographs_Extension_E
-691: In_CJK_Compatibility_Ideographs_Supplement
-692: In_Tags
-693: In_Variation_Selectors_Supplement
-694: In_Supplementary_Private_Use_Area_A
-695: In_Supplementary_Private_Use_Area_B
-696: In_No_Block
+ 48: Changes_When_Titlecased
+ 49: Changes_When_Uppercased
+ 50: Cherokee
+ 51: Cn
+ 52: Co
+ 53: Common
+ 54: Coptic
+ 55: Cs
+ 56: Cuneiform
+ 57: Cypriot
+ 58: Cyrillic
+ 59: Dash
+ 60: Default_Ignorable_Code_Point
+ 61: Deprecated
+ 62: Deseret
+ 63: Devanagari
+ 64: Diacritic
+ 65: Duployan
+ 66: Egyptian_Hieroglyphs
+ 67: Elbasan
+ 68: Ethiopic
+ 69: Extender
+ 70: Georgian
+ 71: Glagolitic
+ 72: Gothic
+ 73: Grantha
+ 74: Grapheme_Base
+ 75: Grapheme_Extend
+ 76: Grapheme_Link
+ 77: Greek
+ 78: Gujarati
+ 79: Gurmukhi
+ 80: Han
+ 81: Hangul
+ 82: Hanunoo
+ 83: Hatran
+ 84: Hebrew
+ 85: Hex_Digit
+ 86: Hiragana
+ 87: Hyphen
+ 88: IDS_Binary_Operator
+ 89: IDS_Trinary_Operator
+ 90: ID_Continue
+ 91: ID_Start
+ 92: Ideographic
+ 93: Imperial_Aramaic
+ 94: Inherited
+ 95: Inscriptional_Pahlavi
+ 96: Inscriptional_Parthian
+ 97: Javanese
+ 98: Join_Control
+ 99: Kaithi
+100: Kannada
+101: Katakana
+102: Kayah_Li
+103: Kharoshthi
+104: Khmer
+105: Khojki
+106: Khudawadi
+107: L
+108: LC
+109: Lao
+110: Latin
+111: Lepcha
+112: Limbu
+113: Linear_A
+114: Linear_B
+115: Lisu
+116: Ll
+117: Lm
+118: Lo
+119: Logical_Order_Exception
+120: Lowercase
+121: Lt
+122: Lu
+123: Lycian
+124: Lydian
+125: M
+126: Mahajani
+127: Malayalam
+128: Mandaic
+129: Manichaean
+130: Math
+131: Mc
+132: Me
+133: Meetei_Mayek
+134: Mende_Kikakui
+135: Meroitic_Cursive
+136: Meroitic_Hieroglyphs
+137: Miao
+138: Mn
+139: Modi
+140: Mongolian
+141: Mro
+142: Multani
+143: Myanmar
+144: N
+145: Nabataean
+146: Nd
+147: New_Tai_Lue
+148: Nko
+149: Nl
+150: No
+151: Noncharacter_Code_Point
+152: Ogham
+153: Ol_Chiki
+154: Old_Hungarian
+155: Old_Italic
+156: Old_North_Arabian
+157: Old_Permic
+158: Old_Persian
+159: Old_South_Arabian
+160: Old_Turkic
+161: Oriya
+162: Osmanya
+163: Other_Alphabetic
+164: Other_Default_Ignorable_Code_Point
+165: Other_Grapheme_Extend
+166: Other_ID_Continue
+167: Other_ID_Start
+168: Other_Lowercase
+169: Other_Math
+170: Other_Uppercase
+171: P
+172: Pahawh_Hmong
+173: Palmyrene
+174: Pattern_Syntax
+175: Pattern_White_Space
+176: Pau_Cin_Hau
+177: Pc
+178: Pd
+179: Pe
+180: Pf
+181: Phags_Pa
+182: Phoenician
+183: Pi
+184: Po
+185: Ps
+186: Psalter_Pahlavi
+187: Quotation_Mark
+188: Radical
+189: Rejang
+190: Runic
+191: S
+192: STerm
+193: Samaritan
+194: Saurashtra
+195: Sc
+196: Sharada
+197: Shavian
+198: Siddham
+199: SignWriting
+200: Sinhala
+201: Sk
+202: Sm
+203: So
+204: Soft_Dotted
+205: Sora_Sompeng
+206: Sundanese
+207: Syloti_Nagri
+208: Syriac
+209: Tagalog
+210: Tagbanwa
+211: Tai_Le
+212: Tai_Tham
+213: Tai_Viet
+214: Takri
+215: Tamil
+216: Telugu
+217: Terminal_Punctuation
+218: Thaana
+219: Thai
+220: Tibetan
+221: Tifinagh
+222: Tirhuta
+223: Ugaritic
+224: Unified_Ideograph
+225: Unknown
+226: Uppercase
+227: Vai
+228: Variation_Selector
+229: Warang_Citi
+230: White_Space
+231: XID_Continue
+232: XID_Start
+233: Yi
+234: Z
+235: Zl
+236: Zp
+237: Zs
+ 40: Aghb
+ 15: AHex
+ 20: Arab
+ 93: Armi
+ 21: Armn
+ 23: Avst
+ 24: Bali
+ 25: Bamu
+ 26: Bass
+ 27: Batk
+ 28: Beng
+ 29: Bidi_C
+ 30: Bopo
+ 31: Brah
+ 32: Brai
+ 33: Bugi
+ 34: Buhd
+ 43: Cakm
+ 36: Cans
+ 37: Cari
+108: Cased_Letter
+ 50: Cher
+ 38: CI
+179: Close_Punctuation
+125: Combining_Mark
+177: Connector_Punctuation
+ 41: Control
+ 54: Copt
+ 57: Cprt
+195: Currency_Symbol
+ 45: CWCF
+ 46: CWCM
+ 47: CWL
+ 48: CWT
+ 49: CWU
+ 58: Cyrl
+178: Dash_Punctuation
+146: Decimal_Number
+ 61: Dep
+ 63: Deva
+ 60: DI
+ 64: Dia
+ 62: Dsrt
+ 65: Dupl
+ 66: Egyp
+ 67: Elba
+132: Enclosing_Mark
+ 68: Ethi
+ 69: Ext
+180: Final_Punctuation
+ 42: Format
+ 70: Geor
+ 71: Glag
+ 72: Goth
+ 73: Gran
+ 74: Gr_Base
+ 77: Grek
+ 75: Gr_Ext
+ 76: Gr_Link
+ 78: Gujr
+ 79: Guru
+ 81: Hang
+ 80: Hani
+ 82: Hano
+ 83: Hatr
+ 84: Hebr
+ 85: Hex
+ 86: Hira
+ 18: Hluw
+172: Hmng
+154: Hung
+ 90: IDC
+ 92: Ideo
+ 91: IDS
+ 88: IDSB
+ 89: IDST
+183: Initial_Punctuation
+155: Ital
+ 97: Java
+ 98: Join_C
+102: Kali
+101: Kana
+103: Khar
+104: Khmr
+105: Khoj
+100: Knda
+ 99: Kthi
+212: Lana
+109: Laoo
+110: Latn
+111: Lepc
+107: Letter
+149: Letter_Number
+112: Limb
+113: Lina
+114: Linb
+235: Line_Separator
+119: LOE
+116: Lowercase_Letter
+123: Lyci
+124: Lydi
+126: Mahj
+128: Mand
+129: Mani
+125: Mark
+202: Math_Symbol
+134: Mend
+135: Merc
+136: Mero
+127: Mlym
+117: Modifier_Letter
+201: Modifier_Symbol
+140: Mong
+141: Mroo
+133: Mtei
+142: Mult
+143: Mymr
+156: Narb
+145: Nbat
+151: NChar
+148: Nkoo
+138: Nonspacing_Mark
+144: Number
+163: OAlpha
+164: ODI
+152: Ogam
+165: OGr_Ext
+166: OIDC
+167: OIDS
+153: Olck
+168: OLower
+169: OMath
+185: Open_Punctuation
+160: Orkh
+161: Orya
+162: Osma
+ 35: Other
+118: Other_Letter
+150: Other_Number
+184: Other_Punctuation
+203: Other_Symbol
+170: OUpper
+173: Palm
+236: Paragraph_Separator
+174: Pat_Syn
+175: Pat_WS
+176: Pauc
+157: Perm
+181: Phag
+ 95: Phli
+186: Phlp
+182: Phnx
+137: Plrd
+ 52: Private_Use
+ 96: Prti
+171: Punctuation
+ 54: Qaac
+ 94: Qaai
+187: QMark
+189: Rjng
+190: Runr
+193: Samr
+159: Sarb
+194: Saur
+204: SD
+234: Separator
+199: Sgnw
+197: Shaw
+196: Shrd
+198: Sidd
+106: Sind
+200: Sinh
+205: Sora
+237: Space_Separator
+131: Spacing_Mark
+206: Sund
+ 55: Surrogate
+207: Sylo
+191: Symbol
+208: Syrc
+210: Tagb
+214: Takr
+211: Tale
+147: Talu
+215: Taml
+213: Tavt
+216: Telu
+217: Term
+221: Tfng
+209: Tglg
+218: Thaa
+220: Tibt
+222: Tirh
+121: Titlecase_Letter
+223: Ugar
+224: UIdeo
+ 51: Unassigned
+122: Uppercase_Letter
+227: Vaii
+228: VS
+229: Wara
+230: WSpace
+231: XIDC
+232: XIDS
+158: Xpeo
+ 56: Xsux
+233: Yiii
+ 94: Zinh
+ 53: Zyyy
+225: Zzzz
+238: In_Basic_Latin
+239: In_Latin_1_Supplement
+240: In_Latin_Extended_A
+241: In_Latin_Extended_B
+242: In_IPA_Extensions
+243: In_Spacing_Modifier_Letters
+244: In_Combining_Diacritical_Marks
+245: In_Greek_and_Coptic
+246: In_Cyrillic
+247: In_Cyrillic_Supplement
+248: In_Armenian
+249: In_Hebrew
+250: In_Arabic
+251: In_Syriac
+252: In_Arabic_Supplement
+253: In_Thaana
+254: In_NKo
+255: In_Samaritan
+256: In_Mandaic
+257: In_Arabic_Extended_A
+258: In_Devanagari
+259: In_Bengali
+260: In_Gurmukhi
+261: In_Gujarati
+262: In_Oriya
+263: In_Tamil
+264: In_Telugu
+265: In_Kannada
+266: In_Malayalam
+267: In_Sinhala
+268: In_Thai
+269: In_Lao
+270: In_Tibetan
+271: In_Myanmar
+272: In_Georgian
+273: In_Hangul_Jamo
+274: In_Ethiopic
+275: In_Ethiopic_Supplement
+276: In_Cherokee
+277: In_Unified_Canadian_Aboriginal_Syllabics
+278: In_Ogham
+279: In_Runic
+280: In_Tagalog
+281: In_Hanunoo
+282: In_Buhid
+283: In_Tagbanwa
+284: In_Khmer
+285: In_Mongolian
+286: In_Unified_Canadian_Aboriginal_Syllabics_Extended
+287: In_Limbu
+288: In_Tai_Le
+289: In_New_Tai_Lue
+290: In_Khmer_Symbols
+291: In_Buginese
+292: In_Tai_Tham
+293: In_Combining_Diacritical_Marks_Extended
+294: In_Balinese
+295: In_Sundanese
+296: In_Batak
+297: In_Lepcha
+298: In_Ol_Chiki
+299: In_Sundanese_Supplement
+300: In_Vedic_Extensions
+301: In_Phonetic_Extensions
+302: In_Phonetic_Extensions_Supplement
+303: In_Combining_Diacritical_Marks_Supplement
+304: In_Latin_Extended_Additional
+305: In_Greek_Extended
+306: In_General_Punctuation
+307: In_Superscripts_and_Subscripts
+308: In_Currency_Symbols
+309: In_Combining_Diacritical_Marks_for_Symbols
+310: In_Letterlike_Symbols
+311: In_Number_Forms
+312: In_Arrows
+313: In_Mathematical_Operators
+314: In_Miscellaneous_Technical
+315: In_Control_Pictures
+316: In_Optical_Character_Recognition
+317: In_Enclosed_Alphanumerics
+318: In_Box_Drawing
+319: In_Block_Elements
+320: In_Geometric_Shapes
+321: In_Miscellaneous_Symbols
+322: In_Dingbats
+323: In_Miscellaneous_Mathematical_Symbols_A
+324: In_Supplemental_Arrows_A
+325: In_Braille_Patterns
+326: In_Supplemental_Arrows_B
+327: In_Miscellaneous_Mathematical_Symbols_B
+328: In_Supplemental_Mathematical_Operators
+329: In_Miscellaneous_Symbols_and_Arrows
+330: In_Glagolitic
+331: In_Latin_Extended_C
+332: In_Coptic
+333: In_Georgian_Supplement
+334: In_Tifinagh
+335: In_Ethiopic_Extended
+336: In_Cyrillic_Extended_A
+337: In_Supplemental_Punctuation
+338: In_CJK_Radicals_Supplement
+339: In_Kangxi_Radicals
+340: In_Ideographic_Description_Characters
+341: In_CJK_Symbols_and_Punctuation
+342: In_Hiragana
+343: In_Katakana
+344: In_Bopomofo
+345: In_Hangul_Compatibility_Jamo
+346: In_Kanbun
+347: In_Bopomofo_Extended
+348: In_CJK_Strokes
+349: In_Katakana_Phonetic_Extensions
+350: In_Enclosed_CJK_Letters_and_Months
+351: In_CJK_Compatibility
+352: In_CJK_Unified_Ideographs_Extension_A
+353: In_Yijing_Hexagram_Symbols
+354: In_CJK_Unified_Ideographs
+355: In_Yi_Syllables
+356: In_Yi_Radicals
+357: In_Lisu
+358: In_Vai
+359: In_Cyrillic_Extended_B
+360: In_Bamum
+361: In_Modifier_Tone_Letters
+362: In_Latin_Extended_D
+363: In_Syloti_Nagri
+364: In_Common_Indic_Number_Forms
+365: In_Phags_pa
+366: In_Saurashtra
+367: In_Devanagari_Extended
+368: In_Kayah_Li
+369: In_Rejang
+370: In_Hangul_Jamo_Extended_A
+371: In_Javanese
+372: In_Myanmar_Extended_B
+373: In_Cham
+374: In_Myanmar_Extended_A
+375: In_Tai_Viet
+376: In_Meetei_Mayek_Extensions
+377: In_Ethiopic_Extended_A
+378: In_Latin_Extended_E
+379: In_Cherokee_Supplement
+380: In_Meetei_Mayek
+381: In_Hangul_Syllables
+382: In_Hangul_Jamo_Extended_B
+383: In_High_Surrogates
+384: In_High_Private_Use_Surrogates
+385: In_Low_Surrogates
+386: In_Private_Use_Area
+387: In_CJK_Compatibility_Ideographs
+388: In_Alphabetic_Presentation_Forms
+389: In_Arabic_Presentation_Forms_A
+390: In_Variation_Selectors
+391: In_Vertical_Forms
+392: In_Combining_Half_Marks
+393: In_CJK_Compatibility_Forms
+394: In_Small_Form_Variants
+395: In_Arabic_Presentation_Forms_B
+396: In_Halfwidth_and_Fullwidth_Forms
+397: In_Specials
+398: In_Linear_B_Syllabary
+399: In_Linear_B_Ideograms
+400: In_Aegean_Numbers
+401: In_Ancient_Greek_Numbers
+402: In_Ancient_Symbols
+403: In_Phaistos_Disc
+404: In_Lycian
+405: In_Carian
+406: In_Coptic_Epact_Numbers
+407: In_Old_Italic
+408: In_Gothic
+409: In_Old_Permic
+410: In_Ugaritic
+411: In_Old_Persian
+412: In_Deseret
+413: In_Shavian
+414: In_Osmanya
+415: In_Elbasan
+416: In_Caucasian_Albanian
+417: In_Linear_A
+418: In_Cypriot_Syllabary
+419: In_Imperial_Aramaic
+420: In_Palmyrene
+421: In_Nabataean
+422: In_Hatran
+423: In_Phoenician
+424: In_Lydian
+425: In_Meroitic_Hieroglyphs
+426: In_Meroitic_Cursive
+427: In_Kharoshthi
+428: In_Old_South_Arabian
+429: In_Old_North_Arabian
+430: In_Manichaean
+431: In_Avestan
+432: In_Inscriptional_Parthian
+433: In_Inscriptional_Pahlavi
+434: In_Psalter_Pahlavi
+435: In_Old_Turkic
+436: In_Old_Hungarian
+437: In_Rumi_Numeral_Symbols
+438: In_Brahmi
+439: In_Kaithi
+440: In_Sora_Sompeng
+441: In_Chakma
+442: In_Mahajani
+443: In_Sharada
+444: In_Sinhala_Archaic_Numbers
+445: In_Khojki
+446: In_Multani
+447: In_Khudawadi
+448: In_Grantha
+449: In_Tirhuta
+450: In_Siddham
+451: In_Modi
+452: In_Takri
+453: In_Ahom
+454: In_Warang_Citi
+455: In_Pau_Cin_Hau
+456: In_Cuneiform
+457: In_Cuneiform_Numbers_and_Punctuation
+458: In_Early_Dynastic_Cuneiform
+459: In_Egyptian_Hieroglyphs
+460: In_Anatolian_Hieroglyphs
+461: In_Bamum_Supplement
+462: In_Mro
+463: In_Bassa_Vah
+464: In_Pahawh_Hmong
+465: In_Miao
+466: In_Kana_Supplement
+467: In_Duployan
+468: In_Shorthand_Format_Controls
+469: In_Byzantine_Musical_Symbols
+470: In_Musical_Symbols
+471: In_Ancient_Greek_Musical_Notation
+472: In_Tai_Xuan_Jing_Symbols
+473: In_Counting_Rod_Numerals
+474: In_Mathematical_Alphanumeric_Symbols
+475: In_Sutton_SignWriting
+476: In_Mende_Kikakui
+477: In_Arabic_Mathematical_Alphabetic_Symbols
+478: In_Mahjong_Tiles
+479: In_Domino_Tiles
+480: In_Playing_Cards
+481: In_Enclosed_Alphanumeric_Supplement
+482: In_Enclosed_Ideographic_Supplement
+483: In_Miscellaneous_Symbols_and_Pictographs
+484: In_Emoticons
+485: In_Ornamental_Dingbats
+486: In_Transport_and_Map_Symbols
+487: In_Alchemical_Symbols
+488: In_Geometric_Shapes_Extended
+489: In_Supplemental_Arrows_C
+490: In_Supplemental_Symbols_and_Pictographs
+491: In_CJK_Unified_Ideographs_Extension_B
+492: In_CJK_Unified_Ideographs_Extension_C
+493: In_CJK_Unified_Ideographs_Extension_D
+494: In_CJK_Unified_Ideographs_Extension_E
+495: In_CJK_Compatibility_Ideographs_Supplement
+496: In_Tags
+497: In_Variation_Selectors_Supplement
+498: In_Supplementary_Private_Use_Area_A
+499: In_Supplementary_Private_Use_Area_B
+500: In_No_Block
diff --git a/index.html b/index.html
index 9d54c60..2bcdf07 100644
--- a/index.html
+++ b/index.html
@@ -8,7 +8,7 @@
 <h1>Oniguruma</h1> (<a href="index_ja.html">Japanese</a>)
 
 <p>
-(c) K.Kosako, updated at: 2017/08/03
+(c) K.Kosako, updated at: 2017/08/30
 </p>
 
 <dl>
@@ -16,6 +16,8 @@
 <dt><b>What's new</b>
 </font>
 <ul>
+<li>2017/08/30: Version 6.6.1 released.</li>
+<li>2017/08/28: Version 6.6.0 released.</li>
 <li>2017/08/03: Version 6.5.0 released.</li>
 <li>2017/07/03: Version 6.4.0 released.</li>
 <li>2017/05/29: Version 6.3.0 released.</li>
diff --git a/index_ja.html b/index_ja.html
index 52f0412..4e5265c 100644
--- a/index_ja.html
+++ b/index_ja.html
@@ -8,7 +8,7 @@
 <h1>鬼車</h1>
 
 <p>
-(c) K.Kosako, 最終更新: 2017/08/03
+(c) K.Kosako, 最終更新: 2017/08/30
 </p>
 
 <dl>
@@ -16,6 +16,8 @@
 <dt><b>更新情報</b>
 </font>
 <ul>
+<li>2017/08/30: Version 6.6.1 リリース</li>
+<li>2017/08/28: Version 6.6.0 リリース</li>
 <li>2017/08/03: Version 6.5.0 リリース</li>
 <li>2017/07/03: Version 6.4.0 リリース</li>
 <li>2017/05/29: Version 6.3.0 リリース</li>
diff --git a/src/Makefile.am b/src/Makefile.am
index 49f5f9f..be35b24 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -38,6 +38,8 @@ libonig_la_LDFLAGS = -version-info $(LTVERSION)
 EXTRA_DIST = koi8.c mktable.c \
 	unicode_fold_data.c unicode_property_data.c \
 	unicode_property_data_posix.c \
+	unicode_egcb_data.c \
+	make_unicode_egcb.sh make_unicode_egcb_data.py \
 	make_unicode_fold.sh make_unicode_fold_data.py \
 	make_unicode_property.sh make_unicode_property_data.py \
 	gperf_fold_key_conv.py gperf_unfold_key_conv.py \
diff --git a/src/euc_jp.c b/src/euc_jp.c
index 3b54e95..756bdc7 100644
--- a/src/euc_jp.c
+++ b/src/euc_jp.c
@@ -2,7 +2,7 @@
   euc_jp.c -  Oniguruma (regular expression library)
 **********************************************************************/
 /*-
- * Copyright (c) 2002-2016  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2017  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -252,7 +252,7 @@ is_code_ctype(OnigCodePoint code, unsigned int ctype)
       return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype);
     else {
       if (CTYPE_IS_WORD_GRAPH_PRINT(ctype)) {
-	return (code_to_mbclen(code) > 1 ? TRUE : FALSE);
+        return (code_to_mbclen(code) > 1 ? TRUE : FALSE);
       }
     }
   }
diff --git a/src/gperf_fold_key_conv.py b/src/gperf_fold_key_conv.py
index bdf57ad..5267aa4 100755
--- a/src/gperf_fold_key_conv.py
+++ b/src/gperf_fold_key_conv.py
@@ -1,5 +1,7 @@
 #!/usr/bin/python
 # -*- coding: utf-8 -*-
+# gperf_fold_key_conv.py
+# Copyright (c) 2016-2017  K.Kosako
 
 import sys
 import re
diff --git a/src/gperf_unfold_key_conv.py b/src/gperf_unfold_key_conv.py
index 34f9c2f..6f3ccb4 100755
--- a/src/gperf_unfold_key_conv.py
+++ b/src/gperf_unfold_key_conv.py
@@ -1,5 +1,7 @@
 #!/usr/bin/python
 # -*- coding: utf-8 -*-
+# gperf_unfold_key_conv.py
+# Copyright (c) 2016-2017  K.Kosako
 
 import sys
 import re
diff --git a/src/make_unicode_egcb.sh b/src/make_unicode_egcb.sh
new file mode 100755
index 0000000..89cfa18
--- /dev/null
+++ b/src/make_unicode_egcb.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+NAME=unicode_egcb_data
+
+./make_unicode_egcb_data.py > ${NAME}.c
+
+exit 0
diff --git a/src/make_unicode_egcb_data.py b/src/make_unicode_egcb_data.py
new file mode 100755
index 0000000..3f958eb
--- /dev/null
+++ b/src/make_unicode_egcb_data.py
@@ -0,0 +1,236 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# make_unicode_egcb_data.py
+# Copyright (c) 2017  K.Kosako
+
+import sys
+import re
+
+MAX_CODE_POINT = 0x10ffff
+
+PR_TOTAL_REG = re.compile("#\s*Total\s+(?:code\s+points|elements):")
+PR_LINE_REG  = re.compile("([0-9A-Fa-f]+)(?:..([0-9A-Fa-f]+))?\s*;\s*(\w+)")
+PA_LINE_REG  = re.compile("(\w+)\s*;\s*(\w+)")
+PVA_LINE_REG = re.compile("(sc|gc)\s*;\s*(\w+)\s*;\s*(\w+)(?:\s*;\s*(\w+))?")
+BL_LINE_REG  = re.compile("([0-9A-Fa-f]+)\.\.([0-9A-Fa-f]+)\s*;\s*(.*)")
+VERSION_REG  = re.compile("#\s*.*-(\d+\.\d+\.\d+)\.txt")
+
+VERSION_INFO = None
+DIC  = { }
+PROPS = []
+PropIndex = { }
+
+def check_version_info(s):
+  global VERSION_INFO
+  m = VERSION_REG.match(s)
+  if m is not None:
+    VERSION_INFO = m.group(1)
+
+def print_ranges(ranges):
+  for (start, end) in ranges:
+    print "0x%06x, 0x%06x" % (start, end)
+
+def print_prop_and_index(prop, i):
+  print "%-35s %3d" % (prop + ',', i)
+  PropIndex[prop] = i
+
+def dic_find_by_value(dic, v):
+  for key, val in dic.items():
+    if val == v:
+      return key
+
+  return None
+
+
+def normalize_ranges(in_ranges, sort=False):
+  if sort:
+    ranges = sorted(in_ranges)
+  else:
+    ranges = in_ranges
+
+  r = []
+  prev = None
+  for (start, end) in ranges:
+    if prev >= start - 1:
+      (pstart, pend) = r.pop()
+      end = max(pend, end)
+      start = pstart
+
+    r.append((start, end))
+    prev = end
+
+  return r
+
+def inverse_ranges(in_ranges):
+  r = []
+  prev = 0x000000
+  for (start, end) in in_ranges:
+    if prev < start:
+      r.append((prev, start - 1))
+
+    prev = end + 1
+
+  if prev < MAX_CODE_POINT:
+    r.append((prev, MAX_CODE_POINT))
+
+  return r
+
+def add_ranges(r1, r2):
+  r = r1 + r2
+  return normalize_ranges(r, True)
+
+def sub_one_range(one_range, rs):
+  r = []
+  (s1, e1) = one_range
+  n = len(rs)
+  for i in range(0, n):
+    (s2, e2) = rs[i]
+    if s2 >= s1 and s2 <= e1:
+      if s2 > s1:
+        r.append((s1, s2 - 1))
+      if e2 >= e1:
+        return r
+
+      s1 = e2 + 1
+    elif s2 < s1 and e2 >= s1:
+      if e2 < e1:
+        s1 = e2 + 1
+      else:
+        return r
+
+  r.append((s1, e1))
+  return r
+
+def sub_ranges(r1, r2):
+  r = []
+  for one_range in r1:
+    rs = sub_one_range(one_range, r2)
+    r.extend(rs)
+
+  return r
+
+def add_ranges_in_dic(dic):
+  r = []
+  for k, v in dic.items():
+    r = r + v
+
+  return normalize_ranges(r, True)
+
+def normalize_ranges_in_dic(dic, sort=False):
+  for k, v in dic.items():
+    r = normalize_ranges(v, sort)
+    dic[k] = r
+
+def merge_dic(to_dic, from_dic):
+  to_keys   = to_dic.keys()
+  from_keys = from_dic.keys()
+  common = list(set(to_keys) & set(from_keys))
+  if len(common) != 0:
+    print >> sys.stderr, "merge_dic: collision: %s" % sorted(common)
+
+  to_dic.update(from_dic)
+
+def merge_props(to_props, from_props):
+  common = list(set(to_props) & set(from_props))
+  if len(common) != 0:
+    print >> sys.stderr, "merge_props: collision: %s" % sorted(common)
+
+  to_props.extend(from_props)
+
+def add_range_into_dic(dic, name, start, end):
+  d = dic.get(name, None)
+  if d is None:
+    d = [(start, end)]
+    dic[name] = d
+  else:
+    d.append((start, end))
+
+def list_sub(a, b):
+  x = set(a) - set(b)
+  return list(x)
+
+def parse_properties(path):
+  with open(path, 'r') as f:
+    dic = { }
+    prop = None
+    props = []
+    for line in f:
+      s = line.strip()
+      if len(s) == 0:
+        continue
+
+      if s[0] == '#':
+        if VERSION_INFO is None:
+          check_version_info(s)
+
+      m = PR_LINE_REG.match(s)
+      if m:
+        prop = m.group(3)
+        if m.group(2):
+          start = int(m.group(1), 16)
+          end   = int(m.group(2), 16)
+          add_range_into_dic(dic, prop, start, end)
+        else:
+          start = int(m.group(1), 16)
+          add_range_into_dic(dic, prop, start, start)
+
+      elif PR_TOTAL_REG.match(s) is not None:
+        props.append(prop)
+
+  normalize_ranges_in_dic(dic)
+  return (dic, props)
+
+
+### main ###
+argv = sys.argv
+argc = len(argv)
+
+dic, props = parse_properties('GraphemeBreakProperty.txt')
+merge_dic(DIC, dic)
+merge_props(PROPS, props)
+
+PROPS = sorted(PROPS)
+
+print '/* Copyright (c) 2017  K.Kosako */'
+print '/* Generated by make_gcb_data.py. */'
+print ''
+if VERSION_INFO is not None:
+  print "#define GRAPHEME_BREAK_PROPERTY_VERSION  %s" % re.sub(r'[\.-]', '_', VERSION_INFO)
+  print ''
+
+ranges = []
+for prop in PROPS:
+  rs = DIC[prop]
+  for (start, end) in rs:
+    ranges.append((start, end, prop))
+
+ranges = sorted(ranges, key=lambda x: x[0])
+
+prev = -1
+for (start, end, prop) in ranges:
+  if prev >= start:
+    raise ValueError("{2}:{0} - {1} range overlap prev value {3}".format(start, end, prop, prev))
+
+
+print '/*'
+for prop in PROPS:
+  print "%s" % prop
+print '*/'
+print ''
+
+num_ranges = len(ranges)
+print "static int EGCB_RANGE_NUM = %d;" % num_ranges
+
+print 'static EGCB_RANGE_TYPE EGCB_RANGES[] = {'
+for i, (start, end, prop) in enumerate(ranges):
+  if i == num_ranges - 1:
+    comma = ''
+  else:
+    comma = ','
+
+  type_name = 'EGCB_' + prop
+  print " {0x%06x, 0x%06x, %s }%s" % (start, end, type_name, comma)
+
+print '};'
+
+sys.exit(0)
diff --git a/src/make_unicode_fold_data.py b/src/make_unicode_fold_data.py
index 3f7d416..f4ad321 100755
--- a/src/make_unicode_fold_data.py
+++ b/src/make_unicode_fold_data.py
@@ -1,5 +1,7 @@
 #!/usr/bin/python
 # -*- coding: utf-8 -*-
+# make_unicode_fold_data.py
+# Copyright (c) 2016-2017  K.Kosako
 
 import sys
 import re
@@ -15,7 +17,7 @@ DataName = 'OnigUnicodeFolds'
 ENCODING = 'utf-8'
 
 LINE_REG = re.compile("([0-9A-F]{1,6}); (.); ([0-9A-F]{1,6})(?: ([0-9A-F]{1,6}))?(?: ([0-9A-F]{1,6}))?;(?:\s*#\s*)(.*)")
-VERSION_REG  = re.compile("#.*-(\d\.\d\.\d)\.txt")
+VERSION_REG  = re.compile("#.*-(\d+\.\d+\.\d+)\.txt")
 
 VERSION_INFO = None
 
diff --git a/src/make_unicode_property_data.py b/src/make_unicode_property_data.py
index 25ed092..51986b6 100755
--- a/src/make_unicode_property_data.py
+++ b/src/make_unicode_property_data.py
@@ -1,9 +1,13 @@
 #!/usr/bin/python
 # -*- coding: utf-8 -*-
+# make_unicode_property_data.py
+# Copyright (c) 2016-2017  K.Kosako
 
 import sys
 import re
 
+INCLUDE_GRAPHEME_CLUSTER_DATA = False
+
 POSIX_LIST = [
     'NEWLINE', 'Alpha', 'Blank', 'Cntrl', 'Digit', 'Graph', 'Lower',
     'Print', 'Punct', 'Space', 'Upper', 'XDigit', 'Word', 'Alnum', 'ASCII'
@@ -11,6 +15,8 @@ POSIX_LIST = [
 
 MAX_CODE_POINT = 0x10ffff
 
+GRAPHEME_CLUSTER_BREAK_NAME_PREFIX = 'Grapheme_Cluster_Break_'
+
 UD_FIRST_REG = re.compile("<.+,\s*First>")
 UD_LAST_REG  = re.compile("<.+,\s*Last>")
 PR_TOTAL_REG = re.compile("#\s*Total\s+code\s+points:")
@@ -18,7 +24,7 @@ PR_LINE_REG  = re.compile("([0-9A-Fa-f]+)(?:..([0-9A-Fa-f]+))?\s*;\s*(\w+)")
 PA_LINE_REG  = re.compile("(\w+)\s*;\s*(\w+)")
 PVA_LINE_REG = re.compile("(sc|gc)\s*;\s*(\w+)\s*;\s*(\w+)(?:\s*;\s*(\w+))?")
 BL_LINE_REG  = re.compile("([0-9A-Fa-f]+)\.\.([0-9A-Fa-f]+)\s*;\s*(.*)")
-VERSION_REG  = re.compile("#\s*.*-(\d\.\d\.\d)\.txt")
+VERSION_REG  = re.compile("#\s*.*-(\d+\.\d+\.\d+)\.txt")
 
 VERSION_INFO = None
 DIC  = { }
@@ -27,373 +33,377 @@ PropIndex = { }
 PROPERTY_NAME_MAX_LEN = 0
 
 def normalize_prop_name(name):
-    name = re.sub(r'[ _]', '', name)
-    name = name.lower()
-    return name
+  name = re.sub(r'[ _]', '', name)
+  name = name.lower()
+  return name
 
 def fix_block_name(name):
-    s = re.sub(r'[- ]+', '_', name)
-    return 'In_' + s
+  s = re.sub(r'[- ]+', '_', name)
+  return 'In_' + s
 
 def check_version_info(s):
-    global VERSION_INFO
-    m = VERSION_REG.match(s)
-    if m is not None:
-        VERSION_INFO = m.group(1)
+  global VERSION_INFO
+  m = VERSION_REG.match(s)
+  if m is not None:
+    VERSION_INFO = m.group(1)
 
 
 def print_ranges(ranges):
-    for (start, end) in ranges:
-        print "0x%06x, 0x%06x" % (start, end)
+  for (start, end) in ranges:
+    print "0x%06x, 0x%06x" % (start, end)
 
-    print len(ranges)
+  print len(ranges)
 
 def print_prop_and_index(prop, i):
-    print "%-35s %3d" % (prop + ',', i)
-    PropIndex[prop] = i
+  print "%-35s %3d" % (prop + ',', i)
+  PropIndex[prop] = i
 
-print_cache = { }
+PRINT_CACHE = { }
 
 def print_property(prop, data, desc):
-    print ''
-    print "/* PROPERTY: '%s': %s */" % (prop, desc)
+  print ''
+  print "/* PROPERTY: '%s': %s */" % (prop, desc)
 
-    prev_prop = dic_find_by_value(print_cache, data)
-    if prev_prop is not None:
-        print "#define CR_%s CR_%s" % (prop, prev_prop)
-    else:
-        print_cache[prop] = data
-        print "static const OnigCodePoint"
-        print "CR_%s[] = { %d," % (prop, len(data))
-        for (start, end) in data:
-            print "0x%04x, 0x%04x," % (start, end)
+  prev_prop = dic_find_by_value(PRINT_CACHE, data)
+  if prev_prop is not None:
+    print "#define CR_%s CR_%s" % (prop, prev_prop)
+  else:
+    PRINT_CACHE[prop] = data
+    print "static const OnigCodePoint"
+    print "CR_%s[] = { %d," % (prop, len(data))
+    for (start, end) in data:
+      print "0x%04x, 0x%04x," % (start, end)
 
-        print "}; /* END of CR_%s */" % prop
+    print "}; /* END of CR_%s */" % prop
 
 
 def dic_find_by_value(dic, v):
-    for key, val in dic.items():
-        if val == v:
-            return key
+  for key, val in dic.items():
+    if val == v:
+      return key
 
-    return None
+  return None
 
 
 def normalize_ranges(in_ranges, sort=False):
-    if sort:
-        ranges = sorted(in_ranges)
-    else:
-        ranges = in_ranges
+  if sort:
+    ranges = sorted(in_ranges)
+  else:
+    ranges = in_ranges
 
-    r = []
-    prev = None
-    for (start, end) in ranges:
-        if prev >= start - 1:
-            (pstart, pend) = r.pop()
-            end = max(pend, end)
-            start = pstart
+  r = []
+  prev = None
+  for (start, end) in ranges:
+    if prev >= start - 1:
+      (pstart, pend) = r.pop()
+      end = max(pend, end)
+      start = pstart
 
-        r.append((start, end))
-        prev = end
+    r.append((start, end))
+    prev = end
 
-    return r
+  return r
 
 def inverse_ranges(in_ranges):
-    r = []
-    prev = 0x000000
-    for (start, end) in in_ranges:
-        if prev < start:
-            r.append((prev, start - 1))
+  r = []
+  prev = 0x000000
+  for (start, end) in in_ranges:
+    if prev < start:
+      r.append((prev, start - 1))
 
-        prev = end + 1
+    prev = end + 1
 
-    if prev < MAX_CODE_POINT:
-        r.append((prev, MAX_CODE_POINT))
+  if prev < MAX_CODE_POINT:
+    r.append((prev, MAX_CODE_POINT))
 
-    return r
+  return r
 
 def add_ranges(r1, r2):
-    r = r1 + r2
-    return normalize_ranges(r, True)
+  r = r1 + r2
+  return normalize_ranges(r, True)
 
 def sub_one_range(one_range, rs):
-    r = []
-    (s1, e1) = one_range
-    n = len(rs)
-    for i in range(0, n):
-        (s2, e2) = rs[i]
-        if s2 >= s1 and s2 <= e1:
-            if s2 > s1:
-                r.append((s1, s2 - 1))
-            if e2 >= e1:
-                return r
-
-            s1 = e2 + 1
-        elif s2 < s1 and e2 >= s1:
-            if e2 < e1:
-                s1 = e2 + 1
-            else:
-                return r
-
-    r.append((s1, e1))
-    return r
+  r = []
+  (s1, e1) = one_range
+  n = len(rs)
+  for i in range(0, n):
+    (s2, e2) = rs[i]
+    if s2 >= s1 and s2 <= e1:
+      if s2 > s1:
+        r.append((s1, s2 - 1))
+      if e2 >= e1:
+        return r
+
+      s1 = e2 + 1
+    elif s2 < s1 and e2 >= s1:
+      if e2 < e1:
+        s1 = e2 + 1
+      else:
+        return r
+
+  r.append((s1, e1))
+  return r
 
 def sub_ranges(r1, r2):
-    r = []
-    for one_range in r1:
-        rs = sub_one_range(one_range, r2)
-        r.extend(rs)
+  r = []
+  for one_range in r1:
+    rs = sub_one_range(one_range, r2)
+    r.extend(rs)
 
-    return r
+  return r
 
 def add_ranges_in_dic(dic):
-    r = []
-    for k, v in dic.items():
-        r = r + v
+  r = []
+  for k, v in dic.items():
+    r = r + v
 
-    return normalize_ranges(r, True)
+  return normalize_ranges(r, True)
 
 def normalize_ranges_in_dic(dic, sort=False):
-    for k, v in dic.items():
-        r = normalize_ranges(v, sort)
-        dic[k] = r
+  for k, v in dic.items():
+    r = normalize_ranges(v, sort)
+    dic[k] = r
 
 def merge_dic(to_dic, from_dic):
-    to_keys   = to_dic.keys()
-    from_keys = from_dic.keys()
-    common = list(set(to_keys) & set(from_keys))
-    if len(common) != 0:
-        print >> sys.stderr, "merge_dic: collision: %s" % sorted(common)
+  to_keys   = to_dic.keys()
+  from_keys = from_dic.keys()
+  common = list(set(to_keys) & set(from_keys))
+  if len(common) != 0:
+    print >> sys.stderr, "merge_dic: collision: %s" % sorted(common)
 
-    to_dic.update(from_dic)
+  to_dic.update(from_dic)
 
 def merge_props(to_props, from_props):
-    common = list(set(to_props) & set(from_props))
-    if len(common) != 0:
-        print >> sys.stderr, "merge_props: collision: %s" % sorted(common)
+  common = list(set(to_props) & set(from_props))
+  if len(common) != 0:
+    print >> sys.stderr, "merge_props: collision: %s" % sorted(common)
 
-    to_props.extend(from_props)
+  to_props.extend(from_props)
 
 def add_range_into_dic(dic, name, start, end):
-    d = dic.get(name, None)
-    if d is None:
-        d = [(start, end)]
-        dic[name] = d
-    else:
-        d.append((start, end))
+  d = dic.get(name, None)
+  if d is None:
+    d = [(start, end)]
+    dic[name] = d
+  else:
+    d.append((start, end))
 
 def list_sub(a, b):
-    x = set(a) - set(b)
-    return list(x)
+  x = set(a) - set(b)
+  return list(x)
 
 
 def parse_unicode_data_file(f):
+  dic = { }
+  assigned = []
+  for line in f:
+    s = line.strip()
+    if len(s) == 0:
+      continue
+    if s[0] == '#':
+      continue
+
+    a = s.split(';')
+    code = int(a[0], 16)
+    desc = a[1]
+    prop = a[2]
+    if UD_FIRST_REG.match(desc) is not None:
+      start = code
+      end   = None
+    elif UD_LAST_REG.match(desc) is not None:
+      end = code
+    else:
+      start = end = code
+
+    if end is not None:
+      assigned.append((start, end))
+      add_range_into_dic(dic, prop, start, end)
+      if len(prop) == 2:
+        add_range_into_dic(dic, prop[0:1], start, end)
+
+  normalize_ranges_in_dic(dic)
+  return dic, assigned
+
+def parse_properties(path, klass, prop_prefix = None):
+  with open(path, 'r') as f:
     dic = { }
-    assigned = []
+    prop = None
+    props = []
     for line in f:
-        s = line.strip()
-        if len(s) == 0:
-            continue
-        if s[0] == '#':
-            continue
-
-        a = s.split(';')
-        code = int(a[0], 16)
-        desc = a[1]
-        prop = a[2]
-        if UD_FIRST_REG.match(desc) is not None:
-            start = code
-            end   = None
-        elif UD_LAST_REG.match(desc) is not None:
-            end = code
+      s = line.strip()
+      if len(s) == 0:
+        continue
+
+      if s[0] == '#':
+        if VERSION_INFO is None:
+          check_version_info(s)
+
+      m = PR_LINE_REG.match(s)
+      if m:
+        prop = m.group(3)
+        if prop_prefix is not None:
+          prop = prop_prefix + prop
+
+        if m.group(2):
+          start = int(m.group(1), 16)
+          end   = int(m.group(2), 16)
+          add_range_into_dic(dic, prop, start, end)
         else:
-            start = end = code
-
-        if end is not None:
-            assigned.append((start, end))
-            add_range_into_dic(dic, prop, start, end)
-            if len(prop) == 2:
-                add_range_into_dic(dic, prop[0:1], start, end)
-
-    normalize_ranges_in_dic(dic)
-    return dic, assigned
-
-def parse_properties(path, klass):
-    with open(path, 'r') as f:
-        dic = { }
-        prop = None
-        props = []
-        for line in f:
-            s = line.strip()
-            if len(s) == 0:
-                continue
-
-            if s[0] == '#':
-                if VERSION_INFO is None:
-                    check_version_info(s)
-
-            m = PR_LINE_REG.match(s)
-            if m:
-                prop = m.group(3)
-                if m.group(2):
-                    start = int(m.group(1), 16)
-                    end   = int(m.group(2), 16)
-                    add_range_into_dic(dic, prop, start, end)
-                else:
-                    start = int(m.group(1), 16)
-                    add_range_into_dic(dic, prop, start, start)
-
-            elif PR_TOTAL_REG.match(s) is not None:
-                KDIC[prop] = klass
-                props.append(prop)
-
-    normalize_ranges_in_dic(dic)
-    return (dic, props)
+          start = int(m.group(1), 16)
+          add_range_into_dic(dic, prop, start, start)
+
+      elif PR_TOTAL_REG.match(s) is not None:
+        KDIC[prop] = klass
+        props.append(prop)
+
+  normalize_ranges_in_dic(dic)
+  return (dic, props)
 
 def parse_property_aliases(path):
-    a = { }
-    with open(path, 'r') as f:
-        for line in f:
-            s = line.strip()
-            if len(s) == 0:
-                continue
+  a = { }
+  with open(path, 'r') as f:
+    for line in f:
+      s = line.strip()
+      if len(s) == 0:
+        continue
 
-            m = PA_LINE_REG.match(s)
-            if not(m):
-                continue
+      m = PA_LINE_REG.match(s)
+      if not(m):
+        continue
 
-            if m.group(1) == m.group(2):
-                continue
+      if m.group(1) == m.group(2):
+        continue
 
-            a[m.group(1)] = m.group(2)
+      a[m.group(1)] = m.group(2)
 
-    return a
+  return a
 
 def parse_property_value_aliases(path):
-    a = { }
-    with open(path, 'r') as f:
-        for line in f:
-            s = line.strip()
-            if len(s) == 0:
-                continue
-
-            m = PVA_LINE_REG.match(s)
-            if not(m):
-                continue
-
-            cat = m.group(1)
-            x2  = m.group(2)
-            x3  = m.group(3)
-            x4  = m.group(4)
-            if cat == 'sc':
-                if x2 != x3:
-                    a[x2] = x3
-                if x4 and x4 != x3:
-                    a[x4] = x3
-            else:
-                if x2 != x3:
-                    a[x3] = x2
-                if x4 and x4 != x2:
-                    a[x4] = x2
-
-    return a
+  a = { }
+  with open(path, 'r') as f:
+    for line in f:
+      s = line.strip()
+      if len(s) == 0:
+        continue
+
+      m = PVA_LINE_REG.match(s)
+      if not(m):
+        continue
+
+      cat = m.group(1)
+      x2  = m.group(2)
+      x3  = m.group(3)
+      x4  = m.group(4)
+      if cat == 'sc':
+        if x2 != x3:
+          a[x2] = x3
+        if x4 and x4 != x3:
+          a[x4] = x3
+      else:
+        if x2 != x3:
+          a[x3] = x2
+        if x4 and x4 != x2:
+          a[x4] = x2
+
+  return a
 
 def parse_blocks(path):
-    dic = { }
-    blocks = []
-    with open(path, 'r') as f:
-        for line in f:
-            s = line.strip()
-            if len(s) == 0:
-                continue
-
-            m = BL_LINE_REG.match(s)
-            if not(m):
-                continue
-
-            start = int(m.group(1), 16)
-            end   = int(m.group(2), 16)
-            block = fix_block_name(m.group(3))
-            add_range_into_dic(dic, block, start, end)
-            blocks.append(block)
-
-    noblock = fix_block_name('No_Block')
-    dic[noblock] = inverse_ranges(add_ranges_in_dic(dic))
-    blocks.append(noblock)
-    return dic, blocks
+  dic = { }
+  blocks = []
+  with open(path, 'r') as f:
+    for line in f:
+      s = line.strip()
+      if len(s) == 0:
+        continue
+
+      m = BL_LINE_REG.match(s)
+      if not(m):
+        continue
+
+      start = int(m.group(1), 16)
+      end   = int(m.group(2), 16)
+      block = fix_block_name(m.group(3))
+      add_range_into_dic(dic, block, start, end)
+      blocks.append(block)
+
+  noblock = fix_block_name('No_Block')
+  dic[noblock] = inverse_ranges(add_ranges_in_dic(dic))
+  blocks.append(noblock)
+  return dic, blocks
 
 def add_primitive_props(assigned):
-    DIC['Assigned'] = normalize_ranges(assigned)
-    DIC['Any']     = [(0x000000, 0x10ffff)]
-    DIC['ASCII']   = [(0x000000, 0x00007f)]
-    DIC['NEWLINE'] = [(0x00000a, 0x00000a)]
-    DIC['Cn'] = inverse_ranges(DIC['Assigned'])
-    DIC['C'].extend(DIC['Cn'])
-    DIC['C'] = normalize_ranges(DIC['C'], True)
-
-    d = []
-    d.extend(DIC['Ll'])
-    d.extend(DIC['Lt'])
-    d.extend(DIC['Lu'])
-    DIC['LC'] = normalize_ranges(d, True)
+  DIC['Assigned'] = normalize_ranges(assigned)
+  DIC['Any']     = [(0x000000, 0x10ffff)]
+  DIC['ASCII']   = [(0x000000, 0x00007f)]
+  DIC['NEWLINE'] = [(0x00000a, 0x00000a)]
+  DIC['Cn'] = inverse_ranges(DIC['Assigned'])
+  DIC['C'].extend(DIC['Cn'])
+  DIC['C'] = normalize_ranges(DIC['C'], True)
+
+  d = []
+  d.extend(DIC['Ll'])
+  d.extend(DIC['Lt'])
+  d.extend(DIC['Lu'])
+  DIC['LC'] = normalize_ranges(d, True)
 
 def add_posix_props(dic):
-    alnum = []
-    alnum.extend(dic['Alphabetic'])
-    alnum.extend(dic['Nd'])  # Nd == Decimal_Number
-    alnum = normalize_ranges(alnum, True)
-
-    blank = [(0x0009, 0x0009)]
-    blank.extend(dic['Zs'])  # Zs == Space_Separator
-    blank = normalize_ranges(blank, True)
-
-    word = []
-    word.extend(dic['Alphabetic'])
-    word.extend(dic['M'])   # M == Mark
-    word.extend(dic['Nd'])
-    word.extend(dic['Pc'])  # Pc == Connector_Punctuation
-    word = normalize_ranges(word, True)
-
-    graph = sub_ranges(dic['Any'], dic['White_Space'])
-    graph = sub_ranges(graph, dic['Cc'])
-    graph = sub_ranges(graph, dic['Cs'])  # Cs == Surrogate
-    graph = sub_ranges(graph, dic['Cn'])  # Cn == Unassigned
-    graph = normalize_ranges(graph, True)
-
-    p = []
-    p.extend(graph)
-    p.extend(dic['Zs'])
-    p = normalize_ranges(p, True)
-
-    dic['Alpha']  = dic['Alphabetic']
-    dic['Upper']  = dic['Uppercase']
-    dic['Lower']  = dic['Lowercase']
-    dic['Punct']  = dic['P']  # P == Punctuation
-    dic['Digit']  = dic['Nd']
-    dic['XDigit'] = [(0x0030, 0x0039), (0x0041, 0x0046), (0x0061, 0x0066)]
-    dic['Alnum']  = alnum
-    dic['Space']  = dic['White_Space']
-    dic['Blank']  = blank
-    dic['Cntrl']  = dic['Cc']
-    dic['Word']   = word
-    dic['Graph']  = graph
-    dic['Print']  = p
+  alnum = []
+  alnum.extend(dic['Alphabetic'])
+  alnum.extend(dic['Nd'])  # Nd == Decimal_Number
+  alnum = normalize_ranges(alnum, True)
+
+  blank = [(0x0009, 0x0009)]
+  blank.extend(dic['Zs'])  # Zs == Space_Separator
+  blank = normalize_ranges(blank, True)
+
+  word = []
+  word.extend(dic['Alphabetic'])
+  word.extend(dic['M'])   # M == Mark
+  word.extend(dic['Nd'])
+  word.extend(dic['Pc'])  # Pc == Connector_Punctuation
+  word = normalize_ranges(word, True)
+
+  graph = sub_ranges(dic['Any'], dic['White_Space'])
+  graph = sub_ranges(graph, dic['Cc'])
+  graph = sub_ranges(graph, dic['Cs'])  # Cs == Surrogate
+  graph = sub_ranges(graph, dic['Cn'])  # Cn == Unassigned
+  graph = normalize_ranges(graph, True)
+
+  p = []
+  p.extend(graph)
+  p.extend(dic['Zs'])
+  p = normalize_ranges(p, True)
+
+  dic['Alpha']  = dic['Alphabetic']
+  dic['Upper']  = dic['Uppercase']
+  dic['Lower']  = dic['Lowercase']
+  dic['Punct']  = dic['P']  # P == Punctuation
+  dic['Digit']  = dic['Nd']
+  dic['XDigit'] = [(0x0030, 0x0039), (0x0041, 0x0046), (0x0061, 0x0066)]
+  dic['Alnum']  = alnum
+  dic['Space']  = dic['White_Space']
+  dic['Blank']  = blank
+  dic['Cntrl']  = dic['Cc']
+  dic['Word']   = word
+  dic['Graph']  = graph
+  dic['Print']  = p
 
 
 def set_max_prop_name(name):
-    global PROPERTY_NAME_MAX_LEN
-    n = len(name)
-    if n > PROPERTY_NAME_MAX_LEN:
-        PROPERTY_NAME_MAX_LEN = n
+  global PROPERTY_NAME_MAX_LEN
+  n = len(name)
+  if n > PROPERTY_NAME_MAX_LEN:
+    PROPERTY_NAME_MAX_LEN = n
 
-LIST_COUNTER = 1
 def entry_prop_name(name, index):
-    global LIST_COUNTER
-    set_max_prop_name(name)
-    if OUTPUT_LIST and index >= len(POSIX_LIST):
-        print >> UPF, "%3d: %s" % (LIST_COUNTER, name)
-        LIST_COUNTER += 1
+  set_max_prop_name(name)
+  if OUTPUT_LIST_MODE and index >= len(POSIX_LIST):
+    print >> UPF, "%3d: %s" % (index, name)
 
+def entry_and_print_prop_and_index(name, index):
+  entry_prop_name(name, index)
+  nname = normalize_prop_name(name)
+  print_prop_and_index(nname, index)
 
 ### main ###
 argv = sys.argv
@@ -401,19 +411,18 @@ argc = len(argv)
 
 POSIX_ONLY = False
 if argc >= 2:
-    if argv[1] == '-posix':
-        POSIX_ONLY = True
+  if argv[1] == '-posix':
+    POSIX_ONLY = True
 
-OUTPUT_LIST = not(POSIX_ONLY)
+OUTPUT_LIST_MODE = not(POSIX_ONLY)
 
 with open('UnicodeData.txt', 'r') as f:
-    dic, assigned = parse_unicode_data_file(f)
-    DIC = dic
-    add_primitive_props(assigned)
+  dic, assigned = parse_unicode_data_file(f)
+  DIC = dic
+  add_primitive_props(assigned)
 
 PROPS = DIC.keys()
 PROPS = list_sub(PROPS, POSIX_LIST)
-PROPS = sorted(PROPS)
 
 dic, props = parse_properties('DerivedCoreProperties.txt', 'Derived Property')
 merge_dic(DIC, dic)
@@ -437,47 +446,59 @@ merge_dic(ALIASES, a)
 dic, BLOCKS = parse_blocks('Blocks.txt')
 merge_dic(DIC, dic)
 
+if INCLUDE_GRAPHEME_CLUSTER_DATA:
+  dic, props = parse_properties('GraphemeBreakProperty.txt',
+                                'GraphemeBreak Property',
+                                GRAPHEME_CLUSTER_BREAK_NAME_PREFIX)
+  merge_dic(DIC, dic)
+  merge_props(PROPS, props)
+  #prop = GRAPHEME_CLUSTER_BREAK_NAME_PREFIX + 'Other'
+  #DIC[prop] = inverse_ranges(add_ranges_in_dic(dic))
+  #PROPS.append(prop)
+  #KDIC[prop] = 'GrapemeBreak Property'
+
 add_posix_props(DIC)
+PROPS = sorted(PROPS)
 
 s = '''%{
 /* Generated by make_unicode_property_data.py. */
 '''
 print s
 for prop in POSIX_LIST:
-    print_property(prop, DIC[prop], "POSIX [[:%s:]]" % prop)
+  print_property(prop, DIC[prop], "POSIX [[:%s:]]" % prop)
 
 print ''
 
 if not(POSIX_ONLY):
-    for prop in PROPS:
-        klass = KDIC.get(prop, None)
-        if klass is None:
-            n = len(prop)
-            if n == 1:
-                klass = 'Major Category'
-            elif n == 2:
-                klass = 'General Category'
-            else:
-                klass = '-'
+  for prop in PROPS:
+    klass = KDIC.get(prop, None)
+    if klass is None:
+      n = len(prop)
+      if n == 1:
+        klass = 'Major Category'
+      elif n == 2:
+        klass = 'General Category'
+      else:
+        klass = '-'
 
-        print_property(prop, DIC[prop], klass)
+    print_property(prop, DIC[prop], klass)
 
-    for block in BLOCKS:
-        print_property(block, DIC[block], 'Block')
+  for block in BLOCKS:
+    print_property(block, DIC[block], 'Block')
 
 
 print ''
 print "static const OnigCodePoint*\nconst CodeRanges[] = {"
 
 for prop in POSIX_LIST:
-    print "  CR_%s," % prop
+  print "  CR_%s," % prop
 
 if not(POSIX_ONLY):
-    for prop in PROPS:
-        print "  CR_%s," % prop
+  for prop in PROPS:
+    print "  CR_%s," % prop
 
-    for prop in BLOCKS:
-        print "  CR_%s," % prop
+  for prop in BLOCKS:
+    print "  CR_%s," % prop
 
 s = '''};
 %}
@@ -489,57 +510,51 @@ struct PropertyNameCtype {
 '''
 sys.stdout.write(s)
 
-if OUTPUT_LIST:
-    UPF = open("UNICODE_PROPERTIES", "w")
-    if VERSION_INFO is not None:
-        print >> UPF, "Unicode Properties (from Unicode Version: %s)" % VERSION_INFO
-        print >> UPF, ''
+if OUTPUT_LIST_MODE:
+  UPF = open("UNICODE_PROPERTIES", "w")
+  if VERSION_INFO is not None:
+    print >> UPF, "Unicode Properties (from Unicode Version: %s)" % VERSION_INFO
+    print >> UPF, ''
 
 index = -1
 for prop in POSIX_LIST:
   index += 1
-  entry_prop_name(prop, index)
-  prop = normalize_prop_name(prop)
-  print_prop_and_index(prop, index)
+  entry_and_print_prop_and_index(prop, index)
 
 if not(POSIX_ONLY):
-    for prop in PROPS:
-        index += 1
-        entry_prop_name(prop, index)
-        prop = normalize_prop_name(prop)
-        print_prop_and_index(prop, index)
-
-    NALIASES = map(lambda (k,v):(normalize_prop_name(k), k, v), ALIASES.items())
-    NALIASES = sorted(NALIASES)
-    for (nk, k, v) in NALIASES:
-        nv = normalize_prop_name(v)
-        if PropIndex.get(nk, None) is not None:
-            print >> sys.stderr, "ALIASES: already exists: %s => %s" % (k, v)
-            continue
-        index = PropIndex.get(nv, None)
-        if index is None:
-            #print >> sys.stderr, "ALIASES: value is not exist: %s => %s" % (k, v)
-            continue
-
-        entry_prop_name(k, index)
-        print_prop_and_index(nk, index)
-
-    for name in BLOCKS:
-        index += 1
-        entry_prop_name(name, index)
-        name = normalize_prop_name(name)
-        print_prop_and_index(name, index)
+  for prop in PROPS:
+    index += 1
+    entry_and_print_prop_and_index(prop, index)
+
+  NALIASES = map(lambda (k,v):(normalize_prop_name(k), k, v), ALIASES.items())
+  NALIASES = sorted(NALIASES)
+  for (nk, k, v) in NALIASES:
+    nv = normalize_prop_name(v)
+    if PropIndex.get(nk, None) is not None:
+      print >> sys.stderr, "ALIASES: already exists: %s => %s" % (k, v)
+      continue
+    aindex = PropIndex.get(nv, None)
+    if aindex is None:
+      #print >> sys.stderr, "ALIASES: value is not exist: %s => %s" % (k, v)
+      continue
+
+    entry_prop_name(k, aindex)
+    print_prop_and_index(nk, aindex)
+
+  for name in BLOCKS:
+    index += 1
+    entry_and_print_prop_and_index(name, index)
 
 print '%%'
 print ''
 if VERSION_INFO is not None:
-    print "#define PROPERTY_VERSION  %s" % re.sub(r'[\.-]', '_', VERSION_INFO)
-    print ''
+  print "#define PROPERTY_VERSION  %s" % re.sub(r'[\.-]', '_', VERSION_INFO)
+  print ''
 
 print "#define PROPERTY_NAME_MAX_SIZE  %d" % (PROPERTY_NAME_MAX_LEN + 10)
 print "#define CODE_RANGES_NUM         %d" % (index + 1)
 
-if OUTPUT_LIST:
-    UPF.close()
+if OUTPUT_LIST_MODE:
+  UPF.close()
 
 sys.exit(0)
diff --git a/src/oniguruma.h b/src/oniguruma.h
index bc8983f..dbcbbdb 100644
--- a/src/oniguruma.h
+++ b/src/oniguruma.h
@@ -35,8 +35,8 @@ extern "C" {
 
 #define ONIGURUMA
 #define ONIGURUMA_VERSION_MAJOR   6
-#define ONIGURUMA_VERSION_MINOR   5
-#define ONIGURUMA_VERSION_TEENY   0
+#define ONIGURUMA_VERSION_MINOR   6
+#define ONIGURUMA_VERSION_TEENY   1
 
 #ifdef __cplusplus
 # ifndef  HAVE_PROTOTYPES
@@ -270,7 +270,7 @@ ONIG_EXTERN OnigEncodingType OnigEncodingGB18030;
 #define ONIGENC_IS_CODE_ASCII(code)       ((code) < 128)
 #define ONIGENC_IS_MBC_WORD(enc,s,end) \
    ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end))
-
+#define ONIGENC_IS_MBC_WORD_ASCII(enc,s,end) onigenc_is_mbc_word_ascii(enc,s,end)
 
 #define ONIGENC_NAME(enc)                      ((enc)->name)
 
@@ -385,6 +385,7 @@ typedef unsigned int        OnigOptionType;
 
 /* options */
 #define ONIG_OPTION_NONE                 0U
+/* options (compile time) */
 #define ONIG_OPTION_IGNORECASE           1U
 #define ONIG_OPTION_EXTEND               (ONIG_OPTION_IGNORECASE         << 1)
 #define ONIG_OPTION_MULTILINE            (ONIG_OPTION_EXTEND             << 1)
@@ -395,11 +396,18 @@ typedef unsigned int        OnigOptionType;
 #define ONIG_OPTION_DONT_CAPTURE_GROUP   (ONIG_OPTION_NEGATE_SINGLELINE  << 1)
 #define ONIG_OPTION_CAPTURE_GROUP        (ONIG_OPTION_DONT_CAPTURE_GROUP << 1)
 /* options (search time) */
-#define ONIG_OPTION_NOTBOL               (ONIG_OPTION_CAPTURE_GROUP << 1)
-#define ONIG_OPTION_NOTEOL               (ONIG_OPTION_NOTBOL << 1)
-#define ONIG_OPTION_POSIX_REGION         (ONIG_OPTION_NOTEOL << 1)
-#define ONIG_OPTION_CHECK_VALIDITY_OF_STRING   (ONIG_OPTION_POSIX_REGION << 1)
-#define ONIG_OPTION_MAXBIT               ONIG_OPTION_CHECK_VALIDITY_OF_STRING  /* limit */
+#define ONIG_OPTION_NOTBOL                    (ONIG_OPTION_CAPTURE_GROUP << 1)
+#define ONIG_OPTION_NOTEOL                    (ONIG_OPTION_NOTBOL << 1)
+#define ONIG_OPTION_POSIX_REGION              (ONIG_OPTION_NOTEOL << 1)
+#define ONIG_OPTION_CHECK_VALIDITY_OF_STRING  (ONIG_OPTION_POSIX_REGION << 1)
+/* #define ONIG_OPTION_CRLF_AS_LINE_SEPARATOR    (ONIG_OPTION_CHECK_VALIDITY_OF_STRING << 1) */
+/* options (compile time) */
+#define ONIG_OPTION_WORD_IS_ASCII        (ONIG_OPTION_CHECK_VALIDITY_OF_STRING << 4)
+#define ONIG_OPTION_DIGIT_IS_ASCII       (ONIG_OPTION_WORD_IS_ASCII << 1)
+#define ONIG_OPTION_SPACE_IS_ASCII       (ONIG_OPTION_DIGIT_IS_ASCII << 1)
+#define ONIG_OPTION_POSIX_IS_ASCII       (ONIG_OPTION_SPACE_IS_ASCII << 1)
+
+#define ONIG_OPTION_MAXBIT               ONIG_OPTION_POSIX_IS_ASCII  /* limit */
 
 #define ONIG_OPTION_ON(options,regopt)      ((options) |= (regopt))
 #define ONIG_OPTION_OFF(options,regopt)     ((options) &= ~(regopt))
@@ -501,6 +509,7 @@ ONIG_EXTERN OnigSyntaxType*   OnigDefaultSyntax;
 #define ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE (1U<<23) /* \R \r\n else [\x0a-\x0d] */
 #define ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT  (1U<<24) /* \N (?-m:.), \O (?m:.) */
 #define ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP   (1U<<25) /* (?~...) */
+#define ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER   (1U<<26) /* \X \y \Y */
 
 /* syntax (behavior) */
 #define ONIG_SYN_CONTEXT_INDEP_ANCHORS           (1U<<31) /* not implemented */
diff --git a/src/regcomp.c b/src/regcomp.c
index 47023cb..ab5701c 100644
--- a/src/regcomp.c
+++ b/src/regcomp.c
@@ -277,7 +277,7 @@ unset_addr_list_add(UnsetAddrList* list, int offset, struct _Node* node)
 static int
 add_opcode(regex_t* reg, int opcode)
 {
-  BBUF_ADD1(reg, opcode);
+  BB_ADD1(reg, opcode);
   return 0;
 }
 
@@ -287,7 +287,7 @@ add_state_check_num(regex_t* reg, int num)
 {
   StateCheckNumType n = (StateCheckNumType )num;
 
-  BBUF_ADD(reg, &n, SIZE_STATE_CHECK_NUM);
+  BB_ADD(reg, &n, SIZE_STATE_CHECK_NUM);
   return 0;
 }
 #endif
@@ -297,7 +297,7 @@ add_rel_addr(regex_t* reg, int addr)
 {
   RelAddrType ra = (RelAddrType )addr;
 
-  BBUF_ADD(reg, &ra, SIZE_RELADDR);
+  BB_ADD(reg, &ra, SIZE_RELADDR);
   return 0;
 }
 
@@ -306,7 +306,7 @@ add_abs_addr(regex_t* reg, int addr)
 {
   AbsAddrType ra = (AbsAddrType )addr;
 
-  BBUF_ADD(reg, &ra, SIZE_ABSADDR);
+  BB_ADD(reg, &ra, SIZE_ABSADDR);
   return 0;
 }
 
@@ -315,7 +315,7 @@ add_length(regex_t* reg, int len)
 {
   LengthType l = (LengthType )len;
 
-  BBUF_ADD(reg, &l, SIZE_LENGTH);
+  BB_ADD(reg, &l, SIZE_LENGTH);
   return 0;
 }
 
@@ -324,7 +324,7 @@ add_mem_num(regex_t* reg, int num)
 {
   MemNumType n = (MemNumType )num;
 
-  BBUF_ADD(reg, &n, SIZE_MEMNUM);
+  BB_ADD(reg, &n, SIZE_MEMNUM);
   return 0;
 }
 
@@ -334,7 +334,7 @@ add_pointer(regex_t* reg, void* addr)
 {
   PointerType ptr = (PointerType )addr;
 
-  BBUF_ADD(reg, &ptr, SIZE_POINTER);
+  BB_ADD(reg, &ptr, SIZE_POINTER);
   return 0;
 }
 #endif
@@ -342,7 +342,7 @@ add_pointer(regex_t* reg, void* addr)
 static int
 add_option(regex_t* reg, OnigOptionType option)
 {
-  BBUF_ADD(reg, &option, SIZE_OPTION);
+  BB_ADD(reg, &option, SIZE_OPTION);
   return 0;
 }
 
@@ -351,7 +351,7 @@ add_save_type(regex_t* reg, enum SaveType type)
 {
   SaveType t = (SaveType )type;
 
-  BBUF_ADD(reg, &t, SIZE_SAVE_TYPE);
+  BB_ADD(reg, &t, SIZE_SAVE_TYPE);
   return 0;
 }
 
@@ -360,7 +360,14 @@ add_update_var_type(regex_t* reg, enum UpdateVarType type)
 {
   UpdateVarType t = (UpdateVarType )type;
 
-  BBUF_ADD(reg, &t, SIZE_UPDATE_VAR_TYPE);
+  BB_ADD(reg, &t, SIZE_UPDATE_VAR_TYPE);
+  return 0;
+}
+
+static int
+add_mode(regex_t* reg, ModeType mode)
+{
+  BB_ADD(reg, &mode, SIZE_MODE);
   return 0;
 }
 
@@ -378,14 +385,14 @@ add_opcode_rel_addr(regex_t* reg, int opcode, int addr)
 static int
 add_bytes(regex_t* reg, UChar* bytes, int len)
 {
-  BBUF_ADD(reg, bytes, len);
+  BB_ADD(reg, bytes, len);
   return 0;
 }
 
 static int
 add_bitset(regex_t* reg, BitSetRef bs)
 {
-  BBUF_ADD(reg, bs, SIZE_BITSET);
+  BB_ADD(reg, bs, SIZE_BITSET);
   return 0;
 }
 
@@ -492,7 +499,7 @@ compile_call(CallNode* node, regex_t* reg, ScanEnv* env)
 
   r = add_opcode(reg, OP_CALL);
   if (r != 0) return r;
-  r = unset_addr_list_add(env->unset_addr_list, BBUF_GET_OFFSET_POS(reg),
+  r = unset_addr_list_add(env->unset_addr_list, BB_GET_OFFSET_POS(reg),
                           NODE_CALL_BODY(node));
   if (r != 0) return r;
   r = add_abs_addr(reg, 0 /*dummy addr.*/);
@@ -655,7 +662,7 @@ add_multi_byte_cclass(BBuf* mbuf, regex_t* reg)
   return add_bytes(reg, mbuf->p, mbuf->used);
 #else
   int r, pad_size;
-  UChar* p = BBUF_GET_ADD_ADDRESS(reg) + SIZE_LENGTH;
+  UChar* p = BB_GET_ADD_ADDRESS(reg) + SIZE_LENGTH;
 
   GET_ALIGNMENT_PAD_SIZE(p, pad_size);
   add_length(reg, mbuf->used + (WORD_ALIGNMENT_SIZE - 1));
@@ -1400,7 +1407,7 @@ compile_enclosure_memory_node(EnclosureNode* node, regex_t* reg, ScanEnv* env)
   if (node->m.regnum == 0 && NODE_IS_CALLED(node)) {
     r = add_opcode(reg, OP_CALL);
     if (r != 0) return r;
-    node->m.called_addr = BBUF_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;
+    node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;
     NODE_STATUS_ADD(node, NST_ADDR_FIXED);
     r = add_abs_addr(reg, (int )node->m.called_addr);
     if (r != 0) return r;
@@ -1418,7 +1425,7 @@ compile_enclosure_memory_node(EnclosureNode* node, regex_t* reg, ScanEnv* env)
   if (NODE_IS_CALLED(node)) {
     r = add_opcode(reg, OP_CALL);
     if (r != 0) return r;
-    node->m.called_addr = BBUF_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;
+    node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;
     NODE_STATUS_ADD(node, NST_ADDR_FIXED);
     r = add_abs_addr(reg, (int )node->m.called_addr);
     if (r != 0) return r;
@@ -1588,6 +1595,20 @@ compile_length_anchor_node(AnchorNode* node, regex_t* reg)
     len = SIZE_OP_PUSH_LOOK_BEHIND_NOT + tlen + SIZE_OP_FAIL_LOOK_BEHIND_NOT;
     break;
 
+  case ANCHOR_WORD_BOUNDARY:
+  case ANCHOR_NO_WORD_BOUNDARY:
+#ifdef USE_WORD_BEGIN_END
+  case ANCHOR_WORD_BEGIN:
+  case ANCHOR_WORD_END:
+#endif
+    len = SIZE_OP_WORD_BOUNDARY;
+    break;
+
+  case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+  case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+    len = SIZE_OPCODE;
+    break;
+
   default:
     len = SIZE_OPCODE;
     break;
@@ -1600,6 +1621,7 @@ static int
 compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env)
 {
   int r, len;
+  enum OpCode op;
 
   switch (node->type) {
   case ANCHOR_BEGIN_BUF:      r = add_opcode(reg, OP_BEGIN_BUF);      break;
@@ -1609,13 +1631,34 @@ compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env)
   case ANCHOR_SEMI_END_BUF:   r = add_opcode(reg, OP_SEMI_END_BUF);   break;
   case ANCHOR_BEGIN_POSITION: r = add_opcode(reg, OP_BEGIN_POSITION); break;
 
-  case ANCHOR_WORD_BOUND:     r = add_opcode(reg, OP_WORD_BOUND);     break;
-  case ANCHOR_NOT_WORD_BOUND: r = add_opcode(reg, OP_NOT_WORD_BOUND); break;
+  case ANCHOR_WORD_BOUNDARY:
+    op = OP_WORD_BOUNDARY;
+  word:
+    r = add_opcode(reg, op);
+    if (r != 0) return r;
+    r = add_mode(reg, (ModeType )node->ascii_mode);
+    break;
+
+  case ANCHOR_NO_WORD_BOUNDARY:
+    op = OP_NO_WORD_BOUNDARY; goto word;
+    break;
 #ifdef USE_WORD_BEGIN_END
-  case ANCHOR_WORD_BEGIN:     r = add_opcode(reg, OP_WORD_BEGIN);     break;
-  case ANCHOR_WORD_END:       r = add_opcode(reg, OP_WORD_END);       break;
+  case ANCHOR_WORD_BEGIN:
+    op = OP_WORD_BEGIN; goto word;
+    break;
+  case ANCHOR_WORD_END:
+    op = OP_WORD_END; goto word;
+    break;
 #endif
 
+  case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+    r = add_opcode(reg, OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
+    break;
+
+  case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+    r = add_opcode(reg, OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
+    break;
+
   case ANCHOR_PREC_READ:
     r = add_opcode(reg, OP_PREC_READ_START);
     if (r != 0) return r;
@@ -1914,9 +1957,12 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env)
         break;
 
       case ONIGENC_CTYPE_WORD:
-        if (CTYPE_(node)->not != 0)  op = OP_NOT_WORD;
-        else                         op = OP_WORD;
-
+        if (CTYPE_(node)->ascii_mode == 0) {
+          op = CTYPE_(node)->not != 0 ? OP_NO_WORD : OP_WORD;
+        }
+        else {
+          op = CTYPE_(node)->not != 0 ? OP_NO_WORD_ASCII : OP_WORD_ASCII;
+        }
         r = add_opcode(reg, op);
         break;
 
@@ -2038,8 +2084,6 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env)
   return r;
 }
 
-#ifdef USE_NAMED_GROUP
-
 static int
 noname_disable_map(Node** plink, GroupNumRemap* map, int* counter)
 {
@@ -2283,7 +2327,6 @@ disable_noname_group_capture(Node** root, regex_t* reg, ScanEnv* env)
 
   return onig_renumber_name_table(reg, map);
 }
-#endif /* USE_NAMED_GROUP */
 
 #ifdef USE_CALL
 static int
@@ -2301,7 +2344,7 @@ unset_addr_list_fix(UnsetAddrList* uslist, regex_t* reg)
     addr   = en->m.called_addr;
     offset = uslist->us[i].offset;
 
-    BBUF_WRITE(reg, offset, &addr, SIZE_ABSADDR);
+    BB_WRITE(reg, offset, &addr, SIZE_ABSADDR);
   }
   return 0;
 }
@@ -2394,9 +2437,6 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)
 #endif
 
   case NODE_CTYPE:
-    *len = 1;
-    break;
-
   case NODE_CCLASS:
     *len = 1;
     break;
@@ -2496,7 +2536,8 @@ is_exclusive(Node* x, Node* y, regex_t* reg)
       switch (ytype) {
       case NODE_CTYPE:
         if (CTYPE_(y)->ctype == CTYPE_(x)->ctype &&
-            CTYPE_(y)->not   != CTYPE_(x)->not)
+            CTYPE_(y)->not   != CTYPE_(x)->not &&
+            CTYPE_(y)->ascii_mode == CTYPE_(x)->ascii_mode)
           return 1;
         else
           return 0;
@@ -2523,6 +2564,7 @@ is_exclusive(Node* x, Node* y, regex_t* reg)
 
   case NODE_CCLASS:
     {
+      int range;
       CClassNode* xc = CCLASS_(x);
       switch (ytype) {
       case NODE_CTYPE:
@@ -2534,9 +2576,10 @@ is_exclusive(Node* x, Node* y, regex_t* reg)
         case ONIGENC_CTYPE_WORD:
           if (CTYPE_(y)->not == 0) {
             if (IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) {
-              for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
+              range = CTYPE_(y)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE;
+              for (i = 0; i < range; i++) {
                 if (BITSET_AT(xc->bs, i)) {
-                  if (IS_CODE_SB_WORD(reg->enc, i)) return 0;
+                  if (ONIGENC_IS_CODE_WORD(reg->enc, i)) return 0;
                 }
               }
               return 1;
@@ -2545,18 +2588,18 @@ is_exclusive(Node* x, Node* y, regex_t* reg)
           }
           else {
             if (IS_NOT_NULL(xc->mbuf)) return 0;
-            for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
-              if (! IS_CODE_SB_WORD(reg->enc, i)) {
-                if (!IS_NCCLASS_NOT(xc)) {
-                  if (BITSET_AT(xc->bs, i))
-                    return 0;
-                }
-                else {
-                  if (! BITSET_AT(xc->bs, i))
-                    return 0;
-                }
+            if (IS_NCCLASS_NOT(xc)) return 0;
+
+            range = CTYPE_(y)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE;
+            for (i = 0; i < range; i++) {
+              if (! ONIGENC_IS_CODE_WORD(reg->enc, i)) {
+                if (BITSET_AT(xc->bs, i))
+                  return 0;
               }
             }
+            for (i = range; i < SINGLE_BYTE_SIZE; i++) {
+              if (BITSET_AT(xc->bs, i)) return 0;
+            }
             return 1;
           }
           break;
@@ -2612,10 +2655,18 @@ is_exclusive(Node* x, Node* y, regex_t* reg)
           break;
 
         case ONIGENC_CTYPE_WORD:
-          if (ONIGENC_IS_MBC_WORD(reg->enc, xs->s, xs->end))
-            return CTYPE_(y)->not;
-          else
-            return !(CTYPE_(y)->not);
+          if (CTYPE_(y)->ascii_mode == 0) {
+            if (ONIGENC_IS_MBC_WORD(reg->enc, xs->s, xs->end))
+              return CTYPE_(y)->not;
+            else
+              return !(CTYPE_(y)->not);
+          }
+          else {
+            if (ONIGENC_IS_MBC_WORD_ASCII(reg->enc, xs->s, xs->end))
+              return CTYPE_(y)->not;
+            else
+              return !(CTYPE_(y)->not);
+          }
           break;
         default:
           break;
@@ -2780,7 +2831,7 @@ check_type_tree(Node* node, int type_mask, int enclosure_mask, int anchor_mask)
   case NODE_ENCLOSURE:
     {
       EnclosureNode* en = ENCLOSURE_(node);
-      if ((en->type & enclosure_mask) == 0)
+      if (((1<<en->type) & enclosure_mask) == 0)
         return 1;
 
       r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask);
@@ -3512,7 +3563,7 @@ divide_look_behind_alternatives(Node* node)
 
   np = node;
   while (IS_NOT_NULL(np = NODE_CDR(np))) {
-    insert_node = onig_node_new_anchor(anc_type);
+    insert_node = onig_node_new_anchor(anc_type, an->ascii_mode);
     CHECK_NULL_RETURN_MEMERR(insert_node);
     NODE_BODY(insert_node) = NODE_CAR(np);
     NODE_CAR(np) = insert_node;
@@ -4150,22 +4201,19 @@ setup_call_node_call(CallNode* cn, ScanEnv* env, int state)
   if (cn->by_number != 0) {
     int gnum = cn->group_num;
 
-#ifdef USE_NAMED_GROUP
     if (env->num_named > 0 &&
         IS_SYNTAX_BV(env->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&
         !ONIG_IS_OPTION_ON(env->options, ONIG_OPTION_CAPTURE_GROUP)) {
       return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED;
     }
-#endif
+
     if (gnum > env->num_mem) {
       onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_GROUP_REFERENCE,
                                      cn->name, cn->name_end);
       return ONIGERR_UNDEFINED_GROUP_REFERENCE;
     }
 
-#ifdef USE_NAMED_GROUP
   set_call_attr:
-#endif
     NODE_CALL_BODY(cn) = mem_env[cn->group_num].node;
     if (IS_NULL(NODE_CALL_BODY(cn))) {
       onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE,
@@ -4173,7 +4221,6 @@ setup_call_node_call(CallNode* cn, ScanEnv* env, int state)
       return ONIGERR_UNDEFINED_NAME_REFERENCE;
     }
   }
-#ifdef USE_NAMED_GROUP
   else {
     int *refs;
 
@@ -4193,7 +4240,6 @@ setup_call_node_call(CallNode* cn, ScanEnv* env, int state)
       goto set_call_attr;
     }
   }
-#endif
 
   return 0;
 }
@@ -4579,18 +4625,22 @@ setup_anchor(Node* node, regex_t* reg, int state, ScanEnv* env)
   | BIT_NODE_CTYPE | BIT_NODE_ANCHOR | BIT_NODE_ENCLOSURE | BIT_NODE_QUANT \
   | BIT_NODE_CALL )
 
-#define ALLOWED_ENCLOSURE_IN_LB       ( ENCLOSURE_MEMORY | ENCLOSURE_OPTION )
-#define ALLOWED_ENCLOSURE_IN_LB_NOT   ENCLOSURE_OPTION
+#define ALLOWED_ENCLOSURE_IN_LB       ( 1<<ENCLOSURE_MEMORY | 1<<ENCLOSURE_OPTION )
+#define ALLOWED_ENCLOSURE_IN_LB_NOT   (1<<ENCLOSURE_OPTION)
 
 #define ALLOWED_ANCHOR_IN_LB \
   ( ANCHOR_LOOK_BEHIND | ANCHOR_BEGIN_LINE | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF \
-  | ANCHOR_BEGIN_POSITION | ANCHOR_WORD_BOUND | ANCHOR_NOT_WORD_BOUND \
-  | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END )
+  | ANCHOR_BEGIN_POSITION | ANCHOR_WORD_BOUNDARY | ANCHOR_NO_WORD_BOUNDARY \
+  | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END \
+  | ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY \
+  | ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY )
 
 #define ALLOWED_ANCHOR_IN_LB_NOT \
   ( ANCHOR_LOOK_BEHIND | ANCHOR_LOOK_BEHIND_NOT | ANCHOR_BEGIN_LINE \
-  | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION | ANCHOR_WORD_BOUND \
-  | ANCHOR_NOT_WORD_BOUND | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END )
+  | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION | ANCHOR_WORD_BOUNDARY \
+  | ANCHOR_NO_WORD_BOUNDARY | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END \
+  | ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY \
+  | ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY )
 
   int r;
   AnchorNode* an = ANCHOR_(node);
@@ -5603,6 +5653,7 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)
   case NODE_CTYPE:
     {
       int i, min, max;
+      int range;
 
       max = ONIGENC_MBC_MAXLEN_DIST(env->enc);
 
@@ -5614,15 +5665,19 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)
           break;
 
         case ONIGENC_CTYPE_WORD:
+          range = CTYPE_(node)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE;
           if (CTYPE_(node)->not != 0) {
-            for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
+            for (i = 0; i < range; i++) {
               if (! ONIGENC_IS_CODE_WORD(env->enc, i)) {
                 add_char_opt_map_info(&opt->map, (UChar )i, env->enc);
               }
             }
+            for (i = range; i < SINGLE_BYTE_SIZE; i++) {
+              add_char_opt_map_info(&opt->map, (UChar )i, env->enc);
+            }
           }
           else {
-            for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
+            for (i = 0; i < range; i++) {
               if (ONIGENC_IS_CODE_WORD(env->enc, i)) {
                 add_char_opt_map_info(&opt->map, (UChar )i, env->enc);
               }
@@ -6171,9 +6226,7 @@ onig_free_body(regex_t* reg)
     if (IS_NOT_NULL(reg->repeat_range))     xfree(reg->repeat_range);
     if (IS_NOT_NULL(REG_EXTP(reg)))         xfree(REG_EXTP(reg));
 
-#ifdef USE_NAMED_GROUP
     onig_names_free(reg);
-#endif
   }
 }
 
@@ -6202,7 +6255,7 @@ onig_transfer(regex_t* to, regex_t* from)
 #ifdef ONIG_DEBUG_COMPILE
 static void print_compiled_byte_code_list P_((FILE* f, regex_t* reg));
 #endif
-#ifdef ONIG_DEBUG_PARSE_TREE
+#ifdef ONIG_DEBUG_PARSE
 static void print_tree P_((FILE* f, Node* node));
 #endif
 
@@ -6229,7 +6282,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
   if (reg->alloc == 0) {
     init_size = (pattern_end - pattern) * 2;
     if (init_size <= 0) init_size = COMPILE_INIT_SIZE;
-    r = BBUF_INIT(reg, init_size);
+    r = BB_INIT(reg, init_size);
     if (r != 0) goto end;
   }
   else
@@ -6247,7 +6300,6 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
   r = onig_parse_tree(&root, pattern, pattern_end, reg, &scan_env);
   if (r != 0) goto err;
 
-#ifdef USE_NAMED_GROUP
   /* mixed use named group and no-named group */
   if (scan_env.num_named > 0 &&
       IS_SYNTAX_BV(scan_env.syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&
@@ -6259,7 +6311,6 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
 
     if (r != 0) goto err;
   }
-#endif
 
   r = check_backrefs(root, &scan_env);
   if (r != 0) goto err;
@@ -6287,7 +6338,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
   r = setup_tree(root, reg, 0, &scan_env);
   if (r != 0) goto err_unset;
 
-#ifdef ONIG_DEBUG_PARSE_TREE
+#ifdef ONIG_DEBUG_PARSE
   print_tree(stderr, root);
 #endif
 
@@ -6377,9 +6428,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
   onig_node_free(root);
 
 #ifdef ONIG_DEBUG_COMPILE
-#ifdef USE_NAMED_GROUP
   onig_print_names(stderr, reg);
-#endif
   print_compiled_byte_code_list(stderr, reg);
 #endif
 
@@ -6642,6 +6691,7 @@ onig_is_code_in_cc(OnigEncoding enc, OnigCodePoint code, CClassNode* cc)
 #define ARG_MEMNUM       4
 #define ARG_OPTION       5
 #define ARG_STATE_CHECK  6
+#define ARG_MODE         7
 
 OnigOpInfoType OnigOpInfo[] = {
   { OP_FINISH,            "finish",          ARG_NON },
@@ -6666,7 +6716,9 @@ OnigOpInfoType OnigOpInfo[] = {
   { OP_CCLASS_NOT,        "cclass-not",      ARG_SPECIAL },
   { OP_CCLASS_MB_NOT,     "cclass-mb-not",   ARG_SPECIAL },
   { OP_CCLASS_MIX_NOT,    "cclass-mix-not",  ARG_SPECIAL },
+#ifdef USE_OP_CCLASS_NODE
   { OP_CCLASS_NODE,       "cclass-node",     ARG_SPECIAL },
+#endif
   { OP_ANYCHAR,           "anychar",         ARG_NON },
   { OP_ANYCHAR_ML,        "anychar-ml",      ARG_NON },
   { OP_ANYCHAR_STAR,      "anychar*",        ARG_NON },
@@ -6674,11 +6726,13 @@ OnigOpInfoType OnigOpInfo[] = {
   { OP_ANYCHAR_STAR_PEEK_NEXT, "anychar*-peek-next", ARG_SPECIAL },
   { OP_ANYCHAR_ML_STAR_PEEK_NEXT, "anychar-ml*-peek-next", ARG_SPECIAL },
   { OP_WORD,                "word",            ARG_NON },
-  { OP_NOT_WORD,            "not-word",        ARG_NON },
-  { OP_WORD_BOUND,          "word-bound",      ARG_NON },
-  { OP_NOT_WORD_BOUND,      "not-word-bound",  ARG_NON },
-  { OP_WORD_BEGIN,          "word-begin",      ARG_NON },
-  { OP_WORD_END,            "word-end",        ARG_NON },
+  { OP_WORD_ASCII,          "word-ascii",      ARG_NON },
+  { OP_NO_WORD,             "not-word",        ARG_NON },
+  { OP_NO_WORD_ASCII,       "not-word-ascii",  ARG_NON },
+  { OP_WORD_BOUNDARY,       "word-boundary",     ARG_MODE },
+  { OP_NO_WORD_BOUNDARY,    "not-word-boundary", ARG_MODE },
+  { OP_WORD_BEGIN,          "word-begin",      ARG_MODE },
+  { OP_WORD_END,            "word-end",        ARG_MODE },
   { OP_BEGIN_BUF,           "begin-buf",       ARG_NON },
   { OP_END_BUF,             "end-buf",         ARG_NON },
   { OP_BEGIN_LINE,          "begin-line",      ARG_NON },
@@ -6800,6 +6854,7 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start,
   StateCheckNumType scn;
   OnigCodePoint code;
   OnigOptionType option;
+  ModeType mode;
   UChar *q;
 
   fprintf(f, "%s", op2name(*bp));
@@ -6840,6 +6895,12 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start,
       bp += SIZE_STATE_CHECK_NUM;
       fprintf(f, ":%d", scn);
       break;
+
+    case ARG_MODE:
+      mode = *((ModeType* )bp);
+      bp += SIZE_MODE;
+      fprintf(f, ":%d", mode);
+      break;
     }
   }
   else {
@@ -6939,6 +7000,7 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start,
       fprintf(f, ":%d:%d:%d", n, (int )code, len);
       break;
 
+#ifdef USE_OP_CCLASS_NODE
     case OP_CCLASS_NODE:
       {
         CClassNode *cc;
@@ -6948,6 +7010,7 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start,
         fprintf(f, ":%p:%d", cc, n);
       }
       break;
+#endif
 
     case OP_BACKREF_N_IC:
       mem = *((MemNumType* )bp);
@@ -7082,7 +7145,7 @@ print_compiled_byte_code_list(FILE* f, regex_t* reg)
 }
 #endif
 
-#ifdef ONIG_DEBUG_PARSE_TREE
+#ifdef ONIG_DEBUG_PARSE
 
 static void
 Indent(FILE* f, int indent)
@@ -7157,9 +7220,13 @@ print_indent_tree(FILE* f, Node* node, int indent)
 
     case ONIGENC_CTYPE_WORD:
       if (CTYPE_(node)->not != 0)
-        fputs("not word",       f);
+        fputs("not word", f);
       else
-        fputs("word",           f);
+        fputs("word",     f);
+
+      if (CTYPE_(node)->ascii_mode != 0)
+        fputs(" (ascii)", f);
+
       break;
 
     default:
@@ -7171,19 +7238,23 @@ print_indent_tree(FILE* f, Node* node, int indent)
   case NODE_ANCHOR:
     fprintf(f, "<anchor:%p> ", node);
     switch (ANCHOR_(node)->type) {
-    case ANCHOR_BEGIN_BUF:      fputs("begin buf",      f); break;
-    case ANCHOR_END_BUF:        fputs("end buf",        f); break;
-    case ANCHOR_BEGIN_LINE:     fputs("begin line",     f); break;
-    case ANCHOR_END_LINE:       fputs("end line",       f); break;
-    case ANCHOR_SEMI_END_BUF:   fputs("semi end buf",   f); break;
-    case ANCHOR_BEGIN_POSITION: fputs("begin position", f); break;
-
-    case ANCHOR_WORD_BOUND:      fputs("word bound",     f); break;
-    case ANCHOR_NOT_WORD_BOUND:  fputs("not word bound", f); break;
+    case ANCHOR_BEGIN_BUF:        fputs("begin buf",      f); break;
+    case ANCHOR_END_BUF:          fputs("end buf",        f); break;
+    case ANCHOR_BEGIN_LINE:       fputs("begin line",     f); break;
+    case ANCHOR_END_LINE:         fputs("end line",       f); break;
+    case ANCHOR_SEMI_END_BUF:     fputs("semi end buf",   f); break;
+    case ANCHOR_BEGIN_POSITION:   fputs("begin position", f); break;
+
+    case ANCHOR_WORD_BOUNDARY:    fputs("word boundary",     f); break;
+    case ANCHOR_NO_WORD_BOUNDARY: fputs("not word boundary", f); break;
 #ifdef USE_WORD_BEGIN_END
-    case ANCHOR_WORD_BEGIN:      fputs("word begin", f);     break;
-    case ANCHOR_WORD_END:        fputs("word end", f);       break;
+    case ANCHOR_WORD_BEGIN:       fputs("word begin", f);     break;
+    case ANCHOR_WORD_END:         fputs("word end", f);       break;
 #endif
+    case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+      fputs("extended-grapheme-cluster boundary", f); break;
+    case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+      fputs("no-extended-grapheme-cluster boundary", f); break;
     case ANCHOR_PREC_READ:
       fprintf(f, "prec read\n");
       print_indent_tree(f, NODE_BODY(node), indent + add);
diff --git a/src/regenc.c b/src/regenc.c
index 554a622..97b5052 100644
--- a/src/regenc.c
+++ b/src/regenc.c
@@ -840,6 +840,16 @@ onigenc_minimum_property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end)
   return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
 }
 
+extern int
+onigenc_is_mbc_word_ascii(OnigEncoding enc, UChar* s, const UChar* end)
+{
+  OnigCodePoint code = ONIGENC_MBC_TO_CODE(enc, s, end);
+
+  if (code > 127) return 0;
+
+  return ONIGENC_IS_ASCII_CODE_WORD(code);
+}
+
 extern int
 onigenc_mb2_is_code_ctype(OnigEncoding enc, OnigCodePoint code,
 			  unsigned int ctype)
diff --git a/src/regenc.h b/src/regenc.h
index abc26be..cda3bcd 100644
--- a/src/regenc.h
+++ b/src/regenc.h
@@ -71,6 +71,8 @@ typedef struct {
 #define ONIG_CHECK_NULL_RETURN(p)          if (ONIG_IS_NULL(p)) return NULL
 #define ONIG_CHECK_NULL_RETURN_VAL(p,val)  if (ONIG_IS_NULL(p)) return (val)
 
+#define MAX_CODE_POINT         (~((OnigCodePoint )0))
+
 #define enclen(enc,p)          ONIGENC_MBC_ENC_LEN(enc,p)
 
 /* character types bit flag */
@@ -109,6 +111,7 @@ struct PropertyNameCtype {
 
 /* #define USE_CRNL_AS_LINE_TERMINATOR */
 #define USE_UNICODE_PROPERTIES
+#define USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
 /* #define USE_UNICODE_CASE_FOLD_TURKISH_AZERI */
 /* #define USE_UNICODE_ALL_LINE_TERMINATORS */  /* see Unicode.org UTS #18 */
 
@@ -143,6 +146,7 @@ ONIG_EXTERN int onigenc_mb2_code_to_mbclen P_((OnigCodePoint code));
 ONIG_EXTERN int onigenc_mb2_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf));
 ONIG_EXTERN int onigenc_minimum_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end));
 ONIG_EXTERN int onigenc_unicode_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end));
+ONIG_EXTERN int onigenc_is_mbc_word_ascii P_((OnigEncoding enc, UChar* s, const UChar* end));
 ONIG_EXTERN int onigenc_mb2_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype));
 ONIG_EXTERN int onigenc_mb4_code_to_mbclen P_((OnigCodePoint code));
 ONIG_EXTERN int onigenc_mb4_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf));
@@ -158,6 +162,7 @@ ONIG_EXTERN int onigenc_unicode_ctype_code_range P_((OnigCtype ctype, const Onig
 ONIG_EXTERN int onigenc_unicode_get_case_fold_codes_by_str P_((OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));
 ONIG_EXTERN int onigenc_unicode_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold));
 ONIG_EXTERN int onigenc_unicode_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg));
+ONIG_EXTERN int onigenc_egcb_is_break_position P_((OnigEncoding enc, UChar* p, UChar* prev, const UChar* start, const UChar* end));
 
 
 #define UTF16_IS_SURROGATE_FIRST(c)    (((c) & 0xfc) == 0xd8)
@@ -194,8 +199,8 @@ extern OnigCodePoint OnigUnicodeFolds3[];
 
 struct ByUnfoldKey {
   OnigCodePoint code;
-  int   index;
-  int   fold_len;
+  short int     index;
+  short int     fold_len;
 };
 
 extern const struct ByUnfoldKey* unicode_unfold_key(OnigCodePoint code);
@@ -235,6 +240,8 @@ ONIG_EXTERN const unsigned short OnigEncAsciiCtypeTable[];
 #define ONIGENC_ASCII_CODE_TO_UPPER_CASE(c) OnigEncAsciiToUpperCaseTable[c]
 #define ONIGENC_IS_ASCII_CODE_CTYPE(code,ctype) \
   ((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0)
+#define ONIGENC_IS_ASCII_CODE_WORD(code) \
+  ((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ONIGENC_CTYPE_WORD)) != 0)
 #define ONIGENC_IS_ASCII_CODE_CASE_AMBIG(code) \
  (ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_UPPER) ||\
   ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_LOWER))
diff --git a/src/regerror.c b/src/regerror.c
index a430e60..c0d2346 100644
--- a/src/regerror.c
+++ b/src/regerror.c
@@ -135,11 +135,7 @@ onig_error_code_to_format(int code)
   case ONIGERR_TOO_BIG_BACKREF_NUMBER:
     p = "too big backref number"; break;
   case ONIGERR_INVALID_BACKREF:
-#ifdef USE_NAMED_GROUP
     p = "invalid backref number/name"; break;
-#else
-    p = "invalid backref number"; break;
-#endif
   case ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED:
     p = "numbered backref/call is not allowed. (use name)"; break;
   case ONIGERR_TOO_MANY_CAPTURES:
@@ -155,11 +151,7 @@ onig_error_code_to_format(int code)
   case ONIGERR_INVALID_GROUP_NAME:
     p = "invalid group name <%n>"; break;
   case ONIGERR_INVALID_CHAR_IN_GROUP_NAME:
-#ifdef USE_NAMED_GROUP
     p = "invalid char in group name <%n>"; break;
-#else
-    p = "invalid char in group number <%n>"; break;
-#endif
   case ONIGERR_UNDEFINED_NAME_REFERENCE:
     p = "undefined name <%n> reference"; break;
   case ONIGERR_UNDEFINED_GROUP_REFERENCE:
diff --git a/src/regexec.c b/src/regexec.c
index e7dfb96..9dbef70 100644
--- a/src/regexec.c
+++ b/src/regexec.c
@@ -31,6 +31,9 @@
 
 #define USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
 
+#define IS_MBC_WORD_ASCII_MODE(enc,s,end,mode) \
+  ((mode) == 0 ? ONIGENC_IS_MBC_WORD(enc,s,end) : ONIGENC_IS_MBC_WORD_ASCII(enc,s,end))
+
 #ifdef USE_CRNL_AS_LINE_TERMINATOR
 #define ONIGENC_IS_MBC_CRNL(enc,p,end) \
   (ONIGENC_MBC_TO_CODE(enc,p,end) == 13 && \
@@ -2002,6 +2005,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
       MOP_OUT;
       break;
 
+#ifdef USE_OP_CCLASS_NODE
     case OP_CCLASS_NODE:  MOP_IN(OP_CCLASS_NODE);
       {
         OnigCodePoint code;
@@ -2020,6 +2024,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
       }
       MOP_OUT;
       break;
+#endif
 
     case OP_ANYCHAR:  MOP_IN(OP_ANYCHAR);
       DATA_ENSURE(1);
@@ -2152,7 +2157,16 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
       MOP_OUT;
       break;
 
-    case OP_NOT_WORD:  MOP_IN(OP_NOT_WORD);
+    case OP_WORD_ASCII:  MOP_IN(OP_WORD_ASCII);
+      DATA_ENSURE(1);
+      if (! ONIGENC_IS_MBC_WORD_ASCII(encode, s, end))
+        goto fail;
+
+      s += enclen(encode, s);
+      MOP_OUT;
+      break;
+
+    case OP_NO_WORD:  MOP_IN(OP_NO_WORD);
       DATA_ENSURE(1);
       if (ONIGENC_IS_MBC_WORD(encode, s, end))
         goto fail;
@@ -2161,38 +2175,57 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
       MOP_OUT;
       break;
 
-    case OP_WORD_BOUND:  MOP_IN(OP_WORD_BOUND);
-      if (ON_STR_BEGIN(s)) {
-        DATA_ENSURE(1);
-        if (! ONIGENC_IS_MBC_WORD(encode, s, end))
-          goto fail;
-      }
-      else if (ON_STR_END(s)) {
-        if (! ONIGENC_IS_MBC_WORD(encode, sprev, end))
-          goto fail;
-      }
-      else {
-        if (ONIGENC_IS_MBC_WORD(encode, s, end)
-            == ONIGENC_IS_MBC_WORD(encode, sprev, end))
-          goto fail;
+    case OP_NO_WORD_ASCII:  MOP_IN(OP_NO_WORD_ASCII);
+      DATA_ENSURE(1);
+      if (ONIGENC_IS_MBC_WORD_ASCII(encode, s, end))
+        goto fail;
+
+      s += enclen(encode, s);
+      MOP_OUT;
+      break;
+
+    case OP_WORD_BOUNDARY:  MOP_IN(OP_WORD_BOUNDARY);
+      {
+        ModeType mode;
+        GET_MODE_INC(mode, p); // ascii_mode
+
+        if (ON_STR_BEGIN(s)) {
+          DATA_ENSURE(1);
+          if (! IS_MBC_WORD_ASCII_MODE(encode, s, end, mode))
+            goto fail;
+        }
+        else if (ON_STR_END(s)) {
+          if (! IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode))
+            goto fail;
+        }
+        else {
+          if (IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)
+              == IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode))
+            goto fail;
+        }
       }
       MOP_OUT;
       continue;
       break;
 
-    case OP_NOT_WORD_BOUND:  MOP_IN(OP_NOT_WORD_BOUND);
-      if (ON_STR_BEGIN(s)) {
-        if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end))
-          goto fail;
-      }
-      else if (ON_STR_END(s)) {
-        if (ONIGENC_IS_MBC_WORD(encode, sprev, end))
-          goto fail;
-      }
-      else {
-        if (ONIGENC_IS_MBC_WORD(encode, s, end)
-            != ONIGENC_IS_MBC_WORD(encode, sprev, end))
-          goto fail;
+    case OP_NO_WORD_BOUNDARY:  MOP_IN(OP_NO_WORD_BOUNDARY);
+      {
+        ModeType mode;
+        GET_MODE_INC(mode, p); // ascii_mode
+
+        if (ON_STR_BEGIN(s)) {
+          if (DATA_ENSURE_CHECK1 && IS_MBC_WORD_ASCII_MODE(encode, s, end, mode))
+            goto fail;
+        }
+        else if (ON_STR_END(s)) {
+          if (IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode))
+            goto fail;
+        }
+        else {
+          if (IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)
+              != IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode))
+            goto fail;
+        }
       }
       MOP_OUT;
       continue;
@@ -2200,26 +2233,55 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 
 #ifdef USE_WORD_BEGIN_END
     case OP_WORD_BEGIN:  MOP_IN(OP_WORD_BEGIN);
-      if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end)) {
-        if (ON_STR_BEGIN(s) || !ONIGENC_IS_MBC_WORD(encode, sprev, end)) {
-          MOP_OUT;
-          continue;
+      {
+        ModeType mode;
+        GET_MODE_INC(mode, p); // ascii_mode
+
+        if (DATA_ENSURE_CHECK1 && IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) {
+          if (ON_STR_BEGIN(s) ||
+              ! IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) {
+            MOP_OUT;
+            continue;
+          }
         }
       }
       goto fail;
       break;
 
     case OP_WORD_END:  MOP_IN(OP_WORD_END);
-      if (!ON_STR_BEGIN(s) && ONIGENC_IS_MBC_WORD(encode, sprev, end)) {
-        if (ON_STR_END(s) || !ONIGENC_IS_MBC_WORD(encode, s, end)) {
-          MOP_OUT;
-          continue;
+      {
+        ModeType mode;
+        GET_MODE_INC(mode, p); // ascii_mode
+
+        if (!ON_STR_BEGIN(s) && IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) {
+          if (ON_STR_END(s) || ! IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) {
+            MOP_OUT;
+            continue;
+          }
         }
       }
       goto fail;
       break;
 #endif
 
+    case OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+      MOP_IN(OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
+      if (onigenc_egcb_is_break_position(encode, s, sprev, str, end)) {
+        MOP_OUT;
+        continue;
+      }
+      goto fail;
+      break;
+
+    case OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+      MOP_IN(OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
+      if (onigenc_egcb_is_break_position(encode, s, sprev, str, end))
+        goto fail;
+
+      MOP_OUT;
+      continue;
+      break;
+
     case OP_BEGIN_BUF:  MOP_IN(OP_BEGIN_BUF);
       if (! ON_STR_BEGIN(s)) goto fail;
 
diff --git a/src/regint.h b/src/regint.h
index 185f4b6..9dc1723 100644
--- a/src/regint.h
+++ b/src/regint.h
@@ -30,7 +30,7 @@
  */
 
 /* for debug */
-/* #define ONIG_DEBUG_PARSE_TREE */
+/* #define ONIG_DEBUG_PARSE */
 /* #define ONIG_DEBUG_COMPILE */
 /* #define ONIG_DEBUG_SEARCH */
 /* #define ONIG_DEBUG_MATCH */
@@ -39,7 +39,7 @@
 /* for byte-code statistical data. */
 /* #define ONIG_DEBUG_STATISTICS */
 
-#if defined(ONIG_DEBUG_PARSE_TREE) || defined(ONIG_DEBUG_MATCH) || \
+#if defined(ONIG_DEBUG_PARSE) || defined(ONIG_DEBUG_MATCH) || \
     defined(ONIG_DEBUG_SEARCH) || defined(ONIG_DEBUG_COMPILE) || \
     defined(ONIG_DEBUG_STATISTICS)
 #ifndef ONIG_DEBUG
@@ -56,7 +56,6 @@
 
 /* config */
 /* spec. config */
-#define USE_NAMED_GROUP
 #define USE_CALL
 #define USE_BACKREF_WITH_LEVEL        /* \k<name+n>, \k<name-n> */
 #define USE_INSISTENT_CHECK_CAPTURES_STATUS_IN_ENDLESS_REPEAT  /* /(?:()|())*\2/ */
@@ -283,10 +282,17 @@ typedef unsigned int  MemStatusType;
 
 #define INT_MAX_LIMIT           ((1UL << (SIZEOF_INT * 8 - 1)) - 1)
 
+#define IS_CODE_WORD_ASCII(enc,code) \
+  (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code))
+#define IS_CODE_DIGIT_ASCII(enc, code) \
+  (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_DIGIT(enc,code))
+#define IS_CODE_XDIGIT_ASCII(enc, code) \
+  (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_XDIGIT(enc,code))
+
 #define DIGITVAL(code)    ((code) - '0')
 #define ODIGITVAL(code)   DIGITVAL(code)
 #define XDIGITVAL(enc,code) \
-  (ONIGENC_IS_CODE_DIGIT(enc,code) ? DIGITVAL(code) \
+  (IS_CODE_DIGIT_ASCII(enc,code) ? DIGITVAL(code) \
    : (ONIGENC_IS_CODE_UPPER(enc,code) ? (code) - 'A' + 10 : (code) - 'a' + 10))
 
 #define IS_SINGLELINE(option)     ((option) & ONIG_OPTION_SINGLELINE)
@@ -301,6 +307,21 @@ typedef unsigned int  MemStatusType;
 #define IS_NOTEOL(option)         ((option) & ONIG_OPTION_NOTEOL)
 #define IS_POSIX_REGION(option)   ((option) & ONIG_OPTION_POSIX_REGION)
 
+#define IS_WORD_ASCII(option) \
+  ((option) & (ONIG_OPTION_WORD_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII))
+#define IS_DIGIT_ASCII(option) \
+  ((option) & (ONIG_OPTION_DIGIT_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII))
+#define IS_SPACE_ASCII(option) \
+  ((option) & (ONIG_OPTION_SPACE_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII))
+#define IS_POSIX_ASCII(option)    ((option) & ONIG_OPTION_POSIX_IS_ASCII)
+
+#define IS_ASCII_MODE_CTYPE_OPTION(ctype, options) \
+  ((ctype) >= 0 && \
+  (((ctype) < ONIGENC_CTYPE_ASCII  && IS_POSIX_ASCII(options)) ||\
+   ((ctype) == ONIGENC_CTYPE_WORD  && IS_WORD_ASCII(options))  ||\
+   ((ctype) == ONIGENC_CTYPE_DIGIT && IS_DIGIT_ASCII(options)) ||\
+   ((ctype) == ONIGENC_CTYPE_SPACE && IS_SPACE_ASCII(options))))
+
 /* OP_SET_OPTION is required for these options.
 #define IS_DYNAMIC_OPTION(option) \
   (((option) & (ONIG_OPTION_MULTILINE | ONIG_OPTION_IGNORECASE)) != 0)
@@ -350,21 +371,21 @@ typedef struct _BBuf {
   unsigned int alloc;
 } BBuf;
 
-#define BBUF_INIT(buf,size)    onig_bbuf_init((BBuf* )(buf), (size))
+#define BB_INIT(buf,size)    onig_bbuf_init((BBuf* )(buf), (size))
 
-#define BBUF_SIZE_INC(buf,inc) do{\
+#define BB_SIZE_INC(buf,inc) do{\
   (buf)->alloc += (inc);\
   (buf)->p = (UChar* )xrealloc((buf)->p, (buf)->alloc);\
   if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\
 } while (0)
 
-#define BBUF_EXPAND(buf,low) do{\
+#define BB_EXPAND(buf,low) do{\
   do { (buf)->alloc *= 2; } while ((buf)->alloc < (unsigned int )low);\
   (buf)->p = (UChar* )xrealloc((buf)->p, (buf)->alloc);\
   if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\
 } while (0)
 
-#define BBUF_ENSURE_SIZE(buf,size) do{\
+#define BB_ENSURE_SIZE(buf,size) do{\
   unsigned int new_alloc = (buf)->alloc;\
   while (new_alloc < (unsigned int )(size)) { new_alloc *= 2; }\
   if ((buf)->alloc != new_alloc) {\
@@ -374,54 +395,54 @@ typedef struct _BBuf {
   }\
 } while (0)
 
-#define BBUF_WRITE(buf,pos,bytes,n) do{\
+#define BB_WRITE(buf,pos,bytes,n) do{\
   int used = (pos) + (n);\
-  if ((buf)->alloc < (unsigned int )used) BBUF_EXPAND((buf),used);\
+  if ((buf)->alloc < (unsigned int )used) BB_EXPAND((buf),used);\
   xmemcpy((buf)->p + (pos), (bytes), (n));\
   if ((buf)->used < (unsigned int )used) (buf)->used = used;\
 } while (0)
 
-#define BBUF_WRITE1(buf,pos,byte) do{\
+#define BB_WRITE1(buf,pos,byte) do{\
   int used = (pos) + 1;\
-  if ((buf)->alloc < (unsigned int )used) BBUF_EXPAND((buf),used);\
+  if ((buf)->alloc < (unsigned int )used) BB_EXPAND((buf),used);\
   (buf)->p[(pos)] = (byte);\
   if ((buf)->used < (unsigned int )used) (buf)->used = used;\
 } while (0)
 
-#define BBUF_ADD(buf,bytes,n)       BBUF_WRITE((buf),(buf)->used,(bytes),(n))
-#define BBUF_ADD1(buf,byte)         BBUF_WRITE1((buf),(buf)->used,(byte))
-#define BBUF_GET_ADD_ADDRESS(buf)   ((buf)->p + (buf)->used)
-#define BBUF_GET_OFFSET_POS(buf)    ((buf)->used)
+#define BB_ADD(buf,bytes,n)       BB_WRITE((buf),(buf)->used,(bytes),(n))
+#define BB_ADD1(buf,byte)         BB_WRITE1((buf),(buf)->used,(byte))
+#define BB_GET_ADD_ADDRESS(buf)   ((buf)->p + (buf)->used)
+#define BB_GET_OFFSET_POS(buf)    ((buf)->used)
 
 /* from < to */
-#define BBUF_MOVE_RIGHT(buf,from,to,n) do {\
-  if ((unsigned int )((to)+(n)) > (buf)->alloc) BBUF_EXPAND((buf),(to) + (n));\
+#define BB_MOVE_RIGHT(buf,from,to,n) do {\
+  if ((unsigned int )((to)+(n)) > (buf)->alloc) BB_EXPAND((buf),(to) + (n));\
   xmemmove((buf)->p + (to), (buf)->p + (from), (n));\
   if ((unsigned int )((to)+(n)) > (buf)->used) (buf)->used = (to) + (n);\
 } while (0)
 
 /* from > to */
-#define BBUF_MOVE_LEFT(buf,from,to,n) do {\
+#define BB_MOVE_LEFT(buf,from,to,n) do {\
   xmemmove((buf)->p + (to), (buf)->p + (from), (n));\
 } while (0)
 
 /* from > to */
-#define BBUF_MOVE_LEFT_REDUCE(buf,from,to) do {\
+#define BB_MOVE_LEFT_REDUCE(buf,from,to) do {\
   xmemmove((buf)->p + (to), (buf)->p + (from), (buf)->used - (from));\
   (buf)->used -= (from - to);\
 } while (0)
 
-#define BBUF_INSERT(buf,pos,bytes,n) do {\
+#define BB_INSERT(buf,pos,bytes,n) do {\
   if (pos >= (buf)->used) {\
-    BBUF_WRITE(buf,pos,bytes,n);\
+    BB_WRITE(buf,pos,bytes,n);\
   }\
   else {\
-    BBUF_MOVE_RIGHT((buf),(pos),(pos) + (n),((buf)->used - (pos)));\
+    BB_MOVE_RIGHT((buf),(pos),(pos) + (n),((buf)->used - (pos)));\
     xmemcpy((buf)->p + (pos), (bytes), (n));\
   }\
 } while (0)
 
-#define BBUF_GET_BYTE(buf, pos) (buf)->p[(pos)]
+#define BB_GET_BYTE(buf, pos) (buf)->p[(pos)]
 
 
 /* has body */
@@ -436,15 +457,21 @@ typedef struct _BBuf {
 #define ANCHOR_END_BUF          (1<<7)
 #define ANCHOR_SEMI_END_BUF     (1<<8)
 #define ANCHOR_END_LINE         (1<<9)
-#define ANCHOR_WORD_BOUND       (1<<10)
-#define ANCHOR_NOT_WORD_BOUND   (1<<11)
+#define ANCHOR_WORD_BOUNDARY    (1<<10)
+#define ANCHOR_NO_WORD_BOUNDARY (1<<11)
 #define ANCHOR_WORD_BEGIN       (1<<12)
 #define ANCHOR_WORD_END         (1<<13)
 #define ANCHOR_ANYCHAR_STAR     (1<<14)   /* ".*" optimize info */
 #define ANCHOR_ANYCHAR_STAR_ML  (1<<15)   /* ".*" optimize info (multi-line) */
+#define ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY    (1<<16)
+#define ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY (1<<17)
+
 
 #define ANCHOR_HAS_BODY(a)      ((a)->type < ANCHOR_BEGIN_BUF)
 
+#define IS_WORD_ANCHOR_TYPE(type) \
+  ((type) == ANCHOR_WORD_BOUNDARY || (type) == ANCHOR_NO_WORD_BOUNDARY || \
+   (type) == ANCHOR_WORD_BEGIN || (type) == ANCHOR_WORD_END)
 
 /* operation code */
 enum OpCode {
@@ -473,7 +500,9 @@ enum OpCode {
   OP_CCLASS_NOT,
   OP_CCLASS_MB_NOT,
   OP_CCLASS_MIX_NOT,
+#ifdef USE_OP_CCLASS_NODE
   OP_CCLASS_NODE,       /* pointer to CClassNode node */
+#endif
 
   OP_ANYCHAR,                 /* "."  */
   OP_ANYCHAR_ML,              /* "."  multi-line */
@@ -483,12 +512,17 @@ enum OpCode {
   OP_ANYCHAR_ML_STAR_PEEK_NEXT,
 
   OP_WORD,
-  OP_NOT_WORD,
-  OP_WORD_BOUND,
-  OP_NOT_WORD_BOUND,
+  OP_WORD_ASCII,
+  OP_NO_WORD,
+  OP_NO_WORD_ASCII,
+  OP_WORD_BOUNDARY,
+  OP_NO_WORD_BOUNDARY,
   OP_WORD_BEGIN,
   OP_WORD_END,
 
+  OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY,
+  OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY,
+
   OP_BEGIN_BUF,
   OP_END_BUF,
   OP_BEGIN_LINE,
@@ -580,6 +614,7 @@ typedef short int StateCheckNumType;
 typedef void* PointerType;
 typedef int SaveType;
 typedef int UpdateVarType;
+typedef int ModeType;
 
 #define SIZE_OPCODE           1
 #define SIZE_RELADDR          sizeof(RelAddrType)
@@ -593,6 +628,7 @@ typedef int UpdateVarType;
 #define SIZE_POINTER          sizeof(PointerType)
 #define SIZE_SAVE_TYPE        sizeof(SaveType)
 #define SIZE_UPDATE_VAR_TYPE  sizeof(UpdateVarType)
+#define SIZE_MODE             sizeof(ModeType)
 
 #define GET_RELADDR_INC(addr,p)    PLATFORM_GET_INC(addr,   p, RelAddrType)
 #define GET_ABSADDR_INC(addr,p)    PLATFORM_GET_INC(addr,   p, AbsAddrType)
@@ -604,6 +640,7 @@ typedef int UpdateVarType;
 #define GET_STATE_CHECK_NUM_INC(num,p)  PLATFORM_GET_INC(num, p, StateCheckNumType)
 #define GET_SAVE_TYPE_INC(type,p)       PLATFORM_GET_INC(type, p, SaveType)
 #define GET_UPDATE_VAR_TYPE_INC(type,p) PLATFORM_GET_INC(type, p, UpdateVarType)
+#define GET_MODE_INC(mode,p)            PLATFORM_GET_INC(mode, p, ModeType)
 
 /* code point's address must be aligned address. */
 #define GET_CODE_POINT(code,p)   code = *((OnigCodePoint* )(p))
@@ -624,6 +661,7 @@ typedef int UpdateVarType;
 #define SIZE_OP_PUSH_IF_PEEK_NEXT      (SIZE_OPCODE + SIZE_RELADDR + 1)
 #define SIZE_OP_REPEAT_INC             (SIZE_OPCODE + SIZE_MEMNUM)
 #define SIZE_OP_REPEAT_INC_NG          (SIZE_OPCODE + SIZE_MEMNUM)
+#define SIZE_OP_WORD_BOUNDARY          (SIZE_OPCODE + SIZE_MODE)
 #define SIZE_OP_PREC_READ_START         SIZE_OPCODE
 #define SIZE_OP_PUSH_PREC_READ_NOT     (SIZE_OPCODE + SIZE_RELADDR)
 #define SIZE_OP_PREC_READ_END           SIZE_OPCODE
@@ -725,9 +763,6 @@ typedef struct {
 } OnigMatchArg;
 
 
-#define IS_CODE_SB_WORD(enc,code) \
-  (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code))
-
 typedef struct OnigEndCallListItem {
   struct OnigEndCallListItem* next;
   void (*func)(void);
diff --git a/src/regparse.c b/src/regparse.c
index 25291c5..1fb2357 100644
--- a/src/regparse.c
+++ b/src/regparse.c
@@ -50,6 +50,7 @@ OnigSyntaxType OnigSyntaxRuby = {
       ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | ONIG_SYN_OP2_ESC_K_NAMED_BACKREF |
       ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |
       ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |
+      ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |
       ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE |
       ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT |
       ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |
@@ -163,7 +164,7 @@ bbuf_clone(BBuf** rto, BBuf* from)
 
   *rto = to = (BBuf* )xmalloc(sizeof(BBuf));
   CHECK_NULL_RETURN_MEMERR(to);
-  r = BBUF_INIT(to, from->alloc);
+  r = BB_INIT(to, from->alloc);
   if (r != 0) {
     xfree(to->p);
     *rto = 0;
@@ -288,7 +289,6 @@ onig_strcpy(UChar* dest, const UChar* src, const UChar* end)
   }
 }
 
-#ifdef USE_NAMED_GROUP
 static UChar*
 strdup_with_null(OnigEncoding enc, UChar* s, UChar* end)
 {
@@ -307,7 +307,6 @@ strdup_with_null(OnigEncoding enc, UChar* s, UChar* end)
 
   return r;
 }
-#endif
 
 static int
 save_entry(ScanEnv* env, enum SaveType type, int* id)
@@ -483,8 +482,6 @@ onig_st_insert_strend(hash_table_type* table, const UChar* str_key,
 #endif /* USE_ST_LIBRARY */
 
 
-#ifdef USE_NAMED_GROUP
-
 #define INIT_NAME_BACKREFS_ALLOC_NUM   8
 
 typedef struct {
@@ -965,49 +962,17 @@ onig_name_to_backref_number(regex_t* reg, const UChar* name,
   }
 }
 
-#else /* USE_NAMED_GROUP */
-
-extern int
-onig_name_to_group_numbers(regex_t* reg, const UChar* name,
-                           const UChar* name_end, int** nums)
-{
-  return ONIG_NO_SUPPORT_CONFIG;
-}
-
-extern int
-onig_name_to_backref_number(regex_t* reg, const UChar* name,
-                            const UChar* name_end, OnigRegion* region)
-{
-  return ONIG_NO_SUPPORT_CONFIG;
-}
-
-extern int
-onig_foreach_name(regex_t* reg,
-  int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg)
-{
-  return ONIG_NO_SUPPORT_CONFIG;
-}
-
-extern int
-onig_number_of_names(regex_t* reg)
-{
-  return 0;
-}
-#endif /* else USE_NAMED_GROUP */
-
 extern int
 onig_noname_group_capture_is_active(regex_t* reg)
 {
   if (ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_DONT_CAPTURE_GROUP))
     return 0;
 
-#ifdef USE_NAMED_GROUP
   if (onig_number_of_names(reg) > 0 &&
       IS_SYNTAX_BV(reg->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&
       !ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) {
     return 0;
   }
-#endif
 
   return 1;
 }
@@ -1032,10 +997,8 @@ scan_env_clear(ScanEnv* env)
 #endif
 
   env->num_mem    = 0;
-#ifdef USE_NAMED_GROUP
   env->num_named  = 0;
-#endif
-  env->mem_alloc       = 0;
+  env->mem_alloc  = 0;
   env->mem_env_dynamic = (MemEnv* )NULL;
 
   xmemset(env->mem_env_static, 0, sizeof(env->mem_env_static));
@@ -1204,7 +1167,6 @@ node_new(void)
   Node* node;
 
   node = (Node* )xmalloc(sizeof(Node));
-  //xmemset(node, 0, sizeof(node->u.base));
   xmemset(node, 0, sizeof(*node));
 
 #ifdef DEBUG_NODE_FREE
@@ -1218,7 +1180,6 @@ static void
 initialize_cclass(CClassNode* cc)
 {
   BITSET_CLEAR(cc->bs);
-  /* cc->base.flags = 0; */
   cc->flags = 0;
   cc->mbuf  = NULL;
 }
@@ -1235,21 +1196,23 @@ node_new_cclass(void)
 }
 
 static Node*
-node_new_ctype(int type, int not)
+node_new_ctype(int type, int not, OnigOptionType options)
 {
   Node* node = node_new();
   CHECK_NULL_RETURN(node);
 
   NODE_SET_TYPE(node, NODE_CTYPE);
-  CTYPE_(node)->ctype = type;
-  CTYPE_(node)->not   = not;
+  CTYPE_(node)->ctype   = type;
+  CTYPE_(node)->not     = not;
+  CTYPE_(node)->options = options;
+  CTYPE_(node)->ascii_mode = IS_ASCII_MODE_CTYPE_OPTION(type, options);
   return node;
 }
 
 static Node*
 node_new_anychar(void)
 {
-  Node* node = node_new_ctype(CTYPE_ANYCHAR, 0);
+  Node* node = node_new_ctype(CTYPE_ANYCHAR, 0, ONIG_OPTION_NONE);
   return node;
 }
 
@@ -1383,14 +1346,15 @@ make_alt(int n, Node* ns[])
 }
 
 extern Node*
-onig_node_new_anchor(int type)
+onig_node_new_anchor(int type, int ascii_mode)
 {
   Node* node = node_new();
   CHECK_NULL_RETURN(node);
 
   NODE_SET_TYPE(node, NODE_ANCHOR);
-  ANCHOR_(node)->type     = type;
-  ANCHOR_(node)->char_len = -1;
+  ANCHOR_(node)->type       = type;
+  ANCHOR_(node)->char_len   = -1;
+  ANCHOR_(node)->ascii_mode = ascii_mode;
   return node;
 }
 
@@ -1506,7 +1470,7 @@ node_new_quantifier(int lower, int upper, int by_number)
 }
 
 static Node*
-node_new_enclosure(int type)
+node_new_enclosure(enum EnclosureType type)
 {
   Node* node = node_new();
   CHECK_NULL_RETURN(node);
@@ -1636,6 +1600,61 @@ node_new_keep(Node** node, ScanEnv* env)
   return ONIG_NORMAL;
 }
 
+static int
+make_extended_grapheme_cluster(Node** node, ScanEnv* env)
+{
+  int r;
+  int i;
+  Node* x;
+  Node* ns[2];
+
+  /* \X == (?>\O(?:\Y\O)*) */
+
+  ns[1] = NULL_NODE;
+
+  r = ONIGERR_MEMORY;
+  ns[0] = onig_node_new_anchor(ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, 0);
+  if (IS_NULL(ns[0])) goto err;
+
+  r = node_new_true_anychar(&ns[1], env);
+  if (r != 0) goto err1;
+
+  x = make_list(2, ns);
+  if (IS_NULL(x)) goto err;
+  ns[0] = x;
+  ns[1] = NULL_NODE;
+
+  x = node_new_quantifier(0, REPEAT_INFINITE, 1);
+  if (IS_NULL(x)) goto err;
+
+  NODE_BODY(x) = ns[0];
+  ns[0] = NULL_NODE;
+  ns[1] = x;
+
+  r = node_new_true_anychar(&ns[0], env);
+  if (r != 0) goto err1;
+
+  x = make_list(2, ns);
+  if (IS_NULL(x)) goto err;
+
+  ns[0] = x;
+  ns[1] = NULL_NODE;
+
+  x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
+  if (IS_NULL(x)) goto err;
+
+  NODE_BODY(x) = ns[0];
+
+  *node = x;
+  return ONIG_NORMAL;
+
+ err:
+  r = ONIGERR_MEMORY;
+ err1:
+  for (i = 0; i < 2; i++) onig_node_free(ns[i]);
+  return r;
+}
+
 static int
 make_absent_engine(Node** node, int pre_save_right_id, Node* absent,
                    Node* step_one, int lower, int upper, int possessive,
@@ -1663,26 +1682,26 @@ make_absent_engine(Node** node, int pre_save_right_id, Node* absent,
   if (r != 0) goto err;
 
   x = make_list(4, ns);
-  if (IS_NULL(x)) goto err;
+  if (IS_NULL(x)) goto err0;
 
   ns[0] = x;
   ns[1] = step_one;
   ns[2] = ns[3] = NULL_NODE;
 
   x = make_alt(2, ns);
-  if (IS_NULL(x)) goto err;
+  if (IS_NULL(x)) goto err0;
 
   ns[0] = x;
 
   x = node_new_quantifier(lower, upper, 0);
-  if (IS_NULL(x)) goto err;
+  if (IS_NULL(x)) goto err0;
 
   NODE_BODY(x) = ns[0];
   ns[0] = x;
 
   if (possessive != 0) {
     x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
-    if (IS_NULL(x)) goto err;
+    if (IS_NULL(x)) goto err0;
 
     NODE_BODY(x) = ns[0];
     ns[0] = x;
@@ -1696,12 +1715,12 @@ make_absent_engine(Node** node, int pre_save_right_id, Node* absent,
   if (r != 0) goto err;
 
   x = make_list(2, ns + 1);
-  if (IS_NULL(x)) goto err;
+  if (IS_NULL(x)) goto err0;
 
   ns[1] = x; ns[2] = NULL_NODE;
 
   x = make_alt(2, ns);
-  if (IS_NULL(x)) goto err;
+  if (IS_NULL(x)) goto err0;
 
   if (is_range_cutter != 0)
     NODE_STATUS_ADD(x, NST_SUPER);
@@ -1709,6 +1728,8 @@ make_absent_engine(Node** node, int pre_save_right_id, Node* absent,
   *node = x;
   return ONIG_NORMAL;
 
+ err0:
+  r = ONIGERR_MEMORY;
  err:
   for (i = 0; i < 4; i++) onig_node_free(ns[i]);
   return r;
@@ -1739,7 +1760,7 @@ make_absent_tail(Node** node1, Node** node2, int pre_save_right_id,
   if (r != 0) goto err;
 
   x = make_list(2, ns);
-  if (IS_NULL(x)) goto err;
+  if (IS_NULL(x)) goto err0;
 
   ns[0] = NULL_NODE; ns[1] = x;
 
@@ -1748,12 +1769,68 @@ make_absent_tail(Node** node1, Node** node2, int pre_save_right_id,
   if (r != 0) goto err;
 
   x = make_alt(2, ns);
-  if (IS_NULL(x)) goto err;
+  if (IS_NULL(x)) goto err0;
 
   *node1 = save;
   *node2 = x;
   return ONIG_NORMAL;
 
+ err0:
+  r = ONIGERR_MEMORY;
+ err:
+  onig_node_free(save);
+  onig_node_free(ns[0]);
+  onig_node_free(ns[1]);
+  return r;
+}
+
+static int
+make_range_clear(Node** node, ScanEnv* env)
+{
+  int r;
+  int id;
+  Node* save;
+  Node* x;
+  Node* ns[2];
+
+  *node = NULL_NODE;
+  save = ns[0] = ns[1] = NULL_NODE;
+
+  r = node_new_save_gimmick(&save, SAVE_RIGHT_RANGE, env);
+  if (r != 0) goto err;
+
+  id = GIMMICK_(save)->id;
+  r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_FROM_STACK,
+                                  id, env);
+  if (r != 0) goto err;
+
+  r = node_new_fail(&ns[1], env);
+  if (r != 0) goto err;
+
+  x = make_list(2, ns);
+  if (IS_NULL(x)) goto err0;
+
+  ns[0] = NULL_NODE; ns[1] = x;
+
+  r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_INIT, 0, env);
+  if (r != 0) goto err;
+
+  x = make_alt(2, ns);
+  if (IS_NULL(x)) goto err0;
+
+  NODE_STATUS_ADD(x, NST_SUPER);
+
+  ns[0] = save;
+  ns[1] = x;
+  save = NULL_NODE;
+  x = make_list(2, ns);
+  if (IS_NULL(x)) goto err0;
+
+  *node = x;
+  return ONIG_NORMAL;
+
+ err0:
+  r = ONIGERR_MEMORY;
  err:
   onig_node_free(save);
   onig_node_free(ns[0]);
@@ -1790,6 +1867,9 @@ is_simple_one_char_repeat(Node* node, Node** rquant, Node** rbody,
       return 0;
   }
 
+  if (QUANT_(quant)->greedy == 0)
+    return 0;
+
   body = NODE_BODY(quant);
   switch (NODE_TYPE(body)) {
   case NODE_STRING:
@@ -1856,15 +1936,18 @@ make_absent_tree_for_simple_one_char_repeat(Node** node, Node* absent, Node* qua
 
   ns[2] = ns[3] = NULL_NODE;
 
-  r = make_absent_tail(&ns[2], &ns[3], id1, env);
+  r = node_new_update_var_gimmick(&ns[2], UPDATE_VAR_RIGHT_RANGE_FROM_STACK,
+                                  id1, env);
   if (r != 0) goto err;
 
-  x = make_list(4, ns);
-  if (IS_NULL(x)) goto err;
+  x = make_list(3, ns);
+  if (IS_NULL(x)) goto err0;
 
   *node = x;
   return ONIG_NORMAL;
 
+ err0:
+  r = ONIGERR_MEMORY;
  err:
   for (i = 0; i < 4; i++) onig_node_free(ns[i]);
   return r;
@@ -1892,7 +1975,7 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter,
     if (expr == NULL_NODE) {
       /* default expr \O* */
       quant = node_new_quantifier(0, REPEAT_INFINITE, 0);
-      if (IS_NULL(quant)) goto err;
+      if (IS_NULL(quant)) goto err0;
 
       r = node_new_true_anychar(&body, env);
       if (r != 0) {
@@ -1945,19 +2028,21 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter,
 
   if (is_range_cutter != 0) {
     x = make_list(4, ns);
-    if (IS_NULL(x)) goto err;
+    if (IS_NULL(x)) goto err0;
   }
   else {
     r = make_absent_tail(&ns[5], &ns[6], id1, env);
     if (r != 0) goto err;
   
     x = make_list(7, ns);
-    if (IS_NULL(x)) goto err;
+    if (IS_NULL(x)) goto err0;
   }
 
   *node = x;
   return ONIG_NORMAL;
 
+ err0:
+  r = ONIGERR_MEMORY;
  err:
   for (i = 0; i < 7; i++) onig_node_free(ns[i]);
   return r;  
@@ -2143,7 +2228,7 @@ onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc)
   num = 0;
   while (! PEND) {
     PFETCH(c);
-    if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
+    if (IS_CODE_DIGIT_ASCII(enc, c)) {
       val = (unsigned int )DIGITVAL(c);
       if ((INT_MAX_LIMIT - val) / 10UL < num)
         return -1;  /* overflow */
@@ -2161,7 +2246,7 @@ onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc)
 
 static int
 scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen,
-				 OnigEncoding enc)
+                                 OnigEncoding enc)
 {
   OnigCodePoint c;
   unsigned int num, val;
@@ -2171,7 +2256,7 @@ scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen,
   num = 0;
   while (! PEND && maxlen-- != 0) {
     PFETCH(c);
-    if (ONIGENC_IS_CODE_XDIGIT(enc, c)) {
+    if (IS_CODE_XDIGIT_ASCII(enc, c)) {
       val = (unsigned int )XDIGITVAL(enc,c);
       if ((INT_MAX_LIMIT - val) / 16UL < num)
         return -1;  /* overflow */
@@ -2189,7 +2274,7 @@ scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen,
 
 static int
 scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen,
-			   OnigEncoding enc)
+                           OnigEncoding enc)
 {
   OnigCodePoint c;
   unsigned int num, val;
@@ -2199,7 +2284,7 @@ scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen,
   num = 0;
   while (! PEND && maxlen-- != 0) {
     PFETCH(c);
-    if (ONIGENC_IS_CODE_DIGIT(enc, c) && c < '8') {
+    if (IS_CODE_DIGIT_ASCII(enc, c) && c < '8') {
       val = ODIGITVAL(c);
       if ((INT_MAX_LIMIT - val) / 8UL < num)
         return -1;  /* overflow */
@@ -2216,8 +2301,8 @@ scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen,
 }
 
 
-#define BBUF_WRITE_CODE_POINT(bbuf,pos,code) \
-    BBUF_WRITE(bbuf, pos, &(code), SIZE_CODE_POINT)
+#define BB_WRITE_CODE_POINT(bbuf,pos,code) \
+    BB_WRITE(bbuf, pos, &(code), SIZE_CODE_POINT)
 
 /* data format:
      [n][from-1][to-1][from-2][to-2] ... [from-n][to-n]
@@ -2233,7 +2318,7 @@ new_code_range(BBuf** pbuf)
 
   bbuf = *pbuf = (BBuf* )xmalloc(sizeof(BBuf));
   CHECK_NULL_RETURN_MEMERR(bbuf);
-  r = BBUF_INIT(bbuf, INIT_MULTI_BYTE_RANGE_SIZE);
+  r = BB_INIT(bbuf, INIT_MULTI_BYTE_RANGE_SIZE);
   if (r != 0) {
     xfree(bbuf);
     *pbuf = 0;
@@ -2241,7 +2326,7 @@ new_code_range(BBuf** pbuf)
   }
 
   n = 0;
-  BBUF_WRITE_CODE_POINT(bbuf, 0, n);
+  BB_WRITE_CODE_POINT(bbuf, 0, n);
   return 0;
 }
 
@@ -2304,19 +2389,19 @@ add_code_range_to_buf(BBuf** pbuf, OnigCodePoint from, OnigCodePoint to)
     int size = (n - high) * 2 * SIZE_CODE_POINT;
 
     if (inc_n > 0) {
-      BBUF_MOVE_RIGHT(bbuf, from_pos, to_pos, size);
+      BB_MOVE_RIGHT(bbuf, from_pos, to_pos, size);
     }
     else {
-      BBUF_MOVE_LEFT_REDUCE(bbuf, from_pos, to_pos);
+      BB_MOVE_LEFT_REDUCE(bbuf, from_pos, to_pos);
     }
   }
 
   pos = SIZE_CODE_POINT * (1 + low * 2);
-  BBUF_ENSURE_SIZE(bbuf, pos + SIZE_CODE_POINT * 2);
-  BBUF_WRITE_CODE_POINT(bbuf, pos, from);
-  BBUF_WRITE_CODE_POINT(bbuf, pos + SIZE_CODE_POINT, to);
+  BB_ENSURE_SIZE(bbuf, pos + SIZE_CODE_POINT * 2);
+  BB_WRITE_CODE_POINT(bbuf, pos, from);
+  BB_WRITE_CODE_POINT(bbuf, pos + SIZE_CODE_POINT, to);
   n += inc_n;
-  BBUF_WRITE_CODE_POINT(bbuf, 0, n);
+  BB_WRITE_CODE_POINT(bbuf, 0, n);
 
   return 0;
 }
@@ -2369,7 +2454,7 @@ not_code_range_buf(OnigEncoding enc, BBuf* bbuf, BBuf** pbuf)
   return r;
 }
 
-#define SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2) do {\
+#define SWAP_BB_NOT(bbuf1, not1, bbuf2, not2) do {\
   BBuf *tbuf; \
   int  tnot; \
   tnot = not1;  not1  = not2;  not2  = tnot; \
@@ -2393,7 +2478,7 @@ or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1,
 
   r = 0;
   if (IS_NULL(bbuf2))
-    SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2);
+    SWAP_BB_NOT(bbuf1, not1, bbuf2, not2);
 
   if (IS_NULL(bbuf1)) {
     if (not1 != 0) {
@@ -2410,7 +2495,7 @@ or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1,
   }
 
   if (not1 != 0)
-    SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2);
+    SWAP_BB_NOT(bbuf1, not1, bbuf2, not2);
 
   data1 = (OnigCodePoint* )(bbuf1->p);
   GET_CODE_POINT(n1, data1);
@@ -2435,7 +2520,7 @@ or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1,
 
 static int
 and_code_range1(BBuf** pbuf, OnigCodePoint from1, OnigCodePoint to1,
-	        OnigCodePoint* data, int n)
+                OnigCodePoint* data, int n)
 {
   int i, r;
   OnigCodePoint from2, to2;
@@ -2493,7 +2578,7 @@ and_code_range_buf(BBuf* bbuf1, int not1, BBuf* bbuf2, int not2, BBuf** pbuf)
   }
 
   if (not1 != 0)
-    SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2);
+    SWAP_BB_NOT(bbuf1, not1, bbuf2, not2);
 
   data1 = (OnigCodePoint* )(bbuf1->p);
   data2 = (OnigCodePoint* )(bbuf2->p);
@@ -2556,7 +2641,6 @@ and_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc)
   bitset_and(bsr1, bsr2);
   if (bsr1 != dest->bs) {
     bitset_copy(dest->bs, bsr1);
-    bsr1 = dest->bs;
   }
   if (not1 != 0) {
     bitset_invert(dest->bs);
@@ -2614,7 +2698,6 @@ or_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc)
   bitset_or(bsr1, bsr2);
   if (bsr1 != dest->bs) {
     bitset_copy(dest->bs, bsr1);
-    bsr1 = dest->bs;
   }
   if (not1 != 0) {
     bitset_invert(dest->bs);
@@ -2661,7 +2744,7 @@ conv_backslash_value(OnigCodePoint c, ScanEnv* env)
     case 'e': return '\033';
     case 'v':
       if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_V_VTAB))
-	return '\v';
+        return '\v';
       break;
 
     default:
@@ -2874,6 +2957,7 @@ enum TokenSyms {
   TK_GENERAL_NEWLINE,  /* \R */
   TK_NO_NEWLINE,       /* \N */
   TK_TRUE_ANYCHAR,     /* \O */
+  TK_EXTENDED_GRAPHEME_CLUSTER, /* \X */
 
   /* in cc */
   TK_CC_CLOSE,
@@ -3110,7 +3194,6 @@ enum REF_NUM {
   IS_REL_NUM = 2
 };
 
-#ifdef USE_NAMED_GROUP
 #ifdef USE_BACKREF_WITH_LEVEL
 /*
    \k<name+n>, \k<name-n>
@@ -3152,7 +3235,7 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,
     if (c == end_code)
       return ONIGERR_EMPTY_GROUP_NAME;
 
-    if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
+    if (IS_CODE_DIGIT_ASCII(enc, c)) {
       *num_type = IS_ABS_NUM;
       digit_count++;
     }
@@ -3181,7 +3264,7 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,
     }
 
     if (*num_type != IS_NOT_NUM) {
-      if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
+      if (IS_CODE_DIGIT_ASCII(enc, c)) {
         digit_count++;
       }
       else {
@@ -3204,7 +3287,7 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,
         goto end;
       }
       PFETCH(c);
-      if (! ONIGENC_IS_CODE_DIGIT(enc, c)) goto err;
+      if (! IS_CODE_DIGIT_ASCII(enc, c)) goto err;
       PUNFETCH;
       level = onig_scan_unsigned_number(&p, end, enc);
       if (level < 0) return ONIGERR_TOO_BIG_NUMBER;
@@ -3284,7 +3367,7 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,
     if (c == end_code)
       return ONIGERR_EMPTY_GROUP_NAME;
 
-    if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
+    if (IS_CODE_DIGIT_ASCII(enc, c)) {
       if (ref == 1)
         *num_type = IS_ABS_NUM;
       else {
@@ -3328,7 +3411,7 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,
       }
 
       if (*num_type != IS_NOT_NUM) {
-        if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
+        if (IS_CODE_DIGIT_ASCII(enc, c)) {
           digit_count++;
         }
         else {
@@ -3384,111 +3467,6 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,
     return r;
   }
 }
-#else
-static int
-fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,
-           UChar** rname_end, ScanEnv* env, int* rback_num,
-           enum REF_NUM* num_type, int ref)
-{
-  int r, sign;
-  int digit_count;
-  OnigCodePoint end_code;
-  OnigCodePoint c = 0;
-  UChar *name_end;
-  OnigEncoding enc = env->enc;
-  UChar *pnum_head;
-  UChar *p = *src;
-  PFETCH_READY;
-
-  *rback_num = 0;
-
-  end_code = get_name_end_code_point(start_code);
-
-  digit_count = 0;
-  *rname_end = name_end = end;
-  r = 0;
-  pnum_head = *src;
-  *num_type = IS_ABS_NUM;
-  sign = 1;
-
-  if (PEND) {
-    return ONIGERR_EMPTY_GROUP_NAME;
-  }
-  else {
-    PFETCH(c);
-    if (c == end_code)
-      return ONIGERR_EMPTY_GROUP_NAME;
-
-    if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
-      *num_type = IS_ABS_NUM;
-      digit_count++;
-    }
-    else if (c == '-') {
-      if (ref == 1) {
-        *num_type = IS_REL_NUM;
-        sign = -1;
-        pnum_head = p;
-      }
-      else {
-        r = ONIGERR_INVALID_GROUP_NAME;
-      }
-    }
-    else if (c == '+') {
-      if (ref == 1) {
-        *num_type = IS_REL_NUM;
-        sign = 1;
-        pnum_head = p;
-      }
-      else {
-        r = ONIGERR_INVALID_GROUP_NAME;
-      }
-    }
-    else {
-      r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
-    }
-  }
-
-  while (! PEND) {
-    name_end = p;
-
-    PFETCH(c);
-    if (c == end_code || c == ')') break;
-
-    if (ONIGENC_IS_CODE_DIGIT(enc, c))
-      digit_count++;
-    else
-      r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
-  }
-  if (r == 0 && c != end_code) {
-    r = ONIGERR_INVALID_GROUP_NAME;
-    name_end = end;
-  }
-  if (r == 0 && digit_count == 0) {
-    r = ONIGERR_INVALID_GROUP_NAME;
-  }
-
-  if (r == 0) {
-    *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc);
-    if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER;
-    else if (*rback_num == 0) {
-      if (*num_type == IS_REL_NUM) {
-        r = ONIGERR_INVALID_GROUP_NAME;
-        goto err;
-      }
-    }
-    *rback_num *= sign;
-
-    *rname_end = name_end;
-    *src = p;
-    return 0;
-  }
-  else {
-  err:
-    onig_scan_env_set_error_string(env, r, *src, name_end);
-    return r;
-  }
-}
-#endif /* USE_NAMED_GROUP */
 
 static void
 CC_ESC_WARN(ScanEnv* env, UChar *c)
@@ -3521,7 +3499,7 @@ CLOSE_BRACKET_WITHOUT_ESC_WARN(ScanEnv* env, UChar* c)
 
 static UChar*
 find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to,
-		  UChar **next, OnigEncoding enc)
+                  UChar **next, OnigEncoding enc)
 {
   int i;
   OnigCodePoint x;
@@ -3550,7 +3528,7 @@ find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to,
 
 static int
 str_exist_check_with_esc(OnigCodePoint s[], int n, UChar* from, UChar* to,
-		 OnigCodePoint bad, OnigEncoding enc, OnigSyntaxType* syn)
+                         OnigCodePoint bad, OnigEncoding enc, OnigSyntaxType* syn)
 {
   int i, in_esc;
   OnigCodePoint x;
@@ -3699,7 +3677,7 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
         if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
         if (!PEND) {
           c2 = PPEEK;
-          if (ONIGENC_IS_CODE_DIGIT(enc, c2))
+          if (IS_CODE_DIGIT_ASCII(enc, c2))
             return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
         }
 
@@ -3726,7 +3704,7 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
         if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
         if (!PEND) {
           c2 = PPEEK;
-          if (ONIGENC_IS_CODE_XDIGIT(enc, c2))
+          if (IS_CODE_XDIGIT_ASCII(enc, c2))
             return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
         }
 
@@ -3956,13 +3934,25 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
     case 'b':
       if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break;
       tok->type = TK_ANCHOR;
-      tok->u.anchor = ANCHOR_WORD_BOUND;
+      tok->u.anchor = ANCHOR_WORD_BOUNDARY;
       break;
 
     case 'B':
       if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break;
       tok->type = TK_ANCHOR;
-      tok->u.anchor = ANCHOR_NOT_WORD_BOUND;
+      tok->u.anchor = ANCHOR_NO_WORD_BOUNDARY;
+      break;
+
+    case 'y':
+      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break;
+      tok->type = TK_ANCHOR;
+      tok->u.anchor = ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY;
+      break;
+
+    case 'Y':
+      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break;
+      tok->type = TK_ANCHOR;
+      tok->u.anchor = ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY;
       break;
 
 #ifdef USE_WORD_BEGIN_END
@@ -4041,6 +4031,11 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
       tok->type = TK_TRUE_ANYCHAR;
       break;
 
+    case 'X':
+      if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break;
+      tok->type = TK_EXTENDED_GRAPHEME_CLUSTER;
+      break;
+
     case 'A':
       if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break;
     begin_buf:
@@ -4086,7 +4081,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
         num = scan_unsigned_octal_number(&p, end, 11, enc);
         if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
         if (!PEND) {
-          if (ONIGENC_IS_CODE_DIGIT(enc, PPEEK))
+          if (IS_CODE_DIGIT_ASCII(enc, PPEEK))
             return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
         }
 
@@ -4111,7 +4106,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
         num = scan_unsigned_hexadecimal_number(&p, end, 8, enc);
         if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
         if (!PEND) {
-          if (ONIGENC_IS_CODE_XDIGIT(enc, PPEEK))
+          if (IS_CODE_XDIGIT_ASCII(enc, PPEEK))
             return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
         }
 
@@ -4205,7 +4200,6 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
       }
       break;
 
-#ifdef USE_NAMED_GROUP
     case 'k':
       if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_K_NAMED_BACKREF)) {
         PFETCH(c);
@@ -4277,7 +4271,6 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
           PUNFETCH;
       }
       break;
-#endif
 
 #ifdef USE_CALL
     case 'g':
@@ -4531,8 +4524,8 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
 
 static int
 add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not,
-			 OnigEncoding enc ARG_UNUSED,
-                         OnigCodePoint sb_out, const OnigCodePoint mbr[])
+                         OnigEncoding enc ARG_UNUSED, OnigCodePoint sb_out,
+                         const OnigCodePoint mbr[])
 {
   int i, r;
   OnigCodePoint j;
@@ -4591,33 +4584,140 @@ add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not,
         if (r != 0) return r;
       }
       prev = ONIGENC_CODE_RANGE_TO(mbr, i) + 1;
+      if (prev == 0) goto end;
     }
-    if (prev < 0x7fffffff) {
-      r = add_code_range_to_buf(&(cc->mbuf), prev, 0x7fffffff);
+
+    r = add_code_range_to_buf(&(cc->mbuf), prev, MAX_CODE_POINT);
+    if (r != 0) return r;
+  }
+
+ end:
+  return 0;
+}
+
+static int
+add_ctype_to_cc_by_range_limit(CClassNode* cc, int ctype ARG_UNUSED, int not,
+                               OnigEncoding enc ARG_UNUSED,
+                               OnigCodePoint sb_out,
+                               const OnigCodePoint mbr[], OnigCodePoint limit)
+{
+  int i, r;
+  OnigCodePoint j;
+  OnigCodePoint from;
+  OnigCodePoint to;
+
+  int n = ONIGENC_CODE_RANGE_NUM(mbr);
+
+  if (not == 0) {
+    for (i = 0; i < n; i++) {
+      for (j  = ONIGENC_CODE_RANGE_FROM(mbr, i);
+           j <= ONIGENC_CODE_RANGE_TO(mbr, i); j++) {
+        if (j > limit) goto end;
+        if (j >= sb_out) {
+          if (j > ONIGENC_CODE_RANGE_FROM(mbr, i)) {
+            to = ONIGENC_CODE_RANGE_TO(mbr, i);
+            if (to > limit) to = limit;
+            r = add_code_range_to_buf(&(cc->mbuf), j, to);
+            if (r != 0) return r;
+            i++;
+          }
+
+          goto sb_end;
+        }
+        BITSET_SET_BIT(cc->bs, j);
+      }
+    }
+
+  sb_end:
+    for ( ; i < n; i++) {
+      from = ONIGENC_CODE_RANGE_FROM(mbr, i);
+      to   = ONIGENC_CODE_RANGE_TO(mbr, i);
+      if (from > limit) break;
+      if (to   > limit) to = limit;
+      r = add_code_range_to_buf(&(cc->mbuf), from, to);
       if (r != 0) return r;
     }
   }
+  else {
+    OnigCodePoint prev = 0;
+
+    for (i = 0; i < n; i++) {
+      from = ONIGENC_CODE_RANGE_FROM(mbr, i);
+      if (from > limit) {
+        for (j = prev; j < sb_out; j++) {
+          BITSET_SET_BIT(cc->bs, j);
+        }
+        goto sb_end2;
+      }
+      for (j = prev; j < from; j++) {
+        if (j >= sb_out) goto sb_end2;
+        BITSET_SET_BIT(cc->bs, j);
+      }
+      prev = ONIGENC_CODE_RANGE_TO(mbr, i);
+      if (prev > limit) prev = limit;
+      prev++;
+      if (prev == 0) goto end;
+    }
+    for (j = prev; j < sb_out; j++) {
+      BITSET_SET_BIT(cc->bs, j);
+    }
+
+  sb_end2:
+    prev = sb_out;
+
+    for (i = 0; i < n; i++) {
+      from = ONIGENC_CODE_RANGE_FROM(mbr, i);
+      if (from > limit) goto last;
+
+      if (prev < from) {
+        r = add_code_range_to_buf(&(cc->mbuf), prev, from - 1);
+        if (r != 0) return r;
+      }
+      prev = ONIGENC_CODE_RANGE_TO(mbr, i);
+      if (prev > limit) prev = limit;
+      prev++;
+      if (prev == 0) goto end;
+    }
+
+  last:
+    r = add_code_range_to_buf(&(cc->mbuf), prev, MAX_CODE_POINT);
+    if (r != 0) return r;
+  }
 
+ end:
   return 0;
 }
 
 static int
 add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env)
 {
+#define ASCII_LIMIT    127
+
   int c, r;
+  int ascii_mode;
   const OnigCodePoint *ranges;
+  OnigCodePoint limit;
   OnigCodePoint sb_out;
   OnigEncoding enc = env->enc;
 
+  ascii_mode = IS_ASCII_MODE_CTYPE_OPTION(ctype, env->options);
+
   r = ONIGENC_GET_CTYPE_CODE_RANGE(enc, ctype, &sb_out, &ranges);
   if (r == 0) {
-    return add_ctype_to_cc_by_range(cc, ctype, not, env->enc, sb_out, ranges);
+    if (ascii_mode == 0)
+      r = add_ctype_to_cc_by_range(cc, ctype, not, env->enc, sb_out, ranges);
+    else
+      r = add_ctype_to_cc_by_range_limit(cc, ctype, not, env->enc, sb_out,
+                                         ranges, ASCII_LIMIT);
+    return r;
   }
   else if (r != ONIG_NO_SUPPORT_CONFIG) {
     return r;
   }
 
   r = 0;
+  limit = ascii_mode ? ASCII_LIMIT : SINGLE_BYTE_SIZE;
+
   switch (ctype) {
   case ONIGENC_CTYPE_ALPHA:
   case ONIGENC_CTYPE_BLANK:
@@ -4631,14 +4731,18 @@ add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env)
   case ONIGENC_CTYPE_ASCII:
   case ONIGENC_CTYPE_ALNUM:
     if (not != 0) {
-      for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
+      for (c = 0; c < limit; c++) {
         if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
           BITSET_SET_BIT(cc->bs, c);
       }
+      for (c = limit; c < SINGLE_BYTE_SIZE; c++) {
+        BITSET_SET_BIT(cc->bs, c);
+      }
+
       ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
     }
     else {
-      for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
+      for (c = 0; c < limit; c++) {
         if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
           BITSET_SET_BIT(cc->bs, c);
       }
@@ -4647,34 +4751,25 @@ add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env)
 
   case ONIGENC_CTYPE_GRAPH:
   case ONIGENC_CTYPE_PRINT:
+  case ONIGENC_CTYPE_WORD:
     if (not != 0) {
-      for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
-        if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
+      for (c = 0; c < limit; c++) {
+        if (ONIGENC_CODE_TO_MBCLEN(enc, c) > 0 /* check invalid code point */
+            && ! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
           BITSET_SET_BIT(cc->bs, c);
       }
-    }
-    else {
-      for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
-        if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
+      for (c = limit; c < SINGLE_BYTE_SIZE; c++) {
+        if (ONIGENC_CODE_TO_MBCLEN(enc, c) > 0)
           BITSET_SET_BIT(cc->bs, c);
       }
-      ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
-    }
-    break;
-
-  case ONIGENC_CTYPE_WORD:
-    if (not == 0) {
-      for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
-        if (IS_CODE_SB_WORD(enc, c)) BITSET_SET_BIT(cc->bs, c);
-      }
-      ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
     }
     else {
-      for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
-        if ((ONIGENC_CODE_TO_MBCLEN(enc, c) > 0) /* check invalid code point */
-            && ! ONIGENC_IS_CODE_WORD(enc, c))
+      for (c = 0; c < limit; c++) {
+        if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
           BITSET_SET_BIT(cc->bs, c);
       }
+      if (ascii_mode == 0)
+        ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
     }
     break;
 
@@ -4792,8 +4887,7 @@ fetch_char_property_to_ctype(UChar** src, UChar* end, ScanEnv* env)
 }
 
 static int
-parse_char_property(Node** np, OnigToken* tok, UChar** src, UChar* end,
-		    ScanEnv* env)
+parse_char_property(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
 {
   int r, ctype;
   CClassNode* cc;
@@ -4827,7 +4921,7 @@ enum CCVALTYPE {
 
 static int
 next_state_class(CClassNode* cc, OnigCodePoint* vs, enum CCVALTYPE* type,
-		 enum CCSTATE* state, ScanEnv* env)
+                 enum CCSTATE* state, ScanEnv* env)
 {
   int r;
 
@@ -4850,9 +4944,9 @@ next_state_class(CClassNode* cc, OnigCodePoint* vs, enum CCVALTYPE* type,
 
 static int
 next_state_val(CClassNode* cc, OnigCodePoint *from, OnigCodePoint to,
-	       int* from_israw, int to_israw,
-	       enum CCVALTYPE intype, enum CCVALTYPE* type,
-	       enum CCSTATE* state, ScanEnv* env)
+               int* from_israw, int to_israw,
+               enum CCVALTYPE intype, enum CCVALTYPE* type,
+               enum CCSTATE* state, ScanEnv* env)
 {
   int r;
 
@@ -4921,7 +5015,7 @@ next_state_val(CClassNode* cc, OnigCodePoint *from, OnigCodePoint to,
 
 static int
 code_exist_check(OnigCodePoint c, UChar* from, UChar* end, int ignore_escaped,
-		 ScanEnv* env)
+                 ScanEnv* env)
 {
   int in_esc;
   OnigCodePoint code;
@@ -5282,19 +5376,17 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,
 }
 
 static int parse_subexp(Node** top, OnigToken* tok, int term,
-			UChar** src, UChar* end, ScanEnv* env);
+                        UChar** src, UChar* end, ScanEnv* env);
 
 static int
 parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
-	      ScanEnv* env)
+                ScanEnv* env)
 {
   int r, num;
   Node *target;
   OnigOptionType option;
   OnigCodePoint c;
-#ifdef USE_NAMED_GROUP
   int list_capture;
-#endif
   OnigEncoding enc = env->enc;
 
   UChar* p = *src;
@@ -5322,16 +5414,15 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
       break;
 
     case '=':
-      *np = onig_node_new_anchor(ANCHOR_PREC_READ);
+      *np = onig_node_new_anchor(ANCHOR_PREC_READ, 0);
       break;
     case '!':  /*         preceding read */
-      *np = onig_node_new_anchor(ANCHOR_PREC_READ_NOT);
+      *np = onig_node_new_anchor(ANCHOR_PREC_READ_NOT, 0);
       break;
     case '>':            /* (?>...) stop backtrack */
       *np = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
       break;
 
-#ifdef USE_NAMED_GROUP
     case '\'':
       if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {
         goto named_group1;
@@ -5339,16 +5430,14 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
       else
         return ONIGERR_UNDEFINED_GROUP_OPTION;
       break;
-#endif
 
     case '<':   /* look behind (?<=...), (?<!...) */
       if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS;
       PFETCH(c);
       if (c == '=')
-        *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND);
+        *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND, 0);
       else if (c == '!')
-        *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND_NOT);
-#ifdef USE_NAMED_GROUP
+        *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND_NOT, 0);
       else {
         if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {
           UChar *name;
@@ -5385,11 +5474,6 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
           return ONIGERR_UNDEFINED_GROUP_OPTION;
         }
       }
-#else
-      else {
-        return ONIGERR_UNDEFINED_GROUP_OPTION;
-      }
-#endif
       break;
 
     case '~':
@@ -5406,10 +5490,9 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
           if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
 
           head_bar = 1;
-          if (PPEEK_IS(')')) { // (?~|)  : absent clear
+          if (PPEEK_IS(')')) { // (?~|)  : range clear
             PINC;
-            r = node_new_update_var_gimmick(np, UPDATE_VAR_RIGHT_RANGE_INIT,
-                                            0, env);
+            r = make_range_clear(np, env);
             if (r != 0) return r;
             goto end;
           }
@@ -5471,7 +5554,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
         PFETCH(c);
         if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
 
-        if (ONIGENC_IS_CODE_DIGIT(enc, c)
+        if (IS_CODE_DIGIT_ASCII(enc, c)
             || c == '-' || c == '+' || c == '<' || c == '\'') {
           UChar* name_end;
           int back_num;
@@ -5647,7 +5730,6 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
 
     case '@':
       if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY)) {
-#ifdef USE_NAMED_GROUP
         if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {
           PFETCH(c);
           if (c == '<' || c == '\'') {
@@ -5656,7 +5738,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
           }
           PUNFETCH;
         }
-#endif
+
         *np = node_new_memory(0);
         CHECK_NULL_RETURN_MEMERR(*np);
         num = scan_env_add_mem_entry(env);
@@ -5678,6 +5760,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
     case 'p':
 #endif
     case '-': case 'i': case 'm': case 's': case 'x':
+    case 'W': case 'D': case 'S': case 'P':
       {
         int neg = 0;
 
@@ -5713,6 +5796,11 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
             OPTION_NEGATE(option, ONIG_OPTION_MULTILINE|ONIG_OPTION_SINGLELINE, neg);
             break;
 #endif
+          case 'W': OPTION_NEGATE(option, ONIG_OPTION_WORD_IS_ASCII, neg); break;
+          case 'D': OPTION_NEGATE(option, ONIG_OPTION_DIGIT_IS_ASCII, neg); break;
+          case 'S': OPTION_NEGATE(option, ONIG_OPTION_SPACE_IS_ASCII, neg); break;
+          case 'P': OPTION_NEGATE(option, ONIG_OPTION_POSIX_IS_ASCII, neg); break;
+
           default:
             return ONIGERR_UNDEFINED_GROUP_OPTION;
           }
@@ -5918,8 +6006,7 @@ typedef struct {
 } IApplyCaseFoldArg;
 
 static int
-i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[],
-		  int to_len, void* arg)
+i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], int to_len, void* arg)
 {
   IApplyCaseFoldArg* iarg;
   ScanEnv* env;
@@ -5998,8 +6085,8 @@ i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[],
 }
 
 static int
-parse_exp(Node** np, OnigToken* tok, int term,
-	  UChar** src, UChar* end, ScanEnv* env)
+parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
+          ScanEnv* env)
 {
   int r, len, group = 0;
   Node* qn;
@@ -6145,7 +6232,7 @@ parse_exp(Node** np, OnigToken* tok, int term,
     {
       switch (tok->u.prop.ctype) {
       case ONIGENC_CTYPE_WORD:
-        *np = node_new_ctype(tok->u.prop.ctype, tok->u.prop.not);
+        *np = node_new_ctype(tok->u.prop.ctype, tok->u.prop.not, env->options);
         CHECK_NULL_RETURN_MEMERR(*np);
         break;
 
@@ -6253,7 +6340,11 @@ parse_exp(Node** np, OnigToken* tok, int term,
 #endif
 
   case TK_ANCHOR:
-    *np = onig_node_new_anchor(tok->u.anchor);
+    {
+      int ascii_mode =
+        IS_WORD_ASCII(env->options) && IS_WORD_ANCHOR_TYPE(tok->u.anchor) ? 1 : 0;
+      *np = onig_node_new_anchor(tok->u.anchor, ascii_mode);
+    }
     break;
 
   case TK_OP_REPEAT:
@@ -6289,6 +6380,11 @@ parse_exp(Node** np, OnigToken* tok, int term,
     if (r < 0) return r;
     break;
 
+  case TK_EXTENDED_GRAPHEME_CLUSTER:
+    r = make_extended_grapheme_cluster(np, env);
+    if (r < 0) return r;
+    break;
+
   default:
     return ONIGERR_PARSER_BUG;
     break;
@@ -6356,8 +6452,8 @@ parse_exp(Node** np, OnigToken* tok, int term,
 }
 
 static int
-parse_branch(Node** top, OnigToken* tok, int term,
-	     UChar** src, UChar* end, ScanEnv* env)
+parse_branch(Node** top, OnigToken* tok, int term, UChar** src, UChar* end,
+             ScanEnv* env)
 {
   int r;
   Node *node, **headp;
@@ -6399,8 +6495,8 @@ parse_branch(Node** top, OnigToken* tok, int term,
 
 /* term_tok: TK_EOT or TK_SUBEXP_CLOSE */
 static int
-parse_subexp(Node** top, OnigToken* tok, int term,
-	     UChar** src, UChar* end, ScanEnv* env)
+parse_subexp(Node** top, OnigToken* tok, int term, UChar** src, UChar* end,
+             ScanEnv* env)
 {
   int r;
   Node *node, **headp;
@@ -6492,9 +6588,7 @@ onig_parse_tree(Node** root, const UChar* pattern, const UChar* end,
   int r;
   UChar* p;
 
-#ifdef USE_NAMED_GROUP
   names_clear(reg);
-#endif
 
   scan_env_clear(env);
   env->options        = reg->options;
@@ -6531,7 +6625,7 @@ onig_parse_tree(Node** root, const UChar* pattern, const UChar* end,
 
 extern void
 onig_scan_env_set_error_string(ScanEnv* env, int ecode ARG_UNUSED,
-				UChar* arg, UChar* arg_end)
+                               UChar* arg, UChar* arg_end)
 {
   env->error     = arg;
   env->error_end = arg_end;
diff --git a/src/regparse.h b/src/regparse.h
index b7260ea..57219a4 100644
--- a/src/regparse.h
+++ b/src/regparse.h
@@ -100,10 +100,12 @@ enum GimmickType {
 #define ANCHOR_ANYCHAR_STAR_MASK (ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML)
 #define ANCHOR_END_BUF_MASK      (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)
 
-#define ENCLOSURE_MEMORY           (1<<0)
-#define ENCLOSURE_OPTION           (1<<1)
-#define ENCLOSURE_STOP_BACKTRACK   (1<<2)
-#define ENCLOSURE_IF_ELSE          (1<<3)
+enum EnclosureType {
+  ENCLOSURE_MEMORY = 0,
+  ENCLOSURE_OPTION = 1,
+  ENCLOSURE_STOP_BACKTRACK = 2,
+  ENCLOSURE_IF_ELSE = 3,
+};
 
 #define NODE_STRING_MARGIN         16
 #define NODE_STRING_BUF_SIZE       24  /* sizeof(CClassNode) - sizeof(int)*4 */
@@ -125,7 +127,7 @@ enum GimmickType {
   (((node)->u.str.flag & STRING_DONT_GET_OPT_INFO) != 0)
 
 #define BACKREFS_P(br) \
-  (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static);
+  (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static)
 
 #define QUANT_BODY_IS_NOT_EMPTY    0
 #define QUANT_BODY_IS_EMPTY        1
@@ -233,7 +235,7 @@ typedef struct {
   int status;
   struct _Node* body;
 
-  int type;
+  enum EnclosureType type;
   union {
     struct {
       int regnum;
@@ -301,6 +303,7 @@ typedef struct {
 
   int type;
   int char_len;
+  int ascii_mode;
 } AnchorNode;
 
 typedef struct {
@@ -318,6 +321,7 @@ typedef struct {
   int ctype;
   int not;
   OnigOptionType options;
+  int ascii_mode;
 } CtypeNode;
 
 typedef struct {
@@ -392,9 +396,7 @@ typedef struct {
   int              has_call_zero;
 #endif
   int              num_mem;
-#ifdef USE_NAMED_GROUP
   int              num_named;
-#endif
   int              mem_alloc;
   MemEnv            mem_env_static[SCANENV_MEMENV_SIZE];
   MemEnv*           mem_env_dynamic;
@@ -417,13 +419,11 @@ typedef struct {
 #define IS_SYNTAX_OP2(syn, opm)   (((syn)->op2 & (opm)) != 0)
 #define IS_SYNTAX_BV(syn, bvm)    (((syn)->behavior & (bvm)) != 0)
 
-#ifdef USE_NAMED_GROUP
 typedef struct {
   int new_val;
 } GroupNumRemap;
 
 extern int    onig_renumber_name_table P_((regex_t* reg, GroupNumRemap* map));
-#endif
 
 extern int    onig_strncmp P_((const UChar* s1, const UChar* s2, int n));
 extern void   onig_strcpy P_((UChar* dest, const UChar* src, const UChar* end));
@@ -435,7 +435,7 @@ extern int    onig_node_str_cat P_((Node* node, const UChar* s, const UChar* end
 extern int    onig_node_str_set P_((Node* node, const UChar* s, const UChar* end));
 extern void   onig_node_free P_((Node* node));
 extern Node*  onig_node_new_enclosure P_((int type));
-extern Node*  onig_node_new_anchor P_((int type));
+extern Node*  onig_node_new_anchor P_((int type, int ascii_mode));
 extern Node*  onig_node_new_str P_((const UChar* s, const UChar* end));
 extern Node*  onig_node_new_list P_((Node* left, Node* right));
 extern Node*  onig_node_list_add P_((Node* list, Node* x));
@@ -448,9 +448,7 @@ extern int    onig_is_code_in_cc P_((OnigEncoding enc, OnigCodePoint code, CClas
 extern OnigLen onig_get_tiny_min_len(Node* node, unsigned int inhibit_node_types, int* invalid_node);
 
 #ifdef ONIG_DEBUG
-#ifdef USE_NAMED_GROUP
 extern int onig_print_names(FILE*, regex_t*);
 #endif
-#endif
 
 #endif /* REGPARSE_H */
diff --git a/src/regsyntax.c b/src/regsyntax.c
index 6833e1d..83989b6 100644
--- a/src/regsyntax.c
+++ b/src/regsyntax.c
@@ -176,6 +176,7 @@ OnigSyntaxType OnigSyntaxPerl = {
       ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |
       ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |
       ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |
+      ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |
       ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |
       ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
       ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |
@@ -206,6 +207,7 @@ OnigSyntaxType OnigSyntaxPerl_NG = {
       ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |
       ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |
       ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |
+      ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |
       ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY  |
       ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
       ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP       |
diff --git a/src/unicode.c b/src/unicode.c
index 5b6b3e7..65de74a 100644
--- a/src/unicode.c
+++ b/src/unicode.c
@@ -664,3 +664,203 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
 
   return n;
 }
+
+
+#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
+
+enum EGCB_BREAK_TYPE {
+  EGCB_NOT_BREAK = 0,
+  EGCB_BREAK     = 1,
+  EGCB_BREAK_UNDEF_E_MODIFIER = 2,
+  EGCB_BREAK_UNDEF_RI_RI = 3
+};
+
+enum EGCB_TYPE {
+  EGCB_Other   = 0,
+  EGCB_CR      = 1,
+  EGCB_LF      = 2,
+  EGCB_Control = 3,
+  EGCB_Extend  = 4,
+  EGCB_Prepend = 5,
+  EGCB_Regional_Indicator = 6,
+  EGCB_SpacingMark = 7,
+  EGCB_ZWJ         = 8,
+  EGCB_E_Base         = 9,
+  EGCB_E_Base_GAZ     = 10,
+  EGCB_E_Modifier     = 11,
+  EGCB_Glue_After_Zwj = 12,
+  EGCB_L   = 13,
+  EGCB_LV  = 14,
+  EGCB_LVT = 15,
+  EGCB_T   = 16,
+  EGCB_V   = 17
+};
+
+typedef struct {
+  OnigCodePoint  start;
+  OnigCodePoint  end;
+  enum EGCB_TYPE type;
+} EGCB_RANGE_TYPE;
+
+#include "unicode_egcb_data.c"
+
+static enum EGCB_TYPE
+egcb_get_type(OnigCodePoint code)
+{
+  OnigCodePoint low, high, x;
+  enum EGCB_TYPE type;
+
+  for (low = 0, high = EGCB_RANGE_NUM; low < high; ) {
+    x = (low + high) >> 1;
+    if (code > EGCB_RANGES[x].end)
+      low = x + 1;
+    else
+      high = x;
+  }
+
+  type = (low < EGCB_RANGE_NUM && code >= EGCB_RANGES[low].start) ?
+    EGCB_RANGES[low].type : EGCB_Other;
+  return type;
+}
+
+#define IS_CONTROL_CR_LF(code)   ((code) <= EGCB_Control && (code) >= EGCB_CR)
+#define IS_HANGUL(code)          ((code) >= EGCB_L)
+
+/* GB1 and GB2 are outside of this function. */
+static enum EGCB_BREAK_TYPE
+unicode_egcb_is_break_2code(OnigCodePoint from_code, OnigCodePoint to_code)
+{
+  enum EGCB_TYPE from;
+  enum EGCB_TYPE to;
+
+  from = egcb_get_type(from_code);
+  to   = egcb_get_type(to_code);
+
+  /* short cut */
+  if (from == 0 && to == 0) goto GB999;
+
+  /* GB3 */
+  if (from == EGCB_CR && to == EGCB_LF) return EGCB_NOT_BREAK;
+  /* GB4 */
+  if (IS_CONTROL_CR_LF(from)) return EGCB_BREAK;
+  /* GB5 */
+  if (IS_CONTROL_CR_LF(to)) return EGCB_BREAK;
+
+  if (IS_HANGUL(from) && IS_HANGUL(to)) {
+    /* GB6 */
+    if (from == EGCB_L && to != EGCB_T) return EGCB_NOT_BREAK;
+    /* GB7 */
+    if ((from == EGCB_LV || from == EGCB_V)
+        && (to == EGCB_V || to == EGCB_T)) return EGCB_NOT_BREAK;
+
+    /* GB8 */
+    if ((from == EGCB_LVT || from == EGCB_T) && (to == EGCB_T))
+      return EGCB_NOT_BREAK;
+
+    goto GB999;
+  }
+
+  /* GB9 */
+  if (to == EGCB_Extend || to == EGCB_ZWJ) return EGCB_NOT_BREAK;
+
+  /* GB9a */
+  if (to == EGCB_SpacingMark) return EGCB_NOT_BREAK;
+  /* GB9b */
+  if (from == EGCB_Prepend) return EGCB_NOT_BREAK;
+
+  /* GB10 */
+  if (to == EGCB_E_Modifier) {
+    if (from == EGCB_E_Base || from == EGCB_E_Base_GAZ) return EGCB_NOT_BREAK;
+    if (from == EGCB_Extend) return EGCB_BREAK_UNDEF_E_MODIFIER;
+    goto GB999;
+  }
+
+  /* GB11 */
+  if (from == EGCB_ZWJ) {
+    if (to == EGCB_Glue_After_Zwj || to == EGCB_E_Base_GAZ) return EGCB_NOT_BREAK;
+    goto GB999;
+  }
+
+  /* GB12, GB13 */
+  if (from == EGCB_Regional_Indicator && to == EGCB_Regional_Indicator) {
+    return EGCB_BREAK_UNDEF_RI_RI;
+  }
+
+ GB999:
+  return EGCB_BREAK;
+}
+
+#endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */
+
+extern int
+onigenc_egcb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev,
+                               const UChar* start, const UChar* end)
+{
+  OnigCodePoint from;
+  OnigCodePoint to;
+#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
+  enum EGCB_BREAK_TYPE btype;
+  enum EGCB_TYPE type;
+#endif
+
+  /* GB1 and GB2 */
+  if (p == start) return 1;
+  if (p == end)   return 1;
+
+  if (IS_NULL(prev)) {
+    prev = onigenc_get_prev_char_head(enc, start, p);
+    if (IS_NULL(prev)) return 1;
+  }
+
+  from = ONIGENC_MBC_TO_CODE(enc, prev, end);
+  to   = ONIGENC_MBC_TO_CODE(enc, p, end);
+
+#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
+  if (! ONIGENC_IS_UNICODE_ENCODING(enc)) {
+    if (from == 0x000d && to == 0x000a) return 0;
+    else return 1;
+  }
+
+  btype = unicode_egcb_is_break_2code(from, to);
+  switch (btype) {
+  case EGCB_NOT_BREAK:
+    return 0;
+    break;
+  case EGCB_BREAK:
+    return 1;
+    break;
+
+  case EGCB_BREAK_UNDEF_E_MODIFIER:
+    while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
+      from = ONIGENC_MBC_TO_CODE(enc, prev, end);
+      type = egcb_get_type(from);
+      if (type == EGCB_E_Base || type == EGCB_E_Base_GAZ)
+        return 0;
+      if (type != EGCB_Extend)
+        break;
+    }
+    break;
+
+  case EGCB_BREAK_UNDEF_RI_RI:
+    {
+      int n = 0;
+      while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
+        from = ONIGENC_MBC_TO_CODE(enc, prev, end);
+        type = egcb_get_type(from);
+        if (type != EGCB_Regional_Indicator)
+          break;
+
+        n++;
+      }
+      if ((n % 2) == 0) return 0;
+    }
+    break;
+  }
+
+  return 1;
+
+#else
+  if (from == 0x000d && to == 0x000a) return 0;
+  else return 1;
+#endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */
+}
diff --git a/src/unicode_egcb_data.c b/src/unicode_egcb_data.c
new file mode 100644
index 0000000..144d9b3
--- /dev/null
+++ b/src/unicode_egcb_data.c
@@ -0,0 +1,1382 @@
+/* Copyright (c) 2017  K.Kosako */
+/* Generated by make_gcb_data.py. */
+
+#define GRAPHEME_BREAK_PROPERTY_VERSION  10_0_0
+
+/*
+CR
+Control
+E_Base
+E_Base_GAZ
+E_Modifier
+Extend
+Glue_After_Zwj
+L
+LF
+LV
+LVT
+Prepend
+Regional_Indicator
+SpacingMark
+T
+V
+ZWJ
+*/
+
+static int EGCB_RANGE_NUM = 1354;
+static EGCB_RANGE_TYPE EGCB_RANGES[] = {
+ {0x000000, 0x000009, EGCB_Control },
+ {0x00000a, 0x00000a, EGCB_LF },
+ {0x00000b, 0x00000c, EGCB_Control },
+ {0x00000d, 0x00000d, EGCB_CR },
+ {0x00000e, 0x00001f, EGCB_Control },
+ {0x00007f, 0x00009f, EGCB_Control },
+ {0x0000ad, 0x0000ad, EGCB_Control },
+ {0x000300, 0x00036f, EGCB_Extend },
+ {0x000483, 0x000489, EGCB_Extend },
+ {0x000591, 0x0005bd, EGCB_Extend },
+ {0x0005bf, 0x0005bf, EGCB_Extend },
+ {0x0005c1, 0x0005c2, EGCB_Extend },
+ {0x0005c4, 0x0005c5, EGCB_Extend },
+ {0x0005c7, 0x0005c7, EGCB_Extend },
+ {0x000600, 0x000605, EGCB_Prepend },
+ {0x000610, 0x00061a, EGCB_Extend },
+ {0x00061c, 0x00061c, EGCB_Control },
+ {0x00064b, 0x00065f, EGCB_Extend },
+ {0x000670, 0x000670, EGCB_Extend },
+ {0x0006d6, 0x0006dc, EGCB_Extend },
+ {0x0006dd, 0x0006dd, EGCB_Prepend },
+ {0x0006df, 0x0006e4, EGCB_Extend },
+ {0x0006e7, 0x0006e8, EGCB_Extend },
+ {0x0006ea, 0x0006ed, EGCB_Extend },
+ {0x00070f, 0x00070f, EGCB_Prepend },
+ {0x000711, 0x000711, EGCB_Extend },
+ {0x000730, 0x00074a, EGCB_Extend },
+ {0x0007a6, 0x0007b0, EGCB_Extend },
+ {0x0007eb, 0x0007f3, EGCB_Extend },
+ {0x000816, 0x000819, EGCB_Extend },
+ {0x00081b, 0x000823, EGCB_Extend },
+ {0x000825, 0x000827, EGCB_Extend },
+ {0x000829, 0x00082d, EGCB_Extend },
+ {0x000859, 0x00085b, EGCB_Extend },
+ {0x0008d4, 0x0008e1, EGCB_Extend },
+ {0x0008e2, 0x0008e2, EGCB_Prepend },
+ {0x0008e3, 0x000902, EGCB_Extend },
+ {0x000903, 0x000903, EGCB_SpacingMark },
+ {0x00093a, 0x00093a, EGCB_Extend },
+ {0x00093b, 0x00093b, EGCB_SpacingMark },
+ {0x00093c, 0x00093c, EGCB_Extend },
+ {0x00093e, 0x000940, EGCB_SpacingMark },
+ {0x000941, 0x000948, EGCB_Extend },
+ {0x000949, 0x00094c, EGCB_SpacingMark },
+ {0x00094d, 0x00094d, EGCB_Extend },
+ {0x00094e, 0x00094f, EGCB_SpacingMark },
+ {0x000951, 0x000957, EGCB_Extend },
+ {0x000962, 0x000963, EGCB_Extend },
+ {0x000981, 0x000981, EGCB_Extend },
+ {0x000982, 0x000983, EGCB_SpacingMark },
+ {0x0009bc, 0x0009bc, EGCB_Extend },
+ {0x0009be, 0x0009be, EGCB_Extend },
+ {0x0009bf, 0x0009c0, EGCB_SpacingMark },
+ {0x0009c1, 0x0009c4, EGCB_Extend },
+ {0x0009c7, 0x0009c8, EGCB_SpacingMark },
+ {0x0009cb, 0x0009cc, EGCB_SpacingMark },
+ {0x0009cd, 0x0009cd, EGCB_Extend },
+ {0x0009d7, 0x0009d7, EGCB_Extend },
+ {0x0009e2, 0x0009e3, EGCB_Extend },
+ {0x000a01, 0x000a02, EGCB_Extend },
+ {0x000a03, 0x000a03, EGCB_SpacingMark },
+ {0x000a3c, 0x000a3c, EGCB_Extend },
+ {0x000a3e, 0x000a40, EGCB_SpacingMark },
+ {0x000a41, 0x000a42, EGCB_Extend },
+ {0x000a47, 0x000a48, EGCB_Extend },
+ {0x000a4b, 0x000a4d, EGCB_Extend },
+ {0x000a51, 0x000a51, EGCB_Extend },
+ {0x000a70, 0x000a71, EGCB_Extend },
+ {0x000a75, 0x000a75, EGCB_Extend },
+ {0x000a81, 0x000a82, EGCB_Extend },
+ {0x000a83, 0x000a83, EGCB_SpacingMark },
+ {0x000abc, 0x000abc, EGCB_Extend },
+ {0x000abe, 0x000ac0, EGCB_SpacingMark },
+ {0x000ac1, 0x000ac5, EGCB_Extend },
+ {0x000ac7, 0x000ac8, EGCB_Extend },
+ {0x000ac9, 0x000ac9, EGCB_SpacingMark },
+ {0x000acb, 0x000acc, EGCB_SpacingMark },
+ {0x000acd, 0x000acd, EGCB_Extend },
+ {0x000ae2, 0x000ae3, EGCB_Extend },
+ {0x000afa, 0x000aff, EGCB_Extend },
+ {0x000b01, 0x000b01, EGCB_Extend },
+ {0x000b02, 0x000b03, EGCB_SpacingMark },
+ {0x000b3c, 0x000b3c, EGCB_Extend },
+ {0x000b3e, 0x000b3f, EGCB_Extend },
+ {0x000b40, 0x000b40, EGCB_SpacingMark },
+ {0x000b41, 0x000b44, EGCB_Extend },
+ {0x000b47, 0x000b48, EGCB_SpacingMark },
+ {0x000b4b, 0x000b4c, EGCB_SpacingMark },
+ {0x000b4d, 0x000b4d, EGCB_Extend },
+ {0x000b56, 0x000b57, EGCB_Extend },
+ {0x000b62, 0x000b63, EGCB_Extend },
+ {0x000b82, 0x000b82, EGCB_Extend },
+ {0x000bbe, 0x000bbe, EGCB_Extend },
+ {0x000bbf, 0x000bbf, EGCB_SpacingMark },
+ {0x000bc0, 0x000bc0, EGCB_Extend },
+ {0x000bc1, 0x000bc2, EGCB_SpacingMark },
+ {0x000bc6, 0x000bc8, EGCB_SpacingMark },
+ {0x000bca, 0x000bcc, EGCB_SpacingMark },
+ {0x000bcd, 0x000bcd, EGCB_Extend },
+ {0x000bd7, 0x000bd7, EGCB_Extend },
+ {0x000c00, 0x000c00, EGCB_Extend },
+ {0x000c01, 0x000c03, EGCB_SpacingMark },
+ {0x000c3e, 0x000c40, EGCB_Extend },
+ {0x000c41, 0x000c44, EGCB_SpacingMark },
+ {0x000c46, 0x000c48, EGCB_Extend },
+ {0x000c4a, 0x000c4d, EGCB_Extend },
+ {0x000c55, 0x000c56, EGCB_Extend },
+ {0x000c62, 0x000c63, EGCB_Extend },
+ {0x000c81, 0x000c81, EGCB_Extend },
+ {0x000c82, 0x000c83, EGCB_SpacingMark },
+ {0x000cbc, 0x000cbc, EGCB_Extend },
+ {0x000cbe, 0x000cbe, EGCB_SpacingMark },
+ {0x000cbf, 0x000cbf, EGCB_Extend },
+ {0x000cc0, 0x000cc1, EGCB_SpacingMark },
+ {0x000cc2, 0x000cc2, EGCB_Extend },
+ {0x000cc3, 0x000cc4, EGCB_SpacingMark },
+ {0x000cc6, 0x000cc6, EGCB_Extend },
+ {0x000cc7, 0x000cc8, EGCB_SpacingMark },
+ {0x000cca, 0x000ccb, EGCB_SpacingMark },
+ {0x000ccc, 0x000ccd, EGCB_Extend },
+ {0x000cd5, 0x000cd6, EGCB_Extend },
+ {0x000ce2, 0x000ce3, EGCB_Extend },
+ {0x000d00, 0x000d01, EGCB_Extend },
+ {0x000d02, 0x000d03, EGCB_SpacingMark },
+ {0x000d3b, 0x000d3c, EGCB_Extend },
+ {0x000d3e, 0x000d3e, EGCB_Extend },
+ {0x000d3f, 0x000d40, EGCB_SpacingMark },
+ {0x000d41, 0x000d44, EGCB_Extend },
+ {0x000d46, 0x000d48, EGCB_SpacingMark },
+ {0x000d4a, 0x000d4c, EGCB_SpacingMark },
+ {0x000d4d, 0x000d4d, EGCB_Extend },
+ {0x000d4e, 0x000d4e, EGCB_Prepend },
+ {0x000d57, 0x000d57, EGCB_Extend },
+ {0x000d62, 0x000d63, EGCB_Extend },
+ {0x000d82, 0x000d83, EGCB_SpacingMark },
+ {0x000dca, 0x000dca, EGCB_Extend },
+ {0x000dcf, 0x000dcf, EGCB_Extend },
+ {0x000dd0, 0x000dd1, EGCB_SpacingMark },
+ {0x000dd2, 0x000dd4, EGCB_Extend },
+ {0x000dd6, 0x000dd6, EGCB_Extend },
+ {0x000dd8, 0x000dde, EGCB_SpacingMark },
+ {0x000ddf, 0x000ddf, EGCB_Extend },
+ {0x000df2, 0x000df3, EGCB_SpacingMark },
+ {0x000e31, 0x000e31, EGCB_Extend },
+ {0x000e33, 0x000e33, EGCB_SpacingMark },
+ {0x000e34, 0x000e3a, EGCB_Extend },
+ {0x000e47, 0x000e4e, EGCB_Extend },
+ {0x000eb1, 0x000eb1, EGCB_Extend },
+ {0x000eb3, 0x000eb3, EGCB_SpacingMark },
+ {0x000eb4, 0x000eb9, EGCB_Extend },
+ {0x000ebb, 0x000ebc, EGCB_Extend },
+ {0x000ec8, 0x000ecd, EGCB_Extend },
+ {0x000f18, 0x000f19, EGCB_Extend },
+ {0x000f35, 0x000f35, EGCB_Extend },
+ {0x000f37, 0x000f37, EGCB_Extend },
+ {0x000f39, 0x000f39, EGCB_Extend },
+ {0x000f3e, 0x000f3f, EGCB_SpacingMark },
+ {0x000f71, 0x000f7e, EGCB_Extend },
+ {0x000f7f, 0x000f7f, EGCB_SpacingMark },
+ {0x000f80, 0x000f84, EGCB_Extend },
+ {0x000f86, 0x000f87, EGCB_Extend },
+ {0x000f8d, 0x000f97, EGCB_Extend },
+ {0x000f99, 0x000fbc, EGCB_Extend },
+ {0x000fc6, 0x000fc6, EGCB_Extend },
+ {0x00102d, 0x001030, EGCB_Extend },
+ {0x001031, 0x001031, EGCB_SpacingMark },
+ {0x001032, 0x001037, EGCB_Extend },
+ {0x001039, 0x00103a, EGCB_Extend },
+ {0x00103b, 0x00103c, EGCB_SpacingMark },
+ {0x00103d, 0x00103e, EGCB_Extend },
+ {0x001056, 0x001057, EGCB_SpacingMark },
+ {0x001058, 0x001059, EGCB_Extend },
+ {0x00105e, 0x001060, EGCB_Extend },
+ {0x001071, 0x001074, EGCB_Extend },
+ {0x001082, 0x001082, EGCB_Extend },
+ {0x001084, 0x001084, EGCB_SpacingMark },
+ {0x001085, 0x001086, EGCB_Extend },
+ {0x00108d, 0x00108d, EGCB_Extend },
+ {0x00109d, 0x00109d, EGCB_Extend },
+ {0x001100, 0x00115f, EGCB_L },
+ {0x001160, 0x0011a7, EGCB_V },
+ {0x0011a8, 0x0011ff, EGCB_T },
+ {0x00135d, 0x00135f, EGCB_Extend },
+ {0x001712, 0x001714, EGCB_Extend },
+ {0x001732, 0x001734, EGCB_Extend },
+ {0x001752, 0x001753, EGCB_Extend },
+ {0x001772, 0x001773, EGCB_Extend },
+ {0x0017b4, 0x0017b5, EGCB_Extend },
+ {0x0017b6, 0x0017b6, EGCB_SpacingMark },
+ {0x0017b7, 0x0017bd, EGCB_Extend },
+ {0x0017be, 0x0017c5, EGCB_SpacingMark },
+ {0x0017c6, 0x0017c6, EGCB_Extend },
+ {0x0017c7, 0x0017c8, EGCB_SpacingMark },
+ {0x0017c9, 0x0017d3, EGCB_Extend },
+ {0x0017dd, 0x0017dd, EGCB_Extend },
+ {0x00180b, 0x00180d, EGCB_Extend },
+ {0x00180e, 0x00180e, EGCB_Control },
+ {0x001885, 0x001886, EGCB_Extend },
+ {0x0018a9, 0x0018a9, EGCB_Extend },
+ {0x001920, 0x001922, EGCB_Extend },
+ {0x001923, 0x001926, EGCB_SpacingMark },
+ {0x001927, 0x001928, EGCB_Extend },
+ {0x001929, 0x00192b, EGCB_SpacingMark },
+ {0x001930, 0x001931, EGCB_SpacingMark },
+ {0x001932, 0x001932, EGCB_Extend },
+ {0x001933, 0x001938, EGCB_SpacingMark },
+ {0x001939, 0x00193b, EGCB_Extend },
+ {0x001a17, 0x001a18, EGCB_Extend },
+ {0x001a19, 0x001a1a, EGCB_SpacingMark },
+ {0x001a1b, 0x001a1b, EGCB_Extend },
+ {0x001a55, 0x001a55, EGCB_SpacingMark },
+ {0x001a56, 0x001a56, EGCB_Extend },
+ {0x001a57, 0x001a57, EGCB_SpacingMark },
+ {0x001a58, 0x001a5e, EGCB_Extend },
+ {0x001a60, 0x001a60, EGCB_Extend },
+ {0x001a62, 0x001a62, EGCB_Extend },
+ {0x001a65, 0x001a6c, EGCB_Extend },
+ {0x001a6d, 0x001a72, EGCB_SpacingMark },
+ {0x001a73, 0x001a7c, EGCB_Extend },
+ {0x001a7f, 0x001a7f, EGCB_Extend },
+ {0x001ab0, 0x001abe, EGCB_Extend },
+ {0x001b00, 0x001b03, EGCB_Extend },
+ {0x001b04, 0x001b04, EGCB_SpacingMark },
+ {0x001b34, 0x001b34, EGCB_Extend },
+ {0x001b35, 0x001b35, EGCB_SpacingMark },
+ {0x001b36, 0x001b3a, EGCB_Extend },
+ {0x001b3b, 0x001b3b, EGCB_SpacingMark },
+ {0x001b3c, 0x001b3c, EGCB_Extend },
+ {0x001b3d, 0x001b41, EGCB_SpacingMark },
+ {0x001b42, 0x001b42, EGCB_Extend },
+ {0x001b43, 0x001b44, EGCB_SpacingMark },
+ {0x001b6b, 0x001b73, EGCB_Extend },
+ {0x001b80, 0x001b81, EGCB_Extend },
+ {0x001b82, 0x001b82, EGCB_SpacingMark },
+ {0x001ba1, 0x001ba1, EGCB_SpacingMark },
+ {0x001ba2, 0x001ba5, EGCB_Extend },
+ {0x001ba6, 0x001ba7, EGCB_SpacingMark },
+ {0x001ba8, 0x001ba9, EGCB_Extend },
+ {0x001baa, 0x001baa, EGCB_SpacingMark },
+ {0x001bab, 0x001bad, EGCB_Extend },
+ {0x001be6, 0x001be6, EGCB_Extend },
+ {0x001be7, 0x001be7, EGCB_SpacingMark },
+ {0x001be8, 0x001be9, EGCB_Extend },
+ {0x001bea, 0x001bec, EGCB_SpacingMark },
+ {0x001bed, 0x001bed, EGCB_Extend },
+ {0x001bee, 0x001bee, EGCB_SpacingMark },
+ {0x001bef, 0x001bf1, EGCB_Extend },
+ {0x001bf2, 0x001bf3, EGCB_SpacingMark },
+ {0x001c24, 0x001c2b, EGCB_SpacingMark },
+ {0x001c2c, 0x001c33, EGCB_Extend },
+ {0x001c34, 0x001c35, EGCB_SpacingMark },
+ {0x001c36, 0x001c37, EGCB_Extend },
+ {0x001cd0, 0x001cd2, EGCB_Extend },
+ {0x001cd4, 0x001ce0, EGCB_Extend },
+ {0x001ce1, 0x001ce1, EGCB_SpacingMark },
+ {0x001ce2, 0x001ce8, EGCB_Extend },
+ {0x001ced, 0x001ced, EGCB_Extend },
+ {0x001cf2, 0x001cf3, EGCB_SpacingMark },
+ {0x001cf4, 0x001cf4, EGCB_Extend },
+ {0x001cf7, 0x001cf7, EGCB_SpacingMark },
+ {0x001cf8, 0x001cf9, EGCB_Extend },
+ {0x001dc0, 0x001df9, EGCB_Extend },
+ {0x001dfb, 0x001dff, EGCB_Extend },
+ {0x00200b, 0x00200b, EGCB_Control },
+ {0x00200c, 0x00200c, EGCB_Extend },
+ {0x00200d, 0x00200d, EGCB_ZWJ },
+ {0x00200e, 0x00200f, EGCB_Control },
+ {0x002028, 0x00202e, EGCB_Control },
+ {0x002060, 0x00206f, EGCB_Control },
+ {0x0020d0, 0x0020f0, EGCB_Extend },
+ {0x00261d, 0x00261d, EGCB_E_Base },
+ {0x002640, 0x002640, EGCB_Glue_After_Zwj },
+ {0x002642, 0x002642, EGCB_Glue_After_Zwj },
+ {0x002695, 0x002696, EGCB_Glue_After_Zwj },
+ {0x0026f9, 0x0026f9, EGCB_E_Base },
+ {0x002708, 0x002708, EGCB_Glue_After_Zwj },
+ {0x00270a, 0x00270d, EGCB_E_Base },
+ {0x002764, 0x002764, EGCB_Glue_After_Zwj },
+ {0x002cef, 0x002cf1, EGCB_Extend },
+ {0x002d7f, 0x002d7f, EGCB_Extend },
+ {0x002de0, 0x002dff, EGCB_Extend },
+ {0x00302a, 0x00302f, EGCB_Extend },
+ {0x003099, 0x00309a, EGCB_Extend },
+ {0x00a66f, 0x00a672, EGCB_Extend },
+ {0x00a674, 0x00a67d, EGCB_Extend },
+ {0x00a69e, 0x00a69f, EGCB_Extend },
+ {0x00a6f0, 0x00a6f1, EGCB_Extend },
+ {0x00a802, 0x00a802, EGCB_Extend },
+ {0x00a806, 0x00a806, EGCB_Extend },
+ {0x00a80b, 0x00a80b, EGCB_Extend },
+ {0x00a823, 0x00a824, EGCB_SpacingMark },
+ {0x00a825, 0x00a826, EGCB_Extend },
+ {0x00a827, 0x00a827, EGCB_SpacingMark },
+ {0x00a880, 0x00a881, EGCB_SpacingMark },
+ {0x00a8b4, 0x00a8c3, EGCB_SpacingMark },
+ {0x00a8c4, 0x00a8c5, EGCB_Extend },
+ {0x00a8e0, 0x00a8f1, EGCB_Extend },
+ {0x00a926, 0x00a92d, EGCB_Extend },
+ {0x00a947, 0x00a951, EGCB_Extend },
+ {0x00a952, 0x00a953, EGCB_SpacingMark },
+ {0x00a960, 0x00a97c, EGCB_L },
+ {0x00a980, 0x00a982, EGCB_Extend },
+ {0x00a983, 0x00a983, EGCB_SpacingMark },
+ {0x00a9b3, 0x00a9b3, EGCB_Extend },
+ {0x00a9b4, 0x00a9b5, EGCB_SpacingMark },
+ {0x00a9b6, 0x00a9b9, EGCB_Extend },
+ {0x00a9ba, 0x00a9bb, EGCB_SpacingMark },
+ {0x00a9bc, 0x00a9bc, EGCB_Extend },
+ {0x00a9bd, 0x00a9c0, EGCB_SpacingMark },
+ {0x00a9e5, 0x00a9e5, EGCB_Extend },
+ {0x00aa29, 0x00aa2e, EGCB_Extend },
+ {0x00aa2f, 0x00aa30, EGCB_SpacingMark },
+ {0x00aa31, 0x00aa32, EGCB_Extend },
+ {0x00aa33, 0x00aa34, EGCB_SpacingMark },
+ {0x00aa35, 0x00aa36, EGCB_Extend },
+ {0x00aa43, 0x00aa43, EGCB_Extend },
+ {0x00aa4c, 0x00aa4c, EGCB_Extend },
+ {0x00aa4d, 0x00aa4d, EGCB_SpacingMark },
+ {0x00aa7c, 0x00aa7c, EGCB_Extend },
+ {0x00aab0, 0x00aab0, EGCB_Extend },
+ {0x00aab2, 0x00aab4, EGCB_Extend },
+ {0x00aab7, 0x00aab8, EGCB_Extend },
+ {0x00aabe, 0x00aabf, EGCB_Extend },
+ {0x00aac1, 0x00aac1, EGCB_Extend },
+ {0x00aaeb, 0x00aaeb, EGCB_SpacingMark },
+ {0x00aaec, 0x00aaed, EGCB_Extend },
+ {0x00aaee, 0x00aaef, EGCB_SpacingMark },
+ {0x00aaf5, 0x00aaf5, EGCB_SpacingMark },
+ {0x00aaf6, 0x00aaf6, EGCB_Extend },
+ {0x00abe3, 0x00abe4, EGCB_SpacingMark },
+ {0x00abe5, 0x00abe5, EGCB_Extend },
+ {0x00abe6, 0x00abe7, EGCB_SpacingMark },
+ {0x00abe8, 0x00abe8, EGCB_Extend },
+ {0x00abe9, 0x00abea, EGCB_SpacingMark },
+ {0x00abec, 0x00abec, EGCB_SpacingMark },
+ {0x00abed, 0x00abed, EGCB_Extend },
+ {0x00ac00, 0x00ac00, EGCB_LV },
+ {0x00ac01, 0x00ac1b, EGCB_LVT },
+ {0x00ac1c, 0x00ac1c, EGCB_LV },
+ {0x00ac1d, 0x00ac37, EGCB_LVT },
+ {0x00ac38, 0x00ac38, EGCB_LV },
+ {0x00ac39, 0x00ac53, EGCB_LVT },
+ {0x00ac54, 0x00ac54, EGCB_LV },
+ {0x00ac55, 0x00ac6f, EGCB_LVT },
+ {0x00ac70, 0x00ac70, EGCB_LV },
+ {0x00ac71, 0x00ac8b, EGCB_LVT },
+ {0x00ac8c, 0x00ac8c, EGCB_LV },
+ {0x00ac8d, 0x00aca7, EGCB_LVT },
+ {0x00aca8, 0x00aca8, EGCB_LV },
+ {0x00aca9, 0x00acc3, EGCB_LVT },
+ {0x00acc4, 0x00acc4, EGCB_LV },
+ {0x00acc5, 0x00acdf, EGCB_LVT },
+ {0x00ace0, 0x00ace0, EGCB_LV },
+ {0x00ace1, 0x00acfb, EGCB_LVT },
+ {0x00acfc, 0x00acfc, EGCB_LV },
+ {0x00acfd, 0x00ad17, EGCB_LVT },
+ {0x00ad18, 0x00ad18, EGCB_LV },
+ {0x00ad19, 0x00ad33, EGCB_LVT },
+ {0x00ad34, 0x00ad34, EGCB_LV },
+ {0x00ad35, 0x00ad4f, EGCB_LVT },
+ {0x00ad50, 0x00ad50, EGCB_LV },
+ {0x00ad51, 0x00ad6b, EGCB_LVT },
+ {0x00ad6c, 0x00ad6c, EGCB_LV },
+ {0x00ad6d, 0x00ad87, EGCB_LVT },
+ {0x00ad88, 0x00ad88, EGCB_LV },
+ {0x00ad89, 0x00ada3, EGCB_LVT },
+ {0x00ada4, 0x00ada4, EGCB_LV },
+ {0x00ada5, 0x00adbf, EGCB_LVT },
+ {0x00adc0, 0x00adc0, EGCB_LV },
+ {0x00adc1, 0x00addb, EGCB_LVT },
+ {0x00addc, 0x00addc, EGCB_LV },
+ {0x00addd, 0x00adf7, EGCB_LVT },
+ {0x00adf8, 0x00adf8, EGCB_LV },
+ {0x00adf9, 0x00ae13, EGCB_LVT },
+ {0x00ae14, 0x00ae14, EGCB_LV },
+ {0x00ae15, 0x00ae2f, EGCB_LVT },
+ {0x00ae30, 0x00ae30, EGCB_LV },
+ {0x00ae31, 0x00ae4b, EGCB_LVT },
+ {0x00ae4c, 0x00ae4c, EGCB_LV },
+ {0x00ae4d, 0x00ae67, EGCB_LVT },
+ {0x00ae68, 0x00ae68, EGCB_LV },
+ {0x00ae69, 0x00ae83, EGCB_LVT },
+ {0x00ae84, 0x00ae84, EGCB_LV },
+ {0x00ae85, 0x00ae9f, EGCB_LVT },
+ {0x00aea0, 0x00aea0, EGCB_LV },
+ {0x00aea1, 0x00aebb, EGCB_LVT },
+ {0x00aebc, 0x00aebc, EGCB_LV },
+ {0x00aebd, 0x00aed7, EGCB_LVT },
+ {0x00aed8, 0x00aed8, EGCB_LV },
+ {0x00aed9, 0x00aef3, EGCB_LVT },
+ {0x00aef4, 0x00aef4, EGCB_LV },
+ {0x00aef5, 0x00af0f, EGCB_LVT },
+ {0x00af10, 0x00af10, EGCB_LV },
+ {0x00af11, 0x00af2b, EGCB_LVT },
+ {0x00af2c, 0x00af2c, EGCB_LV },
+ {0x00af2d, 0x00af47, EGCB_LVT },
+ {0x00af48, 0x00af48, EGCB_LV },
+ {0x00af49, 0x00af63, EGCB_LVT },
+ {0x00af64, 0x00af64, EGCB_LV },
+ {0x00af65, 0x00af7f, EGCB_LVT },
+ {0x00af80, 0x00af80, EGCB_LV },
+ {0x00af81, 0x00af9b, EGCB_LVT },
+ {0x00af9c, 0x00af9c, EGCB_LV },
+ {0x00af9d, 0x00afb7, EGCB_LVT },
+ {0x00afb8, 0x00afb8, EGCB_LV },
+ {0x00afb9, 0x00afd3, EGCB_LVT },
+ {0x00afd4, 0x00afd4, EGCB_LV },
+ {0x00afd5, 0x00afef, EGCB_LVT },
+ {0x00aff0, 0x00aff0, EGCB_LV },
+ {0x00aff1, 0x00b00b, EGCB_LVT },
+ {0x00b00c, 0x00b00c, EGCB_LV },
+ {0x00b00d, 0x00b027, EGCB_LVT },
+ {0x00b028, 0x00b028, EGCB_LV },
+ {0x00b029, 0x00b043, EGCB_LVT },
+ {0x00b044, 0x00b044, EGCB_LV },
+ {0x00b045, 0x00b05f, EGCB_LVT },
+ {0x00b060, 0x00b060, EGCB_LV },
+ {0x00b061, 0x00b07b, EGCB_LVT },
+ {0x00b07c, 0x00b07c, EGCB_LV },
+ {0x00b07d, 0x00b097, EGCB_LVT },
+ {0x00b098, 0x00b098, EGCB_LV },
+ {0x00b099, 0x00b0b3, EGCB_LVT },
+ {0x00b0b4, 0x00b0b4, EGCB_LV },
+ {0x00b0b5, 0x00b0cf, EGCB_LVT },
+ {0x00b0d0, 0x00b0d0, EGCB_LV },
+ {0x00b0d1, 0x00b0eb, EGCB_LVT },
+ {0x00b0ec, 0x00b0ec, EGCB_LV },
+ {0x00b0ed, 0x00b107, EGCB_LVT },
+ {0x00b108, 0x00b108, EGCB_LV },
+ {0x00b109, 0x00b123, EGCB_LVT },
+ {0x00b124, 0x00b124, EGCB_LV },
+ {0x00b125, 0x00b13f, EGCB_LVT },
+ {0x00b140, 0x00b140, EGCB_LV },
+ {0x00b141, 0x00b15b, EGCB_LVT },
+ {0x00b15c, 0x00b15c, EGCB_LV },
+ {0x00b15d, 0x00b177, EGCB_LVT },
+ {0x00b178, 0x00b178, EGCB_LV },
+ {0x00b179, 0x00b193, EGCB_LVT },
+ {0x00b194, 0x00b194, EGCB_LV },
+ {0x00b195, 0x00b1af, EGCB_LVT },
+ {0x00b1b0, 0x00b1b0, EGCB_LV },
+ {0x00b1b1, 0x00b1cb, EGCB_LVT },
+ {0x00b1cc, 0x00b1cc, EGCB_LV },
+ {0x00b1cd, 0x00b1e7, EGCB_LVT },
+ {0x00b1e8, 0x00b1e8, EGCB_LV },
+ {0x00b1e9, 0x00b203, EGCB_LVT },
+ {0x00b204, 0x00b204, EGCB_LV },
+ {0x00b205, 0x00b21f, EGCB_LVT },
+ {0x00b220, 0x00b220, EGCB_LV },
+ {0x00b221, 0x00b23b, EGCB_LVT },
+ {0x00b23c, 0x00b23c, EGCB_LV },
+ {0x00b23d, 0x00b257, EGCB_LVT },
+ {0x00b258, 0x00b258, EGCB_LV },
+ {0x00b259, 0x00b273, EGCB_LVT },
+ {0x00b274, 0x00b274, EGCB_LV },
+ {0x00b275, 0x00b28f, EGCB_LVT },
+ {0x00b290, 0x00b290, EGCB_LV },
+ {0x00b291, 0x00b2ab, EGCB_LVT },
+ {0x00b2ac, 0x00b2ac, EGCB_LV },
+ {0x00b2ad, 0x00b2c7, EGCB_LVT },
+ {0x00b2c8, 0x00b2c8, EGCB_LV },
+ {0x00b2c9, 0x00b2e3, EGCB_LVT },
+ {0x00b2e4, 0x00b2e4, EGCB_LV },
+ {0x00b2e5, 0x00b2ff, EGCB_LVT },
+ {0x00b300, 0x00b300, EGCB_LV },
+ {0x00b301, 0x00b31b, EGCB_LVT },
+ {0x00b31c, 0x00b31c, EGCB_LV },
+ {0x00b31d, 0x00b337, EGCB_LVT },
+ {0x00b338, 0x00b338, EGCB_LV },
+ {0x00b339, 0x00b353, EGCB_LVT },
+ {0x00b354, 0x00b354, EGCB_LV },
+ {0x00b355, 0x00b36f, EGCB_LVT },
+ {0x00b370, 0x00b370, EGCB_LV },
+ {0x00b371, 0x00b38b, EGCB_LVT },
+ {0x00b38c, 0x00b38c, EGCB_LV },
+ {0x00b38d, 0x00b3a7, EGCB_LVT },
+ {0x00b3a8, 0x00b3a8, EGCB_LV },
+ {0x00b3a9, 0x00b3c3, EGCB_LVT },
+ {0x00b3c4, 0x00b3c4, EGCB_LV },
+ {0x00b3c5, 0x00b3df, EGCB_LVT },
+ {0x00b3e0, 0x00b3e0, EGCB_LV },
+ {0x00b3e1, 0x00b3fb, EGCB_LVT },
+ {0x00b3fc, 0x00b3fc, EGCB_LV },
+ {0x00b3fd, 0x00b417, EGCB_LVT },
+ {0x00b418, 0x00b418, EGCB_LV },
+ {0x00b419, 0x00b433, EGCB_LVT },
+ {0x00b434, 0x00b434, EGCB_LV },
+ {0x00b435, 0x00b44f, EGCB_LVT },
+ {0x00b450, 0x00b450, EGCB_LV },
+ {0x00b451, 0x00b46b, EGCB_LVT },
+ {0x00b46c, 0x00b46c, EGCB_LV },
+ {0x00b46d, 0x00b487, EGCB_LVT },
+ {0x00b488, 0x00b488, EGCB_LV },
+ {0x00b489, 0x00b4a3, EGCB_LVT },
+ {0x00b4a4, 0x00b4a4, EGCB_LV },
+ {0x00b4a5, 0x00b4bf, EGCB_LVT },
+ {0x00b4c0, 0x00b4c0, EGCB_LV },
+ {0x00b4c1, 0x00b4db, EGCB_LVT },
+ {0x00b4dc, 0x00b4dc, EGCB_LV },
+ {0x00b4dd, 0x00b4f7, EGCB_LVT },
+ {0x00b4f8, 0x00b4f8, EGCB_LV },
+ {0x00b4f9, 0x00b513, EGCB_LVT },
+ {0x00b514, 0x00b514, EGCB_LV },
+ {0x00b515, 0x00b52f, EGCB_LVT },
+ {0x00b530, 0x00b530, EGCB_LV },
+ {0x00b531, 0x00b54b, EGCB_LVT },
+ {0x00b54c, 0x00b54c, EGCB_LV },
+ {0x00b54d, 0x00b567, EGCB_LVT },
+ {0x00b568, 0x00b568, EGCB_LV },
+ {0x00b569, 0x00b583, EGCB_LVT },
+ {0x00b584, 0x00b584, EGCB_LV },
+ {0x00b585, 0x00b59f, EGCB_LVT },
+ {0x00b5a0, 0x00b5a0, EGCB_LV },
+ {0x00b5a1, 0x00b5bb, EGCB_LVT },
+ {0x00b5bc, 0x00b5bc, EGCB_LV },
+ {0x00b5bd, 0x00b5d7, EGCB_LVT },
+ {0x00b5d8, 0x00b5d8, EGCB_LV },
+ {0x00b5d9, 0x00b5f3, EGCB_LVT },
+ {0x00b5f4, 0x00b5f4, EGCB_LV },
+ {0x00b5f5, 0x00b60f, EGCB_LVT },
+ {0x00b610, 0x00b610, EGCB_LV },
+ {0x00b611, 0x00b62b, EGCB_LVT },
+ {0x00b62c, 0x00b62c, EGCB_LV },
+ {0x00b62d, 0x00b647, EGCB_LVT },
+ {0x00b648, 0x00b648, EGCB_LV },
+ {0x00b649, 0x00b663, EGCB_LVT },
+ {0x00b664, 0x00b664, EGCB_LV },
+ {0x00b665, 0x00b67f, EGCB_LVT },
+ {0x00b680, 0x00b680, EGCB_LV },
+ {0x00b681, 0x00b69b, EGCB_LVT },
+ {0x00b69c, 0x00b69c, EGCB_LV },
+ {0x00b69d, 0x00b6b7, EGCB_LVT },
+ {0x00b6b8, 0x00b6b8, EGCB_LV },
+ {0x00b6b9, 0x00b6d3, EGCB_LVT },
+ {0x00b6d4, 0x00b6d4, EGCB_LV },
+ {0x00b6d5, 0x00b6ef, EGCB_LVT },
+ {0x00b6f0, 0x00b6f0, EGCB_LV },
+ {0x00b6f1, 0x00b70b, EGCB_LVT },
+ {0x00b70c, 0x00b70c, EGCB_LV },
+ {0x00b70d, 0x00b727, EGCB_LVT },
+ {0x00b728, 0x00b728, EGCB_LV },
+ {0x00b729, 0x00b743, EGCB_LVT },
+ {0x00b744, 0x00b744, EGCB_LV },
+ {0x00b745, 0x00b75f, EGCB_LVT },
+ {0x00b760, 0x00b760, EGCB_LV },
+ {0x00b761, 0x00b77b, EGCB_LVT },
+ {0x00b77c, 0x00b77c, EGCB_LV },
+ {0x00b77d, 0x00b797, EGCB_LVT },
+ {0x00b798, 0x00b798, EGCB_LV },
+ {0x00b799, 0x00b7b3, EGCB_LVT },
+ {0x00b7b4, 0x00b7b4, EGCB_LV },
+ {0x00b7b5, 0x00b7cf, EGCB_LVT },
+ {0x00b7d0, 0x00b7d0, EGCB_LV },
+ {0x00b7d1, 0x00b7eb, EGCB_LVT },
+ {0x00b7ec, 0x00b7ec, EGCB_LV },
+ {0x00b7ed, 0x00b807, EGCB_LVT },
+ {0x00b808, 0x00b808, EGCB_LV },
+ {0x00b809, 0x00b823, EGCB_LVT },
+ {0x00b824, 0x00b824, EGCB_LV },
+ {0x00b825, 0x00b83f, EGCB_LVT },
+ {0x00b840, 0x00b840, EGCB_LV },
+ {0x00b841, 0x00b85b, EGCB_LVT },
+ {0x00b85c, 0x00b85c, EGCB_LV },
+ {0x00b85d, 0x00b877, EGCB_LVT },
+ {0x00b878, 0x00b878, EGCB_LV },
+ {0x00b879, 0x00b893, EGCB_LVT },
+ {0x00b894, 0x00b894, EGCB_LV },
+ {0x00b895, 0x00b8af, EGCB_LVT },
+ {0x00b8b0, 0x00b8b0, EGCB_LV },
+ {0x00b8b1, 0x00b8cb, EGCB_LVT },
+ {0x00b8cc, 0x00b8cc, EGCB_LV },
+ {0x00b8cd, 0x00b8e7, EGCB_LVT },
+ {0x00b8e8, 0x00b8e8, EGCB_LV },
+ {0x00b8e9, 0x00b903, EGCB_LVT },
+ {0x00b904, 0x00b904, EGCB_LV },
+ {0x00b905, 0x00b91f, EGCB_LVT },
+ {0x00b920, 0x00b920, EGCB_LV },
+ {0x00b921, 0x00b93b, EGCB_LVT },
+ {0x00b93c, 0x00b93c, EGCB_LV },
+ {0x00b93d, 0x00b957, EGCB_LVT },
+ {0x00b958, 0x00b958, EGCB_LV },
+ {0x00b959, 0x00b973, EGCB_LVT },
+ {0x00b974, 0x00b974, EGCB_LV },
+ {0x00b975, 0x00b98f, EGCB_LVT },
+ {0x00b990, 0x00b990, EGCB_LV },
+ {0x00b991, 0x00b9ab, EGCB_LVT },
+ {0x00b9ac, 0x00b9ac, EGCB_LV },
+ {0x00b9ad, 0x00b9c7, EGCB_LVT },
+ {0x00b9c8, 0x00b9c8, EGCB_LV },
+ {0x00b9c9, 0x00b9e3, EGCB_LVT },
+ {0x00b9e4, 0x00b9e4, EGCB_LV },
+ {0x00b9e5, 0x00b9ff, EGCB_LVT },
+ {0x00ba00, 0x00ba00, EGCB_LV },
+ {0x00ba01, 0x00ba1b, EGCB_LVT },
+ {0x00ba1c, 0x00ba1c, EGCB_LV },
+ {0x00ba1d, 0x00ba37, EGCB_LVT },
+ {0x00ba38, 0x00ba38, EGCB_LV },
+ {0x00ba39, 0x00ba53, EGCB_LVT },
+ {0x00ba54, 0x00ba54, EGCB_LV },
+ {0x00ba55, 0x00ba6f, EGCB_LVT },
+ {0x00ba70, 0x00ba70, EGCB_LV },
+ {0x00ba71, 0x00ba8b, EGCB_LVT },
+ {0x00ba8c, 0x00ba8c, EGCB_LV },
+ {0x00ba8d, 0x00baa7, EGCB_LVT },
+ {0x00baa8, 0x00baa8, EGCB_LV },
+ {0x00baa9, 0x00bac3, EGCB_LVT },
+ {0x00bac4, 0x00bac4, EGCB_LV },
+ {0x00bac5, 0x00badf, EGCB_LVT },
+ {0x00bae0, 0x00bae0, EGCB_LV },
+ {0x00bae1, 0x00bafb, EGCB_LVT },
+ {0x00bafc, 0x00bafc, EGCB_LV },
+ {0x00bafd, 0x00bb17, EGCB_LVT },
+ {0x00bb18, 0x00bb18, EGCB_LV },
+ {0x00bb19, 0x00bb33, EGCB_LVT },
+ {0x00bb34, 0x00bb34, EGCB_LV },
+ {0x00bb35, 0x00bb4f, EGCB_LVT },
+ {0x00bb50, 0x00bb50, EGCB_LV },
+ {0x00bb51, 0x00bb6b, EGCB_LVT },
+ {0x00bb6c, 0x00bb6c, EGCB_LV },
+ {0x00bb6d, 0x00bb87, EGCB_LVT },
+ {0x00bb88, 0x00bb88, EGCB_LV },
+ {0x00bb89, 0x00bba3, EGCB_LVT },
+ {0x00bba4, 0x00bba4, EGCB_LV },
+ {0x00bba5, 0x00bbbf, EGCB_LVT },
+ {0x00bbc0, 0x00bbc0, EGCB_LV },
+ {0x00bbc1, 0x00bbdb, EGCB_LVT },
+ {0x00bbdc, 0x00bbdc, EGCB_LV },
+ {0x00bbdd, 0x00bbf7, EGCB_LVT },
+ {0x00bbf8, 0x00bbf8, EGCB_LV },
+ {0x00bbf9, 0x00bc13, EGCB_LVT },
+ {0x00bc14, 0x00bc14, EGCB_LV },
+ {0x00bc15, 0x00bc2f, EGCB_LVT },
+ {0x00bc30, 0x00bc30, EGCB_LV },
+ {0x00bc31, 0x00bc4b, EGCB_LVT },
+ {0x00bc4c, 0x00bc4c, EGCB_LV },
+ {0x00bc4d, 0x00bc67, EGCB_LVT },
+ {0x00bc68, 0x00bc68, EGCB_LV },
+ {0x00bc69, 0x00bc83, EGCB_LVT },
+ {0x00bc84, 0x00bc84, EGCB_LV },
+ {0x00bc85, 0x00bc9f, EGCB_LVT },
+ {0x00bca0, 0x00bca0, EGCB_LV },
+ {0x00bca1, 0x00bcbb, EGCB_LVT },
+ {0x00bcbc, 0x00bcbc, EGCB_LV },
+ {0x00bcbd, 0x00bcd7, EGCB_LVT },
+ {0x00bcd8, 0x00bcd8, EGCB_LV },
+ {0x00bcd9, 0x00bcf3, EGCB_LVT },
+ {0x00bcf4, 0x00bcf4, EGCB_LV },
+ {0x00bcf5, 0x00bd0f, EGCB_LVT },
+ {0x00bd10, 0x00bd10, EGCB_LV },
+ {0x00bd11, 0x00bd2b, EGCB_LVT },
+ {0x00bd2c, 0x00bd2c, EGCB_LV },
+ {0x00bd2d, 0x00bd47, EGCB_LVT },
+ {0x00bd48, 0x00bd48, EGCB_LV },
+ {0x00bd49, 0x00bd63, EGCB_LVT },
+ {0x00bd64, 0x00bd64, EGCB_LV },
+ {0x00bd65, 0x00bd7f, EGCB_LVT },
+ {0x00bd80, 0x00bd80, EGCB_LV },
+ {0x00bd81, 0x00bd9b, EGCB_LVT },
+ {0x00bd9c, 0x00bd9c, EGCB_LV },
+ {0x00bd9d, 0x00bdb7, EGCB_LVT },
+ {0x00bdb8, 0x00bdb8, EGCB_LV },
+ {0x00bdb9, 0x00bdd3, EGCB_LVT },
+ {0x00bdd4, 0x00bdd4, EGCB_LV },
+ {0x00bdd5, 0x00bdef, EGCB_LVT },
+ {0x00bdf0, 0x00bdf0, EGCB_LV },
+ {0x00bdf1, 0x00be0b, EGCB_LVT },
+ {0x00be0c, 0x00be0c, EGCB_LV },
+ {0x00be0d, 0x00be27, EGCB_LVT },
+ {0x00be28, 0x00be28, EGCB_LV },
+ {0x00be29, 0x00be43, EGCB_LVT },
+ {0x00be44, 0x00be44, EGCB_LV },
+ {0x00be45, 0x00be5f, EGCB_LVT },
+ {0x00be60, 0x00be60, EGCB_LV },
+ {0x00be61, 0x00be7b, EGCB_LVT },
+ {0x00be7c, 0x00be7c, EGCB_LV },
+ {0x00be7d, 0x00be97, EGCB_LVT },
+ {0x00be98, 0x00be98, EGCB_LV },
+ {0x00be99, 0x00beb3, EGCB_LVT },
+ {0x00beb4, 0x00beb4, EGCB_LV },
+ {0x00beb5, 0x00becf, EGCB_LVT },
+ {0x00bed0, 0x00bed0, EGCB_LV },
+ {0x00bed1, 0x00beeb, EGCB_LVT },
+ {0x00beec, 0x00beec, EGCB_LV },
+ {0x00beed, 0x00bf07, EGCB_LVT },
+ {0x00bf08, 0x00bf08, EGCB_LV },
+ {0x00bf09, 0x00bf23, EGCB_LVT },
+ {0x00bf24, 0x00bf24, EGCB_LV },
+ {0x00bf25, 0x00bf3f, EGCB_LVT },
+ {0x00bf40, 0x00bf40, EGCB_LV },
+ {0x00bf41, 0x00bf5b, EGCB_LVT },
+ {0x00bf5c, 0x00bf5c, EGCB_LV },
+ {0x00bf5d, 0x00bf77, EGCB_LVT },
+ {0x00bf78, 0x00bf78, EGCB_LV },
+ {0x00bf79, 0x00bf93, EGCB_LVT },
+ {0x00bf94, 0x00bf94, EGCB_LV },
+ {0x00bf95, 0x00bfaf, EGCB_LVT },
+ {0x00bfb0, 0x00bfb0, EGCB_LV },
+ {0x00bfb1, 0x00bfcb, EGCB_LVT },
+ {0x00bfcc, 0x00bfcc, EGCB_LV },
+ {0x00bfcd, 0x00bfe7, EGCB_LVT },
+ {0x00bfe8, 0x00bfe8, EGCB_LV },
+ {0x00bfe9, 0x00c003, EGCB_LVT },
+ {0x00c004, 0x00c004, EGCB_LV },
+ {0x00c005, 0x00c01f, EGCB_LVT },
+ {0x00c020, 0x00c020, EGCB_LV },
+ {0x00c021, 0x00c03b, EGCB_LVT },
+ {0x00c03c, 0x00c03c, EGCB_LV },
+ {0x00c03d, 0x00c057, EGCB_LVT },
+ {0x00c058, 0x00c058, EGCB_LV },
+ {0x00c059, 0x00c073, EGCB_LVT },
+ {0x00c074, 0x00c074, EGCB_LV },
+ {0x00c075, 0x00c08f, EGCB_LVT },
+ {0x00c090, 0x00c090, EGCB_LV },
+ {0x00c091, 0x00c0ab, EGCB_LVT },
+ {0x00c0ac, 0x00c0ac, EGCB_LV },
+ {0x00c0ad, 0x00c0c7, EGCB_LVT },
+ {0x00c0c8, 0x00c0c8, EGCB_LV },
+ {0x00c0c9, 0x00c0e3, EGCB_LVT },
+ {0x00c0e4, 0x00c0e4, EGCB_LV },
+ {0x00c0e5, 0x00c0ff, EGCB_LVT },
+ {0x00c100, 0x00c100, EGCB_LV },
+ {0x00c101, 0x00c11b, EGCB_LVT },
+ {0x00c11c, 0x00c11c, EGCB_LV },
+ {0x00c11d, 0x00c137, EGCB_LVT },
+ {0x00c138, 0x00c138, EGCB_LV },
+ {0x00c139, 0x00c153, EGCB_LVT },
+ {0x00c154, 0x00c154, EGCB_LV },
+ {0x00c155, 0x00c16f, EGCB_LVT },
+ {0x00c170, 0x00c170, EGCB_LV },
+ {0x00c171, 0x00c18b, EGCB_LVT },
+ {0x00c18c, 0x00c18c, EGCB_LV },
+ {0x00c18d, 0x00c1a7, EGCB_LVT },
+ {0x00c1a8, 0x00c1a8, EGCB_LV },
+ {0x00c1a9, 0x00c1c3, EGCB_LVT },
+ {0x00c1c4, 0x00c1c4, EGCB_LV },
+ {0x00c1c5, 0x00c1df, EGCB_LVT },
+ {0x00c1e0, 0x00c1e0, EGCB_LV },
+ {0x00c1e1, 0x00c1fb, EGCB_LVT },
+ {0x00c1fc, 0x00c1fc, EGCB_LV },
+ {0x00c1fd, 0x00c217, EGCB_LVT },
+ {0x00c218, 0x00c218, EGCB_LV },
+ {0x00c219, 0x00c233, EGCB_LVT },
+ {0x00c234, 0x00c234, EGCB_LV },
+ {0x00c235, 0x00c24f, EGCB_LVT },
+ {0x00c250, 0x00c250, EGCB_LV },
+ {0x00c251, 0x00c26b, EGCB_LVT },
+ {0x00c26c, 0x00c26c, EGCB_LV },
+ {0x00c26d, 0x00c287, EGCB_LVT },
+ {0x00c288, 0x00c288, EGCB_LV },
+ {0x00c289, 0x00c2a3, EGCB_LVT },
+ {0x00c2a4, 0x00c2a4, EGCB_LV },
+ {0x00c2a5, 0x00c2bf, EGCB_LVT },
+ {0x00c2c0, 0x00c2c0, EGCB_LV },
+ {0x00c2c1, 0x00c2db, EGCB_LVT },
+ {0x00c2dc, 0x00c2dc, EGCB_LV },
+ {0x00c2dd, 0x00c2f7, EGCB_LVT },
+ {0x00c2f8, 0x00c2f8, EGCB_LV },
+ {0x00c2f9, 0x00c313, EGCB_LVT },
+ {0x00c314, 0x00c314, EGCB_LV },
+ {0x00c315, 0x00c32f, EGCB_LVT },
+ {0x00c330, 0x00c330, EGCB_LV },
+ {0x00c331, 0x00c34b, EGCB_LVT },
+ {0x00c34c, 0x00c34c, EGCB_LV },
+ {0x00c34d, 0x00c367, EGCB_LVT },
+ {0x00c368, 0x00c368, EGCB_LV },
+ {0x00c369, 0x00c383, EGCB_LVT },
+ {0x00c384, 0x00c384, EGCB_LV },
+ {0x00c385, 0x00c39f, EGCB_LVT },
+ {0x00c3a0, 0x00c3a0, EGCB_LV },
+ {0x00c3a1, 0x00c3bb, EGCB_LVT },
+ {0x00c3bc, 0x00c3bc, EGCB_LV },
+ {0x00c3bd, 0x00c3d7, EGCB_LVT },
+ {0x00c3d8, 0x00c3d8, EGCB_LV },
+ {0x00c3d9, 0x00c3f3, EGCB_LVT },
+ {0x00c3f4, 0x00c3f4, EGCB_LV },
+ {0x00c3f5, 0x00c40f, EGCB_LVT },
+ {0x00c410, 0x00c410, EGCB_LV },
+ {0x00c411, 0x00c42b, EGCB_LVT },
+ {0x00c42c, 0x00c42c, EGCB_LV },
+ {0x00c42d, 0x00c447, EGCB_LVT },
+ {0x00c448, 0x00c448, EGCB_LV },
+ {0x00c449, 0x00c463, EGCB_LVT },
+ {0x00c464, 0x00c464, EGCB_LV },
+ {0x00c465, 0x00c47f, EGCB_LVT },
+ {0x00c480, 0x00c480, EGCB_LV },
+ {0x00c481, 0x00c49b, EGCB_LVT },
+ {0x00c49c, 0x00c49c, EGCB_LV },
+ {0x00c49d, 0x00c4b7, EGCB_LVT },
+ {0x00c4b8, 0x00c4b8, EGCB_LV },
+ {0x00c4b9, 0x00c4d3, EGCB_LVT },
+ {0x00c4d4, 0x00c4d4, EGCB_LV },
+ {0x00c4d5, 0x00c4ef, EGCB_LVT },
+ {0x00c4f0, 0x00c4f0, EGCB_LV },
+ {0x00c4f1, 0x00c50b, EGCB_LVT },
+ {0x00c50c, 0x00c50c, EGCB_LV },
+ {0x00c50d, 0x00c527, EGCB_LVT },
+ {0x00c528, 0x00c528, EGCB_LV },
+ {0x00c529, 0x00c543, EGCB_LVT },
+ {0x00c544, 0x00c544, EGCB_LV },
+ {0x00c545, 0x00c55f, EGCB_LVT },
+ {0x00c560, 0x00c560, EGCB_LV },
+ {0x00c561, 0x00c57b, EGCB_LVT },
+ {0x00c57c, 0x00c57c, EGCB_LV },
+ {0x00c57d, 0x00c597, EGCB_LVT },
+ {0x00c598, 0x00c598, EGCB_LV },
+ {0x00c599, 0x00c5b3, EGCB_LVT },
+ {0x00c5b4, 0x00c5b4, EGCB_LV },
+ {0x00c5b5, 0x00c5cf, EGCB_LVT },
+ {0x00c5d0, 0x00c5d0, EGCB_LV },
+ {0x00c5d1, 0x00c5eb, EGCB_LVT },
+ {0x00c5ec, 0x00c5ec, EGCB_LV },
+ {0x00c5ed, 0x00c607, EGCB_LVT },
+ {0x00c608, 0x00c608, EGCB_LV },
+ {0x00c609, 0x00c623, EGCB_LVT },
+ {0x00c624, 0x00c624, EGCB_LV },
+ {0x00c625, 0x00c63f, EGCB_LVT },
+ {0x00c640, 0x00c640, EGCB_LV },
+ {0x00c641, 0x00c65b, EGCB_LVT },
+ {0x00c65c, 0x00c65c, EGCB_LV },
+ {0x00c65d, 0x00c677, EGCB_LVT },
+ {0x00c678, 0x00c678, EGCB_LV },
+ {0x00c679, 0x00c693, EGCB_LVT },
+ {0x00c694, 0x00c694, EGCB_LV },
+ {0x00c695, 0x00c6af, EGCB_LVT },
+ {0x00c6b0, 0x00c6b0, EGCB_LV },
+ {0x00c6b1, 0x00c6cb, EGCB_LVT },
+ {0x00c6cc, 0x00c6cc, EGCB_LV },
+ {0x00c6cd, 0x00c6e7, EGCB_LVT },
+ {0x00c6e8, 0x00c6e8, EGCB_LV },
+ {0x00c6e9, 0x00c703, EGCB_LVT },
+ {0x00c704, 0x00c704, EGCB_LV },
+ {0x00c705, 0x00c71f, EGCB_LVT },
+ {0x00c720, 0x00c720, EGCB_LV },
+ {0x00c721, 0x00c73b, EGCB_LVT },
+ {0x00c73c, 0x00c73c, EGCB_LV },
+ {0x00c73d, 0x00c757, EGCB_LVT },
+ {0x00c758, 0x00c758, EGCB_LV },
+ {0x00c759, 0x00c773, EGCB_LVT },
+ {0x00c774, 0x00c774, EGCB_LV },
+ {0x00c775, 0x00c78f, EGCB_LVT },
+ {0x00c790, 0x00c790, EGCB_LV },
+ {0x00c791, 0x00c7ab, EGCB_LVT },
+ {0x00c7ac, 0x00c7ac, EGCB_LV },
+ {0x00c7ad, 0x00c7c7, EGCB_LVT },
+ {0x00c7c8, 0x00c7c8, EGCB_LV },
+ {0x00c7c9, 0x00c7e3, EGCB_LVT },
+ {0x00c7e4, 0x00c7e4, EGCB_LV },
+ {0x00c7e5, 0x00c7ff, EGCB_LVT },
+ {0x00c800, 0x00c800, EGCB_LV },
+ {0x00c801, 0x00c81b, EGCB_LVT },
+ {0x00c81c, 0x00c81c, EGCB_LV },
+ {0x00c81d, 0x00c837, EGCB_LVT },
+ {0x00c838, 0x00c838, EGCB_LV },
+ {0x00c839, 0x00c853, EGCB_LVT },
+ {0x00c854, 0x00c854, EGCB_LV },
+ {0x00c855, 0x00c86f, EGCB_LVT },
+ {0x00c870, 0x00c870, EGCB_LV },
+ {0x00c871, 0x00c88b, EGCB_LVT },
+ {0x00c88c, 0x00c88c, EGCB_LV },
+ {0x00c88d, 0x00c8a7, EGCB_LVT },
+ {0x00c8a8, 0x00c8a8, EGCB_LV },
+ {0x00c8a9, 0x00c8c3, EGCB_LVT },
+ {0x00c8c4, 0x00c8c4, EGCB_LV },
+ {0x00c8c5, 0x00c8df, EGCB_LVT },
+ {0x00c8e0, 0x00c8e0, EGCB_LV },
+ {0x00c8e1, 0x00c8fb, EGCB_LVT },
+ {0x00c8fc, 0x00c8fc, EGCB_LV },
+ {0x00c8fd, 0x00c917, EGCB_LVT },
+ {0x00c918, 0x00c918, EGCB_LV },
+ {0x00c919, 0x00c933, EGCB_LVT },
+ {0x00c934, 0x00c934, EGCB_LV },
+ {0x00c935, 0x00c94f, EGCB_LVT },
+ {0x00c950, 0x00c950, EGCB_LV },
+ {0x00c951, 0x00c96b, EGCB_LVT },
+ {0x00c96c, 0x00c96c, EGCB_LV },
+ {0x00c96d, 0x00c987, EGCB_LVT },
+ {0x00c988, 0x00c988, EGCB_LV },
+ {0x00c989, 0x00c9a3, EGCB_LVT },
+ {0x00c9a4, 0x00c9a4, EGCB_LV },
+ {0x00c9a5, 0x00c9bf, EGCB_LVT },
+ {0x00c9c0, 0x00c9c0, EGCB_LV },
+ {0x00c9c1, 0x00c9db, EGCB_LVT },
+ {0x00c9dc, 0x00c9dc, EGCB_LV },
+ {0x00c9dd, 0x00c9f7, EGCB_LVT },
+ {0x00c9f8, 0x00c9f8, EGCB_LV },
+ {0x00c9f9, 0x00ca13, EGCB_LVT },
+ {0x00ca14, 0x00ca14, EGCB_LV },
+ {0x00ca15, 0x00ca2f, EGCB_LVT },
+ {0x00ca30, 0x00ca30, EGCB_LV },
+ {0x00ca31, 0x00ca4b, EGCB_LVT },
+ {0x00ca4c, 0x00ca4c, EGCB_LV },
+ {0x00ca4d, 0x00ca67, EGCB_LVT },
+ {0x00ca68, 0x00ca68, EGCB_LV },
+ {0x00ca69, 0x00ca83, EGCB_LVT },
+ {0x00ca84, 0x00ca84, EGCB_LV },
+ {0x00ca85, 0x00ca9f, EGCB_LVT },
+ {0x00caa0, 0x00caa0, EGCB_LV },
+ {0x00caa1, 0x00cabb, EGCB_LVT },
+ {0x00cabc, 0x00cabc, EGCB_LV },
+ {0x00cabd, 0x00cad7, EGCB_LVT },
+ {0x00cad8, 0x00cad8, EGCB_LV },
+ {0x00cad9, 0x00caf3, EGCB_LVT },
+ {0x00caf4, 0x00caf4, EGCB_LV },
+ {0x00caf5, 0x00cb0f, EGCB_LVT },
+ {0x00cb10, 0x00cb10, EGCB_LV },
+ {0x00cb11, 0x00cb2b, EGCB_LVT },
+ {0x00cb2c, 0x00cb2c, EGCB_LV },
+ {0x00cb2d, 0x00cb47, EGCB_LVT },
+ {0x00cb48, 0x00cb48, EGCB_LV },
+ {0x00cb49, 0x00cb63, EGCB_LVT },
+ {0x00cb64, 0x00cb64, EGCB_LV },
+ {0x00cb65, 0x00cb7f, EGCB_LVT },
+ {0x00cb80, 0x00cb80, EGCB_LV },
+ {0x00cb81, 0x00cb9b, EGCB_LVT },
+ {0x00cb9c, 0x00cb9c, EGCB_LV },
+ {0x00cb9d, 0x00cbb7, EGCB_LVT },
+ {0x00cbb8, 0x00cbb8, EGCB_LV },
+ {0x00cbb9, 0x00cbd3, EGCB_LVT },
+ {0x00cbd4, 0x00cbd4, EGCB_LV },
+ {0x00cbd5, 0x00cbef, EGCB_LVT },
+ {0x00cbf0, 0x00cbf0, EGCB_LV },
+ {0x00cbf1, 0x00cc0b, EGCB_LVT },
+ {0x00cc0c, 0x00cc0c, EGCB_LV },
+ {0x00cc0d, 0x00cc27, EGCB_LVT },
+ {0x00cc28, 0x00cc28, EGCB_LV },
+ {0x00cc29, 0x00cc43, EGCB_LVT },
+ {0x00cc44, 0x00cc44, EGCB_LV },
+ {0x00cc45, 0x00cc5f, EGCB_LVT },
+ {0x00cc60, 0x00cc60, EGCB_LV },
+ {0x00cc61, 0x00cc7b, EGCB_LVT },
+ {0x00cc7c, 0x00cc7c, EGCB_LV },
+ {0x00cc7d, 0x00cc97, EGCB_LVT },
+ {0x00cc98, 0x00cc98, EGCB_LV },
+ {0x00cc99, 0x00ccb3, EGCB_LVT },
+ {0x00ccb4, 0x00ccb4, EGCB_LV },
+ {0x00ccb5, 0x00cccf, EGCB_LVT },
+ {0x00ccd0, 0x00ccd0, EGCB_LV },
+ {0x00ccd1, 0x00cceb, EGCB_LVT },
+ {0x00ccec, 0x00ccec, EGCB_LV },
+ {0x00cced, 0x00cd07, EGCB_LVT },
+ {0x00cd08, 0x00cd08, EGCB_LV },
+ {0x00cd09, 0x00cd23, EGCB_LVT },
+ {0x00cd24, 0x00cd24, EGCB_LV },
+ {0x00cd25, 0x00cd3f, EGCB_LVT },
+ {0x00cd40, 0x00cd40, EGCB_LV },
+ {0x00cd41, 0x00cd5b, EGCB_LVT },
+ {0x00cd5c, 0x00cd5c, EGCB_LV },
+ {0x00cd5d, 0x00cd77, EGCB_LVT },
+ {0x00cd78, 0x00cd78, EGCB_LV },
+ {0x00cd79, 0x00cd93, EGCB_LVT },
+ {0x00cd94, 0x00cd94, EGCB_LV },
+ {0x00cd95, 0x00cdaf, EGCB_LVT },
+ {0x00cdb0, 0x00cdb0, EGCB_LV },
+ {0x00cdb1, 0x00cdcb, EGCB_LVT },
+ {0x00cdcc, 0x00cdcc, EGCB_LV },
+ {0x00cdcd, 0x00cde7, EGCB_LVT },
+ {0x00cde8, 0x00cde8, EGCB_LV },
+ {0x00cde9, 0x00ce03, EGCB_LVT },
+ {0x00ce04, 0x00ce04, EGCB_LV },
+ {0x00ce05, 0x00ce1f, EGCB_LVT },
+ {0x00ce20, 0x00ce20, EGCB_LV },
+ {0x00ce21, 0x00ce3b, EGCB_LVT },
+ {0x00ce3c, 0x00ce3c, EGCB_LV },
+ {0x00ce3d, 0x00ce57, EGCB_LVT },
+ {0x00ce58, 0x00ce58, EGCB_LV },
+ {0x00ce59, 0x00ce73, EGCB_LVT },
+ {0x00ce74, 0x00ce74, EGCB_LV },
+ {0x00ce75, 0x00ce8f, EGCB_LVT },
+ {0x00ce90, 0x00ce90, EGCB_LV },
+ {0x00ce91, 0x00ceab, EGCB_LVT },
+ {0x00ceac, 0x00ceac, EGCB_LV },
+ {0x00cead, 0x00cec7, EGCB_LVT },
+ {0x00cec8, 0x00cec8, EGCB_LV },
+ {0x00cec9, 0x00cee3, EGCB_LVT },
+ {0x00cee4, 0x00cee4, EGCB_LV },
+ {0x00cee5, 0x00ceff, EGCB_LVT },
+ {0x00cf00, 0x00cf00, EGCB_LV },
+ {0x00cf01, 0x00cf1b, EGCB_LVT },
+ {0x00cf1c, 0x00cf1c, EGCB_LV },
+ {0x00cf1d, 0x00cf37, EGCB_LVT },
+ {0x00cf38, 0x00cf38, EGCB_LV },
+ {0x00cf39, 0x00cf53, EGCB_LVT },
+ {0x00cf54, 0x00cf54, EGCB_LV },
+ {0x00cf55, 0x00cf6f, EGCB_LVT },
+ {0x00cf70, 0x00cf70, EGCB_LV },
+ {0x00cf71, 0x00cf8b, EGCB_LVT },
+ {0x00cf8c, 0x00cf8c, EGCB_LV },
+ {0x00cf8d, 0x00cfa7, EGCB_LVT },
+ {0x00cfa8, 0x00cfa8, EGCB_LV },
+ {0x00cfa9, 0x00cfc3, EGCB_LVT },
+ {0x00cfc4, 0x00cfc4, EGCB_LV },
+ {0x00cfc5, 0x00cfdf, EGCB_LVT },
+ {0x00cfe0, 0x00cfe0, EGCB_LV },
+ {0x00cfe1, 0x00cffb, EGCB_LVT },
+ {0x00cffc, 0x00cffc, EGCB_LV },
+ {0x00cffd, 0x00d017, EGCB_LVT },
+ {0x00d018, 0x00d018, EGCB_LV },
+ {0x00d019, 0x00d033, EGCB_LVT },
+ {0x00d034, 0x00d034, EGCB_LV },
+ {0x00d035, 0x00d04f, EGCB_LVT },
+ {0x00d050, 0x00d050, EGCB_LV },
+ {0x00d051, 0x00d06b, EGCB_LVT },
+ {0x00d06c, 0x00d06c, EGCB_LV },
+ {0x00d06d, 0x00d087, EGCB_LVT },
+ {0x00d088, 0x00d088, EGCB_LV },
+ {0x00d089, 0x00d0a3, EGCB_LVT },
+ {0x00d0a4, 0x00d0a4, EGCB_LV },
+ {0x00d0a5, 0x00d0bf, EGCB_LVT },
+ {0x00d0c0, 0x00d0c0, EGCB_LV },
+ {0x00d0c1, 0x00d0db, EGCB_LVT },
+ {0x00d0dc, 0x00d0dc, EGCB_LV },
+ {0x00d0dd, 0x00d0f7, EGCB_LVT },
+ {0x00d0f8, 0x00d0f8, EGCB_LV },
+ {0x00d0f9, 0x00d113, EGCB_LVT },
+ {0x00d114, 0x00d114, EGCB_LV },
+ {0x00d115, 0x00d12f, EGCB_LVT },
+ {0x00d130, 0x00d130, EGCB_LV },
+ {0x00d131, 0x00d14b, EGCB_LVT },
+ {0x00d14c, 0x00d14c, EGCB_LV },
+ {0x00d14d, 0x00d167, EGCB_LVT },
+ {0x00d168, 0x00d168, EGCB_LV },
+ {0x00d169, 0x00d183, EGCB_LVT },
+ {0x00d184, 0x00d184, EGCB_LV },
+ {0x00d185, 0x00d19f, EGCB_LVT },
+ {0x00d1a0, 0x00d1a0, EGCB_LV },
+ {0x00d1a1, 0x00d1bb, EGCB_LVT },
+ {0x00d1bc, 0x00d1bc, EGCB_LV },
+ {0x00d1bd, 0x00d1d7, EGCB_LVT },
+ {0x00d1d8, 0x00d1d8, EGCB_LV },
+ {0x00d1d9, 0x00d1f3, EGCB_LVT },
+ {0x00d1f4, 0x00d1f4, EGCB_LV },
+ {0x00d1f5, 0x00d20f, EGCB_LVT },
+ {0x00d210, 0x00d210, EGCB_LV },
+ {0x00d211, 0x00d22b, EGCB_LVT },
+ {0x00d22c, 0x00d22c, EGCB_LV },
+ {0x00d22d, 0x00d247, EGCB_LVT },
+ {0x00d248, 0x00d248, EGCB_LV },
+ {0x00d249, 0x00d263, EGCB_LVT },
+ {0x00d264, 0x00d264, EGCB_LV },
+ {0x00d265, 0x00d27f, EGCB_LVT },
+ {0x00d280, 0x00d280, EGCB_LV },
+ {0x00d281, 0x00d29b, EGCB_LVT },
+ {0x00d29c, 0x00d29c, EGCB_LV },
+ {0x00d29d, 0x00d2b7, EGCB_LVT },
+ {0x00d2b8, 0x00d2b8, EGCB_LV },
+ {0x00d2b9, 0x00d2d3, EGCB_LVT },
+ {0x00d2d4, 0x00d2d4, EGCB_LV },
+ {0x00d2d5, 0x00d2ef, EGCB_LVT },
+ {0x00d2f0, 0x00d2f0, EGCB_LV },
+ {0x00d2f1, 0x00d30b, EGCB_LVT },
+ {0x00d30c, 0x00d30c, EGCB_LV },
+ {0x00d30d, 0x00d327, EGCB_LVT },
+ {0x00d328, 0x00d328, EGCB_LV },
+ {0x00d329, 0x00d343, EGCB_LVT },
+ {0x00d344, 0x00d344, EGCB_LV },
+ {0x00d345, 0x00d35f, EGCB_LVT },
+ {0x00d360, 0x00d360, EGCB_LV },
+ {0x00d361, 0x00d37b, EGCB_LVT },
+ {0x00d37c, 0x00d37c, EGCB_LV },
+ {0x00d37d, 0x00d397, EGCB_LVT },
+ {0x00d398, 0x00d398, EGCB_LV },
+ {0x00d399, 0x00d3b3, EGCB_LVT },
+ {0x00d3b4, 0x00d3b4, EGCB_LV },
+ {0x00d3b5, 0x00d3cf, EGCB_LVT },
+ {0x00d3d0, 0x00d3d0, EGCB_LV },
+ {0x00d3d1, 0x00d3eb, EGCB_LVT },
+ {0x00d3ec, 0x00d3ec, EGCB_LV },
+ {0x00d3ed, 0x00d407, EGCB_LVT },
+ {0x00d408, 0x00d408, EGCB_LV },
+ {0x00d409, 0x00d423, EGCB_LVT },
+ {0x00d424, 0x00d424, EGCB_LV },
+ {0x00d425, 0x00d43f, EGCB_LVT },
+ {0x00d440, 0x00d440, EGCB_LV },
+ {0x00d441, 0x00d45b, EGCB_LVT },
+ {0x00d45c, 0x00d45c, EGCB_LV },
+ {0x00d45d, 0x00d477, EGCB_LVT },
+ {0x00d478, 0x00d478, EGCB_LV },
+ {0x00d479, 0x00d493, EGCB_LVT },
+ {0x00d494, 0x00d494, EGCB_LV },
+ {0x00d495, 0x00d4af, EGCB_LVT },
+ {0x00d4b0, 0x00d4b0, EGCB_LV },
+ {0x00d4b1, 0x00d4cb, EGCB_LVT },
+ {0x00d4cc, 0x00d4cc, EGCB_LV },
+ {0x00d4cd, 0x00d4e7, EGCB_LVT },
+ {0x00d4e8, 0x00d4e8, EGCB_LV },
+ {0x00d4e9, 0x00d503, EGCB_LVT },
+ {0x00d504, 0x00d504, EGCB_LV },
+ {0x00d505, 0x00d51f, EGCB_LVT },
+ {0x00d520, 0x00d520, EGCB_LV },
+ {0x00d521, 0x00d53b, EGCB_LVT },
+ {0x00d53c, 0x00d53c, EGCB_LV },
+ {0x00d53d, 0x00d557, EGCB_LVT },
+ {0x00d558, 0x00d558, EGCB_LV },
+ {0x00d559, 0x00d573, EGCB_LVT },
+ {0x00d574, 0x00d574, EGCB_LV },
+ {0x00d575, 0x00d58f, EGCB_LVT },
+ {0x00d590, 0x00d590, EGCB_LV },
+ {0x00d591, 0x00d5ab, EGCB_LVT },
+ {0x00d5ac, 0x00d5ac, EGCB_LV },
+ {0x00d5ad, 0x00d5c7, EGCB_LVT },
+ {0x00d5c8, 0x00d5c8, EGCB_LV },
+ {0x00d5c9, 0x00d5e3, EGCB_LVT },
+ {0x00d5e4, 0x00d5e4, EGCB_LV },
+ {0x00d5e5, 0x00d5ff, EGCB_LVT },
+ {0x00d600, 0x00d600, EGCB_LV },
+ {0x00d601, 0x00d61b, EGCB_LVT },
+ {0x00d61c, 0x00d61c, EGCB_LV },
+ {0x00d61d, 0x00d637, EGCB_LVT },
+ {0x00d638, 0x00d638, EGCB_LV },
+ {0x00d639, 0x00d653, EGCB_LVT },
+ {0x00d654, 0x00d654, EGCB_LV },
+ {0x00d655, 0x00d66f, EGCB_LVT },
+ {0x00d670, 0x00d670, EGCB_LV },
+ {0x00d671, 0x00d68b, EGCB_LVT },
+ {0x00d68c, 0x00d68c, EGCB_LV },
+ {0x00d68d, 0x00d6a7, EGCB_LVT },
+ {0x00d6a8, 0x00d6a8, EGCB_LV },
+ {0x00d6a9, 0x00d6c3, EGCB_LVT },
+ {0x00d6c4, 0x00d6c4, EGCB_LV },
+ {0x00d6c5, 0x00d6df, EGCB_LVT },
+ {0x00d6e0, 0x00d6e0, EGCB_LV },
+ {0x00d6e1, 0x00d6fb, EGCB_LVT },
+ {0x00d6fc, 0x00d6fc, EGCB_LV },
+ {0x00d6fd, 0x00d717, EGCB_LVT },
+ {0x00d718, 0x00d718, EGCB_LV },
+ {0x00d719, 0x00d733, EGCB_LVT },
+ {0x00d734, 0x00d734, EGCB_LV },
+ {0x00d735, 0x00d74f, EGCB_LVT },
+ {0x00d750, 0x00d750, EGCB_LV },
+ {0x00d751, 0x00d76b, EGCB_LVT },
+ {0x00d76c, 0x00d76c, EGCB_LV },
+ {0x00d76d, 0x00d787, EGCB_LVT },
+ {0x00d788, 0x00d788, EGCB_LV },
+ {0x00d789, 0x00d7a3, EGCB_LVT },
+ {0x00d7b0, 0x00d7c6, EGCB_V },
+ {0x00d7cb, 0x00d7fb, EGCB_T },
+ {0x00d800, 0x00dfff, EGCB_Control },
+ {0x00fb1e, 0x00fb1e, EGCB_Extend },
+ {0x00fe00, 0x00fe0f, EGCB_Extend },
+ {0x00fe20, 0x00fe2f, EGCB_Extend },
+ {0x00feff, 0x00feff, EGCB_Control },
+ {0x00ff9e, 0x00ff9f, EGCB_Extend },
+ {0x00fff0, 0x00fffb, EGCB_Control },
+ {0x0101fd, 0x0101fd, EGCB_Extend },
+ {0x0102e0, 0x0102e0, EGCB_Extend },
+ {0x010376, 0x01037a, EGCB_Extend },
+ {0x010a01, 0x010a03, EGCB_Extend },
+ {0x010a05, 0x010a06, EGCB_Extend },
+ {0x010a0c, 0x010a0f, EGCB_Extend },
+ {0x010a38, 0x010a3a, EGCB_Extend },
+ {0x010a3f, 0x010a3f, EGCB_Extend },
+ {0x010ae5, 0x010ae6, EGCB_Extend },
+ {0x011000, 0x011000, EGCB_SpacingMark },
+ {0x011001, 0x011001, EGCB_Extend },
+ {0x011002, 0x011002, EGCB_SpacingMark },
+ {0x011038, 0x011046, EGCB_Extend },
+ {0x01107f, 0x011081, EGCB_Extend },
+ {0x011082, 0x011082, EGCB_SpacingMark },
+ {0x0110b0, 0x0110b2, EGCB_SpacingMark },
+ {0x0110b3, 0x0110b6, EGCB_Extend },
+ {0x0110b7, 0x0110b8, EGCB_SpacingMark },
+ {0x0110b9, 0x0110ba, EGCB_Extend },
+ {0x0110bd, 0x0110bd, EGCB_Prepend },
+ {0x011100, 0x011102, EGCB_Extend },
+ {0x011127, 0x01112b, EGCB_Extend },
+ {0x01112c, 0x01112c, EGCB_SpacingMark },
+ {0x01112d, 0x011134, EGCB_Extend },
+ {0x011173, 0x011173, EGCB_Extend },
+ {0x011180, 0x011181, EGCB_Extend },
+ {0x011182, 0x011182, EGCB_SpacingMark },
+ {0x0111b3, 0x0111b5, EGCB_SpacingMark },
+ {0x0111b6, 0x0111be, EGCB_Extend },
+ {0x0111bf, 0x0111c0, EGCB_SpacingMark },
+ {0x0111c2, 0x0111c3, EGCB_Prepend },
+ {0x0111ca, 0x0111cc, EGCB_Extend },
+ {0x01122c, 0x01122e, EGCB_SpacingMark },
+ {0x01122f, 0x011231, EGCB_Extend },
+ {0x011232, 0x011233, EGCB_SpacingMark },
+ {0x011234, 0x011234, EGCB_Extend },
+ {0x011235, 0x011235, EGCB_SpacingMark },
+ {0x011236, 0x011237, EGCB_Extend },
+ {0x01123e, 0x01123e, EGCB_Extend },
+ {0x0112df, 0x0112df, EGCB_Extend },
+ {0x0112e0, 0x0112e2, EGCB_SpacingMark },
+ {0x0112e3, 0x0112ea, EGCB_Extend },
+ {0x011300, 0x011301, EGCB_Extend },
+ {0x011302, 0x011303, EGCB_SpacingMark },
+ {0x01133c, 0x01133c, EGCB_Extend },
+ {0x01133e, 0x01133e, EGCB_Extend },
+ {0x01133f, 0x01133f, EGCB_SpacingMark },
+ {0x011340, 0x011340, EGCB_Extend },
+ {0x011341, 0x011344, EGCB_SpacingMark },
+ {0x011347, 0x011348, EGCB_SpacingMark },
+ {0x01134b, 0x01134d, EGCB_SpacingMark },
+ {0x011357, 0x011357, EGCB_Extend },
+ {0x011362, 0x011363, EGCB_SpacingMark },
+ {0x011366, 0x01136c, EGCB_Extend },
+ {0x011370, 0x011374, EGCB_Extend },
+ {0x011435, 0x011437, EGCB_SpacingMark },
+ {0x011438, 0x01143f, EGCB_Extend },
+ {0x011440, 0x011441, EGCB_SpacingMark },
+ {0x011442, 0x011444, EGCB_Extend },
+ {0x011445, 0x011445, EGCB_SpacingMark },
+ {0x011446, 0x011446, EGCB_Extend },
+ {0x0114b0, 0x0114b0, EGCB_Extend },
+ {0x0114b1, 0x0114b2, EGCB_SpacingMark },
+ {0x0114b3, 0x0114b8, EGCB_Extend },
+ {0x0114b9, 0x0114b9, EGCB_SpacingMark },
+ {0x0114ba, 0x0114ba, EGCB_Extend },
+ {0x0114bb, 0x0114bc, EGCB_SpacingMark },
+ {0x0114bd, 0x0114bd, EGCB_Extend },
+ {0x0114be, 0x0114be, EGCB_SpacingMark },
+ {0x0114bf, 0x0114c0, EGCB_Extend },
+ {0x0114c1, 0x0114c1, EGCB_SpacingMark },
+ {0x0114c2, 0x0114c3, EGCB_Extend },
+ {0x0115af, 0x0115af, EGCB_Extend },
+ {0x0115b0, 0x0115b1, EGCB_SpacingMark },
+ {0x0115b2, 0x0115b5, EGCB_Extend },
+ {0x0115b8, 0x0115bb, EGCB_SpacingMark },
+ {0x0115bc, 0x0115bd, EGCB_Extend },
+ {0x0115be, 0x0115be, EGCB_SpacingMark },
+ {0x0115bf, 0x0115c0, EGCB_Extend },
+ {0x0115dc, 0x0115dd, EGCB_Extend },
+ {0x011630, 0x011632, EGCB_SpacingMark },
+ {0x011633, 0x01163a, EGCB_Extend },
+ {0x01163b, 0x01163c, EGCB_SpacingMark },
+ {0x01163d, 0x01163d, EGCB_Extend },
+ {0x01163e, 0x01163e, EGCB_SpacingMark },
+ {0x01163f, 0x011640, EGCB_Extend },
+ {0x0116ab, 0x0116ab, EGCB_Extend },
+ {0x0116ac, 0x0116ac, EGCB_SpacingMark },
+ {0x0116ad, 0x0116ad, EGCB_Extend },
+ {0x0116ae, 0x0116af, EGCB_SpacingMark },
+ {0x0116b0, 0x0116b5, EGCB_Extend },
+ {0x0116b6, 0x0116b6, EGCB_SpacingMark },
+ {0x0116b7, 0x0116b7, EGCB_Extend },
+ {0x01171d, 0x01171f, EGCB_Extend },
+ {0x011720, 0x011721, EGCB_SpacingMark },
+ {0x011722, 0x011725, EGCB_Extend },
+ {0x011726, 0x011726, EGCB_SpacingMark },
+ {0x011727, 0x01172b, EGCB_Extend },
+ {0x011a01, 0x011a06, EGCB_Extend },
+ {0x011a07, 0x011a08, EGCB_SpacingMark },
+ {0x011a09, 0x011a0a, EGCB_Extend },
+ {0x011a33, 0x011a38, EGCB_Extend },
+ {0x011a39, 0x011a39, EGCB_SpacingMark },
+ {0x011a3a, 0x011a3a, EGCB_Prepend },
+ {0x011a3b, 0x011a3e, EGCB_Extend },
+ {0x011a47, 0x011a47, EGCB_Extend },
+ {0x011a51, 0x011a56, EGCB_Extend },
+ {0x011a57, 0x011a58, EGCB_SpacingMark },
+ {0x011a59, 0x011a5b, EGCB_Extend },
+ {0x011a86, 0x011a89, EGCB_Prepend },
+ {0x011a8a, 0x011a96, EGCB_Extend },
+ {0x011a97, 0x011a97, EGCB_SpacingMark },
+ {0x011a98, 0x011a99, EGCB_Extend },
+ {0x011c2f, 0x011c2f, EGCB_SpacingMark },
+ {0x011c30, 0x011c36, EGCB_Extend },
+ {0x011c38, 0x011c3d, EGCB_Extend },
+ {0x011c3e, 0x011c3e, EGCB_SpacingMark },
+ {0x011c3f, 0x011c3f, EGCB_Extend },
+ {0x011c92, 0x011ca7, EGCB_Extend },
+ {0x011ca9, 0x011ca9, EGCB_SpacingMark },
+ {0x011caa, 0x011cb0, EGCB_Extend },
+ {0x011cb1, 0x011cb1, EGCB_SpacingMark },
+ {0x011cb2, 0x011cb3, EGCB_Extend },
+ {0x011cb4, 0x011cb4, EGCB_SpacingMark },
+ {0x011cb5, 0x011cb6, EGCB_Extend },
+ {0x011d31, 0x011d36, EGCB_Extend },
+ {0x011d3a, 0x011d3a, EGCB_Extend },
+ {0x011d3c, 0x011d3d, EGCB_Extend },
+ {0x011d3f, 0x011d45, EGCB_Extend },
+ {0x011d46, 0x011d46, EGCB_Prepend },
+ {0x011d47, 0x011d47, EGCB_Extend },
+ {0x016af0, 0x016af4, EGCB_Extend },
+ {0x016b30, 0x016b36, EGCB_Extend },
+ {0x016f51, 0x016f7e, EGCB_SpacingMark },
+ {0x016f8f, 0x016f92, EGCB_Extend },
+ {0x01bc9d, 0x01bc9e, EGCB_Extend },
+ {0x01bca0, 0x01bca3, EGCB_Control },
+ {0x01d165, 0x01d165, EGCB_Extend },
+ {0x01d166, 0x01d166, EGCB_SpacingMark },
+ {0x01d167, 0x01d169, EGCB_Extend },
+ {0x01d16d, 0x01d16d, EGCB_SpacingMark },
+ {0x01d16e, 0x01d172, EGCB_Extend },
+ {0x01d173, 0x01d17a, EGCB_Control },
+ {0x01d17b, 0x01d182, EGCB_Extend },
+ {0x01d185, 0x01d18b, EGCB_Extend },
+ {0x01d1aa, 0x01d1ad, EGCB_Extend },
+ {0x01d242, 0x01d244, EGCB_Extend },
+ {0x01da00, 0x01da36, EGCB_Extend },
+ {0x01da3b, 0x01da6c, EGCB_Extend },
+ {0x01da75, 0x01da75, EGCB_Extend },
+ {0x01da84, 0x01da84, EGCB_Extend },
+ {0x01da9b, 0x01da9f, EGCB_Extend },
+ {0x01daa1, 0x01daaf, EGCB_Extend },
+ {0x01e000, 0x01e006, EGCB_Extend },
+ {0x01e008, 0x01e018, EGCB_Extend },
+ {0x01e01b, 0x01e021, EGCB_Extend },
+ {0x01e023, 0x01e024, EGCB_Extend },
+ {0x01e026, 0x01e02a, EGCB_Extend },
+ {0x01e8d0, 0x01e8d6, EGCB_Extend },
+ {0x01e944, 0x01e94a, EGCB_Extend },
+ {0x01f1e6, 0x01f1ff, EGCB_Regional_Indicator },
+ {0x01f308, 0x01f308, EGCB_Glue_After_Zwj },
+ {0x01f33e, 0x01f33e, EGCB_Glue_After_Zwj },
+ {0x01f373, 0x01f373, EGCB_Glue_After_Zwj },
+ {0x01f385, 0x01f385, EGCB_E_Base },
+ {0x01f393, 0x01f393, EGCB_Glue_After_Zwj },
+ {0x01f3a4, 0x01f3a4, EGCB_Glue_After_Zwj },
+ {0x01f3a8, 0x01f3a8, EGCB_Glue_After_Zwj },
+ {0x01f3c2, 0x01f3c4, EGCB_E_Base },
+ {0x01f3c7, 0x01f3c7, EGCB_E_Base },
+ {0x01f3ca, 0x01f3cc, EGCB_E_Base },
+ {0x01f3eb, 0x01f3eb, EGCB_Glue_After_Zwj },
+ {0x01f3ed, 0x01f3ed, EGCB_Glue_After_Zwj },
+ {0x01f3fb, 0x01f3ff, EGCB_E_Modifier },
+ {0x01f442, 0x01f443, EGCB_E_Base },
+ {0x01f446, 0x01f450, EGCB_E_Base },
+ {0x01f466, 0x01f469, EGCB_E_Base_GAZ },
+ {0x01f46e, 0x01f46e, EGCB_E_Base },
+ {0x01f470, 0x01f478, EGCB_E_Base },
+ {0x01f47c, 0x01f47c, EGCB_E_Base },
+ {0x01f481, 0x01f483, EGCB_E_Base },
+ {0x01f485, 0x01f487, EGCB_E_Base },
+ {0x01f48b, 0x01f48b, EGCB_Glue_After_Zwj },
+ {0x01f4aa, 0x01f4aa, EGCB_E_Base },
+ {0x01f4bb, 0x01f4bc, EGCB_Glue_After_Zwj },
+ {0x01f527, 0x01f527, EGCB_Glue_After_Zwj },
+ {0x01f52c, 0x01f52c, EGCB_Glue_After_Zwj },
+ {0x01f574, 0x01f575, EGCB_E_Base },
+ {0x01f57a, 0x01f57a, EGCB_E_Base },
+ {0x01f590, 0x01f590, EGCB_E_Base },
+ {0x01f595, 0x01f596, EGCB_E_Base },
+ {0x01f5e8, 0x01f5e8, EGCB_Glue_After_Zwj },
+ {0x01f645, 0x01f647, EGCB_E_Base },
+ {0x01f64b, 0x01f64f, EGCB_E_Base },
+ {0x01f680, 0x01f680, EGCB_Glue_After_Zwj },
+ {0x01f692, 0x01f692, EGCB_Glue_After_Zwj },
+ {0x01f6a3, 0x01f6a3, EGCB_E_Base },
+ {0x01f6b4, 0x01f6b6, EGCB_E_Base },
+ {0x01f6c0, 0x01f6c0, EGCB_E_Base },
+ {0x01f6cc, 0x01f6cc, EGCB_E_Base },
+ {0x01f918, 0x01f91c, EGCB_E_Base },
+ {0x01f91e, 0x01f91f, EGCB_E_Base },
+ {0x01f926, 0x01f926, EGCB_E_Base },
+ {0x01f930, 0x01f939, EGCB_E_Base },
+ {0x01f93d, 0x01f93e, EGCB_E_Base },
+ {0x01f9d1, 0x01f9dd, EGCB_E_Base },
+ {0x0e0000, 0x0e001f, EGCB_Control },
+ {0x0e0020, 0x0e007f, EGCB_Extend },
+ {0x0e0080, 0x0e00ff, EGCB_Control },
+ {0x0e0100, 0x0e01ef, EGCB_Extend },
+ {0x0e01f0, 0x0e0fff, EGCB_Control }
+};
diff --git a/src/unicode_property_data.c b/src/unicode_property_data.c
index 4ca438f..1807de4 100644
--- a/src/unicode_property_data.c
+++ b/src/unicode_property_data.c
@@ -1,5 +1,5 @@
-/* ANSI-C code produced by gperf version 3.0.3 */
-/* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data.gperf  */
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data.gperf  */
 /* Computed positions: -k'1-3,5-6,12,16,$' */
 
 #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -4766,12 +4766,102 @@ CR_ASCII[] = { 1,
 }; /* END of CR_ASCII */
 
 
+/* PROPERTY: 'ASCII_Hex_Digit': Binary Property */
+#define CR_ASCII_Hex_Digit CR_XDigit
+
+/* PROPERTY: 'Ahom': Script */
+static const OnigCodePoint
+CR_Ahom[] = { 3,
+0x11700, 0x11719,
+0x1171d, 0x1172b,
+0x11730, 0x1173f,
+}; /* END of CR_Ahom */
+
+/* PROPERTY: 'Alphabetic': Derived Property */
+#define CR_Alphabetic CR_Alpha
+
+/* PROPERTY: 'Anatolian_Hieroglyphs': Script */
+static const OnigCodePoint
+CR_Anatolian_Hieroglyphs[] = { 1,
+0x14400, 0x14646,
+}; /* END of CR_Anatolian_Hieroglyphs */
+
 /* PROPERTY: 'Any': - */
 static const OnigCodePoint
 CR_Any[] = { 1,
 0x0000, 0x10ffff,
 }; /* END of CR_Any */
 
+/* PROPERTY: 'Arabic': Script */
+static const OnigCodePoint
+CR_Arabic[] = { 54,
+0x0600, 0x0604,
+0x0606, 0x060b,
+0x060d, 0x061a,
+0x061e, 0x061e,
+0x0620, 0x063f,
+0x0641, 0x064a,
+0x0656, 0x066f,
+0x0671, 0x06dc,
+0x06de, 0x06ff,
+0x0750, 0x077f,
+0x08a0, 0x08b4,
+0x08e3, 0x08ff,
+0xfb50, 0xfbc1,
+0xfbd3, 0xfd3d,
+0xfd50, 0xfd8f,
+0xfd92, 0xfdc7,
+0xfdf0, 0xfdfd,
+0xfe70, 0xfe74,
+0xfe76, 0xfefc,
+0x10e60, 0x10e7e,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+0x1eef0, 0x1eef1,
+}; /* END of CR_Arabic */
+
+/* PROPERTY: 'Armenian': Script */
+static const OnigCodePoint
+CR_Armenian[] = { 6,
+0x0531, 0x0556,
+0x0559, 0x055f,
+0x0561, 0x0587,
+0x058a, 0x058a,
+0x058d, 0x058f,
+0xfb13, 0xfb17,
+}; /* END of CR_Armenian */
+
 /* PROPERTY: 'Assigned': - */
 static const OnigCodePoint
 CR_Assigned[] = { 613,
@@ -5390,6 +5480,104 @@ CR_Assigned[] = { 613,
 0x100000, 0x10fffd,
 }; /* END of CR_Assigned */
 
+/* PROPERTY: 'Avestan': Script */
+static const OnigCodePoint
+CR_Avestan[] = { 2,
+0x10b00, 0x10b35,
+0x10b39, 0x10b3f,
+}; /* END of CR_Avestan */
+
+/* PROPERTY: 'Balinese': Script */
+static const OnigCodePoint
+CR_Balinese[] = { 2,
+0x1b00, 0x1b4b,
+0x1b50, 0x1b7c,
+}; /* END of CR_Balinese */
+
+/* PROPERTY: 'Bamum': Script */
+static const OnigCodePoint
+CR_Bamum[] = { 2,
+0xa6a0, 0xa6f7,
+0x16800, 0x16a38,
+}; /* END of CR_Bamum */
+
+/* PROPERTY: 'Bassa_Vah': Script */
+static const OnigCodePoint
+CR_Bassa_Vah[] = { 2,
+0x16ad0, 0x16aed,
+0x16af0, 0x16af5,
+}; /* END of CR_Bassa_Vah */
+
+/* PROPERTY: 'Batak': Script */
+static const OnigCodePoint
+CR_Batak[] = { 2,
+0x1bc0, 0x1bf3,
+0x1bfc, 0x1bff,
+}; /* END of CR_Batak */
+
+/* PROPERTY: 'Bengali': Script */
+static const OnigCodePoint
+CR_Bengali[] = { 14,
+0x0980, 0x0983,
+0x0985, 0x098c,
+0x098f, 0x0990,
+0x0993, 0x09a8,
+0x09aa, 0x09b0,
+0x09b2, 0x09b2,
+0x09b6, 0x09b9,
+0x09bc, 0x09c4,
+0x09c7, 0x09c8,
+0x09cb, 0x09ce,
+0x09d7, 0x09d7,
+0x09dc, 0x09dd,
+0x09df, 0x09e3,
+0x09e6, 0x09fb,
+}; /* END of CR_Bengali */
+
+/* PROPERTY: 'Bidi_Control': Binary Property */
+static const OnigCodePoint
+CR_Bidi_Control[] = { 4,
+0x061c, 0x061c,
+0x200e, 0x200f,
+0x202a, 0x202e,
+0x2066, 0x2069,
+}; /* END of CR_Bidi_Control */
+
+/* PROPERTY: 'Bopomofo': Script */
+static const OnigCodePoint
+CR_Bopomofo[] = { 3,
+0x02ea, 0x02eb,
+0x3105, 0x312d,
+0x31a0, 0x31ba,
+}; /* END of CR_Bopomofo */
+
+/* PROPERTY: 'Brahmi': Script */
+static const OnigCodePoint
+CR_Brahmi[] = { 3,
+0x11000, 0x1104d,
+0x11052, 0x1106f,
+0x1107f, 0x1107f,
+}; /* END of CR_Brahmi */
+
+/* PROPERTY: 'Braille': Script */
+static const OnigCodePoint
+CR_Braille[] = { 1,
+0x2800, 0x28ff,
+}; /* END of CR_Braille */
+
+/* PROPERTY: 'Buginese': Script */
+static const OnigCodePoint
+CR_Buginese[] = { 2,
+0x1a00, 0x1a1b,
+0x1a1e, 0x1a1f,
+}; /* END of CR_Buginese */
+
+/* PROPERTY: 'Buhid': Script */
+static const OnigCodePoint
+CR_Buhid[] = { 1,
+0x1740, 0x1753,
+}; /* END of CR_Buhid */
+
 /* PROPERTY: 'C': Major Category */
 static const OnigCodePoint
 CR_C[] = { 616,
@@ -6011,7403 +6199,1283 @@ CR_C[] = { 616,
 0xe01f0, 0x10ffff,
 }; /* END of CR_C */
 
-/* PROPERTY: 'Cc': General Category */
-#define CR_Cc CR_Cntrl
+/* PROPERTY: 'Canadian_Aboriginal': Script */
+static const OnigCodePoint
+CR_Canadian_Aboriginal[] = { 2,
+0x1400, 0x167f,
+0x18b0, 0x18f5,
+}; /* END of CR_Canadian_Aboriginal */
 
-/* PROPERTY: 'Cf': General Category */
+/* PROPERTY: 'Carian': Script */
 static const OnigCodePoint
-CR_Cf[] = { 17,
+CR_Carian[] = { 1,
+0x102a0, 0x102d0,
+}; /* END of CR_Carian */
+
+/* PROPERTY: 'Case_Ignorable': Derived Property */
+static const OnigCodePoint
+CR_Case_Ignorable[] = { 346,
+0x0027, 0x0027,
+0x002e, 0x002e,
+0x003a, 0x003a,
+0x005e, 0x005e,
+0x0060, 0x0060,
+0x00a8, 0x00a8,
 0x00ad, 0x00ad,
+0x00af, 0x00af,
+0x00b4, 0x00b4,
+0x00b7, 0x00b8,
+0x02b0, 0x036f,
+0x0374, 0x0375,
+0x037a, 0x037a,
+0x0384, 0x0385,
+0x0387, 0x0387,
+0x0483, 0x0489,
+0x0559, 0x0559,
+0x0591, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c5,
+0x05c7, 0x05c7,
+0x05f4, 0x05f4,
 0x0600, 0x0605,
+0x0610, 0x061a,
 0x061c, 0x061c,
-0x06dd, 0x06dd,
+0x0640, 0x0640,
+0x064b, 0x065f,
+0x0670, 0x0670,
+0x06d6, 0x06dd,
+0x06df, 0x06e8,
+0x06ea, 0x06ed,
 0x070f, 0x070f,
-0x180e, 0x180e,
-0x200b, 0x200f,
-0x202a, 0x202e,
-0x2060, 0x2064,
-0x2066, 0x206f,
-0xfeff, 0xfeff,
-0xfff9, 0xfffb,
-0x110bd, 0x110bd,
-0x1bca0, 0x1bca3,
-0x1d173, 0x1d17a,
-0xe0001, 0xe0001,
-0xe0020, 0xe007f,
-}; /* END of CR_Cf */
-
-/* PROPERTY: 'Cn': General Category */
-static const OnigCodePoint
-CR_Cn[] = { 613,
-0x0378, 0x0379,
-0x0380, 0x0383,
-0x038b, 0x038b,
-0x038d, 0x038d,
-0x03a2, 0x03a2,
-0x0530, 0x0530,
-0x0557, 0x0558,
-0x0560, 0x0560,
-0x0588, 0x0588,
-0x058b, 0x058c,
-0x0590, 0x0590,
-0x05c8, 0x05cf,
-0x05eb, 0x05ef,
-0x05f5, 0x05ff,
-0x061d, 0x061d,
-0x070e, 0x070e,
-0x074b, 0x074c,
-0x07b2, 0x07bf,
-0x07fb, 0x07ff,
-0x082e, 0x082f,
-0x083f, 0x083f,
-0x085c, 0x085d,
-0x085f, 0x089f,
-0x08b5, 0x08e2,
-0x0984, 0x0984,
-0x098d, 0x098e,
-0x0991, 0x0992,
-0x09a9, 0x09a9,
-0x09b1, 0x09b1,
-0x09b3, 0x09b5,
-0x09ba, 0x09bb,
-0x09c5, 0x09c6,
-0x09c9, 0x09ca,
-0x09cf, 0x09d6,
-0x09d8, 0x09db,
-0x09de, 0x09de,
-0x09e4, 0x09e5,
-0x09fc, 0x0a00,
-0x0a04, 0x0a04,
-0x0a0b, 0x0a0e,
-0x0a11, 0x0a12,
-0x0a29, 0x0a29,
-0x0a31, 0x0a31,
-0x0a34, 0x0a34,
-0x0a37, 0x0a37,
-0x0a3a, 0x0a3b,
-0x0a3d, 0x0a3d,
-0x0a43, 0x0a46,
-0x0a49, 0x0a4a,
-0x0a4e, 0x0a50,
-0x0a52, 0x0a58,
-0x0a5d, 0x0a5d,
-0x0a5f, 0x0a65,
-0x0a76, 0x0a80,
-0x0a84, 0x0a84,
-0x0a8e, 0x0a8e,
-0x0a92, 0x0a92,
-0x0aa9, 0x0aa9,
-0x0ab1, 0x0ab1,
-0x0ab4, 0x0ab4,
-0x0aba, 0x0abb,
-0x0ac6, 0x0ac6,
-0x0aca, 0x0aca,
-0x0ace, 0x0acf,
-0x0ad1, 0x0adf,
-0x0ae4, 0x0ae5,
-0x0af2, 0x0af8,
-0x0afa, 0x0b00,
-0x0b04, 0x0b04,
-0x0b0d, 0x0b0e,
-0x0b11, 0x0b12,
-0x0b29, 0x0b29,
-0x0b31, 0x0b31,
-0x0b34, 0x0b34,
-0x0b3a, 0x0b3b,
-0x0b45, 0x0b46,
-0x0b49, 0x0b4a,
-0x0b4e, 0x0b55,
-0x0b58, 0x0b5b,
-0x0b5e, 0x0b5e,
-0x0b64, 0x0b65,
-0x0b78, 0x0b81,
-0x0b84, 0x0b84,
-0x0b8b, 0x0b8d,
-0x0b91, 0x0b91,
-0x0b96, 0x0b98,
-0x0b9b, 0x0b9b,
-0x0b9d, 0x0b9d,
-0x0ba0, 0x0ba2,
-0x0ba5, 0x0ba7,
-0x0bab, 0x0bad,
-0x0bba, 0x0bbd,
-0x0bc3, 0x0bc5,
-0x0bc9, 0x0bc9,
-0x0bce, 0x0bcf,
-0x0bd1, 0x0bd6,
-0x0bd8, 0x0be5,
-0x0bfb, 0x0bff,
-0x0c04, 0x0c04,
-0x0c0d, 0x0c0d,
-0x0c11, 0x0c11,
-0x0c29, 0x0c29,
-0x0c3a, 0x0c3c,
-0x0c45, 0x0c45,
-0x0c49, 0x0c49,
-0x0c4e, 0x0c54,
-0x0c57, 0x0c57,
-0x0c5b, 0x0c5f,
-0x0c64, 0x0c65,
-0x0c70, 0x0c77,
-0x0c80, 0x0c80,
-0x0c84, 0x0c84,
-0x0c8d, 0x0c8d,
-0x0c91, 0x0c91,
-0x0ca9, 0x0ca9,
-0x0cb4, 0x0cb4,
-0x0cba, 0x0cbb,
-0x0cc5, 0x0cc5,
-0x0cc9, 0x0cc9,
-0x0cce, 0x0cd4,
-0x0cd7, 0x0cdd,
-0x0cdf, 0x0cdf,
-0x0ce4, 0x0ce5,
-0x0cf0, 0x0cf0,
-0x0cf3, 0x0d00,
-0x0d04, 0x0d04,
-0x0d0d, 0x0d0d,
-0x0d11, 0x0d11,
-0x0d3b, 0x0d3c,
-0x0d45, 0x0d45,
-0x0d49, 0x0d49,
-0x0d4f, 0x0d56,
-0x0d58, 0x0d5e,
-0x0d64, 0x0d65,
-0x0d76, 0x0d78,
-0x0d80, 0x0d81,
-0x0d84, 0x0d84,
-0x0d97, 0x0d99,
-0x0db2, 0x0db2,
-0x0dbc, 0x0dbc,
-0x0dbe, 0x0dbf,
-0x0dc7, 0x0dc9,
-0x0dcb, 0x0dce,
-0x0dd5, 0x0dd5,
-0x0dd7, 0x0dd7,
-0x0de0, 0x0de5,
-0x0df0, 0x0df1,
-0x0df5, 0x0e00,
-0x0e3b, 0x0e3e,
-0x0e5c, 0x0e80,
-0x0e83, 0x0e83,
-0x0e85, 0x0e86,
-0x0e89, 0x0e89,
-0x0e8b, 0x0e8c,
-0x0e8e, 0x0e93,
-0x0e98, 0x0e98,
-0x0ea0, 0x0ea0,
-0x0ea4, 0x0ea4,
-0x0ea6, 0x0ea6,
-0x0ea8, 0x0ea9,
-0x0eac, 0x0eac,
-0x0eba, 0x0eba,
-0x0ebe, 0x0ebf,
-0x0ec5, 0x0ec5,
-0x0ec7, 0x0ec7,
-0x0ece, 0x0ecf,
-0x0eda, 0x0edb,
-0x0ee0, 0x0eff,
-0x0f48, 0x0f48,
-0x0f6d, 0x0f70,
-0x0f98, 0x0f98,
-0x0fbd, 0x0fbd,
-0x0fcd, 0x0fcd,
-0x0fdb, 0x0fff,
-0x10c6, 0x10c6,
-0x10c8, 0x10cc,
-0x10ce, 0x10cf,
-0x1249, 0x1249,
-0x124e, 0x124f,
-0x1257, 0x1257,
-0x1259, 0x1259,
-0x125e, 0x125f,
-0x1289, 0x1289,
-0x128e, 0x128f,
-0x12b1, 0x12b1,
-0x12b6, 0x12b7,
-0x12bf, 0x12bf,
-0x12c1, 0x12c1,
-0x12c6, 0x12c7,
-0x12d7, 0x12d7,
-0x1311, 0x1311,
-0x1316, 0x1317,
-0x135b, 0x135c,
-0x137d, 0x137f,
-0x139a, 0x139f,
-0x13f6, 0x13f7,
-0x13fe, 0x13ff,
-0x169d, 0x169f,
-0x16f9, 0x16ff,
-0x170d, 0x170d,
-0x1715, 0x171f,
-0x1737, 0x173f,
-0x1754, 0x175f,
-0x176d, 0x176d,
-0x1771, 0x1771,
-0x1774, 0x177f,
-0x17de, 0x17df,
-0x17ea, 0x17ef,
-0x17fa, 0x17ff,
-0x180f, 0x180f,
-0x181a, 0x181f,
-0x1878, 0x187f,
-0x18ab, 0x18af,
-0x18f6, 0x18ff,
-0x191f, 0x191f,
-0x192c, 0x192f,
-0x193c, 0x193f,
-0x1941, 0x1943,
-0x196e, 0x196f,
-0x1975, 0x197f,
-0x19ac, 0x19af,
-0x19ca, 0x19cf,
-0x19db, 0x19dd,
-0x1a1c, 0x1a1d,
-0x1a5f, 0x1a5f,
-0x1a7d, 0x1a7e,
-0x1a8a, 0x1a8f,
-0x1a9a, 0x1a9f,
-0x1aae, 0x1aaf,
-0x1abf, 0x1aff,
-0x1b4c, 0x1b4f,
-0x1b7d, 0x1b7f,
-0x1bf4, 0x1bfb,
-0x1c38, 0x1c3a,
-0x1c4a, 0x1c4c,
-0x1c80, 0x1cbf,
-0x1cc8, 0x1ccf,
-0x1cf7, 0x1cf7,
-0x1cfa, 0x1cff,
-0x1df6, 0x1dfb,
-0x1f16, 0x1f17,
-0x1f1e, 0x1f1f,
-0x1f46, 0x1f47,
-0x1f4e, 0x1f4f,
-0x1f58, 0x1f58,
-0x1f5a, 0x1f5a,
-0x1f5c, 0x1f5c,
-0x1f5e, 0x1f5e,
-0x1f7e, 0x1f7f,
-0x1fb5, 0x1fb5,
-0x1fc5, 0x1fc5,
-0x1fd4, 0x1fd5,
-0x1fdc, 0x1fdc,
-0x1ff0, 0x1ff1,
-0x1ff5, 0x1ff5,
-0x1fff, 0x1fff,
-0x2065, 0x2065,
-0x2072, 0x2073,
-0x208f, 0x208f,
-0x209d, 0x209f,
-0x20bf, 0x20cf,
-0x20f1, 0x20ff,
-0x218c, 0x218f,
-0x23fb, 0x23ff,
-0x2427, 0x243f,
-0x244b, 0x245f,
-0x2b74, 0x2b75,
-0x2b96, 0x2b97,
-0x2bba, 0x2bbc,
-0x2bc9, 0x2bc9,
-0x2bd2, 0x2beb,
-0x2bf0, 0x2bff,
-0x2c2f, 0x2c2f,
-0x2c5f, 0x2c5f,
-0x2cf4, 0x2cf8,
-0x2d26, 0x2d26,
-0x2d28, 0x2d2c,
-0x2d2e, 0x2d2f,
-0x2d68, 0x2d6e,
-0x2d71, 0x2d7e,
-0x2d97, 0x2d9f,
-0x2da7, 0x2da7,
-0x2daf, 0x2daf,
-0x2db7, 0x2db7,
-0x2dbf, 0x2dbf,
-0x2dc7, 0x2dc7,
-0x2dcf, 0x2dcf,
-0x2dd7, 0x2dd7,
-0x2ddf, 0x2ddf,
-0x2e43, 0x2e7f,
-0x2e9a, 0x2e9a,
-0x2ef4, 0x2eff,
-0x2fd6, 0x2fef,
-0x2ffc, 0x2fff,
-0x3040, 0x3040,
-0x3097, 0x3098,
-0x3100, 0x3104,
-0x312e, 0x3130,
-0x318f, 0x318f,
-0x31bb, 0x31bf,
-0x31e4, 0x31ef,
-0x321f, 0x321f,
-0x32ff, 0x32ff,
-0x4db6, 0x4dbf,
-0x9fd6, 0x9fff,
-0xa48d, 0xa48f,
-0xa4c7, 0xa4cf,
-0xa62c, 0xa63f,
-0xa6f8, 0xa6ff,
-0xa7ae, 0xa7af,
-0xa7b8, 0xa7f6,
-0xa82c, 0xa82f,
-0xa83a, 0xa83f,
-0xa878, 0xa87f,
-0xa8c5, 0xa8cd,
-0xa8da, 0xa8df,
-0xa8fe, 0xa8ff,
-0xa954, 0xa95e,
-0xa97d, 0xa97f,
-0xa9ce, 0xa9ce,
-0xa9da, 0xa9dd,
-0xa9ff, 0xa9ff,
-0xaa37, 0xaa3f,
-0xaa4e, 0xaa4f,
-0xaa5a, 0xaa5b,
-0xaac3, 0xaada,
-0xaaf7, 0xab00,
-0xab07, 0xab08,
-0xab0f, 0xab10,
-0xab17, 0xab1f,
-0xab27, 0xab27,
-0xab2f, 0xab2f,
-0xab66, 0xab6f,
-0xabee, 0xabef,
-0xabfa, 0xabff,
-0xd7a4, 0xd7af,
-0xd7c7, 0xd7ca,
-0xd7fc, 0xd7ff,
-0xfa6e, 0xfa6f,
-0xfada, 0xfaff,
-0xfb07, 0xfb12,
-0xfb18, 0xfb1c,
-0xfb37, 0xfb37,
-0xfb3d, 0xfb3d,
-0xfb3f, 0xfb3f,
-0xfb42, 0xfb42,
-0xfb45, 0xfb45,
-0xfbc2, 0xfbd2,
-0xfd40, 0xfd4f,
-0xfd90, 0xfd91,
-0xfdc8, 0xfdef,
-0xfdfe, 0xfdff,
-0xfe1a, 0xfe1f,
-0xfe53, 0xfe53,
-0xfe67, 0xfe67,
-0xfe6c, 0xfe6f,
-0xfe75, 0xfe75,
-0xfefd, 0xfefe,
-0xff00, 0xff00,
-0xffbf, 0xffc1,
-0xffc8, 0xffc9,
-0xffd0, 0xffd1,
-0xffd8, 0xffd9,
-0xffdd, 0xffdf,
-0xffe7, 0xffe7,
-0xffef, 0xfff8,
-0xfffe, 0xffff,
-0x1000c, 0x1000c,
-0x10027, 0x10027,
-0x1003b, 0x1003b,
-0x1003e, 0x1003e,
-0x1004e, 0x1004f,
-0x1005e, 0x1007f,
-0x100fb, 0x100ff,
-0x10103, 0x10106,
-0x10134, 0x10136,
-0x1018d, 0x1018f,
-0x1019c, 0x1019f,
-0x101a1, 0x101cf,
-0x101fe, 0x1027f,
-0x1029d, 0x1029f,
-0x102d1, 0x102df,
-0x102fc, 0x102ff,
-0x10324, 0x1032f,
-0x1034b, 0x1034f,
-0x1037b, 0x1037f,
-0x1039e, 0x1039e,
-0x103c4, 0x103c7,
-0x103d6, 0x103ff,
-0x1049e, 0x1049f,
-0x104aa, 0x104ff,
-0x10528, 0x1052f,
-0x10564, 0x1056e,
-0x10570, 0x105ff,
-0x10737, 0x1073f,
-0x10756, 0x1075f,
-0x10768, 0x107ff,
-0x10806, 0x10807,
-0x10809, 0x10809,
-0x10836, 0x10836,
-0x10839, 0x1083b,
-0x1083d, 0x1083e,
-0x10856, 0x10856,
-0x1089f, 0x108a6,
-0x108b0, 0x108df,
-0x108f3, 0x108f3,
-0x108f6, 0x108fa,
-0x1091c, 0x1091e,
-0x1093a, 0x1093e,
-0x10940, 0x1097f,
-0x109b8, 0x109bb,
-0x109d0, 0x109d1,
-0x10a04, 0x10a04,
-0x10a07, 0x10a0b,
-0x10a14, 0x10a14,
-0x10a18, 0x10a18,
-0x10a34, 0x10a37,
-0x10a3b, 0x10a3e,
-0x10a48, 0x10a4f,
-0x10a59, 0x10a5f,
-0x10aa0, 0x10abf,
-0x10ae7, 0x10aea,
-0x10af7, 0x10aff,
-0x10b36, 0x10b38,
-0x10b56, 0x10b57,
-0x10b73, 0x10b77,
-0x10b92, 0x10b98,
-0x10b9d, 0x10ba8,
-0x10bb0, 0x10bff,
-0x10c49, 0x10c7f,
-0x10cb3, 0x10cbf,
-0x10cf3, 0x10cf9,
-0x10d00, 0x10e5f,
-0x10e7f, 0x10fff,
-0x1104e, 0x11051,
-0x11070, 0x1107e,
-0x110c2, 0x110cf,
-0x110e9, 0x110ef,
-0x110fa, 0x110ff,
-0x11135, 0x11135,
-0x11144, 0x1114f,
-0x11177, 0x1117f,
-0x111ce, 0x111cf,
-0x111e0, 0x111e0,
-0x111f5, 0x111ff,
-0x11212, 0x11212,
-0x1123e, 0x1127f,
-0x11287, 0x11287,
-0x11289, 0x11289,
-0x1128e, 0x1128e,
-0x1129e, 0x1129e,
-0x112aa, 0x112af,
-0x112eb, 0x112ef,
-0x112fa, 0x112ff,
-0x11304, 0x11304,
-0x1130d, 0x1130e,
-0x11311, 0x11312,
-0x11329, 0x11329,
-0x11331, 0x11331,
-0x11334, 0x11334,
-0x1133a, 0x1133b,
-0x11345, 0x11346,
-0x11349, 0x1134a,
-0x1134e, 0x1134f,
-0x11351, 0x11356,
-0x11358, 0x1135c,
-0x11364, 0x11365,
-0x1136d, 0x1136f,
-0x11375, 0x1147f,
-0x114c8, 0x114cf,
-0x114da, 0x1157f,
-0x115b6, 0x115b7,
-0x115de, 0x115ff,
-0x11645, 0x1164f,
-0x1165a, 0x1167f,
-0x116b8, 0x116bf,
-0x116ca, 0x116ff,
-0x1171a, 0x1171c,
-0x1172c, 0x1172f,
-0x11740, 0x1189f,
-0x118f3, 0x118fe,
-0x11900, 0x11abf,
-0x11af9, 0x11fff,
-0x1239a, 0x123ff,
-0x1246f, 0x1246f,
-0x12475, 0x1247f,
-0x12544, 0x12fff,
-0x1342f, 0x143ff,
-0x14647, 0x167ff,
-0x16a39, 0x16a3f,
-0x16a5f, 0x16a5f,
-0x16a6a, 0x16a6d,
-0x16a70, 0x16acf,
-0x16aee, 0x16aef,
-0x16af6, 0x16aff,
-0x16b46, 0x16b4f,
-0x16b5a, 0x16b5a,
-0x16b62, 0x16b62,
-0x16b78, 0x16b7c,
-0x16b90, 0x16eff,
-0x16f45, 0x16f4f,
-0x16f7f, 0x16f8e,
-0x16fa0, 0x1afff,
-0x1b002, 0x1bbff,
-0x1bc6b, 0x1bc6f,
-0x1bc7d, 0x1bc7f,
-0x1bc89, 0x1bc8f,
-0x1bc9a, 0x1bc9b,
-0x1bca4, 0x1cfff,
-0x1d0f6, 0x1d0ff,
-0x1d127, 0x1d128,
-0x1d1e9, 0x1d1ff,
-0x1d246, 0x1d2ff,
-0x1d357, 0x1d35f,
-0x1d372, 0x1d3ff,
-0x1d455, 0x1d455,
-0x1d49d, 0x1d49d,
-0x1d4a0, 0x1d4a1,
-0x1d4a3, 0x1d4a4,
-0x1d4a7, 0x1d4a8,
-0x1d4ad, 0x1d4ad,
-0x1d4ba, 0x1d4ba,
-0x1d4bc, 0x1d4bc,
-0x1d4c4, 0x1d4c4,
-0x1d506, 0x1d506,
-0x1d50b, 0x1d50c,
-0x1d515, 0x1d515,
-0x1d51d, 0x1d51d,
-0x1d53a, 0x1d53a,
-0x1d53f, 0x1d53f,
-0x1d545, 0x1d545,
-0x1d547, 0x1d549,
-0x1d551, 0x1d551,
-0x1d6a6, 0x1d6a7,
-0x1d7cc, 0x1d7cd,
-0x1da8c, 0x1da9a,
-0x1daa0, 0x1daa0,
-0x1dab0, 0x1e7ff,
-0x1e8c5, 0x1e8c6,
-0x1e8d7, 0x1edff,
-0x1ee04, 0x1ee04,
-0x1ee20, 0x1ee20,
-0x1ee23, 0x1ee23,
-0x1ee25, 0x1ee26,
-0x1ee28, 0x1ee28,
-0x1ee33, 0x1ee33,
-0x1ee38, 0x1ee38,
-0x1ee3a, 0x1ee3a,
-0x1ee3c, 0x1ee41,
-0x1ee43, 0x1ee46,
-0x1ee48, 0x1ee48,
-0x1ee4a, 0x1ee4a,
-0x1ee4c, 0x1ee4c,
-0x1ee50, 0x1ee50,
-0x1ee53, 0x1ee53,
-0x1ee55, 0x1ee56,
-0x1ee58, 0x1ee58,
-0x1ee5a, 0x1ee5a,
-0x1ee5c, 0x1ee5c,
-0x1ee5e, 0x1ee5e,
-0x1ee60, 0x1ee60,
-0x1ee63, 0x1ee63,
-0x1ee65, 0x1ee66,
-0x1ee6b, 0x1ee6b,
-0x1ee73, 0x1ee73,
-0x1ee78, 0x1ee78,
-0x1ee7d, 0x1ee7d,
-0x1ee7f, 0x1ee7f,
-0x1ee8a, 0x1ee8a,
-0x1ee9c, 0x1eea0,
-0x1eea4, 0x1eea4,
-0x1eeaa, 0x1eeaa,
-0x1eebc, 0x1eeef,
-0x1eef2, 0x1efff,
-0x1f02c, 0x1f02f,
-0x1f094, 0x1f09f,
-0x1f0af, 0x1f0b0,
-0x1f0c0, 0x1f0c0,
-0x1f0d0, 0x1f0d0,
-0x1f0f6, 0x1f0ff,
-0x1f10d, 0x1f10f,
-0x1f12f, 0x1f12f,
-0x1f16c, 0x1f16f,
-0x1f19b, 0x1f1e5,
-0x1f203, 0x1f20f,
-0x1f23b, 0x1f23f,
-0x1f249, 0x1f24f,
-0x1f252, 0x1f2ff,
-0x1f57a, 0x1f57a,
-0x1f5a4, 0x1f5a4,
-0x1f6d1, 0x1f6df,
-0x1f6ed, 0x1f6ef,
-0x1f6f4, 0x1f6ff,
-0x1f774, 0x1f77f,
-0x1f7d5, 0x1f7ff,
-0x1f80c, 0x1f80f,
-0x1f848, 0x1f84f,
-0x1f85a, 0x1f85f,
-0x1f888, 0x1f88f,
-0x1f8ae, 0x1f90f,
-0x1f919, 0x1f97f,
-0x1f985, 0x1f9bf,
-0x1f9c1, 0x1ffff,
-0x2a6d7, 0x2a6ff,
-0x2b735, 0x2b73f,
-0x2b81e, 0x2b81f,
-0x2cea2, 0x2f7ff,
-0x2fa1e, 0xe0000,
-0xe0002, 0xe001f,
-0xe0080, 0xe00ff,
-0xe01f0, 0xeffff,
-0xffffe, 0xfffff,
-0x10fffe, 0x10ffff,
-}; /* END of CR_Cn */
-
-/* PROPERTY: 'Co': General Category */
-static const OnigCodePoint
-CR_Co[] = { 3,
-0xe000, 0xf8ff,
-0xf0000, 0xffffd,
-0x100000, 0x10fffd,
-}; /* END of CR_Co */
-
-/* PROPERTY: 'Cs': General Category */
-static const OnigCodePoint
-CR_Cs[] = { 1,
-0xd800, 0xdfff,
-}; /* END of CR_Cs */
-
-/* PROPERTY: 'L': Major Category */
-static const OnigCodePoint
-CR_L[] = { 554,
-0x0041, 0x005a,
-0x0061, 0x007a,
-0x00aa, 0x00aa,
-0x00b5, 0x00b5,
-0x00ba, 0x00ba,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x02c1,
-0x02c6, 0x02d1,
-0x02e0, 0x02e4,
-0x02ec, 0x02ec,
-0x02ee, 0x02ee,
-0x0370, 0x0374,
-0x0376, 0x0377,
-0x037a, 0x037d,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03f5,
-0x03f7, 0x0481,
-0x048a, 0x052f,
-0x0531, 0x0556,
-0x0559, 0x0559,
-0x0561, 0x0587,
-0x05d0, 0x05ea,
-0x05f0, 0x05f2,
-0x0620, 0x064a,
-0x066e, 0x066f,
-0x0671, 0x06d3,
-0x06d5, 0x06d5,
-0x06e5, 0x06e6,
-0x06ee, 0x06ef,
-0x06fa, 0x06fc,
-0x06ff, 0x06ff,
-0x0710, 0x0710,
-0x0712, 0x072f,
-0x074d, 0x07a5,
-0x07b1, 0x07b1,
-0x07ca, 0x07ea,
-0x07f4, 0x07f5,
-0x07fa, 0x07fa,
-0x0800, 0x0815,
-0x081a, 0x081a,
-0x0824, 0x0824,
-0x0828, 0x0828,
-0x0840, 0x0858,
-0x08a0, 0x08b4,
-0x0904, 0x0939,
-0x093d, 0x093d,
-0x0950, 0x0950,
-0x0958, 0x0961,
-0x0971, 0x0980,
-0x0985, 0x098c,
-0x098f, 0x0990,
-0x0993, 0x09a8,
-0x09aa, 0x09b0,
-0x09b2, 0x09b2,
-0x09b6, 0x09b9,
-0x09bd, 0x09bd,
-0x09ce, 0x09ce,
-0x09dc, 0x09dd,
-0x09df, 0x09e1,
-0x09f0, 0x09f1,
-0x0a05, 0x0a0a,
-0x0a0f, 0x0a10,
-0x0a13, 0x0a28,
-0x0a2a, 0x0a30,
-0x0a32, 0x0a33,
-0x0a35, 0x0a36,
-0x0a38, 0x0a39,
-0x0a59, 0x0a5c,
-0x0a5e, 0x0a5e,
-0x0a72, 0x0a74,
-0x0a85, 0x0a8d,
-0x0a8f, 0x0a91,
-0x0a93, 0x0aa8,
-0x0aaa, 0x0ab0,
-0x0ab2, 0x0ab3,
-0x0ab5, 0x0ab9,
-0x0abd, 0x0abd,
-0x0ad0, 0x0ad0,
-0x0ae0, 0x0ae1,
-0x0af9, 0x0af9,
-0x0b05, 0x0b0c,
-0x0b0f, 0x0b10,
-0x0b13, 0x0b28,
-0x0b2a, 0x0b30,
-0x0b32, 0x0b33,
-0x0b35, 0x0b39,
-0x0b3d, 0x0b3d,
-0x0b5c, 0x0b5d,
-0x0b5f, 0x0b61,
-0x0b71, 0x0b71,
-0x0b83, 0x0b83,
-0x0b85, 0x0b8a,
-0x0b8e, 0x0b90,
-0x0b92, 0x0b95,
-0x0b99, 0x0b9a,
-0x0b9c, 0x0b9c,
-0x0b9e, 0x0b9f,
-0x0ba3, 0x0ba4,
-0x0ba8, 0x0baa,
-0x0bae, 0x0bb9,
-0x0bd0, 0x0bd0,
-0x0c05, 0x0c0c,
-0x0c0e, 0x0c10,
-0x0c12, 0x0c28,
-0x0c2a, 0x0c39,
-0x0c3d, 0x0c3d,
-0x0c58, 0x0c5a,
-0x0c60, 0x0c61,
-0x0c85, 0x0c8c,
-0x0c8e, 0x0c90,
-0x0c92, 0x0ca8,
-0x0caa, 0x0cb3,
-0x0cb5, 0x0cb9,
-0x0cbd, 0x0cbd,
-0x0cde, 0x0cde,
-0x0ce0, 0x0ce1,
-0x0cf1, 0x0cf2,
-0x0d05, 0x0d0c,
-0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d3d,
-0x0d4e, 0x0d4e,
-0x0d5f, 0x0d61,
-0x0d7a, 0x0d7f,
-0x0d85, 0x0d96,
-0x0d9a, 0x0db1,
-0x0db3, 0x0dbb,
-0x0dbd, 0x0dbd,
-0x0dc0, 0x0dc6,
-0x0e01, 0x0e30,
-0x0e32, 0x0e33,
-0x0e40, 0x0e46,
-0x0e81, 0x0e82,
-0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
-0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb0,
-0x0eb2, 0x0eb3,
-0x0ebd, 0x0ebd,
-0x0ec0, 0x0ec4,
-0x0ec6, 0x0ec6,
-0x0edc, 0x0edf,
-0x0f00, 0x0f00,
-0x0f40, 0x0f47,
-0x0f49, 0x0f6c,
-0x0f88, 0x0f8c,
-0x1000, 0x102a,
-0x103f, 0x103f,
-0x1050, 0x1055,
-0x105a, 0x105d,
-0x1061, 0x1061,
-0x1065, 0x1066,
-0x106e, 0x1070,
-0x1075, 0x1081,
-0x108e, 0x108e,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x10d0, 0x10fa,
-0x10fc, 0x1248,
-0x124a, 0x124d,
-0x1250, 0x1256,
-0x1258, 0x1258,
-0x125a, 0x125d,
-0x1260, 0x1288,
-0x128a, 0x128d,
-0x1290, 0x12b0,
-0x12b2, 0x12b5,
-0x12b8, 0x12be,
-0x12c0, 0x12c0,
-0x12c2, 0x12c5,
-0x12c8, 0x12d6,
-0x12d8, 0x1310,
-0x1312, 0x1315,
-0x1318, 0x135a,
-0x1380, 0x138f,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0x1401, 0x166c,
-0x166f, 0x167f,
-0x1681, 0x169a,
-0x16a0, 0x16ea,
-0x16f1, 0x16f8,
-0x1700, 0x170c,
-0x170e, 0x1711,
-0x1720, 0x1731,
-0x1740, 0x1751,
-0x1760, 0x176c,
-0x176e, 0x1770,
-0x1780, 0x17b3,
-0x17d7, 0x17d7,
-0x17dc, 0x17dc,
-0x1820, 0x1877,
-0x1880, 0x18a8,
-0x18aa, 0x18aa,
-0x18b0, 0x18f5,
-0x1900, 0x191e,
-0x1950, 0x196d,
-0x1970, 0x1974,
-0x1980, 0x19ab,
-0x19b0, 0x19c9,
-0x1a00, 0x1a16,
-0x1a20, 0x1a54,
-0x1aa7, 0x1aa7,
-0x1b05, 0x1b33,
-0x1b45, 0x1b4b,
-0x1b83, 0x1ba0,
-0x1bae, 0x1baf,
-0x1bba, 0x1be5,
-0x1c00, 0x1c23,
-0x1c4d, 0x1c4f,
-0x1c5a, 0x1c7d,
-0x1ce9, 0x1cec,
-0x1cee, 0x1cf1,
-0x1cf5, 0x1cf6,
-0x1d00, 0x1dbf,
-0x1e00, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fe0, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffc,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2119, 0x211d,
-0x2124, 0x2124,
-0x2126, 0x2126,
-0x2128, 0x2128,
-0x212a, 0x212d,
-0x212f, 0x2139,
-0x213c, 0x213f,
-0x2145, 0x2149,
-0x214e, 0x214e,
-0x2183, 0x2184,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-0x2c60, 0x2ce4,
-0x2ceb, 0x2cee,
-0x2cf2, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0x2d30, 0x2d67,
-0x2d6f, 0x2d6f,
-0x2d80, 0x2d96,
-0x2da0, 0x2da6,
-0x2da8, 0x2dae,
-0x2db0, 0x2db6,
-0x2db8, 0x2dbe,
-0x2dc0, 0x2dc6,
-0x2dc8, 0x2dce,
-0x2dd0, 0x2dd6,
-0x2dd8, 0x2dde,
-0x2e2f, 0x2e2f,
-0x3005, 0x3006,
-0x3031, 0x3035,
-0x303b, 0x303c,
-0x3041, 0x3096,
-0x309d, 0x309f,
-0x30a1, 0x30fa,
-0x30fc, 0x30ff,
-0x3105, 0x312d,
-0x3131, 0x318e,
-0x31a0, 0x31ba,
-0x31f0, 0x31ff,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
-0xa000, 0xa48c,
-0xa4d0, 0xa4fd,
-0xa500, 0xa60c,
-0xa610, 0xa61f,
-0xa62a, 0xa62b,
-0xa640, 0xa66e,
-0xa67f, 0xa69d,
-0xa6a0, 0xa6e5,
-0xa717, 0xa71f,
-0xa722, 0xa788,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xa7f7, 0xa801,
-0xa803, 0xa805,
-0xa807, 0xa80a,
-0xa80c, 0xa822,
-0xa840, 0xa873,
-0xa882, 0xa8b3,
-0xa8f2, 0xa8f7,
-0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
-0xa90a, 0xa925,
-0xa930, 0xa946,
-0xa960, 0xa97c,
-0xa984, 0xa9b2,
-0xa9cf, 0xa9cf,
-0xa9e0, 0xa9e4,
-0xa9e6, 0xa9ef,
-0xa9fa, 0xa9fe,
-0xaa00, 0xaa28,
-0xaa40, 0xaa42,
-0xaa44, 0xaa4b,
-0xaa60, 0xaa76,
-0xaa7a, 0xaa7a,
-0xaa7e, 0xaaaf,
-0xaab1, 0xaab1,
-0xaab5, 0xaab6,
-0xaab9, 0xaabd,
-0xaac0, 0xaac0,
-0xaac2, 0xaac2,
-0xaadb, 0xaadd,
-0xaae0, 0xaaea,
-0xaaf2, 0xaaf4,
-0xab01, 0xab06,
-0xab09, 0xab0e,
-0xab11, 0xab16,
-0xab20, 0xab26,
-0xab28, 0xab2e,
-0xab30, 0xab5a,
-0xab5c, 0xab65,
-0xab70, 0xabe2,
-0xac00, 0xd7a3,
-0xd7b0, 0xd7c6,
-0xd7cb, 0xd7fb,
-0xf900, 0xfa6d,
-0xfa70, 0xfad9,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xfb1d, 0xfb1d,
-0xfb1f, 0xfb28,
-0xfb2a, 0xfb36,
-0xfb38, 0xfb3c,
-0xfb3e, 0xfb3e,
-0xfb40, 0xfb41,
-0xfb43, 0xfb44,
-0xfb46, 0xfbb1,
-0xfbd3, 0xfd3d,
-0xfd50, 0xfd8f,
-0xfd92, 0xfdc7,
-0xfdf0, 0xfdfb,
-0xfe70, 0xfe74,
-0xfe76, 0xfefc,
-0xff21, 0xff3a,
-0xff41, 0xff5a,
-0xff66, 0xffbe,
-0xffc2, 0xffc7,
-0xffca, 0xffcf,
-0xffd2, 0xffd7,
-0xffda, 0xffdc,
-0x10000, 0x1000b,
-0x1000d, 0x10026,
-0x10028, 0x1003a,
-0x1003c, 0x1003d,
-0x1003f, 0x1004d,
-0x10050, 0x1005d,
-0x10080, 0x100fa,
-0x10280, 0x1029c,
-0x102a0, 0x102d0,
-0x10300, 0x1031f,
-0x10330, 0x10340,
-0x10342, 0x10349,
-0x10350, 0x10375,
-0x10380, 0x1039d,
-0x103a0, 0x103c3,
-0x103c8, 0x103cf,
-0x10400, 0x1049d,
-0x10500, 0x10527,
-0x10530, 0x10563,
-0x10600, 0x10736,
-0x10740, 0x10755,
-0x10760, 0x10767,
-0x10800, 0x10805,
-0x10808, 0x10808,
-0x1080a, 0x10835,
-0x10837, 0x10838,
-0x1083c, 0x1083c,
-0x1083f, 0x10855,
-0x10860, 0x10876,
-0x10880, 0x1089e,
-0x108e0, 0x108f2,
-0x108f4, 0x108f5,
-0x10900, 0x10915,
-0x10920, 0x10939,
-0x10980, 0x109b7,
-0x109be, 0x109bf,
-0x10a00, 0x10a00,
-0x10a10, 0x10a13,
-0x10a15, 0x10a17,
-0x10a19, 0x10a33,
-0x10a60, 0x10a7c,
-0x10a80, 0x10a9c,
-0x10ac0, 0x10ac7,
-0x10ac9, 0x10ae4,
-0x10b00, 0x10b35,
-0x10b40, 0x10b55,
-0x10b60, 0x10b72,
-0x10b80, 0x10b91,
-0x10c00, 0x10c48,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x11003, 0x11037,
-0x11083, 0x110af,
-0x110d0, 0x110e8,
-0x11103, 0x11126,
-0x11150, 0x11172,
-0x11176, 0x11176,
-0x11183, 0x111b2,
-0x111c1, 0x111c4,
-0x111da, 0x111da,
-0x111dc, 0x111dc,
-0x11200, 0x11211,
-0x11213, 0x1122b,
-0x11280, 0x11286,
-0x11288, 0x11288,
-0x1128a, 0x1128d,
-0x1128f, 0x1129d,
-0x1129f, 0x112a8,
-0x112b0, 0x112de,
-0x11305, 0x1130c,
-0x1130f, 0x11310,
-0x11313, 0x11328,
-0x1132a, 0x11330,
-0x11332, 0x11333,
-0x11335, 0x11339,
-0x1133d, 0x1133d,
-0x11350, 0x11350,
-0x1135d, 0x11361,
-0x11480, 0x114af,
-0x114c4, 0x114c5,
-0x114c7, 0x114c7,
-0x11580, 0x115ae,
-0x115d8, 0x115db,
-0x11600, 0x1162f,
-0x11644, 0x11644,
-0x11680, 0x116aa,
-0x11700, 0x11719,
-0x118a0, 0x118df,
-0x118ff, 0x118ff,
-0x11ac0, 0x11af8,
-0x12000, 0x12399,
-0x12480, 0x12543,
-0x13000, 0x1342e,
-0x14400, 0x14646,
-0x16800, 0x16a38,
-0x16a40, 0x16a5e,
-0x16ad0, 0x16aed,
-0x16b00, 0x16b2f,
-0x16b40, 0x16b43,
-0x16b63, 0x16b77,
-0x16b7d, 0x16b8f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f50,
-0x16f93, 0x16f9f,
-0x1b000, 0x1b001,
-0x1bc00, 0x1bc6a,
-0x1bc70, 0x1bc7c,
-0x1bc80, 0x1bc88,
-0x1bc90, 0x1bc99,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d6c0,
-0x1d6c2, 0x1d6da,
-0x1d6dc, 0x1d6fa,
-0x1d6fc, 0x1d714,
-0x1d716, 0x1d734,
-0x1d736, 0x1d74e,
-0x1d750, 0x1d76e,
-0x1d770, 0x1d788,
-0x1d78a, 0x1d7a8,
-0x1d7aa, 0x1d7c2,
-0x1d7c4, 0x1d7cb,
-0x1e800, 0x1e8c4,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
-0x20000, 0x2a6d6,
-0x2a700, 0x2b734,
-0x2b740, 0x2b81d,
-0x2b820, 0x2cea1,
-0x2f800, 0x2fa1d,
-}; /* END of CR_L */
-
-/* PROPERTY: 'LC': General Category */
-static const OnigCodePoint
-CR_LC[] = { 122,
-0x0041, 0x005a,
-0x0061, 0x007a,
-0x00b5, 0x00b5,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x01ba,
-0x01bc, 0x01bf,
-0x01c4, 0x0293,
-0x0295, 0x02af,
-0x0370, 0x0373,
-0x0376, 0x0377,
-0x037b, 0x037d,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03f5,
-0x03f7, 0x0481,
-0x048a, 0x052f,
-0x0531, 0x0556,
-0x0561, 0x0587,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0x1d00, 0x1d2b,
-0x1d6b, 0x1d77,
-0x1d79, 0x1d9a,
-0x1e00, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fe0, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffc,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2119, 0x211d,
-0x2124, 0x2124,
-0x2126, 0x2126,
-0x2128, 0x2128,
-0x212a, 0x212d,
-0x212f, 0x2134,
-0x2139, 0x2139,
-0x213c, 0x213f,
-0x2145, 0x2149,
-0x214e, 0x214e,
-0x2183, 0x2184,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-0x2c60, 0x2c7b,
-0x2c7e, 0x2ce4,
-0x2ceb, 0x2cee,
-0x2cf2, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0xa640, 0xa66d,
-0xa680, 0xa69b,
-0xa722, 0xa76f,
-0xa771, 0xa787,
-0xa78b, 0xa78e,
-0xa790, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xa7fa, 0xa7fa,
-0xab30, 0xab5a,
-0xab60, 0xab65,
-0xab70, 0xabbf,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xff21, 0xff3a,
-0xff41, 0xff5a,
-0x10400, 0x1044f,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x118a0, 0x118df,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d6c0,
-0x1d6c2, 0x1d6da,
-0x1d6dc, 0x1d6fa,
-0x1d6fc, 0x1d714,
-0x1d716, 0x1d734,
-0x1d736, 0x1d74e,
-0x1d750, 0x1d76e,
-0x1d770, 0x1d788,
-0x1d78a, 0x1d7a8,
-0x1d7aa, 0x1d7c2,
-0x1d7c4, 0x1d7cb,
-}; /* END of CR_LC */
-
-/* PROPERTY: 'Ll': General Category */
-static const OnigCodePoint
-CR_Ll[] = { 630,
-0x0061, 0x007a,
-0x00b5, 0x00b5,
-0x00df, 0x00f6,
-0x00f8, 0x00ff,
-0x0101, 0x0101,
-0x0103, 0x0103,
-0x0105, 0x0105,
-0x0107, 0x0107,
-0x0109, 0x0109,
-0x010b, 0x010b,
-0x010d, 0x010d,
-0x010f, 0x010f,
-0x0111, 0x0111,
-0x0113, 0x0113,
-0x0115, 0x0115,
-0x0117, 0x0117,
-0x0119, 0x0119,
-0x011b, 0x011b,
-0x011d, 0x011d,
-0x011f, 0x011f,
-0x0121, 0x0121,
-0x0123, 0x0123,
-0x0125, 0x0125,
-0x0127, 0x0127,
-0x0129, 0x0129,
-0x012b, 0x012b,
-0x012d, 0x012d,
-0x012f, 0x012f,
-0x0131, 0x0131,
-0x0133, 0x0133,
-0x0135, 0x0135,
-0x0137, 0x0138,
-0x013a, 0x013a,
-0x013c, 0x013c,
-0x013e, 0x013e,
-0x0140, 0x0140,
-0x0142, 0x0142,
-0x0144, 0x0144,
-0x0146, 0x0146,
-0x0148, 0x0149,
-0x014b, 0x014b,
-0x014d, 0x014d,
-0x014f, 0x014f,
-0x0151, 0x0151,
-0x0153, 0x0153,
-0x0155, 0x0155,
-0x0157, 0x0157,
-0x0159, 0x0159,
-0x015b, 0x015b,
-0x015d, 0x015d,
-0x015f, 0x015f,
-0x0161, 0x0161,
-0x0163, 0x0163,
-0x0165, 0x0165,
-0x0167, 0x0167,
-0x0169, 0x0169,
-0x016b, 0x016b,
-0x016d, 0x016d,
-0x016f, 0x016f,
-0x0171, 0x0171,
-0x0173, 0x0173,
-0x0175, 0x0175,
-0x0177, 0x0177,
-0x017a, 0x017a,
-0x017c, 0x017c,
-0x017e, 0x0180,
-0x0183, 0x0183,
-0x0185, 0x0185,
-0x0188, 0x0188,
-0x018c, 0x018d,
-0x0192, 0x0192,
-0x0195, 0x0195,
-0x0199, 0x019b,
-0x019e, 0x019e,
-0x01a1, 0x01a1,
-0x01a3, 0x01a3,
-0x01a5, 0x01a5,
-0x01a8, 0x01a8,
-0x01aa, 0x01ab,
-0x01ad, 0x01ad,
-0x01b0, 0x01b0,
-0x01b4, 0x01b4,
-0x01b6, 0x01b6,
-0x01b9, 0x01ba,
-0x01bd, 0x01bf,
-0x01c6, 0x01c6,
-0x01c9, 0x01c9,
-0x01cc, 0x01cc,
-0x01ce, 0x01ce,
-0x01d0, 0x01d0,
-0x01d2, 0x01d2,
-0x01d4, 0x01d4,
-0x01d6, 0x01d6,
-0x01d8, 0x01d8,
-0x01da, 0x01da,
-0x01dc, 0x01dd,
-0x01df, 0x01df,
-0x01e1, 0x01e1,
-0x01e3, 0x01e3,
-0x01e5, 0x01e5,
-0x01e7, 0x01e7,
-0x01e9, 0x01e9,
-0x01eb, 0x01eb,
-0x01ed, 0x01ed,
-0x01ef, 0x01f0,
-0x01f3, 0x01f3,
-0x01f5, 0x01f5,
-0x01f9, 0x01f9,
-0x01fb, 0x01fb,
-0x01fd, 0x01fd,
-0x01ff, 0x01ff,
-0x0201, 0x0201,
-0x0203, 0x0203,
-0x0205, 0x0205,
-0x0207, 0x0207,
-0x0209, 0x0209,
-0x020b, 0x020b,
-0x020d, 0x020d,
-0x020f, 0x020f,
-0x0211, 0x0211,
-0x0213, 0x0213,
-0x0215, 0x0215,
-0x0217, 0x0217,
-0x0219, 0x0219,
-0x021b, 0x021b,
-0x021d, 0x021d,
-0x021f, 0x021f,
-0x0221, 0x0221,
-0x0223, 0x0223,
-0x0225, 0x0225,
-0x0227, 0x0227,
-0x0229, 0x0229,
-0x022b, 0x022b,
-0x022d, 0x022d,
-0x022f, 0x022f,
-0x0231, 0x0231,
-0x0233, 0x0239,
-0x023c, 0x023c,
-0x023f, 0x0240,
-0x0242, 0x0242,
-0x0247, 0x0247,
-0x0249, 0x0249,
-0x024b, 0x024b,
-0x024d, 0x024d,
-0x024f, 0x0293,
-0x0295, 0x02af,
-0x0371, 0x0371,
-0x0373, 0x0373,
-0x0377, 0x0377,
-0x037b, 0x037d,
-0x0390, 0x0390,
-0x03ac, 0x03ce,
-0x03d0, 0x03d1,
-0x03d5, 0x03d7,
-0x03d9, 0x03d9,
-0x03db, 0x03db,
-0x03dd, 0x03dd,
-0x03df, 0x03df,
-0x03e1, 0x03e1,
-0x03e3, 0x03e3,
-0x03e5, 0x03e5,
-0x03e7, 0x03e7,
-0x03e9, 0x03e9,
-0x03eb, 0x03eb,
-0x03ed, 0x03ed,
-0x03ef, 0x03f3,
-0x03f5, 0x03f5,
-0x03f8, 0x03f8,
-0x03fb, 0x03fc,
-0x0430, 0x045f,
-0x0461, 0x0461,
-0x0463, 0x0463,
-0x0465, 0x0465,
-0x0467, 0x0467,
-0x0469, 0x0469,
-0x046b, 0x046b,
-0x046d, 0x046d,
-0x046f, 0x046f,
-0x0471, 0x0471,
-0x0473, 0x0473,
-0x0475, 0x0475,
-0x0477, 0x0477,
-0x0479, 0x0479,
-0x047b, 0x047b,
-0x047d, 0x047d,
-0x047f, 0x047f,
-0x0481, 0x0481,
-0x048b, 0x048b,
-0x048d, 0x048d,
-0x048f, 0x048f,
-0x0491, 0x0491,
-0x0493, 0x0493,
-0x0495, 0x0495,
-0x0497, 0x0497,
-0x0499, 0x0499,
-0x049b, 0x049b,
-0x049d, 0x049d,
-0x049f, 0x049f,
-0x04a1, 0x04a1,
-0x04a3, 0x04a3,
-0x04a5, 0x04a5,
-0x04a7, 0x04a7,
-0x04a9, 0x04a9,
-0x04ab, 0x04ab,
-0x04ad, 0x04ad,
-0x04af, 0x04af,
-0x04b1, 0x04b1,
-0x04b3, 0x04b3,
-0x04b5, 0x04b5,
-0x04b7, 0x04b7,
-0x04b9, 0x04b9,
-0x04bb, 0x04bb,
-0x04bd, 0x04bd,
-0x04bf, 0x04bf,
-0x04c2, 0x04c2,
-0x04c4, 0x04c4,
-0x04c6, 0x04c6,
-0x04c8, 0x04c8,
-0x04ca, 0x04ca,
-0x04cc, 0x04cc,
-0x04ce, 0x04cf,
-0x04d1, 0x04d1,
-0x04d3, 0x04d3,
-0x04d5, 0x04d5,
-0x04d7, 0x04d7,
-0x04d9, 0x04d9,
-0x04db, 0x04db,
-0x04dd, 0x04dd,
-0x04df, 0x04df,
-0x04e1, 0x04e1,
-0x04e3, 0x04e3,
-0x04e5, 0x04e5,
-0x04e7, 0x04e7,
-0x04e9, 0x04e9,
-0x04eb, 0x04eb,
-0x04ed, 0x04ed,
-0x04ef, 0x04ef,
-0x04f1, 0x04f1,
-0x04f3, 0x04f3,
-0x04f5, 0x04f5,
-0x04f7, 0x04f7,
-0x04f9, 0x04f9,
-0x04fb, 0x04fb,
-0x04fd, 0x04fd,
-0x04ff, 0x04ff,
-0x0501, 0x0501,
-0x0503, 0x0503,
-0x0505, 0x0505,
-0x0507, 0x0507,
-0x0509, 0x0509,
-0x050b, 0x050b,
-0x050d, 0x050d,
-0x050f, 0x050f,
-0x0511, 0x0511,
-0x0513, 0x0513,
-0x0515, 0x0515,
-0x0517, 0x0517,
-0x0519, 0x0519,
-0x051b, 0x051b,
-0x051d, 0x051d,
-0x051f, 0x051f,
-0x0521, 0x0521,
-0x0523, 0x0523,
-0x0525, 0x0525,
-0x0527, 0x0527,
-0x0529, 0x0529,
-0x052b, 0x052b,
-0x052d, 0x052d,
-0x052f, 0x052f,
-0x0561, 0x0587,
-0x13f8, 0x13fd,
-0x1d00, 0x1d2b,
-0x1d6b, 0x1d77,
-0x1d79, 0x1d9a,
-0x1e01, 0x1e01,
-0x1e03, 0x1e03,
-0x1e05, 0x1e05,
-0x1e07, 0x1e07,
-0x1e09, 0x1e09,
-0x1e0b, 0x1e0b,
-0x1e0d, 0x1e0d,
-0x1e0f, 0x1e0f,
-0x1e11, 0x1e11,
-0x1e13, 0x1e13,
-0x1e15, 0x1e15,
-0x1e17, 0x1e17,
-0x1e19, 0x1e19,
-0x1e1b, 0x1e1b,
-0x1e1d, 0x1e1d,
-0x1e1f, 0x1e1f,
-0x1e21, 0x1e21,
-0x1e23, 0x1e23,
-0x1e25, 0x1e25,
-0x1e27, 0x1e27,
-0x1e29, 0x1e29,
-0x1e2b, 0x1e2b,
-0x1e2d, 0x1e2d,
-0x1e2f, 0x1e2f,
-0x1e31, 0x1e31,
-0x1e33, 0x1e33,
-0x1e35, 0x1e35,
-0x1e37, 0x1e37,
-0x1e39, 0x1e39,
-0x1e3b, 0x1e3b,
-0x1e3d, 0x1e3d,
-0x1e3f, 0x1e3f,
-0x1e41, 0x1e41,
-0x1e43, 0x1e43,
-0x1e45, 0x1e45,
-0x1e47, 0x1e47,
-0x1e49, 0x1e49,
-0x1e4b, 0x1e4b,
-0x1e4d, 0x1e4d,
-0x1e4f, 0x1e4f,
-0x1e51, 0x1e51,
-0x1e53, 0x1e53,
-0x1e55, 0x1e55,
-0x1e57, 0x1e57,
-0x1e59, 0x1e59,
-0x1e5b, 0x1e5b,
-0x1e5d, 0x1e5d,
-0x1e5f, 0x1e5f,
-0x1e61, 0x1e61,
-0x1e63, 0x1e63,
-0x1e65, 0x1e65,
-0x1e67, 0x1e67,
-0x1e69, 0x1e69,
-0x1e6b, 0x1e6b,
-0x1e6d, 0x1e6d,
-0x1e6f, 0x1e6f,
-0x1e71, 0x1e71,
-0x1e73, 0x1e73,
-0x1e75, 0x1e75,
-0x1e77, 0x1e77,
-0x1e79, 0x1e79,
-0x1e7b, 0x1e7b,
-0x1e7d, 0x1e7d,
-0x1e7f, 0x1e7f,
-0x1e81, 0x1e81,
-0x1e83, 0x1e83,
-0x1e85, 0x1e85,
-0x1e87, 0x1e87,
-0x1e89, 0x1e89,
-0x1e8b, 0x1e8b,
-0x1e8d, 0x1e8d,
-0x1e8f, 0x1e8f,
-0x1e91, 0x1e91,
-0x1e93, 0x1e93,
-0x1e95, 0x1e9d,
-0x1e9f, 0x1e9f,
-0x1ea1, 0x1ea1,
-0x1ea3, 0x1ea3,
-0x1ea5, 0x1ea5,
-0x1ea7, 0x1ea7,
-0x1ea9, 0x1ea9,
-0x1eab, 0x1eab,
-0x1ead, 0x1ead,
-0x1eaf, 0x1eaf,
-0x1eb1, 0x1eb1,
-0x1eb3, 0x1eb3,
-0x1eb5, 0x1eb5,
-0x1eb7, 0x1eb7,
-0x1eb9, 0x1eb9,
-0x1ebb, 0x1ebb,
-0x1ebd, 0x1ebd,
-0x1ebf, 0x1ebf,
-0x1ec1, 0x1ec1,
-0x1ec3, 0x1ec3,
-0x1ec5, 0x1ec5,
-0x1ec7, 0x1ec7,
-0x1ec9, 0x1ec9,
-0x1ecb, 0x1ecb,
-0x1ecd, 0x1ecd,
-0x1ecf, 0x1ecf,
-0x1ed1, 0x1ed1,
-0x1ed3, 0x1ed3,
-0x1ed5, 0x1ed5,
-0x1ed7, 0x1ed7,
-0x1ed9, 0x1ed9,
-0x1edb, 0x1edb,
-0x1edd, 0x1edd,
-0x1edf, 0x1edf,
-0x1ee1, 0x1ee1,
-0x1ee3, 0x1ee3,
-0x1ee5, 0x1ee5,
-0x1ee7, 0x1ee7,
-0x1ee9, 0x1ee9,
-0x1eeb, 0x1eeb,
-0x1eed, 0x1eed,
-0x1eef, 0x1eef,
-0x1ef1, 0x1ef1,
-0x1ef3, 0x1ef3,
-0x1ef5, 0x1ef5,
-0x1ef7, 0x1ef7,
-0x1ef9, 0x1ef9,
-0x1efb, 0x1efb,
-0x1efd, 0x1efd,
-0x1eff, 0x1f07,
-0x1f10, 0x1f15,
-0x1f20, 0x1f27,
-0x1f30, 0x1f37,
-0x1f40, 0x1f45,
-0x1f50, 0x1f57,
-0x1f60, 0x1f67,
-0x1f70, 0x1f7d,
-0x1f80, 0x1f87,
-0x1f90, 0x1f97,
-0x1fa0, 0x1fa7,
-0x1fb0, 0x1fb4,
-0x1fb6, 0x1fb7,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fc7,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fd7,
-0x1fe0, 0x1fe7,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ff7,
-0x210a, 0x210a,
-0x210e, 0x210f,
-0x2113, 0x2113,
-0x212f, 0x212f,
-0x2134, 0x2134,
-0x2139, 0x2139,
-0x213c, 0x213d,
-0x2146, 0x2149,
-0x214e, 0x214e,
-0x2184, 0x2184,
-0x2c30, 0x2c5e,
-0x2c61, 0x2c61,
-0x2c65, 0x2c66,
-0x2c68, 0x2c68,
-0x2c6a, 0x2c6a,
-0x2c6c, 0x2c6c,
-0x2c71, 0x2c71,
-0x2c73, 0x2c74,
-0x2c76, 0x2c7b,
-0x2c81, 0x2c81,
-0x2c83, 0x2c83,
-0x2c85, 0x2c85,
-0x2c87, 0x2c87,
-0x2c89, 0x2c89,
-0x2c8b, 0x2c8b,
-0x2c8d, 0x2c8d,
-0x2c8f, 0x2c8f,
-0x2c91, 0x2c91,
-0x2c93, 0x2c93,
-0x2c95, 0x2c95,
-0x2c97, 0x2c97,
-0x2c99, 0x2c99,
-0x2c9b, 0x2c9b,
-0x2c9d, 0x2c9d,
-0x2c9f, 0x2c9f,
-0x2ca1, 0x2ca1,
-0x2ca3, 0x2ca3,
-0x2ca5, 0x2ca5,
-0x2ca7, 0x2ca7,
-0x2ca9, 0x2ca9,
-0x2cab, 0x2cab,
-0x2cad, 0x2cad,
-0x2caf, 0x2caf,
-0x2cb1, 0x2cb1,
-0x2cb3, 0x2cb3,
-0x2cb5, 0x2cb5,
-0x2cb7, 0x2cb7,
-0x2cb9, 0x2cb9,
-0x2cbb, 0x2cbb,
-0x2cbd, 0x2cbd,
-0x2cbf, 0x2cbf,
-0x2cc1, 0x2cc1,
-0x2cc3, 0x2cc3,
-0x2cc5, 0x2cc5,
-0x2cc7, 0x2cc7,
-0x2cc9, 0x2cc9,
-0x2ccb, 0x2ccb,
-0x2ccd, 0x2ccd,
-0x2ccf, 0x2ccf,
-0x2cd1, 0x2cd1,
-0x2cd3, 0x2cd3,
-0x2cd5, 0x2cd5,
-0x2cd7, 0x2cd7,
-0x2cd9, 0x2cd9,
-0x2cdb, 0x2cdb,
-0x2cdd, 0x2cdd,
-0x2cdf, 0x2cdf,
-0x2ce1, 0x2ce1,
-0x2ce3, 0x2ce4,
-0x2cec, 0x2cec,
-0x2cee, 0x2cee,
-0x2cf3, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0xa641, 0xa641,
-0xa643, 0xa643,
-0xa645, 0xa645,
-0xa647, 0xa647,
-0xa649, 0xa649,
-0xa64b, 0xa64b,
-0xa64d, 0xa64d,
-0xa64f, 0xa64f,
-0xa651, 0xa651,
-0xa653, 0xa653,
-0xa655, 0xa655,
-0xa657, 0xa657,
-0xa659, 0xa659,
-0xa65b, 0xa65b,
-0xa65d, 0xa65d,
-0xa65f, 0xa65f,
-0xa661, 0xa661,
-0xa663, 0xa663,
-0xa665, 0xa665,
-0xa667, 0xa667,
-0xa669, 0xa669,
-0xa66b, 0xa66b,
-0xa66d, 0xa66d,
-0xa681, 0xa681,
-0xa683, 0xa683,
-0xa685, 0xa685,
-0xa687, 0xa687,
-0xa689, 0xa689,
-0xa68b, 0xa68b,
-0xa68d, 0xa68d,
-0xa68f, 0xa68f,
-0xa691, 0xa691,
-0xa693, 0xa693,
-0xa695, 0xa695,
-0xa697, 0xa697,
-0xa699, 0xa699,
-0xa69b, 0xa69b,
-0xa723, 0xa723,
-0xa725, 0xa725,
-0xa727, 0xa727,
-0xa729, 0xa729,
-0xa72b, 0xa72b,
-0xa72d, 0xa72d,
-0xa72f, 0xa731,
-0xa733, 0xa733,
-0xa735, 0xa735,
-0xa737, 0xa737,
-0xa739, 0xa739,
-0xa73b, 0xa73b,
-0xa73d, 0xa73d,
-0xa73f, 0xa73f,
-0xa741, 0xa741,
-0xa743, 0xa743,
-0xa745, 0xa745,
-0xa747, 0xa747,
-0xa749, 0xa749,
-0xa74b, 0xa74b,
-0xa74d, 0xa74d,
-0xa74f, 0xa74f,
-0xa751, 0xa751,
-0xa753, 0xa753,
-0xa755, 0xa755,
-0xa757, 0xa757,
-0xa759, 0xa759,
-0xa75b, 0xa75b,
-0xa75d, 0xa75d,
-0xa75f, 0xa75f,
-0xa761, 0xa761,
-0xa763, 0xa763,
-0xa765, 0xa765,
-0xa767, 0xa767,
-0xa769, 0xa769,
-0xa76b, 0xa76b,
-0xa76d, 0xa76d,
-0xa76f, 0xa76f,
-0xa771, 0xa778,
-0xa77a, 0xa77a,
-0xa77c, 0xa77c,
-0xa77f, 0xa77f,
-0xa781, 0xa781,
-0xa783, 0xa783,
-0xa785, 0xa785,
-0xa787, 0xa787,
-0xa78c, 0xa78c,
-0xa78e, 0xa78e,
-0xa791, 0xa791,
-0xa793, 0xa795,
-0xa797, 0xa797,
-0xa799, 0xa799,
-0xa79b, 0xa79b,
-0xa79d, 0xa79d,
-0xa79f, 0xa79f,
-0xa7a1, 0xa7a1,
-0xa7a3, 0xa7a3,
-0xa7a5, 0xa7a5,
-0xa7a7, 0xa7a7,
-0xa7a9, 0xa7a9,
-0xa7b5, 0xa7b5,
-0xa7b7, 0xa7b7,
-0xa7fa, 0xa7fa,
-0xab30, 0xab5a,
-0xab60, 0xab65,
-0xab70, 0xabbf,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xff41, 0xff5a,
-0x10428, 0x1044f,
-0x10cc0, 0x10cf2,
-0x118c0, 0x118df,
-0x1d41a, 0x1d433,
-0x1d44e, 0x1d454,
-0x1d456, 0x1d467,
-0x1d482, 0x1d49b,
-0x1d4b6, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d4cf,
-0x1d4ea, 0x1d503,
-0x1d51e, 0x1d537,
-0x1d552, 0x1d56b,
-0x1d586, 0x1d59f,
-0x1d5ba, 0x1d5d3,
-0x1d5ee, 0x1d607,
-0x1d622, 0x1d63b,
-0x1d656, 0x1d66f,
-0x1d68a, 0x1d6a5,
-0x1d6c2, 0x1d6da,
-0x1d6dc, 0x1d6e1,
-0x1d6fc, 0x1d714,
-0x1d716, 0x1d71b,
-0x1d736, 0x1d74e,
-0x1d750, 0x1d755,
-0x1d770, 0x1d788,
-0x1d78a, 0x1d78f,
-0x1d7aa, 0x1d7c2,
-0x1d7c4, 0x1d7c9,
-0x1d7cb, 0x1d7cb,
-}; /* END of CR_Ll */
-
-/* PROPERTY: 'Lm': General Category */
-static const OnigCodePoint
-CR_Lm[] = { 56,
-0x02b0, 0x02c1,
-0x02c6, 0x02d1,
-0x02e0, 0x02e4,
-0x02ec, 0x02ec,
-0x02ee, 0x02ee,
-0x0374, 0x0374,
-0x037a, 0x037a,
-0x0559, 0x0559,
-0x0640, 0x0640,
-0x06e5, 0x06e6,
-0x07f4, 0x07f5,
-0x07fa, 0x07fa,
-0x081a, 0x081a,
-0x0824, 0x0824,
-0x0828, 0x0828,
-0x0971, 0x0971,
-0x0e46, 0x0e46,
-0x0ec6, 0x0ec6,
-0x10fc, 0x10fc,
-0x17d7, 0x17d7,
-0x1843, 0x1843,
-0x1aa7, 0x1aa7,
-0x1c78, 0x1c7d,
-0x1d2c, 0x1d6a,
-0x1d78, 0x1d78,
-0x1d9b, 0x1dbf,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x2c7c, 0x2c7d,
-0x2d6f, 0x2d6f,
-0x2e2f, 0x2e2f,
-0x3005, 0x3005,
-0x3031, 0x3035,
-0x303b, 0x303b,
-0x309d, 0x309e,
-0x30fc, 0x30fe,
-0xa015, 0xa015,
-0xa4f8, 0xa4fd,
-0xa60c, 0xa60c,
-0xa67f, 0xa67f,
-0xa69c, 0xa69d,
-0xa717, 0xa71f,
-0xa770, 0xa770,
-0xa788, 0xa788,
-0xa7f8, 0xa7f9,
-0xa9cf, 0xa9cf,
-0xa9e6, 0xa9e6,
-0xaa70, 0xaa70,
-0xaadd, 0xaadd,
-0xaaf3, 0xaaf4,
-0xab5c, 0xab5f,
-0xff70, 0xff70,
-0xff9e, 0xff9f,
-0x16b40, 0x16b43,
-0x16f93, 0x16f9f,
-}; /* END of CR_Lm */
-
-/* PROPERTY: 'Lo': General Category */
-static const OnigCodePoint
-CR_Lo[] = { 433,
-0x00aa, 0x00aa,
-0x00ba, 0x00ba,
-0x01bb, 0x01bb,
-0x01c0, 0x01c3,
-0x0294, 0x0294,
-0x05d0, 0x05ea,
-0x05f0, 0x05f2,
-0x0620, 0x063f,
-0x0641, 0x064a,
-0x066e, 0x066f,
-0x0671, 0x06d3,
-0x06d5, 0x06d5,
-0x06ee, 0x06ef,
-0x06fa, 0x06fc,
-0x06ff, 0x06ff,
-0x0710, 0x0710,
-0x0712, 0x072f,
-0x074d, 0x07a5,
-0x07b1, 0x07b1,
-0x07ca, 0x07ea,
-0x0800, 0x0815,
-0x0840, 0x0858,
-0x08a0, 0x08b4,
-0x0904, 0x0939,
-0x093d, 0x093d,
-0x0950, 0x0950,
-0x0958, 0x0961,
-0x0972, 0x0980,
-0x0985, 0x098c,
-0x098f, 0x0990,
-0x0993, 0x09a8,
-0x09aa, 0x09b0,
-0x09b2, 0x09b2,
-0x09b6, 0x09b9,
-0x09bd, 0x09bd,
-0x09ce, 0x09ce,
-0x09dc, 0x09dd,
-0x09df, 0x09e1,
-0x09f0, 0x09f1,
-0x0a05, 0x0a0a,
-0x0a0f, 0x0a10,
-0x0a13, 0x0a28,
-0x0a2a, 0x0a30,
-0x0a32, 0x0a33,
-0x0a35, 0x0a36,
-0x0a38, 0x0a39,
-0x0a59, 0x0a5c,
-0x0a5e, 0x0a5e,
-0x0a72, 0x0a74,
-0x0a85, 0x0a8d,
-0x0a8f, 0x0a91,
-0x0a93, 0x0aa8,
-0x0aaa, 0x0ab0,
-0x0ab2, 0x0ab3,
-0x0ab5, 0x0ab9,
-0x0abd, 0x0abd,
-0x0ad0, 0x0ad0,
-0x0ae0, 0x0ae1,
-0x0af9, 0x0af9,
-0x0b05, 0x0b0c,
-0x0b0f, 0x0b10,
-0x0b13, 0x0b28,
-0x0b2a, 0x0b30,
-0x0b32, 0x0b33,
-0x0b35, 0x0b39,
-0x0b3d, 0x0b3d,
-0x0b5c, 0x0b5d,
-0x0b5f, 0x0b61,
-0x0b71, 0x0b71,
-0x0b83, 0x0b83,
-0x0b85, 0x0b8a,
-0x0b8e, 0x0b90,
-0x0b92, 0x0b95,
-0x0b99, 0x0b9a,
-0x0b9c, 0x0b9c,
-0x0b9e, 0x0b9f,
-0x0ba3, 0x0ba4,
-0x0ba8, 0x0baa,
-0x0bae, 0x0bb9,
-0x0bd0, 0x0bd0,
-0x0c05, 0x0c0c,
-0x0c0e, 0x0c10,
-0x0c12, 0x0c28,
-0x0c2a, 0x0c39,
-0x0c3d, 0x0c3d,
-0x0c58, 0x0c5a,
-0x0c60, 0x0c61,
-0x0c85, 0x0c8c,
-0x0c8e, 0x0c90,
-0x0c92, 0x0ca8,
-0x0caa, 0x0cb3,
-0x0cb5, 0x0cb9,
-0x0cbd, 0x0cbd,
-0x0cde, 0x0cde,
-0x0ce0, 0x0ce1,
-0x0cf1, 0x0cf2,
-0x0d05, 0x0d0c,
-0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d3d,
-0x0d4e, 0x0d4e,
-0x0d5f, 0x0d61,
-0x0d7a, 0x0d7f,
-0x0d85, 0x0d96,
-0x0d9a, 0x0db1,
-0x0db3, 0x0dbb,
-0x0dbd, 0x0dbd,
-0x0dc0, 0x0dc6,
-0x0e01, 0x0e30,
-0x0e32, 0x0e33,
-0x0e40, 0x0e45,
-0x0e81, 0x0e82,
-0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
-0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb0,
-0x0eb2, 0x0eb3,
-0x0ebd, 0x0ebd,
-0x0ec0, 0x0ec4,
-0x0edc, 0x0edf,
-0x0f00, 0x0f00,
-0x0f40, 0x0f47,
-0x0f49, 0x0f6c,
-0x0f88, 0x0f8c,
-0x1000, 0x102a,
-0x103f, 0x103f,
-0x1050, 0x1055,
-0x105a, 0x105d,
-0x1061, 0x1061,
-0x1065, 0x1066,
-0x106e, 0x1070,
-0x1075, 0x1081,
-0x108e, 0x108e,
-0x10d0, 0x10fa,
-0x10fd, 0x1248,
-0x124a, 0x124d,
-0x1250, 0x1256,
-0x1258, 0x1258,
-0x125a, 0x125d,
-0x1260, 0x1288,
-0x128a, 0x128d,
-0x1290, 0x12b0,
-0x12b2, 0x12b5,
-0x12b8, 0x12be,
-0x12c0, 0x12c0,
-0x12c2, 0x12c5,
-0x12c8, 0x12d6,
-0x12d8, 0x1310,
-0x1312, 0x1315,
-0x1318, 0x135a,
-0x1380, 0x138f,
-0x1401, 0x166c,
-0x166f, 0x167f,
-0x1681, 0x169a,
-0x16a0, 0x16ea,
-0x16f1, 0x16f8,
-0x1700, 0x170c,
-0x170e, 0x1711,
-0x1720, 0x1731,
-0x1740, 0x1751,
-0x1760, 0x176c,
-0x176e, 0x1770,
-0x1780, 0x17b3,
-0x17dc, 0x17dc,
-0x1820, 0x1842,
-0x1844, 0x1877,
-0x1880, 0x18a8,
-0x18aa, 0x18aa,
-0x18b0, 0x18f5,
-0x1900, 0x191e,
-0x1950, 0x196d,
-0x1970, 0x1974,
-0x1980, 0x19ab,
-0x19b0, 0x19c9,
-0x1a00, 0x1a16,
-0x1a20, 0x1a54,
-0x1b05, 0x1b33,
-0x1b45, 0x1b4b,
-0x1b83, 0x1ba0,
-0x1bae, 0x1baf,
-0x1bba, 0x1be5,
-0x1c00, 0x1c23,
-0x1c4d, 0x1c4f,
-0x1c5a, 0x1c77,
-0x1ce9, 0x1cec,
-0x1cee, 0x1cf1,
-0x1cf5, 0x1cf6,
-0x2135, 0x2138,
-0x2d30, 0x2d67,
-0x2d80, 0x2d96,
-0x2da0, 0x2da6,
-0x2da8, 0x2dae,
-0x2db0, 0x2db6,
-0x2db8, 0x2dbe,
-0x2dc0, 0x2dc6,
-0x2dc8, 0x2dce,
-0x2dd0, 0x2dd6,
-0x2dd8, 0x2dde,
-0x3006, 0x3006,
-0x303c, 0x303c,
-0x3041, 0x3096,
-0x309f, 0x309f,
-0x30a1, 0x30fa,
-0x30ff, 0x30ff,
-0x3105, 0x312d,
-0x3131, 0x318e,
-0x31a0, 0x31ba,
-0x31f0, 0x31ff,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
-0xa000, 0xa014,
-0xa016, 0xa48c,
-0xa4d0, 0xa4f7,
-0xa500, 0xa60b,
-0xa610, 0xa61f,
-0xa62a, 0xa62b,
-0xa66e, 0xa66e,
-0xa6a0, 0xa6e5,
-0xa78f, 0xa78f,
-0xa7f7, 0xa7f7,
-0xa7fb, 0xa801,
-0xa803, 0xa805,
-0xa807, 0xa80a,
-0xa80c, 0xa822,
-0xa840, 0xa873,
-0xa882, 0xa8b3,
-0xa8f2, 0xa8f7,
-0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
-0xa90a, 0xa925,
-0xa930, 0xa946,
-0xa960, 0xa97c,
-0xa984, 0xa9b2,
-0xa9e0, 0xa9e4,
-0xa9e7, 0xa9ef,
-0xa9fa, 0xa9fe,
-0xaa00, 0xaa28,
-0xaa40, 0xaa42,
-0xaa44, 0xaa4b,
-0xaa60, 0xaa6f,
-0xaa71, 0xaa76,
-0xaa7a, 0xaa7a,
-0xaa7e, 0xaaaf,
-0xaab1, 0xaab1,
-0xaab5, 0xaab6,
-0xaab9, 0xaabd,
-0xaac0, 0xaac0,
-0xaac2, 0xaac2,
-0xaadb, 0xaadc,
-0xaae0, 0xaaea,
-0xaaf2, 0xaaf2,
-0xab01, 0xab06,
-0xab09, 0xab0e,
-0xab11, 0xab16,
-0xab20, 0xab26,
-0xab28, 0xab2e,
-0xabc0, 0xabe2,
-0xac00, 0xd7a3,
-0xd7b0, 0xd7c6,
-0xd7cb, 0xd7fb,
-0xf900, 0xfa6d,
-0xfa70, 0xfad9,
-0xfb1d, 0xfb1d,
-0xfb1f, 0xfb28,
-0xfb2a, 0xfb36,
-0xfb38, 0xfb3c,
-0xfb3e, 0xfb3e,
-0xfb40, 0xfb41,
-0xfb43, 0xfb44,
-0xfb46, 0xfbb1,
-0xfbd3, 0xfd3d,
-0xfd50, 0xfd8f,
-0xfd92, 0xfdc7,
-0xfdf0, 0xfdfb,
-0xfe70, 0xfe74,
-0xfe76, 0xfefc,
-0xff66, 0xff6f,
-0xff71, 0xff9d,
-0xffa0, 0xffbe,
-0xffc2, 0xffc7,
-0xffca, 0xffcf,
-0xffd2, 0xffd7,
-0xffda, 0xffdc,
-0x10000, 0x1000b,
-0x1000d, 0x10026,
-0x10028, 0x1003a,
-0x1003c, 0x1003d,
-0x1003f, 0x1004d,
-0x10050, 0x1005d,
-0x10080, 0x100fa,
-0x10280, 0x1029c,
-0x102a0, 0x102d0,
-0x10300, 0x1031f,
-0x10330, 0x10340,
-0x10342, 0x10349,
-0x10350, 0x10375,
-0x10380, 0x1039d,
-0x103a0, 0x103c3,
-0x103c8, 0x103cf,
-0x10450, 0x1049d,
-0x10500, 0x10527,
-0x10530, 0x10563,
-0x10600, 0x10736,
-0x10740, 0x10755,
-0x10760, 0x10767,
-0x10800, 0x10805,
-0x10808, 0x10808,
-0x1080a, 0x10835,
-0x10837, 0x10838,
-0x1083c, 0x1083c,
-0x1083f, 0x10855,
-0x10860, 0x10876,
-0x10880, 0x1089e,
-0x108e0, 0x108f2,
-0x108f4, 0x108f5,
-0x10900, 0x10915,
-0x10920, 0x10939,
-0x10980, 0x109b7,
-0x109be, 0x109bf,
-0x10a00, 0x10a00,
-0x10a10, 0x10a13,
-0x10a15, 0x10a17,
-0x10a19, 0x10a33,
-0x10a60, 0x10a7c,
-0x10a80, 0x10a9c,
-0x10ac0, 0x10ac7,
-0x10ac9, 0x10ae4,
-0x10b00, 0x10b35,
-0x10b40, 0x10b55,
-0x10b60, 0x10b72,
-0x10b80, 0x10b91,
-0x10c00, 0x10c48,
-0x11003, 0x11037,
-0x11083, 0x110af,
-0x110d0, 0x110e8,
-0x11103, 0x11126,
-0x11150, 0x11172,
-0x11176, 0x11176,
-0x11183, 0x111b2,
-0x111c1, 0x111c4,
-0x111da, 0x111da,
-0x111dc, 0x111dc,
-0x11200, 0x11211,
-0x11213, 0x1122b,
-0x11280, 0x11286,
-0x11288, 0x11288,
-0x1128a, 0x1128d,
-0x1128f, 0x1129d,
-0x1129f, 0x112a8,
-0x112b0, 0x112de,
-0x11305, 0x1130c,
-0x1130f, 0x11310,
-0x11313, 0x11328,
-0x1132a, 0x11330,
-0x11332, 0x11333,
-0x11335, 0x11339,
-0x1133d, 0x1133d,
-0x11350, 0x11350,
-0x1135d, 0x11361,
-0x11480, 0x114af,
-0x114c4, 0x114c5,
-0x114c7, 0x114c7,
-0x11580, 0x115ae,
-0x115d8, 0x115db,
-0x11600, 0x1162f,
-0x11644, 0x11644,
-0x11680, 0x116aa,
-0x11700, 0x11719,
-0x118ff, 0x118ff,
-0x11ac0, 0x11af8,
-0x12000, 0x12399,
-0x12480, 0x12543,
-0x13000, 0x1342e,
-0x14400, 0x14646,
-0x16800, 0x16a38,
-0x16a40, 0x16a5e,
-0x16ad0, 0x16aed,
-0x16b00, 0x16b2f,
-0x16b63, 0x16b77,
-0x16b7d, 0x16b8f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f50,
-0x1b000, 0x1b001,
-0x1bc00, 0x1bc6a,
-0x1bc70, 0x1bc7c,
-0x1bc80, 0x1bc88,
-0x1bc90, 0x1bc99,
-0x1e800, 0x1e8c4,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
-0x20000, 0x2a6d6,
-0x2a700, 0x2b734,
-0x2b740, 0x2b81d,
-0x2b820, 0x2cea1,
-0x2f800, 0x2fa1d,
-}; /* END of CR_Lo */
-
-/* PROPERTY: 'Lt': General Category */
-static const OnigCodePoint
-CR_Lt[] = { 10,
-0x01c5, 0x01c5,
-0x01c8, 0x01c8,
-0x01cb, 0x01cb,
-0x01f2, 0x01f2,
-0x1f88, 0x1f8f,
-0x1f98, 0x1f9f,
-0x1fa8, 0x1faf,
-0x1fbc, 0x1fbc,
-0x1fcc, 0x1fcc,
-0x1ffc, 0x1ffc,
-}; /* END of CR_Lt */
-
-/* PROPERTY: 'Lu': General Category */
-static const OnigCodePoint
-CR_Lu[] = { 625,
-0x0041, 0x005a,
-0x00c0, 0x00d6,
-0x00d8, 0x00de,
-0x0100, 0x0100,
-0x0102, 0x0102,
-0x0104, 0x0104,
-0x0106, 0x0106,
-0x0108, 0x0108,
-0x010a, 0x010a,
-0x010c, 0x010c,
-0x010e, 0x010e,
-0x0110, 0x0110,
-0x0112, 0x0112,
-0x0114, 0x0114,
-0x0116, 0x0116,
-0x0118, 0x0118,
-0x011a, 0x011a,
-0x011c, 0x011c,
-0x011e, 0x011e,
-0x0120, 0x0120,
-0x0122, 0x0122,
-0x0124, 0x0124,
-0x0126, 0x0126,
-0x0128, 0x0128,
-0x012a, 0x012a,
-0x012c, 0x012c,
-0x012e, 0x012e,
-0x0130, 0x0130,
-0x0132, 0x0132,
-0x0134, 0x0134,
-0x0136, 0x0136,
-0x0139, 0x0139,
-0x013b, 0x013b,
-0x013d, 0x013d,
-0x013f, 0x013f,
-0x0141, 0x0141,
-0x0143, 0x0143,
-0x0145, 0x0145,
-0x0147, 0x0147,
-0x014a, 0x014a,
-0x014c, 0x014c,
-0x014e, 0x014e,
-0x0150, 0x0150,
-0x0152, 0x0152,
-0x0154, 0x0154,
-0x0156, 0x0156,
-0x0158, 0x0158,
-0x015a, 0x015a,
-0x015c, 0x015c,
-0x015e, 0x015e,
-0x0160, 0x0160,
-0x0162, 0x0162,
-0x0164, 0x0164,
-0x0166, 0x0166,
-0x0168, 0x0168,
-0x016a, 0x016a,
-0x016c, 0x016c,
-0x016e, 0x016e,
-0x0170, 0x0170,
-0x0172, 0x0172,
-0x0174, 0x0174,
-0x0176, 0x0176,
-0x0178, 0x0179,
-0x017b, 0x017b,
-0x017d, 0x017d,
-0x0181, 0x0182,
-0x0184, 0x0184,
-0x0186, 0x0187,
-0x0189, 0x018b,
-0x018e, 0x0191,
-0x0193, 0x0194,
-0x0196, 0x0198,
-0x019c, 0x019d,
-0x019f, 0x01a0,
-0x01a2, 0x01a2,
-0x01a4, 0x01a4,
-0x01a6, 0x01a7,
-0x01a9, 0x01a9,
-0x01ac, 0x01ac,
-0x01ae, 0x01af,
-0x01b1, 0x01b3,
-0x01b5, 0x01b5,
-0x01b7, 0x01b8,
-0x01bc, 0x01bc,
-0x01c4, 0x01c4,
-0x01c7, 0x01c7,
-0x01ca, 0x01ca,
-0x01cd, 0x01cd,
-0x01cf, 0x01cf,
-0x01d1, 0x01d1,
-0x01d3, 0x01d3,
-0x01d5, 0x01d5,
-0x01d7, 0x01d7,
-0x01d9, 0x01d9,
-0x01db, 0x01db,
-0x01de, 0x01de,
-0x01e0, 0x01e0,
-0x01e2, 0x01e2,
-0x01e4, 0x01e4,
-0x01e6, 0x01e6,
-0x01e8, 0x01e8,
-0x01ea, 0x01ea,
-0x01ec, 0x01ec,
-0x01ee, 0x01ee,
-0x01f1, 0x01f1,
-0x01f4, 0x01f4,
-0x01f6, 0x01f8,
-0x01fa, 0x01fa,
-0x01fc, 0x01fc,
-0x01fe, 0x01fe,
-0x0200, 0x0200,
-0x0202, 0x0202,
-0x0204, 0x0204,
-0x0206, 0x0206,
-0x0208, 0x0208,
-0x020a, 0x020a,
-0x020c, 0x020c,
-0x020e, 0x020e,
-0x0210, 0x0210,
-0x0212, 0x0212,
-0x0214, 0x0214,
-0x0216, 0x0216,
-0x0218, 0x0218,
-0x021a, 0x021a,
-0x021c, 0x021c,
-0x021e, 0x021e,
-0x0220, 0x0220,
-0x0222, 0x0222,
-0x0224, 0x0224,
-0x0226, 0x0226,
-0x0228, 0x0228,
-0x022a, 0x022a,
-0x022c, 0x022c,
-0x022e, 0x022e,
-0x0230, 0x0230,
-0x0232, 0x0232,
-0x023a, 0x023b,
-0x023d, 0x023e,
-0x0241, 0x0241,
-0x0243, 0x0246,
-0x0248, 0x0248,
-0x024a, 0x024a,
-0x024c, 0x024c,
-0x024e, 0x024e,
-0x0370, 0x0370,
-0x0372, 0x0372,
-0x0376, 0x0376,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x038f,
-0x0391, 0x03a1,
-0x03a3, 0x03ab,
-0x03cf, 0x03cf,
-0x03d2, 0x03d4,
-0x03d8, 0x03d8,
-0x03da, 0x03da,
-0x03dc, 0x03dc,
-0x03de, 0x03de,
-0x03e0, 0x03e0,
-0x03e2, 0x03e2,
-0x03e4, 0x03e4,
-0x03e6, 0x03e6,
-0x03e8, 0x03e8,
-0x03ea, 0x03ea,
-0x03ec, 0x03ec,
-0x03ee, 0x03ee,
-0x03f4, 0x03f4,
-0x03f7, 0x03f7,
-0x03f9, 0x03fa,
-0x03fd, 0x042f,
-0x0460, 0x0460,
-0x0462, 0x0462,
-0x0464, 0x0464,
-0x0466, 0x0466,
-0x0468, 0x0468,
-0x046a, 0x046a,
-0x046c, 0x046c,
-0x046e, 0x046e,
-0x0470, 0x0470,
-0x0472, 0x0472,
-0x0474, 0x0474,
-0x0476, 0x0476,
-0x0478, 0x0478,
-0x047a, 0x047a,
-0x047c, 0x047c,
-0x047e, 0x047e,
-0x0480, 0x0480,
-0x048a, 0x048a,
-0x048c, 0x048c,
-0x048e, 0x048e,
-0x0490, 0x0490,
-0x0492, 0x0492,
-0x0494, 0x0494,
-0x0496, 0x0496,
-0x0498, 0x0498,
-0x049a, 0x049a,
-0x049c, 0x049c,
-0x049e, 0x049e,
-0x04a0, 0x04a0,
-0x04a2, 0x04a2,
-0x04a4, 0x04a4,
-0x04a6, 0x04a6,
-0x04a8, 0x04a8,
-0x04aa, 0x04aa,
-0x04ac, 0x04ac,
-0x04ae, 0x04ae,
-0x04b0, 0x04b0,
-0x04b2, 0x04b2,
-0x04b4, 0x04b4,
-0x04b6, 0x04b6,
-0x04b8, 0x04b8,
-0x04ba, 0x04ba,
-0x04bc, 0x04bc,
-0x04be, 0x04be,
-0x04c0, 0x04c1,
-0x04c3, 0x04c3,
-0x04c5, 0x04c5,
-0x04c7, 0x04c7,
-0x04c9, 0x04c9,
-0x04cb, 0x04cb,
-0x04cd, 0x04cd,
-0x04d0, 0x04d0,
-0x04d2, 0x04d2,
-0x04d4, 0x04d4,
-0x04d6, 0x04d6,
-0x04d8, 0x04d8,
-0x04da, 0x04da,
-0x04dc, 0x04dc,
-0x04de, 0x04de,
-0x04e0, 0x04e0,
-0x04e2, 0x04e2,
-0x04e4, 0x04e4,
-0x04e6, 0x04e6,
-0x04e8, 0x04e8,
-0x04ea, 0x04ea,
-0x04ec, 0x04ec,
-0x04ee, 0x04ee,
-0x04f0, 0x04f0,
-0x04f2, 0x04f2,
-0x04f4, 0x04f4,
-0x04f6, 0x04f6,
-0x04f8, 0x04f8,
-0x04fa, 0x04fa,
-0x04fc, 0x04fc,
-0x04fe, 0x04fe,
-0x0500, 0x0500,
-0x0502, 0x0502,
-0x0504, 0x0504,
-0x0506, 0x0506,
-0x0508, 0x0508,
-0x050a, 0x050a,
-0x050c, 0x050c,
-0x050e, 0x050e,
-0x0510, 0x0510,
-0x0512, 0x0512,
-0x0514, 0x0514,
-0x0516, 0x0516,
-0x0518, 0x0518,
-0x051a, 0x051a,
-0x051c, 0x051c,
-0x051e, 0x051e,
-0x0520, 0x0520,
-0x0522, 0x0522,
-0x0524, 0x0524,
-0x0526, 0x0526,
-0x0528, 0x0528,
-0x052a, 0x052a,
-0x052c, 0x052c,
-0x052e, 0x052e,
-0x0531, 0x0556,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x13a0, 0x13f5,
-0x1e00, 0x1e00,
-0x1e02, 0x1e02,
-0x1e04, 0x1e04,
-0x1e06, 0x1e06,
-0x1e08, 0x1e08,
-0x1e0a, 0x1e0a,
-0x1e0c, 0x1e0c,
-0x1e0e, 0x1e0e,
-0x1e10, 0x1e10,
-0x1e12, 0x1e12,
-0x1e14, 0x1e14,
-0x1e16, 0x1e16,
-0x1e18, 0x1e18,
-0x1e1a, 0x1e1a,
-0x1e1c, 0x1e1c,
-0x1e1e, 0x1e1e,
-0x1e20, 0x1e20,
-0x1e22, 0x1e22,
-0x1e24, 0x1e24,
-0x1e26, 0x1e26,
-0x1e28, 0x1e28,
-0x1e2a, 0x1e2a,
-0x1e2c, 0x1e2c,
-0x1e2e, 0x1e2e,
-0x1e30, 0x1e30,
-0x1e32, 0x1e32,
-0x1e34, 0x1e34,
-0x1e36, 0x1e36,
-0x1e38, 0x1e38,
-0x1e3a, 0x1e3a,
-0x1e3c, 0x1e3c,
-0x1e3e, 0x1e3e,
-0x1e40, 0x1e40,
-0x1e42, 0x1e42,
-0x1e44, 0x1e44,
-0x1e46, 0x1e46,
-0x1e48, 0x1e48,
-0x1e4a, 0x1e4a,
-0x1e4c, 0x1e4c,
-0x1e4e, 0x1e4e,
-0x1e50, 0x1e50,
-0x1e52, 0x1e52,
-0x1e54, 0x1e54,
-0x1e56, 0x1e56,
-0x1e58, 0x1e58,
-0x1e5a, 0x1e5a,
-0x1e5c, 0x1e5c,
-0x1e5e, 0x1e5e,
-0x1e60, 0x1e60,
-0x1e62, 0x1e62,
-0x1e64, 0x1e64,
-0x1e66, 0x1e66,
-0x1e68, 0x1e68,
-0x1e6a, 0x1e6a,
-0x1e6c, 0x1e6c,
-0x1e6e, 0x1e6e,
-0x1e70, 0x1e70,
-0x1e72, 0x1e72,
-0x1e74, 0x1e74,
-0x1e76, 0x1e76,
-0x1e78, 0x1e78,
-0x1e7a, 0x1e7a,
-0x1e7c, 0x1e7c,
-0x1e7e, 0x1e7e,
-0x1e80, 0x1e80,
-0x1e82, 0x1e82,
-0x1e84, 0x1e84,
-0x1e86, 0x1e86,
-0x1e88, 0x1e88,
-0x1e8a, 0x1e8a,
-0x1e8c, 0x1e8c,
-0x1e8e, 0x1e8e,
-0x1e90, 0x1e90,
-0x1e92, 0x1e92,
-0x1e94, 0x1e94,
-0x1e9e, 0x1e9e,
-0x1ea0, 0x1ea0,
-0x1ea2, 0x1ea2,
-0x1ea4, 0x1ea4,
-0x1ea6, 0x1ea6,
-0x1ea8, 0x1ea8,
-0x1eaa, 0x1eaa,
-0x1eac, 0x1eac,
-0x1eae, 0x1eae,
-0x1eb0, 0x1eb0,
-0x1eb2, 0x1eb2,
-0x1eb4, 0x1eb4,
-0x1eb6, 0x1eb6,
-0x1eb8, 0x1eb8,
-0x1eba, 0x1eba,
-0x1ebc, 0x1ebc,
-0x1ebe, 0x1ebe,
-0x1ec0, 0x1ec0,
-0x1ec2, 0x1ec2,
-0x1ec4, 0x1ec4,
-0x1ec6, 0x1ec6,
-0x1ec8, 0x1ec8,
-0x1eca, 0x1eca,
-0x1ecc, 0x1ecc,
-0x1ece, 0x1ece,
-0x1ed0, 0x1ed0,
-0x1ed2, 0x1ed2,
-0x1ed4, 0x1ed4,
-0x1ed6, 0x1ed6,
-0x1ed8, 0x1ed8,
-0x1eda, 0x1eda,
-0x1edc, 0x1edc,
-0x1ede, 0x1ede,
-0x1ee0, 0x1ee0,
-0x1ee2, 0x1ee2,
-0x1ee4, 0x1ee4,
-0x1ee6, 0x1ee6,
-0x1ee8, 0x1ee8,
-0x1eea, 0x1eea,
-0x1eec, 0x1eec,
-0x1eee, 0x1eee,
-0x1ef0, 0x1ef0,
-0x1ef2, 0x1ef2,
-0x1ef4, 0x1ef4,
-0x1ef6, 0x1ef6,
-0x1ef8, 0x1ef8,
-0x1efa, 0x1efa,
-0x1efc, 0x1efc,
-0x1efe, 0x1efe,
-0x1f08, 0x1f0f,
-0x1f18, 0x1f1d,
-0x1f28, 0x1f2f,
-0x1f38, 0x1f3f,
-0x1f48, 0x1f4d,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f5f,
-0x1f68, 0x1f6f,
-0x1fb8, 0x1fbb,
-0x1fc8, 0x1fcb,
-0x1fd8, 0x1fdb,
-0x1fe8, 0x1fec,
-0x1ff8, 0x1ffb,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210b, 0x210d,
-0x2110, 0x2112,
-0x2115, 0x2115,
-0x2119, 0x211d,
-0x2124, 0x2124,
-0x2126, 0x2126,
-0x2128, 0x2128,
-0x212a, 0x212d,
-0x2130, 0x2133,
-0x213e, 0x213f,
-0x2145, 0x2145,
-0x2183, 0x2183,
-0x2c00, 0x2c2e,
-0x2c60, 0x2c60,
-0x2c62, 0x2c64,
-0x2c67, 0x2c67,
-0x2c69, 0x2c69,
-0x2c6b, 0x2c6b,
-0x2c6d, 0x2c70,
-0x2c72, 0x2c72,
-0x2c75, 0x2c75,
-0x2c7e, 0x2c80,
-0x2c82, 0x2c82,
-0x2c84, 0x2c84,
-0x2c86, 0x2c86,
-0x2c88, 0x2c88,
-0x2c8a, 0x2c8a,
-0x2c8c, 0x2c8c,
-0x2c8e, 0x2c8e,
-0x2c90, 0x2c90,
-0x2c92, 0x2c92,
-0x2c94, 0x2c94,
-0x2c96, 0x2c96,
-0x2c98, 0x2c98,
-0x2c9a, 0x2c9a,
-0x2c9c, 0x2c9c,
-0x2c9e, 0x2c9e,
-0x2ca0, 0x2ca0,
-0x2ca2, 0x2ca2,
-0x2ca4, 0x2ca4,
-0x2ca6, 0x2ca6,
-0x2ca8, 0x2ca8,
-0x2caa, 0x2caa,
-0x2cac, 0x2cac,
-0x2cae, 0x2cae,
-0x2cb0, 0x2cb0,
-0x2cb2, 0x2cb2,
-0x2cb4, 0x2cb4,
-0x2cb6, 0x2cb6,
-0x2cb8, 0x2cb8,
-0x2cba, 0x2cba,
-0x2cbc, 0x2cbc,
-0x2cbe, 0x2cbe,
-0x2cc0, 0x2cc0,
-0x2cc2, 0x2cc2,
-0x2cc4, 0x2cc4,
-0x2cc6, 0x2cc6,
-0x2cc8, 0x2cc8,
-0x2cca, 0x2cca,
-0x2ccc, 0x2ccc,
-0x2cce, 0x2cce,
-0x2cd0, 0x2cd0,
-0x2cd2, 0x2cd2,
-0x2cd4, 0x2cd4,
-0x2cd6, 0x2cd6,
-0x2cd8, 0x2cd8,
-0x2cda, 0x2cda,
-0x2cdc, 0x2cdc,
-0x2cde, 0x2cde,
-0x2ce0, 0x2ce0,
-0x2ce2, 0x2ce2,
-0x2ceb, 0x2ceb,
-0x2ced, 0x2ced,
-0x2cf2, 0x2cf2,
-0xa640, 0xa640,
-0xa642, 0xa642,
-0xa644, 0xa644,
-0xa646, 0xa646,
-0xa648, 0xa648,
-0xa64a, 0xa64a,
-0xa64c, 0xa64c,
-0xa64e, 0xa64e,
-0xa650, 0xa650,
-0xa652, 0xa652,
-0xa654, 0xa654,
-0xa656, 0xa656,
-0xa658, 0xa658,
-0xa65a, 0xa65a,
-0xa65c, 0xa65c,
-0xa65e, 0xa65e,
-0xa660, 0xa660,
-0xa662, 0xa662,
-0xa664, 0xa664,
-0xa666, 0xa666,
-0xa668, 0xa668,
-0xa66a, 0xa66a,
-0xa66c, 0xa66c,
-0xa680, 0xa680,
-0xa682, 0xa682,
-0xa684, 0xa684,
-0xa686, 0xa686,
-0xa688, 0xa688,
-0xa68a, 0xa68a,
-0xa68c, 0xa68c,
-0xa68e, 0xa68e,
-0xa690, 0xa690,
-0xa692, 0xa692,
-0xa694, 0xa694,
-0xa696, 0xa696,
-0xa698, 0xa698,
-0xa69a, 0xa69a,
-0xa722, 0xa722,
-0xa724, 0xa724,
-0xa726, 0xa726,
-0xa728, 0xa728,
-0xa72a, 0xa72a,
-0xa72c, 0xa72c,
-0xa72e, 0xa72e,
-0xa732, 0xa732,
-0xa734, 0xa734,
-0xa736, 0xa736,
-0xa738, 0xa738,
-0xa73a, 0xa73a,
-0xa73c, 0xa73c,
-0xa73e, 0xa73e,
-0xa740, 0xa740,
-0xa742, 0xa742,
-0xa744, 0xa744,
-0xa746, 0xa746,
-0xa748, 0xa748,
-0xa74a, 0xa74a,
-0xa74c, 0xa74c,
-0xa74e, 0xa74e,
-0xa750, 0xa750,
-0xa752, 0xa752,
-0xa754, 0xa754,
-0xa756, 0xa756,
-0xa758, 0xa758,
-0xa75a, 0xa75a,
-0xa75c, 0xa75c,
-0xa75e, 0xa75e,
-0xa760, 0xa760,
-0xa762, 0xa762,
-0xa764, 0xa764,
-0xa766, 0xa766,
-0xa768, 0xa768,
-0xa76a, 0xa76a,
-0xa76c, 0xa76c,
-0xa76e, 0xa76e,
-0xa779, 0xa779,
-0xa77b, 0xa77b,
-0xa77d, 0xa77e,
-0xa780, 0xa780,
-0xa782, 0xa782,
-0xa784, 0xa784,
-0xa786, 0xa786,
-0xa78b, 0xa78b,
-0xa78d, 0xa78d,
-0xa790, 0xa790,
-0xa792, 0xa792,
-0xa796, 0xa796,
-0xa798, 0xa798,
-0xa79a, 0xa79a,
-0xa79c, 0xa79c,
-0xa79e, 0xa79e,
-0xa7a0, 0xa7a0,
-0xa7a2, 0xa7a2,
-0xa7a4, 0xa7a4,
-0xa7a6, 0xa7a6,
-0xa7a8, 0xa7a8,
-0xa7aa, 0xa7ad,
-0xa7b0, 0xa7b4,
-0xa7b6, 0xa7b6,
-0xff21, 0xff3a,
-0x10400, 0x10427,
-0x10c80, 0x10cb2,
-0x118a0, 0x118bf,
-0x1d400, 0x1d419,
-0x1d434, 0x1d44d,
-0x1d468, 0x1d481,
-0x1d49c, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b5,
-0x1d4d0, 0x1d4e9,
-0x1d504, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d538, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d56c, 0x1d585,
-0x1d5a0, 0x1d5b9,
-0x1d5d4, 0x1d5ed,
-0x1d608, 0x1d621,
-0x1d63c, 0x1d655,
-0x1d670, 0x1d689,
-0x1d6a8, 0x1d6c0,
-0x1d6e2, 0x1d6fa,
-0x1d71c, 0x1d734,
-0x1d756, 0x1d76e,
-0x1d790, 0x1d7a8,
-0x1d7ca, 0x1d7ca,
-}; /* END of CR_Lu */
-
-/* PROPERTY: 'M': Major Category */
-static const OnigCodePoint
-CR_M[] = { 236,
-0x0300, 0x036f,
-0x0483, 0x0489,
-0x0591, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c5,
-0x05c7, 0x05c7,
-0x0610, 0x061a,
-0x064b, 0x065f,
-0x0670, 0x0670,
-0x06d6, 0x06dc,
-0x06df, 0x06e4,
-0x06e7, 0x06e8,
-0x06ea, 0x06ed,
-0x0711, 0x0711,
-0x0730, 0x074a,
-0x07a6, 0x07b0,
-0x07eb, 0x07f3,
-0x0816, 0x0819,
-0x081b, 0x0823,
-0x0825, 0x0827,
-0x0829, 0x082d,
-0x0859, 0x085b,
-0x08e3, 0x0903,
-0x093a, 0x093c,
-0x093e, 0x094f,
-0x0951, 0x0957,
-0x0962, 0x0963,
-0x0981, 0x0983,
-0x09bc, 0x09bc,
-0x09be, 0x09c4,
-0x09c7, 0x09c8,
-0x09cb, 0x09cd,
-0x09d7, 0x09d7,
-0x09e2, 0x09e3,
-0x0a01, 0x0a03,
-0x0a3c, 0x0a3c,
-0x0a3e, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4d,
-0x0a51, 0x0a51,
-0x0a70, 0x0a71,
-0x0a75, 0x0a75,
-0x0a81, 0x0a83,
-0x0abc, 0x0abc,
-0x0abe, 0x0ac5,
-0x0ac7, 0x0ac9,
-0x0acb, 0x0acd,
-0x0ae2, 0x0ae3,
-0x0b01, 0x0b03,
-0x0b3c, 0x0b3c,
-0x0b3e, 0x0b44,
-0x0b47, 0x0b48,
-0x0b4b, 0x0b4d,
-0x0b56, 0x0b57,
-0x0b62, 0x0b63,
-0x0b82, 0x0b82,
-0x0bbe, 0x0bc2,
-0x0bc6, 0x0bc8,
-0x0bca, 0x0bcd,
-0x0bd7, 0x0bd7,
-0x0c00, 0x0c03,
-0x0c3e, 0x0c44,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4d,
-0x0c55, 0x0c56,
-0x0c62, 0x0c63,
-0x0c81, 0x0c83,
-0x0cbc, 0x0cbc,
-0x0cbe, 0x0cc4,
-0x0cc6, 0x0cc8,
-0x0cca, 0x0ccd,
-0x0cd5, 0x0cd6,
-0x0ce2, 0x0ce3,
-0x0d01, 0x0d03,
-0x0d3e, 0x0d44,
-0x0d46, 0x0d48,
-0x0d4a, 0x0d4d,
-0x0d57, 0x0d57,
-0x0d62, 0x0d63,
-0x0d82, 0x0d83,
-0x0dca, 0x0dca,
-0x0dcf, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0dd8, 0x0ddf,
-0x0df2, 0x0df3,
-0x0e31, 0x0e31,
-0x0e34, 0x0e3a,
-0x0e47, 0x0e4e,
-0x0eb1, 0x0eb1,
-0x0eb4, 0x0eb9,
-0x0ebb, 0x0ebc,
-0x0ec8, 0x0ecd,
-0x0f18, 0x0f19,
-0x0f35, 0x0f35,
-0x0f37, 0x0f37,
-0x0f39, 0x0f39,
-0x0f3e, 0x0f3f,
-0x0f71, 0x0f84,
-0x0f86, 0x0f87,
-0x0f8d, 0x0f97,
-0x0f99, 0x0fbc,
-0x0fc6, 0x0fc6,
-0x102b, 0x103e,
-0x1056, 0x1059,
-0x105e, 0x1060,
-0x1062, 0x1064,
-0x1067, 0x106d,
-0x1071, 0x1074,
-0x1082, 0x108d,
-0x108f, 0x108f,
-0x109a, 0x109d,
-0x135d, 0x135f,
-0x1712, 0x1714,
-0x1732, 0x1734,
-0x1752, 0x1753,
-0x1772, 0x1773,
-0x17b4, 0x17d3,
-0x17dd, 0x17dd,
-0x180b, 0x180d,
-0x18a9, 0x18a9,
-0x1920, 0x192b,
-0x1930, 0x193b,
-0x1a17, 0x1a1b,
-0x1a55, 0x1a5e,
-0x1a60, 0x1a7c,
-0x1a7f, 0x1a7f,
-0x1ab0, 0x1abe,
-0x1b00, 0x1b04,
-0x1b34, 0x1b44,
-0x1b6b, 0x1b73,
-0x1b80, 0x1b82,
-0x1ba1, 0x1bad,
-0x1be6, 0x1bf3,
-0x1c24, 0x1c37,
-0x1cd0, 0x1cd2,
-0x1cd4, 0x1ce8,
-0x1ced, 0x1ced,
-0x1cf2, 0x1cf4,
-0x1cf8, 0x1cf9,
-0x1dc0, 0x1df5,
-0x1dfc, 0x1dff,
-0x20d0, 0x20f0,
-0x2cef, 0x2cf1,
-0x2d7f, 0x2d7f,
-0x2de0, 0x2dff,
-0x302a, 0x302f,
-0x3099, 0x309a,
-0xa66f, 0xa672,
-0xa674, 0xa67d,
-0xa69e, 0xa69f,
-0xa6f0, 0xa6f1,
-0xa802, 0xa802,
-0xa806, 0xa806,
-0xa80b, 0xa80b,
-0xa823, 0xa827,
-0xa880, 0xa881,
-0xa8b4, 0xa8c4,
-0xa8e0, 0xa8f1,
-0xa926, 0xa92d,
-0xa947, 0xa953,
-0xa980, 0xa983,
-0xa9b3, 0xa9c0,
-0xa9e5, 0xa9e5,
-0xaa29, 0xaa36,
-0xaa43, 0xaa43,
-0xaa4c, 0xaa4d,
-0xaa7b, 0xaa7d,
-0xaab0, 0xaab0,
-0xaab2, 0xaab4,
-0xaab7, 0xaab8,
-0xaabe, 0xaabf,
-0xaac1, 0xaac1,
-0xaaeb, 0xaaef,
-0xaaf5, 0xaaf6,
-0xabe3, 0xabea,
-0xabec, 0xabed,
-0xfb1e, 0xfb1e,
-0xfe00, 0xfe0f,
-0xfe20, 0xfe2f,
-0x101fd, 0x101fd,
-0x102e0, 0x102e0,
-0x10376, 0x1037a,
-0x10a01, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a0f,
-0x10a38, 0x10a3a,
-0x10a3f, 0x10a3f,
-0x10ae5, 0x10ae6,
-0x11000, 0x11002,
-0x11038, 0x11046,
-0x1107f, 0x11082,
-0x110b0, 0x110ba,
-0x11100, 0x11102,
-0x11127, 0x11134,
-0x11173, 0x11173,
-0x11180, 0x11182,
-0x111b3, 0x111c0,
-0x111ca, 0x111cc,
-0x1122c, 0x11237,
-0x112df, 0x112ea,
-0x11300, 0x11303,
-0x1133c, 0x1133c,
-0x1133e, 0x11344,
-0x11347, 0x11348,
-0x1134b, 0x1134d,
-0x11357, 0x11357,
-0x11362, 0x11363,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-0x114b0, 0x114c3,
-0x115af, 0x115b5,
-0x115b8, 0x115c0,
-0x115dc, 0x115dd,
-0x11630, 0x11640,
-0x116ab, 0x116b7,
-0x1171d, 0x1172b,
-0x16af0, 0x16af4,
-0x16b30, 0x16b36,
-0x16f51, 0x16f7e,
-0x16f8f, 0x16f92,
-0x1bc9d, 0x1bc9e,
-0x1d165, 0x1d169,
-0x1d16d, 0x1d172,
-0x1d17b, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0x1d242, 0x1d244,
-0x1da00, 0x1da36,
-0x1da3b, 0x1da6c,
-0x1da75, 0x1da75,
-0x1da84, 0x1da84,
-0x1da9b, 0x1da9f,
-0x1daa1, 0x1daaf,
-0x1e8d0, 0x1e8d6,
-0xe0100, 0xe01ef,
-}; /* END of CR_M */
-
-/* PROPERTY: 'Mc': General Category */
-static const OnigCodePoint
-CR_Mc[] = { 147,
-0x0903, 0x0903,
-0x093b, 0x093b,
-0x093e, 0x0940,
-0x0949, 0x094c,
-0x094e, 0x094f,
-0x0982, 0x0983,
-0x09be, 0x09c0,
-0x09c7, 0x09c8,
-0x09cb, 0x09cc,
-0x09d7, 0x09d7,
-0x0a03, 0x0a03,
-0x0a3e, 0x0a40,
-0x0a83, 0x0a83,
-0x0abe, 0x0ac0,
-0x0ac9, 0x0ac9,
-0x0acb, 0x0acc,
-0x0b02, 0x0b03,
-0x0b3e, 0x0b3e,
-0x0b40, 0x0b40,
-0x0b47, 0x0b48,
-0x0b4b, 0x0b4c,
-0x0b57, 0x0b57,
-0x0bbe, 0x0bbf,
-0x0bc1, 0x0bc2,
-0x0bc6, 0x0bc8,
-0x0bca, 0x0bcc,
-0x0bd7, 0x0bd7,
-0x0c01, 0x0c03,
-0x0c41, 0x0c44,
-0x0c82, 0x0c83,
-0x0cbe, 0x0cbe,
-0x0cc0, 0x0cc4,
-0x0cc7, 0x0cc8,
-0x0cca, 0x0ccb,
-0x0cd5, 0x0cd6,
-0x0d02, 0x0d03,
-0x0d3e, 0x0d40,
-0x0d46, 0x0d48,
-0x0d4a, 0x0d4c,
-0x0d57, 0x0d57,
-0x0d82, 0x0d83,
-0x0dcf, 0x0dd1,
-0x0dd8, 0x0ddf,
-0x0df2, 0x0df3,
-0x0f3e, 0x0f3f,
-0x0f7f, 0x0f7f,
-0x102b, 0x102c,
-0x1031, 0x1031,
-0x1038, 0x1038,
-0x103b, 0x103c,
-0x1056, 0x1057,
-0x1062, 0x1064,
-0x1067, 0x106d,
-0x1083, 0x1084,
-0x1087, 0x108c,
-0x108f, 0x108f,
-0x109a, 0x109c,
-0x17b6, 0x17b6,
-0x17be, 0x17c5,
-0x17c7, 0x17c8,
-0x1923, 0x1926,
-0x1929, 0x192b,
-0x1930, 0x1931,
-0x1933, 0x1938,
-0x1a19, 0x1a1a,
-0x1a55, 0x1a55,
-0x1a57, 0x1a57,
-0x1a61, 0x1a61,
-0x1a63, 0x1a64,
-0x1a6d, 0x1a72,
-0x1b04, 0x1b04,
-0x1b35, 0x1b35,
-0x1b3b, 0x1b3b,
-0x1b3d, 0x1b41,
-0x1b43, 0x1b44,
-0x1b82, 0x1b82,
-0x1ba1, 0x1ba1,
-0x1ba6, 0x1ba7,
-0x1baa, 0x1baa,
-0x1be7, 0x1be7,
-0x1bea, 0x1bec,
-0x1bee, 0x1bee,
-0x1bf2, 0x1bf3,
-0x1c24, 0x1c2b,
-0x1c34, 0x1c35,
-0x1ce1, 0x1ce1,
-0x1cf2, 0x1cf3,
-0x302e, 0x302f,
-0xa823, 0xa824,
-0xa827, 0xa827,
-0xa880, 0xa881,
-0xa8b4, 0xa8c3,
-0xa952, 0xa953,
-0xa983, 0xa983,
-0xa9b4, 0xa9b5,
-0xa9ba, 0xa9bb,
-0xa9bd, 0xa9c0,
-0xaa2f, 0xaa30,
-0xaa33, 0xaa34,
-0xaa4d, 0xaa4d,
-0xaa7b, 0xaa7b,
-0xaa7d, 0xaa7d,
-0xaaeb, 0xaaeb,
-0xaaee, 0xaaef,
-0xaaf5, 0xaaf5,
-0xabe3, 0xabe4,
-0xabe6, 0xabe7,
-0xabe9, 0xabea,
-0xabec, 0xabec,
-0x11000, 0x11000,
-0x11002, 0x11002,
-0x11082, 0x11082,
-0x110b0, 0x110b2,
-0x110b7, 0x110b8,
-0x1112c, 0x1112c,
-0x11182, 0x11182,
-0x111b3, 0x111b5,
-0x111bf, 0x111c0,
-0x1122c, 0x1122e,
-0x11232, 0x11233,
-0x11235, 0x11235,
-0x112e0, 0x112e2,
-0x11302, 0x11303,
-0x1133e, 0x1133f,
-0x11341, 0x11344,
-0x11347, 0x11348,
-0x1134b, 0x1134d,
-0x11357, 0x11357,
-0x11362, 0x11363,
-0x114b0, 0x114b2,
-0x114b9, 0x114b9,
-0x114bb, 0x114be,
-0x114c1, 0x114c1,
-0x115af, 0x115b1,
-0x115b8, 0x115bb,
-0x115be, 0x115be,
-0x11630, 0x11632,
-0x1163b, 0x1163c,
-0x1163e, 0x1163e,
-0x116ac, 0x116ac,
-0x116ae, 0x116af,
-0x116b6, 0x116b6,
-0x11720, 0x11721,
-0x11726, 0x11726,
-0x16f51, 0x16f7e,
-0x1d165, 0x1d166,
-0x1d16d, 0x1d172,
-}; /* END of CR_Mc */
-
-/* PROPERTY: 'Me': General Category */
-static const OnigCodePoint
-CR_Me[] = { 5,
-0x0488, 0x0489,
-0x1abe, 0x1abe,
-0x20dd, 0x20e0,
-0x20e2, 0x20e4,
-0xa670, 0xa672,
-}; /* END of CR_Me */
-
-/* PROPERTY: 'Mn': General Category */
-static const OnigCodePoint
-CR_Mn[] = { 266,
-0x0300, 0x036f,
-0x0483, 0x0487,
-0x0591, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c5,
-0x05c7, 0x05c7,
-0x0610, 0x061a,
-0x064b, 0x065f,
-0x0670, 0x0670,
-0x06d6, 0x06dc,
-0x06df, 0x06e4,
-0x06e7, 0x06e8,
-0x06ea, 0x06ed,
-0x0711, 0x0711,
-0x0730, 0x074a,
-0x07a6, 0x07b0,
-0x07eb, 0x07f3,
-0x0816, 0x0819,
-0x081b, 0x0823,
-0x0825, 0x0827,
-0x0829, 0x082d,
-0x0859, 0x085b,
-0x08e3, 0x0902,
-0x093a, 0x093a,
-0x093c, 0x093c,
-0x0941, 0x0948,
-0x094d, 0x094d,
-0x0951, 0x0957,
-0x0962, 0x0963,
-0x0981, 0x0981,
-0x09bc, 0x09bc,
-0x09c1, 0x09c4,
-0x09cd, 0x09cd,
-0x09e2, 0x09e3,
-0x0a01, 0x0a02,
-0x0a3c, 0x0a3c,
-0x0a41, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4d,
-0x0a51, 0x0a51,
-0x0a70, 0x0a71,
-0x0a75, 0x0a75,
-0x0a81, 0x0a82,
-0x0abc, 0x0abc,
-0x0ac1, 0x0ac5,
-0x0ac7, 0x0ac8,
-0x0acd, 0x0acd,
-0x0ae2, 0x0ae3,
-0x0b01, 0x0b01,
-0x0b3c, 0x0b3c,
-0x0b3f, 0x0b3f,
-0x0b41, 0x0b44,
-0x0b4d, 0x0b4d,
-0x0b56, 0x0b56,
-0x0b62, 0x0b63,
-0x0b82, 0x0b82,
-0x0bc0, 0x0bc0,
-0x0bcd, 0x0bcd,
-0x0c00, 0x0c00,
-0x0c3e, 0x0c40,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4d,
-0x0c55, 0x0c56,
-0x0c62, 0x0c63,
-0x0c81, 0x0c81,
-0x0cbc, 0x0cbc,
-0x0cbf, 0x0cbf,
-0x0cc6, 0x0cc6,
-0x0ccc, 0x0ccd,
-0x0ce2, 0x0ce3,
-0x0d01, 0x0d01,
-0x0d41, 0x0d44,
-0x0d4d, 0x0d4d,
-0x0d62, 0x0d63,
-0x0dca, 0x0dca,
-0x0dd2, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0e31, 0x0e31,
-0x0e34, 0x0e3a,
-0x0e47, 0x0e4e,
-0x0eb1, 0x0eb1,
-0x0eb4, 0x0eb9,
-0x0ebb, 0x0ebc,
-0x0ec8, 0x0ecd,
-0x0f18, 0x0f19,
-0x0f35, 0x0f35,
-0x0f37, 0x0f37,
-0x0f39, 0x0f39,
-0x0f71, 0x0f7e,
-0x0f80, 0x0f84,
-0x0f86, 0x0f87,
-0x0f8d, 0x0f97,
-0x0f99, 0x0fbc,
-0x0fc6, 0x0fc6,
-0x102d, 0x1030,
-0x1032, 0x1037,
-0x1039, 0x103a,
-0x103d, 0x103e,
-0x1058, 0x1059,
-0x105e, 0x1060,
-0x1071, 0x1074,
-0x1082, 0x1082,
-0x1085, 0x1086,
-0x108d, 0x108d,
-0x109d, 0x109d,
-0x135d, 0x135f,
-0x1712, 0x1714,
-0x1732, 0x1734,
-0x1752, 0x1753,
-0x1772, 0x1773,
-0x17b4, 0x17b5,
-0x17b7, 0x17bd,
-0x17c6, 0x17c6,
-0x17c9, 0x17d3,
-0x17dd, 0x17dd,
-0x180b, 0x180d,
-0x18a9, 0x18a9,
-0x1920, 0x1922,
-0x1927, 0x1928,
-0x1932, 0x1932,
-0x1939, 0x193b,
-0x1a17, 0x1a18,
-0x1a1b, 0x1a1b,
-0x1a56, 0x1a56,
-0x1a58, 0x1a5e,
-0x1a60, 0x1a60,
-0x1a62, 0x1a62,
-0x1a65, 0x1a6c,
-0x1a73, 0x1a7c,
-0x1a7f, 0x1a7f,
-0x1ab0, 0x1abd,
-0x1b00, 0x1b03,
-0x1b34, 0x1b34,
-0x1b36, 0x1b3a,
-0x1b3c, 0x1b3c,
-0x1b42, 0x1b42,
-0x1b6b, 0x1b73,
-0x1b80, 0x1b81,
-0x1ba2, 0x1ba5,
-0x1ba8, 0x1ba9,
-0x1bab, 0x1bad,
-0x1be6, 0x1be6,
-0x1be8, 0x1be9,
-0x1bed, 0x1bed,
-0x1bef, 0x1bf1,
-0x1c2c, 0x1c33,
-0x1c36, 0x1c37,
-0x1cd0, 0x1cd2,
-0x1cd4, 0x1ce0,
-0x1ce2, 0x1ce8,
-0x1ced, 0x1ced,
-0x1cf4, 0x1cf4,
-0x1cf8, 0x1cf9,
-0x1dc0, 0x1df5,
-0x1dfc, 0x1dff,
-0x20d0, 0x20dc,
-0x20e1, 0x20e1,
-0x20e5, 0x20f0,
-0x2cef, 0x2cf1,
-0x2d7f, 0x2d7f,
-0x2de0, 0x2dff,
-0x302a, 0x302d,
-0x3099, 0x309a,
-0xa66f, 0xa66f,
-0xa674, 0xa67d,
-0xa69e, 0xa69f,
-0xa6f0, 0xa6f1,
-0xa802, 0xa802,
-0xa806, 0xa806,
-0xa80b, 0xa80b,
-0xa825, 0xa826,
-0xa8c4, 0xa8c4,
-0xa8e0, 0xa8f1,
-0xa926, 0xa92d,
-0xa947, 0xa951,
-0xa980, 0xa982,
-0xa9b3, 0xa9b3,
-0xa9b6, 0xa9b9,
-0xa9bc, 0xa9bc,
-0xa9e5, 0xa9e5,
-0xaa29, 0xaa2e,
-0xaa31, 0xaa32,
-0xaa35, 0xaa36,
-0xaa43, 0xaa43,
-0xaa4c, 0xaa4c,
-0xaa7c, 0xaa7c,
-0xaab0, 0xaab0,
-0xaab2, 0xaab4,
-0xaab7, 0xaab8,
-0xaabe, 0xaabf,
-0xaac1, 0xaac1,
-0xaaec, 0xaaed,
-0xaaf6, 0xaaf6,
-0xabe5, 0xabe5,
-0xabe8, 0xabe8,
-0xabed, 0xabed,
-0xfb1e, 0xfb1e,
-0xfe00, 0xfe0f,
-0xfe20, 0xfe2f,
-0x101fd, 0x101fd,
-0x102e0, 0x102e0,
-0x10376, 0x1037a,
-0x10a01, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a0f,
-0x10a38, 0x10a3a,
-0x10a3f, 0x10a3f,
-0x10ae5, 0x10ae6,
-0x11001, 0x11001,
-0x11038, 0x11046,
-0x1107f, 0x11081,
-0x110b3, 0x110b6,
-0x110b9, 0x110ba,
-0x11100, 0x11102,
-0x11127, 0x1112b,
-0x1112d, 0x11134,
-0x11173, 0x11173,
-0x11180, 0x11181,
-0x111b6, 0x111be,
-0x111ca, 0x111cc,
-0x1122f, 0x11231,
-0x11234, 0x11234,
-0x11236, 0x11237,
-0x112df, 0x112df,
-0x112e3, 0x112ea,
-0x11300, 0x11301,
-0x1133c, 0x1133c,
-0x11340, 0x11340,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-0x114b3, 0x114b8,
-0x114ba, 0x114ba,
-0x114bf, 0x114c0,
-0x114c2, 0x114c3,
-0x115b2, 0x115b5,
-0x115bc, 0x115bd,
-0x115bf, 0x115c0,
-0x115dc, 0x115dd,
-0x11633, 0x1163a,
-0x1163d, 0x1163d,
-0x1163f, 0x11640,
-0x116ab, 0x116ab,
-0x116ad, 0x116ad,
-0x116b0, 0x116b5,
-0x116b7, 0x116b7,
-0x1171d, 0x1171f,
-0x11722, 0x11725,
-0x11727, 0x1172b,
-0x16af0, 0x16af4,
-0x16b30, 0x16b36,
-0x16f8f, 0x16f92,
-0x1bc9d, 0x1bc9e,
-0x1d167, 0x1d169,
-0x1d17b, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0x1d242, 0x1d244,
-0x1da00, 0x1da36,
-0x1da3b, 0x1da6c,
-0x1da75, 0x1da75,
-0x1da84, 0x1da84,
-0x1da9b, 0x1da9f,
-0x1daa1, 0x1daaf,
-0x1e8d0, 0x1e8d6,
-0xe0100, 0xe01ef,
-}; /* END of CR_Mn */
-
-/* PROPERTY: 'N': Major Category */
-static const OnigCodePoint
-CR_N[] = { 111,
-0x0030, 0x0039,
-0x00b2, 0x00b3,
-0x00b9, 0x00b9,
-0x00bc, 0x00be,
-0x0660, 0x0669,
-0x06f0, 0x06f9,
-0x07c0, 0x07c9,
-0x0966, 0x096f,
-0x09e6, 0x09ef,
-0x09f4, 0x09f9,
-0x0a66, 0x0a6f,
-0x0ae6, 0x0aef,
-0x0b66, 0x0b6f,
-0x0b72, 0x0b77,
-0x0be6, 0x0bf2,
-0x0c66, 0x0c6f,
-0x0c78, 0x0c7e,
-0x0ce6, 0x0cef,
-0x0d66, 0x0d75,
-0x0de6, 0x0def,
-0x0e50, 0x0e59,
-0x0ed0, 0x0ed9,
-0x0f20, 0x0f33,
-0x1040, 0x1049,
-0x1090, 0x1099,
-0x1369, 0x137c,
-0x16ee, 0x16f0,
-0x17e0, 0x17e9,
-0x17f0, 0x17f9,
-0x1810, 0x1819,
-0x1946, 0x194f,
-0x19d0, 0x19da,
-0x1a80, 0x1a89,
-0x1a90, 0x1a99,
-0x1b50, 0x1b59,
-0x1bb0, 0x1bb9,
-0x1c40, 0x1c49,
-0x1c50, 0x1c59,
-0x2070, 0x2070,
-0x2074, 0x2079,
-0x2080, 0x2089,
-0x2150, 0x2182,
-0x2185, 0x2189,
-0x2460, 0x249b,
-0x24ea, 0x24ff,
-0x2776, 0x2793,
-0x2cfd, 0x2cfd,
-0x3007, 0x3007,
-0x3021, 0x3029,
-0x3038, 0x303a,
-0x3192, 0x3195,
-0x3220, 0x3229,
-0x3248, 0x324f,
-0x3251, 0x325f,
-0x3280, 0x3289,
-0x32b1, 0x32bf,
-0xa620, 0xa629,
-0xa6e6, 0xa6ef,
-0xa830, 0xa835,
-0xa8d0, 0xa8d9,
-0xa900, 0xa909,
-0xa9d0, 0xa9d9,
-0xa9f0, 0xa9f9,
-0xaa50, 0xaa59,
-0xabf0, 0xabf9,
-0xff10, 0xff19,
-0x10107, 0x10133,
-0x10140, 0x10178,
-0x1018a, 0x1018b,
-0x102e1, 0x102fb,
-0x10320, 0x10323,
-0x10341, 0x10341,
-0x1034a, 0x1034a,
-0x103d1, 0x103d5,
-0x104a0, 0x104a9,
-0x10858, 0x1085f,
-0x10879, 0x1087f,
-0x108a7, 0x108af,
-0x108fb, 0x108ff,
-0x10916, 0x1091b,
-0x109bc, 0x109bd,
-0x109c0, 0x109cf,
-0x109d2, 0x109ff,
-0x10a40, 0x10a47,
-0x10a7d, 0x10a7e,
-0x10a9d, 0x10a9f,
-0x10aeb, 0x10aef,
-0x10b58, 0x10b5f,
-0x10b78, 0x10b7f,
-0x10ba9, 0x10baf,
-0x10cfa, 0x10cff,
-0x10e60, 0x10e7e,
-0x11052, 0x1106f,
-0x110f0, 0x110f9,
-0x11136, 0x1113f,
-0x111d0, 0x111d9,
-0x111e1, 0x111f4,
-0x112f0, 0x112f9,
-0x114d0, 0x114d9,
-0x11650, 0x11659,
-0x116c0, 0x116c9,
-0x11730, 0x1173b,
-0x118e0, 0x118f2,
-0x12400, 0x1246e,
-0x16a60, 0x16a69,
-0x16b50, 0x16b59,
-0x16b5b, 0x16b61,
-0x1d360, 0x1d371,
-0x1d7ce, 0x1d7ff,
-0x1e8c7, 0x1e8cf,
-0x1f100, 0x1f10c,
-}; /* END of CR_N */
-
-/* PROPERTY: 'Nd': General Category */
-#define CR_Nd CR_Digit
-
-/* PROPERTY: 'Nl': General Category */
-static const OnigCodePoint
-CR_Nl[] = { 12,
-0x16ee, 0x16f0,
-0x2160, 0x2182,
-0x2185, 0x2188,
-0x3007, 0x3007,
-0x3021, 0x3029,
-0x3038, 0x303a,
-0xa6e6, 0xa6ef,
-0x10140, 0x10174,
-0x10341, 0x10341,
-0x1034a, 0x1034a,
-0x103d1, 0x103d5,
-0x12400, 0x1246e,
-}; /* END of CR_Nl */
-
-/* PROPERTY: 'No': General Category */
-static const OnigCodePoint
-CR_No[] = { 58,
-0x00b2, 0x00b3,
-0x00b9, 0x00b9,
-0x00bc, 0x00be,
-0x09f4, 0x09f9,
-0x0b72, 0x0b77,
-0x0bf0, 0x0bf2,
-0x0c78, 0x0c7e,
-0x0d70, 0x0d75,
-0x0f2a, 0x0f33,
-0x1369, 0x137c,
-0x17f0, 0x17f9,
-0x19da, 0x19da,
-0x2070, 0x2070,
-0x2074, 0x2079,
-0x2080, 0x2089,
-0x2150, 0x215f,
-0x2189, 0x2189,
-0x2460, 0x249b,
-0x24ea, 0x24ff,
-0x2776, 0x2793,
-0x2cfd, 0x2cfd,
-0x3192, 0x3195,
-0x3220, 0x3229,
-0x3248, 0x324f,
-0x3251, 0x325f,
-0x3280, 0x3289,
-0x32b1, 0x32bf,
-0xa830, 0xa835,
-0x10107, 0x10133,
-0x10175, 0x10178,
-0x1018a, 0x1018b,
-0x102e1, 0x102fb,
-0x10320, 0x10323,
-0x10858, 0x1085f,
-0x10879, 0x1087f,
-0x108a7, 0x108af,
-0x108fb, 0x108ff,
-0x10916, 0x1091b,
-0x109bc, 0x109bd,
-0x109c0, 0x109cf,
-0x109d2, 0x109ff,
-0x10a40, 0x10a47,
-0x10a7d, 0x10a7e,
-0x10a9d, 0x10a9f,
-0x10aeb, 0x10aef,
-0x10b58, 0x10b5f,
-0x10b78, 0x10b7f,
-0x10ba9, 0x10baf,
-0x10cfa, 0x10cff,
-0x10e60, 0x10e7e,
-0x11052, 0x11065,
-0x111e1, 0x111f4,
-0x1173a, 0x1173b,
-0x118ea, 0x118f2,
-0x16b5b, 0x16b61,
-0x1d360, 0x1d371,
-0x1e8c7, 0x1e8cf,
-0x1f100, 0x1f10c,
-}; /* END of CR_No */
-
-/* PROPERTY: 'P': Major Category */
-#define CR_P CR_Punct
-
-/* PROPERTY: 'Pc': General Category */
-static const OnigCodePoint
-CR_Pc[] = { 6,
-0x005f, 0x005f,
-0x203f, 0x2040,
-0x2054, 0x2054,
-0xfe33, 0xfe34,
-0xfe4d, 0xfe4f,
-0xff3f, 0xff3f,
-}; /* END of CR_Pc */
-
-/* PROPERTY: 'Pd': General Category */
-static const OnigCodePoint
-CR_Pd[] = { 17,
-0x002d, 0x002d,
-0x058a, 0x058a,
-0x05be, 0x05be,
-0x1400, 0x1400,
-0x1806, 0x1806,
-0x2010, 0x2015,
-0x2e17, 0x2e17,
-0x2e1a, 0x2e1a,
-0x2e3a, 0x2e3b,
-0x2e40, 0x2e40,
-0x301c, 0x301c,
-0x3030, 0x3030,
-0x30a0, 0x30a0,
-0xfe31, 0xfe32,
-0xfe58, 0xfe58,
-0xfe63, 0xfe63,
-0xff0d, 0xff0d,
-}; /* END of CR_Pd */
-
-/* PROPERTY: 'Pe': General Category */
-static const OnigCodePoint
-CR_Pe[] = { 72,
-0x0029, 0x0029,
-0x005d, 0x005d,
-0x007d, 0x007d,
-0x0f3b, 0x0f3b,
-0x0f3d, 0x0f3d,
-0x169c, 0x169c,
-0x2046, 0x2046,
-0x207e, 0x207e,
-0x208e, 0x208e,
-0x2309, 0x2309,
-0x230b, 0x230b,
-0x232a, 0x232a,
-0x2769, 0x2769,
-0x276b, 0x276b,
-0x276d, 0x276d,
-0x276f, 0x276f,
-0x2771, 0x2771,
-0x2773, 0x2773,
-0x2775, 0x2775,
-0x27c6, 0x27c6,
-0x27e7, 0x27e7,
-0x27e9, 0x27e9,
-0x27eb, 0x27eb,
-0x27ed, 0x27ed,
-0x27ef, 0x27ef,
-0x2984, 0x2984,
-0x2986, 0x2986,
-0x2988, 0x2988,
-0x298a, 0x298a,
-0x298c, 0x298c,
-0x298e, 0x298e,
-0x2990, 0x2990,
-0x2992, 0x2992,
-0x2994, 0x2994,
-0x2996, 0x2996,
-0x2998, 0x2998,
-0x29d9, 0x29d9,
-0x29db, 0x29db,
-0x29fd, 0x29fd,
-0x2e23, 0x2e23,
-0x2e25, 0x2e25,
-0x2e27, 0x2e27,
-0x2e29, 0x2e29,
-0x3009, 0x3009,
-0x300b, 0x300b,
-0x300d, 0x300d,
-0x300f, 0x300f,
-0x3011, 0x3011,
-0x3015, 0x3015,
-0x3017, 0x3017,
-0x3019, 0x3019,
-0x301b, 0x301b,
-0x301e, 0x301f,
-0xfd3e, 0xfd3e,
-0xfe18, 0xfe18,
-0xfe36, 0xfe36,
-0xfe38, 0xfe38,
-0xfe3a, 0xfe3a,
-0xfe3c, 0xfe3c,
-0xfe3e, 0xfe3e,
-0xfe40, 0xfe40,
-0xfe42, 0xfe42,
-0xfe44, 0xfe44,
-0xfe48, 0xfe48,
-0xfe5a, 0xfe5a,
-0xfe5c, 0xfe5c,
-0xfe5e, 0xfe5e,
-0xff09, 0xff09,
-0xff3d, 0xff3d,
-0xff5d, 0xff5d,
-0xff60, 0xff60,
-0xff63, 0xff63,
-}; /* END of CR_Pe */
-
-/* PROPERTY: 'Pf': General Category */
-static const OnigCodePoint
-CR_Pf[] = { 10,
-0x00bb, 0x00bb,
-0x2019, 0x2019,
-0x201d, 0x201d,
-0x203a, 0x203a,
-0x2e03, 0x2e03,
-0x2e05, 0x2e05,
-0x2e0a, 0x2e0a,
-0x2e0d, 0x2e0d,
-0x2e1d, 0x2e1d,
-0x2e21, 0x2e21,
-}; /* END of CR_Pf */
-
-/* PROPERTY: 'Pi': General Category */
-static const OnigCodePoint
-CR_Pi[] = { 11,
-0x00ab, 0x00ab,
-0x2018, 0x2018,
-0x201b, 0x201c,
-0x201f, 0x201f,
-0x2039, 0x2039,
-0x2e02, 0x2e02,
-0x2e04, 0x2e04,
-0x2e09, 0x2e09,
-0x2e0c, 0x2e0c,
-0x2e1c, 0x2e1c,
-0x2e20, 0x2e20,
-}; /* END of CR_Pi */
-
-/* PROPERTY: 'Po': General Category */
-static const OnigCodePoint
-CR_Po[] = { 157,
-0x0021, 0x0023,
-0x0025, 0x0027,
-0x002a, 0x002a,
-0x002c, 0x002c,
-0x002e, 0x002f,
-0x003a, 0x003b,
-0x003f, 0x0040,
-0x005c, 0x005c,
-0x00a1, 0x00a1,
-0x00a7, 0x00a7,
-0x00b6, 0x00b7,
-0x00bf, 0x00bf,
-0x037e, 0x037e,
-0x0387, 0x0387,
-0x055a, 0x055f,
-0x0589, 0x0589,
-0x05c0, 0x05c0,
-0x05c3, 0x05c3,
-0x05c6, 0x05c6,
-0x05f3, 0x05f4,
-0x0609, 0x060a,
-0x060c, 0x060d,
-0x061b, 0x061b,
-0x061e, 0x061f,
-0x066a, 0x066d,
-0x06d4, 0x06d4,
-0x0700, 0x070d,
-0x07f7, 0x07f9,
-0x0830, 0x083e,
-0x085e, 0x085e,
-0x0964, 0x0965,
-0x0970, 0x0970,
-0x0af0, 0x0af0,
-0x0df4, 0x0df4,
-0x0e4f, 0x0e4f,
-0x0e5a, 0x0e5b,
-0x0f04, 0x0f12,
-0x0f14, 0x0f14,
-0x0f85, 0x0f85,
-0x0fd0, 0x0fd4,
-0x0fd9, 0x0fda,
-0x104a, 0x104f,
-0x10fb, 0x10fb,
-0x1360, 0x1368,
-0x166d, 0x166e,
-0x16eb, 0x16ed,
-0x1735, 0x1736,
-0x17d4, 0x17d6,
-0x17d8, 0x17da,
-0x1800, 0x1805,
-0x1807, 0x180a,
-0x1944, 0x1945,
-0x1a1e, 0x1a1f,
-0x1aa0, 0x1aa6,
-0x1aa8, 0x1aad,
-0x1b5a, 0x1b60,
-0x1bfc, 0x1bff,
-0x1c3b, 0x1c3f,
-0x1c7e, 0x1c7f,
-0x1cc0, 0x1cc7,
-0x1cd3, 0x1cd3,
-0x2016, 0x2017,
-0x2020, 0x2027,
-0x2030, 0x2038,
-0x203b, 0x203e,
-0x2041, 0x2043,
-0x2047, 0x2051,
-0x2053, 0x2053,
-0x2055, 0x205e,
-0x2cf9, 0x2cfc,
-0x2cfe, 0x2cff,
-0x2d70, 0x2d70,
-0x2e00, 0x2e01,
-0x2e06, 0x2e08,
-0x2e0b, 0x2e0b,
-0x2e0e, 0x2e16,
-0x2e18, 0x2e19,
-0x2e1b, 0x2e1b,
-0x2e1e, 0x2e1f,
-0x2e2a, 0x2e2e,
-0x2e30, 0x2e39,
-0x2e3c, 0x2e3f,
-0x2e41, 0x2e41,
-0x3001, 0x3003,
-0x303d, 0x303d,
-0x30fb, 0x30fb,
-0xa4fe, 0xa4ff,
-0xa60d, 0xa60f,
-0xa673, 0xa673,
-0xa67e, 0xa67e,
-0xa6f2, 0xa6f7,
-0xa874, 0xa877,
-0xa8ce, 0xa8cf,
-0xa8f8, 0xa8fa,
-0xa8fc, 0xa8fc,
-0xa92e, 0xa92f,
-0xa95f, 0xa95f,
-0xa9c1, 0xa9cd,
-0xa9de, 0xa9df,
-0xaa5c, 0xaa5f,
-0xaade, 0xaadf,
-0xaaf0, 0xaaf1,
-0xabeb, 0xabeb,
-0xfe10, 0xfe16,
-0xfe19, 0xfe19,
-0xfe30, 0xfe30,
-0xfe45, 0xfe46,
-0xfe49, 0xfe4c,
-0xfe50, 0xfe52,
-0xfe54, 0xfe57,
-0xfe5f, 0xfe61,
-0xfe68, 0xfe68,
-0xfe6a, 0xfe6b,
-0xff01, 0xff03,
-0xff05, 0xff07,
-0xff0a, 0xff0a,
-0xff0c, 0xff0c,
-0xff0e, 0xff0f,
-0xff1a, 0xff1b,
-0xff1f, 0xff20,
-0xff3c, 0xff3c,
-0xff61, 0xff61,
-0xff64, 0xff65,
-0x10100, 0x10102,
-0x1039f, 0x1039f,
-0x103d0, 0x103d0,
-0x1056f, 0x1056f,
-0x10857, 0x10857,
-0x1091f, 0x1091f,
-0x1093f, 0x1093f,
-0x10a50, 0x10a58,
-0x10a7f, 0x10a7f,
-0x10af0, 0x10af6,
-0x10b39, 0x10b3f,
-0x10b99, 0x10b9c,
-0x11047, 0x1104d,
-0x110bb, 0x110bc,
-0x110be, 0x110c1,
-0x11140, 0x11143,
-0x11174, 0x11175,
-0x111c5, 0x111c9,
-0x111cd, 0x111cd,
-0x111db, 0x111db,
-0x111dd, 0x111df,
-0x11238, 0x1123d,
-0x112a9, 0x112a9,
-0x114c6, 0x114c6,
-0x115c1, 0x115d7,
-0x11641, 0x11643,
-0x1173c, 0x1173e,
-0x12470, 0x12474,
-0x16a6e, 0x16a6f,
-0x16af5, 0x16af5,
-0x16b37, 0x16b3b,
-0x16b44, 0x16b44,
-0x1bc9f, 0x1bc9f,
-0x1da87, 0x1da8b,
-}; /* END of CR_Po */
-
-/* PROPERTY: 'Ps': General Category */
-static const OnigCodePoint
-CR_Ps[] = { 75,
-0x0028, 0x0028,
-0x005b, 0x005b,
-0x007b, 0x007b,
-0x0f3a, 0x0f3a,
-0x0f3c, 0x0f3c,
-0x169b, 0x169b,
-0x201a, 0x201a,
-0x201e, 0x201e,
-0x2045, 0x2045,
-0x207d, 0x207d,
-0x208d, 0x208d,
-0x2308, 0x2308,
-0x230a, 0x230a,
-0x2329, 0x2329,
-0x2768, 0x2768,
-0x276a, 0x276a,
-0x276c, 0x276c,
-0x276e, 0x276e,
-0x2770, 0x2770,
-0x2772, 0x2772,
-0x2774, 0x2774,
-0x27c5, 0x27c5,
-0x27e6, 0x27e6,
-0x27e8, 0x27e8,
-0x27ea, 0x27ea,
-0x27ec, 0x27ec,
-0x27ee, 0x27ee,
-0x2983, 0x2983,
-0x2985, 0x2985,
-0x2987, 0x2987,
-0x2989, 0x2989,
-0x298b, 0x298b,
-0x298d, 0x298d,
-0x298f, 0x298f,
-0x2991, 0x2991,
-0x2993, 0x2993,
-0x2995, 0x2995,
-0x2997, 0x2997,
-0x29d8, 0x29d8,
-0x29da, 0x29da,
-0x29fc, 0x29fc,
-0x2e22, 0x2e22,
-0x2e24, 0x2e24,
-0x2e26, 0x2e26,
-0x2e28, 0x2e28,
-0x2e42, 0x2e42,
-0x3008, 0x3008,
-0x300a, 0x300a,
-0x300c, 0x300c,
-0x300e, 0x300e,
-0x3010, 0x3010,
-0x3014, 0x3014,
-0x3016, 0x3016,
-0x3018, 0x3018,
-0x301a, 0x301a,
-0x301d, 0x301d,
-0xfd3f, 0xfd3f,
-0xfe17, 0xfe17,
-0xfe35, 0xfe35,
-0xfe37, 0xfe37,
-0xfe39, 0xfe39,
-0xfe3b, 0xfe3b,
-0xfe3d, 0xfe3d,
-0xfe3f, 0xfe3f,
-0xfe41, 0xfe41,
-0xfe43, 0xfe43,
-0xfe47, 0xfe47,
-0xfe59, 0xfe59,
-0xfe5b, 0xfe5b,
-0xfe5d, 0xfe5d,
-0xff08, 0xff08,
-0xff3b, 0xff3b,
-0xff5b, 0xff5b,
-0xff5f, 0xff5f,
-0xff62, 0xff62,
-}; /* END of CR_Ps */
-
-/* PROPERTY: 'S': Major Category */
-static const OnigCodePoint
-CR_S[] = { 214,
-0x0024, 0x0024,
-0x002b, 0x002b,
-0x003c, 0x003e,
-0x005e, 0x005e,
-0x0060, 0x0060,
-0x007c, 0x007c,
-0x007e, 0x007e,
-0x00a2, 0x00a6,
-0x00a8, 0x00a9,
-0x00ac, 0x00ac,
-0x00ae, 0x00b1,
-0x00b4, 0x00b4,
-0x00b8, 0x00b8,
-0x00d7, 0x00d7,
-0x00f7, 0x00f7,
-0x02c2, 0x02c5,
-0x02d2, 0x02df,
-0x02e5, 0x02eb,
-0x02ed, 0x02ed,
-0x02ef, 0x02ff,
-0x0375, 0x0375,
-0x0384, 0x0385,
-0x03f6, 0x03f6,
-0x0482, 0x0482,
-0x058d, 0x058f,
-0x0606, 0x0608,
-0x060b, 0x060b,
-0x060e, 0x060f,
-0x06de, 0x06de,
-0x06e9, 0x06e9,
-0x06fd, 0x06fe,
-0x07f6, 0x07f6,
-0x09f2, 0x09f3,
-0x09fa, 0x09fb,
-0x0af1, 0x0af1,
-0x0b70, 0x0b70,
-0x0bf3, 0x0bfa,
-0x0c7f, 0x0c7f,
-0x0d79, 0x0d79,
-0x0e3f, 0x0e3f,
-0x0f01, 0x0f03,
-0x0f13, 0x0f13,
-0x0f15, 0x0f17,
-0x0f1a, 0x0f1f,
-0x0f34, 0x0f34,
-0x0f36, 0x0f36,
-0x0f38, 0x0f38,
-0x0fbe, 0x0fc5,
-0x0fc7, 0x0fcc,
-0x0fce, 0x0fcf,
-0x0fd5, 0x0fd8,
-0x109e, 0x109f,
-0x1390, 0x1399,
-0x17db, 0x17db,
-0x1940, 0x1940,
-0x19de, 0x19ff,
-0x1b61, 0x1b6a,
-0x1b74, 0x1b7c,
-0x1fbd, 0x1fbd,
-0x1fbf, 0x1fc1,
-0x1fcd, 0x1fcf,
-0x1fdd, 0x1fdf,
-0x1fed, 0x1fef,
-0x1ffd, 0x1ffe,
-0x2044, 0x2044,
-0x2052, 0x2052,
-0x207a, 0x207c,
-0x208a, 0x208c,
-0x20a0, 0x20be,
-0x2100, 0x2101,
-0x2103, 0x2106,
-0x2108, 0x2109,
-0x2114, 0x2114,
-0x2116, 0x2118,
-0x211e, 0x2123,
-0x2125, 0x2125,
-0x2127, 0x2127,
-0x2129, 0x2129,
-0x212e, 0x212e,
-0x213a, 0x213b,
-0x2140, 0x2144,
-0x214a, 0x214d,
-0x214f, 0x214f,
-0x218a, 0x218b,
-0x2190, 0x2307,
-0x230c, 0x2328,
-0x232b, 0x23fa,
-0x2400, 0x2426,
-0x2440, 0x244a,
-0x249c, 0x24e9,
-0x2500, 0x2767,
-0x2794, 0x27c4,
-0x27c7, 0x27e5,
-0x27f0, 0x2982,
-0x2999, 0x29d7,
-0x29dc, 0x29fb,
-0x29fe, 0x2b73,
-0x2b76, 0x2b95,
-0x2b98, 0x2bb9,
-0x2bbd, 0x2bc8,
-0x2bca, 0x2bd1,
-0x2bec, 0x2bef,
-0x2ce5, 0x2cea,
-0x2e80, 0x2e99,
-0x2e9b, 0x2ef3,
-0x2f00, 0x2fd5,
-0x2ff0, 0x2ffb,
-0x3004, 0x3004,
-0x3012, 0x3013,
-0x3020, 0x3020,
-0x3036, 0x3037,
-0x303e, 0x303f,
-0x309b, 0x309c,
-0x3190, 0x3191,
-0x3196, 0x319f,
-0x31c0, 0x31e3,
-0x3200, 0x321e,
-0x322a, 0x3247,
-0x3250, 0x3250,
-0x3260, 0x327f,
-0x328a, 0x32b0,
-0x32c0, 0x32fe,
-0x3300, 0x33ff,
-0x4dc0, 0x4dff,
-0xa490, 0xa4c6,
-0xa700, 0xa716,
-0xa720, 0xa721,
-0xa789, 0xa78a,
-0xa828, 0xa82b,
-0xa836, 0xa839,
-0xaa77, 0xaa79,
-0xab5b, 0xab5b,
-0xfb29, 0xfb29,
-0xfbb2, 0xfbc1,
-0xfdfc, 0xfdfd,
-0xfe62, 0xfe62,
-0xfe64, 0xfe66,
-0xfe69, 0xfe69,
-0xff04, 0xff04,
-0xff0b, 0xff0b,
-0xff1c, 0xff1e,
-0xff3e, 0xff3e,
-0xff40, 0xff40,
-0xff5c, 0xff5c,
-0xff5e, 0xff5e,
-0xffe0, 0xffe6,
-0xffe8, 0xffee,
-0xfffc, 0xfffd,
-0x10137, 0x1013f,
-0x10179, 0x10189,
-0x1018c, 0x1018c,
-0x10190, 0x1019b,
-0x101a0, 0x101a0,
-0x101d0, 0x101fc,
-0x10877, 0x10878,
-0x10ac8, 0x10ac8,
-0x1173f, 0x1173f,
-0x16b3c, 0x16b3f,
-0x16b45, 0x16b45,
-0x1bc9c, 0x1bc9c,
-0x1d000, 0x1d0f5,
-0x1d100, 0x1d126,
-0x1d129, 0x1d164,
-0x1d16a, 0x1d16c,
-0x1d183, 0x1d184,
-0x1d18c, 0x1d1a9,
-0x1d1ae, 0x1d1e8,
-0x1d200, 0x1d241,
-0x1d245, 0x1d245,
-0x1d300, 0x1d356,
-0x1d6c1, 0x1d6c1,
-0x1d6db, 0x1d6db,
-0x1d6fb, 0x1d6fb,
-0x1d715, 0x1d715,
-0x1d735, 0x1d735,
-0x1d74f, 0x1d74f,
-0x1d76f, 0x1d76f,
-0x1d789, 0x1d789,
-0x1d7a9, 0x1d7a9,
-0x1d7c3, 0x1d7c3,
-0x1d800, 0x1d9ff,
-0x1da37, 0x1da3a,
-0x1da6d, 0x1da74,
-0x1da76, 0x1da83,
-0x1da85, 0x1da86,
-0x1eef0, 0x1eef1,
-0x1f000, 0x1f02b,
-0x1f030, 0x1f093,
-0x1f0a0, 0x1f0ae,
-0x1f0b1, 0x1f0bf,
-0x1f0c1, 0x1f0cf,
-0x1f0d1, 0x1f0f5,
-0x1f110, 0x1f12e,
-0x1f130, 0x1f16b,
-0x1f170, 0x1f19a,
-0x1f1e6, 0x1f202,
-0x1f210, 0x1f23a,
-0x1f240, 0x1f248,
-0x1f250, 0x1f251,
-0x1f300, 0x1f579,
-0x1f57b, 0x1f5a3,
-0x1f5a5, 0x1f6d0,
-0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f3,
-0x1f700, 0x1f773,
-0x1f780, 0x1f7d4,
-0x1f800, 0x1f80b,
-0x1f810, 0x1f847,
-0x1f850, 0x1f859,
-0x1f860, 0x1f887,
-0x1f890, 0x1f8ad,
-0x1f910, 0x1f918,
-0x1f980, 0x1f984,
-0x1f9c0, 0x1f9c0,
-}; /* END of CR_S */
-
-/* PROPERTY: 'Sc': General Category */
-static const OnigCodePoint
-CR_Sc[] = { 17,
-0x0024, 0x0024,
-0x00a2, 0x00a5,
-0x058f, 0x058f,
-0x060b, 0x060b,
-0x09f2, 0x09f3,
-0x09fb, 0x09fb,
-0x0af1, 0x0af1,
-0x0bf9, 0x0bf9,
-0x0e3f, 0x0e3f,
-0x17db, 0x17db,
-0x20a0, 0x20be,
-0xa838, 0xa838,
-0xfdfc, 0xfdfc,
-0xfe69, 0xfe69,
-0xff04, 0xff04,
-0xffe0, 0xffe1,
-0xffe5, 0xffe6,
-}; /* END of CR_Sc */
-
-/* PROPERTY: 'Sk': General Category */
-static const OnigCodePoint
-CR_Sk[] = { 29,
-0x005e, 0x005e,
-0x0060, 0x0060,
-0x00a8, 0x00a8,
-0x00af, 0x00af,
-0x00b4, 0x00b4,
-0x00b8, 0x00b8,
-0x02c2, 0x02c5,
-0x02d2, 0x02df,
-0x02e5, 0x02eb,
-0x02ed, 0x02ed,
-0x02ef, 0x02ff,
-0x0375, 0x0375,
-0x0384, 0x0385,
-0x1fbd, 0x1fbd,
-0x1fbf, 0x1fc1,
-0x1fcd, 0x1fcf,
-0x1fdd, 0x1fdf,
-0x1fed, 0x1fef,
-0x1ffd, 0x1ffe,
-0x309b, 0x309c,
-0xa700, 0xa716,
-0xa720, 0xa721,
-0xa789, 0xa78a,
-0xab5b, 0xab5b,
-0xfbb2, 0xfbc1,
-0xff3e, 0xff3e,
-0xff40, 0xff40,
-0xffe3, 0xffe3,
-0x1f3fb, 0x1f3ff,
-}; /* END of CR_Sk */
-
-/* PROPERTY: 'Sm': General Category */
-static const OnigCodePoint
-CR_Sm[] = { 64,
-0x002b, 0x002b,
-0x003c, 0x003e,
-0x007c, 0x007c,
-0x007e, 0x007e,
-0x00ac, 0x00ac,
-0x00b1, 0x00b1,
-0x00d7, 0x00d7,
-0x00f7, 0x00f7,
-0x03f6, 0x03f6,
-0x0606, 0x0608,
-0x2044, 0x2044,
-0x2052, 0x2052,
-0x207a, 0x207c,
-0x208a, 0x208c,
-0x2118, 0x2118,
-0x2140, 0x2144,
-0x214b, 0x214b,
-0x2190, 0x2194,
-0x219a, 0x219b,
-0x21a0, 0x21a0,
-0x21a3, 0x21a3,
-0x21a6, 0x21a6,
-0x21ae, 0x21ae,
-0x21ce, 0x21cf,
-0x21d2, 0x21d2,
-0x21d4, 0x21d4,
-0x21f4, 0x22ff,
-0x2320, 0x2321,
-0x237c, 0x237c,
-0x239b, 0x23b3,
-0x23dc, 0x23e1,
-0x25b7, 0x25b7,
-0x25c1, 0x25c1,
-0x25f8, 0x25ff,
-0x266f, 0x266f,
-0x27c0, 0x27c4,
-0x27c7, 0x27e5,
-0x27f0, 0x27ff,
-0x2900, 0x2982,
-0x2999, 0x29d7,
-0x29dc, 0x29fb,
-0x29fe, 0x2aff,
-0x2b30, 0x2b44,
-0x2b47, 0x2b4c,
-0xfb29, 0xfb29,
-0xfe62, 0xfe62,
-0xfe64, 0xfe66,
-0xff0b, 0xff0b,
-0xff1c, 0xff1e,
-0xff5c, 0xff5c,
-0xff5e, 0xff5e,
-0xffe2, 0xffe2,
-0xffe9, 0xffec,
-0x1d6c1, 0x1d6c1,
-0x1d6db, 0x1d6db,
-0x1d6fb, 0x1d6fb,
-0x1d715, 0x1d715,
-0x1d735, 0x1d735,
-0x1d74f, 0x1d74f,
-0x1d76f, 0x1d76f,
-0x1d789, 0x1d789,
-0x1d7a9, 0x1d7a9,
-0x1d7c3, 0x1d7c3,
-0x1eef0, 0x1eef1,
-}; /* END of CR_Sm */
-
-/* PROPERTY: 'So': General Category */
-static const OnigCodePoint
-CR_So[] = { 170,
-0x00a6, 0x00a6,
-0x00a9, 0x00a9,
-0x00ae, 0x00ae,
-0x00b0, 0x00b0,
-0x0482, 0x0482,
-0x058d, 0x058e,
-0x060e, 0x060f,
-0x06de, 0x06de,
-0x06e9, 0x06e9,
-0x06fd, 0x06fe,
-0x07f6, 0x07f6,
-0x09fa, 0x09fa,
-0x0b70, 0x0b70,
-0x0bf3, 0x0bf8,
-0x0bfa, 0x0bfa,
-0x0c7f, 0x0c7f,
-0x0d79, 0x0d79,
-0x0f01, 0x0f03,
-0x0f13, 0x0f13,
-0x0f15, 0x0f17,
-0x0f1a, 0x0f1f,
-0x0f34, 0x0f34,
-0x0f36, 0x0f36,
-0x0f38, 0x0f38,
-0x0fbe, 0x0fc5,
-0x0fc7, 0x0fcc,
-0x0fce, 0x0fcf,
-0x0fd5, 0x0fd8,
-0x109e, 0x109f,
-0x1390, 0x1399,
-0x1940, 0x1940,
-0x19de, 0x19ff,
-0x1b61, 0x1b6a,
-0x1b74, 0x1b7c,
-0x2100, 0x2101,
-0x2103, 0x2106,
-0x2108, 0x2109,
-0x2114, 0x2114,
-0x2116, 0x2117,
-0x211e, 0x2123,
-0x2125, 0x2125,
-0x2127, 0x2127,
-0x2129, 0x2129,
-0x212e, 0x212e,
-0x213a, 0x213b,
-0x214a, 0x214a,
-0x214c, 0x214d,
-0x214f, 0x214f,
-0x218a, 0x218b,
-0x2195, 0x2199,
-0x219c, 0x219f,
-0x21a1, 0x21a2,
-0x21a4, 0x21a5,
-0x21a7, 0x21ad,
-0x21af, 0x21cd,
-0x21d0, 0x21d1,
-0x21d3, 0x21d3,
-0x21d5, 0x21f3,
-0x2300, 0x2307,
-0x230c, 0x231f,
-0x2322, 0x2328,
-0x232b, 0x237b,
-0x237d, 0x239a,
-0x23b4, 0x23db,
-0x23e2, 0x23fa,
-0x2400, 0x2426,
-0x2440, 0x244a,
-0x249c, 0x24e9,
-0x2500, 0x25b6,
-0x25b8, 0x25c0,
-0x25c2, 0x25f7,
-0x2600, 0x266e,
-0x2670, 0x2767,
-0x2794, 0x27bf,
-0x2800, 0x28ff,
-0x2b00, 0x2b2f,
-0x2b45, 0x2b46,
-0x2b4d, 0x2b73,
-0x2b76, 0x2b95,
-0x2b98, 0x2bb9,
-0x2bbd, 0x2bc8,
-0x2bca, 0x2bd1,
-0x2bec, 0x2bef,
-0x2ce5, 0x2cea,
-0x2e80, 0x2e99,
-0x2e9b, 0x2ef3,
-0x2f00, 0x2fd5,
-0x2ff0, 0x2ffb,
-0x3004, 0x3004,
-0x3012, 0x3013,
-0x3020, 0x3020,
-0x3036, 0x3037,
-0x303e, 0x303f,
-0x3190, 0x3191,
-0x3196, 0x319f,
-0x31c0, 0x31e3,
-0x3200, 0x321e,
-0x322a, 0x3247,
-0x3250, 0x3250,
-0x3260, 0x327f,
-0x328a, 0x32b0,
-0x32c0, 0x32fe,
-0x3300, 0x33ff,
-0x4dc0, 0x4dff,
-0xa490, 0xa4c6,
-0xa828, 0xa82b,
-0xa836, 0xa837,
-0xa839, 0xa839,
-0xaa77, 0xaa79,
-0xfdfd, 0xfdfd,
-0xffe4, 0xffe4,
-0xffe8, 0xffe8,
-0xffed, 0xffee,
-0xfffc, 0xfffd,
-0x10137, 0x1013f,
-0x10179, 0x10189,
-0x1018c, 0x1018c,
-0x10190, 0x1019b,
-0x101a0, 0x101a0,
-0x101d0, 0x101fc,
-0x10877, 0x10878,
-0x10ac8, 0x10ac8,
-0x1173f, 0x1173f,
-0x16b3c, 0x16b3f,
-0x16b45, 0x16b45,
-0x1bc9c, 0x1bc9c,
-0x1d000, 0x1d0f5,
-0x1d100, 0x1d126,
-0x1d129, 0x1d164,
-0x1d16a, 0x1d16c,
-0x1d183, 0x1d184,
-0x1d18c, 0x1d1a9,
-0x1d1ae, 0x1d1e8,
-0x1d200, 0x1d241,
-0x1d245, 0x1d245,
-0x1d300, 0x1d356,
-0x1d800, 0x1d9ff,
-0x1da37, 0x1da3a,
-0x1da6d, 0x1da74,
-0x1da76, 0x1da83,
-0x1da85, 0x1da86,
-0x1f000, 0x1f02b,
-0x1f030, 0x1f093,
-0x1f0a0, 0x1f0ae,
-0x1f0b1, 0x1f0bf,
-0x1f0c1, 0x1f0cf,
-0x1f0d1, 0x1f0f5,
-0x1f110, 0x1f12e,
-0x1f130, 0x1f16b,
-0x1f170, 0x1f19a,
-0x1f1e6, 0x1f202,
-0x1f210, 0x1f23a,
-0x1f240, 0x1f248,
-0x1f250, 0x1f251,
-0x1f300, 0x1f3fa,
-0x1f400, 0x1f579,
-0x1f57b, 0x1f5a3,
-0x1f5a5, 0x1f6d0,
-0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f3,
-0x1f700, 0x1f773,
-0x1f780, 0x1f7d4,
-0x1f800, 0x1f80b,
-0x1f810, 0x1f847,
-0x1f850, 0x1f859,
-0x1f860, 0x1f887,
-0x1f890, 0x1f8ad,
-0x1f910, 0x1f918,
-0x1f980, 0x1f984,
-0x1f9c0, 0x1f9c0,
-}; /* END of CR_So */
-
-/* PROPERTY: 'Z': Major Category */
-static const OnigCodePoint
-CR_Z[] = { 8,
-0x0020, 0x0020,
-0x00a0, 0x00a0,
-0x1680, 0x1680,
-0x2000, 0x200a,
-0x2028, 0x2029,
-0x202f, 0x202f,
-0x205f, 0x205f,
-0x3000, 0x3000,
-}; /* END of CR_Z */
-
-/* PROPERTY: 'Zl': General Category */
-static const OnigCodePoint
-CR_Zl[] = { 1,
-0x2028, 0x2028,
-}; /* END of CR_Zl */
-
-/* PROPERTY: 'Zp': General Category */
-static const OnigCodePoint
-CR_Zp[] = { 1,
-0x2029, 0x2029,
-}; /* END of CR_Zp */
-
-/* PROPERTY: 'Zs': General Category */
-static const OnigCodePoint
-CR_Zs[] = { 7,
-0x0020, 0x0020,
-0x00a0, 0x00a0,
-0x1680, 0x1680,
-0x2000, 0x200a,
-0x202f, 0x202f,
-0x205f, 0x205f,
-0x3000, 0x3000,
-}; /* END of CR_Zs */
-
-/* PROPERTY: 'Math': Derived Property */
-static const OnigCodePoint
-CR_Math[] = { 138,
-0x002b, 0x002b,
-0x003c, 0x003e,
-0x005e, 0x005e,
-0x007c, 0x007c,
-0x007e, 0x007e,
-0x00ac, 0x00ac,
-0x00b1, 0x00b1,
-0x00d7, 0x00d7,
-0x00f7, 0x00f7,
-0x03d0, 0x03d2,
-0x03d5, 0x03d5,
-0x03f0, 0x03f1,
-0x03f4, 0x03f6,
-0x0606, 0x0608,
-0x2016, 0x2016,
-0x2032, 0x2034,
-0x2040, 0x2040,
-0x2044, 0x2044,
-0x2052, 0x2052,
-0x2061, 0x2064,
-0x207a, 0x207e,
-0x208a, 0x208e,
-0x20d0, 0x20dc,
-0x20e1, 0x20e1,
-0x20e5, 0x20e6,
-0x20eb, 0x20ef,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2118, 0x211d,
-0x2124, 0x2124,
-0x2128, 0x2129,
-0x212c, 0x212d,
-0x212f, 0x2131,
-0x2133, 0x2138,
-0x213c, 0x2149,
-0x214b, 0x214b,
-0x2190, 0x21a7,
-0x21a9, 0x21ae,
-0x21b0, 0x21b1,
-0x21b6, 0x21b7,
-0x21bc, 0x21db,
-0x21dd, 0x21dd,
-0x21e4, 0x21e5,
-0x21f4, 0x22ff,
-0x2308, 0x230b,
-0x2320, 0x2321,
-0x237c, 0x237c,
-0x239b, 0x23b5,
-0x23b7, 0x23b7,
-0x23d0, 0x23d0,
-0x23dc, 0x23e2,
-0x25a0, 0x25a1,
-0x25ae, 0x25b7,
-0x25bc, 0x25c1,
-0x25c6, 0x25c7,
-0x25ca, 0x25cb,
-0x25cf, 0x25d3,
-0x25e2, 0x25e2,
-0x25e4, 0x25e4,
-0x25e7, 0x25ec,
-0x25f8, 0x25ff,
-0x2605, 0x2606,
-0x2640, 0x2640,
-0x2642, 0x2642,
-0x2660, 0x2663,
-0x266d, 0x266f,
-0x27c0, 0x27ff,
-0x2900, 0x2aff,
-0x2b30, 0x2b44,
-0x2b47, 0x2b4c,
-0xfb29, 0xfb29,
-0xfe61, 0xfe66,
-0xfe68, 0xfe68,
-0xff0b, 0xff0b,
-0xff1c, 0xff1e,
-0xff3c, 0xff3c,
-0xff3e, 0xff3e,
-0xff5c, 0xff5c,
-0xff5e, 0xff5e,
-0xffe2, 0xffe2,
-0xffe9, 0xffec,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d7cb,
-0x1d7ce, 0x1d7ff,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
-0x1eef0, 0x1eef1,
-}; /* END of CR_Math */
-
-/* PROPERTY: 'Alphabetic': Derived Property */
-#define CR_Alphabetic CR_Alpha
-
-/* PROPERTY: 'Lowercase': Derived Property */
-#define CR_Lowercase CR_Lower
-
-/* PROPERTY: 'Uppercase': Derived Property */
-#define CR_Uppercase CR_Upper
-
-/* PROPERTY: 'Cased': Derived Property */
-static const OnigCodePoint
-CR_Cased[] = { 131,
-0x0041, 0x005a,
-0x0061, 0x007a,
-0x00aa, 0x00aa,
-0x00b5, 0x00b5,
-0x00ba, 0x00ba,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x01ba,
-0x01bc, 0x01bf,
-0x01c4, 0x0293,
-0x0295, 0x02b8,
-0x02c0, 0x02c1,
-0x02e0, 0x02e4,
-0x0345, 0x0345,
-0x0370, 0x0373,
-0x0376, 0x0377,
-0x037a, 0x037d,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03f5,
-0x03f7, 0x0481,
-0x048a, 0x052f,
-0x0531, 0x0556,
-0x0561, 0x0587,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0x1d00, 0x1dbf,
-0x1e00, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fe0, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffc,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2119, 0x211d,
-0x2124, 0x2124,
-0x2126, 0x2126,
-0x2128, 0x2128,
-0x212a, 0x212d,
-0x212f, 0x2134,
-0x2139, 0x2139,
-0x213c, 0x213f,
-0x2145, 0x2149,
-0x214e, 0x214e,
-0x2160, 0x217f,
-0x2183, 0x2184,
-0x24b6, 0x24e9,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-0x2c60, 0x2ce4,
-0x2ceb, 0x2cee,
-0x2cf2, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0xa640, 0xa66d,
-0xa680, 0xa69d,
-0xa722, 0xa787,
-0xa78b, 0xa78e,
-0xa790, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xa7f8, 0xa7fa,
-0xab30, 0xab5a,
-0xab5c, 0xab65,
-0xab70, 0xabbf,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xff21, 0xff3a,
-0xff41, 0xff5a,
-0x10400, 0x1044f,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x118a0, 0x118df,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d6c0,
-0x1d6c2, 0x1d6da,
-0x1d6dc, 0x1d6fa,
-0x1d6fc, 0x1d714,
-0x1d716, 0x1d734,
-0x1d736, 0x1d74e,
-0x1d750, 0x1d76e,
-0x1d770, 0x1d788,
-0x1d78a, 0x1d7a8,
-0x1d7aa, 0x1d7c2,
-0x1d7c4, 0x1d7cb,
-0x1f130, 0x1f149,
-0x1f150, 0x1f169,
-0x1f170, 0x1f189,
-}; /* END of CR_Cased */
-
-/* PROPERTY: 'Case_Ignorable': Derived Property */
-static const OnigCodePoint
-CR_Case_Ignorable[] = { 346,
-0x0027, 0x0027,
-0x002e, 0x002e,
-0x003a, 0x003a,
-0x005e, 0x005e,
-0x0060, 0x0060,
-0x00a8, 0x00a8,
-0x00ad, 0x00ad,
-0x00af, 0x00af,
-0x00b4, 0x00b4,
-0x00b7, 0x00b8,
-0x02b0, 0x036f,
-0x0374, 0x0375,
-0x037a, 0x037a,
-0x0384, 0x0385,
-0x0387, 0x0387,
-0x0483, 0x0489,
-0x0559, 0x0559,
-0x0591, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c5,
-0x05c7, 0x05c7,
-0x05f4, 0x05f4,
-0x0600, 0x0605,
-0x0610, 0x061a,
-0x061c, 0x061c,
-0x0640, 0x0640,
-0x064b, 0x065f,
-0x0670, 0x0670,
-0x06d6, 0x06dd,
-0x06df, 0x06e8,
-0x06ea, 0x06ed,
-0x070f, 0x070f,
-0x0711, 0x0711,
-0x0730, 0x074a,
-0x07a6, 0x07b0,
-0x07eb, 0x07f5,
-0x07fa, 0x07fa,
-0x0816, 0x082d,
-0x0859, 0x085b,
-0x08e3, 0x0902,
-0x093a, 0x093a,
-0x093c, 0x093c,
-0x0941, 0x0948,
-0x094d, 0x094d,
-0x0951, 0x0957,
-0x0962, 0x0963,
-0x0971, 0x0971,
-0x0981, 0x0981,
-0x09bc, 0x09bc,
-0x09c1, 0x09c4,
-0x09cd, 0x09cd,
-0x09e2, 0x09e3,
-0x0a01, 0x0a02,
-0x0a3c, 0x0a3c,
-0x0a41, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4d,
-0x0a51, 0x0a51,
-0x0a70, 0x0a71,
-0x0a75, 0x0a75,
-0x0a81, 0x0a82,
-0x0abc, 0x0abc,
-0x0ac1, 0x0ac5,
-0x0ac7, 0x0ac8,
-0x0acd, 0x0acd,
-0x0ae2, 0x0ae3,
-0x0b01, 0x0b01,
-0x0b3c, 0x0b3c,
-0x0b3f, 0x0b3f,
-0x0b41, 0x0b44,
-0x0b4d, 0x0b4d,
-0x0b56, 0x0b56,
-0x0b62, 0x0b63,
-0x0b82, 0x0b82,
-0x0bc0, 0x0bc0,
-0x0bcd, 0x0bcd,
-0x0c00, 0x0c00,
-0x0c3e, 0x0c40,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4d,
-0x0c55, 0x0c56,
-0x0c62, 0x0c63,
-0x0c81, 0x0c81,
-0x0cbc, 0x0cbc,
-0x0cbf, 0x0cbf,
-0x0cc6, 0x0cc6,
-0x0ccc, 0x0ccd,
-0x0ce2, 0x0ce3,
-0x0d01, 0x0d01,
-0x0d41, 0x0d44,
-0x0d4d, 0x0d4d,
-0x0d62, 0x0d63,
-0x0dca, 0x0dca,
-0x0dd2, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0e31, 0x0e31,
-0x0e34, 0x0e3a,
-0x0e46, 0x0e4e,
-0x0eb1, 0x0eb1,
-0x0eb4, 0x0eb9,
-0x0ebb, 0x0ebc,
-0x0ec6, 0x0ec6,
-0x0ec8, 0x0ecd,
-0x0f18, 0x0f19,
-0x0f35, 0x0f35,
-0x0f37, 0x0f37,
-0x0f39, 0x0f39,
-0x0f71, 0x0f7e,
-0x0f80, 0x0f84,
-0x0f86, 0x0f87,
-0x0f8d, 0x0f97,
-0x0f99, 0x0fbc,
-0x0fc6, 0x0fc6,
-0x102d, 0x1030,
-0x1032, 0x1037,
-0x1039, 0x103a,
-0x103d, 0x103e,
-0x1058, 0x1059,
-0x105e, 0x1060,
-0x1071, 0x1074,
-0x1082, 0x1082,
-0x1085, 0x1086,
-0x108d, 0x108d,
-0x109d, 0x109d,
-0x10fc, 0x10fc,
-0x135d, 0x135f,
-0x1712, 0x1714,
-0x1732, 0x1734,
-0x1752, 0x1753,
-0x1772, 0x1773,
-0x17b4, 0x17b5,
-0x17b7, 0x17bd,
-0x17c6, 0x17c6,
-0x17c9, 0x17d3,
-0x17d7, 0x17d7,
-0x17dd, 0x17dd,
-0x180b, 0x180e,
-0x1843, 0x1843,
-0x18a9, 0x18a9,
-0x1920, 0x1922,
-0x1927, 0x1928,
-0x1932, 0x1932,
-0x1939, 0x193b,
-0x1a17, 0x1a18,
-0x1a1b, 0x1a1b,
-0x1a56, 0x1a56,
-0x1a58, 0x1a5e,
-0x1a60, 0x1a60,
-0x1a62, 0x1a62,
-0x1a65, 0x1a6c,
-0x1a73, 0x1a7c,
-0x1a7f, 0x1a7f,
-0x1aa7, 0x1aa7,
-0x1ab0, 0x1abe,
-0x1b00, 0x1b03,
-0x1b34, 0x1b34,
-0x1b36, 0x1b3a,
-0x1b3c, 0x1b3c,
-0x1b42, 0x1b42,
-0x1b6b, 0x1b73,
-0x1b80, 0x1b81,
-0x1ba2, 0x1ba5,
-0x1ba8, 0x1ba9,
-0x1bab, 0x1bad,
-0x1be6, 0x1be6,
-0x1be8, 0x1be9,
-0x1bed, 0x1bed,
-0x1bef, 0x1bf1,
-0x1c2c, 0x1c33,
-0x1c36, 0x1c37,
-0x1c78, 0x1c7d,
-0x1cd0, 0x1cd2,
-0x1cd4, 0x1ce0,
-0x1ce2, 0x1ce8,
-0x1ced, 0x1ced,
-0x1cf4, 0x1cf4,
-0x1cf8, 0x1cf9,
-0x1d2c, 0x1d6a,
-0x1d78, 0x1d78,
-0x1d9b, 0x1df5,
-0x1dfc, 0x1dff,
-0x1fbd, 0x1fbd,
-0x1fbf, 0x1fc1,
-0x1fcd, 0x1fcf,
-0x1fdd, 0x1fdf,
-0x1fed, 0x1fef,
-0x1ffd, 0x1ffe,
-0x200b, 0x200f,
-0x2018, 0x2019,
-0x2024, 0x2024,
-0x2027, 0x2027,
-0x202a, 0x202e,
-0x2060, 0x2064,
-0x2066, 0x206f,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x20d0, 0x20f0,
-0x2c7c, 0x2c7d,
-0x2cef, 0x2cf1,
-0x2d6f, 0x2d6f,
-0x2d7f, 0x2d7f,
-0x2de0, 0x2dff,
-0x2e2f, 0x2e2f,
-0x3005, 0x3005,
-0x302a, 0x302d,
-0x3031, 0x3035,
-0x303b, 0x303b,
-0x3099, 0x309e,
-0x30fc, 0x30fe,
-0xa015, 0xa015,
-0xa4f8, 0xa4fd,
-0xa60c, 0xa60c,
-0xa66f, 0xa672,
-0xa674, 0xa67d,
-0xa67f, 0xa67f,
-0xa69c, 0xa69f,
-0xa6f0, 0xa6f1,
-0xa700, 0xa721,
-0xa770, 0xa770,
-0xa788, 0xa78a,
-0xa7f8, 0xa7f9,
-0xa802, 0xa802,
-0xa806, 0xa806,
-0xa80b, 0xa80b,
-0xa825, 0xa826,
-0xa8c4, 0xa8c4,
-0xa8e0, 0xa8f1,
-0xa926, 0xa92d,
-0xa947, 0xa951,
-0xa980, 0xa982,
-0xa9b3, 0xa9b3,
-0xa9b6, 0xa9b9,
-0xa9bc, 0xa9bc,
-0xa9cf, 0xa9cf,
-0xa9e5, 0xa9e6,
-0xaa29, 0xaa2e,
-0xaa31, 0xaa32,
-0xaa35, 0xaa36,
-0xaa43, 0xaa43,
-0xaa4c, 0xaa4c,
-0xaa70, 0xaa70,
-0xaa7c, 0xaa7c,
-0xaab0, 0xaab0,
-0xaab2, 0xaab4,
-0xaab7, 0xaab8,
-0xaabe, 0xaabf,
-0xaac1, 0xaac1,
-0xaadd, 0xaadd,
-0xaaec, 0xaaed,
-0xaaf3, 0xaaf4,
-0xaaf6, 0xaaf6,
-0xab5b, 0xab5f,
-0xabe5, 0xabe5,
-0xabe8, 0xabe8,
-0xabed, 0xabed,
-0xfb1e, 0xfb1e,
-0xfbb2, 0xfbc1,
-0xfe00, 0xfe0f,
-0xfe13, 0xfe13,
-0xfe20, 0xfe2f,
-0xfe52, 0xfe52,
-0xfe55, 0xfe55,
-0xfeff, 0xfeff,
-0xff07, 0xff07,
-0xff0e, 0xff0e,
-0xff1a, 0xff1a,
-0xff3e, 0xff3e,
-0xff40, 0xff40,
-0xff70, 0xff70,
-0xff9e, 0xff9f,
-0xffe3, 0xffe3,
-0xfff9, 0xfffb,
-0x101fd, 0x101fd,
-0x102e0, 0x102e0,
-0x10376, 0x1037a,
-0x10a01, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a0f,
-0x10a38, 0x10a3a,
-0x10a3f, 0x10a3f,
-0x10ae5, 0x10ae6,
-0x11001, 0x11001,
-0x11038, 0x11046,
-0x1107f, 0x11081,
-0x110b3, 0x110b6,
-0x110b9, 0x110ba,
-0x110bd, 0x110bd,
-0x11100, 0x11102,
-0x11127, 0x1112b,
-0x1112d, 0x11134,
-0x11173, 0x11173,
-0x11180, 0x11181,
-0x111b6, 0x111be,
-0x111ca, 0x111cc,
-0x1122f, 0x11231,
-0x11234, 0x11234,
-0x11236, 0x11237,
-0x112df, 0x112df,
-0x112e3, 0x112ea,
-0x11300, 0x11301,
-0x1133c, 0x1133c,
-0x11340, 0x11340,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-0x114b3, 0x114b8,
-0x114ba, 0x114ba,
-0x114bf, 0x114c0,
-0x114c2, 0x114c3,
-0x115b2, 0x115b5,
-0x115bc, 0x115bd,
-0x115bf, 0x115c0,
-0x115dc, 0x115dd,
-0x11633, 0x1163a,
-0x1163d, 0x1163d,
-0x1163f, 0x11640,
-0x116ab, 0x116ab,
-0x116ad, 0x116ad,
-0x116b0, 0x116b5,
-0x116b7, 0x116b7,
-0x1171d, 0x1171f,
-0x11722, 0x11725,
-0x11727, 0x1172b,
-0x16af0, 0x16af4,
-0x16b30, 0x16b36,
-0x16b40, 0x16b43,
-0x16f8f, 0x16f9f,
-0x1bc9d, 0x1bc9e,
-0x1bca0, 0x1bca3,
-0x1d167, 0x1d169,
-0x1d173, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0x1d242, 0x1d244,
-0x1da00, 0x1da36,
-0x1da3b, 0x1da6c,
-0x1da75, 0x1da75,
-0x1da84, 0x1da84,
-0x1da9b, 0x1da9f,
-0x1daa1, 0x1daaf,
-0x1e8d0, 0x1e8d6,
-0x1f3fb, 0x1f3ff,
-0xe0001, 0xe0001,
-0xe0020, 0xe007f,
-0xe0100, 0xe01ef,
-}; /* END of CR_Case_Ignorable */
-
-/* PROPERTY: 'Changes_When_Lowercased': Derived Property */
-static const OnigCodePoint
-CR_Changes_When_Lowercased[] = { 588,
-0x0041, 0x005a,
-0x00c0, 0x00d6,
-0x00d8, 0x00de,
-0x0100, 0x0100,
-0x0102, 0x0102,
-0x0104, 0x0104,
-0x0106, 0x0106,
-0x0108, 0x0108,
-0x010a, 0x010a,
-0x010c, 0x010c,
-0x010e, 0x010e,
-0x0110, 0x0110,
-0x0112, 0x0112,
-0x0114, 0x0114,
-0x0116, 0x0116,
-0x0118, 0x0118,
-0x011a, 0x011a,
-0x011c, 0x011c,
-0x011e, 0x011e,
-0x0120, 0x0120,
-0x0122, 0x0122,
-0x0124, 0x0124,
-0x0126, 0x0126,
-0x0128, 0x0128,
-0x012a, 0x012a,
-0x012c, 0x012c,
-0x012e, 0x012e,
-0x0130, 0x0130,
-0x0132, 0x0132,
-0x0134, 0x0134,
-0x0136, 0x0136,
-0x0139, 0x0139,
-0x013b, 0x013b,
-0x013d, 0x013d,
-0x013f, 0x013f,
-0x0141, 0x0141,
-0x0143, 0x0143,
-0x0145, 0x0145,
-0x0147, 0x0147,
-0x014a, 0x014a,
-0x014c, 0x014c,
-0x014e, 0x014e,
-0x0150, 0x0150,
-0x0152, 0x0152,
-0x0154, 0x0154,
-0x0156, 0x0156,
-0x0158, 0x0158,
-0x015a, 0x015a,
-0x015c, 0x015c,
-0x015e, 0x015e,
-0x0160, 0x0160,
-0x0162, 0x0162,
-0x0164, 0x0164,
-0x0166, 0x0166,
-0x0168, 0x0168,
-0x016a, 0x016a,
-0x016c, 0x016c,
-0x016e, 0x016e,
-0x0170, 0x0170,
-0x0172, 0x0172,
-0x0174, 0x0174,
-0x0176, 0x0176,
-0x0178, 0x0179,
-0x017b, 0x017b,
-0x017d, 0x017d,
-0x0181, 0x0182,
-0x0184, 0x0184,
-0x0186, 0x0187,
-0x0189, 0x018b,
-0x018e, 0x0191,
-0x0193, 0x0194,
-0x0196, 0x0198,
-0x019c, 0x019d,
-0x019f, 0x01a0,
-0x01a2, 0x01a2,
-0x01a4, 0x01a4,
-0x01a6, 0x01a7,
-0x01a9, 0x01a9,
-0x01ac, 0x01ac,
-0x01ae, 0x01af,
-0x01b1, 0x01b3,
-0x01b5, 0x01b5,
-0x01b7, 0x01b8,
-0x01bc, 0x01bc,
-0x01c4, 0x01c5,
-0x01c7, 0x01c8,
-0x01ca, 0x01cb,
-0x01cd, 0x01cd,
-0x01cf, 0x01cf,
-0x01d1, 0x01d1,
-0x01d3, 0x01d3,
-0x01d5, 0x01d5,
-0x01d7, 0x01d7,
-0x01d9, 0x01d9,
-0x01db, 0x01db,
-0x01de, 0x01de,
-0x01e0, 0x01e0,
-0x01e2, 0x01e2,
-0x01e4, 0x01e4,
-0x01e6, 0x01e6,
-0x01e8, 0x01e8,
-0x01ea, 0x01ea,
-0x01ec, 0x01ec,
-0x01ee, 0x01ee,
-0x01f1, 0x01f2,
-0x01f4, 0x01f4,
-0x01f6, 0x01f8,
-0x01fa, 0x01fa,
-0x01fc, 0x01fc,
-0x01fe, 0x01fe,
-0x0200, 0x0200,
-0x0202, 0x0202,
-0x0204, 0x0204,
-0x0206, 0x0206,
-0x0208, 0x0208,
-0x020a, 0x020a,
-0x020c, 0x020c,
-0x020e, 0x020e,
-0x0210, 0x0210,
-0x0212, 0x0212,
-0x0214, 0x0214,
-0x0216, 0x0216,
-0x0218, 0x0218,
-0x021a, 0x021a,
-0x021c, 0x021c,
-0x021e, 0x021e,
-0x0220, 0x0220,
-0x0222, 0x0222,
-0x0224, 0x0224,
-0x0226, 0x0226,
-0x0228, 0x0228,
-0x022a, 0x022a,
-0x022c, 0x022c,
-0x022e, 0x022e,
-0x0230, 0x0230,
-0x0232, 0x0232,
-0x023a, 0x023b,
-0x023d, 0x023e,
-0x0241, 0x0241,
-0x0243, 0x0246,
-0x0248, 0x0248,
-0x024a, 0x024a,
-0x024c, 0x024c,
-0x024e, 0x024e,
-0x0370, 0x0370,
-0x0372, 0x0372,
-0x0376, 0x0376,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x038f,
-0x0391, 0x03a1,
-0x03a3, 0x03ab,
-0x03cf, 0x03cf,
-0x03d8, 0x03d8,
-0x03da, 0x03da,
-0x03dc, 0x03dc,
-0x03de, 0x03de,
-0x03e0, 0x03e0,
-0x03e2, 0x03e2,
-0x03e4, 0x03e4,
-0x03e6, 0x03e6,
-0x03e8, 0x03e8,
-0x03ea, 0x03ea,
-0x03ec, 0x03ec,
-0x03ee, 0x03ee,
-0x03f4, 0x03f4,
-0x03f7, 0x03f7,
-0x03f9, 0x03fa,
-0x03fd, 0x042f,
-0x0460, 0x0460,
-0x0462, 0x0462,
-0x0464, 0x0464,
-0x0466, 0x0466,
-0x0468, 0x0468,
-0x046a, 0x046a,
-0x046c, 0x046c,
-0x046e, 0x046e,
-0x0470, 0x0470,
-0x0472, 0x0472,
-0x0474, 0x0474,
-0x0476, 0x0476,
-0x0478, 0x0478,
-0x047a, 0x047a,
-0x047c, 0x047c,
-0x047e, 0x047e,
-0x0480, 0x0480,
-0x048a, 0x048a,
-0x048c, 0x048c,
-0x048e, 0x048e,
-0x0490, 0x0490,
-0x0492, 0x0492,
-0x0494, 0x0494,
-0x0496, 0x0496,
-0x0498, 0x0498,
-0x049a, 0x049a,
-0x049c, 0x049c,
-0x049e, 0x049e,
-0x04a0, 0x04a0,
-0x04a2, 0x04a2,
-0x04a4, 0x04a4,
-0x04a6, 0x04a6,
-0x04a8, 0x04a8,
-0x04aa, 0x04aa,
-0x04ac, 0x04ac,
-0x04ae, 0x04ae,
-0x04b0, 0x04b0,
-0x04b2, 0x04b2,
-0x04b4, 0x04b4,
-0x04b6, 0x04b6,
-0x04b8, 0x04b8,
-0x04ba, 0x04ba,
-0x04bc, 0x04bc,
-0x04be, 0x04be,
-0x04c0, 0x04c1,
-0x04c3, 0x04c3,
-0x04c5, 0x04c5,
-0x04c7, 0x04c7,
-0x04c9, 0x04c9,
-0x04cb, 0x04cb,
-0x04cd, 0x04cd,
-0x04d0, 0x04d0,
-0x04d2, 0x04d2,
-0x04d4, 0x04d4,
-0x04d6, 0x04d6,
-0x04d8, 0x04d8,
-0x04da, 0x04da,
-0x04dc, 0x04dc,
-0x04de, 0x04de,
-0x04e0, 0x04e0,
-0x04e2, 0x04e2,
-0x04e4, 0x04e4,
-0x04e6, 0x04e6,
-0x04e8, 0x04e8,
-0x04ea, 0x04ea,
-0x04ec, 0x04ec,
-0x04ee, 0x04ee,
-0x04f0, 0x04f0,
-0x04f2, 0x04f2,
-0x04f4, 0x04f4,
-0x04f6, 0x04f6,
-0x04f8, 0x04f8,
-0x04fa, 0x04fa,
-0x04fc, 0x04fc,
-0x04fe, 0x04fe,
-0x0500, 0x0500,
-0x0502, 0x0502,
-0x0504, 0x0504,
-0x0506, 0x0506,
-0x0508, 0x0508,
-0x050a, 0x050a,
-0x050c, 0x050c,
-0x050e, 0x050e,
-0x0510, 0x0510,
-0x0512, 0x0512,
-0x0514, 0x0514,
-0x0516, 0x0516,
-0x0518, 0x0518,
-0x051a, 0x051a,
-0x051c, 0x051c,
-0x051e, 0x051e,
-0x0520, 0x0520,
-0x0522, 0x0522,
-0x0524, 0x0524,
-0x0526, 0x0526,
-0x0528, 0x0528,
-0x052a, 0x052a,
-0x052c, 0x052c,
-0x052e, 0x052e,
-0x0531, 0x0556,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x13a0, 0x13f5,
-0x1e00, 0x1e00,
-0x1e02, 0x1e02,
-0x1e04, 0x1e04,
-0x1e06, 0x1e06,
-0x1e08, 0x1e08,
-0x1e0a, 0x1e0a,
-0x1e0c, 0x1e0c,
-0x1e0e, 0x1e0e,
-0x1e10, 0x1e10,
-0x1e12, 0x1e12,
-0x1e14, 0x1e14,
-0x1e16, 0x1e16,
-0x1e18, 0x1e18,
-0x1e1a, 0x1e1a,
-0x1e1c, 0x1e1c,
-0x1e1e, 0x1e1e,
-0x1e20, 0x1e20,
-0x1e22, 0x1e22,
-0x1e24, 0x1e24,
-0x1e26, 0x1e26,
-0x1e28, 0x1e28,
-0x1e2a, 0x1e2a,
-0x1e2c, 0x1e2c,
-0x1e2e, 0x1e2e,
-0x1e30, 0x1e30,
-0x1e32, 0x1e32,
-0x1e34, 0x1e34,
-0x1e36, 0x1e36,
-0x1e38, 0x1e38,
-0x1e3a, 0x1e3a,
-0x1e3c, 0x1e3c,
-0x1e3e, 0x1e3e,
-0x1e40, 0x1e40,
-0x1e42, 0x1e42,
-0x1e44, 0x1e44,
-0x1e46, 0x1e46,
-0x1e48, 0x1e48,
-0x1e4a, 0x1e4a,
-0x1e4c, 0x1e4c,
-0x1e4e, 0x1e4e,
-0x1e50, 0x1e50,
-0x1e52, 0x1e52,
-0x1e54, 0x1e54,
-0x1e56, 0x1e56,
-0x1e58, 0x1e58,
-0x1e5a, 0x1e5a,
-0x1e5c, 0x1e5c,
-0x1e5e, 0x1e5e,
-0x1e60, 0x1e60,
-0x1e62, 0x1e62,
-0x1e64, 0x1e64,
-0x1e66, 0x1e66,
-0x1e68, 0x1e68,
-0x1e6a, 0x1e6a,
-0x1e6c, 0x1e6c,
-0x1e6e, 0x1e6e,
-0x1e70, 0x1e70,
-0x1e72, 0x1e72,
-0x1e74, 0x1e74,
-0x1e76, 0x1e76,
-0x1e78, 0x1e78,
-0x1e7a, 0x1e7a,
-0x1e7c, 0x1e7c,
-0x1e7e, 0x1e7e,
-0x1e80, 0x1e80,
-0x1e82, 0x1e82,
-0x1e84, 0x1e84,
-0x1e86, 0x1e86,
-0x1e88, 0x1e88,
-0x1e8a, 0x1e8a,
-0x1e8c, 0x1e8c,
-0x1e8e, 0x1e8e,
-0x1e90, 0x1e90,
-0x1e92, 0x1e92,
-0x1e94, 0x1e94,
-0x1e9e, 0x1e9e,
-0x1ea0, 0x1ea0,
-0x1ea2, 0x1ea2,
-0x1ea4, 0x1ea4,
-0x1ea6, 0x1ea6,
-0x1ea8, 0x1ea8,
-0x1eaa, 0x1eaa,
-0x1eac, 0x1eac,
-0x1eae, 0x1eae,
-0x1eb0, 0x1eb0,
-0x1eb2, 0x1eb2,
-0x1eb4, 0x1eb4,
-0x1eb6, 0x1eb6,
-0x1eb8, 0x1eb8,
-0x1eba, 0x1eba,
-0x1ebc, 0x1ebc,
-0x1ebe, 0x1ebe,
-0x1ec0, 0x1ec0,
-0x1ec2, 0x1ec2,
-0x1ec4, 0x1ec4,
-0x1ec6, 0x1ec6,
-0x1ec8, 0x1ec8,
-0x1eca, 0x1eca,
-0x1ecc, 0x1ecc,
-0x1ece, 0x1ece,
-0x1ed0, 0x1ed0,
-0x1ed2, 0x1ed2,
-0x1ed4, 0x1ed4,
-0x1ed6, 0x1ed6,
-0x1ed8, 0x1ed8,
-0x1eda, 0x1eda,
-0x1edc, 0x1edc,
-0x1ede, 0x1ede,
-0x1ee0, 0x1ee0,
-0x1ee2, 0x1ee2,
-0x1ee4, 0x1ee4,
-0x1ee6, 0x1ee6,
-0x1ee8, 0x1ee8,
-0x1eea, 0x1eea,
-0x1eec, 0x1eec,
-0x1eee, 0x1eee,
-0x1ef0, 0x1ef0,
-0x1ef2, 0x1ef2,
-0x1ef4, 0x1ef4,
-0x1ef6, 0x1ef6,
-0x1ef8, 0x1ef8,
-0x1efa, 0x1efa,
-0x1efc, 0x1efc,
-0x1efe, 0x1efe,
-0x1f08, 0x1f0f,
-0x1f18, 0x1f1d,
-0x1f28, 0x1f2f,
-0x1f38, 0x1f3f,
-0x1f48, 0x1f4d,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f5f,
-0x1f68, 0x1f6f,
-0x1f88, 0x1f8f,
-0x1f98, 0x1f9f,
-0x1fa8, 0x1faf,
-0x1fb8, 0x1fbc,
-0x1fc8, 0x1fcc,
-0x1fd8, 0x1fdb,
-0x1fe8, 0x1fec,
-0x1ff8, 0x1ffc,
-0x2126, 0x2126,
-0x212a, 0x212b,
-0x2132, 0x2132,
-0x2160, 0x216f,
-0x2183, 0x2183,
-0x24b6, 0x24cf,
-0x2c00, 0x2c2e,
-0x2c60, 0x2c60,
-0x2c62, 0x2c64,
-0x2c67, 0x2c67,
-0x2c69, 0x2c69,
-0x2c6b, 0x2c6b,
-0x2c6d, 0x2c70,
-0x2c72, 0x2c72,
-0x2c75, 0x2c75,
-0x2c7e, 0x2c80,
-0x2c82, 0x2c82,
-0x2c84, 0x2c84,
-0x2c86, 0x2c86,
-0x2c88, 0x2c88,
-0x2c8a, 0x2c8a,
-0x2c8c, 0x2c8c,
-0x2c8e, 0x2c8e,
-0x2c90, 0x2c90,
-0x2c92, 0x2c92,
-0x2c94, 0x2c94,
-0x2c96, 0x2c96,
-0x2c98, 0x2c98,
-0x2c9a, 0x2c9a,
-0x2c9c, 0x2c9c,
-0x2c9e, 0x2c9e,
-0x2ca0, 0x2ca0,
-0x2ca2, 0x2ca2,
-0x2ca4, 0x2ca4,
-0x2ca6, 0x2ca6,
-0x2ca8, 0x2ca8,
-0x2caa, 0x2caa,
-0x2cac, 0x2cac,
-0x2cae, 0x2cae,
-0x2cb0, 0x2cb0,
-0x2cb2, 0x2cb2,
-0x2cb4, 0x2cb4,
-0x2cb6, 0x2cb6,
-0x2cb8, 0x2cb8,
-0x2cba, 0x2cba,
-0x2cbc, 0x2cbc,
-0x2cbe, 0x2cbe,
-0x2cc0, 0x2cc0,
-0x2cc2, 0x2cc2,
-0x2cc4, 0x2cc4,
-0x2cc6, 0x2cc6,
-0x2cc8, 0x2cc8,
-0x2cca, 0x2cca,
-0x2ccc, 0x2ccc,
-0x2cce, 0x2cce,
-0x2cd0, 0x2cd0,
-0x2cd2, 0x2cd2,
-0x2cd4, 0x2cd4,
-0x2cd6, 0x2cd6,
-0x2cd8, 0x2cd8,
-0x2cda, 0x2cda,
-0x2cdc, 0x2cdc,
-0x2cde, 0x2cde,
-0x2ce0, 0x2ce0,
-0x2ce2, 0x2ce2,
-0x2ceb, 0x2ceb,
-0x2ced, 0x2ced,
-0x2cf2, 0x2cf2,
-0xa640, 0xa640,
-0xa642, 0xa642,
-0xa644, 0xa644,
-0xa646, 0xa646,
-0xa648, 0xa648,
-0xa64a, 0xa64a,
-0xa64c, 0xa64c,
-0xa64e, 0xa64e,
-0xa650, 0xa650,
-0xa652, 0xa652,
-0xa654, 0xa654,
-0xa656, 0xa656,
-0xa658, 0xa658,
-0xa65a, 0xa65a,
-0xa65c, 0xa65c,
-0xa65e, 0xa65e,
-0xa660, 0xa660,
-0xa662, 0xa662,
-0xa664, 0xa664,
-0xa666, 0xa666,
-0xa668, 0xa668,
-0xa66a, 0xa66a,
-0xa66c, 0xa66c,
-0xa680, 0xa680,
-0xa682, 0xa682,
-0xa684, 0xa684,
-0xa686, 0xa686,
-0xa688, 0xa688,
-0xa68a, 0xa68a,
-0xa68c, 0xa68c,
-0xa68e, 0xa68e,
-0xa690, 0xa690,
-0xa692, 0xa692,
-0xa694, 0xa694,
-0xa696, 0xa696,
-0xa698, 0xa698,
-0xa69a, 0xa69a,
-0xa722, 0xa722,
-0xa724, 0xa724,
-0xa726, 0xa726,
-0xa728, 0xa728,
-0xa72a, 0xa72a,
-0xa72c, 0xa72c,
-0xa72e, 0xa72e,
-0xa732, 0xa732,
-0xa734, 0xa734,
-0xa736, 0xa736,
-0xa738, 0xa738,
-0xa73a, 0xa73a,
-0xa73c, 0xa73c,
-0xa73e, 0xa73e,
-0xa740, 0xa740,
-0xa742, 0xa742,
-0xa744, 0xa744,
-0xa746, 0xa746,
-0xa748, 0xa748,
-0xa74a, 0xa74a,
-0xa74c, 0xa74c,
-0xa74e, 0xa74e,
-0xa750, 0xa750,
-0xa752, 0xa752,
-0xa754, 0xa754,
-0xa756, 0xa756,
-0xa758, 0xa758,
-0xa75a, 0xa75a,
-0xa75c, 0xa75c,
-0xa75e, 0xa75e,
-0xa760, 0xa760,
-0xa762, 0xa762,
-0xa764, 0xa764,
-0xa766, 0xa766,
-0xa768, 0xa768,
-0xa76a, 0xa76a,
-0xa76c, 0xa76c,
-0xa76e, 0xa76e,
-0xa779, 0xa779,
-0xa77b, 0xa77b,
-0xa77d, 0xa77e,
-0xa780, 0xa780,
-0xa782, 0xa782,
-0xa784, 0xa784,
-0xa786, 0xa786,
-0xa78b, 0xa78b,
-0xa78d, 0xa78d,
-0xa790, 0xa790,
-0xa792, 0xa792,
-0xa796, 0xa796,
-0xa798, 0xa798,
-0xa79a, 0xa79a,
-0xa79c, 0xa79c,
-0xa79e, 0xa79e,
-0xa7a0, 0xa7a0,
-0xa7a2, 0xa7a2,
-0xa7a4, 0xa7a4,
-0xa7a6, 0xa7a6,
-0xa7a8, 0xa7a8,
-0xa7aa, 0xa7ad,
-0xa7b0, 0xa7b4,
-0xa7b6, 0xa7b6,
-0xff21, 0xff3a,
-0x10400, 0x10427,
-0x10c80, 0x10cb2,
-0x118a0, 0x118bf,
-}; /* END of CR_Changes_When_Lowercased */
-
-/* PROPERTY: 'Changes_When_Uppercased': Derived Property */
-static const OnigCodePoint
-CR_Changes_When_Uppercased[] = { 605,
-0x0061, 0x007a,
-0x00b5, 0x00b5,
-0x00df, 0x00f6,
-0x00f8, 0x00ff,
-0x0101, 0x0101,
-0x0103, 0x0103,
-0x0105, 0x0105,
-0x0107, 0x0107,
-0x0109, 0x0109,
-0x010b, 0x010b,
-0x010d, 0x010d,
-0x010f, 0x010f,
-0x0111, 0x0111,
-0x0113, 0x0113,
-0x0115, 0x0115,
-0x0117, 0x0117,
-0x0119, 0x0119,
-0x011b, 0x011b,
-0x011d, 0x011d,
-0x011f, 0x011f,
-0x0121, 0x0121,
-0x0123, 0x0123,
-0x0125, 0x0125,
-0x0127, 0x0127,
-0x0129, 0x0129,
-0x012b, 0x012b,
-0x012d, 0x012d,
-0x012f, 0x012f,
-0x0131, 0x0131,
-0x0133, 0x0133,
-0x0135, 0x0135,
-0x0137, 0x0137,
-0x013a, 0x013a,
-0x013c, 0x013c,
-0x013e, 0x013e,
-0x0140, 0x0140,
-0x0142, 0x0142,
-0x0144, 0x0144,
-0x0146, 0x0146,
-0x0148, 0x0149,
-0x014b, 0x014b,
-0x014d, 0x014d,
-0x014f, 0x014f,
-0x0151, 0x0151,
-0x0153, 0x0153,
-0x0155, 0x0155,
-0x0157, 0x0157,
-0x0159, 0x0159,
-0x015b, 0x015b,
-0x015d, 0x015d,
-0x015f, 0x015f,
-0x0161, 0x0161,
-0x0163, 0x0163,
-0x0165, 0x0165,
-0x0167, 0x0167,
-0x0169, 0x0169,
-0x016b, 0x016b,
-0x016d, 0x016d,
-0x016f, 0x016f,
-0x0171, 0x0171,
-0x0173, 0x0173,
-0x0175, 0x0175,
-0x0177, 0x0177,
-0x017a, 0x017a,
-0x017c, 0x017c,
-0x017e, 0x0180,
-0x0183, 0x0183,
-0x0185, 0x0185,
-0x0188, 0x0188,
-0x018c, 0x018c,
-0x0192, 0x0192,
-0x0195, 0x0195,
-0x0199, 0x019a,
-0x019e, 0x019e,
-0x01a1, 0x01a1,
-0x01a3, 0x01a3,
-0x01a5, 0x01a5,
-0x01a8, 0x01a8,
-0x01ad, 0x01ad,
-0x01b0, 0x01b0,
-0x01b4, 0x01b4,
-0x01b6, 0x01b6,
-0x01b9, 0x01b9,
-0x01bd, 0x01bd,
-0x01bf, 0x01bf,
-0x01c5, 0x01c6,
-0x01c8, 0x01c9,
-0x01cb, 0x01cc,
-0x01ce, 0x01ce,
-0x01d0, 0x01d0,
-0x01d2, 0x01d2,
-0x01d4, 0x01d4,
-0x01d6, 0x01d6,
-0x01d8, 0x01d8,
-0x01da, 0x01da,
-0x01dc, 0x01dd,
-0x01df, 0x01df,
-0x01e1, 0x01e1,
-0x01e3, 0x01e3,
-0x01e5, 0x01e5,
-0x01e7, 0x01e7,
-0x01e9, 0x01e9,
-0x01eb, 0x01eb,
-0x01ed, 0x01ed,
-0x01ef, 0x01f0,
-0x01f2, 0x01f3,
-0x01f5, 0x01f5,
-0x01f9, 0x01f9,
-0x01fb, 0x01fb,
-0x01fd, 0x01fd,
-0x01ff, 0x01ff,
-0x0201, 0x0201,
-0x0203, 0x0203,
-0x0205, 0x0205,
-0x0207, 0x0207,
-0x0209, 0x0209,
-0x020b, 0x020b,
-0x020d, 0x020d,
-0x020f, 0x020f,
-0x0211, 0x0211,
-0x0213, 0x0213,
-0x0215, 0x0215,
-0x0217, 0x0217,
-0x0219, 0x0219,
-0x021b, 0x021b,
-0x021d, 0x021d,
-0x021f, 0x021f,
-0x0223, 0x0223,
-0x0225, 0x0225,
-0x0227, 0x0227,
-0x0229, 0x0229,
-0x022b, 0x022b,
-0x022d, 0x022d,
-0x022f, 0x022f,
-0x0231, 0x0231,
-0x0233, 0x0233,
-0x023c, 0x023c,
-0x023f, 0x0240,
-0x0242, 0x0242,
-0x0247, 0x0247,
-0x0249, 0x0249,
-0x024b, 0x024b,
-0x024d, 0x024d,
-0x024f, 0x0254,
-0x0256, 0x0257,
-0x0259, 0x0259,
-0x025b, 0x025c,
-0x0260, 0x0261,
-0x0263, 0x0263,
-0x0265, 0x0266,
-0x0268, 0x0269,
-0x026b, 0x026c,
-0x026f, 0x026f,
-0x0271, 0x0272,
-0x0275, 0x0275,
-0x027d, 0x027d,
-0x0280, 0x0280,
-0x0283, 0x0283,
-0x0287, 0x028c,
-0x0292, 0x0292,
-0x029d, 0x029e,
-0x0345, 0x0345,
-0x0371, 0x0371,
-0x0373, 0x0373,
-0x0377, 0x0377,
-0x037b, 0x037d,
-0x0390, 0x0390,
-0x03ac, 0x03ce,
-0x03d0, 0x03d1,
-0x03d5, 0x03d7,
-0x03d9, 0x03d9,
-0x03db, 0x03db,
-0x03dd, 0x03dd,
-0x03df, 0x03df,
-0x03e1, 0x03e1,
-0x03e3, 0x03e3,
-0x03e5, 0x03e5,
-0x03e7, 0x03e7,
-0x03e9, 0x03e9,
-0x03eb, 0x03eb,
-0x03ed, 0x03ed,
-0x03ef, 0x03f3,
-0x03f5, 0x03f5,
-0x03f8, 0x03f8,
-0x03fb, 0x03fb,
-0x0430, 0x045f,
-0x0461, 0x0461,
-0x0463, 0x0463,
-0x0465, 0x0465,
-0x0467, 0x0467,
-0x0469, 0x0469,
-0x046b, 0x046b,
-0x046d, 0x046d,
-0x046f, 0x046f,
-0x0471, 0x0471,
-0x0473, 0x0473,
-0x0475, 0x0475,
-0x0477, 0x0477,
-0x0479, 0x0479,
-0x047b, 0x047b,
-0x047d, 0x047d,
-0x047f, 0x047f,
-0x0481, 0x0481,
-0x048b, 0x048b,
-0x048d, 0x048d,
-0x048f, 0x048f,
-0x0491, 0x0491,
-0x0493, 0x0493,
-0x0495, 0x0495,
-0x0497, 0x0497,
-0x0499, 0x0499,
-0x049b, 0x049b,
-0x049d, 0x049d,
-0x049f, 0x049f,
-0x04a1, 0x04a1,
-0x04a3, 0x04a3,
-0x04a5, 0x04a5,
-0x04a7, 0x04a7,
-0x04a9, 0x04a9,
-0x04ab, 0x04ab,
-0x04ad, 0x04ad,
-0x04af, 0x04af,
-0x04b1, 0x04b1,
-0x04b3, 0x04b3,
-0x04b5, 0x04b5,
-0x04b7, 0x04b7,
-0x04b9, 0x04b9,
-0x04bb, 0x04bb,
-0x04bd, 0x04bd,
-0x04bf, 0x04bf,
-0x04c2, 0x04c2,
-0x04c4, 0x04c4,
-0x04c6, 0x04c6,
-0x04c8, 0x04c8,
-0x04ca, 0x04ca,
-0x04cc, 0x04cc,
-0x04ce, 0x04cf,
-0x04d1, 0x04d1,
-0x04d3, 0x04d3,
-0x04d5, 0x04d5,
-0x04d7, 0x04d7,
-0x04d9, 0x04d9,
-0x04db, 0x04db,
-0x04dd, 0x04dd,
-0x04df, 0x04df,
-0x04e1, 0x04e1,
-0x04e3, 0x04e3,
-0x04e5, 0x04e5,
-0x04e7, 0x04e7,
-0x04e9, 0x04e9,
-0x04eb, 0x04eb,
-0x04ed, 0x04ed,
-0x04ef, 0x04ef,
-0x04f1, 0x04f1,
-0x04f3, 0x04f3,
-0x04f5, 0x04f5,
-0x04f7, 0x04f7,
-0x04f9, 0x04f9,
-0x04fb, 0x04fb,
-0x04fd, 0x04fd,
-0x04ff, 0x04ff,
-0x0501, 0x0501,
-0x0503, 0x0503,
-0x0505, 0x0505,
-0x0507, 0x0507,
-0x0509, 0x0509,
-0x050b, 0x050b,
-0x050d, 0x050d,
-0x050f, 0x050f,
-0x0511, 0x0511,
-0x0513, 0x0513,
-0x0515, 0x0515,
-0x0517, 0x0517,
-0x0519, 0x0519,
-0x051b, 0x051b,
-0x051d, 0x051d,
-0x051f, 0x051f,
-0x0521, 0x0521,
-0x0523, 0x0523,
-0x0525, 0x0525,
-0x0527, 0x0527,
-0x0529, 0x0529,
-0x052b, 0x052b,
-0x052d, 0x052d,
-0x052f, 0x052f,
-0x0561, 0x0587,
-0x13f8, 0x13fd,
-0x1d79, 0x1d79,
-0x1d7d, 0x1d7d,
-0x1e01, 0x1e01,
-0x1e03, 0x1e03,
-0x1e05, 0x1e05,
-0x1e07, 0x1e07,
-0x1e09, 0x1e09,
-0x1e0b, 0x1e0b,
-0x1e0d, 0x1e0d,
-0x1e0f, 0x1e0f,
-0x1e11, 0x1e11,
-0x1e13, 0x1e13,
-0x1e15, 0x1e15,
-0x1e17, 0x1e17,
-0x1e19, 0x1e19,
-0x1e1b, 0x1e1b,
-0x1e1d, 0x1e1d,
-0x1e1f, 0x1e1f,
-0x1e21, 0x1e21,
-0x1e23, 0x1e23,
-0x1e25, 0x1e25,
-0x1e27, 0x1e27,
-0x1e29, 0x1e29,
-0x1e2b, 0x1e2b,
-0x1e2d, 0x1e2d,
-0x1e2f, 0x1e2f,
-0x1e31, 0x1e31,
-0x1e33, 0x1e33,
-0x1e35, 0x1e35,
-0x1e37, 0x1e37,
-0x1e39, 0x1e39,
-0x1e3b, 0x1e3b,
-0x1e3d, 0x1e3d,
-0x1e3f, 0x1e3f,
-0x1e41, 0x1e41,
-0x1e43, 0x1e43,
-0x1e45, 0x1e45,
-0x1e47, 0x1e47,
-0x1e49, 0x1e49,
-0x1e4b, 0x1e4b,
-0x1e4d, 0x1e4d,
-0x1e4f, 0x1e4f,
-0x1e51, 0x1e51,
-0x1e53, 0x1e53,
-0x1e55, 0x1e55,
-0x1e57, 0x1e57,
-0x1e59, 0x1e59,
-0x1e5b, 0x1e5b,
-0x1e5d, 0x1e5d,
-0x1e5f, 0x1e5f,
-0x1e61, 0x1e61,
-0x1e63, 0x1e63,
-0x1e65, 0x1e65,
-0x1e67, 0x1e67,
-0x1e69, 0x1e69,
-0x1e6b, 0x1e6b,
-0x1e6d, 0x1e6d,
-0x1e6f, 0x1e6f,
-0x1e71, 0x1e71,
-0x1e73, 0x1e73,
-0x1e75, 0x1e75,
-0x1e77, 0x1e77,
-0x1e79, 0x1e79,
-0x1e7b, 0x1e7b,
-0x1e7d, 0x1e7d,
-0x1e7f, 0x1e7f,
-0x1e81, 0x1e81,
-0x1e83, 0x1e83,
-0x1e85, 0x1e85,
-0x1e87, 0x1e87,
-0x1e89, 0x1e89,
-0x1e8b, 0x1e8b,
-0x1e8d, 0x1e8d,
-0x1e8f, 0x1e8f,
-0x1e91, 0x1e91,
-0x1e93, 0x1e93,
-0x1e95, 0x1e9b,
-0x1ea1, 0x1ea1,
-0x1ea3, 0x1ea3,
-0x1ea5, 0x1ea5,
-0x1ea7, 0x1ea7,
-0x1ea9, 0x1ea9,
-0x1eab, 0x1eab,
-0x1ead, 0x1ead,
-0x1eaf, 0x1eaf,
-0x1eb1, 0x1eb1,
-0x1eb3, 0x1eb3,
-0x1eb5, 0x1eb5,
-0x1eb7, 0x1eb7,
-0x1eb9, 0x1eb9,
-0x1ebb, 0x1ebb,
-0x1ebd, 0x1ebd,
-0x1ebf, 0x1ebf,
-0x1ec1, 0x1ec1,
-0x1ec3, 0x1ec3,
-0x1ec5, 0x1ec5,
-0x1ec7, 0x1ec7,
-0x1ec9, 0x1ec9,
-0x1ecb, 0x1ecb,
-0x1ecd, 0x1ecd,
-0x1ecf, 0x1ecf,
-0x1ed1, 0x1ed1,
-0x1ed3, 0x1ed3,
-0x1ed5, 0x1ed5,
-0x1ed7, 0x1ed7,
-0x1ed9, 0x1ed9,
-0x1edb, 0x1edb,
-0x1edd, 0x1edd,
-0x1edf, 0x1edf,
-0x1ee1, 0x1ee1,
-0x1ee3, 0x1ee3,
-0x1ee5, 0x1ee5,
-0x1ee7, 0x1ee7,
-0x1ee9, 0x1ee9,
-0x1eeb, 0x1eeb,
-0x1eed, 0x1eed,
-0x1eef, 0x1eef,
-0x1ef1, 0x1ef1,
-0x1ef3, 0x1ef3,
-0x1ef5, 0x1ef5,
-0x1ef7, 0x1ef7,
-0x1ef9, 0x1ef9,
-0x1efb, 0x1efb,
-0x1efd, 0x1efd,
-0x1eff, 0x1f07,
-0x1f10, 0x1f15,
-0x1f20, 0x1f27,
-0x1f30, 0x1f37,
-0x1f40, 0x1f45,
-0x1f50, 0x1f57,
-0x1f60, 0x1f67,
-0x1f70, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fb7,
-0x1fbc, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fc7,
-0x1fcc, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fd7,
-0x1fe0, 0x1fe7,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ff7,
-0x1ffc, 0x1ffc,
-0x214e, 0x214e,
-0x2170, 0x217f,
-0x2184, 0x2184,
-0x24d0, 0x24e9,
-0x2c30, 0x2c5e,
-0x2c61, 0x2c61,
-0x2c65, 0x2c66,
-0x2c68, 0x2c68,
-0x2c6a, 0x2c6a,
-0x2c6c, 0x2c6c,
-0x2c73, 0x2c73,
-0x2c76, 0x2c76,
-0x2c81, 0x2c81,
-0x2c83, 0x2c83,
-0x2c85, 0x2c85,
-0x2c87, 0x2c87,
-0x2c89, 0x2c89,
-0x2c8b, 0x2c8b,
-0x2c8d, 0x2c8d,
-0x2c8f, 0x2c8f,
-0x2c91, 0x2c91,
-0x2c93, 0x2c93,
-0x2c95, 0x2c95,
-0x2c97, 0x2c97,
-0x2c99, 0x2c99,
-0x2c9b, 0x2c9b,
-0x2c9d, 0x2c9d,
-0x2c9f, 0x2c9f,
-0x2ca1, 0x2ca1,
-0x2ca3, 0x2ca3,
-0x2ca5, 0x2ca5,
-0x2ca7, 0x2ca7,
-0x2ca9, 0x2ca9,
-0x2cab, 0x2cab,
-0x2cad, 0x2cad,
-0x2caf, 0x2caf,
-0x2cb1, 0x2cb1,
-0x2cb3, 0x2cb3,
-0x2cb5, 0x2cb5,
-0x2cb7, 0x2cb7,
-0x2cb9, 0x2cb9,
-0x2cbb, 0x2cbb,
-0x2cbd, 0x2cbd,
-0x2cbf, 0x2cbf,
-0x2cc1, 0x2cc1,
-0x2cc3, 0x2cc3,
-0x2cc5, 0x2cc5,
-0x2cc7, 0x2cc7,
-0x2cc9, 0x2cc9,
-0x2ccb, 0x2ccb,
-0x2ccd, 0x2ccd,
-0x2ccf, 0x2ccf,
-0x2cd1, 0x2cd1,
-0x2cd3, 0x2cd3,
-0x2cd5, 0x2cd5,
-0x2cd7, 0x2cd7,
-0x2cd9, 0x2cd9,
-0x2cdb, 0x2cdb,
-0x2cdd, 0x2cdd,
-0x2cdf, 0x2cdf,
-0x2ce1, 0x2ce1,
-0x2ce3, 0x2ce3,
-0x2cec, 0x2cec,
-0x2cee, 0x2cee,
-0x2cf3, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0xa641, 0xa641,
-0xa643, 0xa643,
-0xa645, 0xa645,
-0xa647, 0xa647,
-0xa649, 0xa649,
-0xa64b, 0xa64b,
-0xa64d, 0xa64d,
-0xa64f, 0xa64f,
-0xa651, 0xa651,
-0xa653, 0xa653,
-0xa655, 0xa655,
-0xa657, 0xa657,
-0xa659, 0xa659,
-0xa65b, 0xa65b,
-0xa65d, 0xa65d,
-0xa65f, 0xa65f,
-0xa661, 0xa661,
-0xa663, 0xa663,
-0xa665, 0xa665,
-0xa667, 0xa667,
-0xa669, 0xa669,
-0xa66b, 0xa66b,
-0xa66d, 0xa66d,
-0xa681, 0xa681,
-0xa683, 0xa683,
-0xa685, 0xa685,
-0xa687, 0xa687,
-0xa689, 0xa689,
-0xa68b, 0xa68b,
-0xa68d, 0xa68d,
-0xa68f, 0xa68f,
-0xa691, 0xa691,
-0xa693, 0xa693,
-0xa695, 0xa695,
-0xa697, 0xa697,
-0xa699, 0xa699,
-0xa69b, 0xa69b,
-0xa723, 0xa723,
-0xa725, 0xa725,
-0xa727, 0xa727,
-0xa729, 0xa729,
-0xa72b, 0xa72b,
-0xa72d, 0xa72d,
-0xa72f, 0xa72f,
-0xa733, 0xa733,
-0xa735, 0xa735,
-0xa737, 0xa737,
-0xa739, 0xa739,
-0xa73b, 0xa73b,
-0xa73d, 0xa73d,
-0xa73f, 0xa73f,
-0xa741, 0xa741,
-0xa743, 0xa743,
-0xa745, 0xa745,
-0xa747, 0xa747,
-0xa749, 0xa749,
-0xa74b, 0xa74b,
-0xa74d, 0xa74d,
-0xa74f, 0xa74f,
-0xa751, 0xa751,
-0xa753, 0xa753,
-0xa755, 0xa755,
-0xa757, 0xa757,
-0xa759, 0xa759,
-0xa75b, 0xa75b,
-0xa75d, 0xa75d,
-0xa75f, 0xa75f,
-0xa761, 0xa761,
-0xa763, 0xa763,
-0xa765, 0xa765,
-0xa767, 0xa767,
-0xa769, 0xa769,
-0xa76b, 0xa76b,
-0xa76d, 0xa76d,
-0xa76f, 0xa76f,
-0xa77a, 0xa77a,
-0xa77c, 0xa77c,
-0xa77f, 0xa77f,
-0xa781, 0xa781,
-0xa783, 0xa783,
-0xa785, 0xa785,
-0xa787, 0xa787,
-0xa78c, 0xa78c,
-0xa791, 0xa791,
-0xa793, 0xa793,
-0xa797, 0xa797,
-0xa799, 0xa799,
-0xa79b, 0xa79b,
-0xa79d, 0xa79d,
-0xa79f, 0xa79f,
-0xa7a1, 0xa7a1,
-0xa7a3, 0xa7a3,
-0xa7a5, 0xa7a5,
-0xa7a7, 0xa7a7,
-0xa7a9, 0xa7a9,
-0xa7b5, 0xa7b5,
-0xa7b7, 0xa7b7,
-0xab53, 0xab53,
-0xab70, 0xabbf,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xff41, 0xff5a,
-0x10428, 0x1044f,
-0x10cc0, 0x10cf2,
-0x118c0, 0x118df,
-}; /* END of CR_Changes_When_Uppercased */
-
-/* PROPERTY: 'Changes_When_Titlecased': Derived Property */
-static const OnigCodePoint
-CR_Changes_When_Titlecased[] = { 606,
-0x0061, 0x007a,
-0x00b5, 0x00b5,
-0x00df, 0x00f6,
-0x00f8, 0x00ff,
-0x0101, 0x0101,
-0x0103, 0x0103,
-0x0105, 0x0105,
-0x0107, 0x0107,
-0x0109, 0x0109,
-0x010b, 0x010b,
-0x010d, 0x010d,
-0x010f, 0x010f,
-0x0111, 0x0111,
-0x0113, 0x0113,
-0x0115, 0x0115,
-0x0117, 0x0117,
-0x0119, 0x0119,
-0x011b, 0x011b,
-0x011d, 0x011d,
-0x011f, 0x011f,
-0x0121, 0x0121,
-0x0123, 0x0123,
-0x0125, 0x0125,
-0x0127, 0x0127,
-0x0129, 0x0129,
-0x012b, 0x012b,
-0x012d, 0x012d,
-0x012f, 0x012f,
-0x0131, 0x0131,
-0x0133, 0x0133,
-0x0135, 0x0135,
-0x0137, 0x0137,
-0x013a, 0x013a,
-0x013c, 0x013c,
-0x013e, 0x013e,
-0x0140, 0x0140,
-0x0142, 0x0142,
-0x0144, 0x0144,
-0x0146, 0x0146,
-0x0148, 0x0149,
-0x014b, 0x014b,
-0x014d, 0x014d,
-0x014f, 0x014f,
-0x0151, 0x0151,
-0x0153, 0x0153,
-0x0155, 0x0155,
-0x0157, 0x0157,
-0x0159, 0x0159,
-0x015b, 0x015b,
-0x015d, 0x015d,
-0x015f, 0x015f,
-0x0161, 0x0161,
-0x0163, 0x0163,
-0x0165, 0x0165,
-0x0167, 0x0167,
-0x0169, 0x0169,
-0x016b, 0x016b,
-0x016d, 0x016d,
-0x016f, 0x016f,
-0x0171, 0x0171,
-0x0173, 0x0173,
-0x0175, 0x0175,
-0x0177, 0x0177,
-0x017a, 0x017a,
-0x017c, 0x017c,
-0x017e, 0x0180,
-0x0183, 0x0183,
-0x0185, 0x0185,
-0x0188, 0x0188,
-0x018c, 0x018c,
-0x0192, 0x0192,
-0x0195, 0x0195,
-0x0199, 0x019a,
-0x019e, 0x019e,
-0x01a1, 0x01a1,
-0x01a3, 0x01a3,
-0x01a5, 0x01a5,
-0x01a8, 0x01a8,
-0x01ad, 0x01ad,
-0x01b0, 0x01b0,
-0x01b4, 0x01b4,
-0x01b6, 0x01b6,
-0x01b9, 0x01b9,
-0x01bd, 0x01bd,
-0x01bf, 0x01bf,
-0x01c4, 0x01c4,
-0x01c6, 0x01c7,
-0x01c9, 0x01ca,
-0x01cc, 0x01cc,
-0x01ce, 0x01ce,
-0x01d0, 0x01d0,
-0x01d2, 0x01d2,
-0x01d4, 0x01d4,
-0x01d6, 0x01d6,
-0x01d8, 0x01d8,
-0x01da, 0x01da,
-0x01dc, 0x01dd,
-0x01df, 0x01df,
-0x01e1, 0x01e1,
-0x01e3, 0x01e3,
-0x01e5, 0x01e5,
-0x01e7, 0x01e7,
-0x01e9, 0x01e9,
-0x01eb, 0x01eb,
-0x01ed, 0x01ed,
-0x01ef, 0x01f1,
-0x01f3, 0x01f3,
-0x01f5, 0x01f5,
-0x01f9, 0x01f9,
-0x01fb, 0x01fb,
-0x01fd, 0x01fd,
-0x01ff, 0x01ff,
-0x0201, 0x0201,
-0x0203, 0x0203,
-0x0205, 0x0205,
-0x0207, 0x0207,
-0x0209, 0x0209,
-0x020b, 0x020b,
-0x020d, 0x020d,
-0x020f, 0x020f,
-0x0211, 0x0211,
-0x0213, 0x0213,
-0x0215, 0x0215,
-0x0217, 0x0217,
-0x0219, 0x0219,
-0x021b, 0x021b,
-0x021d, 0x021d,
-0x021f, 0x021f,
-0x0223, 0x0223,
-0x0225, 0x0225,
-0x0227, 0x0227,
-0x0229, 0x0229,
-0x022b, 0x022b,
-0x022d, 0x022d,
-0x022f, 0x022f,
-0x0231, 0x0231,
-0x0233, 0x0233,
-0x023c, 0x023c,
-0x023f, 0x0240,
-0x0242, 0x0242,
-0x0247, 0x0247,
-0x0249, 0x0249,
-0x024b, 0x024b,
-0x024d, 0x024d,
-0x024f, 0x0254,
-0x0256, 0x0257,
-0x0259, 0x0259,
-0x025b, 0x025c,
-0x0260, 0x0261,
-0x0263, 0x0263,
-0x0265, 0x0266,
-0x0268, 0x0269,
-0x026b, 0x026c,
-0x026f, 0x026f,
-0x0271, 0x0272,
-0x0275, 0x0275,
-0x027d, 0x027d,
-0x0280, 0x0280,
-0x0283, 0x0283,
-0x0287, 0x028c,
-0x0292, 0x0292,
-0x029d, 0x029e,
-0x0345, 0x0345,
-0x0371, 0x0371,
-0x0373, 0x0373,
-0x0377, 0x0377,
-0x037b, 0x037d,
-0x0390, 0x0390,
-0x03ac, 0x03ce,
-0x03d0, 0x03d1,
-0x03d5, 0x03d7,
-0x03d9, 0x03d9,
-0x03db, 0x03db,
-0x03dd, 0x03dd,
-0x03df, 0x03df,
-0x03e1, 0x03e1,
-0x03e3, 0x03e3,
-0x03e5, 0x03e5,
-0x03e7, 0x03e7,
-0x03e9, 0x03e9,
-0x03eb, 0x03eb,
-0x03ed, 0x03ed,
-0x03ef, 0x03f3,
-0x03f5, 0x03f5,
-0x03f8, 0x03f8,
-0x03fb, 0x03fb,
-0x0430, 0x045f,
-0x0461, 0x0461,
-0x0463, 0x0463,
-0x0465, 0x0465,
-0x0467, 0x0467,
-0x0469, 0x0469,
-0x046b, 0x046b,
-0x046d, 0x046d,
-0x046f, 0x046f,
-0x0471, 0x0471,
-0x0473, 0x0473,
-0x0475, 0x0475,
-0x0477, 0x0477,
-0x0479, 0x0479,
-0x047b, 0x047b,
-0x047d, 0x047d,
-0x047f, 0x047f,
-0x0481, 0x0481,
-0x048b, 0x048b,
-0x048d, 0x048d,
-0x048f, 0x048f,
-0x0491, 0x0491,
-0x0493, 0x0493,
-0x0495, 0x0495,
-0x0497, 0x0497,
-0x0499, 0x0499,
-0x049b, 0x049b,
-0x049d, 0x049d,
-0x049f, 0x049f,
-0x04a1, 0x04a1,
-0x04a3, 0x04a3,
-0x04a5, 0x04a5,
-0x04a7, 0x04a7,
-0x04a9, 0x04a9,
-0x04ab, 0x04ab,
-0x04ad, 0x04ad,
-0x04af, 0x04af,
-0x04b1, 0x04b1,
-0x04b3, 0x04b3,
-0x04b5, 0x04b5,
-0x04b7, 0x04b7,
-0x04b9, 0x04b9,
-0x04bb, 0x04bb,
-0x04bd, 0x04bd,
-0x04bf, 0x04bf,
-0x04c2, 0x04c2,
-0x04c4, 0x04c4,
-0x04c6, 0x04c6,
-0x04c8, 0x04c8,
-0x04ca, 0x04ca,
-0x04cc, 0x04cc,
-0x04ce, 0x04cf,
-0x04d1, 0x04d1,
-0x04d3, 0x04d3,
-0x04d5, 0x04d5,
-0x04d7, 0x04d7,
-0x04d9, 0x04d9,
-0x04db, 0x04db,
-0x04dd, 0x04dd,
-0x04df, 0x04df,
-0x04e1, 0x04e1,
-0x04e3, 0x04e3,
-0x04e5, 0x04e5,
-0x04e7, 0x04e7,
-0x04e9, 0x04e9,
-0x04eb, 0x04eb,
-0x04ed, 0x04ed,
-0x04ef, 0x04ef,
-0x04f1, 0x04f1,
-0x04f3, 0x04f3,
-0x04f5, 0x04f5,
-0x04f7, 0x04f7,
-0x04f9, 0x04f9,
-0x04fb, 0x04fb,
-0x04fd, 0x04fd,
-0x04ff, 0x04ff,
-0x0501, 0x0501,
-0x0503, 0x0503,
-0x0505, 0x0505,
-0x0507, 0x0507,
-0x0509, 0x0509,
-0x050b, 0x050b,
-0x050d, 0x050d,
-0x050f, 0x050f,
-0x0511, 0x0511,
-0x0513, 0x0513,
-0x0515, 0x0515,
-0x0517, 0x0517,
-0x0519, 0x0519,
-0x051b, 0x051b,
-0x051d, 0x051d,
-0x051f, 0x051f,
-0x0521, 0x0521,
-0x0523, 0x0523,
-0x0525, 0x0525,
-0x0527, 0x0527,
-0x0529, 0x0529,
-0x052b, 0x052b,
-0x052d, 0x052d,
-0x052f, 0x052f,
-0x0561, 0x0587,
-0x13f8, 0x13fd,
-0x1d79, 0x1d79,
-0x1d7d, 0x1d7d,
-0x1e01, 0x1e01,
-0x1e03, 0x1e03,
-0x1e05, 0x1e05,
-0x1e07, 0x1e07,
-0x1e09, 0x1e09,
-0x1e0b, 0x1e0b,
-0x1e0d, 0x1e0d,
-0x1e0f, 0x1e0f,
-0x1e11, 0x1e11,
-0x1e13, 0x1e13,
-0x1e15, 0x1e15,
-0x1e17, 0x1e17,
-0x1e19, 0x1e19,
-0x1e1b, 0x1e1b,
-0x1e1d, 0x1e1d,
-0x1e1f, 0x1e1f,
-0x1e21, 0x1e21,
-0x1e23, 0x1e23,
-0x1e25, 0x1e25,
-0x1e27, 0x1e27,
-0x1e29, 0x1e29,
-0x1e2b, 0x1e2b,
-0x1e2d, 0x1e2d,
-0x1e2f, 0x1e2f,
-0x1e31, 0x1e31,
-0x1e33, 0x1e33,
-0x1e35, 0x1e35,
-0x1e37, 0x1e37,
-0x1e39, 0x1e39,
-0x1e3b, 0x1e3b,
-0x1e3d, 0x1e3d,
-0x1e3f, 0x1e3f,
-0x1e41, 0x1e41,
-0x1e43, 0x1e43,
-0x1e45, 0x1e45,
-0x1e47, 0x1e47,
-0x1e49, 0x1e49,
-0x1e4b, 0x1e4b,
-0x1e4d, 0x1e4d,
-0x1e4f, 0x1e4f,
-0x1e51, 0x1e51,
-0x1e53, 0x1e53,
-0x1e55, 0x1e55,
-0x1e57, 0x1e57,
-0x1e59, 0x1e59,
-0x1e5b, 0x1e5b,
-0x1e5d, 0x1e5d,
-0x1e5f, 0x1e5f,
-0x1e61, 0x1e61,
-0x1e63, 0x1e63,
-0x1e65, 0x1e65,
-0x1e67, 0x1e67,
-0x1e69, 0x1e69,
-0x1e6b, 0x1e6b,
-0x1e6d, 0x1e6d,
-0x1e6f, 0x1e6f,
-0x1e71, 0x1e71,
-0x1e73, 0x1e73,
-0x1e75, 0x1e75,
-0x1e77, 0x1e77,
-0x1e79, 0x1e79,
-0x1e7b, 0x1e7b,
-0x1e7d, 0x1e7d,
-0x1e7f, 0x1e7f,
-0x1e81, 0x1e81,
-0x1e83, 0x1e83,
-0x1e85, 0x1e85,
-0x1e87, 0x1e87,
-0x1e89, 0x1e89,
-0x1e8b, 0x1e8b,
-0x1e8d, 0x1e8d,
-0x1e8f, 0x1e8f,
-0x1e91, 0x1e91,
-0x1e93, 0x1e93,
-0x1e95, 0x1e9b,
-0x1ea1, 0x1ea1,
-0x1ea3, 0x1ea3,
-0x1ea5, 0x1ea5,
-0x1ea7, 0x1ea7,
-0x1ea9, 0x1ea9,
-0x1eab, 0x1eab,
-0x1ead, 0x1ead,
-0x1eaf, 0x1eaf,
-0x1eb1, 0x1eb1,
-0x1eb3, 0x1eb3,
-0x1eb5, 0x1eb5,
-0x1eb7, 0x1eb7,
-0x1eb9, 0x1eb9,
-0x1ebb, 0x1ebb,
-0x1ebd, 0x1ebd,
-0x1ebf, 0x1ebf,
-0x1ec1, 0x1ec1,
-0x1ec3, 0x1ec3,
-0x1ec5, 0x1ec5,
-0x1ec7, 0x1ec7,
-0x1ec9, 0x1ec9,
-0x1ecb, 0x1ecb,
-0x1ecd, 0x1ecd,
-0x1ecf, 0x1ecf,
-0x1ed1, 0x1ed1,
-0x1ed3, 0x1ed3,
-0x1ed5, 0x1ed5,
-0x1ed7, 0x1ed7,
-0x1ed9, 0x1ed9,
-0x1edb, 0x1edb,
-0x1edd, 0x1edd,
-0x1edf, 0x1edf,
-0x1ee1, 0x1ee1,
-0x1ee3, 0x1ee3,
-0x1ee5, 0x1ee5,
-0x1ee7, 0x1ee7,
-0x1ee9, 0x1ee9,
-0x1eeb, 0x1eeb,
-0x1eed, 0x1eed,
-0x1eef, 0x1eef,
-0x1ef1, 0x1ef1,
-0x1ef3, 0x1ef3,
-0x1ef5, 0x1ef5,
-0x1ef7, 0x1ef7,
-0x1ef9, 0x1ef9,
-0x1efb, 0x1efb,
-0x1efd, 0x1efd,
-0x1eff, 0x1f07,
-0x1f10, 0x1f15,
-0x1f20, 0x1f27,
-0x1f30, 0x1f37,
-0x1f40, 0x1f45,
-0x1f50, 0x1f57,
-0x1f60, 0x1f67,
-0x1f70, 0x1f7d,
-0x1f80, 0x1f87,
-0x1f90, 0x1f97,
-0x1fa0, 0x1fa7,
-0x1fb0, 0x1fb4,
-0x1fb6, 0x1fb7,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fc7,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fd7,
-0x1fe0, 0x1fe7,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ff7,
-0x214e, 0x214e,
-0x2170, 0x217f,
-0x2184, 0x2184,
-0x24d0, 0x24e9,
-0x2c30, 0x2c5e,
-0x2c61, 0x2c61,
-0x2c65, 0x2c66,
-0x2c68, 0x2c68,
-0x2c6a, 0x2c6a,
-0x2c6c, 0x2c6c,
-0x2c73, 0x2c73,
-0x2c76, 0x2c76,
-0x2c81, 0x2c81,
-0x2c83, 0x2c83,
-0x2c85, 0x2c85,
-0x2c87, 0x2c87,
-0x2c89, 0x2c89,
-0x2c8b, 0x2c8b,
-0x2c8d, 0x2c8d,
-0x2c8f, 0x2c8f,
-0x2c91, 0x2c91,
-0x2c93, 0x2c93,
-0x2c95, 0x2c95,
-0x2c97, 0x2c97,
-0x2c99, 0x2c99,
-0x2c9b, 0x2c9b,
-0x2c9d, 0x2c9d,
-0x2c9f, 0x2c9f,
-0x2ca1, 0x2ca1,
-0x2ca3, 0x2ca3,
-0x2ca5, 0x2ca5,
-0x2ca7, 0x2ca7,
-0x2ca9, 0x2ca9,
-0x2cab, 0x2cab,
-0x2cad, 0x2cad,
-0x2caf, 0x2caf,
-0x2cb1, 0x2cb1,
-0x2cb3, 0x2cb3,
-0x2cb5, 0x2cb5,
-0x2cb7, 0x2cb7,
-0x2cb9, 0x2cb9,
-0x2cbb, 0x2cbb,
-0x2cbd, 0x2cbd,
-0x2cbf, 0x2cbf,
-0x2cc1, 0x2cc1,
-0x2cc3, 0x2cc3,
-0x2cc5, 0x2cc5,
-0x2cc7, 0x2cc7,
-0x2cc9, 0x2cc9,
-0x2ccb, 0x2ccb,
-0x2ccd, 0x2ccd,
-0x2ccf, 0x2ccf,
-0x2cd1, 0x2cd1,
-0x2cd3, 0x2cd3,
-0x2cd5, 0x2cd5,
-0x2cd7, 0x2cd7,
-0x2cd9, 0x2cd9,
-0x2cdb, 0x2cdb,
-0x2cdd, 0x2cdd,
-0x2cdf, 0x2cdf,
-0x2ce1, 0x2ce1,
-0x2ce3, 0x2ce3,
-0x2cec, 0x2cec,
-0x2cee, 0x2cee,
-0x2cf3, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0xa641, 0xa641,
-0xa643, 0xa643,
-0xa645, 0xa645,
-0xa647, 0xa647,
-0xa649, 0xa649,
-0xa64b, 0xa64b,
-0xa64d, 0xa64d,
-0xa64f, 0xa64f,
-0xa651, 0xa651,
-0xa653, 0xa653,
-0xa655, 0xa655,
-0xa657, 0xa657,
-0xa659, 0xa659,
-0xa65b, 0xa65b,
-0xa65d, 0xa65d,
-0xa65f, 0xa65f,
-0xa661, 0xa661,
-0xa663, 0xa663,
-0xa665, 0xa665,
-0xa667, 0xa667,
-0xa669, 0xa669,
-0xa66b, 0xa66b,
-0xa66d, 0xa66d,
-0xa681, 0xa681,
-0xa683, 0xa683,
-0xa685, 0xa685,
-0xa687, 0xa687,
-0xa689, 0xa689,
-0xa68b, 0xa68b,
-0xa68d, 0xa68d,
-0xa68f, 0xa68f,
-0xa691, 0xa691,
-0xa693, 0xa693,
-0xa695, 0xa695,
-0xa697, 0xa697,
-0xa699, 0xa699,
-0xa69b, 0xa69b,
-0xa723, 0xa723,
-0xa725, 0xa725,
-0xa727, 0xa727,
-0xa729, 0xa729,
-0xa72b, 0xa72b,
-0xa72d, 0xa72d,
-0xa72f, 0xa72f,
-0xa733, 0xa733,
-0xa735, 0xa735,
-0xa737, 0xa737,
-0xa739, 0xa739,
-0xa73b, 0xa73b,
-0xa73d, 0xa73d,
-0xa73f, 0xa73f,
-0xa741, 0xa741,
-0xa743, 0xa743,
-0xa745, 0xa745,
-0xa747, 0xa747,
-0xa749, 0xa749,
-0xa74b, 0xa74b,
-0xa74d, 0xa74d,
-0xa74f, 0xa74f,
-0xa751, 0xa751,
-0xa753, 0xa753,
-0xa755, 0xa755,
-0xa757, 0xa757,
-0xa759, 0xa759,
-0xa75b, 0xa75b,
-0xa75d, 0xa75d,
-0xa75f, 0xa75f,
-0xa761, 0xa761,
-0xa763, 0xa763,
-0xa765, 0xa765,
-0xa767, 0xa767,
-0xa769, 0xa769,
-0xa76b, 0xa76b,
-0xa76d, 0xa76d,
-0xa76f, 0xa76f,
-0xa77a, 0xa77a,
-0xa77c, 0xa77c,
-0xa77f, 0xa77f,
-0xa781, 0xa781,
-0xa783, 0xa783,
-0xa785, 0xa785,
-0xa787, 0xa787,
-0xa78c, 0xa78c,
-0xa791, 0xa791,
-0xa793, 0xa793,
-0xa797, 0xa797,
-0xa799, 0xa799,
-0xa79b, 0xa79b,
-0xa79d, 0xa79d,
-0xa79f, 0xa79f,
-0xa7a1, 0xa7a1,
-0xa7a3, 0xa7a3,
-0xa7a5, 0xa7a5,
-0xa7a7, 0xa7a7,
-0xa7a9, 0xa7a9,
-0xa7b5, 0xa7b5,
-0xa7b7, 0xa7b7,
+0x0711, 0x0711,
+0x0730, 0x074a,
+0x07a6, 0x07b0,
+0x07eb, 0x07f5,
+0x07fa, 0x07fa,
+0x0816, 0x082d,
+0x0859, 0x085b,
+0x08e3, 0x0902,
+0x093a, 0x093a,
+0x093c, 0x093c,
+0x0941, 0x0948,
+0x094d, 0x094d,
+0x0951, 0x0957,
+0x0962, 0x0963,
+0x0971, 0x0971,
+0x0981, 0x0981,
+0x09bc, 0x09bc,
+0x09c1, 0x09c4,
+0x09cd, 0x09cd,
+0x09e2, 0x09e3,
+0x0a01, 0x0a02,
+0x0a3c, 0x0a3c,
+0x0a41, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4d,
+0x0a51, 0x0a51,
+0x0a70, 0x0a71,
+0x0a75, 0x0a75,
+0x0a81, 0x0a82,
+0x0abc, 0x0abc,
+0x0ac1, 0x0ac5,
+0x0ac7, 0x0ac8,
+0x0acd, 0x0acd,
+0x0ae2, 0x0ae3,
+0x0b01, 0x0b01,
+0x0b3c, 0x0b3c,
+0x0b3f, 0x0b3f,
+0x0b41, 0x0b44,
+0x0b4d, 0x0b4d,
+0x0b56, 0x0b56,
+0x0b62, 0x0b63,
+0x0b82, 0x0b82,
+0x0bc0, 0x0bc0,
+0x0bcd, 0x0bcd,
+0x0c00, 0x0c00,
+0x0c3e, 0x0c40,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4d,
+0x0c55, 0x0c56,
+0x0c62, 0x0c63,
+0x0c81, 0x0c81,
+0x0cbc, 0x0cbc,
+0x0cbf, 0x0cbf,
+0x0cc6, 0x0cc6,
+0x0ccc, 0x0ccd,
+0x0ce2, 0x0ce3,
+0x0d01, 0x0d01,
+0x0d41, 0x0d44,
+0x0d4d, 0x0d4d,
+0x0d62, 0x0d63,
+0x0dca, 0x0dca,
+0x0dd2, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0e31, 0x0e31,
+0x0e34, 0x0e3a,
+0x0e46, 0x0e4e,
+0x0eb1, 0x0eb1,
+0x0eb4, 0x0eb9,
+0x0ebb, 0x0ebc,
+0x0ec6, 0x0ec6,
+0x0ec8, 0x0ecd,
+0x0f18, 0x0f19,
+0x0f35, 0x0f35,
+0x0f37, 0x0f37,
+0x0f39, 0x0f39,
+0x0f71, 0x0f7e,
+0x0f80, 0x0f84,
+0x0f86, 0x0f87,
+0x0f8d, 0x0f97,
+0x0f99, 0x0fbc,
+0x0fc6, 0x0fc6,
+0x102d, 0x1030,
+0x1032, 0x1037,
+0x1039, 0x103a,
+0x103d, 0x103e,
+0x1058, 0x1059,
+0x105e, 0x1060,
+0x1071, 0x1074,
+0x1082, 0x1082,
+0x1085, 0x1086,
+0x108d, 0x108d,
+0x109d, 0x109d,
+0x10fc, 0x10fc,
+0x135d, 0x135f,
+0x1712, 0x1714,
+0x1732, 0x1734,
+0x1752, 0x1753,
+0x1772, 0x1773,
+0x17b4, 0x17b5,
+0x17b7, 0x17bd,
+0x17c6, 0x17c6,
+0x17c9, 0x17d3,
+0x17d7, 0x17d7,
+0x17dd, 0x17dd,
+0x180b, 0x180e,
+0x1843, 0x1843,
+0x18a9, 0x18a9,
+0x1920, 0x1922,
+0x1927, 0x1928,
+0x1932, 0x1932,
+0x1939, 0x193b,
+0x1a17, 0x1a18,
+0x1a1b, 0x1a1b,
+0x1a56, 0x1a56,
+0x1a58, 0x1a5e,
+0x1a60, 0x1a60,
+0x1a62, 0x1a62,
+0x1a65, 0x1a6c,
+0x1a73, 0x1a7c,
+0x1a7f, 0x1a7f,
+0x1aa7, 0x1aa7,
+0x1ab0, 0x1abe,
+0x1b00, 0x1b03,
+0x1b34, 0x1b34,
+0x1b36, 0x1b3a,
+0x1b3c, 0x1b3c,
+0x1b42, 0x1b42,
+0x1b6b, 0x1b73,
+0x1b80, 0x1b81,
+0x1ba2, 0x1ba5,
+0x1ba8, 0x1ba9,
+0x1bab, 0x1bad,
+0x1be6, 0x1be6,
+0x1be8, 0x1be9,
+0x1bed, 0x1bed,
+0x1bef, 0x1bf1,
+0x1c2c, 0x1c33,
+0x1c36, 0x1c37,
+0x1c78, 0x1c7d,
+0x1cd0, 0x1cd2,
+0x1cd4, 0x1ce0,
+0x1ce2, 0x1ce8,
+0x1ced, 0x1ced,
+0x1cf4, 0x1cf4,
+0x1cf8, 0x1cf9,
+0x1d2c, 0x1d6a,
+0x1d78, 0x1d78,
+0x1d9b, 0x1df5,
+0x1dfc, 0x1dff,
+0x1fbd, 0x1fbd,
+0x1fbf, 0x1fc1,
+0x1fcd, 0x1fcf,
+0x1fdd, 0x1fdf,
+0x1fed, 0x1fef,
+0x1ffd, 0x1ffe,
+0x200b, 0x200f,
+0x2018, 0x2019,
+0x2024, 0x2024,
+0x2027, 0x2027,
+0x202a, 0x202e,
+0x2060, 0x2064,
+0x2066, 0x206f,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x20d0, 0x20f0,
+0x2c7c, 0x2c7d,
+0x2cef, 0x2cf1,
+0x2d6f, 0x2d6f,
+0x2d7f, 0x2d7f,
+0x2de0, 0x2dff,
+0x2e2f, 0x2e2f,
+0x3005, 0x3005,
+0x302a, 0x302d,
+0x3031, 0x3035,
+0x303b, 0x303b,
+0x3099, 0x309e,
+0x30fc, 0x30fe,
+0xa015, 0xa015,
+0xa4f8, 0xa4fd,
+0xa60c, 0xa60c,
+0xa66f, 0xa672,
+0xa674, 0xa67d,
+0xa67f, 0xa67f,
+0xa69c, 0xa69f,
+0xa6f0, 0xa6f1,
+0xa700, 0xa721,
+0xa770, 0xa770,
+0xa788, 0xa78a,
+0xa7f8, 0xa7f9,
+0xa802, 0xa802,
+0xa806, 0xa806,
+0xa80b, 0xa80b,
+0xa825, 0xa826,
+0xa8c4, 0xa8c4,
+0xa8e0, 0xa8f1,
+0xa926, 0xa92d,
+0xa947, 0xa951,
+0xa980, 0xa982,
+0xa9b3, 0xa9b3,
+0xa9b6, 0xa9b9,
+0xa9bc, 0xa9bc,
+0xa9cf, 0xa9cf,
+0xa9e5, 0xa9e6,
+0xaa29, 0xaa2e,
+0xaa31, 0xaa32,
+0xaa35, 0xaa36,
+0xaa43, 0xaa43,
+0xaa4c, 0xaa4c,
+0xaa70, 0xaa70,
+0xaa7c, 0xaa7c,
+0xaab0, 0xaab0,
+0xaab2, 0xaab4,
+0xaab7, 0xaab8,
+0xaabe, 0xaabf,
+0xaac1, 0xaac1,
+0xaadd, 0xaadd,
+0xaaec, 0xaaed,
+0xaaf3, 0xaaf4,
+0xaaf6, 0xaaf6,
+0xab5b, 0xab5f,
+0xabe5, 0xabe5,
+0xabe8, 0xabe8,
+0xabed, 0xabed,
+0xfb1e, 0xfb1e,
+0xfbb2, 0xfbc1,
+0xfe00, 0xfe0f,
+0xfe13, 0xfe13,
+0xfe20, 0xfe2f,
+0xfe52, 0xfe52,
+0xfe55, 0xfe55,
+0xfeff, 0xfeff,
+0xff07, 0xff07,
+0xff0e, 0xff0e,
+0xff1a, 0xff1a,
+0xff3e, 0xff3e,
+0xff40, 0xff40,
+0xff70, 0xff70,
+0xff9e, 0xff9f,
+0xffe3, 0xffe3,
+0xfff9, 0xfffb,
+0x101fd, 0x101fd,
+0x102e0, 0x102e0,
+0x10376, 0x1037a,
+0x10a01, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a0f,
+0x10a38, 0x10a3a,
+0x10a3f, 0x10a3f,
+0x10ae5, 0x10ae6,
+0x11001, 0x11001,
+0x11038, 0x11046,
+0x1107f, 0x11081,
+0x110b3, 0x110b6,
+0x110b9, 0x110ba,
+0x110bd, 0x110bd,
+0x11100, 0x11102,
+0x11127, 0x1112b,
+0x1112d, 0x11134,
+0x11173, 0x11173,
+0x11180, 0x11181,
+0x111b6, 0x111be,
+0x111ca, 0x111cc,
+0x1122f, 0x11231,
+0x11234, 0x11234,
+0x11236, 0x11237,
+0x112df, 0x112df,
+0x112e3, 0x112ea,
+0x11300, 0x11301,
+0x1133c, 0x1133c,
+0x11340, 0x11340,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+0x114b3, 0x114b8,
+0x114ba, 0x114ba,
+0x114bf, 0x114c0,
+0x114c2, 0x114c3,
+0x115b2, 0x115b5,
+0x115bc, 0x115bd,
+0x115bf, 0x115c0,
+0x115dc, 0x115dd,
+0x11633, 0x1163a,
+0x1163d, 0x1163d,
+0x1163f, 0x11640,
+0x116ab, 0x116ab,
+0x116ad, 0x116ad,
+0x116b0, 0x116b5,
+0x116b7, 0x116b7,
+0x1171d, 0x1171f,
+0x11722, 0x11725,
+0x11727, 0x1172b,
+0x16af0, 0x16af4,
+0x16b30, 0x16b36,
+0x16b40, 0x16b43,
+0x16f8f, 0x16f9f,
+0x1bc9d, 0x1bc9e,
+0x1bca0, 0x1bca3,
+0x1d167, 0x1d169,
+0x1d173, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0x1d242, 0x1d244,
+0x1da00, 0x1da36,
+0x1da3b, 0x1da6c,
+0x1da75, 0x1da75,
+0x1da84, 0x1da84,
+0x1da9b, 0x1da9f,
+0x1daa1, 0x1daaf,
+0x1e8d0, 0x1e8d6,
+0x1f3fb, 0x1f3ff,
+0xe0001, 0xe0001,
+0xe0020, 0xe007f,
+0xe0100, 0xe01ef,
+}; /* END of CR_Case_Ignorable */
+
+/* PROPERTY: 'Cased': Derived Property */
+static const OnigCodePoint
+CR_Cased[] = { 131,
+0x0041, 0x005a,
+0x0061, 0x007a,
+0x00aa, 0x00aa,
+0x00b5, 0x00b5,
+0x00ba, 0x00ba,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x01ba,
+0x01bc, 0x01bf,
+0x01c4, 0x0293,
+0x0295, 0x02b8,
+0x02c0, 0x02c1,
+0x02e0, 0x02e4,
+0x0345, 0x0345,
+0x0370, 0x0373,
+0x0376, 0x0377,
+0x037a, 0x037d,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03f5,
+0x03f7, 0x0481,
+0x048a, 0x052f,
+0x0531, 0x0556,
+0x0561, 0x0587,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0x1d00, 0x1dbf,
+0x1e00, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fe0, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffc,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2119, 0x211d,
+0x2124, 0x2124,
+0x2126, 0x2126,
+0x2128, 0x2128,
+0x212a, 0x212d,
+0x212f, 0x2134,
+0x2139, 0x2139,
+0x213c, 0x213f,
+0x2145, 0x2149,
+0x214e, 0x214e,
+0x2160, 0x217f,
+0x2183, 0x2184,
+0x24b6, 0x24e9,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x2c60, 0x2ce4,
+0x2ceb, 0x2cee,
+0x2cf2, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0xa640, 0xa66d,
+0xa680, 0xa69d,
+0xa722, 0xa787,
+0xa78b, 0xa78e,
+0xa790, 0xa7ad,
+0xa7b0, 0xa7b7,
+0xa7f8, 0xa7fa,
+0xab30, 0xab5a,
+0xab5c, 0xab65,
+0xab70, 0xabbf,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xff21, 0xff3a,
+0xff41, 0xff5a,
+0x10400, 0x1044f,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x118a0, 0x118df,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d6c0,
+0x1d6c2, 0x1d6da,
+0x1d6dc, 0x1d6fa,
+0x1d6fc, 0x1d714,
+0x1d716, 0x1d734,
+0x1d736, 0x1d74e,
+0x1d750, 0x1d76e,
+0x1d770, 0x1d788,
+0x1d78a, 0x1d7a8,
+0x1d7aa, 0x1d7c2,
+0x1d7c4, 0x1d7cb,
+0x1f130, 0x1f149,
+0x1f150, 0x1f169,
+0x1f170, 0x1f189,
+}; /* END of CR_Cased */
+
+/* PROPERTY: 'Caucasian_Albanian': Script */
+static const OnigCodePoint
+CR_Caucasian_Albanian[] = { 2,
+0x10530, 0x10563,
+0x1056f, 0x1056f,
+}; /* END of CR_Caucasian_Albanian */
+
+/* PROPERTY: 'Cc': General Category */
+#define CR_Cc CR_Cntrl
+
+/* PROPERTY: 'Cf': General Category */
+static const OnigCodePoint
+CR_Cf[] = { 17,
+0x00ad, 0x00ad,
+0x0600, 0x0605,
+0x061c, 0x061c,
+0x06dd, 0x06dd,
+0x070f, 0x070f,
+0x180e, 0x180e,
+0x200b, 0x200f,
+0x202a, 0x202e,
+0x2060, 0x2064,
+0x2066, 0x206f,
+0xfeff, 0xfeff,
+0xfff9, 0xfffb,
+0x110bd, 0x110bd,
+0x1bca0, 0x1bca3,
+0x1d173, 0x1d17a,
+0xe0001, 0xe0001,
+0xe0020, 0xe007f,
+}; /* END of CR_Cf */
+
+/* PROPERTY: 'Chakma': Script */
+static const OnigCodePoint
+CR_Chakma[] = { 2,
+0x11100, 0x11134,
+0x11136, 0x11143,
+}; /* END of CR_Chakma */
+
+/* PROPERTY: 'Cham': Script */
+static const OnigCodePoint
+CR_Cham[] = { 4,
+0xaa00, 0xaa36,
+0xaa40, 0xaa4d,
+0xaa50, 0xaa59,
+0xaa5c, 0xaa5f,
+}; /* END of CR_Cham */
+
+/* PROPERTY: 'Changes_When_Casefolded': Derived Property */
+static const OnigCodePoint
+CR_Changes_When_Casefolded[] = { 600,
+0x0041, 0x005a,
+0x00b5, 0x00b5,
+0x00c0, 0x00d6,
+0x00d8, 0x00df,
+0x0100, 0x0100,
+0x0102, 0x0102,
+0x0104, 0x0104,
+0x0106, 0x0106,
+0x0108, 0x0108,
+0x010a, 0x010a,
+0x010c, 0x010c,
+0x010e, 0x010e,
+0x0110, 0x0110,
+0x0112, 0x0112,
+0x0114, 0x0114,
+0x0116, 0x0116,
+0x0118, 0x0118,
+0x011a, 0x011a,
+0x011c, 0x011c,
+0x011e, 0x011e,
+0x0120, 0x0120,
+0x0122, 0x0122,
+0x0124, 0x0124,
+0x0126, 0x0126,
+0x0128, 0x0128,
+0x012a, 0x012a,
+0x012c, 0x012c,
+0x012e, 0x012e,
+0x0130, 0x0130,
+0x0132, 0x0132,
+0x0134, 0x0134,
+0x0136, 0x0136,
+0x0139, 0x0139,
+0x013b, 0x013b,
+0x013d, 0x013d,
+0x013f, 0x013f,
+0x0141, 0x0141,
+0x0143, 0x0143,
+0x0145, 0x0145,
+0x0147, 0x0147,
+0x0149, 0x014a,
+0x014c, 0x014c,
+0x014e, 0x014e,
+0x0150, 0x0150,
+0x0152, 0x0152,
+0x0154, 0x0154,
+0x0156, 0x0156,
+0x0158, 0x0158,
+0x015a, 0x015a,
+0x015c, 0x015c,
+0x015e, 0x015e,
+0x0160, 0x0160,
+0x0162, 0x0162,
+0x0164, 0x0164,
+0x0166, 0x0166,
+0x0168, 0x0168,
+0x016a, 0x016a,
+0x016c, 0x016c,
+0x016e, 0x016e,
+0x0170, 0x0170,
+0x0172, 0x0172,
+0x0174, 0x0174,
+0x0176, 0x0176,
+0x0178, 0x0179,
+0x017b, 0x017b,
+0x017d, 0x017d,
+0x017f, 0x017f,
+0x0181, 0x0182,
+0x0184, 0x0184,
+0x0186, 0x0187,
+0x0189, 0x018b,
+0x018e, 0x0191,
+0x0193, 0x0194,
+0x0196, 0x0198,
+0x019c, 0x019d,
+0x019f, 0x01a0,
+0x01a2, 0x01a2,
+0x01a4, 0x01a4,
+0x01a6, 0x01a7,
+0x01a9, 0x01a9,
+0x01ac, 0x01ac,
+0x01ae, 0x01af,
+0x01b1, 0x01b3,
+0x01b5, 0x01b5,
+0x01b7, 0x01b8,
+0x01bc, 0x01bc,
+0x01c4, 0x01c5,
+0x01c7, 0x01c8,
+0x01ca, 0x01cb,
+0x01cd, 0x01cd,
+0x01cf, 0x01cf,
+0x01d1, 0x01d1,
+0x01d3, 0x01d3,
+0x01d5, 0x01d5,
+0x01d7, 0x01d7,
+0x01d9, 0x01d9,
+0x01db, 0x01db,
+0x01de, 0x01de,
+0x01e0, 0x01e0,
+0x01e2, 0x01e2,
+0x01e4, 0x01e4,
+0x01e6, 0x01e6,
+0x01e8, 0x01e8,
+0x01ea, 0x01ea,
+0x01ec, 0x01ec,
+0x01ee, 0x01ee,
+0x01f1, 0x01f2,
+0x01f4, 0x01f4,
+0x01f6, 0x01f8,
+0x01fa, 0x01fa,
+0x01fc, 0x01fc,
+0x01fe, 0x01fe,
+0x0200, 0x0200,
+0x0202, 0x0202,
+0x0204, 0x0204,
+0x0206, 0x0206,
+0x0208, 0x0208,
+0x020a, 0x020a,
+0x020c, 0x020c,
+0x020e, 0x020e,
+0x0210, 0x0210,
+0x0212, 0x0212,
+0x0214, 0x0214,
+0x0216, 0x0216,
+0x0218, 0x0218,
+0x021a, 0x021a,
+0x021c, 0x021c,
+0x021e, 0x021e,
+0x0220, 0x0220,
+0x0222, 0x0222,
+0x0224, 0x0224,
+0x0226, 0x0226,
+0x0228, 0x0228,
+0x022a, 0x022a,
+0x022c, 0x022c,
+0x022e, 0x022e,
+0x0230, 0x0230,
+0x0232, 0x0232,
+0x023a, 0x023b,
+0x023d, 0x023e,
+0x0241, 0x0241,
+0x0243, 0x0246,
+0x0248, 0x0248,
+0x024a, 0x024a,
+0x024c, 0x024c,
+0x024e, 0x024e,
+0x0345, 0x0345,
+0x0370, 0x0370,
+0x0372, 0x0372,
+0x0376, 0x0376,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x038f,
+0x0391, 0x03a1,
+0x03a3, 0x03ab,
+0x03c2, 0x03c2,
+0x03cf, 0x03d1,
+0x03d5, 0x03d6,
+0x03d8, 0x03d8,
+0x03da, 0x03da,
+0x03dc, 0x03dc,
+0x03de, 0x03de,
+0x03e0, 0x03e0,
+0x03e2, 0x03e2,
+0x03e4, 0x03e4,
+0x03e6, 0x03e6,
+0x03e8, 0x03e8,
+0x03ea, 0x03ea,
+0x03ec, 0x03ec,
+0x03ee, 0x03ee,
+0x03f0, 0x03f1,
+0x03f4, 0x03f5,
+0x03f7, 0x03f7,
+0x03f9, 0x03fa,
+0x03fd, 0x042f,
+0x0460, 0x0460,
+0x0462, 0x0462,
+0x0464, 0x0464,
+0x0466, 0x0466,
+0x0468, 0x0468,
+0x046a, 0x046a,
+0x046c, 0x046c,
+0x046e, 0x046e,
+0x0470, 0x0470,
+0x0472, 0x0472,
+0x0474, 0x0474,
+0x0476, 0x0476,
+0x0478, 0x0478,
+0x047a, 0x047a,
+0x047c, 0x047c,
+0x047e, 0x047e,
+0x0480, 0x0480,
+0x048a, 0x048a,
+0x048c, 0x048c,
+0x048e, 0x048e,
+0x0490, 0x0490,
+0x0492, 0x0492,
+0x0494, 0x0494,
+0x0496, 0x0496,
+0x0498, 0x0498,
+0x049a, 0x049a,
+0x049c, 0x049c,
+0x049e, 0x049e,
+0x04a0, 0x04a0,
+0x04a2, 0x04a2,
+0x04a4, 0x04a4,
+0x04a6, 0x04a6,
+0x04a8, 0x04a8,
+0x04aa, 0x04aa,
+0x04ac, 0x04ac,
+0x04ae, 0x04ae,
+0x04b0, 0x04b0,
+0x04b2, 0x04b2,
+0x04b4, 0x04b4,
+0x04b6, 0x04b6,
+0x04b8, 0x04b8,
+0x04ba, 0x04ba,
+0x04bc, 0x04bc,
+0x04be, 0x04be,
+0x04c0, 0x04c1,
+0x04c3, 0x04c3,
+0x04c5, 0x04c5,
+0x04c7, 0x04c7,
+0x04c9, 0x04c9,
+0x04cb, 0x04cb,
+0x04cd, 0x04cd,
+0x04d0, 0x04d0,
+0x04d2, 0x04d2,
+0x04d4, 0x04d4,
+0x04d6, 0x04d6,
+0x04d8, 0x04d8,
+0x04da, 0x04da,
+0x04dc, 0x04dc,
+0x04de, 0x04de,
+0x04e0, 0x04e0,
+0x04e2, 0x04e2,
+0x04e4, 0x04e4,
+0x04e6, 0x04e6,
+0x04e8, 0x04e8,
+0x04ea, 0x04ea,
+0x04ec, 0x04ec,
+0x04ee, 0x04ee,
+0x04f0, 0x04f0,
+0x04f2, 0x04f2,
+0x04f4, 0x04f4,
+0x04f6, 0x04f6,
+0x04f8, 0x04f8,
+0x04fa, 0x04fa,
+0x04fc, 0x04fc,
+0x04fe, 0x04fe,
+0x0500, 0x0500,
+0x0502, 0x0502,
+0x0504, 0x0504,
+0x0506, 0x0506,
+0x0508, 0x0508,
+0x050a, 0x050a,
+0x050c, 0x050c,
+0x050e, 0x050e,
+0x0510, 0x0510,
+0x0512, 0x0512,
+0x0514, 0x0514,
+0x0516, 0x0516,
+0x0518, 0x0518,
+0x051a, 0x051a,
+0x051c, 0x051c,
+0x051e, 0x051e,
+0x0520, 0x0520,
+0x0522, 0x0522,
+0x0524, 0x0524,
+0x0526, 0x0526,
+0x0528, 0x0528,
+0x052a, 0x052a,
+0x052c, 0x052c,
+0x052e, 0x052e,
+0x0531, 0x0556,
+0x0587, 0x0587,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x13f8, 0x13fd,
+0x1e00, 0x1e00,
+0x1e02, 0x1e02,
+0x1e04, 0x1e04,
+0x1e06, 0x1e06,
+0x1e08, 0x1e08,
+0x1e0a, 0x1e0a,
+0x1e0c, 0x1e0c,
+0x1e0e, 0x1e0e,
+0x1e10, 0x1e10,
+0x1e12, 0x1e12,
+0x1e14, 0x1e14,
+0x1e16, 0x1e16,
+0x1e18, 0x1e18,
+0x1e1a, 0x1e1a,
+0x1e1c, 0x1e1c,
+0x1e1e, 0x1e1e,
+0x1e20, 0x1e20,
+0x1e22, 0x1e22,
+0x1e24, 0x1e24,
+0x1e26, 0x1e26,
+0x1e28, 0x1e28,
+0x1e2a, 0x1e2a,
+0x1e2c, 0x1e2c,
+0x1e2e, 0x1e2e,
+0x1e30, 0x1e30,
+0x1e32, 0x1e32,
+0x1e34, 0x1e34,
+0x1e36, 0x1e36,
+0x1e38, 0x1e38,
+0x1e3a, 0x1e3a,
+0x1e3c, 0x1e3c,
+0x1e3e, 0x1e3e,
+0x1e40, 0x1e40,
+0x1e42, 0x1e42,
+0x1e44, 0x1e44,
+0x1e46, 0x1e46,
+0x1e48, 0x1e48,
+0x1e4a, 0x1e4a,
+0x1e4c, 0x1e4c,
+0x1e4e, 0x1e4e,
+0x1e50, 0x1e50,
+0x1e52, 0x1e52,
+0x1e54, 0x1e54,
+0x1e56, 0x1e56,
+0x1e58, 0x1e58,
+0x1e5a, 0x1e5a,
+0x1e5c, 0x1e5c,
+0x1e5e, 0x1e5e,
+0x1e60, 0x1e60,
+0x1e62, 0x1e62,
+0x1e64, 0x1e64,
+0x1e66, 0x1e66,
+0x1e68, 0x1e68,
+0x1e6a, 0x1e6a,
+0x1e6c, 0x1e6c,
+0x1e6e, 0x1e6e,
+0x1e70, 0x1e70,
+0x1e72, 0x1e72,
+0x1e74, 0x1e74,
+0x1e76, 0x1e76,
+0x1e78, 0x1e78,
+0x1e7a, 0x1e7a,
+0x1e7c, 0x1e7c,
+0x1e7e, 0x1e7e,
+0x1e80, 0x1e80,
+0x1e82, 0x1e82,
+0x1e84, 0x1e84,
+0x1e86, 0x1e86,
+0x1e88, 0x1e88,
+0x1e8a, 0x1e8a,
+0x1e8c, 0x1e8c,
+0x1e8e, 0x1e8e,
+0x1e90, 0x1e90,
+0x1e92, 0x1e92,
+0x1e94, 0x1e94,
+0x1e9a, 0x1e9b,
+0x1e9e, 0x1e9e,
+0x1ea0, 0x1ea0,
+0x1ea2, 0x1ea2,
+0x1ea4, 0x1ea4,
+0x1ea6, 0x1ea6,
+0x1ea8, 0x1ea8,
+0x1eaa, 0x1eaa,
+0x1eac, 0x1eac,
+0x1eae, 0x1eae,
+0x1eb0, 0x1eb0,
+0x1eb2, 0x1eb2,
+0x1eb4, 0x1eb4,
+0x1eb6, 0x1eb6,
+0x1eb8, 0x1eb8,
+0x1eba, 0x1eba,
+0x1ebc, 0x1ebc,
+0x1ebe, 0x1ebe,
+0x1ec0, 0x1ec0,
+0x1ec2, 0x1ec2,
+0x1ec4, 0x1ec4,
+0x1ec6, 0x1ec6,
+0x1ec8, 0x1ec8,
+0x1eca, 0x1eca,
+0x1ecc, 0x1ecc,
+0x1ece, 0x1ece,
+0x1ed0, 0x1ed0,
+0x1ed2, 0x1ed2,
+0x1ed4, 0x1ed4,
+0x1ed6, 0x1ed6,
+0x1ed8, 0x1ed8,
+0x1eda, 0x1eda,
+0x1edc, 0x1edc,
+0x1ede, 0x1ede,
+0x1ee0, 0x1ee0,
+0x1ee2, 0x1ee2,
+0x1ee4, 0x1ee4,
+0x1ee6, 0x1ee6,
+0x1ee8, 0x1ee8,
+0x1eea, 0x1eea,
+0x1eec, 0x1eec,
+0x1eee, 0x1eee,
+0x1ef0, 0x1ef0,
+0x1ef2, 0x1ef2,
+0x1ef4, 0x1ef4,
+0x1ef6, 0x1ef6,
+0x1ef8, 0x1ef8,
+0x1efa, 0x1efa,
+0x1efc, 0x1efc,
+0x1efe, 0x1efe,
+0x1f08, 0x1f0f,
+0x1f18, 0x1f1d,
+0x1f28, 0x1f2f,
+0x1f38, 0x1f3f,
+0x1f48, 0x1f4d,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f5f,
+0x1f68, 0x1f6f,
+0x1f80, 0x1faf,
+0x1fb2, 0x1fb4,
+0x1fb7, 0x1fbc,
+0x1fc2, 0x1fc4,
+0x1fc7, 0x1fcc,
+0x1fd8, 0x1fdb,
+0x1fe8, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff7, 0x1ffc,
+0x2126, 0x2126,
+0x212a, 0x212b,
+0x2132, 0x2132,
+0x2160, 0x216f,
+0x2183, 0x2183,
+0x24b6, 0x24cf,
+0x2c00, 0x2c2e,
+0x2c60, 0x2c60,
+0x2c62, 0x2c64,
+0x2c67, 0x2c67,
+0x2c69, 0x2c69,
+0x2c6b, 0x2c6b,
+0x2c6d, 0x2c70,
+0x2c72, 0x2c72,
+0x2c75, 0x2c75,
+0x2c7e, 0x2c80,
+0x2c82, 0x2c82,
+0x2c84, 0x2c84,
+0x2c86, 0x2c86,
+0x2c88, 0x2c88,
+0x2c8a, 0x2c8a,
+0x2c8c, 0x2c8c,
+0x2c8e, 0x2c8e,
+0x2c90, 0x2c90,
+0x2c92, 0x2c92,
+0x2c94, 0x2c94,
+0x2c96, 0x2c96,
+0x2c98, 0x2c98,
+0x2c9a, 0x2c9a,
+0x2c9c, 0x2c9c,
+0x2c9e, 0x2c9e,
+0x2ca0, 0x2ca0,
+0x2ca2, 0x2ca2,
+0x2ca4, 0x2ca4,
+0x2ca6, 0x2ca6,
+0x2ca8, 0x2ca8,
+0x2caa, 0x2caa,
+0x2cac, 0x2cac,
+0x2cae, 0x2cae,
+0x2cb0, 0x2cb0,
+0x2cb2, 0x2cb2,
+0x2cb4, 0x2cb4,
+0x2cb6, 0x2cb6,
+0x2cb8, 0x2cb8,
+0x2cba, 0x2cba,
+0x2cbc, 0x2cbc,
+0x2cbe, 0x2cbe,
+0x2cc0, 0x2cc0,
+0x2cc2, 0x2cc2,
+0x2cc4, 0x2cc4,
+0x2cc6, 0x2cc6,
+0x2cc8, 0x2cc8,
+0x2cca, 0x2cca,
+0x2ccc, 0x2ccc,
+0x2cce, 0x2cce,
+0x2cd0, 0x2cd0,
+0x2cd2, 0x2cd2,
+0x2cd4, 0x2cd4,
+0x2cd6, 0x2cd6,
+0x2cd8, 0x2cd8,
+0x2cda, 0x2cda,
+0x2cdc, 0x2cdc,
+0x2cde, 0x2cde,
+0x2ce0, 0x2ce0,
+0x2ce2, 0x2ce2,
+0x2ceb, 0x2ceb,
+0x2ced, 0x2ced,
+0x2cf2, 0x2cf2,
+0xa640, 0xa640,
+0xa642, 0xa642,
+0xa644, 0xa644,
+0xa646, 0xa646,
+0xa648, 0xa648,
+0xa64a, 0xa64a,
+0xa64c, 0xa64c,
+0xa64e, 0xa64e,
+0xa650, 0xa650,
+0xa652, 0xa652,
+0xa654, 0xa654,
+0xa656, 0xa656,
+0xa658, 0xa658,
+0xa65a, 0xa65a,
+0xa65c, 0xa65c,
+0xa65e, 0xa65e,
+0xa660, 0xa660,
+0xa662, 0xa662,
+0xa664, 0xa664,
+0xa666, 0xa666,
+0xa668, 0xa668,
+0xa66a, 0xa66a,
+0xa66c, 0xa66c,
+0xa680, 0xa680,
+0xa682, 0xa682,
+0xa684, 0xa684,
+0xa686, 0xa686,
+0xa688, 0xa688,
+0xa68a, 0xa68a,
+0xa68c, 0xa68c,
+0xa68e, 0xa68e,
+0xa690, 0xa690,
+0xa692, 0xa692,
+0xa694, 0xa694,
+0xa696, 0xa696,
+0xa698, 0xa698,
+0xa69a, 0xa69a,
+0xa722, 0xa722,
+0xa724, 0xa724,
+0xa726, 0xa726,
+0xa728, 0xa728,
+0xa72a, 0xa72a,
+0xa72c, 0xa72c,
+0xa72e, 0xa72e,
+0xa732, 0xa732,
+0xa734, 0xa734,
+0xa736, 0xa736,
+0xa738, 0xa738,
+0xa73a, 0xa73a,
+0xa73c, 0xa73c,
+0xa73e, 0xa73e,
+0xa740, 0xa740,
+0xa742, 0xa742,
+0xa744, 0xa744,
+0xa746, 0xa746,
+0xa748, 0xa748,
+0xa74a, 0xa74a,
+0xa74c, 0xa74c,
+0xa74e, 0xa74e,
+0xa750, 0xa750,
+0xa752, 0xa752,
+0xa754, 0xa754,
+0xa756, 0xa756,
+0xa758, 0xa758,
+0xa75a, 0xa75a,
+0xa75c, 0xa75c,
+0xa75e, 0xa75e,
+0xa760, 0xa760,
+0xa762, 0xa762,
+0xa764, 0xa764,
+0xa766, 0xa766,
+0xa768, 0xa768,
+0xa76a, 0xa76a,
+0xa76c, 0xa76c,
+0xa76e, 0xa76e,
+0xa779, 0xa779,
+0xa77b, 0xa77b,
+0xa77d, 0xa77e,
+0xa780, 0xa780,
+0xa782, 0xa782,
+0xa784, 0xa784,
+0xa786, 0xa786,
+0xa78b, 0xa78b,
+0xa78d, 0xa78d,
+0xa790, 0xa790,
+0xa792, 0xa792,
+0xa796, 0xa796,
+0xa798, 0xa798,
+0xa79a, 0xa79a,
+0xa79c, 0xa79c,
+0xa79e, 0xa79e,
+0xa7a0, 0xa7a0,
+0xa7a2, 0xa7a2,
+0xa7a4, 0xa7a4,
+0xa7a6, 0xa7a6,
+0xa7a8, 0xa7a8,
+0xa7aa, 0xa7ad,
+0xa7b0, 0xa7b4,
+0xa7b6, 0xa7b6,
+0xab70, 0xabbf,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xff21, 0xff3a,
+0x10400, 0x10427,
+0x10c80, 0x10cb2,
+0x118a0, 0x118bf,
+}; /* END of CR_Changes_When_Casefolded */
+
+/* PROPERTY: 'Changes_When_Casemapped': Derived Property */
+static const OnigCodePoint
+CR_Changes_When_Casemapped[] = { 113,
+0x0041, 0x005a,
+0x0061, 0x007a,
+0x00b5, 0x00b5,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x0137,
+0x0139, 0x018c,
+0x018e, 0x019a,
+0x019c, 0x01a9,
+0x01ac, 0x01b9,
+0x01bc, 0x01bd,
+0x01bf, 0x01bf,
+0x01c4, 0x0220,
+0x0222, 0x0233,
+0x023a, 0x0254,
+0x0256, 0x0257,
+0x0259, 0x0259,
+0x025b, 0x025c,
+0x0260, 0x0261,
+0x0263, 0x0263,
+0x0265, 0x0266,
+0x0268, 0x0269,
+0x026b, 0x026c,
+0x026f, 0x026f,
+0x0271, 0x0272,
+0x0275, 0x0275,
+0x027d, 0x027d,
+0x0280, 0x0280,
+0x0283, 0x0283,
+0x0287, 0x028c,
+0x0292, 0x0292,
+0x029d, 0x029e,
+0x0345, 0x0345,
+0x0370, 0x0373,
+0x0376, 0x0377,
+0x037b, 0x037d,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03d1,
+0x03d5, 0x03f5,
+0x03f7, 0x03fb,
+0x03fd, 0x0481,
+0x048a, 0x052f,
+0x0531, 0x0556,
+0x0561, 0x0587,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0x1d79, 0x1d79,
+0x1d7d, 0x1d7d,
+0x1e00, 0x1e9b,
+0x1e9e, 0x1e9e,
+0x1ea0, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fe0, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffc,
+0x2126, 0x2126,
+0x212a, 0x212b,
+0x2132, 0x2132,
+0x214e, 0x214e,
+0x2160, 0x217f,
+0x2183, 0x2184,
+0x24b6, 0x24e9,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x2c60, 0x2c70,
+0x2c72, 0x2c73,
+0x2c75, 0x2c76,
+0x2c7e, 0x2ce3,
+0x2ceb, 0x2cee,
+0x2cf2, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0xa640, 0xa66d,
+0xa680, 0xa69b,
+0xa722, 0xa72f,
+0xa732, 0xa76f,
+0xa779, 0xa787,
+0xa78b, 0xa78d,
+0xa790, 0xa793,
+0xa796, 0xa7ad,
+0xa7b0, 0xa7b7,
 0xab53, 0xab53,
 0xab70, 0xabbf,
 0xfb00, 0xfb06,
 0xfb13, 0xfb17,
+0xff21, 0xff3a,
 0xff41, 0xff5a,
-0x10428, 0x1044f,
+0x10400, 0x1044f,
+0x10c80, 0x10cb2,
 0x10cc0, 0x10cf2,
-0x118c0, 0x118df,
-}; /* END of CR_Changes_When_Titlecased */
+0x118a0, 0x118df,
+}; /* END of CR_Changes_When_Casemapped */
 
-/* PROPERTY: 'Changes_When_Casefolded': Derived Property */
+/* PROPERTY: 'Changes_When_Lowercased': Derived Property */
 static const OnigCodePoint
-CR_Changes_When_Casefolded[] = { 600,
+CR_Changes_When_Lowercased[] = { 588,
 0x0041, 0x005a,
-0x00b5, 0x00b5,
 0x00c0, 0x00d6,
-0x00d8, 0x00df,
+0x00d8, 0x00de,
 0x0100, 0x0100,
 0x0102, 0x0102,
 0x0104, 0x0104,
@@ -13444,7 +7512,7 @@ CR_Changes_When_Casefolded[] = { 600,
 0x0143, 0x0143,
 0x0145, 0x0145,
 0x0147, 0x0147,
-0x0149, 0x014a,
+0x014a, 0x014a,
 0x014c, 0x014c,
 0x014e, 0x014e,
 0x0150, 0x0150,
@@ -13470,7 +7538,6 @@ CR_Changes_When_Casefolded[] = { 600,
 0x0178, 0x0179,
 0x017b, 0x017b,
 0x017d, 0x017d,
-0x017f, 0x017f,
 0x0181, 0x0182,
 0x0184, 0x0184,
 0x0186, 0x0187,
@@ -13550,7 +7617,6 @@ CR_Changes_When_Casefolded[] = { 600,
 0x024a, 0x024a,
 0x024c, 0x024c,
 0x024e, 0x024e,
-0x0345, 0x0345,
 0x0370, 0x0370,
 0x0372, 0x0372,
 0x0376, 0x0376,
@@ -13561,9 +7627,7 @@ CR_Changes_When_Casefolded[] = { 600,
 0x038e, 0x038f,
 0x0391, 0x03a1,
 0x03a3, 0x03ab,
-0x03c2, 0x03c2,
-0x03cf, 0x03d1,
-0x03d5, 0x03d6,
+0x03cf, 0x03cf,
 0x03d8, 0x03d8,
 0x03da, 0x03da,
 0x03dc, 0x03dc,
@@ -13576,8 +7640,7 @@ CR_Changes_When_Casefolded[] = { 600,
 0x03ea, 0x03ea,
 0x03ec, 0x03ec,
 0x03ee, 0x03ee,
-0x03f0, 0x03f1,
-0x03f4, 0x03f5,
+0x03f4, 0x03f4,
 0x03f7, 0x03f7,
 0x03f9, 0x03fa,
 0x03fd, 0x042f,
@@ -13681,11 +7744,10 @@ CR_Changes_When_Casefolded[] = { 600,
 0x052c, 0x052c,
 0x052e, 0x052e,
 0x0531, 0x0556,
-0x0587, 0x0587,
 0x10a0, 0x10c5,
 0x10c7, 0x10c7,
 0x10cd, 0x10cd,
-0x13f8, 0x13fd,
+0x13a0, 0x13f5,
 0x1e00, 0x1e00,
 0x1e02, 0x1e02,
 0x1e04, 0x1e04,
@@ -13761,7 +7823,6 @@ CR_Changes_When_Casefolded[] = { 600,
 0x1e90, 0x1e90,
 0x1e92, 0x1e92,
 0x1e94, 0x1e94,
-0x1e9a, 0x1e9b,
 0x1e9e, 0x1e9e,
 0x1ea0, 0x1ea0,
 0x1ea2, 0x1ea2,
@@ -13821,15 +7882,14 @@ CR_Changes_When_Casefolded[] = { 600,
 0x1f5d, 0x1f5d,
 0x1f5f, 0x1f5f,
 0x1f68, 0x1f6f,
-0x1f80, 0x1faf,
-0x1fb2, 0x1fb4,
-0x1fb7, 0x1fbc,
-0x1fc2, 0x1fc4,
-0x1fc7, 0x1fcc,
+0x1f88, 0x1f8f,
+0x1f98, 0x1f9f,
+0x1fa8, 0x1faf,
+0x1fb8, 0x1fbc,
+0x1fc8, 0x1fcc,
 0x1fd8, 0x1fdb,
 0x1fe8, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff7, 0x1ffc,
+0x1ff8, 0x1ffc,
 0x2126, 0x2126,
 0x212a, 0x212b,
 0x2132, 0x2132,
@@ -13997,190 +8057,2499 @@ CR_Changes_When_Casefolded[] = { 600,
 0xa7aa, 0xa7ad,
 0xa7b0, 0xa7b4,
 0xa7b6, 0xa7b6,
+0xff21, 0xff3a,
+0x10400, 0x10427,
+0x10c80, 0x10cb2,
+0x118a0, 0x118bf,
+}; /* END of CR_Changes_When_Lowercased */
+
+/* PROPERTY: 'Changes_When_Titlecased': Derived Property */
+static const OnigCodePoint
+CR_Changes_When_Titlecased[] = { 606,
+0x0061, 0x007a,
+0x00b5, 0x00b5,
+0x00df, 0x00f6,
+0x00f8, 0x00ff,
+0x0101, 0x0101,
+0x0103, 0x0103,
+0x0105, 0x0105,
+0x0107, 0x0107,
+0x0109, 0x0109,
+0x010b, 0x010b,
+0x010d, 0x010d,
+0x010f, 0x010f,
+0x0111, 0x0111,
+0x0113, 0x0113,
+0x0115, 0x0115,
+0x0117, 0x0117,
+0x0119, 0x0119,
+0x011b, 0x011b,
+0x011d, 0x011d,
+0x011f, 0x011f,
+0x0121, 0x0121,
+0x0123, 0x0123,
+0x0125, 0x0125,
+0x0127, 0x0127,
+0x0129, 0x0129,
+0x012b, 0x012b,
+0x012d, 0x012d,
+0x012f, 0x012f,
+0x0131, 0x0131,
+0x0133, 0x0133,
+0x0135, 0x0135,
+0x0137, 0x0137,
+0x013a, 0x013a,
+0x013c, 0x013c,
+0x013e, 0x013e,
+0x0140, 0x0140,
+0x0142, 0x0142,
+0x0144, 0x0144,
+0x0146, 0x0146,
+0x0148, 0x0149,
+0x014b, 0x014b,
+0x014d, 0x014d,
+0x014f, 0x014f,
+0x0151, 0x0151,
+0x0153, 0x0153,
+0x0155, 0x0155,
+0x0157, 0x0157,
+0x0159, 0x0159,
+0x015b, 0x015b,
+0x015d, 0x015d,
+0x015f, 0x015f,
+0x0161, 0x0161,
+0x0163, 0x0163,
+0x0165, 0x0165,
+0x0167, 0x0167,
+0x0169, 0x0169,
+0x016b, 0x016b,
+0x016d, 0x016d,
+0x016f, 0x016f,
+0x0171, 0x0171,
+0x0173, 0x0173,
+0x0175, 0x0175,
+0x0177, 0x0177,
+0x017a, 0x017a,
+0x017c, 0x017c,
+0x017e, 0x0180,
+0x0183, 0x0183,
+0x0185, 0x0185,
+0x0188, 0x0188,
+0x018c, 0x018c,
+0x0192, 0x0192,
+0x0195, 0x0195,
+0x0199, 0x019a,
+0x019e, 0x019e,
+0x01a1, 0x01a1,
+0x01a3, 0x01a3,
+0x01a5, 0x01a5,
+0x01a8, 0x01a8,
+0x01ad, 0x01ad,
+0x01b0, 0x01b0,
+0x01b4, 0x01b4,
+0x01b6, 0x01b6,
+0x01b9, 0x01b9,
+0x01bd, 0x01bd,
+0x01bf, 0x01bf,
+0x01c4, 0x01c4,
+0x01c6, 0x01c7,
+0x01c9, 0x01ca,
+0x01cc, 0x01cc,
+0x01ce, 0x01ce,
+0x01d0, 0x01d0,
+0x01d2, 0x01d2,
+0x01d4, 0x01d4,
+0x01d6, 0x01d6,
+0x01d8, 0x01d8,
+0x01da, 0x01da,
+0x01dc, 0x01dd,
+0x01df, 0x01df,
+0x01e1, 0x01e1,
+0x01e3, 0x01e3,
+0x01e5, 0x01e5,
+0x01e7, 0x01e7,
+0x01e9, 0x01e9,
+0x01eb, 0x01eb,
+0x01ed, 0x01ed,
+0x01ef, 0x01f1,
+0x01f3, 0x01f3,
+0x01f5, 0x01f5,
+0x01f9, 0x01f9,
+0x01fb, 0x01fb,
+0x01fd, 0x01fd,
+0x01ff, 0x01ff,
+0x0201, 0x0201,
+0x0203, 0x0203,
+0x0205, 0x0205,
+0x0207, 0x0207,
+0x0209, 0x0209,
+0x020b, 0x020b,
+0x020d, 0x020d,
+0x020f, 0x020f,
+0x0211, 0x0211,
+0x0213, 0x0213,
+0x0215, 0x0215,
+0x0217, 0x0217,
+0x0219, 0x0219,
+0x021b, 0x021b,
+0x021d, 0x021d,
+0x021f, 0x021f,
+0x0223, 0x0223,
+0x0225, 0x0225,
+0x0227, 0x0227,
+0x0229, 0x0229,
+0x022b, 0x022b,
+0x022d, 0x022d,
+0x022f, 0x022f,
+0x0231, 0x0231,
+0x0233, 0x0233,
+0x023c, 0x023c,
+0x023f, 0x0240,
+0x0242, 0x0242,
+0x0247, 0x0247,
+0x0249, 0x0249,
+0x024b, 0x024b,
+0x024d, 0x024d,
+0x024f, 0x0254,
+0x0256, 0x0257,
+0x0259, 0x0259,
+0x025b, 0x025c,
+0x0260, 0x0261,
+0x0263, 0x0263,
+0x0265, 0x0266,
+0x0268, 0x0269,
+0x026b, 0x026c,
+0x026f, 0x026f,
+0x0271, 0x0272,
+0x0275, 0x0275,
+0x027d, 0x027d,
+0x0280, 0x0280,
+0x0283, 0x0283,
+0x0287, 0x028c,
+0x0292, 0x0292,
+0x029d, 0x029e,
+0x0345, 0x0345,
+0x0371, 0x0371,
+0x0373, 0x0373,
+0x0377, 0x0377,
+0x037b, 0x037d,
+0x0390, 0x0390,
+0x03ac, 0x03ce,
+0x03d0, 0x03d1,
+0x03d5, 0x03d7,
+0x03d9, 0x03d9,
+0x03db, 0x03db,
+0x03dd, 0x03dd,
+0x03df, 0x03df,
+0x03e1, 0x03e1,
+0x03e3, 0x03e3,
+0x03e5, 0x03e5,
+0x03e7, 0x03e7,
+0x03e9, 0x03e9,
+0x03eb, 0x03eb,
+0x03ed, 0x03ed,
+0x03ef, 0x03f3,
+0x03f5, 0x03f5,
+0x03f8, 0x03f8,
+0x03fb, 0x03fb,
+0x0430, 0x045f,
+0x0461, 0x0461,
+0x0463, 0x0463,
+0x0465, 0x0465,
+0x0467, 0x0467,
+0x0469, 0x0469,
+0x046b, 0x046b,
+0x046d, 0x046d,
+0x046f, 0x046f,
+0x0471, 0x0471,
+0x0473, 0x0473,
+0x0475, 0x0475,
+0x0477, 0x0477,
+0x0479, 0x0479,
+0x047b, 0x047b,
+0x047d, 0x047d,
+0x047f, 0x047f,
+0x0481, 0x0481,
+0x048b, 0x048b,
+0x048d, 0x048d,
+0x048f, 0x048f,
+0x0491, 0x0491,
+0x0493, 0x0493,
+0x0495, 0x0495,
+0x0497, 0x0497,
+0x0499, 0x0499,
+0x049b, 0x049b,
+0x049d, 0x049d,
+0x049f, 0x049f,
+0x04a1, 0x04a1,
+0x04a3, 0x04a3,
+0x04a5, 0x04a5,
+0x04a7, 0x04a7,
+0x04a9, 0x04a9,
+0x04ab, 0x04ab,
+0x04ad, 0x04ad,
+0x04af, 0x04af,
+0x04b1, 0x04b1,
+0x04b3, 0x04b3,
+0x04b5, 0x04b5,
+0x04b7, 0x04b7,
+0x04b9, 0x04b9,
+0x04bb, 0x04bb,
+0x04bd, 0x04bd,
+0x04bf, 0x04bf,
+0x04c2, 0x04c2,
+0x04c4, 0x04c4,
+0x04c6, 0x04c6,
+0x04c8, 0x04c8,
+0x04ca, 0x04ca,
+0x04cc, 0x04cc,
+0x04ce, 0x04cf,
+0x04d1, 0x04d1,
+0x04d3, 0x04d3,
+0x04d5, 0x04d5,
+0x04d7, 0x04d7,
+0x04d9, 0x04d9,
+0x04db, 0x04db,
+0x04dd, 0x04dd,
+0x04df, 0x04df,
+0x04e1, 0x04e1,
+0x04e3, 0x04e3,
+0x04e5, 0x04e5,
+0x04e7, 0x04e7,
+0x04e9, 0x04e9,
+0x04eb, 0x04eb,
+0x04ed, 0x04ed,
+0x04ef, 0x04ef,
+0x04f1, 0x04f1,
+0x04f3, 0x04f3,
+0x04f5, 0x04f5,
+0x04f7, 0x04f7,
+0x04f9, 0x04f9,
+0x04fb, 0x04fb,
+0x04fd, 0x04fd,
+0x04ff, 0x04ff,
+0x0501, 0x0501,
+0x0503, 0x0503,
+0x0505, 0x0505,
+0x0507, 0x0507,
+0x0509, 0x0509,
+0x050b, 0x050b,
+0x050d, 0x050d,
+0x050f, 0x050f,
+0x0511, 0x0511,
+0x0513, 0x0513,
+0x0515, 0x0515,
+0x0517, 0x0517,
+0x0519, 0x0519,
+0x051b, 0x051b,
+0x051d, 0x051d,
+0x051f, 0x051f,
+0x0521, 0x0521,
+0x0523, 0x0523,
+0x0525, 0x0525,
+0x0527, 0x0527,
+0x0529, 0x0529,
+0x052b, 0x052b,
+0x052d, 0x052d,
+0x052f, 0x052f,
+0x0561, 0x0587,
+0x13f8, 0x13fd,
+0x1d79, 0x1d79,
+0x1d7d, 0x1d7d,
+0x1e01, 0x1e01,
+0x1e03, 0x1e03,
+0x1e05, 0x1e05,
+0x1e07, 0x1e07,
+0x1e09, 0x1e09,
+0x1e0b, 0x1e0b,
+0x1e0d, 0x1e0d,
+0x1e0f, 0x1e0f,
+0x1e11, 0x1e11,
+0x1e13, 0x1e13,
+0x1e15, 0x1e15,
+0x1e17, 0x1e17,
+0x1e19, 0x1e19,
+0x1e1b, 0x1e1b,
+0x1e1d, 0x1e1d,
+0x1e1f, 0x1e1f,
+0x1e21, 0x1e21,
+0x1e23, 0x1e23,
+0x1e25, 0x1e25,
+0x1e27, 0x1e27,
+0x1e29, 0x1e29,
+0x1e2b, 0x1e2b,
+0x1e2d, 0x1e2d,
+0x1e2f, 0x1e2f,
+0x1e31, 0x1e31,
+0x1e33, 0x1e33,
+0x1e35, 0x1e35,
+0x1e37, 0x1e37,
+0x1e39, 0x1e39,
+0x1e3b, 0x1e3b,
+0x1e3d, 0x1e3d,
+0x1e3f, 0x1e3f,
+0x1e41, 0x1e41,
+0x1e43, 0x1e43,
+0x1e45, 0x1e45,
+0x1e47, 0x1e47,
+0x1e49, 0x1e49,
+0x1e4b, 0x1e4b,
+0x1e4d, 0x1e4d,
+0x1e4f, 0x1e4f,
+0x1e51, 0x1e51,
+0x1e53, 0x1e53,
+0x1e55, 0x1e55,
+0x1e57, 0x1e57,
+0x1e59, 0x1e59,
+0x1e5b, 0x1e5b,
+0x1e5d, 0x1e5d,
+0x1e5f, 0x1e5f,
+0x1e61, 0x1e61,
+0x1e63, 0x1e63,
+0x1e65, 0x1e65,
+0x1e67, 0x1e67,
+0x1e69, 0x1e69,
+0x1e6b, 0x1e6b,
+0x1e6d, 0x1e6d,
+0x1e6f, 0x1e6f,
+0x1e71, 0x1e71,
+0x1e73, 0x1e73,
+0x1e75, 0x1e75,
+0x1e77, 0x1e77,
+0x1e79, 0x1e79,
+0x1e7b, 0x1e7b,
+0x1e7d, 0x1e7d,
+0x1e7f, 0x1e7f,
+0x1e81, 0x1e81,
+0x1e83, 0x1e83,
+0x1e85, 0x1e85,
+0x1e87, 0x1e87,
+0x1e89, 0x1e89,
+0x1e8b, 0x1e8b,
+0x1e8d, 0x1e8d,
+0x1e8f, 0x1e8f,
+0x1e91, 0x1e91,
+0x1e93, 0x1e93,
+0x1e95, 0x1e9b,
+0x1ea1, 0x1ea1,
+0x1ea3, 0x1ea3,
+0x1ea5, 0x1ea5,
+0x1ea7, 0x1ea7,
+0x1ea9, 0x1ea9,
+0x1eab, 0x1eab,
+0x1ead, 0x1ead,
+0x1eaf, 0x1eaf,
+0x1eb1, 0x1eb1,
+0x1eb3, 0x1eb3,
+0x1eb5, 0x1eb5,
+0x1eb7, 0x1eb7,
+0x1eb9, 0x1eb9,
+0x1ebb, 0x1ebb,
+0x1ebd, 0x1ebd,
+0x1ebf, 0x1ebf,
+0x1ec1, 0x1ec1,
+0x1ec3, 0x1ec3,
+0x1ec5, 0x1ec5,
+0x1ec7, 0x1ec7,
+0x1ec9, 0x1ec9,
+0x1ecb, 0x1ecb,
+0x1ecd, 0x1ecd,
+0x1ecf, 0x1ecf,
+0x1ed1, 0x1ed1,
+0x1ed3, 0x1ed3,
+0x1ed5, 0x1ed5,
+0x1ed7, 0x1ed7,
+0x1ed9, 0x1ed9,
+0x1edb, 0x1edb,
+0x1edd, 0x1edd,
+0x1edf, 0x1edf,
+0x1ee1, 0x1ee1,
+0x1ee3, 0x1ee3,
+0x1ee5, 0x1ee5,
+0x1ee7, 0x1ee7,
+0x1ee9, 0x1ee9,
+0x1eeb, 0x1eeb,
+0x1eed, 0x1eed,
+0x1eef, 0x1eef,
+0x1ef1, 0x1ef1,
+0x1ef3, 0x1ef3,
+0x1ef5, 0x1ef5,
+0x1ef7, 0x1ef7,
+0x1ef9, 0x1ef9,
+0x1efb, 0x1efb,
+0x1efd, 0x1efd,
+0x1eff, 0x1f07,
+0x1f10, 0x1f15,
+0x1f20, 0x1f27,
+0x1f30, 0x1f37,
+0x1f40, 0x1f45,
+0x1f50, 0x1f57,
+0x1f60, 0x1f67,
+0x1f70, 0x1f7d,
+0x1f80, 0x1f87,
+0x1f90, 0x1f97,
+0x1fa0, 0x1fa7,
+0x1fb0, 0x1fb4,
+0x1fb6, 0x1fb7,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fc7,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fd7,
+0x1fe0, 0x1fe7,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ff7,
+0x214e, 0x214e,
+0x2170, 0x217f,
+0x2184, 0x2184,
+0x24d0, 0x24e9,
+0x2c30, 0x2c5e,
+0x2c61, 0x2c61,
+0x2c65, 0x2c66,
+0x2c68, 0x2c68,
+0x2c6a, 0x2c6a,
+0x2c6c, 0x2c6c,
+0x2c73, 0x2c73,
+0x2c76, 0x2c76,
+0x2c81, 0x2c81,
+0x2c83, 0x2c83,
+0x2c85, 0x2c85,
+0x2c87, 0x2c87,
+0x2c89, 0x2c89,
+0x2c8b, 0x2c8b,
+0x2c8d, 0x2c8d,
+0x2c8f, 0x2c8f,
+0x2c91, 0x2c91,
+0x2c93, 0x2c93,
+0x2c95, 0x2c95,
+0x2c97, 0x2c97,
+0x2c99, 0x2c99,
+0x2c9b, 0x2c9b,
+0x2c9d, 0x2c9d,
+0x2c9f, 0x2c9f,
+0x2ca1, 0x2ca1,
+0x2ca3, 0x2ca3,
+0x2ca5, 0x2ca5,
+0x2ca7, 0x2ca7,
+0x2ca9, 0x2ca9,
+0x2cab, 0x2cab,
+0x2cad, 0x2cad,
+0x2caf, 0x2caf,
+0x2cb1, 0x2cb1,
+0x2cb3, 0x2cb3,
+0x2cb5, 0x2cb5,
+0x2cb7, 0x2cb7,
+0x2cb9, 0x2cb9,
+0x2cbb, 0x2cbb,
+0x2cbd, 0x2cbd,
+0x2cbf, 0x2cbf,
+0x2cc1, 0x2cc1,
+0x2cc3, 0x2cc3,
+0x2cc5, 0x2cc5,
+0x2cc7, 0x2cc7,
+0x2cc9, 0x2cc9,
+0x2ccb, 0x2ccb,
+0x2ccd, 0x2ccd,
+0x2ccf, 0x2ccf,
+0x2cd1, 0x2cd1,
+0x2cd3, 0x2cd3,
+0x2cd5, 0x2cd5,
+0x2cd7, 0x2cd7,
+0x2cd9, 0x2cd9,
+0x2cdb, 0x2cdb,
+0x2cdd, 0x2cdd,
+0x2cdf, 0x2cdf,
+0x2ce1, 0x2ce1,
+0x2ce3, 0x2ce3,
+0x2cec, 0x2cec,
+0x2cee, 0x2cee,
+0x2cf3, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0xa641, 0xa641,
+0xa643, 0xa643,
+0xa645, 0xa645,
+0xa647, 0xa647,
+0xa649, 0xa649,
+0xa64b, 0xa64b,
+0xa64d, 0xa64d,
+0xa64f, 0xa64f,
+0xa651, 0xa651,
+0xa653, 0xa653,
+0xa655, 0xa655,
+0xa657, 0xa657,
+0xa659, 0xa659,
+0xa65b, 0xa65b,
+0xa65d, 0xa65d,
+0xa65f, 0xa65f,
+0xa661, 0xa661,
+0xa663, 0xa663,
+0xa665, 0xa665,
+0xa667, 0xa667,
+0xa669, 0xa669,
+0xa66b, 0xa66b,
+0xa66d, 0xa66d,
+0xa681, 0xa681,
+0xa683, 0xa683,
+0xa685, 0xa685,
+0xa687, 0xa687,
+0xa689, 0xa689,
+0xa68b, 0xa68b,
+0xa68d, 0xa68d,
+0xa68f, 0xa68f,
+0xa691, 0xa691,
+0xa693, 0xa693,
+0xa695, 0xa695,
+0xa697, 0xa697,
+0xa699, 0xa699,
+0xa69b, 0xa69b,
+0xa723, 0xa723,
+0xa725, 0xa725,
+0xa727, 0xa727,
+0xa729, 0xa729,
+0xa72b, 0xa72b,
+0xa72d, 0xa72d,
+0xa72f, 0xa72f,
+0xa733, 0xa733,
+0xa735, 0xa735,
+0xa737, 0xa737,
+0xa739, 0xa739,
+0xa73b, 0xa73b,
+0xa73d, 0xa73d,
+0xa73f, 0xa73f,
+0xa741, 0xa741,
+0xa743, 0xa743,
+0xa745, 0xa745,
+0xa747, 0xa747,
+0xa749, 0xa749,
+0xa74b, 0xa74b,
+0xa74d, 0xa74d,
+0xa74f, 0xa74f,
+0xa751, 0xa751,
+0xa753, 0xa753,
+0xa755, 0xa755,
+0xa757, 0xa757,
+0xa759, 0xa759,
+0xa75b, 0xa75b,
+0xa75d, 0xa75d,
+0xa75f, 0xa75f,
+0xa761, 0xa761,
+0xa763, 0xa763,
+0xa765, 0xa765,
+0xa767, 0xa767,
+0xa769, 0xa769,
+0xa76b, 0xa76b,
+0xa76d, 0xa76d,
+0xa76f, 0xa76f,
+0xa77a, 0xa77a,
+0xa77c, 0xa77c,
+0xa77f, 0xa77f,
+0xa781, 0xa781,
+0xa783, 0xa783,
+0xa785, 0xa785,
+0xa787, 0xa787,
+0xa78c, 0xa78c,
+0xa791, 0xa791,
+0xa793, 0xa793,
+0xa797, 0xa797,
+0xa799, 0xa799,
+0xa79b, 0xa79b,
+0xa79d, 0xa79d,
+0xa79f, 0xa79f,
+0xa7a1, 0xa7a1,
+0xa7a3, 0xa7a3,
+0xa7a5, 0xa7a5,
+0xa7a7, 0xa7a7,
+0xa7a9, 0xa7a9,
+0xa7b5, 0xa7b5,
+0xa7b7, 0xa7b7,
+0xab53, 0xab53,
+0xab70, 0xabbf,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xff41, 0xff5a,
+0x10428, 0x1044f,
+0x10cc0, 0x10cf2,
+0x118c0, 0x118df,
+}; /* END of CR_Changes_When_Titlecased */
+
+/* PROPERTY: 'Changes_When_Uppercased': Derived Property */
+static const OnigCodePoint
+CR_Changes_When_Uppercased[] = { 605,
+0x0061, 0x007a,
+0x00b5, 0x00b5,
+0x00df, 0x00f6,
+0x00f8, 0x00ff,
+0x0101, 0x0101,
+0x0103, 0x0103,
+0x0105, 0x0105,
+0x0107, 0x0107,
+0x0109, 0x0109,
+0x010b, 0x010b,
+0x010d, 0x010d,
+0x010f, 0x010f,
+0x0111, 0x0111,
+0x0113, 0x0113,
+0x0115, 0x0115,
+0x0117, 0x0117,
+0x0119, 0x0119,
+0x011b, 0x011b,
+0x011d, 0x011d,
+0x011f, 0x011f,
+0x0121, 0x0121,
+0x0123, 0x0123,
+0x0125, 0x0125,
+0x0127, 0x0127,
+0x0129, 0x0129,
+0x012b, 0x012b,
+0x012d, 0x012d,
+0x012f, 0x012f,
+0x0131, 0x0131,
+0x0133, 0x0133,
+0x0135, 0x0135,
+0x0137, 0x0137,
+0x013a, 0x013a,
+0x013c, 0x013c,
+0x013e, 0x013e,
+0x0140, 0x0140,
+0x0142, 0x0142,
+0x0144, 0x0144,
+0x0146, 0x0146,
+0x0148, 0x0149,
+0x014b, 0x014b,
+0x014d, 0x014d,
+0x014f, 0x014f,
+0x0151, 0x0151,
+0x0153, 0x0153,
+0x0155, 0x0155,
+0x0157, 0x0157,
+0x0159, 0x0159,
+0x015b, 0x015b,
+0x015d, 0x015d,
+0x015f, 0x015f,
+0x0161, 0x0161,
+0x0163, 0x0163,
+0x0165, 0x0165,
+0x0167, 0x0167,
+0x0169, 0x0169,
+0x016b, 0x016b,
+0x016d, 0x016d,
+0x016f, 0x016f,
+0x0171, 0x0171,
+0x0173, 0x0173,
+0x0175, 0x0175,
+0x0177, 0x0177,
+0x017a, 0x017a,
+0x017c, 0x017c,
+0x017e, 0x0180,
+0x0183, 0x0183,
+0x0185, 0x0185,
+0x0188, 0x0188,
+0x018c, 0x018c,
+0x0192, 0x0192,
+0x0195, 0x0195,
+0x0199, 0x019a,
+0x019e, 0x019e,
+0x01a1, 0x01a1,
+0x01a3, 0x01a3,
+0x01a5, 0x01a5,
+0x01a8, 0x01a8,
+0x01ad, 0x01ad,
+0x01b0, 0x01b0,
+0x01b4, 0x01b4,
+0x01b6, 0x01b6,
+0x01b9, 0x01b9,
+0x01bd, 0x01bd,
+0x01bf, 0x01bf,
+0x01c5, 0x01c6,
+0x01c8, 0x01c9,
+0x01cb, 0x01cc,
+0x01ce, 0x01ce,
+0x01d0, 0x01d0,
+0x01d2, 0x01d2,
+0x01d4, 0x01d4,
+0x01d6, 0x01d6,
+0x01d8, 0x01d8,
+0x01da, 0x01da,
+0x01dc, 0x01dd,
+0x01df, 0x01df,
+0x01e1, 0x01e1,
+0x01e3, 0x01e3,
+0x01e5, 0x01e5,
+0x01e7, 0x01e7,
+0x01e9, 0x01e9,
+0x01eb, 0x01eb,
+0x01ed, 0x01ed,
+0x01ef, 0x01f0,
+0x01f2, 0x01f3,
+0x01f5, 0x01f5,
+0x01f9, 0x01f9,
+0x01fb, 0x01fb,
+0x01fd, 0x01fd,
+0x01ff, 0x01ff,
+0x0201, 0x0201,
+0x0203, 0x0203,
+0x0205, 0x0205,
+0x0207, 0x0207,
+0x0209, 0x0209,
+0x020b, 0x020b,
+0x020d, 0x020d,
+0x020f, 0x020f,
+0x0211, 0x0211,
+0x0213, 0x0213,
+0x0215, 0x0215,
+0x0217, 0x0217,
+0x0219, 0x0219,
+0x021b, 0x021b,
+0x021d, 0x021d,
+0x021f, 0x021f,
+0x0223, 0x0223,
+0x0225, 0x0225,
+0x0227, 0x0227,
+0x0229, 0x0229,
+0x022b, 0x022b,
+0x022d, 0x022d,
+0x022f, 0x022f,
+0x0231, 0x0231,
+0x0233, 0x0233,
+0x023c, 0x023c,
+0x023f, 0x0240,
+0x0242, 0x0242,
+0x0247, 0x0247,
+0x0249, 0x0249,
+0x024b, 0x024b,
+0x024d, 0x024d,
+0x024f, 0x0254,
+0x0256, 0x0257,
+0x0259, 0x0259,
+0x025b, 0x025c,
+0x0260, 0x0261,
+0x0263, 0x0263,
+0x0265, 0x0266,
+0x0268, 0x0269,
+0x026b, 0x026c,
+0x026f, 0x026f,
+0x0271, 0x0272,
+0x0275, 0x0275,
+0x027d, 0x027d,
+0x0280, 0x0280,
+0x0283, 0x0283,
+0x0287, 0x028c,
+0x0292, 0x0292,
+0x029d, 0x029e,
+0x0345, 0x0345,
+0x0371, 0x0371,
+0x0373, 0x0373,
+0x0377, 0x0377,
+0x037b, 0x037d,
+0x0390, 0x0390,
+0x03ac, 0x03ce,
+0x03d0, 0x03d1,
+0x03d5, 0x03d7,
+0x03d9, 0x03d9,
+0x03db, 0x03db,
+0x03dd, 0x03dd,
+0x03df, 0x03df,
+0x03e1, 0x03e1,
+0x03e3, 0x03e3,
+0x03e5, 0x03e5,
+0x03e7, 0x03e7,
+0x03e9, 0x03e9,
+0x03eb, 0x03eb,
+0x03ed, 0x03ed,
+0x03ef, 0x03f3,
+0x03f5, 0x03f5,
+0x03f8, 0x03f8,
+0x03fb, 0x03fb,
+0x0430, 0x045f,
+0x0461, 0x0461,
+0x0463, 0x0463,
+0x0465, 0x0465,
+0x0467, 0x0467,
+0x0469, 0x0469,
+0x046b, 0x046b,
+0x046d, 0x046d,
+0x046f, 0x046f,
+0x0471, 0x0471,
+0x0473, 0x0473,
+0x0475, 0x0475,
+0x0477, 0x0477,
+0x0479, 0x0479,
+0x047b, 0x047b,
+0x047d, 0x047d,
+0x047f, 0x047f,
+0x0481, 0x0481,
+0x048b, 0x048b,
+0x048d, 0x048d,
+0x048f, 0x048f,
+0x0491, 0x0491,
+0x0493, 0x0493,
+0x0495, 0x0495,
+0x0497, 0x0497,
+0x0499, 0x0499,
+0x049b, 0x049b,
+0x049d, 0x049d,
+0x049f, 0x049f,
+0x04a1, 0x04a1,
+0x04a3, 0x04a3,
+0x04a5, 0x04a5,
+0x04a7, 0x04a7,
+0x04a9, 0x04a9,
+0x04ab, 0x04ab,
+0x04ad, 0x04ad,
+0x04af, 0x04af,
+0x04b1, 0x04b1,
+0x04b3, 0x04b3,
+0x04b5, 0x04b5,
+0x04b7, 0x04b7,
+0x04b9, 0x04b9,
+0x04bb, 0x04bb,
+0x04bd, 0x04bd,
+0x04bf, 0x04bf,
+0x04c2, 0x04c2,
+0x04c4, 0x04c4,
+0x04c6, 0x04c6,
+0x04c8, 0x04c8,
+0x04ca, 0x04ca,
+0x04cc, 0x04cc,
+0x04ce, 0x04cf,
+0x04d1, 0x04d1,
+0x04d3, 0x04d3,
+0x04d5, 0x04d5,
+0x04d7, 0x04d7,
+0x04d9, 0x04d9,
+0x04db, 0x04db,
+0x04dd, 0x04dd,
+0x04df, 0x04df,
+0x04e1, 0x04e1,
+0x04e3, 0x04e3,
+0x04e5, 0x04e5,
+0x04e7, 0x04e7,
+0x04e9, 0x04e9,
+0x04eb, 0x04eb,
+0x04ed, 0x04ed,
+0x04ef, 0x04ef,
+0x04f1, 0x04f1,
+0x04f3, 0x04f3,
+0x04f5, 0x04f5,
+0x04f7, 0x04f7,
+0x04f9, 0x04f9,
+0x04fb, 0x04fb,
+0x04fd, 0x04fd,
+0x04ff, 0x04ff,
+0x0501, 0x0501,
+0x0503, 0x0503,
+0x0505, 0x0505,
+0x0507, 0x0507,
+0x0509, 0x0509,
+0x050b, 0x050b,
+0x050d, 0x050d,
+0x050f, 0x050f,
+0x0511, 0x0511,
+0x0513, 0x0513,
+0x0515, 0x0515,
+0x0517, 0x0517,
+0x0519, 0x0519,
+0x051b, 0x051b,
+0x051d, 0x051d,
+0x051f, 0x051f,
+0x0521, 0x0521,
+0x0523, 0x0523,
+0x0525, 0x0525,
+0x0527, 0x0527,
+0x0529, 0x0529,
+0x052b, 0x052b,
+0x052d, 0x052d,
+0x052f, 0x052f,
+0x0561, 0x0587,
+0x13f8, 0x13fd,
+0x1d79, 0x1d79,
+0x1d7d, 0x1d7d,
+0x1e01, 0x1e01,
+0x1e03, 0x1e03,
+0x1e05, 0x1e05,
+0x1e07, 0x1e07,
+0x1e09, 0x1e09,
+0x1e0b, 0x1e0b,
+0x1e0d, 0x1e0d,
+0x1e0f, 0x1e0f,
+0x1e11, 0x1e11,
+0x1e13, 0x1e13,
+0x1e15, 0x1e15,
+0x1e17, 0x1e17,
+0x1e19, 0x1e19,
+0x1e1b, 0x1e1b,
+0x1e1d, 0x1e1d,
+0x1e1f, 0x1e1f,
+0x1e21, 0x1e21,
+0x1e23, 0x1e23,
+0x1e25, 0x1e25,
+0x1e27, 0x1e27,
+0x1e29, 0x1e29,
+0x1e2b, 0x1e2b,
+0x1e2d, 0x1e2d,
+0x1e2f, 0x1e2f,
+0x1e31, 0x1e31,
+0x1e33, 0x1e33,
+0x1e35, 0x1e35,
+0x1e37, 0x1e37,
+0x1e39, 0x1e39,
+0x1e3b, 0x1e3b,
+0x1e3d, 0x1e3d,
+0x1e3f, 0x1e3f,
+0x1e41, 0x1e41,
+0x1e43, 0x1e43,
+0x1e45, 0x1e45,
+0x1e47, 0x1e47,
+0x1e49, 0x1e49,
+0x1e4b, 0x1e4b,
+0x1e4d, 0x1e4d,
+0x1e4f, 0x1e4f,
+0x1e51, 0x1e51,
+0x1e53, 0x1e53,
+0x1e55, 0x1e55,
+0x1e57, 0x1e57,
+0x1e59, 0x1e59,
+0x1e5b, 0x1e5b,
+0x1e5d, 0x1e5d,
+0x1e5f, 0x1e5f,
+0x1e61, 0x1e61,
+0x1e63, 0x1e63,
+0x1e65, 0x1e65,
+0x1e67, 0x1e67,
+0x1e69, 0x1e69,
+0x1e6b, 0x1e6b,
+0x1e6d, 0x1e6d,
+0x1e6f, 0x1e6f,
+0x1e71, 0x1e71,
+0x1e73, 0x1e73,
+0x1e75, 0x1e75,
+0x1e77, 0x1e77,
+0x1e79, 0x1e79,
+0x1e7b, 0x1e7b,
+0x1e7d, 0x1e7d,
+0x1e7f, 0x1e7f,
+0x1e81, 0x1e81,
+0x1e83, 0x1e83,
+0x1e85, 0x1e85,
+0x1e87, 0x1e87,
+0x1e89, 0x1e89,
+0x1e8b, 0x1e8b,
+0x1e8d, 0x1e8d,
+0x1e8f, 0x1e8f,
+0x1e91, 0x1e91,
+0x1e93, 0x1e93,
+0x1e95, 0x1e9b,
+0x1ea1, 0x1ea1,
+0x1ea3, 0x1ea3,
+0x1ea5, 0x1ea5,
+0x1ea7, 0x1ea7,
+0x1ea9, 0x1ea9,
+0x1eab, 0x1eab,
+0x1ead, 0x1ead,
+0x1eaf, 0x1eaf,
+0x1eb1, 0x1eb1,
+0x1eb3, 0x1eb3,
+0x1eb5, 0x1eb5,
+0x1eb7, 0x1eb7,
+0x1eb9, 0x1eb9,
+0x1ebb, 0x1ebb,
+0x1ebd, 0x1ebd,
+0x1ebf, 0x1ebf,
+0x1ec1, 0x1ec1,
+0x1ec3, 0x1ec3,
+0x1ec5, 0x1ec5,
+0x1ec7, 0x1ec7,
+0x1ec9, 0x1ec9,
+0x1ecb, 0x1ecb,
+0x1ecd, 0x1ecd,
+0x1ecf, 0x1ecf,
+0x1ed1, 0x1ed1,
+0x1ed3, 0x1ed3,
+0x1ed5, 0x1ed5,
+0x1ed7, 0x1ed7,
+0x1ed9, 0x1ed9,
+0x1edb, 0x1edb,
+0x1edd, 0x1edd,
+0x1edf, 0x1edf,
+0x1ee1, 0x1ee1,
+0x1ee3, 0x1ee3,
+0x1ee5, 0x1ee5,
+0x1ee7, 0x1ee7,
+0x1ee9, 0x1ee9,
+0x1eeb, 0x1eeb,
+0x1eed, 0x1eed,
+0x1eef, 0x1eef,
+0x1ef1, 0x1ef1,
+0x1ef3, 0x1ef3,
+0x1ef5, 0x1ef5,
+0x1ef7, 0x1ef7,
+0x1ef9, 0x1ef9,
+0x1efb, 0x1efb,
+0x1efd, 0x1efd,
+0x1eff, 0x1f07,
+0x1f10, 0x1f15,
+0x1f20, 0x1f27,
+0x1f30, 0x1f37,
+0x1f40, 0x1f45,
+0x1f50, 0x1f57,
+0x1f60, 0x1f67,
+0x1f70, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fb7,
+0x1fbc, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fc7,
+0x1fcc, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fd7,
+0x1fe0, 0x1fe7,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ff7,
+0x1ffc, 0x1ffc,
+0x214e, 0x214e,
+0x2170, 0x217f,
+0x2184, 0x2184,
+0x24d0, 0x24e9,
+0x2c30, 0x2c5e,
+0x2c61, 0x2c61,
+0x2c65, 0x2c66,
+0x2c68, 0x2c68,
+0x2c6a, 0x2c6a,
+0x2c6c, 0x2c6c,
+0x2c73, 0x2c73,
+0x2c76, 0x2c76,
+0x2c81, 0x2c81,
+0x2c83, 0x2c83,
+0x2c85, 0x2c85,
+0x2c87, 0x2c87,
+0x2c89, 0x2c89,
+0x2c8b, 0x2c8b,
+0x2c8d, 0x2c8d,
+0x2c8f, 0x2c8f,
+0x2c91, 0x2c91,
+0x2c93, 0x2c93,
+0x2c95, 0x2c95,
+0x2c97, 0x2c97,
+0x2c99, 0x2c99,
+0x2c9b, 0x2c9b,
+0x2c9d, 0x2c9d,
+0x2c9f, 0x2c9f,
+0x2ca1, 0x2ca1,
+0x2ca3, 0x2ca3,
+0x2ca5, 0x2ca5,
+0x2ca7, 0x2ca7,
+0x2ca9, 0x2ca9,
+0x2cab, 0x2cab,
+0x2cad, 0x2cad,
+0x2caf, 0x2caf,
+0x2cb1, 0x2cb1,
+0x2cb3, 0x2cb3,
+0x2cb5, 0x2cb5,
+0x2cb7, 0x2cb7,
+0x2cb9, 0x2cb9,
+0x2cbb, 0x2cbb,
+0x2cbd, 0x2cbd,
+0x2cbf, 0x2cbf,
+0x2cc1, 0x2cc1,
+0x2cc3, 0x2cc3,
+0x2cc5, 0x2cc5,
+0x2cc7, 0x2cc7,
+0x2cc9, 0x2cc9,
+0x2ccb, 0x2ccb,
+0x2ccd, 0x2ccd,
+0x2ccf, 0x2ccf,
+0x2cd1, 0x2cd1,
+0x2cd3, 0x2cd3,
+0x2cd5, 0x2cd5,
+0x2cd7, 0x2cd7,
+0x2cd9, 0x2cd9,
+0x2cdb, 0x2cdb,
+0x2cdd, 0x2cdd,
+0x2cdf, 0x2cdf,
+0x2ce1, 0x2ce1,
+0x2ce3, 0x2ce3,
+0x2cec, 0x2cec,
+0x2cee, 0x2cee,
+0x2cf3, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0xa641, 0xa641,
+0xa643, 0xa643,
+0xa645, 0xa645,
+0xa647, 0xa647,
+0xa649, 0xa649,
+0xa64b, 0xa64b,
+0xa64d, 0xa64d,
+0xa64f, 0xa64f,
+0xa651, 0xa651,
+0xa653, 0xa653,
+0xa655, 0xa655,
+0xa657, 0xa657,
+0xa659, 0xa659,
+0xa65b, 0xa65b,
+0xa65d, 0xa65d,
+0xa65f, 0xa65f,
+0xa661, 0xa661,
+0xa663, 0xa663,
+0xa665, 0xa665,
+0xa667, 0xa667,
+0xa669, 0xa669,
+0xa66b, 0xa66b,
+0xa66d, 0xa66d,
+0xa681, 0xa681,
+0xa683, 0xa683,
+0xa685, 0xa685,
+0xa687, 0xa687,
+0xa689, 0xa689,
+0xa68b, 0xa68b,
+0xa68d, 0xa68d,
+0xa68f, 0xa68f,
+0xa691, 0xa691,
+0xa693, 0xa693,
+0xa695, 0xa695,
+0xa697, 0xa697,
+0xa699, 0xa699,
+0xa69b, 0xa69b,
+0xa723, 0xa723,
+0xa725, 0xa725,
+0xa727, 0xa727,
+0xa729, 0xa729,
+0xa72b, 0xa72b,
+0xa72d, 0xa72d,
+0xa72f, 0xa72f,
+0xa733, 0xa733,
+0xa735, 0xa735,
+0xa737, 0xa737,
+0xa739, 0xa739,
+0xa73b, 0xa73b,
+0xa73d, 0xa73d,
+0xa73f, 0xa73f,
+0xa741, 0xa741,
+0xa743, 0xa743,
+0xa745, 0xa745,
+0xa747, 0xa747,
+0xa749, 0xa749,
+0xa74b, 0xa74b,
+0xa74d, 0xa74d,
+0xa74f, 0xa74f,
+0xa751, 0xa751,
+0xa753, 0xa753,
+0xa755, 0xa755,
+0xa757, 0xa757,
+0xa759, 0xa759,
+0xa75b, 0xa75b,
+0xa75d, 0xa75d,
+0xa75f, 0xa75f,
+0xa761, 0xa761,
+0xa763, 0xa763,
+0xa765, 0xa765,
+0xa767, 0xa767,
+0xa769, 0xa769,
+0xa76b, 0xa76b,
+0xa76d, 0xa76d,
+0xa76f, 0xa76f,
+0xa77a, 0xa77a,
+0xa77c, 0xa77c,
+0xa77f, 0xa77f,
+0xa781, 0xa781,
+0xa783, 0xa783,
+0xa785, 0xa785,
+0xa787, 0xa787,
+0xa78c, 0xa78c,
+0xa791, 0xa791,
+0xa793, 0xa793,
+0xa797, 0xa797,
+0xa799, 0xa799,
+0xa79b, 0xa79b,
+0xa79d, 0xa79d,
+0xa79f, 0xa79f,
+0xa7a1, 0xa7a1,
+0xa7a3, 0xa7a3,
+0xa7a5, 0xa7a5,
+0xa7a7, 0xa7a7,
+0xa7a9, 0xa7a9,
+0xa7b5, 0xa7b5,
+0xa7b7, 0xa7b7,
+0xab53, 0xab53,
 0xab70, 0xabbf,
 0xfb00, 0xfb06,
 0xfb13, 0xfb17,
-0xff21, 0xff3a,
-0x10400, 0x10427,
-0x10c80, 0x10cb2,
-0x118a0, 0x118bf,
-}; /* END of CR_Changes_When_Casefolded */
+0xff41, 0xff5a,
+0x10428, 0x1044f,
+0x10cc0, 0x10cf2,
+0x118c0, 0x118df,
+}; /* END of CR_Changes_When_Uppercased */
+
+/* PROPERTY: 'Cherokee': Script */
+static const OnigCodePoint
+CR_Cherokee[] = { 3,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0xab70, 0xabbf,
+}; /* END of CR_Cherokee */
+
+/* PROPERTY: 'Cn': General Category */
+static const OnigCodePoint
+CR_Cn[] = { 613,
+0x0378, 0x0379,
+0x0380, 0x0383,
+0x038b, 0x038b,
+0x038d, 0x038d,
+0x03a2, 0x03a2,
+0x0530, 0x0530,
+0x0557, 0x0558,
+0x0560, 0x0560,
+0x0588, 0x0588,
+0x058b, 0x058c,
+0x0590, 0x0590,
+0x05c8, 0x05cf,
+0x05eb, 0x05ef,
+0x05f5, 0x05ff,
+0x061d, 0x061d,
+0x070e, 0x070e,
+0x074b, 0x074c,
+0x07b2, 0x07bf,
+0x07fb, 0x07ff,
+0x082e, 0x082f,
+0x083f, 0x083f,
+0x085c, 0x085d,
+0x085f, 0x089f,
+0x08b5, 0x08e2,
+0x0984, 0x0984,
+0x098d, 0x098e,
+0x0991, 0x0992,
+0x09a9, 0x09a9,
+0x09b1, 0x09b1,
+0x09b3, 0x09b5,
+0x09ba, 0x09bb,
+0x09c5, 0x09c6,
+0x09c9, 0x09ca,
+0x09cf, 0x09d6,
+0x09d8, 0x09db,
+0x09de, 0x09de,
+0x09e4, 0x09e5,
+0x09fc, 0x0a00,
+0x0a04, 0x0a04,
+0x0a0b, 0x0a0e,
+0x0a11, 0x0a12,
+0x0a29, 0x0a29,
+0x0a31, 0x0a31,
+0x0a34, 0x0a34,
+0x0a37, 0x0a37,
+0x0a3a, 0x0a3b,
+0x0a3d, 0x0a3d,
+0x0a43, 0x0a46,
+0x0a49, 0x0a4a,
+0x0a4e, 0x0a50,
+0x0a52, 0x0a58,
+0x0a5d, 0x0a5d,
+0x0a5f, 0x0a65,
+0x0a76, 0x0a80,
+0x0a84, 0x0a84,
+0x0a8e, 0x0a8e,
+0x0a92, 0x0a92,
+0x0aa9, 0x0aa9,
+0x0ab1, 0x0ab1,
+0x0ab4, 0x0ab4,
+0x0aba, 0x0abb,
+0x0ac6, 0x0ac6,
+0x0aca, 0x0aca,
+0x0ace, 0x0acf,
+0x0ad1, 0x0adf,
+0x0ae4, 0x0ae5,
+0x0af2, 0x0af8,
+0x0afa, 0x0b00,
+0x0b04, 0x0b04,
+0x0b0d, 0x0b0e,
+0x0b11, 0x0b12,
+0x0b29, 0x0b29,
+0x0b31, 0x0b31,
+0x0b34, 0x0b34,
+0x0b3a, 0x0b3b,
+0x0b45, 0x0b46,
+0x0b49, 0x0b4a,
+0x0b4e, 0x0b55,
+0x0b58, 0x0b5b,
+0x0b5e, 0x0b5e,
+0x0b64, 0x0b65,
+0x0b78, 0x0b81,
+0x0b84, 0x0b84,
+0x0b8b, 0x0b8d,
+0x0b91, 0x0b91,
+0x0b96, 0x0b98,
+0x0b9b, 0x0b9b,
+0x0b9d, 0x0b9d,
+0x0ba0, 0x0ba2,
+0x0ba5, 0x0ba7,
+0x0bab, 0x0bad,
+0x0bba, 0x0bbd,
+0x0bc3, 0x0bc5,
+0x0bc9, 0x0bc9,
+0x0bce, 0x0bcf,
+0x0bd1, 0x0bd6,
+0x0bd8, 0x0be5,
+0x0bfb, 0x0bff,
+0x0c04, 0x0c04,
+0x0c0d, 0x0c0d,
+0x0c11, 0x0c11,
+0x0c29, 0x0c29,
+0x0c3a, 0x0c3c,
+0x0c45, 0x0c45,
+0x0c49, 0x0c49,
+0x0c4e, 0x0c54,
+0x0c57, 0x0c57,
+0x0c5b, 0x0c5f,
+0x0c64, 0x0c65,
+0x0c70, 0x0c77,
+0x0c80, 0x0c80,
+0x0c84, 0x0c84,
+0x0c8d, 0x0c8d,
+0x0c91, 0x0c91,
+0x0ca9, 0x0ca9,
+0x0cb4, 0x0cb4,
+0x0cba, 0x0cbb,
+0x0cc5, 0x0cc5,
+0x0cc9, 0x0cc9,
+0x0cce, 0x0cd4,
+0x0cd7, 0x0cdd,
+0x0cdf, 0x0cdf,
+0x0ce4, 0x0ce5,
+0x0cf0, 0x0cf0,
+0x0cf3, 0x0d00,
+0x0d04, 0x0d04,
+0x0d0d, 0x0d0d,
+0x0d11, 0x0d11,
+0x0d3b, 0x0d3c,
+0x0d45, 0x0d45,
+0x0d49, 0x0d49,
+0x0d4f, 0x0d56,
+0x0d58, 0x0d5e,
+0x0d64, 0x0d65,
+0x0d76, 0x0d78,
+0x0d80, 0x0d81,
+0x0d84, 0x0d84,
+0x0d97, 0x0d99,
+0x0db2, 0x0db2,
+0x0dbc, 0x0dbc,
+0x0dbe, 0x0dbf,
+0x0dc7, 0x0dc9,
+0x0dcb, 0x0dce,
+0x0dd5, 0x0dd5,
+0x0dd7, 0x0dd7,
+0x0de0, 0x0de5,
+0x0df0, 0x0df1,
+0x0df5, 0x0e00,
+0x0e3b, 0x0e3e,
+0x0e5c, 0x0e80,
+0x0e83, 0x0e83,
+0x0e85, 0x0e86,
+0x0e89, 0x0e89,
+0x0e8b, 0x0e8c,
+0x0e8e, 0x0e93,
+0x0e98, 0x0e98,
+0x0ea0, 0x0ea0,
+0x0ea4, 0x0ea4,
+0x0ea6, 0x0ea6,
+0x0ea8, 0x0ea9,
+0x0eac, 0x0eac,
+0x0eba, 0x0eba,
+0x0ebe, 0x0ebf,
+0x0ec5, 0x0ec5,
+0x0ec7, 0x0ec7,
+0x0ece, 0x0ecf,
+0x0eda, 0x0edb,
+0x0ee0, 0x0eff,
+0x0f48, 0x0f48,
+0x0f6d, 0x0f70,
+0x0f98, 0x0f98,
+0x0fbd, 0x0fbd,
+0x0fcd, 0x0fcd,
+0x0fdb, 0x0fff,
+0x10c6, 0x10c6,
+0x10c8, 0x10cc,
+0x10ce, 0x10cf,
+0x1249, 0x1249,
+0x124e, 0x124f,
+0x1257, 0x1257,
+0x1259, 0x1259,
+0x125e, 0x125f,
+0x1289, 0x1289,
+0x128e, 0x128f,
+0x12b1, 0x12b1,
+0x12b6, 0x12b7,
+0x12bf, 0x12bf,
+0x12c1, 0x12c1,
+0x12c6, 0x12c7,
+0x12d7, 0x12d7,
+0x1311, 0x1311,
+0x1316, 0x1317,
+0x135b, 0x135c,
+0x137d, 0x137f,
+0x139a, 0x139f,
+0x13f6, 0x13f7,
+0x13fe, 0x13ff,
+0x169d, 0x169f,
+0x16f9, 0x16ff,
+0x170d, 0x170d,
+0x1715, 0x171f,
+0x1737, 0x173f,
+0x1754, 0x175f,
+0x176d, 0x176d,
+0x1771, 0x1771,
+0x1774, 0x177f,
+0x17de, 0x17df,
+0x17ea, 0x17ef,
+0x17fa, 0x17ff,
+0x180f, 0x180f,
+0x181a, 0x181f,
+0x1878, 0x187f,
+0x18ab, 0x18af,
+0x18f6, 0x18ff,
+0x191f, 0x191f,
+0x192c, 0x192f,
+0x193c, 0x193f,
+0x1941, 0x1943,
+0x196e, 0x196f,
+0x1975, 0x197f,
+0x19ac, 0x19af,
+0x19ca, 0x19cf,
+0x19db, 0x19dd,
+0x1a1c, 0x1a1d,
+0x1a5f, 0x1a5f,
+0x1a7d, 0x1a7e,
+0x1a8a, 0x1a8f,
+0x1a9a, 0x1a9f,
+0x1aae, 0x1aaf,
+0x1abf, 0x1aff,
+0x1b4c, 0x1b4f,
+0x1b7d, 0x1b7f,
+0x1bf4, 0x1bfb,
+0x1c38, 0x1c3a,
+0x1c4a, 0x1c4c,
+0x1c80, 0x1cbf,
+0x1cc8, 0x1ccf,
+0x1cf7, 0x1cf7,
+0x1cfa, 0x1cff,
+0x1df6, 0x1dfb,
+0x1f16, 0x1f17,
+0x1f1e, 0x1f1f,
+0x1f46, 0x1f47,
+0x1f4e, 0x1f4f,
+0x1f58, 0x1f58,
+0x1f5a, 0x1f5a,
+0x1f5c, 0x1f5c,
+0x1f5e, 0x1f5e,
+0x1f7e, 0x1f7f,
+0x1fb5, 0x1fb5,
+0x1fc5, 0x1fc5,
+0x1fd4, 0x1fd5,
+0x1fdc, 0x1fdc,
+0x1ff0, 0x1ff1,
+0x1ff5, 0x1ff5,
+0x1fff, 0x1fff,
+0x2065, 0x2065,
+0x2072, 0x2073,
+0x208f, 0x208f,
+0x209d, 0x209f,
+0x20bf, 0x20cf,
+0x20f1, 0x20ff,
+0x218c, 0x218f,
+0x23fb, 0x23ff,
+0x2427, 0x243f,
+0x244b, 0x245f,
+0x2b74, 0x2b75,
+0x2b96, 0x2b97,
+0x2bba, 0x2bbc,
+0x2bc9, 0x2bc9,
+0x2bd2, 0x2beb,
+0x2bf0, 0x2bff,
+0x2c2f, 0x2c2f,
+0x2c5f, 0x2c5f,
+0x2cf4, 0x2cf8,
+0x2d26, 0x2d26,
+0x2d28, 0x2d2c,
+0x2d2e, 0x2d2f,
+0x2d68, 0x2d6e,
+0x2d71, 0x2d7e,
+0x2d97, 0x2d9f,
+0x2da7, 0x2da7,
+0x2daf, 0x2daf,
+0x2db7, 0x2db7,
+0x2dbf, 0x2dbf,
+0x2dc7, 0x2dc7,
+0x2dcf, 0x2dcf,
+0x2dd7, 0x2dd7,
+0x2ddf, 0x2ddf,
+0x2e43, 0x2e7f,
+0x2e9a, 0x2e9a,
+0x2ef4, 0x2eff,
+0x2fd6, 0x2fef,
+0x2ffc, 0x2fff,
+0x3040, 0x3040,
+0x3097, 0x3098,
+0x3100, 0x3104,
+0x312e, 0x3130,
+0x318f, 0x318f,
+0x31bb, 0x31bf,
+0x31e4, 0x31ef,
+0x321f, 0x321f,
+0x32ff, 0x32ff,
+0x4db6, 0x4dbf,
+0x9fd6, 0x9fff,
+0xa48d, 0xa48f,
+0xa4c7, 0xa4cf,
+0xa62c, 0xa63f,
+0xa6f8, 0xa6ff,
+0xa7ae, 0xa7af,
+0xa7b8, 0xa7f6,
+0xa82c, 0xa82f,
+0xa83a, 0xa83f,
+0xa878, 0xa87f,
+0xa8c5, 0xa8cd,
+0xa8da, 0xa8df,
+0xa8fe, 0xa8ff,
+0xa954, 0xa95e,
+0xa97d, 0xa97f,
+0xa9ce, 0xa9ce,
+0xa9da, 0xa9dd,
+0xa9ff, 0xa9ff,
+0xaa37, 0xaa3f,
+0xaa4e, 0xaa4f,
+0xaa5a, 0xaa5b,
+0xaac3, 0xaada,
+0xaaf7, 0xab00,
+0xab07, 0xab08,
+0xab0f, 0xab10,
+0xab17, 0xab1f,
+0xab27, 0xab27,
+0xab2f, 0xab2f,
+0xab66, 0xab6f,
+0xabee, 0xabef,
+0xabfa, 0xabff,
+0xd7a4, 0xd7af,
+0xd7c7, 0xd7ca,
+0xd7fc, 0xd7ff,
+0xfa6e, 0xfa6f,
+0xfada, 0xfaff,
+0xfb07, 0xfb12,
+0xfb18, 0xfb1c,
+0xfb37, 0xfb37,
+0xfb3d, 0xfb3d,
+0xfb3f, 0xfb3f,
+0xfb42, 0xfb42,
+0xfb45, 0xfb45,
+0xfbc2, 0xfbd2,
+0xfd40, 0xfd4f,
+0xfd90, 0xfd91,
+0xfdc8, 0xfdef,
+0xfdfe, 0xfdff,
+0xfe1a, 0xfe1f,
+0xfe53, 0xfe53,
+0xfe67, 0xfe67,
+0xfe6c, 0xfe6f,
+0xfe75, 0xfe75,
+0xfefd, 0xfefe,
+0xff00, 0xff00,
+0xffbf, 0xffc1,
+0xffc8, 0xffc9,
+0xffd0, 0xffd1,
+0xffd8, 0xffd9,
+0xffdd, 0xffdf,
+0xffe7, 0xffe7,
+0xffef, 0xfff8,
+0xfffe, 0xffff,
+0x1000c, 0x1000c,
+0x10027, 0x10027,
+0x1003b, 0x1003b,
+0x1003e, 0x1003e,
+0x1004e, 0x1004f,
+0x1005e, 0x1007f,
+0x100fb, 0x100ff,
+0x10103, 0x10106,
+0x10134, 0x10136,
+0x1018d, 0x1018f,
+0x1019c, 0x1019f,
+0x101a1, 0x101cf,
+0x101fe, 0x1027f,
+0x1029d, 0x1029f,
+0x102d1, 0x102df,
+0x102fc, 0x102ff,
+0x10324, 0x1032f,
+0x1034b, 0x1034f,
+0x1037b, 0x1037f,
+0x1039e, 0x1039e,
+0x103c4, 0x103c7,
+0x103d6, 0x103ff,
+0x1049e, 0x1049f,
+0x104aa, 0x104ff,
+0x10528, 0x1052f,
+0x10564, 0x1056e,
+0x10570, 0x105ff,
+0x10737, 0x1073f,
+0x10756, 0x1075f,
+0x10768, 0x107ff,
+0x10806, 0x10807,
+0x10809, 0x10809,
+0x10836, 0x10836,
+0x10839, 0x1083b,
+0x1083d, 0x1083e,
+0x10856, 0x10856,
+0x1089f, 0x108a6,
+0x108b0, 0x108df,
+0x108f3, 0x108f3,
+0x108f6, 0x108fa,
+0x1091c, 0x1091e,
+0x1093a, 0x1093e,
+0x10940, 0x1097f,
+0x109b8, 0x109bb,
+0x109d0, 0x109d1,
+0x10a04, 0x10a04,
+0x10a07, 0x10a0b,
+0x10a14, 0x10a14,
+0x10a18, 0x10a18,
+0x10a34, 0x10a37,
+0x10a3b, 0x10a3e,
+0x10a48, 0x10a4f,
+0x10a59, 0x10a5f,
+0x10aa0, 0x10abf,
+0x10ae7, 0x10aea,
+0x10af7, 0x10aff,
+0x10b36, 0x10b38,
+0x10b56, 0x10b57,
+0x10b73, 0x10b77,
+0x10b92, 0x10b98,
+0x10b9d, 0x10ba8,
+0x10bb0, 0x10bff,
+0x10c49, 0x10c7f,
+0x10cb3, 0x10cbf,
+0x10cf3, 0x10cf9,
+0x10d00, 0x10e5f,
+0x10e7f, 0x10fff,
+0x1104e, 0x11051,
+0x11070, 0x1107e,
+0x110c2, 0x110cf,
+0x110e9, 0x110ef,
+0x110fa, 0x110ff,
+0x11135, 0x11135,
+0x11144, 0x1114f,
+0x11177, 0x1117f,
+0x111ce, 0x111cf,
+0x111e0, 0x111e0,
+0x111f5, 0x111ff,
+0x11212, 0x11212,
+0x1123e, 0x1127f,
+0x11287, 0x11287,
+0x11289, 0x11289,
+0x1128e, 0x1128e,
+0x1129e, 0x1129e,
+0x112aa, 0x112af,
+0x112eb, 0x112ef,
+0x112fa, 0x112ff,
+0x11304, 0x11304,
+0x1130d, 0x1130e,
+0x11311, 0x11312,
+0x11329, 0x11329,
+0x11331, 0x11331,
+0x11334, 0x11334,
+0x1133a, 0x1133b,
+0x11345, 0x11346,
+0x11349, 0x1134a,
+0x1134e, 0x1134f,
+0x11351, 0x11356,
+0x11358, 0x1135c,
+0x11364, 0x11365,
+0x1136d, 0x1136f,
+0x11375, 0x1147f,
+0x114c8, 0x114cf,
+0x114da, 0x1157f,
+0x115b6, 0x115b7,
+0x115de, 0x115ff,
+0x11645, 0x1164f,
+0x1165a, 0x1167f,
+0x116b8, 0x116bf,
+0x116ca, 0x116ff,
+0x1171a, 0x1171c,
+0x1172c, 0x1172f,
+0x11740, 0x1189f,
+0x118f3, 0x118fe,
+0x11900, 0x11abf,
+0x11af9, 0x11fff,
+0x1239a, 0x123ff,
+0x1246f, 0x1246f,
+0x12475, 0x1247f,
+0x12544, 0x12fff,
+0x1342f, 0x143ff,
+0x14647, 0x167ff,
+0x16a39, 0x16a3f,
+0x16a5f, 0x16a5f,
+0x16a6a, 0x16a6d,
+0x16a70, 0x16acf,
+0x16aee, 0x16aef,
+0x16af6, 0x16aff,
+0x16b46, 0x16b4f,
+0x16b5a, 0x16b5a,
+0x16b62, 0x16b62,
+0x16b78, 0x16b7c,
+0x16b90, 0x16eff,
+0x16f45, 0x16f4f,
+0x16f7f, 0x16f8e,
+0x16fa0, 0x1afff,
+0x1b002, 0x1bbff,
+0x1bc6b, 0x1bc6f,
+0x1bc7d, 0x1bc7f,
+0x1bc89, 0x1bc8f,
+0x1bc9a, 0x1bc9b,
+0x1bca4, 0x1cfff,
+0x1d0f6, 0x1d0ff,
+0x1d127, 0x1d128,
+0x1d1e9, 0x1d1ff,
+0x1d246, 0x1d2ff,
+0x1d357, 0x1d35f,
+0x1d372, 0x1d3ff,
+0x1d455, 0x1d455,
+0x1d49d, 0x1d49d,
+0x1d4a0, 0x1d4a1,
+0x1d4a3, 0x1d4a4,
+0x1d4a7, 0x1d4a8,
+0x1d4ad, 0x1d4ad,
+0x1d4ba, 0x1d4ba,
+0x1d4bc, 0x1d4bc,
+0x1d4c4, 0x1d4c4,
+0x1d506, 0x1d506,
+0x1d50b, 0x1d50c,
+0x1d515, 0x1d515,
+0x1d51d, 0x1d51d,
+0x1d53a, 0x1d53a,
+0x1d53f, 0x1d53f,
+0x1d545, 0x1d545,
+0x1d547, 0x1d549,
+0x1d551, 0x1d551,
+0x1d6a6, 0x1d6a7,
+0x1d7cc, 0x1d7cd,
+0x1da8c, 0x1da9a,
+0x1daa0, 0x1daa0,
+0x1dab0, 0x1e7ff,
+0x1e8c5, 0x1e8c6,
+0x1e8d7, 0x1edff,
+0x1ee04, 0x1ee04,
+0x1ee20, 0x1ee20,
+0x1ee23, 0x1ee23,
+0x1ee25, 0x1ee26,
+0x1ee28, 0x1ee28,
+0x1ee33, 0x1ee33,
+0x1ee38, 0x1ee38,
+0x1ee3a, 0x1ee3a,
+0x1ee3c, 0x1ee41,
+0x1ee43, 0x1ee46,
+0x1ee48, 0x1ee48,
+0x1ee4a, 0x1ee4a,
+0x1ee4c, 0x1ee4c,
+0x1ee50, 0x1ee50,
+0x1ee53, 0x1ee53,
+0x1ee55, 0x1ee56,
+0x1ee58, 0x1ee58,
+0x1ee5a, 0x1ee5a,
+0x1ee5c, 0x1ee5c,
+0x1ee5e, 0x1ee5e,
+0x1ee60, 0x1ee60,
+0x1ee63, 0x1ee63,
+0x1ee65, 0x1ee66,
+0x1ee6b, 0x1ee6b,
+0x1ee73, 0x1ee73,
+0x1ee78, 0x1ee78,
+0x1ee7d, 0x1ee7d,
+0x1ee7f, 0x1ee7f,
+0x1ee8a, 0x1ee8a,
+0x1ee9c, 0x1eea0,
+0x1eea4, 0x1eea4,
+0x1eeaa, 0x1eeaa,
+0x1eebc, 0x1eeef,
+0x1eef2, 0x1efff,
+0x1f02c, 0x1f02f,
+0x1f094, 0x1f09f,
+0x1f0af, 0x1f0b0,
+0x1f0c0, 0x1f0c0,
+0x1f0d0, 0x1f0d0,
+0x1f0f6, 0x1f0ff,
+0x1f10d, 0x1f10f,
+0x1f12f, 0x1f12f,
+0x1f16c, 0x1f16f,
+0x1f19b, 0x1f1e5,
+0x1f203, 0x1f20f,
+0x1f23b, 0x1f23f,
+0x1f249, 0x1f24f,
+0x1f252, 0x1f2ff,
+0x1f57a, 0x1f57a,
+0x1f5a4, 0x1f5a4,
+0x1f6d1, 0x1f6df,
+0x1f6ed, 0x1f6ef,
+0x1f6f4, 0x1f6ff,
+0x1f774, 0x1f77f,
+0x1f7d5, 0x1f7ff,
+0x1f80c, 0x1f80f,
+0x1f848, 0x1f84f,
+0x1f85a, 0x1f85f,
+0x1f888, 0x1f88f,
+0x1f8ae, 0x1f90f,
+0x1f919, 0x1f97f,
+0x1f985, 0x1f9bf,
+0x1f9c1, 0x1ffff,
+0x2a6d7, 0x2a6ff,
+0x2b735, 0x2b73f,
+0x2b81e, 0x2b81f,
+0x2cea2, 0x2f7ff,
+0x2fa1e, 0xe0000,
+0xe0002, 0xe001f,
+0xe0080, 0xe00ff,
+0xe01f0, 0xeffff,
+0xffffe, 0xfffff,
+0x10fffe, 0x10ffff,
+}; /* END of CR_Cn */
+
+/* PROPERTY: 'Co': General Category */
+static const OnigCodePoint
+CR_Co[] = { 3,
+0xe000, 0xf8ff,
+0xf0000, 0xffffd,
+0x100000, 0x10fffd,
+}; /* END of CR_Co */
+
+/* PROPERTY: 'Common': Script */
+static const OnigCodePoint
+CR_Common[] = { 161,
+0x0000, 0x0040,
+0x005b, 0x0060,
+0x007b, 0x00a9,
+0x00ab, 0x00b9,
+0x00bb, 0x00bf,
+0x00d7, 0x00d7,
+0x00f7, 0x00f7,
+0x02b9, 0x02df,
+0x02e5, 0x02e9,
+0x02ec, 0x02ff,
+0x0374, 0x0374,
+0x037e, 0x037e,
+0x0385, 0x0385,
+0x0387, 0x0387,
+0x0589, 0x0589,
+0x0605, 0x0605,
+0x060c, 0x060c,
+0x061b, 0x061c,
+0x061f, 0x061f,
+0x0640, 0x0640,
+0x06dd, 0x06dd,
+0x0964, 0x0965,
+0x0e3f, 0x0e3f,
+0x0fd5, 0x0fd8,
+0x10fb, 0x10fb,
+0x16eb, 0x16ed,
+0x1735, 0x1736,
+0x1802, 0x1803,
+0x1805, 0x1805,
+0x1cd3, 0x1cd3,
+0x1ce1, 0x1ce1,
+0x1ce9, 0x1cec,
+0x1cee, 0x1cf3,
+0x1cf5, 0x1cf6,
+0x2000, 0x200b,
+0x200e, 0x2064,
+0x2066, 0x2070,
+0x2074, 0x207e,
+0x2080, 0x208e,
+0x20a0, 0x20be,
+0x2100, 0x2125,
+0x2127, 0x2129,
+0x212c, 0x2131,
+0x2133, 0x214d,
+0x214f, 0x215f,
+0x2189, 0x218b,
+0x2190, 0x23fa,
+0x2400, 0x2426,
+0x2440, 0x244a,
+0x2460, 0x27ff,
+0x2900, 0x2b73,
+0x2b76, 0x2b95,
+0x2b98, 0x2bb9,
+0x2bbd, 0x2bc8,
+0x2bca, 0x2bd1,
+0x2bec, 0x2bef,
+0x2e00, 0x2e42,
+0x2ff0, 0x2ffb,
+0x3000, 0x3004,
+0x3006, 0x3006,
+0x3008, 0x3020,
+0x3030, 0x3037,
+0x303c, 0x303f,
+0x309b, 0x309c,
+0x30a0, 0x30a0,
+0x30fb, 0x30fc,
+0x3190, 0x319f,
+0x31c0, 0x31e3,
+0x3220, 0x325f,
+0x327f, 0x32cf,
+0x3358, 0x33ff,
+0x4dc0, 0x4dff,
+0xa700, 0xa721,
+0xa788, 0xa78a,
+0xa830, 0xa839,
+0xa92e, 0xa92e,
+0xa9cf, 0xa9cf,
+0xab5b, 0xab5b,
+0xfd3e, 0xfd3f,
+0xfe10, 0xfe19,
+0xfe30, 0xfe52,
+0xfe54, 0xfe66,
+0xfe68, 0xfe6b,
+0xfeff, 0xfeff,
+0xff01, 0xff20,
+0xff3b, 0xff40,
+0xff5b, 0xff65,
+0xff70, 0xff70,
+0xff9e, 0xff9f,
+0xffe0, 0xffe6,
+0xffe8, 0xffee,
+0xfff9, 0xfffd,
+0x10100, 0x10102,
+0x10107, 0x10133,
+0x10137, 0x1013f,
+0x10190, 0x1019b,
+0x101d0, 0x101fc,
+0x102e1, 0x102fb,
+0x1bca0, 0x1bca3,
+0x1d000, 0x1d0f5,
+0x1d100, 0x1d126,
+0x1d129, 0x1d166,
+0x1d16a, 0x1d17a,
+0x1d183, 0x1d184,
+0x1d18c, 0x1d1a9,
+0x1d1ae, 0x1d1e8,
+0x1d300, 0x1d356,
+0x1d360, 0x1d371,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d7cb,
+0x1d7ce, 0x1d7ff,
+0x1f000, 0x1f02b,
+0x1f030, 0x1f093,
+0x1f0a0, 0x1f0ae,
+0x1f0b1, 0x1f0bf,
+0x1f0c1, 0x1f0cf,
+0x1f0d1, 0x1f0f5,
+0x1f100, 0x1f10c,
+0x1f110, 0x1f12e,
+0x1f130, 0x1f16b,
+0x1f170, 0x1f19a,
+0x1f1e6, 0x1f1ff,
+0x1f201, 0x1f202,
+0x1f210, 0x1f23a,
+0x1f240, 0x1f248,
+0x1f250, 0x1f251,
+0x1f300, 0x1f579,
+0x1f57b, 0x1f5a3,
+0x1f5a5, 0x1f6d0,
+0x1f6e0, 0x1f6ec,
+0x1f6f0, 0x1f6f3,
+0x1f700, 0x1f773,
+0x1f780, 0x1f7d4,
+0x1f800, 0x1f80b,
+0x1f810, 0x1f847,
+0x1f850, 0x1f859,
+0x1f860, 0x1f887,
+0x1f890, 0x1f8ad,
+0x1f910, 0x1f918,
+0x1f980, 0x1f984,
+0x1f9c0, 0x1f9c0,
+0xe0001, 0xe0001,
+0xe0020, 0xe007f,
+}; /* END of CR_Common */
+
+/* PROPERTY: 'Coptic': Script */
+static const OnigCodePoint
+CR_Coptic[] = { 3,
+0x03e2, 0x03ef,
+0x2c80, 0x2cf3,
+0x2cf9, 0x2cff,
+}; /* END of CR_Coptic */
+
+/* PROPERTY: 'Cs': General Category */
+static const OnigCodePoint
+CR_Cs[] = { 1,
+0xd800, 0xdfff,
+}; /* END of CR_Cs */
+
+/* PROPERTY: 'Cuneiform': Script */
+static const OnigCodePoint
+CR_Cuneiform[] = { 4,
+0x12000, 0x12399,
+0x12400, 0x1246e,
+0x12470, 0x12474,
+0x12480, 0x12543,
+}; /* END of CR_Cuneiform */
+
+/* PROPERTY: 'Cypriot': Script */
+static const OnigCodePoint
+CR_Cypriot[] = { 6,
+0x10800, 0x10805,
+0x10808, 0x10808,
+0x1080a, 0x10835,
+0x10837, 0x10838,
+0x1083c, 0x1083c,
+0x1083f, 0x1083f,
+}; /* END of CR_Cypriot */
+
+/* PROPERTY: 'Cyrillic': Script */
+static const OnigCodePoint
+CR_Cyrillic[] = { 7,
+0x0400, 0x0484,
+0x0487, 0x052f,
+0x1d2b, 0x1d2b,
+0x1d78, 0x1d78,
+0x2de0, 0x2dff,
+0xa640, 0xa69f,
+0xfe2e, 0xfe2f,
+}; /* END of CR_Cyrillic */
+
+/* PROPERTY: 'Dash': Binary Property */
+static const OnigCodePoint
+CR_Dash[] = { 21,
+0x002d, 0x002d,
+0x058a, 0x058a,
+0x05be, 0x05be,
+0x1400, 0x1400,
+0x1806, 0x1806,
+0x2010, 0x2015,
+0x2053, 0x2053,
+0x207b, 0x207b,
+0x208b, 0x208b,
+0x2212, 0x2212,
+0x2e17, 0x2e17,
+0x2e1a, 0x2e1a,
+0x2e3a, 0x2e3b,
+0x2e40, 0x2e40,
+0x301c, 0x301c,
+0x3030, 0x3030,
+0x30a0, 0x30a0,
+0xfe31, 0xfe32,
+0xfe58, 0xfe58,
+0xfe63, 0xfe63,
+0xff0d, 0xff0d,
+}; /* END of CR_Dash */
+
+/* PROPERTY: 'Default_Ignorable_Code_Point': Derived Property */
+static const OnigCodePoint
+CR_Default_Ignorable_Code_Point[] = { 17,
+0x00ad, 0x00ad,
+0x034f, 0x034f,
+0x061c, 0x061c,
+0x115f, 0x1160,
+0x17b4, 0x17b5,
+0x180b, 0x180e,
+0x200b, 0x200f,
+0x202a, 0x202e,
+0x2060, 0x206f,
+0x3164, 0x3164,
+0xfe00, 0xfe0f,
+0xfeff, 0xfeff,
+0xffa0, 0xffa0,
+0xfff0, 0xfff8,
+0x1bca0, 0x1bca3,
+0x1d173, 0x1d17a,
+0xe0000, 0xe0fff,
+}; /* END of CR_Default_Ignorable_Code_Point */
+
+/* PROPERTY: 'Deprecated': Binary Property */
+static const OnigCodePoint
+CR_Deprecated[] = { 9,
+0x0149, 0x0149,
+0x0673, 0x0673,
+0x0f77, 0x0f77,
+0x0f79, 0x0f79,
+0x17a3, 0x17a4,
+0x206a, 0x206f,
+0x2329, 0x232a,
+0xe0001, 0xe0001,
+0xe007f, 0xe007f,
+}; /* END of CR_Deprecated */
+
+/* PROPERTY: 'Deseret': Script */
+static const OnigCodePoint
+CR_Deseret[] = { 1,
+0x10400, 0x1044f,
+}; /* END of CR_Deseret */
+
+/* PROPERTY: 'Devanagari': Script */
+static const OnigCodePoint
+CR_Devanagari[] = { 4,
+0x0900, 0x0950,
+0x0953, 0x0963,
+0x0966, 0x097f,
+0xa8e0, 0xa8fd,
+}; /* END of CR_Devanagari */
+
+/* PROPERTY: 'Diacritic': Binary Property */
+static const OnigCodePoint
+CR_Diacritic[] = { 147,
+0x005e, 0x005e,
+0x0060, 0x0060,
+0x00a8, 0x00a8,
+0x00af, 0x00af,
+0x00b4, 0x00b4,
+0x00b7, 0x00b8,
+0x02b0, 0x034e,
+0x0350, 0x0357,
+0x035d, 0x0362,
+0x0374, 0x0375,
+0x037a, 0x037a,
+0x0384, 0x0385,
+0x0483, 0x0487,
+0x0559, 0x0559,
+0x0591, 0x05a1,
+0x05a3, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c4,
+0x064b, 0x0652,
+0x0657, 0x0658,
+0x06df, 0x06e0,
+0x06e5, 0x06e6,
+0x06ea, 0x06ec,
+0x0730, 0x074a,
+0x07a6, 0x07b0,
+0x07eb, 0x07f5,
+0x0818, 0x0819,
+0x08e3, 0x08fe,
+0x093c, 0x093c,
+0x094d, 0x094d,
+0x0951, 0x0954,
+0x0971, 0x0971,
+0x09bc, 0x09bc,
+0x09cd, 0x09cd,
+0x0a3c, 0x0a3c,
+0x0a4d, 0x0a4d,
+0x0abc, 0x0abc,
+0x0acd, 0x0acd,
+0x0b3c, 0x0b3c,
+0x0b4d, 0x0b4d,
+0x0bcd, 0x0bcd,
+0x0c4d, 0x0c4d,
+0x0cbc, 0x0cbc,
+0x0ccd, 0x0ccd,
+0x0d4d, 0x0d4d,
+0x0dca, 0x0dca,
+0x0e47, 0x0e4c,
+0x0e4e, 0x0e4e,
+0x0ec8, 0x0ecc,
+0x0f18, 0x0f19,
+0x0f35, 0x0f35,
+0x0f37, 0x0f37,
+0x0f39, 0x0f39,
+0x0f3e, 0x0f3f,
+0x0f82, 0x0f84,
+0x0f86, 0x0f87,
+0x0fc6, 0x0fc6,
+0x1037, 0x1037,
+0x1039, 0x103a,
+0x1087, 0x108d,
+0x108f, 0x108f,
+0x109a, 0x109b,
+0x17c9, 0x17d3,
+0x17dd, 0x17dd,
+0x1939, 0x193b,
+0x1a75, 0x1a7c,
+0x1a7f, 0x1a7f,
+0x1ab0, 0x1abd,
+0x1b34, 0x1b34,
+0x1b44, 0x1b44,
+0x1b6b, 0x1b73,
+0x1baa, 0x1bab,
+0x1c36, 0x1c37,
+0x1c78, 0x1c7d,
+0x1cd0, 0x1ce8,
+0x1ced, 0x1ced,
+0x1cf4, 0x1cf4,
+0x1cf8, 0x1cf9,
+0x1d2c, 0x1d6a,
+0x1dc4, 0x1dcf,
+0x1df5, 0x1df5,
+0x1dfd, 0x1dff,
+0x1fbd, 0x1fbd,
+0x1fbf, 0x1fc1,
+0x1fcd, 0x1fcf,
+0x1fdd, 0x1fdf,
+0x1fed, 0x1fef,
+0x1ffd, 0x1ffe,
+0x2cef, 0x2cf1,
+0x2e2f, 0x2e2f,
+0x302a, 0x302f,
+0x3099, 0x309c,
+0x30fc, 0x30fc,
+0xa66f, 0xa66f,
+0xa67c, 0xa67d,
+0xa67f, 0xa67f,
+0xa69c, 0xa69d,
+0xa6f0, 0xa6f1,
+0xa717, 0xa721,
+0xa788, 0xa788,
+0xa7f8, 0xa7f9,
+0xa8c4, 0xa8c4,
+0xa8e0, 0xa8f1,
+0xa92b, 0xa92e,
+0xa953, 0xa953,
+0xa9b3, 0xa9b3,
+0xa9c0, 0xa9c0,
+0xa9e5, 0xa9e5,
+0xaa7b, 0xaa7d,
+0xaabf, 0xaac2,
+0xaaf6, 0xaaf6,
+0xab5b, 0xab5f,
+0xabec, 0xabed,
+0xfb1e, 0xfb1e,
+0xfe20, 0xfe2f,
+0xff3e, 0xff3e,
+0xff40, 0xff40,
+0xff70, 0xff70,
+0xff9e, 0xff9f,
+0xffe3, 0xffe3,
+0x102e0, 0x102e0,
+0x10ae5, 0x10ae6,
+0x110b9, 0x110ba,
+0x11133, 0x11134,
+0x11173, 0x11173,
+0x111c0, 0x111c0,
+0x111ca, 0x111cc,
+0x11235, 0x11236,
+0x112e9, 0x112ea,
+0x1133c, 0x1133c,
+0x1134d, 0x1134d,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+0x114c2, 0x114c3,
+0x115bf, 0x115c0,
+0x1163f, 0x1163f,
+0x116b6, 0x116b7,
+0x1172b, 0x1172b,
+0x16af0, 0x16af4,
+0x16f8f, 0x16f9f,
+0x1d167, 0x1d169,
+0x1d16d, 0x1d172,
+0x1d17b, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0x1e8d0, 0x1e8d6,
+}; /* END of CR_Diacritic */
 
-/* PROPERTY: 'Changes_When_Casemapped': Derived Property */
+/* PROPERTY: 'Duployan': Script */
 static const OnigCodePoint
-CR_Changes_When_Casemapped[] = { 113,
-0x0041, 0x005a,
-0x0061, 0x007a,
-0x00b5, 0x00b5,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x0137,
-0x0139, 0x018c,
-0x018e, 0x019a,
-0x019c, 0x01a9,
-0x01ac, 0x01b9,
-0x01bc, 0x01bd,
-0x01bf, 0x01bf,
-0x01c4, 0x0220,
-0x0222, 0x0233,
-0x023a, 0x0254,
-0x0256, 0x0257,
-0x0259, 0x0259,
-0x025b, 0x025c,
-0x0260, 0x0261,
-0x0263, 0x0263,
-0x0265, 0x0266,
-0x0268, 0x0269,
-0x026b, 0x026c,
-0x026f, 0x026f,
-0x0271, 0x0272,
-0x0275, 0x0275,
-0x027d, 0x027d,
-0x0280, 0x0280,
-0x0283, 0x0283,
-0x0287, 0x028c,
-0x0292, 0x0292,
-0x029d, 0x029e,
-0x0345, 0x0345,
-0x0370, 0x0373,
-0x0376, 0x0377,
-0x037b, 0x037d,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03d1,
-0x03d5, 0x03f5,
-0x03f7, 0x03fb,
-0x03fd, 0x0481,
-0x048a, 0x052f,
-0x0531, 0x0556,
-0x0561, 0x0587,
+CR_Duployan[] = { 5,
+0x1bc00, 0x1bc6a,
+0x1bc70, 0x1bc7c,
+0x1bc80, 0x1bc88,
+0x1bc90, 0x1bc99,
+0x1bc9c, 0x1bc9f,
+}; /* END of CR_Duployan */
+
+/* PROPERTY: 'Egyptian_Hieroglyphs': Script */
+static const OnigCodePoint
+CR_Egyptian_Hieroglyphs[] = { 1,
+0x13000, 0x1342e,
+}; /* END of CR_Egyptian_Hieroglyphs */
+
+/* PROPERTY: 'Elbasan': Script */
+static const OnigCodePoint
+CR_Elbasan[] = { 1,
+0x10500, 0x10527,
+}; /* END of CR_Elbasan */
+
+/* PROPERTY: 'Ethiopic': Script */
+static const OnigCodePoint
+CR_Ethiopic[] = { 32,
+0x1200, 0x1248,
+0x124a, 0x124d,
+0x1250, 0x1256,
+0x1258, 0x1258,
+0x125a, 0x125d,
+0x1260, 0x1288,
+0x128a, 0x128d,
+0x1290, 0x12b0,
+0x12b2, 0x12b5,
+0x12b8, 0x12be,
+0x12c0, 0x12c0,
+0x12c2, 0x12c5,
+0x12c8, 0x12d6,
+0x12d8, 0x1310,
+0x1312, 0x1315,
+0x1318, 0x135a,
+0x135d, 0x137c,
+0x1380, 0x1399,
+0x2d80, 0x2d96,
+0x2da0, 0x2da6,
+0x2da8, 0x2dae,
+0x2db0, 0x2db6,
+0x2db8, 0x2dbe,
+0x2dc0, 0x2dc6,
+0x2dc8, 0x2dce,
+0x2dd0, 0x2dd6,
+0x2dd8, 0x2dde,
+0xab01, 0xab06,
+0xab09, 0xab0e,
+0xab11, 0xab16,
+0xab20, 0xab26,
+0xab28, 0xab2e,
+}; /* END of CR_Ethiopic */
+
+/* PROPERTY: 'Extender': Binary Property */
+static const OnigCodePoint
+CR_Extender[] = { 26,
+0x00b7, 0x00b7,
+0x02d0, 0x02d1,
+0x0640, 0x0640,
+0x07fa, 0x07fa,
+0x0e46, 0x0e46,
+0x0ec6, 0x0ec6,
+0x180a, 0x180a,
+0x1843, 0x1843,
+0x1aa7, 0x1aa7,
+0x1c36, 0x1c36,
+0x1c7b, 0x1c7b,
+0x3005, 0x3005,
+0x3031, 0x3035,
+0x309d, 0x309e,
+0x30fc, 0x30fe,
+0xa015, 0xa015,
+0xa60c, 0xa60c,
+0xa9cf, 0xa9cf,
+0xa9e6, 0xa9e6,
+0xaa70, 0xaa70,
+0xaadd, 0xaadd,
+0xaaf3, 0xaaf4,
+0xff70, 0xff70,
+0x1135d, 0x1135d,
+0x115c6, 0x115c8,
+0x16b42, 0x16b43,
+}; /* END of CR_Extender */
+
+/* PROPERTY: 'Georgian': Script */
+static const OnigCodePoint
+CR_Georgian[] = { 8,
 0x10a0, 0x10c5,
 0x10c7, 0x10c7,
 0x10cd, 0x10cd,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0x1d79, 0x1d79,
-0x1d7d, 0x1d7d,
-0x1e00, 0x1e9b,
-0x1e9e, 0x1e9e,
-0x1ea0, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fe0, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffc,
-0x2126, 0x2126,
-0x212a, 0x212b,
-0x2132, 0x2132,
-0x214e, 0x214e,
-0x2160, 0x217f,
-0x2183, 0x2184,
-0x24b6, 0x24e9,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-0x2c60, 0x2c70,
-0x2c72, 0x2c73,
-0x2c75, 0x2c76,
-0x2c7e, 0x2ce3,
-0x2ceb, 0x2cee,
-0x2cf2, 0x2cf3,
+0x10d0, 0x10fa,
+0x10fc, 0x10ff,
 0x2d00, 0x2d25,
 0x2d27, 0x2d27,
 0x2d2d, 0x2d2d,
-0xa640, 0xa66d,
-0xa680, 0xa69b,
-0xa722, 0xa72f,
-0xa732, 0xa76f,
-0xa779, 0xa787,
-0xa78b, 0xa78d,
-0xa790, 0xa793,
-0xa796, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xab53, 0xab53,
-0xab70, 0xabbf,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xff21, 0xff3a,
-0xff41, 0xff5a,
-0x10400, 0x1044f,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x118a0, 0x118df,
-}; /* END of CR_Changes_When_Casemapped */
+}; /* END of CR_Georgian */
 
-/* PROPERTY: 'ID_Start': Derived Property */
+/* PROPERTY: 'Glagolitic': Script */
 static const OnigCodePoint
-CR_ID_Start[] = { 555,
-0x0041, 0x005a,
-0x0061, 0x007a,
-0x00aa, 0x00aa,
-0x00b5, 0x00b5,
-0x00ba, 0x00ba,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x02c1,
-0x02c6, 0x02d1,
-0x02e0, 0x02e4,
-0x02ec, 0x02ec,
-0x02ee, 0x02ee,
-0x0370, 0x0374,
-0x0376, 0x0377,
-0x037a, 0x037d,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
+CR_Glagolitic[] = { 2,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+}; /* END of CR_Glagolitic */
+
+/* PROPERTY: 'Gothic': Script */
+static const OnigCodePoint
+CR_Gothic[] = { 1,
+0x10330, 0x1034a,
+}; /* END of CR_Gothic */
+
+/* PROPERTY: 'Grantha': Script */
+static const OnigCodePoint
+CR_Grantha[] = { 15,
+0x11300, 0x11303,
+0x11305, 0x1130c,
+0x1130f, 0x11310,
+0x11313, 0x11328,
+0x1132a, 0x11330,
+0x11332, 0x11333,
+0x11335, 0x11339,
+0x1133c, 0x11344,
+0x11347, 0x11348,
+0x1134b, 0x1134d,
+0x11350, 0x11350,
+0x11357, 0x11357,
+0x1135d, 0x11363,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+}; /* END of CR_Grantha */
+
+/* PROPERTY: 'Grapheme_Base': Derived Property */
+static const OnigCodePoint
+CR_Grapheme_Base[] = { 743,
+0x0020, 0x007e,
+0x00a0, 0x00ac,
+0x00ae, 0x02ff,
+0x0370, 0x0377,
+0x037a, 0x037f,
+0x0384, 0x038a,
 0x038c, 0x038c,
 0x038e, 0x03a1,
-0x03a3, 0x03f5,
-0x03f7, 0x0481,
+0x03a3, 0x0482,
 0x048a, 0x052f,
 0x0531, 0x0556,
-0x0559, 0x0559,
+0x0559, 0x055f,
 0x0561, 0x0587,
+0x0589, 0x058a,
+0x058d, 0x058f,
+0x05be, 0x05be,
+0x05c0, 0x05c0,
+0x05c3, 0x05c3,
+0x05c6, 0x05c6,
 0x05d0, 0x05ea,
-0x05f0, 0x05f2,
-0x0620, 0x064a,
-0x066e, 0x066f,
-0x0671, 0x06d3,
-0x06d5, 0x06d5,
+0x05f0, 0x05f4,
+0x0606, 0x060f,
+0x061b, 0x061b,
+0x061e, 0x064a,
+0x0660, 0x066f,
+0x0671, 0x06d5,
+0x06de, 0x06de,
 0x06e5, 0x06e6,
-0x06ee, 0x06ef,
-0x06fa, 0x06fc,
-0x06ff, 0x06ff,
+0x06e9, 0x06e9,
+0x06ee, 0x070d,
 0x0710, 0x0710,
 0x0712, 0x072f,
 0x074d, 0x07a5,
 0x07b1, 0x07b1,
-0x07ca, 0x07ea,
-0x07f4, 0x07f5,
-0x07fa, 0x07fa,
+0x07c0, 0x07ea,
+0x07f4, 0x07fa,
 0x0800, 0x0815,
 0x081a, 0x081a,
 0x0824, 0x0824,
 0x0828, 0x0828,
+0x0830, 0x083e,
 0x0840, 0x0858,
+0x085e, 0x085e,
 0x08a0, 0x08b4,
-0x0904, 0x0939,
-0x093d, 0x093d,
-0x0950, 0x0950,
+0x0903, 0x0939,
+0x093b, 0x093b,
+0x093d, 0x0940,
+0x0949, 0x094c,
+0x094e, 0x0950,
 0x0958, 0x0961,
-0x0971, 0x0980,
+0x0964, 0x0980,
+0x0982, 0x0983,
 0x0985, 0x098c,
 0x098f, 0x0990,
 0x0993, 0x09a8,
@@ -14188,10 +10557,14 @@ CR_ID_Start[] = { 555,
 0x09b2, 0x09b2,
 0x09b6, 0x09b9,
 0x09bd, 0x09bd,
+0x09bf, 0x09c0,
+0x09c7, 0x09c8,
+0x09cb, 0x09cc,
 0x09ce, 0x09ce,
 0x09dc, 0x09dd,
 0x09df, 0x09e1,
-0x09f0, 0x09f1,
+0x09e6, 0x09fb,
+0x0a03, 0x0a03,
 0x0a05, 0x0a0a,
 0x0a0f, 0x0a10,
 0x0a13, 0x0a28,
@@ -14199,19 +10572,26 @@ CR_ID_Start[] = { 555,
 0x0a32, 0x0a33,
 0x0a35, 0x0a36,
 0x0a38, 0x0a39,
+0x0a3e, 0x0a40,
 0x0a59, 0x0a5c,
 0x0a5e, 0x0a5e,
+0x0a66, 0x0a6f,
 0x0a72, 0x0a74,
+0x0a83, 0x0a83,
 0x0a85, 0x0a8d,
 0x0a8f, 0x0a91,
 0x0a93, 0x0aa8,
 0x0aaa, 0x0ab0,
 0x0ab2, 0x0ab3,
 0x0ab5, 0x0ab9,
-0x0abd, 0x0abd,
+0x0abd, 0x0ac0,
+0x0ac9, 0x0ac9,
+0x0acb, 0x0acc,
 0x0ad0, 0x0ad0,
 0x0ae0, 0x0ae1,
+0x0ae6, 0x0af1,
 0x0af9, 0x0af9,
+0x0b02, 0x0b03,
 0x0b05, 0x0b0c,
 0x0b0f, 0x0b10,
 0x0b13, 0x0b28,
@@ -14219,9 +10599,12 @@ CR_ID_Start[] = { 555,
 0x0b32, 0x0b33,
 0x0b35, 0x0b39,
 0x0b3d, 0x0b3d,
+0x0b40, 0x0b40,
+0x0b47, 0x0b48,
+0x0b4b, 0x0b4c,
 0x0b5c, 0x0b5d,
 0x0b5f, 0x0b61,
-0x0b71, 0x0b71,
+0x0b66, 0x0b77,
 0x0b83, 0x0b83,
 0x0b85, 0x0b8a,
 0x0b8e, 0x0b90,
@@ -14232,38 +10615,64 @@ CR_ID_Start[] = { 555,
 0x0ba3, 0x0ba4,
 0x0ba8, 0x0baa,
 0x0bae, 0x0bb9,
+0x0bbf, 0x0bbf,
+0x0bc1, 0x0bc2,
+0x0bc6, 0x0bc8,
+0x0bca, 0x0bcc,
 0x0bd0, 0x0bd0,
+0x0be6, 0x0bfa,
+0x0c01, 0x0c03,
 0x0c05, 0x0c0c,
 0x0c0e, 0x0c10,
 0x0c12, 0x0c28,
 0x0c2a, 0x0c39,
 0x0c3d, 0x0c3d,
+0x0c41, 0x0c44,
 0x0c58, 0x0c5a,
 0x0c60, 0x0c61,
+0x0c66, 0x0c6f,
+0x0c78, 0x0c7f,
+0x0c82, 0x0c83,
 0x0c85, 0x0c8c,
 0x0c8e, 0x0c90,
 0x0c92, 0x0ca8,
 0x0caa, 0x0cb3,
 0x0cb5, 0x0cb9,
-0x0cbd, 0x0cbd,
+0x0cbd, 0x0cbe,
+0x0cc0, 0x0cc1,
+0x0cc3, 0x0cc4,
+0x0cc7, 0x0cc8,
+0x0cca, 0x0ccb,
 0x0cde, 0x0cde,
 0x0ce0, 0x0ce1,
+0x0ce6, 0x0cef,
 0x0cf1, 0x0cf2,
+0x0d02, 0x0d03,
 0x0d05, 0x0d0c,
 0x0d0e, 0x0d10,
 0x0d12, 0x0d3a,
 0x0d3d, 0x0d3d,
+0x0d3f, 0x0d40,
+0x0d46, 0x0d48,
+0x0d4a, 0x0d4c,
 0x0d4e, 0x0d4e,
 0x0d5f, 0x0d61,
-0x0d7a, 0x0d7f,
+0x0d66, 0x0d75,
+0x0d79, 0x0d7f,
+0x0d82, 0x0d83,
 0x0d85, 0x0d96,
 0x0d9a, 0x0db1,
 0x0db3, 0x0dbb,
 0x0dbd, 0x0dbd,
 0x0dc0, 0x0dc6,
+0x0dd0, 0x0dd1,
+0x0dd8, 0x0dde,
+0x0de6, 0x0def,
+0x0df2, 0x0df4,
 0x0e01, 0x0e30,
 0x0e32, 0x0e33,
-0x0e40, 0x0e46,
+0x0e3f, 0x0e46,
+0x0e4f, 0x0e5b,
 0x0e81, 0x0e82,
 0x0e84, 0x0e84,
 0x0e87, 0x0e88,
@@ -14280,25 +10689,35 @@ CR_ID_Start[] = { 555,
 0x0ebd, 0x0ebd,
 0x0ec0, 0x0ec4,
 0x0ec6, 0x0ec6,
+0x0ed0, 0x0ed9,
 0x0edc, 0x0edf,
-0x0f00, 0x0f00,
-0x0f40, 0x0f47,
+0x0f00, 0x0f17,
+0x0f1a, 0x0f34,
+0x0f36, 0x0f36,
+0x0f38, 0x0f38,
+0x0f3a, 0x0f47,
 0x0f49, 0x0f6c,
+0x0f7f, 0x0f7f,
+0x0f85, 0x0f85,
 0x0f88, 0x0f8c,
-0x1000, 0x102a,
-0x103f, 0x103f,
-0x1050, 0x1055,
+0x0fbe, 0x0fc5,
+0x0fc7, 0x0fcc,
+0x0fce, 0x0fda,
+0x1000, 0x102c,
+0x1031, 0x1031,
+0x1038, 0x1038,
+0x103b, 0x103c,
+0x103f, 0x1057,
 0x105a, 0x105d,
-0x1061, 0x1061,
-0x1065, 0x1066,
-0x106e, 0x1070,
+0x1061, 0x1070,
 0x1075, 0x1081,
-0x108e, 0x108e,
-0x10a0, 0x10c5,
+0x1083, 0x1084,
+0x1087, 0x108c,
+0x108e, 0x109c,
+0x109e, 0x10c5,
 0x10c7, 0x10c7,
 0x10cd, 0x10cd,
-0x10d0, 0x10fa,
-0x10fc, 0x1248,
+0x10d0, 0x1248,
 0x124a, 0x124d,
 0x1250, 0x1256,
 0x1258, 0x1258,
@@ -14314,45 +10733,77 @@ CR_ID_Start[] = { 555,
 0x12d8, 0x1310,
 0x1312, 0x1315,
 0x1318, 0x135a,
-0x1380, 0x138f,
+0x1360, 0x137c,
+0x1380, 0x1399,
 0x13a0, 0x13f5,
 0x13f8, 0x13fd,
-0x1401, 0x166c,
-0x166f, 0x167f,
-0x1681, 0x169a,
-0x16a0, 0x16ea,
-0x16ee, 0x16f8,
+0x1400, 0x169c,
+0x16a0, 0x16f8,
 0x1700, 0x170c,
 0x170e, 0x1711,
 0x1720, 0x1731,
+0x1735, 0x1736,
 0x1740, 0x1751,
 0x1760, 0x176c,
 0x176e, 0x1770,
 0x1780, 0x17b3,
-0x17d7, 0x17d7,
-0x17dc, 0x17dc,
+0x17b6, 0x17b6,
+0x17be, 0x17c5,
+0x17c7, 0x17c8,
+0x17d4, 0x17dc,
+0x17e0, 0x17e9,
+0x17f0, 0x17f9,
+0x1800, 0x180a,
+0x1810, 0x1819,
 0x1820, 0x1877,
 0x1880, 0x18a8,
 0x18aa, 0x18aa,
 0x18b0, 0x18f5,
 0x1900, 0x191e,
-0x1950, 0x196d,
+0x1923, 0x1926,
+0x1929, 0x192b,
+0x1930, 0x1931,
+0x1933, 0x1938,
+0x1940, 0x1940,
+0x1944, 0x196d,
 0x1970, 0x1974,
 0x1980, 0x19ab,
 0x19b0, 0x19c9,
-0x1a00, 0x1a16,
-0x1a20, 0x1a54,
-0x1aa7, 0x1aa7,
-0x1b05, 0x1b33,
-0x1b45, 0x1b4b,
-0x1b83, 0x1ba0,
-0x1bae, 0x1baf,
-0x1bba, 0x1be5,
-0x1c00, 0x1c23,
-0x1c4d, 0x1c4f,
-0x1c5a, 0x1c7d,
+0x19d0, 0x19da,
+0x19de, 0x1a16,
+0x1a19, 0x1a1a,
+0x1a1e, 0x1a55,
+0x1a57, 0x1a57,
+0x1a61, 0x1a61,
+0x1a63, 0x1a64,
+0x1a6d, 0x1a72,
+0x1a80, 0x1a89,
+0x1a90, 0x1a99,
+0x1aa0, 0x1aad,
+0x1b04, 0x1b33,
+0x1b35, 0x1b35,
+0x1b3b, 0x1b3b,
+0x1b3d, 0x1b41,
+0x1b43, 0x1b4b,
+0x1b50, 0x1b6a,
+0x1b74, 0x1b7c,
+0x1b82, 0x1ba1,
+0x1ba6, 0x1ba7,
+0x1baa, 0x1baa,
+0x1bae, 0x1be5,
+0x1be7, 0x1be7,
+0x1bea, 0x1bec,
+0x1bee, 0x1bee,
+0x1bf2, 0x1bf3,
+0x1bfc, 0x1c2b,
+0x1c34, 0x1c35,
+0x1c3b, 0x1c49,
+0x1c4d, 0x1c7f,
+0x1cc0, 0x1cc7,
+0x1cd3, 0x1cd3,
+0x1ce1, 0x1ce1,
 0x1ce9, 0x1cec,
-0x1cee, 0x1cf1,
+0x1cee, 0x1cf3,
 0x1cf5, 0x1cf6,
 0x1d00, 0x1dbf,
 0x1e00, 0x1f15,
@@ -14365,41 +10816,38 @@ CR_ID_Start[] = { 555,
 0x1f5d, 0x1f5d,
 0x1f5f, 0x1f7d,
 0x1f80, 0x1fb4,
-0x1fb6, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fcc,
-0x1fd0, 0x1fd3,
+0x1fb6, 0x1fc4,
+0x1fc6, 0x1fd3,
 0x1fd6, 0x1fdb,
-0x1fe0, 0x1fec,
+0x1fdd, 0x1fef,
 0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffc,
-0x2071, 0x2071,
-0x207f, 0x207f,
+0x1ff6, 0x1ffe,
+0x2000, 0x200a,
+0x2010, 0x2027,
+0x202f, 0x205f,
+0x2070, 0x2071,
+0x2074, 0x208e,
 0x2090, 0x209c,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2118, 0x211d,
-0x2124, 0x2124,
-0x2126, 0x2126,
-0x2128, 0x2128,
-0x212a, 0x2139,
-0x213c, 0x213f,
-0x2145, 0x2149,
-0x214e, 0x214e,
-0x2160, 0x2188,
+0x20a0, 0x20be,
+0x2100, 0x218b,
+0x2190, 0x23fa,
+0x2400, 0x2426,
+0x2440, 0x244a,
+0x2460, 0x2b73,
+0x2b76, 0x2b95,
+0x2b98, 0x2bb9,
+0x2bbd, 0x2bc8,
+0x2bca, 0x2bd1,
+0x2bec, 0x2bef,
 0x2c00, 0x2c2e,
 0x2c30, 0x2c5e,
-0x2c60, 0x2ce4,
-0x2ceb, 0x2cee,
+0x2c60, 0x2cee,
 0x2cf2, 0x2cf3,
-0x2d00, 0x2d25,
+0x2cf9, 0x2d25,
 0x2d27, 0x2d27,
 0x2d2d, 0x2d2d,
 0x2d30, 0x2d67,
-0x2d6f, 0x2d6f,
+0x2d6f, 0x2d70,
 0x2d80, 0x2d96,
 0x2da0, 0x2da6,
 0x2da8, 0x2dae,
@@ -14409,71 +10857,80 @@ CR_ID_Start[] = { 555,
 0x2dc8, 0x2dce,
 0x2dd0, 0x2dd6,
 0x2dd8, 0x2dde,
-0x3005, 0x3007,
-0x3021, 0x3029,
-0x3031, 0x3035,
-0x3038, 0x303c,
+0x2e00, 0x2e42,
+0x2e80, 0x2e99,
+0x2e9b, 0x2ef3,
+0x2f00, 0x2fd5,
+0x2ff0, 0x2ffb,
+0x3000, 0x3029,
+0x3030, 0x303f,
 0x3041, 0x3096,
-0x309b, 0x309f,
-0x30a1, 0x30fa,
-0x30fc, 0x30ff,
+0x309b, 0x30ff,
 0x3105, 0x312d,
 0x3131, 0x318e,
-0x31a0, 0x31ba,
-0x31f0, 0x31ff,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
+0x3190, 0x31ba,
+0x31c0, 0x31e3,
+0x31f0, 0x321e,
+0x3220, 0x32fe,
+0x3300, 0x4db5,
+0x4dc0, 0x9fd5,
 0xa000, 0xa48c,
-0xa4d0, 0xa4fd,
-0xa500, 0xa60c,
-0xa610, 0xa61f,
-0xa62a, 0xa62b,
+0xa490, 0xa4c6,
+0xa4d0, 0xa62b,
 0xa640, 0xa66e,
-0xa67f, 0xa69d,
+0xa673, 0xa673,
+0xa67e, 0xa69d,
 0xa6a0, 0xa6ef,
-0xa717, 0xa71f,
-0xa722, 0xa788,
-0xa78b, 0xa7ad,
+0xa6f2, 0xa6f7,
+0xa700, 0xa7ad,
 0xa7b0, 0xa7b7,
 0xa7f7, 0xa801,
 0xa803, 0xa805,
 0xa807, 0xa80a,
-0xa80c, 0xa822,
-0xa840, 0xa873,
-0xa882, 0xa8b3,
-0xa8f2, 0xa8f7,
-0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
-0xa90a, 0xa925,
-0xa930, 0xa946,
-0xa960, 0xa97c,
-0xa984, 0xa9b2,
-0xa9cf, 0xa9cf,
-0xa9e0, 0xa9e4,
-0xa9e6, 0xa9ef,
-0xa9fa, 0xa9fe,
+0xa80c, 0xa824,
+0xa827, 0xa82b,
+0xa830, 0xa839,
+0xa840, 0xa877,
+0xa880, 0xa8c3,
+0xa8ce, 0xa8d9,
+0xa8f2, 0xa8fd,
+0xa900, 0xa925,
+0xa92e, 0xa946,
+0xa952, 0xa953,
+0xa95f, 0xa97c,
+0xa983, 0xa9b2,
+0xa9b4, 0xa9b5,
+0xa9ba, 0xa9bb,
+0xa9bd, 0xa9cd,
+0xa9cf, 0xa9d9,
+0xa9de, 0xa9e4,
+0xa9e6, 0xa9fe,
 0xaa00, 0xaa28,
+0xaa2f, 0xaa30,
+0xaa33, 0xaa34,
 0xaa40, 0xaa42,
 0xaa44, 0xaa4b,
-0xaa60, 0xaa76,
-0xaa7a, 0xaa7a,
-0xaa7e, 0xaaaf,
+0xaa4d, 0xaa4d,
+0xaa50, 0xaa59,
+0xaa5c, 0xaa7b,
+0xaa7d, 0xaaaf,
 0xaab1, 0xaab1,
 0xaab5, 0xaab6,
 0xaab9, 0xaabd,
 0xaac0, 0xaac0,
 0xaac2, 0xaac2,
-0xaadb, 0xaadd,
-0xaae0, 0xaaea,
-0xaaf2, 0xaaf4,
+0xaadb, 0xaaeb,
+0xaaee, 0xaaf5,
 0xab01, 0xab06,
 0xab09, 0xab0e,
 0xab11, 0xab16,
 0xab20, 0xab26,
 0xab28, 0xab2e,
-0xab30, 0xab5a,
-0xab5c, 0xab65,
-0xab70, 0xabe2,
+0xab30, 0xab65,
+0xab70, 0xabe4,
+0xabe6, 0xabe7,
+0xabe9, 0xabec,
+0xabf0, 0xabf9,
 0xac00, 0xd7a3,
 0xd7b0, 0xd7c6,
 0xd7cb, 0xd7fb,
@@ -14482,26 +10939,31 @@ CR_ID_Start[] = { 555,
 0xfb00, 0xfb06,
 0xfb13, 0xfb17,
 0xfb1d, 0xfb1d,
-0xfb1f, 0xfb28,
-0xfb2a, 0xfb36,
+0xfb1f, 0xfb36,
 0xfb38, 0xfb3c,
 0xfb3e, 0xfb3e,
 0xfb40, 0xfb41,
 0xfb43, 0xfb44,
-0xfb46, 0xfbb1,
-0xfbd3, 0xfd3d,
+0xfb46, 0xfbc1,
+0xfbd3, 0xfd3f,
 0xfd50, 0xfd8f,
 0xfd92, 0xfdc7,
-0xfdf0, 0xfdfb,
+0xfdf0, 0xfdfd,
+0xfe10, 0xfe19,
+0xfe30, 0xfe52,
+0xfe54, 0xfe66,
+0xfe68, 0xfe6b,
 0xfe70, 0xfe74,
 0xfe76, 0xfefc,
-0xff21, 0xff3a,
-0xff41, 0xff5a,
-0xff66, 0xffbe,
+0xff01, 0xff9d,
+0xffa0, 0xffbe,
 0xffc2, 0xffc7,
 0xffca, 0xffcf,
 0xffd2, 0xffd7,
 0xffda, 0xffdc,
+0xffe0, 0xffe6,
+0xffe8, 0xffee,
+0xfffc, 0xfffd,
 0x10000, 0x1000b,
 0x1000d, 0x10026,
 0x10028, 0x1003a,
@@ -14509,19 +10971,26 @@ CR_ID_Start[] = { 555,
 0x1003f, 0x1004d,
 0x10050, 0x1005d,
 0x10080, 0x100fa,
-0x10140, 0x10174,
+0x10100, 0x10102,
+0x10107, 0x10133,
+0x10137, 0x1018c,
+0x10190, 0x1019b,
+0x101a0, 0x101a0,
+0x101d0, 0x101fc,
 0x10280, 0x1029c,
 0x102a0, 0x102d0,
-0x10300, 0x1031f,
+0x102e1, 0x102fb,
+0x10300, 0x10323,
 0x10330, 0x1034a,
 0x10350, 0x10375,
 0x10380, 0x1039d,
-0x103a0, 0x103c3,
-0x103c8, 0x103cf,
-0x103d1, 0x103d5,
+0x1039f, 0x103c3,
+0x103c8, 0x103d5,
 0x10400, 0x1049d,
+0x104a0, 0x104a9,
 0x10500, 0x10527,
 0x10530, 0x10563,
+0x1056f, 0x1056f,
 0x10600, 0x10736,
 0x10740, 0x10755,
 0x10760, 0x10767,
@@ -14531,47 +11000,69 @@ CR_ID_Start[] = { 555,
 0x10837, 0x10838,
 0x1083c, 0x1083c,
 0x1083f, 0x10855,
-0x10860, 0x10876,
-0x10880, 0x1089e,
+0x10857, 0x1089e,
+0x108a7, 0x108af,
 0x108e0, 0x108f2,
 0x108f4, 0x108f5,
-0x10900, 0x10915,
-0x10920, 0x10939,
+0x108fb, 0x1091b,
+0x1091f, 0x10939,
+0x1093f, 0x1093f,
 0x10980, 0x109b7,
-0x109be, 0x109bf,
-0x10a00, 0x10a00,
+0x109bc, 0x109cf,
+0x109d2, 0x10a00,
 0x10a10, 0x10a13,
 0x10a15, 0x10a17,
 0x10a19, 0x10a33,
-0x10a60, 0x10a7c,
-0x10a80, 0x10a9c,
-0x10ac0, 0x10ac7,
-0x10ac9, 0x10ae4,
+0x10a40, 0x10a47,
+0x10a50, 0x10a58,
+0x10a60, 0x10a9f,
+0x10ac0, 0x10ae4,
+0x10aeb, 0x10af6,
 0x10b00, 0x10b35,
-0x10b40, 0x10b55,
-0x10b60, 0x10b72,
-0x10b80, 0x10b91,
+0x10b39, 0x10b55,
+0x10b58, 0x10b72,
+0x10b78, 0x10b91,
+0x10b99, 0x10b9c,
+0x10ba9, 0x10baf,
 0x10c00, 0x10c48,
 0x10c80, 0x10cb2,
 0x10cc0, 0x10cf2,
-0x11003, 0x11037,
-0x11083, 0x110af,
+0x10cfa, 0x10cff,
+0x10e60, 0x10e7e,
+0x11000, 0x11000,
+0x11002, 0x11037,
+0x11047, 0x1104d,
+0x11052, 0x1106f,
+0x11082, 0x110b2,
+0x110b7, 0x110b8,
+0x110bb, 0x110bc,
+0x110be, 0x110c1,
 0x110d0, 0x110e8,
+0x110f0, 0x110f9,
 0x11103, 0x11126,
+0x1112c, 0x1112c,
+0x11136, 0x11143,
 0x11150, 0x11172,
-0x11176, 0x11176,
-0x11183, 0x111b2,
-0x111c1, 0x111c4,
-0x111da, 0x111da,
-0x111dc, 0x111dc,
+0x11174, 0x11176,
+0x11182, 0x111b5,
+0x111bf, 0x111c9,
+0x111cd, 0x111cd,
+0x111d0, 0x111df,
+0x111e1, 0x111f4,
 0x11200, 0x11211,
-0x11213, 0x1122b,
+0x11213, 0x1122e,
+0x11232, 0x11233,
+0x11235, 0x11235,
+0x11238, 0x1123d,
 0x11280, 0x11286,
 0x11288, 0x11288,
 0x1128a, 0x1128d,
 0x1128f, 0x1129d,
-0x1129f, 0x112a8,
+0x1129f, 0x112a9,
 0x112b0, 0x112de,
+0x112e0, 0x112e2,
+0x112f0, 0x112f9,
+0x11302, 0x11303,
 0x11305, 0x1130c,
 0x1130f, 0x11310,
 0x11313, 0x11328,
@@ -14579,40 +11070,82 @@ CR_ID_Start[] = { 555,
 0x11332, 0x11333,
 0x11335, 0x11339,
 0x1133d, 0x1133d,
+0x1133f, 0x1133f,
+0x11341, 0x11344,
+0x11347, 0x11348,
+0x1134b, 0x1134d,
 0x11350, 0x11350,
-0x1135d, 0x11361,
+0x1135d, 0x11363,
 0x11480, 0x114af,
-0x114c4, 0x114c5,
-0x114c7, 0x114c7,
+0x114b1, 0x114b2,
+0x114b9, 0x114b9,
+0x114bb, 0x114bc,
+0x114be, 0x114be,
+0x114c1, 0x114c1,
+0x114c4, 0x114c7,
+0x114d0, 0x114d9,
 0x11580, 0x115ae,
-0x115d8, 0x115db,
-0x11600, 0x1162f,
-0x11644, 0x11644,
+0x115b0, 0x115b1,
+0x115b8, 0x115bb,
+0x115be, 0x115be,
+0x115c1, 0x115db,
+0x11600, 0x11632,
+0x1163b, 0x1163c,
+0x1163e, 0x1163e,
+0x11641, 0x11644,
+0x11650, 0x11659,
 0x11680, 0x116aa,
+0x116ac, 0x116ac,
+0x116ae, 0x116af,
+0x116b6, 0x116b6,
+0x116c0, 0x116c9,
 0x11700, 0x11719,
-0x118a0, 0x118df,
+0x11720, 0x11721,
+0x11726, 0x11726,
+0x11730, 0x1173f,
+0x118a0, 0x118f2,
 0x118ff, 0x118ff,
 0x11ac0, 0x11af8,
 0x12000, 0x12399,
 0x12400, 0x1246e,
+0x12470, 0x12474,
 0x12480, 0x12543,
 0x13000, 0x1342e,
 0x14400, 0x14646,
 0x16800, 0x16a38,
 0x16a40, 0x16a5e,
+0x16a60, 0x16a69,
+0x16a6e, 0x16a6f,
 0x16ad0, 0x16aed,
+0x16af5, 0x16af5,
 0x16b00, 0x16b2f,
-0x16b40, 0x16b43,
+0x16b37, 0x16b45,
+0x16b50, 0x16b59,
+0x16b5b, 0x16b61,
 0x16b63, 0x16b77,
 0x16b7d, 0x16b8f,
 0x16f00, 0x16f44,
-0x16f50, 0x16f50,
+0x16f50, 0x16f7e,
 0x16f93, 0x16f9f,
 0x1b000, 0x1b001,
 0x1bc00, 0x1bc6a,
 0x1bc70, 0x1bc7c,
 0x1bc80, 0x1bc88,
 0x1bc90, 0x1bc99,
+0x1bc9c, 0x1bc9c,
+0x1bc9f, 0x1bc9f,
+0x1d000, 0x1d0f5,
+0x1d100, 0x1d126,
+0x1d129, 0x1d164,
+0x1d166, 0x1d166,
+0x1d16a, 0x1d16d,
+0x1d183, 0x1d184,
+0x1d18c, 0x1d1a9,
+0x1d1ae, 0x1d1e8,
+0x1d200, 0x1d241,
+0x1d245, 0x1d245,
+0x1d300, 0x1d356,
+0x1d360, 0x1d371,
 0x1d400, 0x1d454,
 0x1d456, 0x1d49c,
 0x1d49e, 0x1d49f,
@@ -14632,18 +11165,14 @@ CR_ID_Start[] = { 555,
 0x1d546, 0x1d546,
 0x1d54a, 0x1d550,
 0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d6c0,
-0x1d6c2, 0x1d6da,
-0x1d6dc, 0x1d6fa,
-0x1d6fc, 0x1d714,
-0x1d716, 0x1d734,
-0x1d736, 0x1d74e,
-0x1d750, 0x1d76e,
-0x1d770, 0x1d788,
-0x1d78a, 0x1d7a8,
-0x1d7aa, 0x1d7c2,
-0x1d7c4, 0x1d7cb,
+0x1d6a8, 0x1d7cb,
+0x1d7ce, 0x1d9ff,
+0x1da37, 0x1da3a,
+0x1da6d, 0x1da74,
+0x1da76, 0x1da83,
+0x1da85, 0x1da8b,
 0x1e800, 0x1e8c4,
+0x1e8c7, 0x1e8cf,
 0x1ee00, 0x1ee03,
 0x1ee05, 0x1ee1f,
 0x1ee21, 0x1ee22,
@@ -14677,676 +11206,584 @@ CR_ID_Start[] = { 555,
 0x1eea1, 0x1eea3,
 0x1eea5, 0x1eea9,
 0x1eeab, 0x1eebb,
+0x1eef0, 0x1eef1,
+0x1f000, 0x1f02b,
+0x1f030, 0x1f093,
+0x1f0a0, 0x1f0ae,
+0x1f0b1, 0x1f0bf,
+0x1f0c1, 0x1f0cf,
+0x1f0d1, 0x1f0f5,
+0x1f100, 0x1f10c,
+0x1f110, 0x1f12e,
+0x1f130, 0x1f16b,
+0x1f170, 0x1f19a,
+0x1f1e6, 0x1f202,
+0x1f210, 0x1f23a,
+0x1f240, 0x1f248,
+0x1f250, 0x1f251,
+0x1f300, 0x1f579,
+0x1f57b, 0x1f5a3,
+0x1f5a5, 0x1f6d0,
+0x1f6e0, 0x1f6ec,
+0x1f6f0, 0x1f6f3,
+0x1f700, 0x1f773,
+0x1f780, 0x1f7d4,
+0x1f800, 0x1f80b,
+0x1f810, 0x1f847,
+0x1f850, 0x1f859,
+0x1f860, 0x1f887,
+0x1f890, 0x1f8ad,
+0x1f910, 0x1f918,
+0x1f980, 0x1f984,
+0x1f9c0, 0x1f9c0,
 0x20000, 0x2a6d6,
 0x2a700, 0x2b734,
 0x2b740, 0x2b81d,
 0x2b820, 0x2cea1,
 0x2f800, 0x2fa1d,
-}; /* END of CR_ID_Start */
+}; /* END of CR_Grapheme_Base */
 
-/* PROPERTY: 'ID_Continue': Derived Property */
+/* PROPERTY: 'Grapheme_Extend': Derived Property */
 static const OnigCodePoint
-CR_ID_Continue[] = { 651,
-0x0030, 0x0039,
-0x0041, 0x005a,
-0x005f, 0x005f,
-0x0061, 0x007a,
-0x00aa, 0x00aa,
-0x00b5, 0x00b5,
-0x00b7, 0x00b7,
-0x00ba, 0x00ba,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x02c1,
-0x02c6, 0x02d1,
-0x02e0, 0x02e4,
-0x02ec, 0x02ec,
-0x02ee, 0x02ee,
-0x0300, 0x0374,
-0x0376, 0x0377,
-0x037a, 0x037d,
-0x037f, 0x037f,
-0x0386, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03f5,
-0x03f7, 0x0481,
-0x0483, 0x0487,
-0x048a, 0x052f,
-0x0531, 0x0556,
-0x0559, 0x0559,
-0x0561, 0x0587,
-0x0591, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c5,
-0x05c7, 0x05c7,
-0x05d0, 0x05ea,
-0x05f0, 0x05f2,
-0x0610, 0x061a,
-0x0620, 0x0669,
-0x066e, 0x06d3,
-0x06d5, 0x06dc,
-0x06df, 0x06e8,
-0x06ea, 0x06fc,
-0x06ff, 0x06ff,
-0x0710, 0x074a,
-0x074d, 0x07b1,
-0x07c0, 0x07f5,
-0x07fa, 0x07fa,
-0x0800, 0x082d,
-0x0840, 0x085b,
-0x08a0, 0x08b4,
-0x08e3, 0x0963,
-0x0966, 0x096f,
-0x0971, 0x0983,
-0x0985, 0x098c,
-0x098f, 0x0990,
-0x0993, 0x09a8,
-0x09aa, 0x09b0,
-0x09b2, 0x09b2,
-0x09b6, 0x09b9,
-0x09bc, 0x09c4,
-0x09c7, 0x09c8,
-0x09cb, 0x09ce,
+CR_Grapheme_Extend[] = { 283,
+0x0300, 0x036f,
+0x0483, 0x0489,
+0x0591, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c5,
+0x05c7, 0x05c7,
+0x0610, 0x061a,
+0x064b, 0x065f,
+0x0670, 0x0670,
+0x06d6, 0x06dc,
+0x06df, 0x06e4,
+0x06e7, 0x06e8,
+0x06ea, 0x06ed,
+0x0711, 0x0711,
+0x0730, 0x074a,
+0x07a6, 0x07b0,
+0x07eb, 0x07f3,
+0x0816, 0x0819,
+0x081b, 0x0823,
+0x0825, 0x0827,
+0x0829, 0x082d,
+0x0859, 0x085b,
+0x08e3, 0x0902,
+0x093a, 0x093a,
+0x093c, 0x093c,
+0x0941, 0x0948,
+0x094d, 0x094d,
+0x0951, 0x0957,
+0x0962, 0x0963,
+0x0981, 0x0981,
+0x09bc, 0x09bc,
+0x09be, 0x09be,
+0x09c1, 0x09c4,
+0x09cd, 0x09cd,
 0x09d7, 0x09d7,
-0x09dc, 0x09dd,
-0x09df, 0x09e3,
-0x09e6, 0x09f1,
-0x0a01, 0x0a03,
-0x0a05, 0x0a0a,
-0x0a0f, 0x0a10,
-0x0a13, 0x0a28,
-0x0a2a, 0x0a30,
-0x0a32, 0x0a33,
-0x0a35, 0x0a36,
-0x0a38, 0x0a39,
+0x09e2, 0x09e3,
+0x0a01, 0x0a02,
 0x0a3c, 0x0a3c,
-0x0a3e, 0x0a42,
+0x0a41, 0x0a42,
 0x0a47, 0x0a48,
 0x0a4b, 0x0a4d,
 0x0a51, 0x0a51,
-0x0a59, 0x0a5c,
-0x0a5e, 0x0a5e,
-0x0a66, 0x0a75,
-0x0a81, 0x0a83,
-0x0a85, 0x0a8d,
-0x0a8f, 0x0a91,
-0x0a93, 0x0aa8,
-0x0aaa, 0x0ab0,
-0x0ab2, 0x0ab3,
-0x0ab5, 0x0ab9,
-0x0abc, 0x0ac5,
-0x0ac7, 0x0ac9,
-0x0acb, 0x0acd,
-0x0ad0, 0x0ad0,
-0x0ae0, 0x0ae3,
-0x0ae6, 0x0aef,
-0x0af9, 0x0af9,
-0x0b01, 0x0b03,
-0x0b05, 0x0b0c,
-0x0b0f, 0x0b10,
-0x0b13, 0x0b28,
-0x0b2a, 0x0b30,
-0x0b32, 0x0b33,
-0x0b35, 0x0b39,
-0x0b3c, 0x0b44,
-0x0b47, 0x0b48,
-0x0b4b, 0x0b4d,
+0x0a70, 0x0a71,
+0x0a75, 0x0a75,
+0x0a81, 0x0a82,
+0x0abc, 0x0abc,
+0x0ac1, 0x0ac5,
+0x0ac7, 0x0ac8,
+0x0acd, 0x0acd,
+0x0ae2, 0x0ae3,
+0x0b01, 0x0b01,
+0x0b3c, 0x0b3c,
+0x0b3e, 0x0b3f,
+0x0b41, 0x0b44,
+0x0b4d, 0x0b4d,
 0x0b56, 0x0b57,
-0x0b5c, 0x0b5d,
-0x0b5f, 0x0b63,
-0x0b66, 0x0b6f,
-0x0b71, 0x0b71,
-0x0b82, 0x0b83,
-0x0b85, 0x0b8a,
-0x0b8e, 0x0b90,
-0x0b92, 0x0b95,
-0x0b99, 0x0b9a,
-0x0b9c, 0x0b9c,
-0x0b9e, 0x0b9f,
-0x0ba3, 0x0ba4,
-0x0ba8, 0x0baa,
-0x0bae, 0x0bb9,
-0x0bbe, 0x0bc2,
-0x0bc6, 0x0bc8,
-0x0bca, 0x0bcd,
-0x0bd0, 0x0bd0,
+0x0b62, 0x0b63,
+0x0b82, 0x0b82,
+0x0bbe, 0x0bbe,
+0x0bc0, 0x0bc0,
+0x0bcd, 0x0bcd,
 0x0bd7, 0x0bd7,
-0x0be6, 0x0bef,
-0x0c00, 0x0c03,
-0x0c05, 0x0c0c,
-0x0c0e, 0x0c10,
-0x0c12, 0x0c28,
-0x0c2a, 0x0c39,
-0x0c3d, 0x0c44,
+0x0c00, 0x0c00,
+0x0c3e, 0x0c40,
 0x0c46, 0x0c48,
 0x0c4a, 0x0c4d,
 0x0c55, 0x0c56,
-0x0c58, 0x0c5a,
-0x0c60, 0x0c63,
-0x0c66, 0x0c6f,
-0x0c81, 0x0c83,
-0x0c85, 0x0c8c,
-0x0c8e, 0x0c90,
-0x0c92, 0x0ca8,
-0x0caa, 0x0cb3,
-0x0cb5, 0x0cb9,
-0x0cbc, 0x0cc4,
-0x0cc6, 0x0cc8,
-0x0cca, 0x0ccd,
+0x0c62, 0x0c63,
+0x0c81, 0x0c81,
+0x0cbc, 0x0cbc,
+0x0cbf, 0x0cbf,
+0x0cc2, 0x0cc2,
+0x0cc6, 0x0cc6,
+0x0ccc, 0x0ccd,
 0x0cd5, 0x0cd6,
-0x0cde, 0x0cde,
-0x0ce0, 0x0ce3,
-0x0ce6, 0x0cef,
-0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
-0x0d05, 0x0d0c,
-0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d44,
-0x0d46, 0x0d48,
-0x0d4a, 0x0d4e,
+0x0ce2, 0x0ce3,
+0x0d01, 0x0d01,
+0x0d3e, 0x0d3e,
+0x0d41, 0x0d44,
+0x0d4d, 0x0d4d,
 0x0d57, 0x0d57,
-0x0d5f, 0x0d63,
-0x0d66, 0x0d6f,
-0x0d7a, 0x0d7f,
-0x0d82, 0x0d83,
-0x0d85, 0x0d96,
-0x0d9a, 0x0db1,
-0x0db3, 0x0dbb,
-0x0dbd, 0x0dbd,
-0x0dc0, 0x0dc6,
+0x0d62, 0x0d63,
 0x0dca, 0x0dca,
-0x0dcf, 0x0dd4,
+0x0dcf, 0x0dcf,
+0x0dd2, 0x0dd4,
 0x0dd6, 0x0dd6,
-0x0dd8, 0x0ddf,
-0x0de6, 0x0def,
-0x0df2, 0x0df3,
-0x0e01, 0x0e3a,
-0x0e40, 0x0e4e,
-0x0e50, 0x0e59,
-0x0e81, 0x0e82,
-0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
-0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
-0x0ec0, 0x0ec4,
-0x0ec6, 0x0ec6,
+0x0ddf, 0x0ddf,
+0x0e31, 0x0e31,
+0x0e34, 0x0e3a,
+0x0e47, 0x0e4e,
+0x0eb1, 0x0eb1,
+0x0eb4, 0x0eb9,
+0x0ebb, 0x0ebc,
 0x0ec8, 0x0ecd,
-0x0ed0, 0x0ed9,
-0x0edc, 0x0edf,
-0x0f00, 0x0f00,
 0x0f18, 0x0f19,
-0x0f20, 0x0f29,
 0x0f35, 0x0f35,
 0x0f37, 0x0f37,
 0x0f39, 0x0f39,
-0x0f3e, 0x0f47,
-0x0f49, 0x0f6c,
-0x0f71, 0x0f84,
-0x0f86, 0x0f97,
+0x0f71, 0x0f7e,
+0x0f80, 0x0f84,
+0x0f86, 0x0f87,
+0x0f8d, 0x0f97,
 0x0f99, 0x0fbc,
 0x0fc6, 0x0fc6,
-0x1000, 0x1049,
-0x1050, 0x109d,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x10d0, 0x10fa,
-0x10fc, 0x1248,
-0x124a, 0x124d,
-0x1250, 0x1256,
-0x1258, 0x1258,
-0x125a, 0x125d,
-0x1260, 0x1288,
-0x128a, 0x128d,
-0x1290, 0x12b0,
-0x12b2, 0x12b5,
-0x12b8, 0x12be,
-0x12c0, 0x12c0,
-0x12c2, 0x12c5,
-0x12c8, 0x12d6,
-0x12d8, 0x1310,
-0x1312, 0x1315,
-0x1318, 0x135a,
-0x135d, 0x135f,
-0x1369, 0x1371,
-0x1380, 0x138f,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0x1401, 0x166c,
-0x166f, 0x167f,
-0x1681, 0x169a,
-0x16a0, 0x16ea,
-0x16ee, 0x16f8,
-0x1700, 0x170c,
-0x170e, 0x1714,
-0x1720, 0x1734,
-0x1740, 0x1753,
-0x1760, 0x176c,
-0x176e, 0x1770,
+0x102d, 0x1030,
+0x1032, 0x1037,
+0x1039, 0x103a,
+0x103d, 0x103e,
+0x1058, 0x1059,
+0x105e, 0x1060,
+0x1071, 0x1074,
+0x1082, 0x1082,
+0x1085, 0x1086,
+0x108d, 0x108d,
+0x109d, 0x109d,
+0x135d, 0x135f,
+0x1712, 0x1714,
+0x1732, 0x1734,
+0x1752, 0x1753,
 0x1772, 0x1773,
-0x1780, 0x17d3,
-0x17d7, 0x17d7,
-0x17dc, 0x17dd,
-0x17e0, 0x17e9,
+0x17b4, 0x17b5,
+0x17b7, 0x17bd,
+0x17c6, 0x17c6,
+0x17c9, 0x17d3,
+0x17dd, 0x17dd,
 0x180b, 0x180d,
-0x1810, 0x1819,
-0x1820, 0x1877,
-0x1880, 0x18aa,
-0x18b0, 0x18f5,
-0x1900, 0x191e,
-0x1920, 0x192b,
-0x1930, 0x193b,
-0x1946, 0x196d,
-0x1970, 0x1974,
-0x1980, 0x19ab,
-0x19b0, 0x19c9,
-0x19d0, 0x19da,
-0x1a00, 0x1a1b,
-0x1a20, 0x1a5e,
-0x1a60, 0x1a7c,
-0x1a7f, 0x1a89,
-0x1a90, 0x1a99,
-0x1aa7, 0x1aa7,
-0x1ab0, 0x1abd,
-0x1b00, 0x1b4b,
-0x1b50, 0x1b59,
+0x18a9, 0x18a9,
+0x1920, 0x1922,
+0x1927, 0x1928,
+0x1932, 0x1932,
+0x1939, 0x193b,
+0x1a17, 0x1a18,
+0x1a1b, 0x1a1b,
+0x1a56, 0x1a56,
+0x1a58, 0x1a5e,
+0x1a60, 0x1a60,
+0x1a62, 0x1a62,
+0x1a65, 0x1a6c,
+0x1a73, 0x1a7c,
+0x1a7f, 0x1a7f,
+0x1ab0, 0x1abe,
+0x1b00, 0x1b03,
+0x1b34, 0x1b34,
+0x1b36, 0x1b3a,
+0x1b3c, 0x1b3c,
+0x1b42, 0x1b42,
 0x1b6b, 0x1b73,
-0x1b80, 0x1bf3,
-0x1c00, 0x1c37,
-0x1c40, 0x1c49,
-0x1c4d, 0x1c7d,
+0x1b80, 0x1b81,
+0x1ba2, 0x1ba5,
+0x1ba8, 0x1ba9,
+0x1bab, 0x1bad,
+0x1be6, 0x1be6,
+0x1be8, 0x1be9,
+0x1bed, 0x1bed,
+0x1bef, 0x1bf1,
+0x1c2c, 0x1c33,
+0x1c36, 0x1c37,
 0x1cd0, 0x1cd2,
-0x1cd4, 0x1cf6,
+0x1cd4, 0x1ce0,
+0x1ce2, 0x1ce8,
+0x1ced, 0x1ced,
+0x1cf4, 0x1cf4,
 0x1cf8, 0x1cf9,
-0x1d00, 0x1df5,
-0x1dfc, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fe0, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffc,
-0x203f, 0x2040,
-0x2054, 0x2054,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x20d0, 0x20dc,
-0x20e1, 0x20e1,
-0x20e5, 0x20f0,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2118, 0x211d,
-0x2124, 0x2124,
-0x2126, 0x2126,
-0x2128, 0x2128,
-0x212a, 0x2139,
-0x213c, 0x213f,
-0x2145, 0x2149,
-0x214e, 0x214e,
-0x2160, 0x2188,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-0x2c60, 0x2ce4,
-0x2ceb, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0x2d30, 0x2d67,
-0x2d6f, 0x2d6f,
-0x2d7f, 0x2d96,
-0x2da0, 0x2da6,
-0x2da8, 0x2dae,
-0x2db0, 0x2db6,
-0x2db8, 0x2dbe,
-0x2dc0, 0x2dc6,
-0x2dc8, 0x2dce,
-0x2dd0, 0x2dd6,
-0x2dd8, 0x2dde,
+0x1dc0, 0x1df5,
+0x1dfc, 0x1dff,
+0x200c, 0x200d,
+0x20d0, 0x20f0,
+0x2cef, 0x2cf1,
+0x2d7f, 0x2d7f,
 0x2de0, 0x2dff,
-0x3005, 0x3007,
-0x3021, 0x302f,
-0x3031, 0x3035,
-0x3038, 0x303c,
-0x3041, 0x3096,
-0x3099, 0x309f,
-0x30a1, 0x30fa,
-0x30fc, 0x30ff,
-0x3105, 0x312d,
-0x3131, 0x318e,
-0x31a0, 0x31ba,
-0x31f0, 0x31ff,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
-0xa000, 0xa48c,
-0xa4d0, 0xa4fd,
-0xa500, 0xa60c,
-0xa610, 0xa62b,
-0xa640, 0xa66f,
+0x302a, 0x302f,
+0x3099, 0x309a,
+0xa66f, 0xa672,
 0xa674, 0xa67d,
-0xa67f, 0xa6f1,
-0xa717, 0xa71f,
-0xa722, 0xa788,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xa7f7, 0xa827,
-0xa840, 0xa873,
-0xa880, 0xa8c4,
-0xa8d0, 0xa8d9,
-0xa8e0, 0xa8f7,
-0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
-0xa900, 0xa92d,
-0xa930, 0xa953,
-0xa960, 0xa97c,
-0xa980, 0xa9c0,
-0xa9cf, 0xa9d9,
-0xa9e0, 0xa9fe,
-0xaa00, 0xaa36,
-0xaa40, 0xaa4d,
-0xaa50, 0xaa59,
-0xaa60, 0xaa76,
-0xaa7a, 0xaac2,
-0xaadb, 0xaadd,
-0xaae0, 0xaaef,
-0xaaf2, 0xaaf6,
-0xab01, 0xab06,
-0xab09, 0xab0e,
-0xab11, 0xab16,
-0xab20, 0xab26,
-0xab28, 0xab2e,
-0xab30, 0xab5a,
-0xab5c, 0xab65,
-0xab70, 0xabea,
-0xabec, 0xabed,
-0xabf0, 0xabf9,
-0xac00, 0xd7a3,
-0xd7b0, 0xd7c6,
-0xd7cb, 0xd7fb,
-0xf900, 0xfa6d,
-0xfa70, 0xfad9,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xfb1d, 0xfb28,
-0xfb2a, 0xfb36,
-0xfb38, 0xfb3c,
-0xfb3e, 0xfb3e,
-0xfb40, 0xfb41,
-0xfb43, 0xfb44,
-0xfb46, 0xfbb1,
-0xfbd3, 0xfd3d,
-0xfd50, 0xfd8f,
-0xfd92, 0xfdc7,
-0xfdf0, 0xfdfb,
-0xfe00, 0xfe0f,
-0xfe20, 0xfe2f,
-0xfe33, 0xfe34,
-0xfe4d, 0xfe4f,
-0xfe70, 0xfe74,
-0xfe76, 0xfefc,
-0xff10, 0xff19,
-0xff21, 0xff3a,
-0xff3f, 0xff3f,
-0xff41, 0xff5a,
-0xff66, 0xffbe,
-0xffc2, 0xffc7,
-0xffca, 0xffcf,
-0xffd2, 0xffd7,
-0xffda, 0xffdc,
-0x10000, 0x1000b,
-0x1000d, 0x10026,
-0x10028, 0x1003a,
-0x1003c, 0x1003d,
-0x1003f, 0x1004d,
-0x10050, 0x1005d,
-0x10080, 0x100fa,
-0x10140, 0x10174,
+0xa69e, 0xa69f,
+0xa6f0, 0xa6f1,
+0xa802, 0xa802,
+0xa806, 0xa806,
+0xa80b, 0xa80b,
+0xa825, 0xa826,
+0xa8c4, 0xa8c4,
+0xa8e0, 0xa8f1,
+0xa926, 0xa92d,
+0xa947, 0xa951,
+0xa980, 0xa982,
+0xa9b3, 0xa9b3,
+0xa9b6, 0xa9b9,
+0xa9bc, 0xa9bc,
+0xa9e5, 0xa9e5,
+0xaa29, 0xaa2e,
+0xaa31, 0xaa32,
+0xaa35, 0xaa36,
+0xaa43, 0xaa43,
+0xaa4c, 0xaa4c,
+0xaa7c, 0xaa7c,
+0xaab0, 0xaab0,
+0xaab2, 0xaab4,
+0xaab7, 0xaab8,
+0xaabe, 0xaabf,
+0xaac1, 0xaac1,
+0xaaec, 0xaaed,
+0xaaf6, 0xaaf6,
+0xabe5, 0xabe5,
+0xabe8, 0xabe8,
+0xabed, 0xabed,
+0xfb1e, 0xfb1e,
+0xfe00, 0xfe0f,
+0xfe20, 0xfe2f,
+0xff9e, 0xff9f,
 0x101fd, 0x101fd,
-0x10280, 0x1029c,
-0x102a0, 0x102d0,
 0x102e0, 0x102e0,
-0x10300, 0x1031f,
-0x10330, 0x1034a,
-0x10350, 0x1037a,
-0x10380, 0x1039d,
-0x103a0, 0x103c3,
-0x103c8, 0x103cf,
-0x103d1, 0x103d5,
-0x10400, 0x1049d,
-0x104a0, 0x104a9,
-0x10500, 0x10527,
-0x10530, 0x10563,
-0x10600, 0x10736,
-0x10740, 0x10755,
-0x10760, 0x10767,
-0x10800, 0x10805,
-0x10808, 0x10808,
-0x1080a, 0x10835,
-0x10837, 0x10838,
-0x1083c, 0x1083c,
-0x1083f, 0x10855,
-0x10860, 0x10876,
-0x10880, 0x1089e,
-0x108e0, 0x108f2,
-0x108f4, 0x108f5,
-0x10900, 0x10915,
-0x10920, 0x10939,
-0x10980, 0x109b7,
-0x109be, 0x109bf,
-0x10a00, 0x10a03,
+0x10376, 0x1037a,
+0x10a01, 0x10a03,
 0x10a05, 0x10a06,
-0x10a0c, 0x10a13,
-0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a0c, 0x10a0f,
 0x10a38, 0x10a3a,
 0x10a3f, 0x10a3f,
-0x10a60, 0x10a7c,
-0x10a80, 0x10a9c,
-0x10ac0, 0x10ac7,
-0x10ac9, 0x10ae6,
-0x10b00, 0x10b35,
-0x10b40, 0x10b55,
-0x10b60, 0x10b72,
-0x10b80, 0x10b91,
-0x10c00, 0x10c48,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x11000, 0x11046,
-0x11066, 0x1106f,
-0x1107f, 0x110ba,
-0x110d0, 0x110e8,
-0x110f0, 0x110f9,
-0x11100, 0x11134,
-0x11136, 0x1113f,
-0x11150, 0x11173,
-0x11176, 0x11176,
-0x11180, 0x111c4,
+0x10ae5, 0x10ae6,
+0x11001, 0x11001,
+0x11038, 0x11046,
+0x1107f, 0x11081,
+0x110b3, 0x110b6,
+0x110b9, 0x110ba,
+0x11100, 0x11102,
+0x11127, 0x1112b,
+0x1112d, 0x11134,
+0x11173, 0x11173,
+0x11180, 0x11181,
+0x111b6, 0x111be,
 0x111ca, 0x111cc,
-0x111d0, 0x111da,
-0x111dc, 0x111dc,
-0x11200, 0x11211,
-0x11213, 0x11237,
-0x11280, 0x11286,
-0x11288, 0x11288,
-0x1128a, 0x1128d,
-0x1128f, 0x1129d,
-0x1129f, 0x112a8,
-0x112b0, 0x112ea,
-0x112f0, 0x112f9,
-0x11300, 0x11303,
-0x11305, 0x1130c,
-0x1130f, 0x11310,
-0x11313, 0x11328,
-0x1132a, 0x11330,
-0x11332, 0x11333,
-0x11335, 0x11339,
-0x1133c, 0x11344,
-0x11347, 0x11348,
-0x1134b, 0x1134d,
-0x11350, 0x11350,
+0x1122f, 0x11231,
+0x11234, 0x11234,
+0x11236, 0x11237,
+0x112df, 0x112df,
+0x112e3, 0x112ea,
+0x11300, 0x11301,
+0x1133c, 0x1133c,
+0x1133e, 0x1133e,
+0x11340, 0x11340,
 0x11357, 0x11357,
-0x1135d, 0x11363,
 0x11366, 0x1136c,
 0x11370, 0x11374,
-0x11480, 0x114c5,
-0x114c7, 0x114c7,
-0x114d0, 0x114d9,
-0x11580, 0x115b5,
-0x115b8, 0x115c0,
-0x115d8, 0x115dd,
-0x11600, 0x11640,
-0x11644, 0x11644,
-0x11650, 0x11659,
-0x11680, 0x116b7,
-0x116c0, 0x116c9,
-0x11700, 0x11719,
-0x1171d, 0x1172b,
-0x11730, 0x11739,
-0x118a0, 0x118e9,
-0x118ff, 0x118ff,
-0x11ac0, 0x11af8,
-0x12000, 0x12399,
-0x12400, 0x1246e,
-0x12480, 0x12543,
-0x13000, 0x1342e,
-0x14400, 0x14646,
-0x16800, 0x16a38,
-0x16a40, 0x16a5e,
-0x16a60, 0x16a69,
-0x16ad0, 0x16aed,
-0x16af0, 0x16af4,
-0x16b00, 0x16b36,
-0x16b40, 0x16b43,
-0x16b50, 0x16b59,
-0x16b63, 0x16b77,
-0x16b7d, 0x16b8f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
-0x16f8f, 0x16f9f,
-0x1b000, 0x1b001,
-0x1bc00, 0x1bc6a,
-0x1bc70, 0x1bc7c,
-0x1bc80, 0x1bc88,
-0x1bc90, 0x1bc99,
-0x1bc9d, 0x1bc9e,
-0x1d165, 0x1d169,
-0x1d16d, 0x1d172,
-0x1d17b, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0x1d242, 0x1d244,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d6c0,
-0x1d6c2, 0x1d6da,
-0x1d6dc, 0x1d6fa,
-0x1d6fc, 0x1d714,
-0x1d716, 0x1d734,
-0x1d736, 0x1d74e,
-0x1d750, 0x1d76e,
-0x1d770, 0x1d788,
-0x1d78a, 0x1d7a8,
-0x1d7aa, 0x1d7c2,
-0x1d7c4, 0x1d7cb,
-0x1d7ce, 0x1d7ff,
-0x1da00, 0x1da36,
-0x1da3b, 0x1da6c,
-0x1da75, 0x1da75,
-0x1da84, 0x1da84,
-0x1da9b, 0x1da9f,
-0x1daa1, 0x1daaf,
-0x1e800, 0x1e8c4,
-0x1e8d0, 0x1e8d6,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
+0x114b0, 0x114b0,
+0x114b3, 0x114b8,
+0x114ba, 0x114ba,
+0x114bd, 0x114bd,
+0x114bf, 0x114c0,
+0x114c2, 0x114c3,
+0x115af, 0x115af,
+0x115b2, 0x115b5,
+0x115bc, 0x115bd,
+0x115bf, 0x115c0,
+0x115dc, 0x115dd,
+0x11633, 0x1163a,
+0x1163d, 0x1163d,
+0x1163f, 0x11640,
+0x116ab, 0x116ab,
+0x116ad, 0x116ad,
+0x116b0, 0x116b5,
+0x116b7, 0x116b7,
+0x1171d, 0x1171f,
+0x11722, 0x11725,
+0x11727, 0x1172b,
+0x16af0, 0x16af4,
+0x16b30, 0x16b36,
+0x16f8f, 0x16f92,
+0x1bc9d, 0x1bc9e,
+0x1d165, 0x1d165,
+0x1d167, 0x1d169,
+0x1d16e, 0x1d172,
+0x1d17b, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0x1d242, 0x1d244,
+0x1da00, 0x1da36,
+0x1da3b, 0x1da6c,
+0x1da75, 0x1da75,
+0x1da84, 0x1da84,
+0x1da9b, 0x1da9f,
+0x1daa1, 0x1daaf,
+0x1e8d0, 0x1e8d6,
+0xe0100, 0xe01ef,
+}; /* END of CR_Grapheme_Extend */
+
+/* PROPERTY: 'Grapheme_Link': Derived Property */
+static const OnigCodePoint
+CR_Grapheme_Link[] = { 41,
+0x094d, 0x094d,
+0x09cd, 0x09cd,
+0x0a4d, 0x0a4d,
+0x0acd, 0x0acd,
+0x0b4d, 0x0b4d,
+0x0bcd, 0x0bcd,
+0x0c4d, 0x0c4d,
+0x0ccd, 0x0ccd,
+0x0d4d, 0x0d4d,
+0x0dca, 0x0dca,
+0x0e3a, 0x0e3a,
+0x0f84, 0x0f84,
+0x1039, 0x103a,
+0x1714, 0x1714,
+0x1734, 0x1734,
+0x17d2, 0x17d2,
+0x1a60, 0x1a60,
+0x1b44, 0x1b44,
+0x1baa, 0x1bab,
+0x1bf2, 0x1bf3,
+0x2d7f, 0x2d7f,
+0xa806, 0xa806,
+0xa8c4, 0xa8c4,
+0xa953, 0xa953,
+0xa9c0, 0xa9c0,
+0xaaf6, 0xaaf6,
+0xabed, 0xabed,
+0x10a3f, 0x10a3f,
+0x11046, 0x11046,
+0x1107f, 0x1107f,
+0x110b9, 0x110b9,
+0x11133, 0x11134,
+0x111c0, 0x111c0,
+0x11235, 0x11235,
+0x112ea, 0x112ea,
+0x1134d, 0x1134d,
+0x114c2, 0x114c2,
+0x115bf, 0x115bf,
+0x1163f, 0x1163f,
+0x116b6, 0x116b6,
+0x1172b, 0x1172b,
+}; /* END of CR_Grapheme_Link */
+
+/* PROPERTY: 'Greek': Script */
+static const OnigCodePoint
+CR_Greek[] = { 36,
+0x0370, 0x0373,
+0x0375, 0x0377,
+0x037a, 0x037d,
+0x037f, 0x037f,
+0x0384, 0x0384,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03e1,
+0x03f0, 0x03ff,
+0x1d26, 0x1d2a,
+0x1d5d, 0x1d61,
+0x1d66, 0x1d6a,
+0x1dbf, 0x1dbf,
+0x1f00, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fc4,
+0x1fc6, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fdd, 0x1fef,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffe,
+0x2126, 0x2126,
+0xab65, 0xab65,
+0x10140, 0x1018c,
+0x101a0, 0x101a0,
+0x1d200, 0x1d245,
+}; /* END of CR_Greek */
+
+/* PROPERTY: 'Gujarati': Script */
+static const OnigCodePoint
+CR_Gujarati[] = { 14,
+0x0a81, 0x0a83,
+0x0a85, 0x0a8d,
+0x0a8f, 0x0a91,
+0x0a93, 0x0aa8,
+0x0aaa, 0x0ab0,
+0x0ab2, 0x0ab3,
+0x0ab5, 0x0ab9,
+0x0abc, 0x0ac5,
+0x0ac7, 0x0ac9,
+0x0acb, 0x0acd,
+0x0ad0, 0x0ad0,
+0x0ae0, 0x0ae3,
+0x0ae6, 0x0af1,
+0x0af9, 0x0af9,
+}; /* END of CR_Gujarati */
+
+/* PROPERTY: 'Gurmukhi': Script */
+static const OnigCodePoint
+CR_Gurmukhi[] = { 16,
+0x0a01, 0x0a03,
+0x0a05, 0x0a0a,
+0x0a0f, 0x0a10,
+0x0a13, 0x0a28,
+0x0a2a, 0x0a30,
+0x0a32, 0x0a33,
+0x0a35, 0x0a36,
+0x0a38, 0x0a39,
+0x0a3c, 0x0a3c,
+0x0a3e, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4d,
+0x0a51, 0x0a51,
+0x0a59, 0x0a5c,
+0x0a5e, 0x0a5e,
+0x0a66, 0x0a75,
+}; /* END of CR_Gurmukhi */
+
+/* PROPERTY: 'Han': Script */
+static const OnigCodePoint
+CR_Han[] = { 16,
+0x2e80, 0x2e99,
+0x2e9b, 0x2ef3,
+0x2f00, 0x2fd5,
+0x3005, 0x3005,
+0x3007, 0x3007,
+0x3021, 0x3029,
+0x3038, 0x303b,
+0x3400, 0x4db5,
+0x4e00, 0x9fd5,
+0xf900, 0xfa6d,
+0xfa70, 0xfad9,
 0x20000, 0x2a6d6,
 0x2a700, 0x2b734,
 0x2b740, 0x2b81d,
 0x2b820, 0x2cea1,
 0x2f800, 0x2fa1d,
-0xe0100, 0xe01ef,
-}; /* END of CR_ID_Continue */
+}; /* END of CR_Han */
+
+/* PROPERTY: 'Hangul': Script */
+static const OnigCodePoint
+CR_Hangul[] = { 14,
+0x1100, 0x11ff,
+0x302e, 0x302f,
+0x3131, 0x318e,
+0x3200, 0x321e,
+0x3260, 0x327e,
+0xa960, 0xa97c,
+0xac00, 0xd7a3,
+0xd7b0, 0xd7c6,
+0xd7cb, 0xd7fb,
+0xffa0, 0xffbe,
+0xffc2, 0xffc7,
+0xffca, 0xffcf,
+0xffd2, 0xffd7,
+0xffda, 0xffdc,
+}; /* END of CR_Hangul */
+
+/* PROPERTY: 'Hanunoo': Script */
+static const OnigCodePoint
+CR_Hanunoo[] = { 1,
+0x1720, 0x1734,
+}; /* END of CR_Hanunoo */
+
+/* PROPERTY: 'Hatran': Script */
+static const OnigCodePoint
+CR_Hatran[] = { 3,
+0x108e0, 0x108f2,
+0x108f4, 0x108f5,
+0x108fb, 0x108ff,
+}; /* END of CR_Hatran */
+
+/* PROPERTY: 'Hebrew': Script */
+static const OnigCodePoint
+CR_Hebrew[] = { 9,
+0x0591, 0x05c7,
+0x05d0, 0x05ea,
+0x05f0, 0x05f4,
+0xfb1d, 0xfb36,
+0xfb38, 0xfb3c,
+0xfb3e, 0xfb3e,
+0xfb40, 0xfb41,
+0xfb43, 0xfb44,
+0xfb46, 0xfb4f,
+}; /* END of CR_Hebrew */
+
+/* PROPERTY: 'Hex_Digit': Binary Property */
+static const OnigCodePoint
+CR_Hex_Digit[] = { 6,
+0x0030, 0x0039,
+0x0041, 0x0046,
+0x0061, 0x0066,
+0xff10, 0xff19,
+0xff21, 0xff26,
+0xff41, 0xff46,
+}; /* END of CR_Hex_Digit */
+
+/* PROPERTY: 'Hiragana': Script */
+static const OnigCodePoint
+CR_Hiragana[] = { 4,
+0x3041, 0x3096,
+0x309d, 0x309f,
+0x1b001, 0x1b001,
+0x1f200, 0x1f200,
+}; /* END of CR_Hiragana */
+
+/* PROPERTY: 'Hyphen': Binary Property */
+static const OnigCodePoint
+CR_Hyphen[] = { 10,
+0x002d, 0x002d,
+0x00ad, 0x00ad,
+0x058a, 0x058a,
+0x1806, 0x1806,
+0x2010, 0x2011,
+0x2e17, 0x2e17,
+0x30fb, 0x30fb,
+0xfe63, 0xfe63,
+0xff0d, 0xff0d,
+0xff65, 0xff65,
+}; /* END of CR_Hyphen */
+
+/* PROPERTY: 'IDS_Binary_Operator': Binary Property */
+static const OnigCodePoint
+CR_IDS_Binary_Operator[] = { 2,
+0x2ff0, 0x2ff1,
+0x2ff4, 0x2ffb,
+}; /* END of CR_IDS_Binary_Operator */
 
-/* PROPERTY: 'XID_Start': Derived Property */
+/* PROPERTY: 'IDS_Trinary_Operator': Binary Property */
 static const OnigCodePoint
-CR_XID_Start[] = { 562,
+CR_IDS_Trinary_Operator[] = { 1,
+0x2ff2, 0x2ff3,
+}; /* END of CR_IDS_Trinary_Operator */
+
+/* PROPERTY: 'ID_Continue': Derived Property */
+static const OnigCodePoint
+CR_ID_Continue[] = { 651,
+0x0030, 0x0039,
 0x0041, 0x005a,
+0x005f, 0x005f,
 0x0061, 0x007a,
 0x00aa, 0x00aa,
 0x00b5, 0x00b5,
+0x00b7, 0x00b7,
 0x00ba, 0x00ba,
 0x00c0, 0x00d6,
 0x00d8, 0x00f6,
@@ -15355,59 +11792,58 @@ CR_XID_Start[] = { 562,
 0x02e0, 0x02e4,
 0x02ec, 0x02ec,
 0x02ee, 0x02ee,
-0x0370, 0x0374,
+0x0300, 0x0374,
 0x0376, 0x0377,
-0x037b, 0x037d,
+0x037a, 0x037d,
 0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
+0x0386, 0x038a,
 0x038c, 0x038c,
 0x038e, 0x03a1,
 0x03a3, 0x03f5,
 0x03f7, 0x0481,
+0x0483, 0x0487,
 0x048a, 0x052f,
 0x0531, 0x0556,
 0x0559, 0x0559,
 0x0561, 0x0587,
+0x0591, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c5,
+0x05c7, 0x05c7,
 0x05d0, 0x05ea,
 0x05f0, 0x05f2,
-0x0620, 0x064a,
-0x066e, 0x066f,
-0x0671, 0x06d3,
-0x06d5, 0x06d5,
-0x06e5, 0x06e6,
-0x06ee, 0x06ef,
-0x06fa, 0x06fc,
+0x0610, 0x061a,
+0x0620, 0x0669,
+0x066e, 0x06d3,
+0x06d5, 0x06dc,
+0x06df, 0x06e8,
+0x06ea, 0x06fc,
 0x06ff, 0x06ff,
-0x0710, 0x0710,
-0x0712, 0x072f,
-0x074d, 0x07a5,
-0x07b1, 0x07b1,
-0x07ca, 0x07ea,
-0x07f4, 0x07f5,
+0x0710, 0x074a,
+0x074d, 0x07b1,
+0x07c0, 0x07f5,
 0x07fa, 0x07fa,
-0x0800, 0x0815,
-0x081a, 0x081a,
-0x0824, 0x0824,
-0x0828, 0x0828,
-0x0840, 0x0858,
+0x0800, 0x082d,
+0x0840, 0x085b,
 0x08a0, 0x08b4,
-0x0904, 0x0939,
-0x093d, 0x093d,
-0x0950, 0x0950,
-0x0958, 0x0961,
-0x0971, 0x0980,
+0x08e3, 0x0963,
+0x0966, 0x096f,
+0x0971, 0x0983,
 0x0985, 0x098c,
 0x098f, 0x0990,
 0x0993, 0x09a8,
 0x09aa, 0x09b0,
 0x09b2, 0x09b2,
 0x09b6, 0x09b9,
-0x09bd, 0x09bd,
-0x09ce, 0x09ce,
+0x09bc, 0x09c4,
+0x09c7, 0x09c8,
+0x09cb, 0x09ce,
+0x09d7, 0x09d7,
 0x09dc, 0x09dd,
-0x09df, 0x09e1,
-0x09f0, 0x09f1,
+0x09df, 0x09e3,
+0x09e6, 0x09f1,
+0x0a01, 0x0a03,
 0x0a05, 0x0a0a,
 0x0a0f, 0x0a10,
 0x0a13, 0x0a28,
@@ -15415,30 +11851,44 @@ CR_XID_Start[] = { 562,
 0x0a32, 0x0a33,
 0x0a35, 0x0a36,
 0x0a38, 0x0a39,
+0x0a3c, 0x0a3c,
+0x0a3e, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4d,
+0x0a51, 0x0a51,
 0x0a59, 0x0a5c,
 0x0a5e, 0x0a5e,
-0x0a72, 0x0a74,
+0x0a66, 0x0a75,
+0x0a81, 0x0a83,
 0x0a85, 0x0a8d,
 0x0a8f, 0x0a91,
 0x0a93, 0x0aa8,
 0x0aaa, 0x0ab0,
 0x0ab2, 0x0ab3,
 0x0ab5, 0x0ab9,
-0x0abd, 0x0abd,
+0x0abc, 0x0ac5,
+0x0ac7, 0x0ac9,
+0x0acb, 0x0acd,
 0x0ad0, 0x0ad0,
-0x0ae0, 0x0ae1,
+0x0ae0, 0x0ae3,
+0x0ae6, 0x0aef,
 0x0af9, 0x0af9,
+0x0b01, 0x0b03,
 0x0b05, 0x0b0c,
 0x0b0f, 0x0b10,
 0x0b13, 0x0b28,
 0x0b2a, 0x0b30,
 0x0b32, 0x0b33,
 0x0b35, 0x0b39,
-0x0b3d, 0x0b3d,
+0x0b3c, 0x0b44,
+0x0b47, 0x0b48,
+0x0b4b, 0x0b4d,
+0x0b56, 0x0b57,
 0x0b5c, 0x0b5d,
-0x0b5f, 0x0b61,
+0x0b5f, 0x0b63,
+0x0b66, 0x0b6f,
 0x0b71, 0x0b71,
-0x0b83, 0x0b83,
+0x0b82, 0x0b83,
 0x0b85, 0x0b8a,
 0x0b8e, 0x0b90,
 0x0b92, 0x0b95,
@@ -15448,38 +11898,64 @@ CR_XID_Start[] = { 562,
 0x0ba3, 0x0ba4,
 0x0ba8, 0x0baa,
 0x0bae, 0x0bb9,
+0x0bbe, 0x0bc2,
+0x0bc6, 0x0bc8,
+0x0bca, 0x0bcd,
 0x0bd0, 0x0bd0,
+0x0bd7, 0x0bd7,
+0x0be6, 0x0bef,
+0x0c00, 0x0c03,
 0x0c05, 0x0c0c,
 0x0c0e, 0x0c10,
 0x0c12, 0x0c28,
 0x0c2a, 0x0c39,
-0x0c3d, 0x0c3d,
+0x0c3d, 0x0c44,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4d,
+0x0c55, 0x0c56,
 0x0c58, 0x0c5a,
-0x0c60, 0x0c61,
+0x0c60, 0x0c63,
+0x0c66, 0x0c6f,
+0x0c81, 0x0c83,
 0x0c85, 0x0c8c,
 0x0c8e, 0x0c90,
 0x0c92, 0x0ca8,
 0x0caa, 0x0cb3,
 0x0cb5, 0x0cb9,
-0x0cbd, 0x0cbd,
+0x0cbc, 0x0cc4,
+0x0cc6, 0x0cc8,
+0x0cca, 0x0ccd,
+0x0cd5, 0x0cd6,
 0x0cde, 0x0cde,
-0x0ce0, 0x0ce1,
+0x0ce0, 0x0ce3,
+0x0ce6, 0x0cef,
 0x0cf1, 0x0cf2,
+0x0d01, 0x0d03,
 0x0d05, 0x0d0c,
 0x0d0e, 0x0d10,
 0x0d12, 0x0d3a,
-0x0d3d, 0x0d3d,
-0x0d4e, 0x0d4e,
-0x0d5f, 0x0d61,
+0x0d3d, 0x0d44,
+0x0d46, 0x0d48,
+0x0d4a, 0x0d4e,
+0x0d57, 0x0d57,
+0x0d5f, 0x0d63,
+0x0d66, 0x0d6f,
 0x0d7a, 0x0d7f,
+0x0d82, 0x0d83,
 0x0d85, 0x0d96,
 0x0d9a, 0x0db1,
 0x0db3, 0x0dbb,
 0x0dbd, 0x0dbd,
 0x0dc0, 0x0dc6,
-0x0e01, 0x0e30,
-0x0e32, 0x0e32,
-0x0e40, 0x0e46,
+0x0dca, 0x0dca,
+0x0dcf, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0dd8, 0x0ddf,
+0x0de6, 0x0def,
+0x0df2, 0x0df3,
+0x0e01, 0x0e3a,
+0x0e40, 0x0e4e,
+0x0e50, 0x0e59,
 0x0e81, 0x0e82,
 0x0e84, 0x0e84,
 0x0e87, 0x0e88,
@@ -15491,25 +11967,27 @@ CR_XID_Start[] = { 562,
 0x0ea5, 0x0ea5,
 0x0ea7, 0x0ea7,
 0x0eaa, 0x0eab,
-0x0ead, 0x0eb0,
-0x0eb2, 0x0eb2,
-0x0ebd, 0x0ebd,
+0x0ead, 0x0eb9,
+0x0ebb, 0x0ebd,
 0x0ec0, 0x0ec4,
 0x0ec6, 0x0ec6,
+0x0ec8, 0x0ecd,
+0x0ed0, 0x0ed9,
 0x0edc, 0x0edf,
 0x0f00, 0x0f00,
-0x0f40, 0x0f47,
+0x0f18, 0x0f19,
+0x0f20, 0x0f29,
+0x0f35, 0x0f35,
+0x0f37, 0x0f37,
+0x0f39, 0x0f39,
+0x0f3e, 0x0f47,
 0x0f49, 0x0f6c,
-0x0f88, 0x0f8c,
-0x1000, 0x102a,
-0x103f, 0x103f,
-0x1050, 0x1055,
-0x105a, 0x105d,
-0x1061, 0x1061,
-0x1065, 0x1066,
-0x106e, 0x1070,
-0x1075, 0x1081,
-0x108e, 0x108e,
+0x0f71, 0x0f84,
+0x0f86, 0x0f97,
+0x0f99, 0x0fbc,
+0x0fc6, 0x0fc6,
+0x1000, 0x1049,
+0x1050, 0x109d,
 0x10a0, 0x10c5,
 0x10c7, 0x10c7,
 0x10cd, 0x10cd,
@@ -15530,6 +12008,8 @@ CR_XID_Start[] = { 562,
 0x12d8, 0x1310,
 0x1312, 0x1315,
 0x1318, 0x135a,
+0x135d, 0x135f,
+0x1369, 0x1371,
 0x1380, 0x138f,
 0x13a0, 0x13f5,
 0x13f8, 0x13fd,
@@ -15539,39 +12019,48 @@ CR_XID_Start[] = { 562,
 0x16a0, 0x16ea,
 0x16ee, 0x16f8,
 0x1700, 0x170c,
-0x170e, 0x1711,
-0x1720, 0x1731,
-0x1740, 0x1751,
+0x170e, 0x1714,
+0x1720, 0x1734,
+0x1740, 0x1753,
 0x1760, 0x176c,
 0x176e, 0x1770,
-0x1780, 0x17b3,
+0x1772, 0x1773,
+0x1780, 0x17d3,
 0x17d7, 0x17d7,
-0x17dc, 0x17dc,
+0x17dc, 0x17dd,
+0x17e0, 0x17e9,
+0x180b, 0x180d,
+0x1810, 0x1819,
 0x1820, 0x1877,
-0x1880, 0x18a8,
-0x18aa, 0x18aa,
+0x1880, 0x18aa,
 0x18b0, 0x18f5,
 0x1900, 0x191e,
-0x1950, 0x196d,
+0x1920, 0x192b,
+0x1930, 0x193b,
+0x1946, 0x196d,
 0x1970, 0x1974,
 0x1980, 0x19ab,
 0x19b0, 0x19c9,
-0x1a00, 0x1a16,
-0x1a20, 0x1a54,
+0x19d0, 0x19da,
+0x1a00, 0x1a1b,
+0x1a20, 0x1a5e,
+0x1a60, 0x1a7c,
+0x1a7f, 0x1a89,
+0x1a90, 0x1a99,
 0x1aa7, 0x1aa7,
-0x1b05, 0x1b33,
-0x1b45, 0x1b4b,
-0x1b83, 0x1ba0,
-0x1bae, 0x1baf,
-0x1bba, 0x1be5,
-0x1c00, 0x1c23,
-0x1c4d, 0x1c4f,
-0x1c5a, 0x1c7d,
-0x1ce9, 0x1cec,
-0x1cee, 0x1cf1,
-0x1cf5, 0x1cf6,
-0x1d00, 0x1dbf,
-0x1e00, 0x1f15,
+0x1ab0, 0x1abd,
+0x1b00, 0x1b4b,
+0x1b50, 0x1b59,
+0x1b6b, 0x1b73,
+0x1b80, 0x1bf3,
+0x1c00, 0x1c37,
+0x1c40, 0x1c49,
+0x1c4d, 0x1c7d,
+0x1cd0, 0x1cd2,
+0x1cd4, 0x1cf6,
+0x1cf8, 0x1cf9,
+0x1d00, 0x1df5,
+0x1dfc, 0x1f15,
 0x1f18, 0x1f1d,
 0x1f20, 0x1f45,
 0x1f48, 0x1f4d,
@@ -15590,9 +12079,14 @@ CR_XID_Start[] = { 562,
 0x1fe0, 0x1fec,
 0x1ff2, 0x1ff4,
 0x1ff6, 0x1ffc,
+0x203f, 0x2040,
+0x2054, 0x2054,
 0x2071, 0x2071,
 0x207f, 0x207f,
 0x2090, 0x209c,
+0x20d0, 0x20dc,
+0x20e1, 0x20e1,
+0x20e5, 0x20f0,
 0x2102, 0x2102,
 0x2107, 0x2107,
 0x210a, 0x2113,
@@ -15609,14 +12103,13 @@ CR_XID_Start[] = { 562,
 0x2c00, 0x2c2e,
 0x2c30, 0x2c5e,
 0x2c60, 0x2ce4,
-0x2ceb, 0x2cee,
-0x2cf2, 0x2cf3,
+0x2ceb, 0x2cf3,
 0x2d00, 0x2d25,
 0x2d27, 0x2d27,
 0x2d2d, 0x2d2d,
 0x2d30, 0x2d67,
 0x2d6f, 0x2d6f,
-0x2d80, 0x2d96,
+0x2d7f, 0x2d96,
 0x2da0, 0x2da6,
 0x2da8, 0x2dae,
 0x2db0, 0x2db6,
@@ -15625,12 +12118,13 @@ CR_XID_Start[] = { 562,
 0x2dc8, 0x2dce,
 0x2dd0, 0x2dd6,
 0x2dd8, 0x2dde,
+0x2de0, 0x2dff,
 0x3005, 0x3007,
-0x3021, 0x3029,
+0x3021, 0x302f,
 0x3031, 0x3035,
 0x3038, 0x303c,
 0x3041, 0x3096,
-0x309d, 0x309f,
+0x3099, 0x309f,
 0x30a1, 0x30fa,
 0x30fc, 0x30ff,
 0x3105, 0x312d,
@@ -15642,46 +12136,35 @@ CR_XID_Start[] = { 562,
 0xa000, 0xa48c,
 0xa4d0, 0xa4fd,
 0xa500, 0xa60c,
-0xa610, 0xa61f,
-0xa62a, 0xa62b,
-0xa640, 0xa66e,
-0xa67f, 0xa69d,
-0xa6a0, 0xa6ef,
+0xa610, 0xa62b,
+0xa640, 0xa66f,
+0xa674, 0xa67d,
+0xa67f, 0xa6f1,
 0xa717, 0xa71f,
 0xa722, 0xa788,
 0xa78b, 0xa7ad,
 0xa7b0, 0xa7b7,
-0xa7f7, 0xa801,
-0xa803, 0xa805,
-0xa807, 0xa80a,
-0xa80c, 0xa822,
+0xa7f7, 0xa827,
 0xa840, 0xa873,
-0xa882, 0xa8b3,
-0xa8f2, 0xa8f7,
+0xa880, 0xa8c4,
+0xa8d0, 0xa8d9,
+0xa8e0, 0xa8f7,
 0xa8fb, 0xa8fb,
 0xa8fd, 0xa8fd,
-0xa90a, 0xa925,
-0xa930, 0xa946,
+0xa900, 0xa92d,
+0xa930, 0xa953,
 0xa960, 0xa97c,
-0xa984, 0xa9b2,
-0xa9cf, 0xa9cf,
-0xa9e0, 0xa9e4,
-0xa9e6, 0xa9ef,
-0xa9fa, 0xa9fe,
-0xaa00, 0xaa28,
-0xaa40, 0xaa42,
-0xaa44, 0xaa4b,
+0xa980, 0xa9c0,
+0xa9cf, 0xa9d9,
+0xa9e0, 0xa9fe,
+0xaa00, 0xaa36,
+0xaa40, 0xaa4d,
+0xaa50, 0xaa59,
 0xaa60, 0xaa76,
-0xaa7a, 0xaa7a,
-0xaa7e, 0xaaaf,
-0xaab1, 0xaab1,
-0xaab5, 0xaab6,
-0xaab9, 0xaabd,
-0xaac0, 0xaac0,
-0xaac2, 0xaac2,
+0xaa7a, 0xaac2,
 0xaadb, 0xaadd,
-0xaae0, 0xaaea,
-0xaaf2, 0xaaf4,
+0xaae0, 0xaaef,
+0xaaf2, 0xaaf6,
 0xab01, 0xab06,
 0xab09, 0xab0e,
 0xab11, 0xab16,
@@ -15689,7 +12172,9 @@ CR_XID_Start[] = { 562,
 0xab28, 0xab2e,
 0xab30, 0xab5a,
 0xab5c, 0xab65,
-0xab70, 0xabe2,
+0xab70, 0xabea,
+0xabec, 0xabed,
+0xabf0, 0xabf9,
 0xac00, 0xd7a3,
 0xd7b0, 0xd7c6,
 0xd7cb, 0xd7fb,
@@ -15697,30 +12182,28 @@ CR_XID_Start[] = { 562,
 0xfa70, 0xfad9,
 0xfb00, 0xfb06,
 0xfb13, 0xfb17,
-0xfb1d, 0xfb1d,
-0xfb1f, 0xfb28,
+0xfb1d, 0xfb28,
 0xfb2a, 0xfb36,
 0xfb38, 0xfb3c,
 0xfb3e, 0xfb3e,
 0xfb40, 0xfb41,
 0xfb43, 0xfb44,
 0xfb46, 0xfbb1,
-0xfbd3, 0xfc5d,
-0xfc64, 0xfd3d,
+0xfbd3, 0xfd3d,
 0xfd50, 0xfd8f,
 0xfd92, 0xfdc7,
-0xfdf0, 0xfdf9,
-0xfe71, 0xfe71,
-0xfe73, 0xfe73,
-0xfe77, 0xfe77,
-0xfe79, 0xfe79,
-0xfe7b, 0xfe7b,
-0xfe7d, 0xfe7d,
-0xfe7f, 0xfefc,
+0xfdf0, 0xfdfb,
+0xfe00, 0xfe0f,
+0xfe20, 0xfe2f,
+0xfe33, 0xfe34,
+0xfe4d, 0xfe4f,
+0xfe70, 0xfe74,
+0xfe76, 0xfefc,
+0xff10, 0xff19,
 0xff21, 0xff3a,
+0xff3f, 0xff3f,
 0xff41, 0xff5a,
-0xff66, 0xff9d,
-0xffa0, 0xffbe,
+0xff66, 0xffbe,
 0xffc2, 0xffc7,
 0xffca, 0xffcf,
 0xffd2, 0xffd7,
@@ -15733,16 +12216,19 @@ CR_XID_Start[] = { 562,
 0x10050, 0x1005d,
 0x10080, 0x100fa,
 0x10140, 0x10174,
+0x101fd, 0x101fd,
 0x10280, 0x1029c,
 0x102a0, 0x102d0,
+0x102e0, 0x102e0,
 0x10300, 0x1031f,
 0x10330, 0x1034a,
-0x10350, 0x10375,
+0x10350, 0x1037a,
 0x10380, 0x1039d,
 0x103a0, 0x103c3,
 0x103c8, 0x103cf,
 0x103d1, 0x103d5,
 0x10400, 0x1049d,
+0x104a0, 0x104a9,
 0x10500, 0x10527,
 0x10530, 0x10563,
 0x10600, 0x10736,
@@ -15762,14 +12248,17 @@ CR_XID_Start[] = { 562,
 0x10920, 0x10939,
 0x10980, 0x109b7,
 0x109be, 0x109bf,
-0x10a00, 0x10a00,
-0x10a10, 0x10a13,
+0x10a00, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a13,
 0x10a15, 0x10a17,
 0x10a19, 0x10a33,
+0x10a38, 0x10a3a,
+0x10a3f, 0x10a3f,
 0x10a60, 0x10a7c,
 0x10a80, 0x10a9c,
 0x10ac0, 0x10ac7,
-0x10ac9, 0x10ae4,
+0x10ac9, 0x10ae6,
 0x10b00, 0x10b35,
 0x10b40, 0x10b55,
 0x10b60, 0x10b72,
@@ -15777,43 +12266,58 @@ CR_XID_Start[] = { 562,
 0x10c00, 0x10c48,
 0x10c80, 0x10cb2,
 0x10cc0, 0x10cf2,
-0x11003, 0x11037,
-0x11083, 0x110af,
+0x11000, 0x11046,
+0x11066, 0x1106f,
+0x1107f, 0x110ba,
 0x110d0, 0x110e8,
-0x11103, 0x11126,
-0x11150, 0x11172,
+0x110f0, 0x110f9,
+0x11100, 0x11134,
+0x11136, 0x1113f,
+0x11150, 0x11173,
 0x11176, 0x11176,
-0x11183, 0x111b2,
-0x111c1, 0x111c4,
-0x111da, 0x111da,
+0x11180, 0x111c4,
+0x111ca, 0x111cc,
+0x111d0, 0x111da,
 0x111dc, 0x111dc,
 0x11200, 0x11211,
-0x11213, 0x1122b,
+0x11213, 0x11237,
 0x11280, 0x11286,
 0x11288, 0x11288,
 0x1128a, 0x1128d,
 0x1128f, 0x1129d,
 0x1129f, 0x112a8,
-0x112b0, 0x112de,
+0x112b0, 0x112ea,
+0x112f0, 0x112f9,
+0x11300, 0x11303,
 0x11305, 0x1130c,
 0x1130f, 0x11310,
 0x11313, 0x11328,
 0x1132a, 0x11330,
 0x11332, 0x11333,
 0x11335, 0x11339,
-0x1133d, 0x1133d,
+0x1133c, 0x11344,
+0x11347, 0x11348,
+0x1134b, 0x1134d,
 0x11350, 0x11350,
-0x1135d, 0x11361,
-0x11480, 0x114af,
-0x114c4, 0x114c5,
+0x11357, 0x11357,
+0x1135d, 0x11363,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+0x11480, 0x114c5,
 0x114c7, 0x114c7,
-0x11580, 0x115ae,
-0x115d8, 0x115db,
-0x11600, 0x1162f,
+0x114d0, 0x114d9,
+0x11580, 0x115b5,
+0x115b8, 0x115c0,
+0x115d8, 0x115dd,
+0x11600, 0x11640,
 0x11644, 0x11644,
-0x11680, 0x116aa,
+0x11650, 0x11659,
+0x11680, 0x116b7,
+0x116c0, 0x116c9,
 0x11700, 0x11719,
-0x118a0, 0x118df,
+0x1171d, 0x1172b,
+0x11730, 0x11739,
+0x118a0, 0x118e9,
 0x118ff, 0x118ff,
 0x11ac0, 0x11af8,
 0x12000, 0x12399,
@@ -15823,19 +12327,29 @@ CR_XID_Start[] = { 562,
 0x14400, 0x14646,
 0x16800, 0x16a38,
 0x16a40, 0x16a5e,
+0x16a60, 0x16a69,
 0x16ad0, 0x16aed,
-0x16b00, 0x16b2f,
+0x16af0, 0x16af4,
+0x16b00, 0x16b36,
 0x16b40, 0x16b43,
+0x16b50, 0x16b59,
 0x16b63, 0x16b77,
 0x16b7d, 0x16b8f,
 0x16f00, 0x16f44,
-0x16f50, 0x16f50,
-0x16f93, 0x16f9f,
+0x16f50, 0x16f7e,
+0x16f8f, 0x16f9f,
 0x1b000, 0x1b001,
 0x1bc00, 0x1bc6a,
 0x1bc70, 0x1bc7c,
 0x1bc80, 0x1bc88,
 0x1bc90, 0x1bc99,
+0x1bc9d, 0x1bc9e,
+0x1d165, 0x1d169,
+0x1d16d, 0x1d172,
+0x1d17b, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0x1d242, 0x1d244,
 0x1d400, 0x1d454,
 0x1d456, 0x1d49c,
 0x1d49e, 0x1d49f,
@@ -15866,7 +12380,15 @@ CR_XID_Start[] = { 562,
 0x1d78a, 0x1d7a8,
 0x1d7aa, 0x1d7c2,
 0x1d7c4, 0x1d7cb,
+0x1d7ce, 0x1d7ff,
+0x1da00, 0x1da36,
+0x1da3b, 0x1da6c,
+0x1da75, 0x1da75,
+0x1da84, 0x1da84,
+0x1da9b, 0x1da9f,
+0x1daa1, 0x1daaf,
 0x1e800, 0x1e8c4,
+0x1e8d0, 0x1e8d6,
 0x1ee00, 0x1ee03,
 0x1ee05, 0x1ee1f,
 0x1ee21, 0x1ee22,
@@ -15905,18 +12427,16 @@ CR_XID_Start[] = { 562,
 0x2b740, 0x2b81d,
 0x2b820, 0x2cea1,
 0x2f800, 0x2fa1d,
-}; /* END of CR_XID_Start */
+0xe0100, 0xe01ef,
+}; /* END of CR_ID_Continue */
 
-/* PROPERTY: 'XID_Continue': Derived Property */
+/* PROPERTY: 'ID_Start': Derived Property */
 static const OnigCodePoint
-CR_XID_Continue[] = { 658,
-0x0030, 0x0039,
+CR_ID_Start[] = { 555,
 0x0041, 0x005a,
-0x005f, 0x005f,
 0x0061, 0x007a,
 0x00aa, 0x00aa,
 0x00b5, 0x00b5,
-0x00b7, 0x00b7,
 0x00ba, 0x00ba,
 0x00c0, 0x00d6,
 0x00d8, 0x00f6,
@@ -15925,58 +12445,59 @@ CR_XID_Continue[] = { 658,
 0x02e0, 0x02e4,
 0x02ec, 0x02ec,
 0x02ee, 0x02ee,
-0x0300, 0x0374,
+0x0370, 0x0374,
 0x0376, 0x0377,
-0x037b, 0x037d,
+0x037a, 0x037d,
 0x037f, 0x037f,
-0x0386, 0x038a,
+0x0386, 0x0386,
+0x0388, 0x038a,
 0x038c, 0x038c,
 0x038e, 0x03a1,
 0x03a3, 0x03f5,
 0x03f7, 0x0481,
-0x0483, 0x0487,
 0x048a, 0x052f,
 0x0531, 0x0556,
 0x0559, 0x0559,
 0x0561, 0x0587,
-0x0591, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c5,
-0x05c7, 0x05c7,
 0x05d0, 0x05ea,
 0x05f0, 0x05f2,
-0x0610, 0x061a,
-0x0620, 0x0669,
-0x066e, 0x06d3,
-0x06d5, 0x06dc,
-0x06df, 0x06e8,
-0x06ea, 0x06fc,
+0x0620, 0x064a,
+0x066e, 0x066f,
+0x0671, 0x06d3,
+0x06d5, 0x06d5,
+0x06e5, 0x06e6,
+0x06ee, 0x06ef,
+0x06fa, 0x06fc,
 0x06ff, 0x06ff,
-0x0710, 0x074a,
-0x074d, 0x07b1,
-0x07c0, 0x07f5,
+0x0710, 0x0710,
+0x0712, 0x072f,
+0x074d, 0x07a5,
+0x07b1, 0x07b1,
+0x07ca, 0x07ea,
+0x07f4, 0x07f5,
 0x07fa, 0x07fa,
-0x0800, 0x082d,
-0x0840, 0x085b,
+0x0800, 0x0815,
+0x081a, 0x081a,
+0x0824, 0x0824,
+0x0828, 0x0828,
+0x0840, 0x0858,
 0x08a0, 0x08b4,
-0x08e3, 0x0963,
-0x0966, 0x096f,
-0x0971, 0x0983,
+0x0904, 0x0939,
+0x093d, 0x093d,
+0x0950, 0x0950,
+0x0958, 0x0961,
+0x0971, 0x0980,
 0x0985, 0x098c,
 0x098f, 0x0990,
 0x0993, 0x09a8,
 0x09aa, 0x09b0,
 0x09b2, 0x09b2,
 0x09b6, 0x09b9,
-0x09bc, 0x09c4,
-0x09c7, 0x09c8,
-0x09cb, 0x09ce,
-0x09d7, 0x09d7,
+0x09bd, 0x09bd,
+0x09ce, 0x09ce,
 0x09dc, 0x09dd,
-0x09df, 0x09e3,
-0x09e6, 0x09f1,
-0x0a01, 0x0a03,
+0x09df, 0x09e1,
+0x09f0, 0x09f1,
 0x0a05, 0x0a0a,
 0x0a0f, 0x0a10,
 0x0a13, 0x0a28,
@@ -15984,44 +12505,30 @@ CR_XID_Continue[] = { 658,
 0x0a32, 0x0a33,
 0x0a35, 0x0a36,
 0x0a38, 0x0a39,
-0x0a3c, 0x0a3c,
-0x0a3e, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4d,
-0x0a51, 0x0a51,
 0x0a59, 0x0a5c,
 0x0a5e, 0x0a5e,
-0x0a66, 0x0a75,
-0x0a81, 0x0a83,
+0x0a72, 0x0a74,
 0x0a85, 0x0a8d,
 0x0a8f, 0x0a91,
 0x0a93, 0x0aa8,
 0x0aaa, 0x0ab0,
 0x0ab2, 0x0ab3,
 0x0ab5, 0x0ab9,
-0x0abc, 0x0ac5,
-0x0ac7, 0x0ac9,
-0x0acb, 0x0acd,
+0x0abd, 0x0abd,
 0x0ad0, 0x0ad0,
-0x0ae0, 0x0ae3,
-0x0ae6, 0x0aef,
+0x0ae0, 0x0ae1,
 0x0af9, 0x0af9,
-0x0b01, 0x0b03,
 0x0b05, 0x0b0c,
 0x0b0f, 0x0b10,
 0x0b13, 0x0b28,
-0x0b2a, 0x0b30,
-0x0b32, 0x0b33,
-0x0b35, 0x0b39,
-0x0b3c, 0x0b44,
-0x0b47, 0x0b48,
-0x0b4b, 0x0b4d,
-0x0b56, 0x0b57,
+0x0b2a, 0x0b30,
+0x0b32, 0x0b33,
+0x0b35, 0x0b39,
+0x0b3d, 0x0b3d,
 0x0b5c, 0x0b5d,
-0x0b5f, 0x0b63,
-0x0b66, 0x0b6f,
+0x0b5f, 0x0b61,
 0x0b71, 0x0b71,
-0x0b82, 0x0b83,
+0x0b83, 0x0b83,
 0x0b85, 0x0b8a,
 0x0b8e, 0x0b90,
 0x0b92, 0x0b95,
@@ -16031,64 +12538,38 @@ CR_XID_Continue[] = { 658,
 0x0ba3, 0x0ba4,
 0x0ba8, 0x0baa,
 0x0bae, 0x0bb9,
-0x0bbe, 0x0bc2,
-0x0bc6, 0x0bc8,
-0x0bca, 0x0bcd,
 0x0bd0, 0x0bd0,
-0x0bd7, 0x0bd7,
-0x0be6, 0x0bef,
-0x0c00, 0x0c03,
 0x0c05, 0x0c0c,
 0x0c0e, 0x0c10,
 0x0c12, 0x0c28,
 0x0c2a, 0x0c39,
-0x0c3d, 0x0c44,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4d,
-0x0c55, 0x0c56,
+0x0c3d, 0x0c3d,
 0x0c58, 0x0c5a,
-0x0c60, 0x0c63,
-0x0c66, 0x0c6f,
-0x0c81, 0x0c83,
+0x0c60, 0x0c61,
 0x0c85, 0x0c8c,
 0x0c8e, 0x0c90,
 0x0c92, 0x0ca8,
 0x0caa, 0x0cb3,
 0x0cb5, 0x0cb9,
-0x0cbc, 0x0cc4,
-0x0cc6, 0x0cc8,
-0x0cca, 0x0ccd,
-0x0cd5, 0x0cd6,
+0x0cbd, 0x0cbd,
 0x0cde, 0x0cde,
-0x0ce0, 0x0ce3,
-0x0ce6, 0x0cef,
+0x0ce0, 0x0ce1,
 0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
 0x0d05, 0x0d0c,
 0x0d0e, 0x0d10,
 0x0d12, 0x0d3a,
-0x0d3d, 0x0d44,
-0x0d46, 0x0d48,
-0x0d4a, 0x0d4e,
-0x0d57, 0x0d57,
-0x0d5f, 0x0d63,
-0x0d66, 0x0d6f,
+0x0d3d, 0x0d3d,
+0x0d4e, 0x0d4e,
+0x0d5f, 0x0d61,
 0x0d7a, 0x0d7f,
-0x0d82, 0x0d83,
 0x0d85, 0x0d96,
 0x0d9a, 0x0db1,
 0x0db3, 0x0dbb,
 0x0dbd, 0x0dbd,
 0x0dc0, 0x0dc6,
-0x0dca, 0x0dca,
-0x0dcf, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0dd8, 0x0ddf,
-0x0de6, 0x0def,
-0x0df2, 0x0df3,
-0x0e01, 0x0e3a,
-0x0e40, 0x0e4e,
-0x0e50, 0x0e59,
+0x0e01, 0x0e30,
+0x0e32, 0x0e33,
+0x0e40, 0x0e46,
 0x0e81, 0x0e82,
 0x0e84, 0x0e84,
 0x0e87, 0x0e88,
@@ -16100,27 +12581,25 @@ CR_XID_Continue[] = { 658,
 0x0ea5, 0x0ea5,
 0x0ea7, 0x0ea7,
 0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
+0x0ead, 0x0eb0,
+0x0eb2, 0x0eb3,
+0x0ebd, 0x0ebd,
 0x0ec0, 0x0ec4,
 0x0ec6, 0x0ec6,
-0x0ec8, 0x0ecd,
-0x0ed0, 0x0ed9,
 0x0edc, 0x0edf,
 0x0f00, 0x0f00,
-0x0f18, 0x0f19,
-0x0f20, 0x0f29,
-0x0f35, 0x0f35,
-0x0f37, 0x0f37,
-0x0f39, 0x0f39,
-0x0f3e, 0x0f47,
+0x0f40, 0x0f47,
 0x0f49, 0x0f6c,
-0x0f71, 0x0f84,
-0x0f86, 0x0f97,
-0x0f99, 0x0fbc,
-0x0fc6, 0x0fc6,
-0x1000, 0x1049,
-0x1050, 0x109d,
+0x0f88, 0x0f8c,
+0x1000, 0x102a,
+0x103f, 0x103f,
+0x1050, 0x1055,
+0x105a, 0x105d,
+0x1061, 0x1061,
+0x1065, 0x1066,
+0x106e, 0x1070,
+0x1075, 0x1081,
+0x108e, 0x108e,
 0x10a0, 0x10c5,
 0x10c7, 0x10c7,
 0x10cd, 0x10cd,
@@ -16141,8 +12620,6 @@ CR_XID_Continue[] = { 658,
 0x12d8, 0x1310,
 0x1312, 0x1315,
 0x1318, 0x135a,
-0x135d, 0x135f,
-0x1369, 0x1371,
 0x1380, 0x138f,
 0x13a0, 0x13f5,
 0x13f8, 0x13fd,
@@ -16152,48 +12629,39 @@ CR_XID_Continue[] = { 658,
 0x16a0, 0x16ea,
 0x16ee, 0x16f8,
 0x1700, 0x170c,
-0x170e, 0x1714,
-0x1720, 0x1734,
-0x1740, 0x1753,
+0x170e, 0x1711,
+0x1720, 0x1731,
+0x1740, 0x1751,
 0x1760, 0x176c,
 0x176e, 0x1770,
-0x1772, 0x1773,
-0x1780, 0x17d3,
+0x1780, 0x17b3,
 0x17d7, 0x17d7,
-0x17dc, 0x17dd,
-0x17e0, 0x17e9,
-0x180b, 0x180d,
-0x1810, 0x1819,
+0x17dc, 0x17dc,
 0x1820, 0x1877,
-0x1880, 0x18aa,
+0x1880, 0x18a8,
+0x18aa, 0x18aa,
 0x18b0, 0x18f5,
 0x1900, 0x191e,
-0x1920, 0x192b,
-0x1930, 0x193b,
-0x1946, 0x196d,
+0x1950, 0x196d,
 0x1970, 0x1974,
 0x1980, 0x19ab,
 0x19b0, 0x19c9,
-0x19d0, 0x19da,
-0x1a00, 0x1a1b,
-0x1a20, 0x1a5e,
-0x1a60, 0x1a7c,
-0x1a7f, 0x1a89,
-0x1a90, 0x1a99,
+0x1a00, 0x1a16,
+0x1a20, 0x1a54,
 0x1aa7, 0x1aa7,
-0x1ab0, 0x1abd,
-0x1b00, 0x1b4b,
-0x1b50, 0x1b59,
-0x1b6b, 0x1b73,
-0x1b80, 0x1bf3,
-0x1c00, 0x1c37,
-0x1c40, 0x1c49,
-0x1c4d, 0x1c7d,
-0x1cd0, 0x1cd2,
-0x1cd4, 0x1cf6,
-0x1cf8, 0x1cf9,
-0x1d00, 0x1df5,
-0x1dfc, 0x1f15,
+0x1b05, 0x1b33,
+0x1b45, 0x1b4b,
+0x1b83, 0x1ba0,
+0x1bae, 0x1baf,
+0x1bba, 0x1be5,
+0x1c00, 0x1c23,
+0x1c4d, 0x1c4f,
+0x1c5a, 0x1c7d,
+0x1ce9, 0x1cec,
+0x1cee, 0x1cf1,
+0x1cf5, 0x1cf6,
+0x1d00, 0x1dbf,
+0x1e00, 0x1f15,
 0x1f18, 0x1f1d,
 0x1f20, 0x1f45,
 0x1f48, 0x1f4d,
@@ -16212,14 +12680,9 @@ CR_XID_Continue[] = { 658,
 0x1fe0, 0x1fec,
 0x1ff2, 0x1ff4,
 0x1ff6, 0x1ffc,
-0x203f, 0x2040,
-0x2054, 0x2054,
 0x2071, 0x2071,
 0x207f, 0x207f,
 0x2090, 0x209c,
-0x20d0, 0x20dc,
-0x20e1, 0x20e1,
-0x20e5, 0x20f0,
 0x2102, 0x2102,
 0x2107, 0x2107,
 0x210a, 0x2113,
@@ -16236,13 +12699,14 @@ CR_XID_Continue[] = { 658,
 0x2c00, 0x2c2e,
 0x2c30, 0x2c5e,
 0x2c60, 0x2ce4,
-0x2ceb, 0x2cf3,
+0x2ceb, 0x2cee,
+0x2cf2, 0x2cf3,
 0x2d00, 0x2d25,
 0x2d27, 0x2d27,
 0x2d2d, 0x2d2d,
 0x2d30, 0x2d67,
 0x2d6f, 0x2d6f,
-0x2d7f, 0x2d96,
+0x2d80, 0x2d96,
 0x2da0, 0x2da6,
 0x2da8, 0x2dae,
 0x2db0, 0x2db6,
@@ -16251,14 +12715,12 @@ CR_XID_Continue[] = { 658,
 0x2dc8, 0x2dce,
 0x2dd0, 0x2dd6,
 0x2dd8, 0x2dde,
-0x2de0, 0x2dff,
 0x3005, 0x3007,
-0x3021, 0x302f,
+0x3021, 0x3029,
 0x3031, 0x3035,
 0x3038, 0x303c,
 0x3041, 0x3096,
-0x3099, 0x309a,
-0x309d, 0x309f,
+0x309b, 0x309f,
 0x30a1, 0x30fa,
 0x30fc, 0x30ff,
 0x3105, 0x312d,
@@ -16270,35 +12732,46 @@ CR_XID_Continue[] = { 658,
 0xa000, 0xa48c,
 0xa4d0, 0xa4fd,
 0xa500, 0xa60c,
-0xa610, 0xa62b,
-0xa640, 0xa66f,
-0xa674, 0xa67d,
-0xa67f, 0xa6f1,
+0xa610, 0xa61f,
+0xa62a, 0xa62b,
+0xa640, 0xa66e,
+0xa67f, 0xa69d,
+0xa6a0, 0xa6ef,
 0xa717, 0xa71f,
 0xa722, 0xa788,
 0xa78b, 0xa7ad,
 0xa7b0, 0xa7b7,
-0xa7f7, 0xa827,
+0xa7f7, 0xa801,
+0xa803, 0xa805,
+0xa807, 0xa80a,
+0xa80c, 0xa822,
 0xa840, 0xa873,
-0xa880, 0xa8c4,
-0xa8d0, 0xa8d9,
-0xa8e0, 0xa8f7,
+0xa882, 0xa8b3,
+0xa8f2, 0xa8f7,
 0xa8fb, 0xa8fb,
 0xa8fd, 0xa8fd,
-0xa900, 0xa92d,
-0xa930, 0xa953,
+0xa90a, 0xa925,
+0xa930, 0xa946,
 0xa960, 0xa97c,
-0xa980, 0xa9c0,
-0xa9cf, 0xa9d9,
-0xa9e0, 0xa9fe,
-0xaa00, 0xaa36,
-0xaa40, 0xaa4d,
-0xaa50, 0xaa59,
+0xa984, 0xa9b2,
+0xa9cf, 0xa9cf,
+0xa9e0, 0xa9e4,
+0xa9e6, 0xa9ef,
+0xa9fa, 0xa9fe,
+0xaa00, 0xaa28,
+0xaa40, 0xaa42,
+0xaa44, 0xaa4b,
 0xaa60, 0xaa76,
-0xaa7a, 0xaac2,
+0xaa7a, 0xaa7a,
+0xaa7e, 0xaaaf,
+0xaab1, 0xaab1,
+0xaab5, 0xaab6,
+0xaab9, 0xaabd,
+0xaac0, 0xaac0,
+0xaac2, 0xaac2,
 0xaadb, 0xaadd,
-0xaae0, 0xaaef,
-0xaaf2, 0xaaf6,
+0xaae0, 0xaaea,
+0xaaf2, 0xaaf4,
 0xab01, 0xab06,
 0xab09, 0xab0e,
 0xab11, 0xab16,
@@ -16306,9 +12779,7 @@ CR_XID_Continue[] = { 658,
 0xab28, 0xab2e,
 0xab30, 0xab5a,
 0xab5c, 0xab65,
-0xab70, 0xabea,
-0xabec, 0xabed,
-0xabf0, 0xabf9,
+0xab70, 0xabe2,
 0xac00, 0xd7a3,
 0xd7b0, 0xd7c6,
 0xd7cb, 0xd7fb,
@@ -16316,32 +12787,21 @@ CR_XID_Continue[] = { 658,
 0xfa70, 0xfad9,
 0xfb00, 0xfb06,
 0xfb13, 0xfb17,
-0xfb1d, 0xfb28,
+0xfb1d, 0xfb1d,
+0xfb1f, 0xfb28,
 0xfb2a, 0xfb36,
 0xfb38, 0xfb3c,
 0xfb3e, 0xfb3e,
 0xfb40, 0xfb41,
 0xfb43, 0xfb44,
 0xfb46, 0xfbb1,
-0xfbd3, 0xfc5d,
-0xfc64, 0xfd3d,
+0xfbd3, 0xfd3d,
 0xfd50, 0xfd8f,
 0xfd92, 0xfdc7,
-0xfdf0, 0xfdf9,
-0xfe00, 0xfe0f,
-0xfe20, 0xfe2f,
-0xfe33, 0xfe34,
-0xfe4d, 0xfe4f,
-0xfe71, 0xfe71,
-0xfe73, 0xfe73,
-0xfe77, 0xfe77,
-0xfe79, 0xfe79,
-0xfe7b, 0xfe7b,
-0xfe7d, 0xfe7d,
-0xfe7f, 0xfefc,
-0xff10, 0xff19,
+0xfdf0, 0xfdfb,
+0xfe70, 0xfe74,
+0xfe76, 0xfefc,
 0xff21, 0xff3a,
-0xff3f, 0xff3f,
 0xff41, 0xff5a,
 0xff66, 0xffbe,
 0xffc2, 0xffc7,
@@ -16356,19 +12816,16 @@ CR_XID_Continue[] = { 658,
 0x10050, 0x1005d,
 0x10080, 0x100fa,
 0x10140, 0x10174,
-0x101fd, 0x101fd,
 0x10280, 0x1029c,
 0x102a0, 0x102d0,
-0x102e0, 0x102e0,
 0x10300, 0x1031f,
 0x10330, 0x1034a,
-0x10350, 0x1037a,
+0x10350, 0x10375,
 0x10380, 0x1039d,
 0x103a0, 0x103c3,
 0x103c8, 0x103cf,
 0x103d1, 0x103d5,
 0x10400, 0x1049d,
-0x104a0, 0x104a9,
 0x10500, 0x10527,
 0x10530, 0x10563,
 0x10600, 0x10736,
@@ -16388,17 +12845,14 @@ CR_XID_Continue[] = { 658,
 0x10920, 0x10939,
 0x10980, 0x109b7,
 0x109be, 0x109bf,
-0x10a00, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a13,
+0x10a00, 0x10a00,
+0x10a10, 0x10a13,
 0x10a15, 0x10a17,
 0x10a19, 0x10a33,
-0x10a38, 0x10a3a,
-0x10a3f, 0x10a3f,
 0x10a60, 0x10a7c,
 0x10a80, 0x10a9c,
 0x10ac0, 0x10ac7,
-0x10ac9, 0x10ae6,
+0x10ac9, 0x10ae4,
 0x10b00, 0x10b35,
 0x10b40, 0x10b55,
 0x10b60, 0x10b72,
@@ -16406,58 +12860,43 @@ CR_XID_Continue[] = { 658,
 0x10c00, 0x10c48,
 0x10c80, 0x10cb2,
 0x10cc0, 0x10cf2,
-0x11000, 0x11046,
-0x11066, 0x1106f,
-0x1107f, 0x110ba,
-0x110d0, 0x110e8,
-0x110f0, 0x110f9,
-0x11100, 0x11134,
-0x11136, 0x1113f,
-0x11150, 0x11173,
+0x11003, 0x11037,
+0x11083, 0x110af,
+0x110d0, 0x110e8,
+0x11103, 0x11126,
+0x11150, 0x11172,
 0x11176, 0x11176,
-0x11180, 0x111c4,
-0x111ca, 0x111cc,
-0x111d0, 0x111da,
+0x11183, 0x111b2,
+0x111c1, 0x111c4,
+0x111da, 0x111da,
 0x111dc, 0x111dc,
 0x11200, 0x11211,
-0x11213, 0x11237,
+0x11213, 0x1122b,
 0x11280, 0x11286,
 0x11288, 0x11288,
 0x1128a, 0x1128d,
 0x1128f, 0x1129d,
 0x1129f, 0x112a8,
-0x112b0, 0x112ea,
-0x112f0, 0x112f9,
-0x11300, 0x11303,
+0x112b0, 0x112de,
 0x11305, 0x1130c,
 0x1130f, 0x11310,
 0x11313, 0x11328,
 0x1132a, 0x11330,
 0x11332, 0x11333,
 0x11335, 0x11339,
-0x1133c, 0x11344,
-0x11347, 0x11348,
-0x1134b, 0x1134d,
+0x1133d, 0x1133d,
 0x11350, 0x11350,
-0x11357, 0x11357,
-0x1135d, 0x11363,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-0x11480, 0x114c5,
+0x1135d, 0x11361,
+0x11480, 0x114af,
+0x114c4, 0x114c5,
 0x114c7, 0x114c7,
-0x114d0, 0x114d9,
-0x11580, 0x115b5,
-0x115b8, 0x115c0,
-0x115d8, 0x115dd,
-0x11600, 0x11640,
+0x11580, 0x115ae,
+0x115d8, 0x115db,
+0x11600, 0x1162f,
 0x11644, 0x11644,
-0x11650, 0x11659,
-0x11680, 0x116b7,
-0x116c0, 0x116c9,
+0x11680, 0x116aa,
 0x11700, 0x11719,
-0x1171d, 0x1172b,
-0x11730, 0x11739,
-0x118a0, 0x118e9,
+0x118a0, 0x118df,
 0x118ff, 0x118ff,
 0x11ac0, 0x11af8,
 0x12000, 0x12399,
@@ -16467,29 +12906,19 @@ CR_XID_Continue[] = { 658,
 0x14400, 0x14646,
 0x16800, 0x16a38,
 0x16a40, 0x16a5e,
-0x16a60, 0x16a69,
 0x16ad0, 0x16aed,
-0x16af0, 0x16af4,
-0x16b00, 0x16b36,
+0x16b00, 0x16b2f,
 0x16b40, 0x16b43,
-0x16b50, 0x16b59,
 0x16b63, 0x16b77,
 0x16b7d, 0x16b8f,
 0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
-0x16f8f, 0x16f9f,
+0x16f50, 0x16f50,
+0x16f93, 0x16f9f,
 0x1b000, 0x1b001,
 0x1bc00, 0x1bc6a,
 0x1bc70, 0x1bc7c,
 0x1bc80, 0x1bc88,
 0x1bc90, 0x1bc99,
-0x1bc9d, 0x1bc9e,
-0x1d165, 0x1d169,
-0x1d16d, 0x1d172,
-0x1d17b, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0x1d242, 0x1d244,
 0x1d400, 0x1d454,
 0x1d456, 0x1d49c,
 0x1d49e, 0x1d49f,
@@ -16520,15 +12949,7 @@ CR_XID_Continue[] = { 658,
 0x1d78a, 0x1d7a8,
 0x1d7aa, 0x1d7c2,
 0x1d7c4, 0x1d7cb,
-0x1d7ce, 0x1d7ff,
-0x1da00, 0x1da36,
-0x1da3b, 0x1da6c,
-0x1da75, 0x1da75,
-0x1da84, 0x1da84,
-0x1da9b, 0x1da9f,
-0x1daa1, 0x1daaf,
 0x1e800, 0x1e8c4,
-0x1e8d0, 0x1e8d6,
 0x1ee00, 0x1ee03,
 0x1ee05, 0x1ee1f,
 0x1ee21, 0x1ee22,
@@ -16567,192 +12988,41 @@ CR_XID_Continue[] = { 658,
 0x2b740, 0x2b81d,
 0x2b820, 0x2cea1,
 0x2f800, 0x2fa1d,
-0xe0100, 0xe01ef,
-}; /* END of CR_XID_Continue */
+}; /* END of CR_ID_Start */
 
-/* PROPERTY: 'Default_Ignorable_Code_Point': Derived Property */
+/* PROPERTY: 'Ideographic': Binary Property */
 static const OnigCodePoint
-CR_Default_Ignorable_Code_Point[] = { 17,
-0x00ad, 0x00ad,
-0x034f, 0x034f,
-0x061c, 0x061c,
-0x115f, 0x1160,
-0x17b4, 0x17b5,
-0x180b, 0x180e,
-0x200b, 0x200f,
-0x202a, 0x202e,
-0x2060, 0x206f,
-0x3164, 0x3164,
-0xfe00, 0xfe0f,
-0xfeff, 0xfeff,
-0xffa0, 0xffa0,
-0xfff0, 0xfff8,
-0x1bca0, 0x1bca3,
-0x1d173, 0x1d17a,
-0xe0000, 0xe0fff,
-}; /* END of CR_Default_Ignorable_Code_Point */
+CR_Ideographic[] = { 12,
+0x3006, 0x3007,
+0x3021, 0x3029,
+0x3038, 0x303a,
+0x3400, 0x4db5,
+0x4e00, 0x9fd5,
+0xf900, 0xfa6d,
+0xfa70, 0xfad9,
+0x20000, 0x2a6d6,
+0x2a700, 0x2b734,
+0x2b740, 0x2b81d,
+0x2b820, 0x2cea1,
+0x2f800, 0x2fa1d,
+}; /* END of CR_Ideographic */
 
-/* PROPERTY: 'Grapheme_Extend': Derived Property */
+/* PROPERTY: 'Imperial_Aramaic': Script */
 static const OnigCodePoint
-CR_Grapheme_Extend[] = { 283,
-0x0300, 0x036f,
-0x0483, 0x0489,
-0x0591, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c5,
-0x05c7, 0x05c7,
-0x0610, 0x061a,
-0x064b, 0x065f,
-0x0670, 0x0670,
-0x06d6, 0x06dc,
-0x06df, 0x06e4,
-0x06e7, 0x06e8,
-0x06ea, 0x06ed,
-0x0711, 0x0711,
-0x0730, 0x074a,
-0x07a6, 0x07b0,
-0x07eb, 0x07f3,
-0x0816, 0x0819,
-0x081b, 0x0823,
-0x0825, 0x0827,
-0x0829, 0x082d,
-0x0859, 0x085b,
-0x08e3, 0x0902,
-0x093a, 0x093a,
-0x093c, 0x093c,
-0x0941, 0x0948,
-0x094d, 0x094d,
-0x0951, 0x0957,
-0x0962, 0x0963,
-0x0981, 0x0981,
-0x09bc, 0x09bc,
-0x09be, 0x09be,
-0x09c1, 0x09c4,
-0x09cd, 0x09cd,
-0x09d7, 0x09d7,
-0x09e2, 0x09e3,
-0x0a01, 0x0a02,
-0x0a3c, 0x0a3c,
-0x0a41, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4d,
-0x0a51, 0x0a51,
-0x0a70, 0x0a71,
-0x0a75, 0x0a75,
-0x0a81, 0x0a82,
-0x0abc, 0x0abc,
-0x0ac1, 0x0ac5,
-0x0ac7, 0x0ac8,
-0x0acd, 0x0acd,
-0x0ae2, 0x0ae3,
-0x0b01, 0x0b01,
-0x0b3c, 0x0b3c,
-0x0b3e, 0x0b3f,
-0x0b41, 0x0b44,
-0x0b4d, 0x0b4d,
-0x0b56, 0x0b57,
-0x0b62, 0x0b63,
-0x0b82, 0x0b82,
-0x0bbe, 0x0bbe,
-0x0bc0, 0x0bc0,
-0x0bcd, 0x0bcd,
-0x0bd7, 0x0bd7,
-0x0c00, 0x0c00,
-0x0c3e, 0x0c40,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4d,
-0x0c55, 0x0c56,
-0x0c62, 0x0c63,
-0x0c81, 0x0c81,
-0x0cbc, 0x0cbc,
-0x0cbf, 0x0cbf,
-0x0cc2, 0x0cc2,
-0x0cc6, 0x0cc6,
-0x0ccc, 0x0ccd,
-0x0cd5, 0x0cd6,
-0x0ce2, 0x0ce3,
-0x0d01, 0x0d01,
-0x0d3e, 0x0d3e,
-0x0d41, 0x0d44,
-0x0d4d, 0x0d4d,
-0x0d57, 0x0d57,
-0x0d62, 0x0d63,
-0x0dca, 0x0dca,
-0x0dcf, 0x0dcf,
-0x0dd2, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0ddf, 0x0ddf,
-0x0e31, 0x0e31,
-0x0e34, 0x0e3a,
-0x0e47, 0x0e4e,
-0x0eb1, 0x0eb1,
-0x0eb4, 0x0eb9,
-0x0ebb, 0x0ebc,
-0x0ec8, 0x0ecd,
-0x0f18, 0x0f19,
-0x0f35, 0x0f35,
-0x0f37, 0x0f37,
-0x0f39, 0x0f39,
-0x0f71, 0x0f7e,
-0x0f80, 0x0f84,
-0x0f86, 0x0f87,
-0x0f8d, 0x0f97,
-0x0f99, 0x0fbc,
-0x0fc6, 0x0fc6,
-0x102d, 0x1030,
-0x1032, 0x1037,
-0x1039, 0x103a,
-0x103d, 0x103e,
-0x1058, 0x1059,
-0x105e, 0x1060,
-0x1071, 0x1074,
-0x1082, 0x1082,
-0x1085, 0x1086,
-0x108d, 0x108d,
-0x109d, 0x109d,
-0x135d, 0x135f,
-0x1712, 0x1714,
-0x1732, 0x1734,
-0x1752, 0x1753,
-0x1772, 0x1773,
-0x17b4, 0x17b5,
-0x17b7, 0x17bd,
-0x17c6, 0x17c6,
-0x17c9, 0x17d3,
-0x17dd, 0x17dd,
-0x180b, 0x180d,
-0x18a9, 0x18a9,
-0x1920, 0x1922,
-0x1927, 0x1928,
-0x1932, 0x1932,
-0x1939, 0x193b,
-0x1a17, 0x1a18,
-0x1a1b, 0x1a1b,
-0x1a56, 0x1a56,
-0x1a58, 0x1a5e,
-0x1a60, 0x1a60,
-0x1a62, 0x1a62,
-0x1a65, 0x1a6c,
-0x1a73, 0x1a7c,
-0x1a7f, 0x1a7f,
+CR_Imperial_Aramaic[] = { 2,
+0x10840, 0x10855,
+0x10857, 0x1085f,
+}; /* END of CR_Imperial_Aramaic */
+
+/* PROPERTY: 'Inherited': Script */
+static const OnigCodePoint
+CR_Inherited[] = { 27,
+0x0300, 0x036f,
+0x0485, 0x0486,
+0x064b, 0x0655,
+0x0670, 0x0670,
+0x0951, 0x0952,
 0x1ab0, 0x1abe,
-0x1b00, 0x1b03,
-0x1b34, 0x1b34,
-0x1b36, 0x1b3a,
-0x1b3c, 0x1b3c,
-0x1b42, 0x1b42,
-0x1b6b, 0x1b73,
-0x1b80, 0x1b81,
-0x1ba2, 0x1ba5,
-0x1ba8, 0x1ba9,
-0x1bab, 0x1bad,
-0x1be6, 0x1be6,
-0x1be8, 0x1be9,
-0x1bed, 0x1bed,
-0x1bef, 0x1bf1,
-0x1c2c, 0x1c33,
-0x1c36, 0x1c37,
 0x1cd0, 0x1cd2,
 0x1cd4, 0x1ce0,
 0x1ce2, 0x1ce8,
@@ -16763,178 +13033,185 @@ CR_Grapheme_Extend[] = { 283,
 0x1dfc, 0x1dff,
 0x200c, 0x200d,
 0x20d0, 0x20f0,
-0x2cef, 0x2cf1,
-0x2d7f, 0x2d7f,
-0x2de0, 0x2dff,
-0x302a, 0x302f,
+0x302a, 0x302d,
 0x3099, 0x309a,
-0xa66f, 0xa672,
-0xa674, 0xa67d,
-0xa69e, 0xa69f,
-0xa6f0, 0xa6f1,
-0xa802, 0xa802,
-0xa806, 0xa806,
-0xa80b, 0xa80b,
-0xa825, 0xa826,
-0xa8c4, 0xa8c4,
-0xa8e0, 0xa8f1,
-0xa926, 0xa92d,
-0xa947, 0xa951,
-0xa980, 0xa982,
-0xa9b3, 0xa9b3,
-0xa9b6, 0xa9b9,
-0xa9bc, 0xa9bc,
-0xa9e5, 0xa9e5,
-0xaa29, 0xaa2e,
-0xaa31, 0xaa32,
-0xaa35, 0xaa36,
-0xaa43, 0xaa43,
-0xaa4c, 0xaa4c,
-0xaa7c, 0xaa7c,
-0xaab0, 0xaab0,
-0xaab2, 0xaab4,
-0xaab7, 0xaab8,
-0xaabe, 0xaabf,
-0xaac1, 0xaac1,
-0xaaec, 0xaaed,
-0xaaf6, 0xaaf6,
-0xabe5, 0xabe5,
-0xabe8, 0xabe8,
-0xabed, 0xabed,
-0xfb1e, 0xfb1e,
 0xfe00, 0xfe0f,
-0xfe20, 0xfe2f,
-0xff9e, 0xff9f,
+0xfe20, 0xfe2d,
 0x101fd, 0x101fd,
 0x102e0, 0x102e0,
-0x10376, 0x1037a,
-0x10a01, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a0f,
-0x10a38, 0x10a3a,
-0x10a3f, 0x10a3f,
-0x10ae5, 0x10ae6,
-0x11001, 0x11001,
-0x11038, 0x11046,
-0x1107f, 0x11081,
-0x110b3, 0x110b6,
-0x110b9, 0x110ba,
-0x11100, 0x11102,
-0x11127, 0x1112b,
-0x1112d, 0x11134,
-0x11173, 0x11173,
-0x11180, 0x11181,
-0x111b6, 0x111be,
-0x111ca, 0x111cc,
-0x1122f, 0x11231,
-0x11234, 0x11234,
-0x11236, 0x11237,
-0x112df, 0x112df,
-0x112e3, 0x112ea,
-0x11300, 0x11301,
-0x1133c, 0x1133c,
-0x1133e, 0x1133e,
-0x11340, 0x11340,
-0x11357, 0x11357,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-0x114b0, 0x114b0,
-0x114b3, 0x114b8,
-0x114ba, 0x114ba,
-0x114bd, 0x114bd,
-0x114bf, 0x114c0,
-0x114c2, 0x114c3,
-0x115af, 0x115af,
-0x115b2, 0x115b5,
-0x115bc, 0x115bd,
-0x115bf, 0x115c0,
-0x115dc, 0x115dd,
-0x11633, 0x1163a,
-0x1163d, 0x1163d,
-0x1163f, 0x11640,
-0x116ab, 0x116ab,
-0x116ad, 0x116ad,
-0x116b0, 0x116b5,
-0x116b7, 0x116b7,
-0x1171d, 0x1171f,
-0x11722, 0x11725,
-0x11727, 0x1172b,
-0x16af0, 0x16af4,
-0x16b30, 0x16b36,
-0x16f8f, 0x16f92,
-0x1bc9d, 0x1bc9e,
-0x1d165, 0x1d165,
 0x1d167, 0x1d169,
-0x1d16e, 0x1d172,
 0x1d17b, 0x1d182,
 0x1d185, 0x1d18b,
 0x1d1aa, 0x1d1ad,
-0x1d242, 0x1d244,
-0x1da00, 0x1da36,
-0x1da3b, 0x1da6c,
-0x1da75, 0x1da75,
-0x1da84, 0x1da84,
-0x1da9b, 0x1da9f,
-0x1daa1, 0x1daaf,
-0x1e8d0, 0x1e8d6,
 0xe0100, 0xe01ef,
-}; /* END of CR_Grapheme_Extend */
+}; /* END of CR_Inherited */
 
-/* PROPERTY: 'Grapheme_Base': Derived Property */
+/* PROPERTY: 'Inscriptional_Pahlavi': Script */
 static const OnigCodePoint
-CR_Grapheme_Base[] = { 743,
-0x0020, 0x007e,
-0x00a0, 0x00ac,
-0x00ae, 0x02ff,
-0x0370, 0x0377,
-0x037a, 0x037f,
-0x0384, 0x038a,
+CR_Inscriptional_Pahlavi[] = { 2,
+0x10b60, 0x10b72,
+0x10b78, 0x10b7f,
+}; /* END of CR_Inscriptional_Pahlavi */
+
+/* PROPERTY: 'Inscriptional_Parthian': Script */
+static const OnigCodePoint
+CR_Inscriptional_Parthian[] = { 2,
+0x10b40, 0x10b55,
+0x10b58, 0x10b5f,
+}; /* END of CR_Inscriptional_Parthian */
+
+/* PROPERTY: 'Javanese': Script */
+static const OnigCodePoint
+CR_Javanese[] = { 3,
+0xa980, 0xa9cd,
+0xa9d0, 0xa9d9,
+0xa9de, 0xa9df,
+}; /* END of CR_Javanese */
+
+/* PROPERTY: 'Join_Control': Binary Property */
+static const OnigCodePoint
+CR_Join_Control[] = { 1,
+0x200c, 0x200d,
+}; /* END of CR_Join_Control */
+
+/* PROPERTY: 'Kaithi': Script */
+static const OnigCodePoint
+CR_Kaithi[] = { 1,
+0x11080, 0x110c1,
+}; /* END of CR_Kaithi */
+
+/* PROPERTY: 'Kannada': Script */
+static const OnigCodePoint
+CR_Kannada[] = { 14,
+0x0c81, 0x0c83,
+0x0c85, 0x0c8c,
+0x0c8e, 0x0c90,
+0x0c92, 0x0ca8,
+0x0caa, 0x0cb3,
+0x0cb5, 0x0cb9,
+0x0cbc, 0x0cc4,
+0x0cc6, 0x0cc8,
+0x0cca, 0x0ccd,
+0x0cd5, 0x0cd6,
+0x0cde, 0x0cde,
+0x0ce0, 0x0ce3,
+0x0ce6, 0x0cef,
+0x0cf1, 0x0cf2,
+}; /* END of CR_Kannada */
+
+/* PROPERTY: 'Katakana': Script */
+static const OnigCodePoint
+CR_Katakana[] = { 8,
+0x30a1, 0x30fa,
+0x30fd, 0x30ff,
+0x31f0, 0x31ff,
+0x32d0, 0x32fe,
+0x3300, 0x3357,
+0xff66, 0xff6f,
+0xff71, 0xff9d,
+0x1b000, 0x1b000,
+}; /* END of CR_Katakana */
+
+/* PROPERTY: 'Kayah_Li': Script */
+static const OnigCodePoint
+CR_Kayah_Li[] = { 2,
+0xa900, 0xa92d,
+0xa92f, 0xa92f,
+}; /* END of CR_Kayah_Li */
+
+/* PROPERTY: 'Kharoshthi': Script */
+static const OnigCodePoint
+CR_Kharoshthi[] = { 8,
+0x10a00, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a13,
+0x10a15, 0x10a17,
+0x10a19, 0x10a33,
+0x10a38, 0x10a3a,
+0x10a3f, 0x10a47,
+0x10a50, 0x10a58,
+}; /* END of CR_Kharoshthi */
+
+/* PROPERTY: 'Khmer': Script */
+static const OnigCodePoint
+CR_Khmer[] = { 4,
+0x1780, 0x17dd,
+0x17e0, 0x17e9,
+0x17f0, 0x17f9,
+0x19e0, 0x19ff,
+}; /* END of CR_Khmer */
+
+/* PROPERTY: 'Khojki': Script */
+static const OnigCodePoint
+CR_Khojki[] = { 2,
+0x11200, 0x11211,
+0x11213, 0x1123d,
+}; /* END of CR_Khojki */
+
+/* PROPERTY: 'Khudawadi': Script */
+static const OnigCodePoint
+CR_Khudawadi[] = { 2,
+0x112b0, 0x112ea,
+0x112f0, 0x112f9,
+}; /* END of CR_Khudawadi */
+
+/* PROPERTY: 'L': Major Category */
+static const OnigCodePoint
+CR_L[] = { 554,
+0x0041, 0x005a,
+0x0061, 0x007a,
+0x00aa, 0x00aa,
+0x00b5, 0x00b5,
+0x00ba, 0x00ba,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x02c1,
+0x02c6, 0x02d1,
+0x02e0, 0x02e4,
+0x02ec, 0x02ec,
+0x02ee, 0x02ee,
+0x0370, 0x0374,
+0x0376, 0x0377,
+0x037a, 0x037d,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
 0x038c, 0x038c,
 0x038e, 0x03a1,
-0x03a3, 0x0482,
+0x03a3, 0x03f5,
+0x03f7, 0x0481,
 0x048a, 0x052f,
 0x0531, 0x0556,
-0x0559, 0x055f,
+0x0559, 0x0559,
 0x0561, 0x0587,
-0x0589, 0x058a,
-0x058d, 0x058f,
-0x05be, 0x05be,
-0x05c0, 0x05c0,
-0x05c3, 0x05c3,
-0x05c6, 0x05c6,
 0x05d0, 0x05ea,
-0x05f0, 0x05f4,
-0x0606, 0x060f,
-0x061b, 0x061b,
-0x061e, 0x064a,
-0x0660, 0x066f,
-0x0671, 0x06d5,
-0x06de, 0x06de,
+0x05f0, 0x05f2,
+0x0620, 0x064a,
+0x066e, 0x066f,
+0x0671, 0x06d3,
+0x06d5, 0x06d5,
 0x06e5, 0x06e6,
-0x06e9, 0x06e9,
-0x06ee, 0x070d,
+0x06ee, 0x06ef,
+0x06fa, 0x06fc,
+0x06ff, 0x06ff,
 0x0710, 0x0710,
 0x0712, 0x072f,
 0x074d, 0x07a5,
 0x07b1, 0x07b1,
-0x07c0, 0x07ea,
-0x07f4, 0x07fa,
+0x07ca, 0x07ea,
+0x07f4, 0x07f5,
+0x07fa, 0x07fa,
 0x0800, 0x0815,
 0x081a, 0x081a,
 0x0824, 0x0824,
 0x0828, 0x0828,
-0x0830, 0x083e,
 0x0840, 0x0858,
-0x085e, 0x085e,
 0x08a0, 0x08b4,
-0x0903, 0x0939,
-0x093b, 0x093b,
-0x093d, 0x0940,
-0x0949, 0x094c,
-0x094e, 0x0950,
+0x0904, 0x0939,
+0x093d, 0x093d,
+0x0950, 0x0950,
 0x0958, 0x0961,
-0x0964, 0x0980,
-0x0982, 0x0983,
+0x0971, 0x0980,
 0x0985, 0x098c,
 0x098f, 0x0990,
 0x0993, 0x09a8,
@@ -16942,14 +13219,10 @@ CR_Grapheme_Base[] = { 743,
 0x09b2, 0x09b2,
 0x09b6, 0x09b9,
 0x09bd, 0x09bd,
-0x09bf, 0x09c0,
-0x09c7, 0x09c8,
-0x09cb, 0x09cc,
 0x09ce, 0x09ce,
 0x09dc, 0x09dd,
 0x09df, 0x09e1,
-0x09e6, 0x09fb,
-0x0a03, 0x0a03,
+0x09f0, 0x09f1,
 0x0a05, 0x0a0a,
 0x0a0f, 0x0a10,
 0x0a13, 0x0a28,
@@ -16957,26 +13230,19 @@ CR_Grapheme_Base[] = { 743,
 0x0a32, 0x0a33,
 0x0a35, 0x0a36,
 0x0a38, 0x0a39,
-0x0a3e, 0x0a40,
 0x0a59, 0x0a5c,
 0x0a5e, 0x0a5e,
-0x0a66, 0x0a6f,
 0x0a72, 0x0a74,
-0x0a83, 0x0a83,
 0x0a85, 0x0a8d,
 0x0a8f, 0x0a91,
 0x0a93, 0x0aa8,
 0x0aaa, 0x0ab0,
 0x0ab2, 0x0ab3,
 0x0ab5, 0x0ab9,
-0x0abd, 0x0ac0,
-0x0ac9, 0x0ac9,
-0x0acb, 0x0acc,
+0x0abd, 0x0abd,
 0x0ad0, 0x0ad0,
 0x0ae0, 0x0ae1,
-0x0ae6, 0x0af1,
 0x0af9, 0x0af9,
-0x0b02, 0x0b03,
 0x0b05, 0x0b0c,
 0x0b0f, 0x0b10,
 0x0b13, 0x0b28,
@@ -16984,12 +13250,9 @@ CR_Grapheme_Base[] = { 743,
 0x0b32, 0x0b33,
 0x0b35, 0x0b39,
 0x0b3d, 0x0b3d,
-0x0b40, 0x0b40,
-0x0b47, 0x0b48,
-0x0b4b, 0x0b4c,
 0x0b5c, 0x0b5d,
 0x0b5f, 0x0b61,
-0x0b66, 0x0b77,
+0x0b71, 0x0b71,
 0x0b83, 0x0b83,
 0x0b85, 0x0b8a,
 0x0b8e, 0x0b90,
@@ -17000,64 +13263,38 @@ CR_Grapheme_Base[] = { 743,
 0x0ba3, 0x0ba4,
 0x0ba8, 0x0baa,
 0x0bae, 0x0bb9,
-0x0bbf, 0x0bbf,
-0x0bc1, 0x0bc2,
-0x0bc6, 0x0bc8,
-0x0bca, 0x0bcc,
 0x0bd0, 0x0bd0,
-0x0be6, 0x0bfa,
-0x0c01, 0x0c03,
 0x0c05, 0x0c0c,
 0x0c0e, 0x0c10,
 0x0c12, 0x0c28,
 0x0c2a, 0x0c39,
 0x0c3d, 0x0c3d,
-0x0c41, 0x0c44,
 0x0c58, 0x0c5a,
 0x0c60, 0x0c61,
-0x0c66, 0x0c6f,
-0x0c78, 0x0c7f,
-0x0c82, 0x0c83,
 0x0c85, 0x0c8c,
 0x0c8e, 0x0c90,
 0x0c92, 0x0ca8,
 0x0caa, 0x0cb3,
 0x0cb5, 0x0cb9,
-0x0cbd, 0x0cbe,
-0x0cc0, 0x0cc1,
-0x0cc3, 0x0cc4,
-0x0cc7, 0x0cc8,
-0x0cca, 0x0ccb,
+0x0cbd, 0x0cbd,
 0x0cde, 0x0cde,
 0x0ce0, 0x0ce1,
-0x0ce6, 0x0cef,
 0x0cf1, 0x0cf2,
-0x0d02, 0x0d03,
 0x0d05, 0x0d0c,
 0x0d0e, 0x0d10,
 0x0d12, 0x0d3a,
 0x0d3d, 0x0d3d,
-0x0d3f, 0x0d40,
-0x0d46, 0x0d48,
-0x0d4a, 0x0d4c,
 0x0d4e, 0x0d4e,
 0x0d5f, 0x0d61,
-0x0d66, 0x0d75,
-0x0d79, 0x0d7f,
-0x0d82, 0x0d83,
+0x0d7a, 0x0d7f,
 0x0d85, 0x0d96,
 0x0d9a, 0x0db1,
 0x0db3, 0x0dbb,
 0x0dbd, 0x0dbd,
 0x0dc0, 0x0dc6,
-0x0dd0, 0x0dd1,
-0x0dd8, 0x0dde,
-0x0de6, 0x0def,
-0x0df2, 0x0df4,
 0x0e01, 0x0e30,
 0x0e32, 0x0e33,
-0x0e3f, 0x0e46,
-0x0e4f, 0x0e5b,
+0x0e40, 0x0e46,
 0x0e81, 0x0e82,
 0x0e84, 0x0e84,
 0x0e87, 0x0e88,
@@ -17074,35 +13311,25 @@ CR_Grapheme_Base[] = { 743,
 0x0ebd, 0x0ebd,
 0x0ec0, 0x0ec4,
 0x0ec6, 0x0ec6,
-0x0ed0, 0x0ed9,
 0x0edc, 0x0edf,
-0x0f00, 0x0f17,
-0x0f1a, 0x0f34,
-0x0f36, 0x0f36,
-0x0f38, 0x0f38,
-0x0f3a, 0x0f47,
+0x0f00, 0x0f00,
+0x0f40, 0x0f47,
 0x0f49, 0x0f6c,
-0x0f7f, 0x0f7f,
-0x0f85, 0x0f85,
 0x0f88, 0x0f8c,
-0x0fbe, 0x0fc5,
-0x0fc7, 0x0fcc,
-0x0fce, 0x0fda,
-0x1000, 0x102c,
-0x1031, 0x1031,
-0x1038, 0x1038,
-0x103b, 0x103c,
-0x103f, 0x1057,
+0x1000, 0x102a,
+0x103f, 0x103f,
+0x1050, 0x1055,
 0x105a, 0x105d,
-0x1061, 0x1070,
+0x1061, 0x1061,
+0x1065, 0x1066,
+0x106e, 0x1070,
 0x1075, 0x1081,
-0x1083, 0x1084,
-0x1087, 0x108c,
-0x108e, 0x109c,
-0x109e, 0x10c5,
+0x108e, 0x108e,
+0x10a0, 0x10c5,
 0x10c7, 0x10c7,
 0x10cd, 0x10cd,
-0x10d0, 0x1248,
+0x10d0, 0x10fa,
+0x10fc, 0x1248,
 0x124a, 0x124d,
 0x1250, 0x1256,
 0x1258, 0x1258,
@@ -17118,77 +13345,45 @@ CR_Grapheme_Base[] = { 743,
 0x12d8, 0x1310,
 0x1312, 0x1315,
 0x1318, 0x135a,
-0x1360, 0x137c,
-0x1380, 0x1399,
+0x1380, 0x138f,
 0x13a0, 0x13f5,
 0x13f8, 0x13fd,
-0x1400, 0x169c,
-0x16a0, 0x16f8,
+0x1401, 0x166c,
+0x166f, 0x167f,
+0x1681, 0x169a,
+0x16a0, 0x16ea,
+0x16f1, 0x16f8,
 0x1700, 0x170c,
 0x170e, 0x1711,
 0x1720, 0x1731,
-0x1735, 0x1736,
 0x1740, 0x1751,
 0x1760, 0x176c,
 0x176e, 0x1770,
 0x1780, 0x17b3,
-0x17b6, 0x17b6,
-0x17be, 0x17c5,
-0x17c7, 0x17c8,
-0x17d4, 0x17dc,
-0x17e0, 0x17e9,
-0x17f0, 0x17f9,
-0x1800, 0x180a,
-0x1810, 0x1819,
+0x17d7, 0x17d7,
+0x17dc, 0x17dc,
 0x1820, 0x1877,
 0x1880, 0x18a8,
 0x18aa, 0x18aa,
 0x18b0, 0x18f5,
 0x1900, 0x191e,
-0x1923, 0x1926,
-0x1929, 0x192b,
-0x1930, 0x1931,
-0x1933, 0x1938,
-0x1940, 0x1940,
-0x1944, 0x196d,
+0x1950, 0x196d,
 0x1970, 0x1974,
 0x1980, 0x19ab,
 0x19b0, 0x19c9,
-0x19d0, 0x19da,
-0x19de, 0x1a16,
-0x1a19, 0x1a1a,
-0x1a1e, 0x1a55,
-0x1a57, 0x1a57,
-0x1a61, 0x1a61,
-0x1a63, 0x1a64,
-0x1a6d, 0x1a72,
-0x1a80, 0x1a89,
-0x1a90, 0x1a99,
-0x1aa0, 0x1aad,
-0x1b04, 0x1b33,
-0x1b35, 0x1b35,
-0x1b3b, 0x1b3b,
-0x1b3d, 0x1b41,
-0x1b43, 0x1b4b,
-0x1b50, 0x1b6a,
-0x1b74, 0x1b7c,
-0x1b82, 0x1ba1,
-0x1ba6, 0x1ba7,
-0x1baa, 0x1baa,
-0x1bae, 0x1be5,
-0x1be7, 0x1be7,
-0x1bea, 0x1bec,
-0x1bee, 0x1bee,
-0x1bf2, 0x1bf3,
-0x1bfc, 0x1c2b,
-0x1c34, 0x1c35,
-0x1c3b, 0x1c49,
-0x1c4d, 0x1c7f,
-0x1cc0, 0x1cc7,
-0x1cd3, 0x1cd3,
-0x1ce1, 0x1ce1,
+0x1a00, 0x1a16,
+0x1a20, 0x1a54,
+0x1aa7, 0x1aa7,
+0x1b05, 0x1b33,
+0x1b45, 0x1b4b,
+0x1b83, 0x1ba0,
+0x1bae, 0x1baf,
+0x1bba, 0x1be5,
+0x1c00, 0x1c23,
+0x1c4d, 0x1c4f,
+0x1c5a, 0x1c7d,
 0x1ce9, 0x1cec,
-0x1cee, 0x1cf3,
+0x1cee, 0x1cf1,
 0x1cf5, 0x1cf6,
 0x1d00, 0x1dbf,
 0x1e00, 0x1f15,
@@ -17201,38 +13396,42 @@ CR_Grapheme_Base[] = { 743,
 0x1f5d, 0x1f5d,
 0x1f5f, 0x1f7d,
 0x1f80, 0x1fb4,
-0x1fb6, 0x1fc4,
-0x1fc6, 0x1fd3,
+0x1fb6, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fcc,
+0x1fd0, 0x1fd3,
 0x1fd6, 0x1fdb,
-0x1fdd, 0x1fef,
+0x1fe0, 0x1fec,
 0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffe,
-0x2000, 0x200a,
-0x2010, 0x2027,
-0x202f, 0x205f,
-0x2070, 0x2071,
-0x2074, 0x208e,
+0x1ff6, 0x1ffc,
+0x2071, 0x2071,
+0x207f, 0x207f,
 0x2090, 0x209c,
-0x20a0, 0x20be,
-0x2100, 0x218b,
-0x2190, 0x23fa,
-0x2400, 0x2426,
-0x2440, 0x244a,
-0x2460, 0x2b73,
-0x2b76, 0x2b95,
-0x2b98, 0x2bb9,
-0x2bbd, 0x2bc8,
-0x2bca, 0x2bd1,
-0x2bec, 0x2bef,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2119, 0x211d,
+0x2124, 0x2124,
+0x2126, 0x2126,
+0x2128, 0x2128,
+0x212a, 0x212d,
+0x212f, 0x2139,
+0x213c, 0x213f,
+0x2145, 0x2149,
+0x214e, 0x214e,
+0x2183, 0x2184,
 0x2c00, 0x2c2e,
 0x2c30, 0x2c5e,
-0x2c60, 0x2cee,
+0x2c60, 0x2ce4,
+0x2ceb, 0x2cee,
 0x2cf2, 0x2cf3,
-0x2cf9, 0x2d25,
+0x2d00, 0x2d25,
 0x2d27, 0x2d27,
 0x2d2d, 0x2d2d,
 0x2d30, 0x2d67,
-0x2d6f, 0x2d70,
+0x2d6f, 0x2d6f,
 0x2d80, 0x2d96,
 0x2da0, 0x2da6,
 0x2da8, 0x2dae,
@@ -17242,80 +13441,71 @@ CR_Grapheme_Base[] = { 743,
 0x2dc8, 0x2dce,
 0x2dd0, 0x2dd6,
 0x2dd8, 0x2dde,
-0x2e00, 0x2e42,
-0x2e80, 0x2e99,
-0x2e9b, 0x2ef3,
-0x2f00, 0x2fd5,
-0x2ff0, 0x2ffb,
-0x3000, 0x3029,
-0x3030, 0x303f,
+0x2e2f, 0x2e2f,
+0x3005, 0x3006,
+0x3031, 0x3035,
+0x303b, 0x303c,
 0x3041, 0x3096,
-0x309b, 0x30ff,
+0x309d, 0x309f,
+0x30a1, 0x30fa,
+0x30fc, 0x30ff,
 0x3105, 0x312d,
 0x3131, 0x318e,
-0x3190, 0x31ba,
-0x31c0, 0x31e3,
-0x31f0, 0x321e,
-0x3220, 0x32fe,
-0x3300, 0x4db5,
-0x4dc0, 0x9fd5,
+0x31a0, 0x31ba,
+0x31f0, 0x31ff,
+0x3400, 0x4db5,
+0x4e00, 0x9fd5,
 0xa000, 0xa48c,
-0xa490, 0xa4c6,
-0xa4d0, 0xa62b,
+0xa4d0, 0xa4fd,
+0xa500, 0xa60c,
+0xa610, 0xa61f,
+0xa62a, 0xa62b,
 0xa640, 0xa66e,
-0xa673, 0xa673,
-0xa67e, 0xa69d,
-0xa6a0, 0xa6ef,
-0xa6f2, 0xa6f7,
-0xa700, 0xa7ad,
+0xa67f, 0xa69d,
+0xa6a0, 0xa6e5,
+0xa717, 0xa71f,
+0xa722, 0xa788,
+0xa78b, 0xa7ad,
 0xa7b0, 0xa7b7,
 0xa7f7, 0xa801,
 0xa803, 0xa805,
 0xa807, 0xa80a,
-0xa80c, 0xa824,
-0xa827, 0xa82b,
-0xa830, 0xa839,
-0xa840, 0xa877,
-0xa880, 0xa8c3,
-0xa8ce, 0xa8d9,
-0xa8f2, 0xa8fd,
-0xa900, 0xa925,
-0xa92e, 0xa946,
-0xa952, 0xa953,
-0xa95f, 0xa97c,
-0xa983, 0xa9b2,
-0xa9b4, 0xa9b5,
-0xa9ba, 0xa9bb,
-0xa9bd, 0xa9cd,
-0xa9cf, 0xa9d9,
-0xa9de, 0xa9e4,
-0xa9e6, 0xa9fe,
+0xa80c, 0xa822,
+0xa840, 0xa873,
+0xa882, 0xa8b3,
+0xa8f2, 0xa8f7,
+0xa8fb, 0xa8fb,
+0xa8fd, 0xa8fd,
+0xa90a, 0xa925,
+0xa930, 0xa946,
+0xa960, 0xa97c,
+0xa984, 0xa9b2,
+0xa9cf, 0xa9cf,
+0xa9e0, 0xa9e4,
+0xa9e6, 0xa9ef,
+0xa9fa, 0xa9fe,
 0xaa00, 0xaa28,
-0xaa2f, 0xaa30,
-0xaa33, 0xaa34,
 0xaa40, 0xaa42,
 0xaa44, 0xaa4b,
-0xaa4d, 0xaa4d,
-0xaa50, 0xaa59,
-0xaa5c, 0xaa7b,
-0xaa7d, 0xaaaf,
+0xaa60, 0xaa76,
+0xaa7a, 0xaa7a,
+0xaa7e, 0xaaaf,
 0xaab1, 0xaab1,
 0xaab5, 0xaab6,
 0xaab9, 0xaabd,
 0xaac0, 0xaac0,
 0xaac2, 0xaac2,
-0xaadb, 0xaaeb,
-0xaaee, 0xaaf5,
+0xaadb, 0xaadd,
+0xaae0, 0xaaea,
+0xaaf2, 0xaaf4,
 0xab01, 0xab06,
 0xab09, 0xab0e,
 0xab11, 0xab16,
 0xab20, 0xab26,
 0xab28, 0xab2e,
-0xab30, 0xab65,
-0xab70, 0xabe4,
-0xabe6, 0xabe7,
-0xabe9, 0xabec,
-0xabf0, 0xabf9,
+0xab30, 0xab5a,
+0xab5c, 0xab65,
+0xab70, 0xabe2,
 0xac00, 0xd7a3,
 0xd7b0, 0xd7c6,
 0xd7cb, 0xd7fb,
@@ -17324,31 +13514,26 @@ CR_Grapheme_Base[] = { 743,
 0xfb00, 0xfb06,
 0xfb13, 0xfb17,
 0xfb1d, 0xfb1d,
-0xfb1f, 0xfb36,
+0xfb1f, 0xfb28,
+0xfb2a, 0xfb36,
 0xfb38, 0xfb3c,
 0xfb3e, 0xfb3e,
 0xfb40, 0xfb41,
 0xfb43, 0xfb44,
-0xfb46, 0xfbc1,
-0xfbd3, 0xfd3f,
+0xfb46, 0xfbb1,
+0xfbd3, 0xfd3d,
 0xfd50, 0xfd8f,
 0xfd92, 0xfdc7,
-0xfdf0, 0xfdfd,
-0xfe10, 0xfe19,
-0xfe30, 0xfe52,
-0xfe54, 0xfe66,
-0xfe68, 0xfe6b,
+0xfdf0, 0xfdfb,
 0xfe70, 0xfe74,
 0xfe76, 0xfefc,
-0xff01, 0xff9d,
-0xffa0, 0xffbe,
+0xff21, 0xff3a,
+0xff41, 0xff5a,
+0xff66, 0xffbe,
 0xffc2, 0xffc7,
 0xffca, 0xffcf,
 0xffd2, 0xffd7,
 0xffda, 0xffdc,
-0xffe0, 0xffe6,
-0xffe8, 0xffee,
-0xfffc, 0xfffd,
 0x10000, 0x1000b,
 0x1000d, 0x10026,
 0x10028, 0x1003a,
@@ -17356,26 +13541,18 @@ CR_Grapheme_Base[] = { 743,
 0x1003f, 0x1004d,
 0x10050, 0x1005d,
 0x10080, 0x100fa,
-0x10100, 0x10102,
-0x10107, 0x10133,
-0x10137, 0x1018c,
-0x10190, 0x1019b,
-0x101a0, 0x101a0,
-0x101d0, 0x101fc,
 0x10280, 0x1029c,
 0x102a0, 0x102d0,
-0x102e1, 0x102fb,
-0x10300, 0x10323,
-0x10330, 0x1034a,
+0x10300, 0x1031f,
+0x10330, 0x10340,
+0x10342, 0x10349,
 0x10350, 0x10375,
 0x10380, 0x1039d,
-0x1039f, 0x103c3,
-0x103c8, 0x103d5,
+0x103a0, 0x103c3,
+0x103c8, 0x103cf,
 0x10400, 0x1049d,
-0x104a0, 0x104a9,
 0x10500, 0x10527,
 0x10530, 0x10563,
-0x1056f, 0x1056f,
 0x10600, 0x10736,
 0x10740, 0x10755,
 0x10760, 0x10767,
@@ -17385,69 +13562,47 @@ CR_Grapheme_Base[] = { 743,
 0x10837, 0x10838,
 0x1083c, 0x1083c,
 0x1083f, 0x10855,
-0x10857, 0x1089e,
-0x108a7, 0x108af,
+0x10860, 0x10876,
+0x10880, 0x1089e,
 0x108e0, 0x108f2,
 0x108f4, 0x108f5,
-0x108fb, 0x1091b,
-0x1091f, 0x10939,
-0x1093f, 0x1093f,
+0x10900, 0x10915,
+0x10920, 0x10939,
 0x10980, 0x109b7,
-0x109bc, 0x109cf,
-0x109d2, 0x10a00,
+0x109be, 0x109bf,
+0x10a00, 0x10a00,
 0x10a10, 0x10a13,
 0x10a15, 0x10a17,
 0x10a19, 0x10a33,
-0x10a40, 0x10a47,
-0x10a50, 0x10a58,
-0x10a60, 0x10a9f,
-0x10ac0, 0x10ae4,
-0x10aeb, 0x10af6,
+0x10a60, 0x10a7c,
+0x10a80, 0x10a9c,
+0x10ac0, 0x10ac7,
+0x10ac9, 0x10ae4,
 0x10b00, 0x10b35,
-0x10b39, 0x10b55,
-0x10b58, 0x10b72,
-0x10b78, 0x10b91,
-0x10b99, 0x10b9c,
-0x10ba9, 0x10baf,
+0x10b40, 0x10b55,
+0x10b60, 0x10b72,
+0x10b80, 0x10b91,
 0x10c00, 0x10c48,
 0x10c80, 0x10cb2,
 0x10cc0, 0x10cf2,
-0x10cfa, 0x10cff,
-0x10e60, 0x10e7e,
-0x11000, 0x11000,
-0x11002, 0x11037,
-0x11047, 0x1104d,
-0x11052, 0x1106f,
-0x11082, 0x110b2,
-0x110b7, 0x110b8,
-0x110bb, 0x110bc,
-0x110be, 0x110c1,
+0x11003, 0x11037,
+0x11083, 0x110af,
 0x110d0, 0x110e8,
-0x110f0, 0x110f9,
 0x11103, 0x11126,
-0x1112c, 0x1112c,
-0x11136, 0x11143,
 0x11150, 0x11172,
-0x11174, 0x11176,
-0x11182, 0x111b5,
-0x111bf, 0x111c9,
-0x111cd, 0x111cd,
-0x111d0, 0x111df,
-0x111e1, 0x111f4,
+0x11176, 0x11176,
+0x11183, 0x111b2,
+0x111c1, 0x111c4,
+0x111da, 0x111da,
+0x111dc, 0x111dc,
 0x11200, 0x11211,
-0x11213, 0x1122e,
-0x11232, 0x11233,
-0x11235, 0x11235,
-0x11238, 0x1123d,
+0x11213, 0x1122b,
 0x11280, 0x11286,
 0x11288, 0x11288,
 0x1128a, 0x1128d,
 0x1128f, 0x1129d,
-0x1129f, 0x112a9,
+0x1129f, 0x112a8,
 0x112b0, 0x112de,
-0x112e0, 0x112e2,
-0x112f0, 0x112f9,
-0x11302, 0x11303,
 0x11305, 0x1130c,
 0x1130f, 0x11310,
 0x11313, 0x11328,
@@ -17455,82 +13610,39 @@ CR_Grapheme_Base[] = { 743,
 0x11332, 0x11333,
 0x11335, 0x11339,
 0x1133d, 0x1133d,
-0x1133f, 0x1133f,
-0x11341, 0x11344,
-0x11347, 0x11348,
-0x1134b, 0x1134d,
 0x11350, 0x11350,
-0x1135d, 0x11363,
+0x1135d, 0x11361,
 0x11480, 0x114af,
-0x114b1, 0x114b2,
-0x114b9, 0x114b9,
-0x114bb, 0x114bc,
-0x114be, 0x114be,
-0x114c1, 0x114c1,
-0x114c4, 0x114c7,
-0x114d0, 0x114d9,
+0x114c4, 0x114c5,
+0x114c7, 0x114c7,
 0x11580, 0x115ae,
-0x115b0, 0x115b1,
-0x115b8, 0x115bb,
-0x115be, 0x115be,
-0x115c1, 0x115db,
-0x11600, 0x11632,
-0x1163b, 0x1163c,
-0x1163e, 0x1163e,
-0x11641, 0x11644,
-0x11650, 0x11659,
+0x115d8, 0x115db,
+0x11600, 0x1162f,
+0x11644, 0x11644,
 0x11680, 0x116aa,
-0x116ac, 0x116ac,
-0x116ae, 0x116af,
-0x116b6, 0x116b6,
-0x116c0, 0x116c9,
 0x11700, 0x11719,
-0x11720, 0x11721,
-0x11726, 0x11726,
-0x11730, 0x1173f,
-0x118a0, 0x118f2,
+0x118a0, 0x118df,
 0x118ff, 0x118ff,
 0x11ac0, 0x11af8,
 0x12000, 0x12399,
-0x12400, 0x1246e,
-0x12470, 0x12474,
 0x12480, 0x12543,
 0x13000, 0x1342e,
 0x14400, 0x14646,
 0x16800, 0x16a38,
-0x16a40, 0x16a5e,
-0x16a60, 0x16a69,
-0x16a6e, 0x16a6f,
+0x16a40, 0x16a5e,
 0x16ad0, 0x16aed,
-0x16af5, 0x16af5,
 0x16b00, 0x16b2f,
-0x16b37, 0x16b45,
-0x16b50, 0x16b59,
-0x16b5b, 0x16b61,
+0x16b40, 0x16b43,
 0x16b63, 0x16b77,
 0x16b7d, 0x16b8f,
 0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
+0x16f50, 0x16f50,
 0x16f93, 0x16f9f,
 0x1b000, 0x1b001,
 0x1bc00, 0x1bc6a,
 0x1bc70, 0x1bc7c,
 0x1bc80, 0x1bc88,
 0x1bc90, 0x1bc99,
-0x1bc9c, 0x1bc9c,
-0x1bc9f, 0x1bc9f,
-0x1d000, 0x1d0f5,
-0x1d100, 0x1d126,
-0x1d129, 0x1d164,
-0x1d166, 0x1d166,
-0x1d16a, 0x1d16d,
-0x1d183, 0x1d184,
-0x1d18c, 0x1d1a9,
-0x1d1ae, 0x1d1e8,
-0x1d200, 0x1d241,
-0x1d245, 0x1d245,
-0x1d300, 0x1d356,
-0x1d360, 0x1d371,
 0x1d400, 0x1d454,
 0x1d456, 0x1d49c,
 0x1d49e, 0x1d49f,
@@ -17550,14 +13662,18 @@ CR_Grapheme_Base[] = { 743,
 0x1d546, 0x1d546,
 0x1d54a, 0x1d550,
 0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d7cb,
-0x1d7ce, 0x1d9ff,
-0x1da37, 0x1da3a,
-0x1da6d, 0x1da74,
-0x1da76, 0x1da83,
-0x1da85, 0x1da8b,
+0x1d6a8, 0x1d6c0,
+0x1d6c2, 0x1d6da,
+0x1d6dc, 0x1d6fa,
+0x1d6fc, 0x1d714,
+0x1d716, 0x1d734,
+0x1d736, 0x1d74e,
+0x1d750, 0x1d76e,
+0x1d770, 0x1d788,
+0x1d78a, 0x1d7a8,
+0x1d7aa, 0x1d7c2,
+0x1d7c4, 0x1d7cb,
 0x1e800, 0x1e8c4,
-0x1e8c7, 0x1e8cf,
 0x1ee00, 0x1ee03,
 0x1ee05, 0x1ee1f,
 0x1ee21, 0x1ee22,
@@ -17591,200 +13707,108 @@ CR_Grapheme_Base[] = { 743,
 0x1eea1, 0x1eea3,
 0x1eea5, 0x1eea9,
 0x1eeab, 0x1eebb,
-0x1eef0, 0x1eef1,
-0x1f000, 0x1f02b,
-0x1f030, 0x1f093,
-0x1f0a0, 0x1f0ae,
-0x1f0b1, 0x1f0bf,
-0x1f0c1, 0x1f0cf,
-0x1f0d1, 0x1f0f5,
-0x1f100, 0x1f10c,
-0x1f110, 0x1f12e,
-0x1f130, 0x1f16b,
-0x1f170, 0x1f19a,
-0x1f1e6, 0x1f202,
-0x1f210, 0x1f23a,
-0x1f240, 0x1f248,
-0x1f250, 0x1f251,
-0x1f300, 0x1f579,
-0x1f57b, 0x1f5a3,
-0x1f5a5, 0x1f6d0,
-0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f3,
-0x1f700, 0x1f773,
-0x1f780, 0x1f7d4,
-0x1f800, 0x1f80b,
-0x1f810, 0x1f847,
-0x1f850, 0x1f859,
-0x1f860, 0x1f887,
-0x1f890, 0x1f8ad,
-0x1f910, 0x1f918,
-0x1f980, 0x1f984,
-0x1f9c0, 0x1f9c0,
 0x20000, 0x2a6d6,
 0x2a700, 0x2b734,
 0x2b740, 0x2b81d,
 0x2b820, 0x2cea1,
 0x2f800, 0x2fa1d,
-}; /* END of CR_Grapheme_Base */
-
-/* PROPERTY: 'Grapheme_Link': Derived Property */
-static const OnigCodePoint
-CR_Grapheme_Link[] = { 41,
-0x094d, 0x094d,
-0x09cd, 0x09cd,
-0x0a4d, 0x0a4d,
-0x0acd, 0x0acd,
-0x0b4d, 0x0b4d,
-0x0bcd, 0x0bcd,
-0x0c4d, 0x0c4d,
-0x0ccd, 0x0ccd,
-0x0d4d, 0x0d4d,
-0x0dca, 0x0dca,
-0x0e3a, 0x0e3a,
-0x0f84, 0x0f84,
-0x1039, 0x103a,
-0x1714, 0x1714,
-0x1734, 0x1734,
-0x17d2, 0x17d2,
-0x1a60, 0x1a60,
-0x1b44, 0x1b44,
-0x1baa, 0x1bab,
-0x1bf2, 0x1bf3,
-0x2d7f, 0x2d7f,
-0xa806, 0xa806,
-0xa8c4, 0xa8c4,
-0xa953, 0xa953,
-0xa9c0, 0xa9c0,
-0xaaf6, 0xaaf6,
-0xabed, 0xabed,
-0x10a3f, 0x10a3f,
-0x11046, 0x11046,
-0x1107f, 0x1107f,
-0x110b9, 0x110b9,
-0x11133, 0x11134,
-0x111c0, 0x111c0,
-0x11235, 0x11235,
-0x112ea, 0x112ea,
-0x1134d, 0x1134d,
-0x114c2, 0x114c2,
-0x115bf, 0x115bf,
-0x1163f, 0x1163f,
-0x116b6, 0x116b6,
-0x1172b, 0x1172b,
-}; /* END of CR_Grapheme_Link */
+}; /* END of CR_L */
 
-/* PROPERTY: 'Common': Script */
+/* PROPERTY: 'LC': General Category */
 static const OnigCodePoint
-CR_Common[] = { 161,
-0x0000, 0x0040,
-0x005b, 0x0060,
-0x007b, 0x00a9,
-0x00ab, 0x00b9,
-0x00bb, 0x00bf,
-0x00d7, 0x00d7,
-0x00f7, 0x00f7,
-0x02b9, 0x02df,
-0x02e5, 0x02e9,
-0x02ec, 0x02ff,
-0x0374, 0x0374,
-0x037e, 0x037e,
-0x0385, 0x0385,
-0x0387, 0x0387,
-0x0589, 0x0589,
-0x0605, 0x0605,
-0x060c, 0x060c,
-0x061b, 0x061c,
-0x061f, 0x061f,
-0x0640, 0x0640,
-0x06dd, 0x06dd,
-0x0964, 0x0965,
-0x0e3f, 0x0e3f,
-0x0fd5, 0x0fd8,
-0x10fb, 0x10fb,
-0x16eb, 0x16ed,
-0x1735, 0x1736,
-0x1802, 0x1803,
-0x1805, 0x1805,
-0x1cd3, 0x1cd3,
-0x1ce1, 0x1ce1,
-0x1ce9, 0x1cec,
-0x1cee, 0x1cf3,
-0x1cf5, 0x1cf6,
-0x2000, 0x200b,
-0x200e, 0x2064,
-0x2066, 0x2070,
-0x2074, 0x207e,
-0x2080, 0x208e,
-0x20a0, 0x20be,
-0x2100, 0x2125,
-0x2127, 0x2129,
-0x212c, 0x2131,
-0x2133, 0x214d,
-0x214f, 0x215f,
-0x2189, 0x218b,
-0x2190, 0x23fa,
-0x2400, 0x2426,
-0x2440, 0x244a,
-0x2460, 0x27ff,
-0x2900, 0x2b73,
-0x2b76, 0x2b95,
-0x2b98, 0x2bb9,
-0x2bbd, 0x2bc8,
-0x2bca, 0x2bd1,
-0x2bec, 0x2bef,
-0x2e00, 0x2e42,
-0x2ff0, 0x2ffb,
-0x3000, 0x3004,
-0x3006, 0x3006,
-0x3008, 0x3020,
-0x3030, 0x3037,
-0x303c, 0x303f,
-0x309b, 0x309c,
-0x30a0, 0x30a0,
-0x30fb, 0x30fc,
-0x3190, 0x319f,
-0x31c0, 0x31e3,
-0x3220, 0x325f,
-0x327f, 0x32cf,
-0x3358, 0x33ff,
-0x4dc0, 0x4dff,
-0xa700, 0xa721,
-0xa788, 0xa78a,
-0xa830, 0xa839,
-0xa92e, 0xa92e,
-0xa9cf, 0xa9cf,
-0xab5b, 0xab5b,
-0xfd3e, 0xfd3f,
-0xfe10, 0xfe19,
-0xfe30, 0xfe52,
-0xfe54, 0xfe66,
-0xfe68, 0xfe6b,
-0xfeff, 0xfeff,
-0xff01, 0xff20,
-0xff3b, 0xff40,
-0xff5b, 0xff65,
-0xff70, 0xff70,
-0xff9e, 0xff9f,
-0xffe0, 0xffe6,
-0xffe8, 0xffee,
-0xfff9, 0xfffd,
-0x10100, 0x10102,
-0x10107, 0x10133,
-0x10137, 0x1013f,
-0x10190, 0x1019b,
-0x101d0, 0x101fc,
-0x102e1, 0x102fb,
-0x1bca0, 0x1bca3,
-0x1d000, 0x1d0f5,
-0x1d100, 0x1d126,
-0x1d129, 0x1d166,
-0x1d16a, 0x1d17a,
-0x1d183, 0x1d184,
-0x1d18c, 0x1d1a9,
-0x1d1ae, 0x1d1e8,
-0x1d300, 0x1d356,
-0x1d360, 0x1d371,
+CR_LC[] = { 122,
+0x0041, 0x005a,
+0x0061, 0x007a,
+0x00b5, 0x00b5,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x01ba,
+0x01bc, 0x01bf,
+0x01c4, 0x0293,
+0x0295, 0x02af,
+0x0370, 0x0373,
+0x0376, 0x0377,
+0x037b, 0x037d,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03f5,
+0x03f7, 0x0481,
+0x048a, 0x052f,
+0x0531, 0x0556,
+0x0561, 0x0587,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0x1d00, 0x1d2b,
+0x1d6b, 0x1d77,
+0x1d79, 0x1d9a,
+0x1e00, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fe0, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffc,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2119, 0x211d,
+0x2124, 0x2124,
+0x2126, 0x2126,
+0x2128, 0x2128,
+0x212a, 0x212d,
+0x212f, 0x2134,
+0x2139, 0x2139,
+0x213c, 0x213f,
+0x2145, 0x2149,
+0x214e, 0x214e,
+0x2183, 0x2184,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x2c60, 0x2c7b,
+0x2c7e, 0x2ce4,
+0x2ceb, 0x2cee,
+0x2cf2, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0xa640, 0xa66d,
+0xa680, 0xa69b,
+0xa722, 0xa76f,
+0xa771, 0xa787,
+0xa78b, 0xa78e,
+0xa790, 0xa7ad,
+0xa7b0, 0xa7b7,
+0xa7fa, 0xa7fa,
+0xab30, 0xab5a,
+0xab60, 0xab65,
+0xab70, 0xabbf,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xff21, 0xff3a,
+0xff41, 0xff5a,
+0x10400, 0x1044f,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x118a0, 0x118df,
 0x1d400, 0x1d454,
 0x1d456, 0x1d49c,
 0x1d49e, 0x1d49f,
@@ -17794,271 +13818,870 @@ CR_Common[] = { 161,
 0x1d4ae, 0x1d4b9,
 0x1d4bb, 0x1d4bb,
 0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d7cb,
-0x1d7ce, 0x1d7ff,
-0x1f000, 0x1f02b,
-0x1f030, 0x1f093,
-0x1f0a0, 0x1f0ae,
-0x1f0b1, 0x1f0bf,
-0x1f0c1, 0x1f0cf,
-0x1f0d1, 0x1f0f5,
-0x1f100, 0x1f10c,
-0x1f110, 0x1f12e,
-0x1f130, 0x1f16b,
-0x1f170, 0x1f19a,
-0x1f1e6, 0x1f1ff,
-0x1f201, 0x1f202,
-0x1f210, 0x1f23a,
-0x1f240, 0x1f248,
-0x1f250, 0x1f251,
-0x1f300, 0x1f579,
-0x1f57b, 0x1f5a3,
-0x1f5a5, 0x1f6d0,
-0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f3,
-0x1f700, 0x1f773,
-0x1f780, 0x1f7d4,
-0x1f800, 0x1f80b,
-0x1f810, 0x1f847,
-0x1f850, 0x1f859,
-0x1f860, 0x1f887,
-0x1f890, 0x1f8ad,
-0x1f910, 0x1f918,
-0x1f980, 0x1f984,
-0x1f9c0, 0x1f9c0,
-0xe0001, 0xe0001,
-0xe0020, 0xe007f,
-}; /* END of CR_Common */
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d6c0,
+0x1d6c2, 0x1d6da,
+0x1d6dc, 0x1d6fa,
+0x1d6fc, 0x1d714,
+0x1d716, 0x1d734,
+0x1d736, 0x1d74e,
+0x1d750, 0x1d76e,
+0x1d770, 0x1d788,
+0x1d78a, 0x1d7a8,
+0x1d7aa, 0x1d7c2,
+0x1d7c4, 0x1d7cb,
+}; /* END of CR_LC */
+
+/* PROPERTY: 'Lao': Script */
+static const OnigCodePoint
+CR_Lao[] = { 18,
+0x0e81, 0x0e82,
+0x0e84, 0x0e84,
+0x0e87, 0x0e88,
+0x0e8a, 0x0e8a,
+0x0e8d, 0x0e8d,
+0x0e94, 0x0e97,
+0x0e99, 0x0e9f,
+0x0ea1, 0x0ea3,
+0x0ea5, 0x0ea5,
+0x0ea7, 0x0ea7,
+0x0eaa, 0x0eab,
+0x0ead, 0x0eb9,
+0x0ebb, 0x0ebd,
+0x0ec0, 0x0ec4,
+0x0ec6, 0x0ec6,
+0x0ec8, 0x0ecd,
+0x0ed0, 0x0ed9,
+0x0edc, 0x0edf,
+}; /* END of CR_Lao */
+
+/* PROPERTY: 'Latin': Script */
+static const OnigCodePoint
+CR_Latin[] = { 31,
+0x0041, 0x005a,
+0x0061, 0x007a,
+0x00aa, 0x00aa,
+0x00ba, 0x00ba,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x02b8,
+0x02e0, 0x02e4,
+0x1d00, 0x1d25,
+0x1d2c, 0x1d5c,
+0x1d62, 0x1d65,
+0x1d6b, 0x1d77,
+0x1d79, 0x1dbe,
+0x1e00, 0x1eff,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x212a, 0x212b,
+0x2132, 0x2132,
+0x214e, 0x214e,
+0x2160, 0x2188,
+0x2c60, 0x2c7f,
+0xa722, 0xa787,
+0xa78b, 0xa7ad,
+0xa7b0, 0xa7b7,
+0xa7f7, 0xa7ff,
+0xab30, 0xab5a,
+0xab5c, 0xab64,
+0xfb00, 0xfb06,
+0xff21, 0xff3a,
+0xff41, 0xff5a,
+}; /* END of CR_Latin */
+
+/* PROPERTY: 'Lepcha': Script */
+static const OnigCodePoint
+CR_Lepcha[] = { 3,
+0x1c00, 0x1c37,
+0x1c3b, 0x1c49,
+0x1c4d, 0x1c4f,
+}; /* END of CR_Lepcha */
+
+/* PROPERTY: 'Limbu': Script */
+static const OnigCodePoint
+CR_Limbu[] = { 5,
+0x1900, 0x191e,
+0x1920, 0x192b,
+0x1930, 0x193b,
+0x1940, 0x1940,
+0x1944, 0x194f,
+}; /* END of CR_Limbu */
+
+/* PROPERTY: 'Linear_A': Script */
+static const OnigCodePoint
+CR_Linear_A[] = { 3,
+0x10600, 0x10736,
+0x10740, 0x10755,
+0x10760, 0x10767,
+}; /* END of CR_Linear_A */
+
+/* PROPERTY: 'Linear_B': Script */
+static const OnigCodePoint
+CR_Linear_B[] = { 7,
+0x10000, 0x1000b,
+0x1000d, 0x10026,
+0x10028, 0x1003a,
+0x1003c, 0x1003d,
+0x1003f, 0x1004d,
+0x10050, 0x1005d,
+0x10080, 0x100fa,
+}; /* END of CR_Linear_B */
+
+/* PROPERTY: 'Lisu': Script */
+static const OnigCodePoint
+CR_Lisu[] = { 1,
+0xa4d0, 0xa4ff,
+}; /* END of CR_Lisu */
+
+/* PROPERTY: 'Ll': General Category */
+static const OnigCodePoint
+CR_Ll[] = { 630,
+0x0061, 0x007a,
+0x00b5, 0x00b5,
+0x00df, 0x00f6,
+0x00f8, 0x00ff,
+0x0101, 0x0101,
+0x0103, 0x0103,
+0x0105, 0x0105,
+0x0107, 0x0107,
+0x0109, 0x0109,
+0x010b, 0x010b,
+0x010d, 0x010d,
+0x010f, 0x010f,
+0x0111, 0x0111,
+0x0113, 0x0113,
+0x0115, 0x0115,
+0x0117, 0x0117,
+0x0119, 0x0119,
+0x011b, 0x011b,
+0x011d, 0x011d,
+0x011f, 0x011f,
+0x0121, 0x0121,
+0x0123, 0x0123,
+0x0125, 0x0125,
+0x0127, 0x0127,
+0x0129, 0x0129,
+0x012b, 0x012b,
+0x012d, 0x012d,
+0x012f, 0x012f,
+0x0131, 0x0131,
+0x0133, 0x0133,
+0x0135, 0x0135,
+0x0137, 0x0138,
+0x013a, 0x013a,
+0x013c, 0x013c,
+0x013e, 0x013e,
+0x0140, 0x0140,
+0x0142, 0x0142,
+0x0144, 0x0144,
+0x0146, 0x0146,
+0x0148, 0x0149,
+0x014b, 0x014b,
+0x014d, 0x014d,
+0x014f, 0x014f,
+0x0151, 0x0151,
+0x0153, 0x0153,
+0x0155, 0x0155,
+0x0157, 0x0157,
+0x0159, 0x0159,
+0x015b, 0x015b,
+0x015d, 0x015d,
+0x015f, 0x015f,
+0x0161, 0x0161,
+0x0163, 0x0163,
+0x0165, 0x0165,
+0x0167, 0x0167,
+0x0169, 0x0169,
+0x016b, 0x016b,
+0x016d, 0x016d,
+0x016f, 0x016f,
+0x0171, 0x0171,
+0x0173, 0x0173,
+0x0175, 0x0175,
+0x0177, 0x0177,
+0x017a, 0x017a,
+0x017c, 0x017c,
+0x017e, 0x0180,
+0x0183, 0x0183,
+0x0185, 0x0185,
+0x0188, 0x0188,
+0x018c, 0x018d,
+0x0192, 0x0192,
+0x0195, 0x0195,
+0x0199, 0x019b,
+0x019e, 0x019e,
+0x01a1, 0x01a1,
+0x01a3, 0x01a3,
+0x01a5, 0x01a5,
+0x01a8, 0x01a8,
+0x01aa, 0x01ab,
+0x01ad, 0x01ad,
+0x01b0, 0x01b0,
+0x01b4, 0x01b4,
+0x01b6, 0x01b6,
+0x01b9, 0x01ba,
+0x01bd, 0x01bf,
+0x01c6, 0x01c6,
+0x01c9, 0x01c9,
+0x01cc, 0x01cc,
+0x01ce, 0x01ce,
+0x01d0, 0x01d0,
+0x01d2, 0x01d2,
+0x01d4, 0x01d4,
+0x01d6, 0x01d6,
+0x01d8, 0x01d8,
+0x01da, 0x01da,
+0x01dc, 0x01dd,
+0x01df, 0x01df,
+0x01e1, 0x01e1,
+0x01e3, 0x01e3,
+0x01e5, 0x01e5,
+0x01e7, 0x01e7,
+0x01e9, 0x01e9,
+0x01eb, 0x01eb,
+0x01ed, 0x01ed,
+0x01ef, 0x01f0,
+0x01f3, 0x01f3,
+0x01f5, 0x01f5,
+0x01f9, 0x01f9,
+0x01fb, 0x01fb,
+0x01fd, 0x01fd,
+0x01ff, 0x01ff,
+0x0201, 0x0201,
+0x0203, 0x0203,
+0x0205, 0x0205,
+0x0207, 0x0207,
+0x0209, 0x0209,
+0x020b, 0x020b,
+0x020d, 0x020d,
+0x020f, 0x020f,
+0x0211, 0x0211,
+0x0213, 0x0213,
+0x0215, 0x0215,
+0x0217, 0x0217,
+0x0219, 0x0219,
+0x021b, 0x021b,
+0x021d, 0x021d,
+0x021f, 0x021f,
+0x0221, 0x0221,
+0x0223, 0x0223,
+0x0225, 0x0225,
+0x0227, 0x0227,
+0x0229, 0x0229,
+0x022b, 0x022b,
+0x022d, 0x022d,
+0x022f, 0x022f,
+0x0231, 0x0231,
+0x0233, 0x0239,
+0x023c, 0x023c,
+0x023f, 0x0240,
+0x0242, 0x0242,
+0x0247, 0x0247,
+0x0249, 0x0249,
+0x024b, 0x024b,
+0x024d, 0x024d,
+0x024f, 0x0293,
+0x0295, 0x02af,
+0x0371, 0x0371,
+0x0373, 0x0373,
+0x0377, 0x0377,
+0x037b, 0x037d,
+0x0390, 0x0390,
+0x03ac, 0x03ce,
+0x03d0, 0x03d1,
+0x03d5, 0x03d7,
+0x03d9, 0x03d9,
+0x03db, 0x03db,
+0x03dd, 0x03dd,
+0x03df, 0x03df,
+0x03e1, 0x03e1,
+0x03e3, 0x03e3,
+0x03e5, 0x03e5,
+0x03e7, 0x03e7,
+0x03e9, 0x03e9,
+0x03eb, 0x03eb,
+0x03ed, 0x03ed,
+0x03ef, 0x03f3,
+0x03f5, 0x03f5,
+0x03f8, 0x03f8,
+0x03fb, 0x03fc,
+0x0430, 0x045f,
+0x0461, 0x0461,
+0x0463, 0x0463,
+0x0465, 0x0465,
+0x0467, 0x0467,
+0x0469, 0x0469,
+0x046b, 0x046b,
+0x046d, 0x046d,
+0x046f, 0x046f,
+0x0471, 0x0471,
+0x0473, 0x0473,
+0x0475, 0x0475,
+0x0477, 0x0477,
+0x0479, 0x0479,
+0x047b, 0x047b,
+0x047d, 0x047d,
+0x047f, 0x047f,
+0x0481, 0x0481,
+0x048b, 0x048b,
+0x048d, 0x048d,
+0x048f, 0x048f,
+0x0491, 0x0491,
+0x0493, 0x0493,
+0x0495, 0x0495,
+0x0497, 0x0497,
+0x0499, 0x0499,
+0x049b, 0x049b,
+0x049d, 0x049d,
+0x049f, 0x049f,
+0x04a1, 0x04a1,
+0x04a3, 0x04a3,
+0x04a5, 0x04a5,
+0x04a7, 0x04a7,
+0x04a9, 0x04a9,
+0x04ab, 0x04ab,
+0x04ad, 0x04ad,
+0x04af, 0x04af,
+0x04b1, 0x04b1,
+0x04b3, 0x04b3,
+0x04b5, 0x04b5,
+0x04b7, 0x04b7,
+0x04b9, 0x04b9,
+0x04bb, 0x04bb,
+0x04bd, 0x04bd,
+0x04bf, 0x04bf,
+0x04c2, 0x04c2,
+0x04c4, 0x04c4,
+0x04c6, 0x04c6,
+0x04c8, 0x04c8,
+0x04ca, 0x04ca,
+0x04cc, 0x04cc,
+0x04ce, 0x04cf,
+0x04d1, 0x04d1,
+0x04d3, 0x04d3,
+0x04d5, 0x04d5,
+0x04d7, 0x04d7,
+0x04d9, 0x04d9,
+0x04db, 0x04db,
+0x04dd, 0x04dd,
+0x04df, 0x04df,
+0x04e1, 0x04e1,
+0x04e3, 0x04e3,
+0x04e5, 0x04e5,
+0x04e7, 0x04e7,
+0x04e9, 0x04e9,
+0x04eb, 0x04eb,
+0x04ed, 0x04ed,
+0x04ef, 0x04ef,
+0x04f1, 0x04f1,
+0x04f3, 0x04f3,
+0x04f5, 0x04f5,
+0x04f7, 0x04f7,
+0x04f9, 0x04f9,
+0x04fb, 0x04fb,
+0x04fd, 0x04fd,
+0x04ff, 0x04ff,
+0x0501, 0x0501,
+0x0503, 0x0503,
+0x0505, 0x0505,
+0x0507, 0x0507,
+0x0509, 0x0509,
+0x050b, 0x050b,
+0x050d, 0x050d,
+0x050f, 0x050f,
+0x0511, 0x0511,
+0x0513, 0x0513,
+0x0515, 0x0515,
+0x0517, 0x0517,
+0x0519, 0x0519,
+0x051b, 0x051b,
+0x051d, 0x051d,
+0x051f, 0x051f,
+0x0521, 0x0521,
+0x0523, 0x0523,
+0x0525, 0x0525,
+0x0527, 0x0527,
+0x0529, 0x0529,
+0x052b, 0x052b,
+0x052d, 0x052d,
+0x052f, 0x052f,
+0x0561, 0x0587,
+0x13f8, 0x13fd,
+0x1d00, 0x1d2b,
+0x1d6b, 0x1d77,
+0x1d79, 0x1d9a,
+0x1e01, 0x1e01,
+0x1e03, 0x1e03,
+0x1e05, 0x1e05,
+0x1e07, 0x1e07,
+0x1e09, 0x1e09,
+0x1e0b, 0x1e0b,
+0x1e0d, 0x1e0d,
+0x1e0f, 0x1e0f,
+0x1e11, 0x1e11,
+0x1e13, 0x1e13,
+0x1e15, 0x1e15,
+0x1e17, 0x1e17,
+0x1e19, 0x1e19,
+0x1e1b, 0x1e1b,
+0x1e1d, 0x1e1d,
+0x1e1f, 0x1e1f,
+0x1e21, 0x1e21,
+0x1e23, 0x1e23,
+0x1e25, 0x1e25,
+0x1e27, 0x1e27,
+0x1e29, 0x1e29,
+0x1e2b, 0x1e2b,
+0x1e2d, 0x1e2d,
+0x1e2f, 0x1e2f,
+0x1e31, 0x1e31,
+0x1e33, 0x1e33,
+0x1e35, 0x1e35,
+0x1e37, 0x1e37,
+0x1e39, 0x1e39,
+0x1e3b, 0x1e3b,
+0x1e3d, 0x1e3d,
+0x1e3f, 0x1e3f,
+0x1e41, 0x1e41,
+0x1e43, 0x1e43,
+0x1e45, 0x1e45,
+0x1e47, 0x1e47,
+0x1e49, 0x1e49,
+0x1e4b, 0x1e4b,
+0x1e4d, 0x1e4d,
+0x1e4f, 0x1e4f,
+0x1e51, 0x1e51,
+0x1e53, 0x1e53,
+0x1e55, 0x1e55,
+0x1e57, 0x1e57,
+0x1e59, 0x1e59,
+0x1e5b, 0x1e5b,
+0x1e5d, 0x1e5d,
+0x1e5f, 0x1e5f,
+0x1e61, 0x1e61,
+0x1e63, 0x1e63,
+0x1e65, 0x1e65,
+0x1e67, 0x1e67,
+0x1e69, 0x1e69,
+0x1e6b, 0x1e6b,
+0x1e6d, 0x1e6d,
+0x1e6f, 0x1e6f,
+0x1e71, 0x1e71,
+0x1e73, 0x1e73,
+0x1e75, 0x1e75,
+0x1e77, 0x1e77,
+0x1e79, 0x1e79,
+0x1e7b, 0x1e7b,
+0x1e7d, 0x1e7d,
+0x1e7f, 0x1e7f,
+0x1e81, 0x1e81,
+0x1e83, 0x1e83,
+0x1e85, 0x1e85,
+0x1e87, 0x1e87,
+0x1e89, 0x1e89,
+0x1e8b, 0x1e8b,
+0x1e8d, 0x1e8d,
+0x1e8f, 0x1e8f,
+0x1e91, 0x1e91,
+0x1e93, 0x1e93,
+0x1e95, 0x1e9d,
+0x1e9f, 0x1e9f,
+0x1ea1, 0x1ea1,
+0x1ea3, 0x1ea3,
+0x1ea5, 0x1ea5,
+0x1ea7, 0x1ea7,
+0x1ea9, 0x1ea9,
+0x1eab, 0x1eab,
+0x1ead, 0x1ead,
+0x1eaf, 0x1eaf,
+0x1eb1, 0x1eb1,
+0x1eb3, 0x1eb3,
+0x1eb5, 0x1eb5,
+0x1eb7, 0x1eb7,
+0x1eb9, 0x1eb9,
+0x1ebb, 0x1ebb,
+0x1ebd, 0x1ebd,
+0x1ebf, 0x1ebf,
+0x1ec1, 0x1ec1,
+0x1ec3, 0x1ec3,
+0x1ec5, 0x1ec5,
+0x1ec7, 0x1ec7,
+0x1ec9, 0x1ec9,
+0x1ecb, 0x1ecb,
+0x1ecd, 0x1ecd,
+0x1ecf, 0x1ecf,
+0x1ed1, 0x1ed1,
+0x1ed3, 0x1ed3,
+0x1ed5, 0x1ed5,
+0x1ed7, 0x1ed7,
+0x1ed9, 0x1ed9,
+0x1edb, 0x1edb,
+0x1edd, 0x1edd,
+0x1edf, 0x1edf,
+0x1ee1, 0x1ee1,
+0x1ee3, 0x1ee3,
+0x1ee5, 0x1ee5,
+0x1ee7, 0x1ee7,
+0x1ee9, 0x1ee9,
+0x1eeb, 0x1eeb,
+0x1eed, 0x1eed,
+0x1eef, 0x1eef,
+0x1ef1, 0x1ef1,
+0x1ef3, 0x1ef3,
+0x1ef5, 0x1ef5,
+0x1ef7, 0x1ef7,
+0x1ef9, 0x1ef9,
+0x1efb, 0x1efb,
+0x1efd, 0x1efd,
+0x1eff, 0x1f07,
+0x1f10, 0x1f15,
+0x1f20, 0x1f27,
+0x1f30, 0x1f37,
+0x1f40, 0x1f45,
+0x1f50, 0x1f57,
+0x1f60, 0x1f67,
+0x1f70, 0x1f7d,
+0x1f80, 0x1f87,
+0x1f90, 0x1f97,
+0x1fa0, 0x1fa7,
+0x1fb0, 0x1fb4,
+0x1fb6, 0x1fb7,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fc7,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fd7,
+0x1fe0, 0x1fe7,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ff7,
+0x210a, 0x210a,
+0x210e, 0x210f,
+0x2113, 0x2113,
+0x212f, 0x212f,
+0x2134, 0x2134,
+0x2139, 0x2139,
+0x213c, 0x213d,
+0x2146, 0x2149,
+0x214e, 0x214e,
+0x2184, 0x2184,
+0x2c30, 0x2c5e,
+0x2c61, 0x2c61,
+0x2c65, 0x2c66,
+0x2c68, 0x2c68,
+0x2c6a, 0x2c6a,
+0x2c6c, 0x2c6c,
+0x2c71, 0x2c71,
+0x2c73, 0x2c74,
+0x2c76, 0x2c7b,
+0x2c81, 0x2c81,
+0x2c83, 0x2c83,
+0x2c85, 0x2c85,
+0x2c87, 0x2c87,
+0x2c89, 0x2c89,
+0x2c8b, 0x2c8b,
+0x2c8d, 0x2c8d,
+0x2c8f, 0x2c8f,
+0x2c91, 0x2c91,
+0x2c93, 0x2c93,
+0x2c95, 0x2c95,
+0x2c97, 0x2c97,
+0x2c99, 0x2c99,
+0x2c9b, 0x2c9b,
+0x2c9d, 0x2c9d,
+0x2c9f, 0x2c9f,
+0x2ca1, 0x2ca1,
+0x2ca3, 0x2ca3,
+0x2ca5, 0x2ca5,
+0x2ca7, 0x2ca7,
+0x2ca9, 0x2ca9,
+0x2cab, 0x2cab,
+0x2cad, 0x2cad,
+0x2caf, 0x2caf,
+0x2cb1, 0x2cb1,
+0x2cb3, 0x2cb3,
+0x2cb5, 0x2cb5,
+0x2cb7, 0x2cb7,
+0x2cb9, 0x2cb9,
+0x2cbb, 0x2cbb,
+0x2cbd, 0x2cbd,
+0x2cbf, 0x2cbf,
+0x2cc1, 0x2cc1,
+0x2cc3, 0x2cc3,
+0x2cc5, 0x2cc5,
+0x2cc7, 0x2cc7,
+0x2cc9, 0x2cc9,
+0x2ccb, 0x2ccb,
+0x2ccd, 0x2ccd,
+0x2ccf, 0x2ccf,
+0x2cd1, 0x2cd1,
+0x2cd3, 0x2cd3,
+0x2cd5, 0x2cd5,
+0x2cd7, 0x2cd7,
+0x2cd9, 0x2cd9,
+0x2cdb, 0x2cdb,
+0x2cdd, 0x2cdd,
+0x2cdf, 0x2cdf,
+0x2ce1, 0x2ce1,
+0x2ce3, 0x2ce4,
+0x2cec, 0x2cec,
+0x2cee, 0x2cee,
+0x2cf3, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0xa641, 0xa641,
+0xa643, 0xa643,
+0xa645, 0xa645,
+0xa647, 0xa647,
+0xa649, 0xa649,
+0xa64b, 0xa64b,
+0xa64d, 0xa64d,
+0xa64f, 0xa64f,
+0xa651, 0xa651,
+0xa653, 0xa653,
+0xa655, 0xa655,
+0xa657, 0xa657,
+0xa659, 0xa659,
+0xa65b, 0xa65b,
+0xa65d, 0xa65d,
+0xa65f, 0xa65f,
+0xa661, 0xa661,
+0xa663, 0xa663,
+0xa665, 0xa665,
+0xa667, 0xa667,
+0xa669, 0xa669,
+0xa66b, 0xa66b,
+0xa66d, 0xa66d,
+0xa681, 0xa681,
+0xa683, 0xa683,
+0xa685, 0xa685,
+0xa687, 0xa687,
+0xa689, 0xa689,
+0xa68b, 0xa68b,
+0xa68d, 0xa68d,
+0xa68f, 0xa68f,
+0xa691, 0xa691,
+0xa693, 0xa693,
+0xa695, 0xa695,
+0xa697, 0xa697,
+0xa699, 0xa699,
+0xa69b, 0xa69b,
+0xa723, 0xa723,
+0xa725, 0xa725,
+0xa727, 0xa727,
+0xa729, 0xa729,
+0xa72b, 0xa72b,
+0xa72d, 0xa72d,
+0xa72f, 0xa731,
+0xa733, 0xa733,
+0xa735, 0xa735,
+0xa737, 0xa737,
+0xa739, 0xa739,
+0xa73b, 0xa73b,
+0xa73d, 0xa73d,
+0xa73f, 0xa73f,
+0xa741, 0xa741,
+0xa743, 0xa743,
+0xa745, 0xa745,
+0xa747, 0xa747,
+0xa749, 0xa749,
+0xa74b, 0xa74b,
+0xa74d, 0xa74d,
+0xa74f, 0xa74f,
+0xa751, 0xa751,
+0xa753, 0xa753,
+0xa755, 0xa755,
+0xa757, 0xa757,
+0xa759, 0xa759,
+0xa75b, 0xa75b,
+0xa75d, 0xa75d,
+0xa75f, 0xa75f,
+0xa761, 0xa761,
+0xa763, 0xa763,
+0xa765, 0xa765,
+0xa767, 0xa767,
+0xa769, 0xa769,
+0xa76b, 0xa76b,
+0xa76d, 0xa76d,
+0xa76f, 0xa76f,
+0xa771, 0xa778,
+0xa77a, 0xa77a,
+0xa77c, 0xa77c,
+0xa77f, 0xa77f,
+0xa781, 0xa781,
+0xa783, 0xa783,
+0xa785, 0xa785,
+0xa787, 0xa787,
+0xa78c, 0xa78c,
+0xa78e, 0xa78e,
+0xa791, 0xa791,
+0xa793, 0xa795,
+0xa797, 0xa797,
+0xa799, 0xa799,
+0xa79b, 0xa79b,
+0xa79d, 0xa79d,
+0xa79f, 0xa79f,
+0xa7a1, 0xa7a1,
+0xa7a3, 0xa7a3,
+0xa7a5, 0xa7a5,
+0xa7a7, 0xa7a7,
+0xa7a9, 0xa7a9,
+0xa7b5, 0xa7b5,
+0xa7b7, 0xa7b7,
+0xa7fa, 0xa7fa,
+0xab30, 0xab5a,
+0xab60, 0xab65,
+0xab70, 0xabbf,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xff41, 0xff5a,
+0x10428, 0x1044f,
+0x10cc0, 0x10cf2,
+0x118c0, 0x118df,
+0x1d41a, 0x1d433,
+0x1d44e, 0x1d454,
+0x1d456, 0x1d467,
+0x1d482, 0x1d49b,
+0x1d4b6, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d4cf,
+0x1d4ea, 0x1d503,
+0x1d51e, 0x1d537,
+0x1d552, 0x1d56b,
+0x1d586, 0x1d59f,
+0x1d5ba, 0x1d5d3,
+0x1d5ee, 0x1d607,
+0x1d622, 0x1d63b,
+0x1d656, 0x1d66f,
+0x1d68a, 0x1d6a5,
+0x1d6c2, 0x1d6da,
+0x1d6dc, 0x1d6e1,
+0x1d6fc, 0x1d714,
+0x1d716, 0x1d71b,
+0x1d736, 0x1d74e,
+0x1d750, 0x1d755,
+0x1d770, 0x1d788,
+0x1d78a, 0x1d78f,
+0x1d7aa, 0x1d7c2,
+0x1d7c4, 0x1d7c9,
+0x1d7cb, 0x1d7cb,
+}; /* END of CR_Ll */
 
-/* PROPERTY: 'Latin': Script */
+/* PROPERTY: 'Lm': General Category */
 static const OnigCodePoint
-CR_Latin[] = { 31,
-0x0041, 0x005a,
-0x0061, 0x007a,
-0x00aa, 0x00aa,
-0x00ba, 0x00ba,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x02b8,
+CR_Lm[] = { 56,
+0x02b0, 0x02c1,
+0x02c6, 0x02d1,
 0x02e0, 0x02e4,
-0x1d00, 0x1d25,
-0x1d2c, 0x1d5c,
-0x1d62, 0x1d65,
-0x1d6b, 0x1d77,
-0x1d79, 0x1dbe,
-0x1e00, 0x1eff,
+0x02ec, 0x02ec,
+0x02ee, 0x02ee,
+0x0374, 0x0374,
+0x037a, 0x037a,
+0x0559, 0x0559,
+0x0640, 0x0640,
+0x06e5, 0x06e6,
+0x07f4, 0x07f5,
+0x07fa, 0x07fa,
+0x081a, 0x081a,
+0x0824, 0x0824,
+0x0828, 0x0828,
+0x0971, 0x0971,
+0x0e46, 0x0e46,
+0x0ec6, 0x0ec6,
+0x10fc, 0x10fc,
+0x17d7, 0x17d7,
+0x1843, 0x1843,
+0x1aa7, 0x1aa7,
+0x1c78, 0x1c7d,
+0x1d2c, 0x1d6a,
+0x1d78, 0x1d78,
+0x1d9b, 0x1dbf,
 0x2071, 0x2071,
 0x207f, 0x207f,
 0x2090, 0x209c,
-0x212a, 0x212b,
-0x2132, 0x2132,
-0x214e, 0x214e,
-0x2160, 0x2188,
-0x2c60, 0x2c7f,
-0xa722, 0xa787,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xa7f7, 0xa7ff,
-0xab30, 0xab5a,
-0xab5c, 0xab64,
-0xfb00, 0xfb06,
-0xff21, 0xff3a,
-0xff41, 0xff5a,
-}; /* END of CR_Latin */
-
-/* PROPERTY: 'Greek': Script */
-static const OnigCodePoint
-CR_Greek[] = { 36,
-0x0370, 0x0373,
-0x0375, 0x0377,
-0x037a, 0x037d,
-0x037f, 0x037f,
-0x0384, 0x0384,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03e1,
-0x03f0, 0x03ff,
-0x1d26, 0x1d2a,
-0x1d5d, 0x1d61,
-0x1d66, 0x1d6a,
-0x1dbf, 0x1dbf,
-0x1f00, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fc4,
-0x1fc6, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fdd, 0x1fef,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffe,
-0x2126, 0x2126,
-0xab65, 0xab65,
-0x10140, 0x1018c,
-0x101a0, 0x101a0,
-0x1d200, 0x1d245,
-}; /* END of CR_Greek */
-
-/* PROPERTY: 'Cyrillic': Script */
-static const OnigCodePoint
-CR_Cyrillic[] = { 7,
-0x0400, 0x0484,
-0x0487, 0x052f,
-0x1d2b, 0x1d2b,
-0x1d78, 0x1d78,
-0x2de0, 0x2dff,
-0xa640, 0xa69f,
-0xfe2e, 0xfe2f,
-}; /* END of CR_Cyrillic */
-
-/* PROPERTY: 'Armenian': Script */
-static const OnigCodePoint
-CR_Armenian[] = { 6,
-0x0531, 0x0556,
-0x0559, 0x055f,
-0x0561, 0x0587,
-0x058a, 0x058a,
-0x058d, 0x058f,
-0xfb13, 0xfb17,
-}; /* END of CR_Armenian */
-
-/* PROPERTY: 'Hebrew': Script */
-static const OnigCodePoint
-CR_Hebrew[] = { 9,
-0x0591, 0x05c7,
-0x05d0, 0x05ea,
-0x05f0, 0x05f4,
-0xfb1d, 0xfb36,
-0xfb38, 0xfb3c,
-0xfb3e, 0xfb3e,
-0xfb40, 0xfb41,
-0xfb43, 0xfb44,
-0xfb46, 0xfb4f,
-}; /* END of CR_Hebrew */
+0x2c7c, 0x2c7d,
+0x2d6f, 0x2d6f,
+0x2e2f, 0x2e2f,
+0x3005, 0x3005,
+0x3031, 0x3035,
+0x303b, 0x303b,
+0x309d, 0x309e,
+0x30fc, 0x30fe,
+0xa015, 0xa015,
+0xa4f8, 0xa4fd,
+0xa60c, 0xa60c,
+0xa67f, 0xa67f,
+0xa69c, 0xa69d,
+0xa717, 0xa71f,
+0xa770, 0xa770,
+0xa788, 0xa788,
+0xa7f8, 0xa7f9,
+0xa9cf, 0xa9cf,
+0xa9e6, 0xa9e6,
+0xaa70, 0xaa70,
+0xaadd, 0xaadd,
+0xaaf3, 0xaaf4,
+0xab5c, 0xab5f,
+0xff70, 0xff70,
+0xff9e, 0xff9f,
+0x16b40, 0x16b43,
+0x16f93, 0x16f9f,
+}; /* END of CR_Lm */
 
-/* PROPERTY: 'Arabic': Script */
+/* PROPERTY: 'Lo': General Category */
 static const OnigCodePoint
-CR_Arabic[] = { 54,
-0x0600, 0x0604,
-0x0606, 0x060b,
-0x060d, 0x061a,
-0x061e, 0x061e,
+CR_Lo[] = { 433,
+0x00aa, 0x00aa,
+0x00ba, 0x00ba,
+0x01bb, 0x01bb,
+0x01c0, 0x01c3,
+0x0294, 0x0294,
+0x05d0, 0x05ea,
+0x05f0, 0x05f2,
 0x0620, 0x063f,
 0x0641, 0x064a,
-0x0656, 0x066f,
-0x0671, 0x06dc,
-0x06de, 0x06ff,
-0x0750, 0x077f,
+0x066e, 0x066f,
+0x0671, 0x06d3,
+0x06d5, 0x06d5,
+0x06ee, 0x06ef,
+0x06fa, 0x06fc,
+0x06ff, 0x06ff,
+0x0710, 0x0710,
+0x0712, 0x072f,
+0x074d, 0x07a5,
+0x07b1, 0x07b1,
+0x07ca, 0x07ea,
+0x0800, 0x0815,
+0x0840, 0x0858,
 0x08a0, 0x08b4,
-0x08e3, 0x08ff,
-0xfb50, 0xfbc1,
-0xfbd3, 0xfd3d,
-0xfd50, 0xfd8f,
-0xfd92, 0xfdc7,
-0xfdf0, 0xfdfd,
-0xfe70, 0xfe74,
-0xfe76, 0xfefc,
-0x10e60, 0x10e7e,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
-0x1eef0, 0x1eef1,
-}; /* END of CR_Arabic */
-
-/* PROPERTY: 'Syriac': Script */
-static const OnigCodePoint
-CR_Syriac[] = { 3,
-0x0700, 0x070d,
-0x070f, 0x074a,
-0x074d, 0x074f,
-}; /* END of CR_Syriac */
-
-/* PROPERTY: 'Thaana': Script */
-static const OnigCodePoint
-CR_Thaana[] = { 1,
-0x0780, 0x07b1,
-}; /* END of CR_Thaana */
-
-/* PROPERTY: 'Devanagari': Script */
-static const OnigCodePoint
-CR_Devanagari[] = { 4,
-0x0900, 0x0950,
-0x0953, 0x0963,
-0x0966, 0x097f,
-0xa8e0, 0xa8fd,
-}; /* END of CR_Devanagari */
-
-/* PROPERTY: 'Bengali': Script */
-static const OnigCodePoint
-CR_Bengali[] = { 14,
-0x0980, 0x0983,
+0x0904, 0x0939,
+0x093d, 0x093d,
+0x0950, 0x0950,
+0x0958, 0x0961,
+0x0972, 0x0980,
 0x0985, 0x098c,
 0x098f, 0x0990,
 0x0993, 0x09a8,
 0x09aa, 0x09b0,
 0x09b2, 0x09b2,
 0x09b6, 0x09b9,
-0x09bc, 0x09c4,
-0x09c7, 0x09c8,
-0x09cb, 0x09ce,
-0x09d7, 0x09d7,
+0x09bd, 0x09bd,
+0x09ce, 0x09ce,
 0x09dc, 0x09dd,
-0x09df, 0x09e3,
-0x09e6, 0x09fb,
-}; /* END of CR_Bengali */
-
-/* PROPERTY: 'Gurmukhi': Script */
-static const OnigCodePoint
-CR_Gurmukhi[] = { 16,
-0x0a01, 0x0a03,
+0x09df, 0x09e1,
+0x09f0, 0x09f1,
 0x0a05, 0x0a0a,
 0x0a0f, 0x0a10,
 0x0a13, 0x0a28,
@@ -18066,58 +14689,30 @@ CR_Gurmukhi[] = { 16,
 0x0a32, 0x0a33,
 0x0a35, 0x0a36,
 0x0a38, 0x0a39,
-0x0a3c, 0x0a3c,
-0x0a3e, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4d,
-0x0a51, 0x0a51,
 0x0a59, 0x0a5c,
 0x0a5e, 0x0a5e,
-0x0a66, 0x0a75,
-}; /* END of CR_Gurmukhi */
-
-/* PROPERTY: 'Gujarati': Script */
-static const OnigCodePoint
-CR_Gujarati[] = { 14,
-0x0a81, 0x0a83,
+0x0a72, 0x0a74,
 0x0a85, 0x0a8d,
 0x0a8f, 0x0a91,
 0x0a93, 0x0aa8,
 0x0aaa, 0x0ab0,
 0x0ab2, 0x0ab3,
 0x0ab5, 0x0ab9,
-0x0abc, 0x0ac5,
-0x0ac7, 0x0ac9,
-0x0acb, 0x0acd,
+0x0abd, 0x0abd,
 0x0ad0, 0x0ad0,
-0x0ae0, 0x0ae3,
-0x0ae6, 0x0af1,
+0x0ae0, 0x0ae1,
 0x0af9, 0x0af9,
-}; /* END of CR_Gujarati */
-
-/* PROPERTY: 'Oriya': Script */
-static const OnigCodePoint
-CR_Oriya[] = { 14,
-0x0b01, 0x0b03,
 0x0b05, 0x0b0c,
 0x0b0f, 0x0b10,
 0x0b13, 0x0b28,
 0x0b2a, 0x0b30,
 0x0b32, 0x0b33,
 0x0b35, 0x0b39,
-0x0b3c, 0x0b44,
-0x0b47, 0x0b48,
-0x0b4b, 0x0b4d,
-0x0b56, 0x0b57,
+0x0b3d, 0x0b3d,
 0x0b5c, 0x0b5d,
-0x0b5f, 0x0b63,
-0x0b66, 0x0b77,
-}; /* END of CR_Oriya */
-
-/* PROPERTY: 'Tamil': Script */
-static const OnigCodePoint
-CR_Tamil[] = { 16,
-0x0b82, 0x0b83,
+0x0b5f, 0x0b61,
+0x0b71, 0x0b71,
+0x0b83, 0x0b83,
 0x0b85, 0x0b8a,
 0x0b8e, 0x0b90,
 0x0b92, 0x0b95,
@@ -18127,95 +14722,38 @@ CR_Tamil[] = { 16,
 0x0ba3, 0x0ba4,
 0x0ba8, 0x0baa,
 0x0bae, 0x0bb9,
-0x0bbe, 0x0bc2,
-0x0bc6, 0x0bc8,
-0x0bca, 0x0bcd,
 0x0bd0, 0x0bd0,
-0x0bd7, 0x0bd7,
-0x0be6, 0x0bfa,
-}; /* END of CR_Tamil */
-
-/* PROPERTY: 'Telugu': Script */
-static const OnigCodePoint
-CR_Telugu[] = { 13,
-0x0c00, 0x0c03,
 0x0c05, 0x0c0c,
 0x0c0e, 0x0c10,
 0x0c12, 0x0c28,
 0x0c2a, 0x0c39,
-0x0c3d, 0x0c44,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4d,
-0x0c55, 0x0c56,
+0x0c3d, 0x0c3d,
 0x0c58, 0x0c5a,
-0x0c60, 0x0c63,
-0x0c66, 0x0c6f,
-0x0c78, 0x0c7f,
-}; /* END of CR_Telugu */
-
-/* PROPERTY: 'Kannada': Script */
-static const OnigCodePoint
-CR_Kannada[] = { 14,
-0x0c81, 0x0c83,
+0x0c60, 0x0c61,
 0x0c85, 0x0c8c,
 0x0c8e, 0x0c90,
 0x0c92, 0x0ca8,
 0x0caa, 0x0cb3,
 0x0cb5, 0x0cb9,
-0x0cbc, 0x0cc4,
-0x0cc6, 0x0cc8,
-0x0cca, 0x0ccd,
-0x0cd5, 0x0cd6,
+0x0cbd, 0x0cbd,
 0x0cde, 0x0cde,
-0x0ce0, 0x0ce3,
-0x0ce6, 0x0cef,
+0x0ce0, 0x0ce1,
 0x0cf1, 0x0cf2,
-}; /* END of CR_Kannada */
-
-/* PROPERTY: 'Malayalam': Script */
-static const OnigCodePoint
-CR_Malayalam[] = { 11,
-0x0d01, 0x0d03,
 0x0d05, 0x0d0c,
 0x0d0e, 0x0d10,
 0x0d12, 0x0d3a,
-0x0d3d, 0x0d44,
-0x0d46, 0x0d48,
-0x0d4a, 0x0d4e,
-0x0d57, 0x0d57,
-0x0d5f, 0x0d63,
-0x0d66, 0x0d75,
-0x0d79, 0x0d7f,
-}; /* END of CR_Malayalam */
-
-/* PROPERTY: 'Sinhala': Script */
-static const OnigCodePoint
-CR_Sinhala[] = { 13,
-0x0d82, 0x0d83,
+0x0d3d, 0x0d3d,
+0x0d4e, 0x0d4e,
+0x0d5f, 0x0d61,
+0x0d7a, 0x0d7f,
 0x0d85, 0x0d96,
 0x0d9a, 0x0db1,
 0x0db3, 0x0dbb,
 0x0dbd, 0x0dbd,
 0x0dc0, 0x0dc6,
-0x0dca, 0x0dca,
-0x0dcf, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0dd8, 0x0ddf,
-0x0de6, 0x0def,
-0x0df2, 0x0df4,
-0x111e1, 0x111f4,
-}; /* END of CR_Sinhala */
-
-/* PROPERTY: 'Thai': Script */
-static const OnigCodePoint
-CR_Thai[] = { 2,
-0x0e01, 0x0e3a,
-0x0e40, 0x0e5b,
-}; /* END of CR_Thai */
-
-/* PROPERTY: 'Lao': Script */
-static const OnigCodePoint
-CR_Lao[] = { 18,
+0x0e01, 0x0e30,
+0x0e32, 0x0e33,
+0x0e40, 0x0e45,
 0x0e81, 0x0e82,
 0x0e84, 0x0e84,
 0x0e87, 0x0e88,
@@ -18227,71 +14765,26 @@ CR_Lao[] = { 18,
 0x0ea5, 0x0ea5,
 0x0ea7, 0x0ea7,
 0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
+0x0ead, 0x0eb0,
+0x0eb2, 0x0eb3,
+0x0ebd, 0x0ebd,
 0x0ec0, 0x0ec4,
-0x0ec6, 0x0ec6,
-0x0ec8, 0x0ecd,
-0x0ed0, 0x0ed9,
 0x0edc, 0x0edf,
-}; /* END of CR_Lao */
-
-/* PROPERTY: 'Tibetan': Script */
-static const OnigCodePoint
-CR_Tibetan[] = { 7,
-0x0f00, 0x0f47,
+0x0f00, 0x0f00,
+0x0f40, 0x0f47,
 0x0f49, 0x0f6c,
-0x0f71, 0x0f97,
-0x0f99, 0x0fbc,
-0x0fbe, 0x0fcc,
-0x0fce, 0x0fd4,
-0x0fd9, 0x0fda,
-}; /* END of CR_Tibetan */
-
-/* PROPERTY: 'Myanmar': Script */
-static const OnigCodePoint
-CR_Myanmar[] = { 3,
-0x1000, 0x109f,
-0xa9e0, 0xa9fe,
-0xaa60, 0xaa7f,
-}; /* END of CR_Myanmar */
-
-/* PROPERTY: 'Georgian': Script */
-static const OnigCodePoint
-CR_Georgian[] = { 8,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
+0x0f88, 0x0f8c,
+0x1000, 0x102a,
+0x103f, 0x103f,
+0x1050, 0x1055,
+0x105a, 0x105d,
+0x1061, 0x1061,
+0x1065, 0x1066,
+0x106e, 0x1070,
+0x1075, 0x1081,
+0x108e, 0x108e,
 0x10d0, 0x10fa,
-0x10fc, 0x10ff,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-}; /* END of CR_Georgian */
-
-/* PROPERTY: 'Hangul': Script */
-static const OnigCodePoint
-CR_Hangul[] = { 14,
-0x1100, 0x11ff,
-0x302e, 0x302f,
-0x3131, 0x318e,
-0x3200, 0x321e,
-0x3260, 0x327e,
-0xa960, 0xa97c,
-0xac00, 0xd7a3,
-0xd7b0, 0xd7c6,
-0xd7cb, 0xd7fb,
-0xffa0, 0xffbe,
-0xffc2, 0xffc7,
-0xffca, 0xffcf,
-0xffd2, 0xffd7,
-0xffda, 0xffdc,
-}; /* END of CR_Hangul */
-
-/* PROPERTY: 'Ethiopic': Script */
-static const OnigCodePoint
-CR_Ethiopic[] = { 32,
-0x1200, 0x1248,
+0x10fd, 0x1248,
 0x124a, 0x124d,
 0x1250, 0x1256,
 0x1258, 0x1258,
@@ -18305,229 +14798,141 @@ CR_Ethiopic[] = { 32,
 0x12c2, 0x12c5,
 0x12c8, 0x12d6,
 0x12d8, 0x1310,
-0x1312, 0x1315,
-0x1318, 0x135a,
-0x135d, 0x137c,
-0x1380, 0x1399,
-0x2d80, 0x2d96,
-0x2da0, 0x2da6,
-0x2da8, 0x2dae,
-0x2db0, 0x2db6,
-0x2db8, 0x2dbe,
-0x2dc0, 0x2dc6,
-0x2dc8, 0x2dce,
-0x2dd0, 0x2dd6,
-0x2dd8, 0x2dde,
-0xab01, 0xab06,
-0xab09, 0xab0e,
-0xab11, 0xab16,
-0xab20, 0xab26,
-0xab28, 0xab2e,
-}; /* END of CR_Ethiopic */
-
-/* PROPERTY: 'Cherokee': Script */
-static const OnigCodePoint
-CR_Cherokee[] = { 3,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0xab70, 0xabbf,
-}; /* END of CR_Cherokee */
-
-/* PROPERTY: 'Canadian_Aboriginal': Script */
-static const OnigCodePoint
-CR_Canadian_Aboriginal[] = { 2,
-0x1400, 0x167f,
-0x18b0, 0x18f5,
-}; /* END of CR_Canadian_Aboriginal */
-
-/* PROPERTY: 'Ogham': Script */
-static const OnigCodePoint
-CR_Ogham[] = { 1,
-0x1680, 0x169c,
-}; /* END of CR_Ogham */
-
-/* PROPERTY: 'Runic': Script */
-static const OnigCodePoint
-CR_Runic[] = { 2,
-0x16a0, 0x16ea,
-0x16ee, 0x16f8,
-}; /* END of CR_Runic */
-
-/* PROPERTY: 'Khmer': Script */
-static const OnigCodePoint
-CR_Khmer[] = { 4,
-0x1780, 0x17dd,
-0x17e0, 0x17e9,
-0x17f0, 0x17f9,
-0x19e0, 0x19ff,
-}; /* END of CR_Khmer */
-
-/* PROPERTY: 'Mongolian': Script */
-static const OnigCodePoint
-CR_Mongolian[] = { 6,
-0x1800, 0x1801,
-0x1804, 0x1804,
-0x1806, 0x180e,
-0x1810, 0x1819,
-0x1820, 0x1877,
-0x1880, 0x18aa,
-}; /* END of CR_Mongolian */
-
-/* PROPERTY: 'Hiragana': Script */
-static const OnigCodePoint
-CR_Hiragana[] = { 4,
-0x3041, 0x3096,
-0x309d, 0x309f,
-0x1b001, 0x1b001,
-0x1f200, 0x1f200,
-}; /* END of CR_Hiragana */
-
-/* PROPERTY: 'Katakana': Script */
-static const OnigCodePoint
-CR_Katakana[] = { 8,
-0x30a1, 0x30fa,
-0x30fd, 0x30ff,
-0x31f0, 0x31ff,
-0x32d0, 0x32fe,
-0x3300, 0x3357,
-0xff66, 0xff6f,
-0xff71, 0xff9d,
-0x1b000, 0x1b000,
-}; /* END of CR_Katakana */
-
-/* PROPERTY: 'Bopomofo': Script */
-static const OnigCodePoint
-CR_Bopomofo[] = { 3,
-0x02ea, 0x02eb,
-0x3105, 0x312d,
-0x31a0, 0x31ba,
-}; /* END of CR_Bopomofo */
-
-/* PROPERTY: 'Han': Script */
-static const OnigCodePoint
-CR_Han[] = { 16,
-0x2e80, 0x2e99,
-0x2e9b, 0x2ef3,
-0x2f00, 0x2fd5,
-0x3005, 0x3005,
-0x3007, 0x3007,
-0x3021, 0x3029,
-0x3038, 0x303b,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
-0xf900, 0xfa6d,
-0xfa70, 0xfad9,
-0x20000, 0x2a6d6,
-0x2a700, 0x2b734,
-0x2b740, 0x2b81d,
-0x2b820, 0x2cea1,
-0x2f800, 0x2fa1d,
-}; /* END of CR_Han */
-
-/* PROPERTY: 'Yi': Script */
-static const OnigCodePoint
-CR_Yi[] = { 2,
-0xa000, 0xa48c,
-0xa490, 0xa4c6,
-}; /* END of CR_Yi */
-
-/* PROPERTY: 'Old_Italic': Script */
-static const OnigCodePoint
-CR_Old_Italic[] = { 1,
-0x10300, 0x10323,
-}; /* END of CR_Old_Italic */
-
-/* PROPERTY: 'Gothic': Script */
-static const OnigCodePoint
-CR_Gothic[] = { 1,
-0x10330, 0x1034a,
-}; /* END of CR_Gothic */
-
-/* PROPERTY: 'Deseret': Script */
-static const OnigCodePoint
-CR_Deseret[] = { 1,
-0x10400, 0x1044f,
-}; /* END of CR_Deseret */
-
-/* PROPERTY: 'Inherited': Script */
-static const OnigCodePoint
-CR_Inherited[] = { 27,
-0x0300, 0x036f,
-0x0485, 0x0486,
-0x064b, 0x0655,
-0x0670, 0x0670,
-0x0951, 0x0952,
-0x1ab0, 0x1abe,
-0x1cd0, 0x1cd2,
-0x1cd4, 0x1ce0,
-0x1ce2, 0x1ce8,
-0x1ced, 0x1ced,
-0x1cf4, 0x1cf4,
-0x1cf8, 0x1cf9,
-0x1dc0, 0x1df5,
-0x1dfc, 0x1dff,
-0x200c, 0x200d,
-0x20d0, 0x20f0,
-0x302a, 0x302d,
-0x3099, 0x309a,
-0xfe00, 0xfe0f,
-0xfe20, 0xfe2d,
-0x101fd, 0x101fd,
-0x102e0, 0x102e0,
-0x1d167, 0x1d169,
-0x1d17b, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0xe0100, 0xe01ef,
-}; /* END of CR_Inherited */
-
-/* PROPERTY: 'Tagalog': Script */
-static const OnigCodePoint
-CR_Tagalog[] = { 2,
+0x1312, 0x1315,
+0x1318, 0x135a,
+0x1380, 0x138f,
+0x1401, 0x166c,
+0x166f, 0x167f,
+0x1681, 0x169a,
+0x16a0, 0x16ea,
+0x16f1, 0x16f8,
 0x1700, 0x170c,
-0x170e, 0x1714,
-}; /* END of CR_Tagalog */
-
-/* PROPERTY: 'Hanunoo': Script */
-static const OnigCodePoint
-CR_Hanunoo[] = { 1,
-0x1720, 0x1734,
-}; /* END of CR_Hanunoo */
-
-/* PROPERTY: 'Buhid': Script */
-static const OnigCodePoint
-CR_Buhid[] = { 1,
-0x1740, 0x1753,
-}; /* END of CR_Buhid */
-
-/* PROPERTY: 'Tagbanwa': Script */
-static const OnigCodePoint
-CR_Tagbanwa[] = { 3,
+0x170e, 0x1711,
+0x1720, 0x1731,
+0x1740, 0x1751,
 0x1760, 0x176c,
 0x176e, 0x1770,
-0x1772, 0x1773,
-}; /* END of CR_Tagbanwa */
-
-/* PROPERTY: 'Limbu': Script */
-static const OnigCodePoint
-CR_Limbu[] = { 5,
+0x1780, 0x17b3,
+0x17dc, 0x17dc,
+0x1820, 0x1842,
+0x1844, 0x1877,
+0x1880, 0x18a8,
+0x18aa, 0x18aa,
+0x18b0, 0x18f5,
 0x1900, 0x191e,
-0x1920, 0x192b,
-0x1930, 0x193b,
-0x1940, 0x1940,
-0x1944, 0x194f,
-}; /* END of CR_Limbu */
-
-/* PROPERTY: 'Tai_Le': Script */
-static const OnigCodePoint
-CR_Tai_Le[] = { 2,
 0x1950, 0x196d,
 0x1970, 0x1974,
-}; /* END of CR_Tai_Le */
-
-/* PROPERTY: 'Linear_B': Script */
-static const OnigCodePoint
-CR_Linear_B[] = { 7,
+0x1980, 0x19ab,
+0x19b0, 0x19c9,
+0x1a00, 0x1a16,
+0x1a20, 0x1a54,
+0x1b05, 0x1b33,
+0x1b45, 0x1b4b,
+0x1b83, 0x1ba0,
+0x1bae, 0x1baf,
+0x1bba, 0x1be5,
+0x1c00, 0x1c23,
+0x1c4d, 0x1c4f,
+0x1c5a, 0x1c77,
+0x1ce9, 0x1cec,
+0x1cee, 0x1cf1,
+0x1cf5, 0x1cf6,
+0x2135, 0x2138,
+0x2d30, 0x2d67,
+0x2d80, 0x2d96,
+0x2da0, 0x2da6,
+0x2da8, 0x2dae,
+0x2db0, 0x2db6,
+0x2db8, 0x2dbe,
+0x2dc0, 0x2dc6,
+0x2dc8, 0x2dce,
+0x2dd0, 0x2dd6,
+0x2dd8, 0x2dde,
+0x3006, 0x3006,
+0x303c, 0x303c,
+0x3041, 0x3096,
+0x309f, 0x309f,
+0x30a1, 0x30fa,
+0x30ff, 0x30ff,
+0x3105, 0x312d,
+0x3131, 0x318e,
+0x31a0, 0x31ba,
+0x31f0, 0x31ff,
+0x3400, 0x4db5,
+0x4e00, 0x9fd5,
+0xa000, 0xa014,
+0xa016, 0xa48c,
+0xa4d0, 0xa4f7,
+0xa500, 0xa60b,
+0xa610, 0xa61f,
+0xa62a, 0xa62b,
+0xa66e, 0xa66e,
+0xa6a0, 0xa6e5,
+0xa78f, 0xa78f,
+0xa7f7, 0xa7f7,
+0xa7fb, 0xa801,
+0xa803, 0xa805,
+0xa807, 0xa80a,
+0xa80c, 0xa822,
+0xa840, 0xa873,
+0xa882, 0xa8b3,
+0xa8f2, 0xa8f7,
+0xa8fb, 0xa8fb,
+0xa8fd, 0xa8fd,
+0xa90a, 0xa925,
+0xa930, 0xa946,
+0xa960, 0xa97c,
+0xa984, 0xa9b2,
+0xa9e0, 0xa9e4,
+0xa9e7, 0xa9ef,
+0xa9fa, 0xa9fe,
+0xaa00, 0xaa28,
+0xaa40, 0xaa42,
+0xaa44, 0xaa4b,
+0xaa60, 0xaa6f,
+0xaa71, 0xaa76,
+0xaa7a, 0xaa7a,
+0xaa7e, 0xaaaf,
+0xaab1, 0xaab1,
+0xaab5, 0xaab6,
+0xaab9, 0xaabd,
+0xaac0, 0xaac0,
+0xaac2, 0xaac2,
+0xaadb, 0xaadc,
+0xaae0, 0xaaea,
+0xaaf2, 0xaaf2,
+0xab01, 0xab06,
+0xab09, 0xab0e,
+0xab11, 0xab16,
+0xab20, 0xab26,
+0xab28, 0xab2e,
+0xabc0, 0xabe2,
+0xac00, 0xd7a3,
+0xd7b0, 0xd7c6,
+0xd7cb, 0xd7fb,
+0xf900, 0xfa6d,
+0xfa70, 0xfad9,
+0xfb1d, 0xfb1d,
+0xfb1f, 0xfb28,
+0xfb2a, 0xfb36,
+0xfb38, 0xfb3c,
+0xfb3e, 0xfb3e,
+0xfb40, 0xfb41,
+0xfb43, 0xfb44,
+0xfb46, 0xfbb1,
+0xfbd3, 0xfd3d,
+0xfd50, 0xfd8f,
+0xfd92, 0xfdc7,
+0xfdf0, 0xfdfb,
+0xfe70, 0xfe74,
+0xfe76, 0xfefc,
+0xff66, 0xff6f,
+0xff71, 0xff9d,
+0xffa0, 0xffbe,
+0xffc2, 0xffc7,
+0xffca, 0xffcf,
+0xffd2, 0xffd7,
+0xffda, 0xffdc,
 0x10000, 0x1000b,
 0x1000d, 0x10026,
 0x10028, 0x1003a,
@@ -18535,192 +14940,803 @@ CR_Linear_B[] = { 7,
 0x1003f, 0x1004d,
 0x10050, 0x1005d,
 0x10080, 0x100fa,
-}; /* END of CR_Linear_B */
-
-/* PROPERTY: 'Ugaritic': Script */
-static const OnigCodePoint
-CR_Ugaritic[] = { 2,
+0x10280, 0x1029c,
+0x102a0, 0x102d0,
+0x10300, 0x1031f,
+0x10330, 0x10340,
+0x10342, 0x10349,
+0x10350, 0x10375,
 0x10380, 0x1039d,
-0x1039f, 0x1039f,
-}; /* END of CR_Ugaritic */
-
-/* PROPERTY: 'Shavian': Script */
-static const OnigCodePoint
-CR_Shavian[] = { 1,
-0x10450, 0x1047f,
-}; /* END of CR_Shavian */
-
-/* PROPERTY: 'Osmanya': Script */
-static const OnigCodePoint
-CR_Osmanya[] = { 2,
-0x10480, 0x1049d,
-0x104a0, 0x104a9,
-}; /* END of CR_Osmanya */
-
-/* PROPERTY: 'Cypriot': Script */
-static const OnigCodePoint
-CR_Cypriot[] = { 6,
+0x103a0, 0x103c3,
+0x103c8, 0x103cf,
+0x10450, 0x1049d,
+0x10500, 0x10527,
+0x10530, 0x10563,
+0x10600, 0x10736,
+0x10740, 0x10755,
+0x10760, 0x10767,
 0x10800, 0x10805,
 0x10808, 0x10808,
 0x1080a, 0x10835,
 0x10837, 0x10838,
 0x1083c, 0x1083c,
-0x1083f, 0x1083f,
-}; /* END of CR_Cypriot */
-
-/* PROPERTY: 'Braille': Script */
-static const OnigCodePoint
-CR_Braille[] = { 1,
-0x2800, 0x28ff,
-}; /* END of CR_Braille */
+0x1083f, 0x10855,
+0x10860, 0x10876,
+0x10880, 0x1089e,
+0x108e0, 0x108f2,
+0x108f4, 0x108f5,
+0x10900, 0x10915,
+0x10920, 0x10939,
+0x10980, 0x109b7,
+0x109be, 0x109bf,
+0x10a00, 0x10a00,
+0x10a10, 0x10a13,
+0x10a15, 0x10a17,
+0x10a19, 0x10a33,
+0x10a60, 0x10a7c,
+0x10a80, 0x10a9c,
+0x10ac0, 0x10ac7,
+0x10ac9, 0x10ae4,
+0x10b00, 0x10b35,
+0x10b40, 0x10b55,
+0x10b60, 0x10b72,
+0x10b80, 0x10b91,
+0x10c00, 0x10c48,
+0x11003, 0x11037,
+0x11083, 0x110af,
+0x110d0, 0x110e8,
+0x11103, 0x11126,
+0x11150, 0x11172,
+0x11176, 0x11176,
+0x11183, 0x111b2,
+0x111c1, 0x111c4,
+0x111da, 0x111da,
+0x111dc, 0x111dc,
+0x11200, 0x11211,
+0x11213, 0x1122b,
+0x11280, 0x11286,
+0x11288, 0x11288,
+0x1128a, 0x1128d,
+0x1128f, 0x1129d,
+0x1129f, 0x112a8,
+0x112b0, 0x112de,
+0x11305, 0x1130c,
+0x1130f, 0x11310,
+0x11313, 0x11328,
+0x1132a, 0x11330,
+0x11332, 0x11333,
+0x11335, 0x11339,
+0x1133d, 0x1133d,
+0x11350, 0x11350,
+0x1135d, 0x11361,
+0x11480, 0x114af,
+0x114c4, 0x114c5,
+0x114c7, 0x114c7,
+0x11580, 0x115ae,
+0x115d8, 0x115db,
+0x11600, 0x1162f,
+0x11644, 0x11644,
+0x11680, 0x116aa,
+0x11700, 0x11719,
+0x118ff, 0x118ff,
+0x11ac0, 0x11af8,
+0x12000, 0x12399,
+0x12480, 0x12543,
+0x13000, 0x1342e,
+0x14400, 0x14646,
+0x16800, 0x16a38,
+0x16a40, 0x16a5e,
+0x16ad0, 0x16aed,
+0x16b00, 0x16b2f,
+0x16b63, 0x16b77,
+0x16b7d, 0x16b8f,
+0x16f00, 0x16f44,
+0x16f50, 0x16f50,
+0x1b000, 0x1b001,
+0x1bc00, 0x1bc6a,
+0x1bc70, 0x1bc7c,
+0x1bc80, 0x1bc88,
+0x1bc90, 0x1bc99,
+0x1e800, 0x1e8c4,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+0x20000, 0x2a6d6,
+0x2a700, 0x2b734,
+0x2b740, 0x2b81d,
+0x2b820, 0x2cea1,
+0x2f800, 0x2fa1d,
+}; /* END of CR_Lo */
 
-/* PROPERTY: 'Buginese': Script */
+/* PROPERTY: 'Logical_Order_Exception': Binary Property */
 static const OnigCodePoint
-CR_Buginese[] = { 2,
-0x1a00, 0x1a1b,
-0x1a1e, 0x1a1f,
-}; /* END of CR_Buginese */
+CR_Logical_Order_Exception[] = { 7,
+0x0e40, 0x0e44,
+0x0ec0, 0x0ec4,
+0x19b5, 0x19b7,
+0x19ba, 0x19ba,
+0xaab5, 0xaab6,
+0xaab9, 0xaab9,
+0xaabb, 0xaabc,
+}; /* END of CR_Logical_Order_Exception */
 
-/* PROPERTY: 'Coptic': Script */
-static const OnigCodePoint
-CR_Coptic[] = { 3,
-0x03e2, 0x03ef,
-0x2c80, 0x2cf3,
-0x2cf9, 0x2cff,
-}; /* END of CR_Coptic */
+/* PROPERTY: 'Lowercase': Derived Property */
+#define CR_Lowercase CR_Lower
 
-/* PROPERTY: 'New_Tai_Lue': Script */
+/* PROPERTY: 'Lt': General Category */
 static const OnigCodePoint
-CR_New_Tai_Lue[] = { 4,
-0x1980, 0x19ab,
-0x19b0, 0x19c9,
-0x19d0, 0x19da,
-0x19de, 0x19df,
-}; /* END of CR_New_Tai_Lue */
+CR_Lt[] = { 10,
+0x01c5, 0x01c5,
+0x01c8, 0x01c8,
+0x01cb, 0x01cb,
+0x01f2, 0x01f2,
+0x1f88, 0x1f8f,
+0x1f98, 0x1f9f,
+0x1fa8, 0x1faf,
+0x1fbc, 0x1fbc,
+0x1fcc, 0x1fcc,
+0x1ffc, 0x1ffc,
+}; /* END of CR_Lt */
 
-/* PROPERTY: 'Glagolitic': Script */
+/* PROPERTY: 'Lu': General Category */
 static const OnigCodePoint
-CR_Glagolitic[] = { 2,
+CR_Lu[] = { 625,
+0x0041, 0x005a,
+0x00c0, 0x00d6,
+0x00d8, 0x00de,
+0x0100, 0x0100,
+0x0102, 0x0102,
+0x0104, 0x0104,
+0x0106, 0x0106,
+0x0108, 0x0108,
+0x010a, 0x010a,
+0x010c, 0x010c,
+0x010e, 0x010e,
+0x0110, 0x0110,
+0x0112, 0x0112,
+0x0114, 0x0114,
+0x0116, 0x0116,
+0x0118, 0x0118,
+0x011a, 0x011a,
+0x011c, 0x011c,
+0x011e, 0x011e,
+0x0120, 0x0120,
+0x0122, 0x0122,
+0x0124, 0x0124,
+0x0126, 0x0126,
+0x0128, 0x0128,
+0x012a, 0x012a,
+0x012c, 0x012c,
+0x012e, 0x012e,
+0x0130, 0x0130,
+0x0132, 0x0132,
+0x0134, 0x0134,
+0x0136, 0x0136,
+0x0139, 0x0139,
+0x013b, 0x013b,
+0x013d, 0x013d,
+0x013f, 0x013f,
+0x0141, 0x0141,
+0x0143, 0x0143,
+0x0145, 0x0145,
+0x0147, 0x0147,
+0x014a, 0x014a,
+0x014c, 0x014c,
+0x014e, 0x014e,
+0x0150, 0x0150,
+0x0152, 0x0152,
+0x0154, 0x0154,
+0x0156, 0x0156,
+0x0158, 0x0158,
+0x015a, 0x015a,
+0x015c, 0x015c,
+0x015e, 0x015e,
+0x0160, 0x0160,
+0x0162, 0x0162,
+0x0164, 0x0164,
+0x0166, 0x0166,
+0x0168, 0x0168,
+0x016a, 0x016a,
+0x016c, 0x016c,
+0x016e, 0x016e,
+0x0170, 0x0170,
+0x0172, 0x0172,
+0x0174, 0x0174,
+0x0176, 0x0176,
+0x0178, 0x0179,
+0x017b, 0x017b,
+0x017d, 0x017d,
+0x0181, 0x0182,
+0x0184, 0x0184,
+0x0186, 0x0187,
+0x0189, 0x018b,
+0x018e, 0x0191,
+0x0193, 0x0194,
+0x0196, 0x0198,
+0x019c, 0x019d,
+0x019f, 0x01a0,
+0x01a2, 0x01a2,
+0x01a4, 0x01a4,
+0x01a6, 0x01a7,
+0x01a9, 0x01a9,
+0x01ac, 0x01ac,
+0x01ae, 0x01af,
+0x01b1, 0x01b3,
+0x01b5, 0x01b5,
+0x01b7, 0x01b8,
+0x01bc, 0x01bc,
+0x01c4, 0x01c4,
+0x01c7, 0x01c7,
+0x01ca, 0x01ca,
+0x01cd, 0x01cd,
+0x01cf, 0x01cf,
+0x01d1, 0x01d1,
+0x01d3, 0x01d3,
+0x01d5, 0x01d5,
+0x01d7, 0x01d7,
+0x01d9, 0x01d9,
+0x01db, 0x01db,
+0x01de, 0x01de,
+0x01e0, 0x01e0,
+0x01e2, 0x01e2,
+0x01e4, 0x01e4,
+0x01e6, 0x01e6,
+0x01e8, 0x01e8,
+0x01ea, 0x01ea,
+0x01ec, 0x01ec,
+0x01ee, 0x01ee,
+0x01f1, 0x01f1,
+0x01f4, 0x01f4,
+0x01f6, 0x01f8,
+0x01fa, 0x01fa,
+0x01fc, 0x01fc,
+0x01fe, 0x01fe,
+0x0200, 0x0200,
+0x0202, 0x0202,
+0x0204, 0x0204,
+0x0206, 0x0206,
+0x0208, 0x0208,
+0x020a, 0x020a,
+0x020c, 0x020c,
+0x020e, 0x020e,
+0x0210, 0x0210,
+0x0212, 0x0212,
+0x0214, 0x0214,
+0x0216, 0x0216,
+0x0218, 0x0218,
+0x021a, 0x021a,
+0x021c, 0x021c,
+0x021e, 0x021e,
+0x0220, 0x0220,
+0x0222, 0x0222,
+0x0224, 0x0224,
+0x0226, 0x0226,
+0x0228, 0x0228,
+0x022a, 0x022a,
+0x022c, 0x022c,
+0x022e, 0x022e,
+0x0230, 0x0230,
+0x0232, 0x0232,
+0x023a, 0x023b,
+0x023d, 0x023e,
+0x0241, 0x0241,
+0x0243, 0x0246,
+0x0248, 0x0248,
+0x024a, 0x024a,
+0x024c, 0x024c,
+0x024e, 0x024e,
+0x0370, 0x0370,
+0x0372, 0x0372,
+0x0376, 0x0376,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x038f,
+0x0391, 0x03a1,
+0x03a3, 0x03ab,
+0x03cf, 0x03cf,
+0x03d2, 0x03d4,
+0x03d8, 0x03d8,
+0x03da, 0x03da,
+0x03dc, 0x03dc,
+0x03de, 0x03de,
+0x03e0, 0x03e0,
+0x03e2, 0x03e2,
+0x03e4, 0x03e4,
+0x03e6, 0x03e6,
+0x03e8, 0x03e8,
+0x03ea, 0x03ea,
+0x03ec, 0x03ec,
+0x03ee, 0x03ee,
+0x03f4, 0x03f4,
+0x03f7, 0x03f7,
+0x03f9, 0x03fa,
+0x03fd, 0x042f,
+0x0460, 0x0460,
+0x0462, 0x0462,
+0x0464, 0x0464,
+0x0466, 0x0466,
+0x0468, 0x0468,
+0x046a, 0x046a,
+0x046c, 0x046c,
+0x046e, 0x046e,
+0x0470, 0x0470,
+0x0472, 0x0472,
+0x0474, 0x0474,
+0x0476, 0x0476,
+0x0478, 0x0478,
+0x047a, 0x047a,
+0x047c, 0x047c,
+0x047e, 0x047e,
+0x0480, 0x0480,
+0x048a, 0x048a,
+0x048c, 0x048c,
+0x048e, 0x048e,
+0x0490, 0x0490,
+0x0492, 0x0492,
+0x0494, 0x0494,
+0x0496, 0x0496,
+0x0498, 0x0498,
+0x049a, 0x049a,
+0x049c, 0x049c,
+0x049e, 0x049e,
+0x04a0, 0x04a0,
+0x04a2, 0x04a2,
+0x04a4, 0x04a4,
+0x04a6, 0x04a6,
+0x04a8, 0x04a8,
+0x04aa, 0x04aa,
+0x04ac, 0x04ac,
+0x04ae, 0x04ae,
+0x04b0, 0x04b0,
+0x04b2, 0x04b2,
+0x04b4, 0x04b4,
+0x04b6, 0x04b6,
+0x04b8, 0x04b8,
+0x04ba, 0x04ba,
+0x04bc, 0x04bc,
+0x04be, 0x04be,
+0x04c0, 0x04c1,
+0x04c3, 0x04c3,
+0x04c5, 0x04c5,
+0x04c7, 0x04c7,
+0x04c9, 0x04c9,
+0x04cb, 0x04cb,
+0x04cd, 0x04cd,
+0x04d0, 0x04d0,
+0x04d2, 0x04d2,
+0x04d4, 0x04d4,
+0x04d6, 0x04d6,
+0x04d8, 0x04d8,
+0x04da, 0x04da,
+0x04dc, 0x04dc,
+0x04de, 0x04de,
+0x04e0, 0x04e0,
+0x04e2, 0x04e2,
+0x04e4, 0x04e4,
+0x04e6, 0x04e6,
+0x04e8, 0x04e8,
+0x04ea, 0x04ea,
+0x04ec, 0x04ec,
+0x04ee, 0x04ee,
+0x04f0, 0x04f0,
+0x04f2, 0x04f2,
+0x04f4, 0x04f4,
+0x04f6, 0x04f6,
+0x04f8, 0x04f8,
+0x04fa, 0x04fa,
+0x04fc, 0x04fc,
+0x04fe, 0x04fe,
+0x0500, 0x0500,
+0x0502, 0x0502,
+0x0504, 0x0504,
+0x0506, 0x0506,
+0x0508, 0x0508,
+0x050a, 0x050a,
+0x050c, 0x050c,
+0x050e, 0x050e,
+0x0510, 0x0510,
+0x0512, 0x0512,
+0x0514, 0x0514,
+0x0516, 0x0516,
+0x0518, 0x0518,
+0x051a, 0x051a,
+0x051c, 0x051c,
+0x051e, 0x051e,
+0x0520, 0x0520,
+0x0522, 0x0522,
+0x0524, 0x0524,
+0x0526, 0x0526,
+0x0528, 0x0528,
+0x052a, 0x052a,
+0x052c, 0x052c,
+0x052e, 0x052e,
+0x0531, 0x0556,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x13a0, 0x13f5,
+0x1e00, 0x1e00,
+0x1e02, 0x1e02,
+0x1e04, 0x1e04,
+0x1e06, 0x1e06,
+0x1e08, 0x1e08,
+0x1e0a, 0x1e0a,
+0x1e0c, 0x1e0c,
+0x1e0e, 0x1e0e,
+0x1e10, 0x1e10,
+0x1e12, 0x1e12,
+0x1e14, 0x1e14,
+0x1e16, 0x1e16,
+0x1e18, 0x1e18,
+0x1e1a, 0x1e1a,
+0x1e1c, 0x1e1c,
+0x1e1e, 0x1e1e,
+0x1e20, 0x1e20,
+0x1e22, 0x1e22,
+0x1e24, 0x1e24,
+0x1e26, 0x1e26,
+0x1e28, 0x1e28,
+0x1e2a, 0x1e2a,
+0x1e2c, 0x1e2c,
+0x1e2e, 0x1e2e,
+0x1e30, 0x1e30,
+0x1e32, 0x1e32,
+0x1e34, 0x1e34,
+0x1e36, 0x1e36,
+0x1e38, 0x1e38,
+0x1e3a, 0x1e3a,
+0x1e3c, 0x1e3c,
+0x1e3e, 0x1e3e,
+0x1e40, 0x1e40,
+0x1e42, 0x1e42,
+0x1e44, 0x1e44,
+0x1e46, 0x1e46,
+0x1e48, 0x1e48,
+0x1e4a, 0x1e4a,
+0x1e4c, 0x1e4c,
+0x1e4e, 0x1e4e,
+0x1e50, 0x1e50,
+0x1e52, 0x1e52,
+0x1e54, 0x1e54,
+0x1e56, 0x1e56,
+0x1e58, 0x1e58,
+0x1e5a, 0x1e5a,
+0x1e5c, 0x1e5c,
+0x1e5e, 0x1e5e,
+0x1e60, 0x1e60,
+0x1e62, 0x1e62,
+0x1e64, 0x1e64,
+0x1e66, 0x1e66,
+0x1e68, 0x1e68,
+0x1e6a, 0x1e6a,
+0x1e6c, 0x1e6c,
+0x1e6e, 0x1e6e,
+0x1e70, 0x1e70,
+0x1e72, 0x1e72,
+0x1e74, 0x1e74,
+0x1e76, 0x1e76,
+0x1e78, 0x1e78,
+0x1e7a, 0x1e7a,
+0x1e7c, 0x1e7c,
+0x1e7e, 0x1e7e,
+0x1e80, 0x1e80,
+0x1e82, 0x1e82,
+0x1e84, 0x1e84,
+0x1e86, 0x1e86,
+0x1e88, 0x1e88,
+0x1e8a, 0x1e8a,
+0x1e8c, 0x1e8c,
+0x1e8e, 0x1e8e,
+0x1e90, 0x1e90,
+0x1e92, 0x1e92,
+0x1e94, 0x1e94,
+0x1e9e, 0x1e9e,
+0x1ea0, 0x1ea0,
+0x1ea2, 0x1ea2,
+0x1ea4, 0x1ea4,
+0x1ea6, 0x1ea6,
+0x1ea8, 0x1ea8,
+0x1eaa, 0x1eaa,
+0x1eac, 0x1eac,
+0x1eae, 0x1eae,
+0x1eb0, 0x1eb0,
+0x1eb2, 0x1eb2,
+0x1eb4, 0x1eb4,
+0x1eb6, 0x1eb6,
+0x1eb8, 0x1eb8,
+0x1eba, 0x1eba,
+0x1ebc, 0x1ebc,
+0x1ebe, 0x1ebe,
+0x1ec0, 0x1ec0,
+0x1ec2, 0x1ec2,
+0x1ec4, 0x1ec4,
+0x1ec6, 0x1ec6,
+0x1ec8, 0x1ec8,
+0x1eca, 0x1eca,
+0x1ecc, 0x1ecc,
+0x1ece, 0x1ece,
+0x1ed0, 0x1ed0,
+0x1ed2, 0x1ed2,
+0x1ed4, 0x1ed4,
+0x1ed6, 0x1ed6,
+0x1ed8, 0x1ed8,
+0x1eda, 0x1eda,
+0x1edc, 0x1edc,
+0x1ede, 0x1ede,
+0x1ee0, 0x1ee0,
+0x1ee2, 0x1ee2,
+0x1ee4, 0x1ee4,
+0x1ee6, 0x1ee6,
+0x1ee8, 0x1ee8,
+0x1eea, 0x1eea,
+0x1eec, 0x1eec,
+0x1eee, 0x1eee,
+0x1ef0, 0x1ef0,
+0x1ef2, 0x1ef2,
+0x1ef4, 0x1ef4,
+0x1ef6, 0x1ef6,
+0x1ef8, 0x1ef8,
+0x1efa, 0x1efa,
+0x1efc, 0x1efc,
+0x1efe, 0x1efe,
+0x1f08, 0x1f0f,
+0x1f18, 0x1f1d,
+0x1f28, 0x1f2f,
+0x1f38, 0x1f3f,
+0x1f48, 0x1f4d,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f5f,
+0x1f68, 0x1f6f,
+0x1fb8, 0x1fbb,
+0x1fc8, 0x1fcb,
+0x1fd8, 0x1fdb,
+0x1fe8, 0x1fec,
+0x1ff8, 0x1ffb,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210b, 0x210d,
+0x2110, 0x2112,
+0x2115, 0x2115,
+0x2119, 0x211d,
+0x2124, 0x2124,
+0x2126, 0x2126,
+0x2128, 0x2128,
+0x212a, 0x212d,
+0x2130, 0x2133,
+0x213e, 0x213f,
+0x2145, 0x2145,
+0x2183, 0x2183,
 0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-}; /* END of CR_Glagolitic */
-
-/* PROPERTY: 'Tifinagh': Script */
-static const OnigCodePoint
-CR_Tifinagh[] = { 3,
-0x2d30, 0x2d67,
-0x2d6f, 0x2d70,
-0x2d7f, 0x2d7f,
-}; /* END of CR_Tifinagh */
-
-/* PROPERTY: 'Syloti_Nagri': Script */
-static const OnigCodePoint
-CR_Syloti_Nagri[] = { 1,
-0xa800, 0xa82b,
-}; /* END of CR_Syloti_Nagri */
-
-/* PROPERTY: 'Old_Persian': Script */
-static const OnigCodePoint
-CR_Old_Persian[] = { 2,
-0x103a0, 0x103c3,
-0x103c8, 0x103d5,
-}; /* END of CR_Old_Persian */
-
-/* PROPERTY: 'Kharoshthi': Script */
-static const OnigCodePoint
-CR_Kharoshthi[] = { 8,
-0x10a00, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a13,
-0x10a15, 0x10a17,
-0x10a19, 0x10a33,
-0x10a38, 0x10a3a,
-0x10a3f, 0x10a47,
-0x10a50, 0x10a58,
-}; /* END of CR_Kharoshthi */
-
-/* PROPERTY: 'Balinese': Script */
-static const OnigCodePoint
-CR_Balinese[] = { 2,
-0x1b00, 0x1b4b,
-0x1b50, 0x1b7c,
-}; /* END of CR_Balinese */
-
-/* PROPERTY: 'Cuneiform': Script */
-static const OnigCodePoint
-CR_Cuneiform[] = { 4,
-0x12000, 0x12399,
-0x12400, 0x1246e,
-0x12470, 0x12474,
-0x12480, 0x12543,
-}; /* END of CR_Cuneiform */
-
-/* PROPERTY: 'Phoenician': Script */
-static const OnigCodePoint
-CR_Phoenician[] = { 2,
-0x10900, 0x1091b,
-0x1091f, 0x1091f,
-}; /* END of CR_Phoenician */
-
-/* PROPERTY: 'Phags_Pa': Script */
-static const OnigCodePoint
-CR_Phags_Pa[] = { 1,
-0xa840, 0xa877,
-}; /* END of CR_Phags_Pa */
-
-/* PROPERTY: 'Nko': Script */
-static const OnigCodePoint
-CR_Nko[] = { 1,
-0x07c0, 0x07fa,
-}; /* END of CR_Nko */
-
-/* PROPERTY: 'Sundanese': Script */
-static const OnigCodePoint
-CR_Sundanese[] = { 2,
-0x1b80, 0x1bbf,
-0x1cc0, 0x1cc7,
-}; /* END of CR_Sundanese */
-
-/* PROPERTY: 'Lepcha': Script */
-static const OnigCodePoint
-CR_Lepcha[] = { 3,
-0x1c00, 0x1c37,
-0x1c3b, 0x1c49,
-0x1c4d, 0x1c4f,
-}; /* END of CR_Lepcha */
-
-/* PROPERTY: 'Ol_Chiki': Script */
-static const OnigCodePoint
-CR_Ol_Chiki[] = { 1,
-0x1c50, 0x1c7f,
-}; /* END of CR_Ol_Chiki */
-
-/* PROPERTY: 'Vai': Script */
-static const OnigCodePoint
-CR_Vai[] = { 1,
-0xa500, 0xa62b,
-}; /* END of CR_Vai */
-
-/* PROPERTY: 'Saurashtra': Script */
-static const OnigCodePoint
-CR_Saurashtra[] = { 2,
-0xa880, 0xa8c4,
-0xa8ce, 0xa8d9,
-}; /* END of CR_Saurashtra */
-
-/* PROPERTY: 'Kayah_Li': Script */
-static const OnigCodePoint
-CR_Kayah_Li[] = { 2,
-0xa900, 0xa92d,
-0xa92f, 0xa92f,
-}; /* END of CR_Kayah_Li */
-
-/* PROPERTY: 'Rejang': Script */
-static const OnigCodePoint
-CR_Rejang[] = { 2,
-0xa930, 0xa953,
-0xa95f, 0xa95f,
-}; /* END of CR_Rejang */
+0x2c60, 0x2c60,
+0x2c62, 0x2c64,
+0x2c67, 0x2c67,
+0x2c69, 0x2c69,
+0x2c6b, 0x2c6b,
+0x2c6d, 0x2c70,
+0x2c72, 0x2c72,
+0x2c75, 0x2c75,
+0x2c7e, 0x2c80,
+0x2c82, 0x2c82,
+0x2c84, 0x2c84,
+0x2c86, 0x2c86,
+0x2c88, 0x2c88,
+0x2c8a, 0x2c8a,
+0x2c8c, 0x2c8c,
+0x2c8e, 0x2c8e,
+0x2c90, 0x2c90,
+0x2c92, 0x2c92,
+0x2c94, 0x2c94,
+0x2c96, 0x2c96,
+0x2c98, 0x2c98,
+0x2c9a, 0x2c9a,
+0x2c9c, 0x2c9c,
+0x2c9e, 0x2c9e,
+0x2ca0, 0x2ca0,
+0x2ca2, 0x2ca2,
+0x2ca4, 0x2ca4,
+0x2ca6, 0x2ca6,
+0x2ca8, 0x2ca8,
+0x2caa, 0x2caa,
+0x2cac, 0x2cac,
+0x2cae, 0x2cae,
+0x2cb0, 0x2cb0,
+0x2cb2, 0x2cb2,
+0x2cb4, 0x2cb4,
+0x2cb6, 0x2cb6,
+0x2cb8, 0x2cb8,
+0x2cba, 0x2cba,
+0x2cbc, 0x2cbc,
+0x2cbe, 0x2cbe,
+0x2cc0, 0x2cc0,
+0x2cc2, 0x2cc2,
+0x2cc4, 0x2cc4,
+0x2cc6, 0x2cc6,
+0x2cc8, 0x2cc8,
+0x2cca, 0x2cca,
+0x2ccc, 0x2ccc,
+0x2cce, 0x2cce,
+0x2cd0, 0x2cd0,
+0x2cd2, 0x2cd2,
+0x2cd4, 0x2cd4,
+0x2cd6, 0x2cd6,
+0x2cd8, 0x2cd8,
+0x2cda, 0x2cda,
+0x2cdc, 0x2cdc,
+0x2cde, 0x2cde,
+0x2ce0, 0x2ce0,
+0x2ce2, 0x2ce2,
+0x2ceb, 0x2ceb,
+0x2ced, 0x2ced,
+0x2cf2, 0x2cf2,
+0xa640, 0xa640,
+0xa642, 0xa642,
+0xa644, 0xa644,
+0xa646, 0xa646,
+0xa648, 0xa648,
+0xa64a, 0xa64a,
+0xa64c, 0xa64c,
+0xa64e, 0xa64e,
+0xa650, 0xa650,
+0xa652, 0xa652,
+0xa654, 0xa654,
+0xa656, 0xa656,
+0xa658, 0xa658,
+0xa65a, 0xa65a,
+0xa65c, 0xa65c,
+0xa65e, 0xa65e,
+0xa660, 0xa660,
+0xa662, 0xa662,
+0xa664, 0xa664,
+0xa666, 0xa666,
+0xa668, 0xa668,
+0xa66a, 0xa66a,
+0xa66c, 0xa66c,
+0xa680, 0xa680,
+0xa682, 0xa682,
+0xa684, 0xa684,
+0xa686, 0xa686,
+0xa688, 0xa688,
+0xa68a, 0xa68a,
+0xa68c, 0xa68c,
+0xa68e, 0xa68e,
+0xa690, 0xa690,
+0xa692, 0xa692,
+0xa694, 0xa694,
+0xa696, 0xa696,
+0xa698, 0xa698,
+0xa69a, 0xa69a,
+0xa722, 0xa722,
+0xa724, 0xa724,
+0xa726, 0xa726,
+0xa728, 0xa728,
+0xa72a, 0xa72a,
+0xa72c, 0xa72c,
+0xa72e, 0xa72e,
+0xa732, 0xa732,
+0xa734, 0xa734,
+0xa736, 0xa736,
+0xa738, 0xa738,
+0xa73a, 0xa73a,
+0xa73c, 0xa73c,
+0xa73e, 0xa73e,
+0xa740, 0xa740,
+0xa742, 0xa742,
+0xa744, 0xa744,
+0xa746, 0xa746,
+0xa748, 0xa748,
+0xa74a, 0xa74a,
+0xa74c, 0xa74c,
+0xa74e, 0xa74e,
+0xa750, 0xa750,
+0xa752, 0xa752,
+0xa754, 0xa754,
+0xa756, 0xa756,
+0xa758, 0xa758,
+0xa75a, 0xa75a,
+0xa75c, 0xa75c,
+0xa75e, 0xa75e,
+0xa760, 0xa760,
+0xa762, 0xa762,
+0xa764, 0xa764,
+0xa766, 0xa766,
+0xa768, 0xa768,
+0xa76a, 0xa76a,
+0xa76c, 0xa76c,
+0xa76e, 0xa76e,
+0xa779, 0xa779,
+0xa77b, 0xa77b,
+0xa77d, 0xa77e,
+0xa780, 0xa780,
+0xa782, 0xa782,
+0xa784, 0xa784,
+0xa786, 0xa786,
+0xa78b, 0xa78b,
+0xa78d, 0xa78d,
+0xa790, 0xa790,
+0xa792, 0xa792,
+0xa796, 0xa796,
+0xa798, 0xa798,
+0xa79a, 0xa79a,
+0xa79c, 0xa79c,
+0xa79e, 0xa79e,
+0xa7a0, 0xa7a0,
+0xa7a2, 0xa7a2,
+0xa7a4, 0xa7a4,
+0xa7a6, 0xa7a6,
+0xa7a8, 0xa7a8,
+0xa7aa, 0xa7ad,
+0xa7b0, 0xa7b4,
+0xa7b6, 0xa7b6,
+0xff21, 0xff3a,
+0x10400, 0x10427,
+0x10c80, 0x10cb2,
+0x118a0, 0x118bf,
+0x1d400, 0x1d419,
+0x1d434, 0x1d44d,
+0x1d468, 0x1d481,
+0x1d49c, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b5,
+0x1d4d0, 0x1d4e9,
+0x1d504, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d538, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d56c, 0x1d585,
+0x1d5a0, 0x1d5b9,
+0x1d5d4, 0x1d5ed,
+0x1d608, 0x1d621,
+0x1d63c, 0x1d655,
+0x1d670, 0x1d689,
+0x1d6a8, 0x1d6c0,
+0x1d6e2, 0x1d6fa,
+0x1d71c, 0x1d734,
+0x1d756, 0x1d76e,
+0x1d790, 0x1d7a8,
+0x1d7ca, 0x1d7ca,
+}; /* END of CR_Lu */
 
 /* PROPERTY: 'Lycian': Script */
 static const OnigCodePoint
@@ -18728,12 +15744,6 @@ CR_Lycian[] = { 1,
 0x10280, 0x1029c,
 }; /* END of CR_Lycian */
 
-/* PROPERTY: 'Carian': Script */
-static const OnigCodePoint
-CR_Carian[] = { 1,
-0x102a0, 0x102d0,
-}; /* END of CR_Carian */
-
 /* PROPERTY: 'Lydian': Script */
 static const OnigCodePoint
 CR_Lydian[] = { 2,
@@ -18741,72 +15751,587 @@ CR_Lydian[] = { 2,
 0x1093f, 0x1093f,
 }; /* END of CR_Lydian */
 
-/* PROPERTY: 'Cham': Script */
-static const OnigCodePoint
-CR_Cham[] = { 4,
-0xaa00, 0xaa36,
-0xaa40, 0xaa4d,
-0xaa50, 0xaa59,
-0xaa5c, 0xaa5f,
-}; /* END of CR_Cham */
-
-/* PROPERTY: 'Tai_Tham': Script */
+/* PROPERTY: 'M': Major Category */
 static const OnigCodePoint
-CR_Tai_Tham[] = { 5,
-0x1a20, 0x1a5e,
+CR_M[] = { 236,
+0x0300, 0x036f,
+0x0483, 0x0489,
+0x0591, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c5,
+0x05c7, 0x05c7,
+0x0610, 0x061a,
+0x064b, 0x065f,
+0x0670, 0x0670,
+0x06d6, 0x06dc,
+0x06df, 0x06e4,
+0x06e7, 0x06e8,
+0x06ea, 0x06ed,
+0x0711, 0x0711,
+0x0730, 0x074a,
+0x07a6, 0x07b0,
+0x07eb, 0x07f3,
+0x0816, 0x0819,
+0x081b, 0x0823,
+0x0825, 0x0827,
+0x0829, 0x082d,
+0x0859, 0x085b,
+0x08e3, 0x0903,
+0x093a, 0x093c,
+0x093e, 0x094f,
+0x0951, 0x0957,
+0x0962, 0x0963,
+0x0981, 0x0983,
+0x09bc, 0x09bc,
+0x09be, 0x09c4,
+0x09c7, 0x09c8,
+0x09cb, 0x09cd,
+0x09d7, 0x09d7,
+0x09e2, 0x09e3,
+0x0a01, 0x0a03,
+0x0a3c, 0x0a3c,
+0x0a3e, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4d,
+0x0a51, 0x0a51,
+0x0a70, 0x0a71,
+0x0a75, 0x0a75,
+0x0a81, 0x0a83,
+0x0abc, 0x0abc,
+0x0abe, 0x0ac5,
+0x0ac7, 0x0ac9,
+0x0acb, 0x0acd,
+0x0ae2, 0x0ae3,
+0x0b01, 0x0b03,
+0x0b3c, 0x0b3c,
+0x0b3e, 0x0b44,
+0x0b47, 0x0b48,
+0x0b4b, 0x0b4d,
+0x0b56, 0x0b57,
+0x0b62, 0x0b63,
+0x0b82, 0x0b82,
+0x0bbe, 0x0bc2,
+0x0bc6, 0x0bc8,
+0x0bca, 0x0bcd,
+0x0bd7, 0x0bd7,
+0x0c00, 0x0c03,
+0x0c3e, 0x0c44,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4d,
+0x0c55, 0x0c56,
+0x0c62, 0x0c63,
+0x0c81, 0x0c83,
+0x0cbc, 0x0cbc,
+0x0cbe, 0x0cc4,
+0x0cc6, 0x0cc8,
+0x0cca, 0x0ccd,
+0x0cd5, 0x0cd6,
+0x0ce2, 0x0ce3,
+0x0d01, 0x0d03,
+0x0d3e, 0x0d44,
+0x0d46, 0x0d48,
+0x0d4a, 0x0d4d,
+0x0d57, 0x0d57,
+0x0d62, 0x0d63,
+0x0d82, 0x0d83,
+0x0dca, 0x0dca,
+0x0dcf, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0dd8, 0x0ddf,
+0x0df2, 0x0df3,
+0x0e31, 0x0e31,
+0x0e34, 0x0e3a,
+0x0e47, 0x0e4e,
+0x0eb1, 0x0eb1,
+0x0eb4, 0x0eb9,
+0x0ebb, 0x0ebc,
+0x0ec8, 0x0ecd,
+0x0f18, 0x0f19,
+0x0f35, 0x0f35,
+0x0f37, 0x0f37,
+0x0f39, 0x0f39,
+0x0f3e, 0x0f3f,
+0x0f71, 0x0f84,
+0x0f86, 0x0f87,
+0x0f8d, 0x0f97,
+0x0f99, 0x0fbc,
+0x0fc6, 0x0fc6,
+0x102b, 0x103e,
+0x1056, 0x1059,
+0x105e, 0x1060,
+0x1062, 0x1064,
+0x1067, 0x106d,
+0x1071, 0x1074,
+0x1082, 0x108d,
+0x108f, 0x108f,
+0x109a, 0x109d,
+0x135d, 0x135f,
+0x1712, 0x1714,
+0x1732, 0x1734,
+0x1752, 0x1753,
+0x1772, 0x1773,
+0x17b4, 0x17d3,
+0x17dd, 0x17dd,
+0x180b, 0x180d,
+0x18a9, 0x18a9,
+0x1920, 0x192b,
+0x1930, 0x193b,
+0x1a17, 0x1a1b,
+0x1a55, 0x1a5e,
 0x1a60, 0x1a7c,
-0x1a7f, 0x1a89,
-0x1a90, 0x1a99,
-0x1aa0, 0x1aad,
-}; /* END of CR_Tai_Tham */
+0x1a7f, 0x1a7f,
+0x1ab0, 0x1abe,
+0x1b00, 0x1b04,
+0x1b34, 0x1b44,
+0x1b6b, 0x1b73,
+0x1b80, 0x1b82,
+0x1ba1, 0x1bad,
+0x1be6, 0x1bf3,
+0x1c24, 0x1c37,
+0x1cd0, 0x1cd2,
+0x1cd4, 0x1ce8,
+0x1ced, 0x1ced,
+0x1cf2, 0x1cf4,
+0x1cf8, 0x1cf9,
+0x1dc0, 0x1df5,
+0x1dfc, 0x1dff,
+0x20d0, 0x20f0,
+0x2cef, 0x2cf1,
+0x2d7f, 0x2d7f,
+0x2de0, 0x2dff,
+0x302a, 0x302f,
+0x3099, 0x309a,
+0xa66f, 0xa672,
+0xa674, 0xa67d,
+0xa69e, 0xa69f,
+0xa6f0, 0xa6f1,
+0xa802, 0xa802,
+0xa806, 0xa806,
+0xa80b, 0xa80b,
+0xa823, 0xa827,
+0xa880, 0xa881,
+0xa8b4, 0xa8c4,
+0xa8e0, 0xa8f1,
+0xa926, 0xa92d,
+0xa947, 0xa953,
+0xa980, 0xa983,
+0xa9b3, 0xa9c0,
+0xa9e5, 0xa9e5,
+0xaa29, 0xaa36,
+0xaa43, 0xaa43,
+0xaa4c, 0xaa4d,
+0xaa7b, 0xaa7d,
+0xaab0, 0xaab0,
+0xaab2, 0xaab4,
+0xaab7, 0xaab8,
+0xaabe, 0xaabf,
+0xaac1, 0xaac1,
+0xaaeb, 0xaaef,
+0xaaf5, 0xaaf6,
+0xabe3, 0xabea,
+0xabec, 0xabed,
+0xfb1e, 0xfb1e,
+0xfe00, 0xfe0f,
+0xfe20, 0xfe2f,
+0x101fd, 0x101fd,
+0x102e0, 0x102e0,
+0x10376, 0x1037a,
+0x10a01, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a0f,
+0x10a38, 0x10a3a,
+0x10a3f, 0x10a3f,
+0x10ae5, 0x10ae6,
+0x11000, 0x11002,
+0x11038, 0x11046,
+0x1107f, 0x11082,
+0x110b0, 0x110ba,
+0x11100, 0x11102,
+0x11127, 0x11134,
+0x11173, 0x11173,
+0x11180, 0x11182,
+0x111b3, 0x111c0,
+0x111ca, 0x111cc,
+0x1122c, 0x11237,
+0x112df, 0x112ea,
+0x11300, 0x11303,
+0x1133c, 0x1133c,
+0x1133e, 0x11344,
+0x11347, 0x11348,
+0x1134b, 0x1134d,
+0x11357, 0x11357,
+0x11362, 0x11363,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+0x114b0, 0x114c3,
+0x115af, 0x115b5,
+0x115b8, 0x115c0,
+0x115dc, 0x115dd,
+0x11630, 0x11640,
+0x116ab, 0x116b7,
+0x1171d, 0x1172b,
+0x16af0, 0x16af4,
+0x16b30, 0x16b36,
+0x16f51, 0x16f7e,
+0x16f8f, 0x16f92,
+0x1bc9d, 0x1bc9e,
+0x1d165, 0x1d169,
+0x1d16d, 0x1d172,
+0x1d17b, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0x1d242, 0x1d244,
+0x1da00, 0x1da36,
+0x1da3b, 0x1da6c,
+0x1da75, 0x1da75,
+0x1da84, 0x1da84,
+0x1da9b, 0x1da9f,
+0x1daa1, 0x1daaf,
+0x1e8d0, 0x1e8d6,
+0xe0100, 0xe01ef,
+}; /* END of CR_M */
 
-/* PROPERTY: 'Tai_Viet': Script */
+/* PROPERTY: 'Mahajani': Script */
 static const OnigCodePoint
-CR_Tai_Viet[] = { 2,
-0xaa80, 0xaac2,
-0xaadb, 0xaadf,
-}; /* END of CR_Tai_Viet */
+CR_Mahajani[] = { 1,
+0x11150, 0x11176,
+}; /* END of CR_Mahajani */
 
-/* PROPERTY: 'Avestan': Script */
+/* PROPERTY: 'Malayalam': Script */
 static const OnigCodePoint
-CR_Avestan[] = { 2,
-0x10b00, 0x10b35,
-0x10b39, 0x10b3f,
-}; /* END of CR_Avestan */
+CR_Malayalam[] = { 11,
+0x0d01, 0x0d03,
+0x0d05, 0x0d0c,
+0x0d0e, 0x0d10,
+0x0d12, 0x0d3a,
+0x0d3d, 0x0d44,
+0x0d46, 0x0d48,
+0x0d4a, 0x0d4e,
+0x0d57, 0x0d57,
+0x0d5f, 0x0d63,
+0x0d66, 0x0d75,
+0x0d79, 0x0d7f,
+}; /* END of CR_Malayalam */
 
-/* PROPERTY: 'Egyptian_Hieroglyphs': Script */
+/* PROPERTY: 'Mandaic': Script */
 static const OnigCodePoint
-CR_Egyptian_Hieroglyphs[] = { 1,
-0x13000, 0x1342e,
-}; /* END of CR_Egyptian_Hieroglyphs */
+CR_Mandaic[] = { 2,
+0x0840, 0x085b,
+0x085e, 0x085e,
+}; /* END of CR_Mandaic */
 
-/* PROPERTY: 'Samaritan': Script */
+/* PROPERTY: 'Manichaean': Script */
 static const OnigCodePoint
-CR_Samaritan[] = { 2,
-0x0800, 0x082d,
-0x0830, 0x083e,
-}; /* END of CR_Samaritan */
+CR_Manichaean[] = { 2,
+0x10ac0, 0x10ae6,
+0x10aeb, 0x10af6,
+}; /* END of CR_Manichaean */
 
-/* PROPERTY: 'Lisu': Script */
+/* PROPERTY: 'Math': Derived Property */
 static const OnigCodePoint
-CR_Lisu[] = { 1,
-0xa4d0, 0xa4ff,
-}; /* END of CR_Lisu */
+CR_Math[] = { 138,
+0x002b, 0x002b,
+0x003c, 0x003e,
+0x005e, 0x005e,
+0x007c, 0x007c,
+0x007e, 0x007e,
+0x00ac, 0x00ac,
+0x00b1, 0x00b1,
+0x00d7, 0x00d7,
+0x00f7, 0x00f7,
+0x03d0, 0x03d2,
+0x03d5, 0x03d5,
+0x03f0, 0x03f1,
+0x03f4, 0x03f6,
+0x0606, 0x0608,
+0x2016, 0x2016,
+0x2032, 0x2034,
+0x2040, 0x2040,
+0x2044, 0x2044,
+0x2052, 0x2052,
+0x2061, 0x2064,
+0x207a, 0x207e,
+0x208a, 0x208e,
+0x20d0, 0x20dc,
+0x20e1, 0x20e1,
+0x20e5, 0x20e6,
+0x20eb, 0x20ef,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2118, 0x211d,
+0x2124, 0x2124,
+0x2128, 0x2129,
+0x212c, 0x212d,
+0x212f, 0x2131,
+0x2133, 0x2138,
+0x213c, 0x2149,
+0x214b, 0x214b,
+0x2190, 0x21a7,
+0x21a9, 0x21ae,
+0x21b0, 0x21b1,
+0x21b6, 0x21b7,
+0x21bc, 0x21db,
+0x21dd, 0x21dd,
+0x21e4, 0x21e5,
+0x21f4, 0x22ff,
+0x2308, 0x230b,
+0x2320, 0x2321,
+0x237c, 0x237c,
+0x239b, 0x23b5,
+0x23b7, 0x23b7,
+0x23d0, 0x23d0,
+0x23dc, 0x23e2,
+0x25a0, 0x25a1,
+0x25ae, 0x25b7,
+0x25bc, 0x25c1,
+0x25c6, 0x25c7,
+0x25ca, 0x25cb,
+0x25cf, 0x25d3,
+0x25e2, 0x25e2,
+0x25e4, 0x25e4,
+0x25e7, 0x25ec,
+0x25f8, 0x25ff,
+0x2605, 0x2606,
+0x2640, 0x2640,
+0x2642, 0x2642,
+0x2660, 0x2663,
+0x266d, 0x266f,
+0x27c0, 0x27ff,
+0x2900, 0x2aff,
+0x2b30, 0x2b44,
+0x2b47, 0x2b4c,
+0xfb29, 0xfb29,
+0xfe61, 0xfe66,
+0xfe68, 0xfe68,
+0xff0b, 0xff0b,
+0xff1c, 0xff1e,
+0xff3c, 0xff3c,
+0xff3e, 0xff3e,
+0xff5c, 0xff5c,
+0xff5e, 0xff5e,
+0xffe2, 0xffe2,
+0xffe9, 0xffec,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d7cb,
+0x1d7ce, 0x1d7ff,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+0x1eef0, 0x1eef1,
+}; /* END of CR_Math */
 
-/* PROPERTY: 'Bamum': Script */
+/* PROPERTY: 'Mc': General Category */
 static const OnigCodePoint
-CR_Bamum[] = { 2,
-0xa6a0, 0xa6f7,
-0x16800, 0x16a38,
-}; /* END of CR_Bamum */
+CR_Mc[] = { 147,
+0x0903, 0x0903,
+0x093b, 0x093b,
+0x093e, 0x0940,
+0x0949, 0x094c,
+0x094e, 0x094f,
+0x0982, 0x0983,
+0x09be, 0x09c0,
+0x09c7, 0x09c8,
+0x09cb, 0x09cc,
+0x09d7, 0x09d7,
+0x0a03, 0x0a03,
+0x0a3e, 0x0a40,
+0x0a83, 0x0a83,
+0x0abe, 0x0ac0,
+0x0ac9, 0x0ac9,
+0x0acb, 0x0acc,
+0x0b02, 0x0b03,
+0x0b3e, 0x0b3e,
+0x0b40, 0x0b40,
+0x0b47, 0x0b48,
+0x0b4b, 0x0b4c,
+0x0b57, 0x0b57,
+0x0bbe, 0x0bbf,
+0x0bc1, 0x0bc2,
+0x0bc6, 0x0bc8,
+0x0bca, 0x0bcc,
+0x0bd7, 0x0bd7,
+0x0c01, 0x0c03,
+0x0c41, 0x0c44,
+0x0c82, 0x0c83,
+0x0cbe, 0x0cbe,
+0x0cc0, 0x0cc4,
+0x0cc7, 0x0cc8,
+0x0cca, 0x0ccb,
+0x0cd5, 0x0cd6,
+0x0d02, 0x0d03,
+0x0d3e, 0x0d40,
+0x0d46, 0x0d48,
+0x0d4a, 0x0d4c,
+0x0d57, 0x0d57,
+0x0d82, 0x0d83,
+0x0dcf, 0x0dd1,
+0x0dd8, 0x0ddf,
+0x0df2, 0x0df3,
+0x0f3e, 0x0f3f,
+0x0f7f, 0x0f7f,
+0x102b, 0x102c,
+0x1031, 0x1031,
+0x1038, 0x1038,
+0x103b, 0x103c,
+0x1056, 0x1057,
+0x1062, 0x1064,
+0x1067, 0x106d,
+0x1083, 0x1084,
+0x1087, 0x108c,
+0x108f, 0x108f,
+0x109a, 0x109c,
+0x17b6, 0x17b6,
+0x17be, 0x17c5,
+0x17c7, 0x17c8,
+0x1923, 0x1926,
+0x1929, 0x192b,
+0x1930, 0x1931,
+0x1933, 0x1938,
+0x1a19, 0x1a1a,
+0x1a55, 0x1a55,
+0x1a57, 0x1a57,
+0x1a61, 0x1a61,
+0x1a63, 0x1a64,
+0x1a6d, 0x1a72,
+0x1b04, 0x1b04,
+0x1b35, 0x1b35,
+0x1b3b, 0x1b3b,
+0x1b3d, 0x1b41,
+0x1b43, 0x1b44,
+0x1b82, 0x1b82,
+0x1ba1, 0x1ba1,
+0x1ba6, 0x1ba7,
+0x1baa, 0x1baa,
+0x1be7, 0x1be7,
+0x1bea, 0x1bec,
+0x1bee, 0x1bee,
+0x1bf2, 0x1bf3,
+0x1c24, 0x1c2b,
+0x1c34, 0x1c35,
+0x1ce1, 0x1ce1,
+0x1cf2, 0x1cf3,
+0x302e, 0x302f,
+0xa823, 0xa824,
+0xa827, 0xa827,
+0xa880, 0xa881,
+0xa8b4, 0xa8c3,
+0xa952, 0xa953,
+0xa983, 0xa983,
+0xa9b4, 0xa9b5,
+0xa9ba, 0xa9bb,
+0xa9bd, 0xa9c0,
+0xaa2f, 0xaa30,
+0xaa33, 0xaa34,
+0xaa4d, 0xaa4d,
+0xaa7b, 0xaa7b,
+0xaa7d, 0xaa7d,
+0xaaeb, 0xaaeb,
+0xaaee, 0xaaef,
+0xaaf5, 0xaaf5,
+0xabe3, 0xabe4,
+0xabe6, 0xabe7,
+0xabe9, 0xabea,
+0xabec, 0xabec,
+0x11000, 0x11000,
+0x11002, 0x11002,
+0x11082, 0x11082,
+0x110b0, 0x110b2,
+0x110b7, 0x110b8,
+0x1112c, 0x1112c,
+0x11182, 0x11182,
+0x111b3, 0x111b5,
+0x111bf, 0x111c0,
+0x1122c, 0x1122e,
+0x11232, 0x11233,
+0x11235, 0x11235,
+0x112e0, 0x112e2,
+0x11302, 0x11303,
+0x1133e, 0x1133f,
+0x11341, 0x11344,
+0x11347, 0x11348,
+0x1134b, 0x1134d,
+0x11357, 0x11357,
+0x11362, 0x11363,
+0x114b0, 0x114b2,
+0x114b9, 0x114b9,
+0x114bb, 0x114be,
+0x114c1, 0x114c1,
+0x115af, 0x115b1,
+0x115b8, 0x115bb,
+0x115be, 0x115be,
+0x11630, 0x11632,
+0x1163b, 0x1163c,
+0x1163e, 0x1163e,
+0x116ac, 0x116ac,
+0x116ae, 0x116af,
+0x116b6, 0x116b6,
+0x11720, 0x11721,
+0x11726, 0x11726,
+0x16f51, 0x16f7e,
+0x1d165, 0x1d166,
+0x1d16d, 0x1d172,
+}; /* END of CR_Mc */
 
-/* PROPERTY: 'Javanese': Script */
+/* PROPERTY: 'Me': General Category */
 static const OnigCodePoint
-CR_Javanese[] = { 3,
-0xa980, 0xa9cd,
-0xa9d0, 0xa9d9,
-0xa9de, 0xa9df,
-}; /* END of CR_Javanese */
+CR_Me[] = { 5,
+0x0488, 0x0489,
+0x1abe, 0x1abe,
+0x20dd, 0x20e0,
+0x20e2, 0x20e4,
+0xa670, 0xa672,
+}; /* END of CR_Me */
 
 /* PROPERTY: 'Meetei_Mayek': Script */
 static const OnigCodePoint
@@ -18816,251 +16341,625 @@ CR_Meetei_Mayek[] = { 3,
 0xabf0, 0xabf9,
 }; /* END of CR_Meetei_Mayek */
 
-/* PROPERTY: 'Imperial_Aramaic': Script */
+/* PROPERTY: 'Mende_Kikakui': Script */
 static const OnigCodePoint
-CR_Imperial_Aramaic[] = { 2,
-0x10840, 0x10855,
-0x10857, 0x1085f,
-}; /* END of CR_Imperial_Aramaic */
+CR_Mende_Kikakui[] = { 2,
+0x1e800, 0x1e8c4,
+0x1e8c7, 0x1e8d6,
+}; /* END of CR_Mende_Kikakui */
 
-/* PROPERTY: 'Old_South_Arabian': Script */
+/* PROPERTY: 'Meroitic_Cursive': Script */
 static const OnigCodePoint
-CR_Old_South_Arabian[] = { 1,
-0x10a60, 0x10a7f,
-}; /* END of CR_Old_South_Arabian */
+CR_Meroitic_Cursive[] = { 3,
+0x109a0, 0x109b7,
+0x109bc, 0x109cf,
+0x109d2, 0x109ff,
+}; /* END of CR_Meroitic_Cursive */
 
-/* PROPERTY: 'Inscriptional_Parthian': Script */
+/* PROPERTY: 'Meroitic_Hieroglyphs': Script */
 static const OnigCodePoint
-CR_Inscriptional_Parthian[] = { 2,
-0x10b40, 0x10b55,
-0x10b58, 0x10b5f,
-}; /* END of CR_Inscriptional_Parthian */
+CR_Meroitic_Hieroglyphs[] = { 1,
+0x10980, 0x1099f,
+}; /* END of CR_Meroitic_Hieroglyphs */
 
-/* PROPERTY: 'Inscriptional_Pahlavi': Script */
+/* PROPERTY: 'Miao': Script */
 static const OnigCodePoint
-CR_Inscriptional_Pahlavi[] = { 2,
-0x10b60, 0x10b72,
-0x10b78, 0x10b7f,
-}; /* END of CR_Inscriptional_Pahlavi */
+CR_Miao[] = { 3,
+0x16f00, 0x16f44,
+0x16f50, 0x16f7e,
+0x16f8f, 0x16f9f,
+}; /* END of CR_Miao */
 
-/* PROPERTY: 'Old_Turkic': Script */
+/* PROPERTY: 'Mn': General Category */
 static const OnigCodePoint
-CR_Old_Turkic[] = { 1,
-0x10c00, 0x10c48,
-}; /* END of CR_Old_Turkic */
+CR_Mn[] = { 266,
+0x0300, 0x036f,
+0x0483, 0x0487,
+0x0591, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c5,
+0x05c7, 0x05c7,
+0x0610, 0x061a,
+0x064b, 0x065f,
+0x0670, 0x0670,
+0x06d6, 0x06dc,
+0x06df, 0x06e4,
+0x06e7, 0x06e8,
+0x06ea, 0x06ed,
+0x0711, 0x0711,
+0x0730, 0x074a,
+0x07a6, 0x07b0,
+0x07eb, 0x07f3,
+0x0816, 0x0819,
+0x081b, 0x0823,
+0x0825, 0x0827,
+0x0829, 0x082d,
+0x0859, 0x085b,
+0x08e3, 0x0902,
+0x093a, 0x093a,
+0x093c, 0x093c,
+0x0941, 0x0948,
+0x094d, 0x094d,
+0x0951, 0x0957,
+0x0962, 0x0963,
+0x0981, 0x0981,
+0x09bc, 0x09bc,
+0x09c1, 0x09c4,
+0x09cd, 0x09cd,
+0x09e2, 0x09e3,
+0x0a01, 0x0a02,
+0x0a3c, 0x0a3c,
+0x0a41, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4d,
+0x0a51, 0x0a51,
+0x0a70, 0x0a71,
+0x0a75, 0x0a75,
+0x0a81, 0x0a82,
+0x0abc, 0x0abc,
+0x0ac1, 0x0ac5,
+0x0ac7, 0x0ac8,
+0x0acd, 0x0acd,
+0x0ae2, 0x0ae3,
+0x0b01, 0x0b01,
+0x0b3c, 0x0b3c,
+0x0b3f, 0x0b3f,
+0x0b41, 0x0b44,
+0x0b4d, 0x0b4d,
+0x0b56, 0x0b56,
+0x0b62, 0x0b63,
+0x0b82, 0x0b82,
+0x0bc0, 0x0bc0,
+0x0bcd, 0x0bcd,
+0x0c00, 0x0c00,
+0x0c3e, 0x0c40,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4d,
+0x0c55, 0x0c56,
+0x0c62, 0x0c63,
+0x0c81, 0x0c81,
+0x0cbc, 0x0cbc,
+0x0cbf, 0x0cbf,
+0x0cc6, 0x0cc6,
+0x0ccc, 0x0ccd,
+0x0ce2, 0x0ce3,
+0x0d01, 0x0d01,
+0x0d41, 0x0d44,
+0x0d4d, 0x0d4d,
+0x0d62, 0x0d63,
+0x0dca, 0x0dca,
+0x0dd2, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0e31, 0x0e31,
+0x0e34, 0x0e3a,
+0x0e47, 0x0e4e,
+0x0eb1, 0x0eb1,
+0x0eb4, 0x0eb9,
+0x0ebb, 0x0ebc,
+0x0ec8, 0x0ecd,
+0x0f18, 0x0f19,
+0x0f35, 0x0f35,
+0x0f37, 0x0f37,
+0x0f39, 0x0f39,
+0x0f71, 0x0f7e,
+0x0f80, 0x0f84,
+0x0f86, 0x0f87,
+0x0f8d, 0x0f97,
+0x0f99, 0x0fbc,
+0x0fc6, 0x0fc6,
+0x102d, 0x1030,
+0x1032, 0x1037,
+0x1039, 0x103a,
+0x103d, 0x103e,
+0x1058, 0x1059,
+0x105e, 0x1060,
+0x1071, 0x1074,
+0x1082, 0x1082,
+0x1085, 0x1086,
+0x108d, 0x108d,
+0x109d, 0x109d,
+0x135d, 0x135f,
+0x1712, 0x1714,
+0x1732, 0x1734,
+0x1752, 0x1753,
+0x1772, 0x1773,
+0x17b4, 0x17b5,
+0x17b7, 0x17bd,
+0x17c6, 0x17c6,
+0x17c9, 0x17d3,
+0x17dd, 0x17dd,
+0x180b, 0x180d,
+0x18a9, 0x18a9,
+0x1920, 0x1922,
+0x1927, 0x1928,
+0x1932, 0x1932,
+0x1939, 0x193b,
+0x1a17, 0x1a18,
+0x1a1b, 0x1a1b,
+0x1a56, 0x1a56,
+0x1a58, 0x1a5e,
+0x1a60, 0x1a60,
+0x1a62, 0x1a62,
+0x1a65, 0x1a6c,
+0x1a73, 0x1a7c,
+0x1a7f, 0x1a7f,
+0x1ab0, 0x1abd,
+0x1b00, 0x1b03,
+0x1b34, 0x1b34,
+0x1b36, 0x1b3a,
+0x1b3c, 0x1b3c,
+0x1b42, 0x1b42,
+0x1b6b, 0x1b73,
+0x1b80, 0x1b81,
+0x1ba2, 0x1ba5,
+0x1ba8, 0x1ba9,
+0x1bab, 0x1bad,
+0x1be6, 0x1be6,
+0x1be8, 0x1be9,
+0x1bed, 0x1bed,
+0x1bef, 0x1bf1,
+0x1c2c, 0x1c33,
+0x1c36, 0x1c37,
+0x1cd0, 0x1cd2,
+0x1cd4, 0x1ce0,
+0x1ce2, 0x1ce8,
+0x1ced, 0x1ced,
+0x1cf4, 0x1cf4,
+0x1cf8, 0x1cf9,
+0x1dc0, 0x1df5,
+0x1dfc, 0x1dff,
+0x20d0, 0x20dc,
+0x20e1, 0x20e1,
+0x20e5, 0x20f0,
+0x2cef, 0x2cf1,
+0x2d7f, 0x2d7f,
+0x2de0, 0x2dff,
+0x302a, 0x302d,
+0x3099, 0x309a,
+0xa66f, 0xa66f,
+0xa674, 0xa67d,
+0xa69e, 0xa69f,
+0xa6f0, 0xa6f1,
+0xa802, 0xa802,
+0xa806, 0xa806,
+0xa80b, 0xa80b,
+0xa825, 0xa826,
+0xa8c4, 0xa8c4,
+0xa8e0, 0xa8f1,
+0xa926, 0xa92d,
+0xa947, 0xa951,
+0xa980, 0xa982,
+0xa9b3, 0xa9b3,
+0xa9b6, 0xa9b9,
+0xa9bc, 0xa9bc,
+0xa9e5, 0xa9e5,
+0xaa29, 0xaa2e,
+0xaa31, 0xaa32,
+0xaa35, 0xaa36,
+0xaa43, 0xaa43,
+0xaa4c, 0xaa4c,
+0xaa7c, 0xaa7c,
+0xaab0, 0xaab0,
+0xaab2, 0xaab4,
+0xaab7, 0xaab8,
+0xaabe, 0xaabf,
+0xaac1, 0xaac1,
+0xaaec, 0xaaed,
+0xaaf6, 0xaaf6,
+0xabe5, 0xabe5,
+0xabe8, 0xabe8,
+0xabed, 0xabed,
+0xfb1e, 0xfb1e,
+0xfe00, 0xfe0f,
+0xfe20, 0xfe2f,
+0x101fd, 0x101fd,
+0x102e0, 0x102e0,
+0x10376, 0x1037a,
+0x10a01, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a0f,
+0x10a38, 0x10a3a,
+0x10a3f, 0x10a3f,
+0x10ae5, 0x10ae6,
+0x11001, 0x11001,
+0x11038, 0x11046,
+0x1107f, 0x11081,
+0x110b3, 0x110b6,
+0x110b9, 0x110ba,
+0x11100, 0x11102,
+0x11127, 0x1112b,
+0x1112d, 0x11134,
+0x11173, 0x11173,
+0x11180, 0x11181,
+0x111b6, 0x111be,
+0x111ca, 0x111cc,
+0x1122f, 0x11231,
+0x11234, 0x11234,
+0x11236, 0x11237,
+0x112df, 0x112df,
+0x112e3, 0x112ea,
+0x11300, 0x11301,
+0x1133c, 0x1133c,
+0x11340, 0x11340,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+0x114b3, 0x114b8,
+0x114ba, 0x114ba,
+0x114bf, 0x114c0,
+0x114c2, 0x114c3,
+0x115b2, 0x115b5,
+0x115bc, 0x115bd,
+0x115bf, 0x115c0,
+0x115dc, 0x115dd,
+0x11633, 0x1163a,
+0x1163d, 0x1163d,
+0x1163f, 0x11640,
+0x116ab, 0x116ab,
+0x116ad, 0x116ad,
+0x116b0, 0x116b5,
+0x116b7, 0x116b7,
+0x1171d, 0x1171f,
+0x11722, 0x11725,
+0x11727, 0x1172b,
+0x16af0, 0x16af4,
+0x16b30, 0x16b36,
+0x16f8f, 0x16f92,
+0x1bc9d, 0x1bc9e,
+0x1d167, 0x1d169,
+0x1d17b, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0x1d242, 0x1d244,
+0x1da00, 0x1da36,
+0x1da3b, 0x1da6c,
+0x1da75, 0x1da75,
+0x1da84, 0x1da84,
+0x1da9b, 0x1da9f,
+0x1daa1, 0x1daaf,
+0x1e8d0, 0x1e8d6,
+0xe0100, 0xe01ef,
+}; /* END of CR_Mn */
 
-/* PROPERTY: 'Kaithi': Script */
+/* PROPERTY: 'Modi': Script */
 static const OnigCodePoint
-CR_Kaithi[] = { 1,
-0x11080, 0x110c1,
-}; /* END of CR_Kaithi */
+CR_Modi[] = { 2,
+0x11600, 0x11644,
+0x11650, 0x11659,
+}; /* END of CR_Modi */
 
-/* PROPERTY: 'Batak': Script */
+/* PROPERTY: 'Mongolian': Script */
 static const OnigCodePoint
-CR_Batak[] = { 2,
-0x1bc0, 0x1bf3,
-0x1bfc, 0x1bff,
-}; /* END of CR_Batak */
+CR_Mongolian[] = { 6,
+0x1800, 0x1801,
+0x1804, 0x1804,
+0x1806, 0x180e,
+0x1810, 0x1819,
+0x1820, 0x1877,
+0x1880, 0x18aa,
+}; /* END of CR_Mongolian */
 
-/* PROPERTY: 'Brahmi': Script */
+/* PROPERTY: 'Mro': Script */
 static const OnigCodePoint
-CR_Brahmi[] = { 3,
-0x11000, 0x1104d,
-0x11052, 0x1106f,
-0x1107f, 0x1107f,
-}; /* END of CR_Brahmi */
+CR_Mro[] = { 3,
+0x16a40, 0x16a5e,
+0x16a60, 0x16a69,
+0x16a6e, 0x16a6f,
+}; /* END of CR_Mro */
 
-/* PROPERTY: 'Mandaic': Script */
+/* PROPERTY: 'Multani': Script */
 static const OnigCodePoint
-CR_Mandaic[] = { 2,
-0x0840, 0x085b,
-0x085e, 0x085e,
-}; /* END of CR_Mandaic */
+CR_Multani[] = { 5,
+0x11280, 0x11286,
+0x11288, 0x11288,
+0x1128a, 0x1128d,
+0x1128f, 0x1129d,
+0x1129f, 0x112a9,
+}; /* END of CR_Multani */
 
-/* PROPERTY: 'Chakma': Script */
+/* PROPERTY: 'Myanmar': Script */
 static const OnigCodePoint
-CR_Chakma[] = { 2,
-0x11100, 0x11134,
-0x11136, 0x11143,
-}; /* END of CR_Chakma */
+CR_Myanmar[] = { 3,
+0x1000, 0x109f,
+0xa9e0, 0xa9fe,
+0xaa60, 0xaa7f,
+}; /* END of CR_Myanmar */
 
-/* PROPERTY: 'Meroitic_Cursive': Script */
+/* PROPERTY: 'N': Major Category */
 static const OnigCodePoint
-CR_Meroitic_Cursive[] = { 3,
-0x109a0, 0x109b7,
-0x109bc, 0x109cf,
+CR_N[] = { 111,
+0x0030, 0x0039,
+0x00b2, 0x00b3,
+0x00b9, 0x00b9,
+0x00bc, 0x00be,
+0x0660, 0x0669,
+0x06f0, 0x06f9,
+0x07c0, 0x07c9,
+0x0966, 0x096f,
+0x09e6, 0x09ef,
+0x09f4, 0x09f9,
+0x0a66, 0x0a6f,
+0x0ae6, 0x0aef,
+0x0b66, 0x0b6f,
+0x0b72, 0x0b77,
+0x0be6, 0x0bf2,
+0x0c66, 0x0c6f,
+0x0c78, 0x0c7e,
+0x0ce6, 0x0cef,
+0x0d66, 0x0d75,
+0x0de6, 0x0def,
+0x0e50, 0x0e59,
+0x0ed0, 0x0ed9,
+0x0f20, 0x0f33,
+0x1040, 0x1049,
+0x1090, 0x1099,
+0x1369, 0x137c,
+0x16ee, 0x16f0,
+0x17e0, 0x17e9,
+0x17f0, 0x17f9,
+0x1810, 0x1819,
+0x1946, 0x194f,
+0x19d0, 0x19da,
+0x1a80, 0x1a89,
+0x1a90, 0x1a99,
+0x1b50, 0x1b59,
+0x1bb0, 0x1bb9,
+0x1c40, 0x1c49,
+0x1c50, 0x1c59,
+0x2070, 0x2070,
+0x2074, 0x2079,
+0x2080, 0x2089,
+0x2150, 0x2182,
+0x2185, 0x2189,
+0x2460, 0x249b,
+0x24ea, 0x24ff,
+0x2776, 0x2793,
+0x2cfd, 0x2cfd,
+0x3007, 0x3007,
+0x3021, 0x3029,
+0x3038, 0x303a,
+0x3192, 0x3195,
+0x3220, 0x3229,
+0x3248, 0x324f,
+0x3251, 0x325f,
+0x3280, 0x3289,
+0x32b1, 0x32bf,
+0xa620, 0xa629,
+0xa6e6, 0xa6ef,
+0xa830, 0xa835,
+0xa8d0, 0xa8d9,
+0xa900, 0xa909,
+0xa9d0, 0xa9d9,
+0xa9f0, 0xa9f9,
+0xaa50, 0xaa59,
+0xabf0, 0xabf9,
+0xff10, 0xff19,
+0x10107, 0x10133,
+0x10140, 0x10178,
+0x1018a, 0x1018b,
+0x102e1, 0x102fb,
+0x10320, 0x10323,
+0x10341, 0x10341,
+0x1034a, 0x1034a,
+0x103d1, 0x103d5,
+0x104a0, 0x104a9,
+0x10858, 0x1085f,
+0x10879, 0x1087f,
+0x108a7, 0x108af,
+0x108fb, 0x108ff,
+0x10916, 0x1091b,
+0x109bc, 0x109bd,
+0x109c0, 0x109cf,
 0x109d2, 0x109ff,
-}; /* END of CR_Meroitic_Cursive */
-
-/* PROPERTY: 'Meroitic_Hieroglyphs': Script */
-static const OnigCodePoint
-CR_Meroitic_Hieroglyphs[] = { 1,
-0x10980, 0x1099f,
-}; /* END of CR_Meroitic_Hieroglyphs */
-
-/* PROPERTY: 'Miao': Script */
-static const OnigCodePoint
-CR_Miao[] = { 3,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
-0x16f8f, 0x16f9f,
-}; /* END of CR_Miao */
-
-/* PROPERTY: 'Sharada': Script */
-static const OnigCodePoint
-CR_Sharada[] = { 2,
-0x11180, 0x111cd,
-0x111d0, 0x111df,
-}; /* END of CR_Sharada */
-
-/* PROPERTY: 'Sora_Sompeng': Script */
-static const OnigCodePoint
-CR_Sora_Sompeng[] = { 2,
-0x110d0, 0x110e8,
+0x10a40, 0x10a47,
+0x10a7d, 0x10a7e,
+0x10a9d, 0x10a9f,
+0x10aeb, 0x10aef,
+0x10b58, 0x10b5f,
+0x10b78, 0x10b7f,
+0x10ba9, 0x10baf,
+0x10cfa, 0x10cff,
+0x10e60, 0x10e7e,
+0x11052, 0x1106f,
 0x110f0, 0x110f9,
-}; /* END of CR_Sora_Sompeng */
-
-/* PROPERTY: 'Takri': Script */
-static const OnigCodePoint
-CR_Takri[] = { 2,
-0x11680, 0x116b7,
-0x116c0, 0x116c9,
-}; /* END of CR_Takri */
-
-/* PROPERTY: 'Caucasian_Albanian': Script */
-static const OnigCodePoint
-CR_Caucasian_Albanian[] = { 2,
-0x10530, 0x10563,
-0x1056f, 0x1056f,
-}; /* END of CR_Caucasian_Albanian */
-
-/* PROPERTY: 'Bassa_Vah': Script */
-static const OnigCodePoint
-CR_Bassa_Vah[] = { 2,
-0x16ad0, 0x16aed,
-0x16af0, 0x16af5,
-}; /* END of CR_Bassa_Vah */
-
-/* PROPERTY: 'Duployan': Script */
-static const OnigCodePoint
-CR_Duployan[] = { 5,
-0x1bc00, 0x1bc6a,
-0x1bc70, 0x1bc7c,
-0x1bc80, 0x1bc88,
-0x1bc90, 0x1bc99,
-0x1bc9c, 0x1bc9f,
-}; /* END of CR_Duployan */
-
-/* PROPERTY: 'Elbasan': Script */
-static const OnigCodePoint
-CR_Elbasan[] = { 1,
-0x10500, 0x10527,
-}; /* END of CR_Elbasan */
-
-/* PROPERTY: 'Grantha': Script */
-static const OnigCodePoint
-CR_Grantha[] = { 15,
-0x11300, 0x11303,
-0x11305, 0x1130c,
-0x1130f, 0x11310,
-0x11313, 0x11328,
-0x1132a, 0x11330,
-0x11332, 0x11333,
-0x11335, 0x11339,
-0x1133c, 0x11344,
-0x11347, 0x11348,
-0x1134b, 0x1134d,
-0x11350, 0x11350,
-0x11357, 0x11357,
-0x1135d, 0x11363,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-}; /* END of CR_Grantha */
-
-/* PROPERTY: 'Pahawh_Hmong': Script */
-static const OnigCodePoint
-CR_Pahawh_Hmong[] = { 5,
-0x16b00, 0x16b45,
+0x11136, 0x1113f,
+0x111d0, 0x111d9,
+0x111e1, 0x111f4,
+0x112f0, 0x112f9,
+0x114d0, 0x114d9,
+0x11650, 0x11659,
+0x116c0, 0x116c9,
+0x11730, 0x1173b,
+0x118e0, 0x118f2,
+0x12400, 0x1246e,
+0x16a60, 0x16a69,
 0x16b50, 0x16b59,
 0x16b5b, 0x16b61,
-0x16b63, 0x16b77,
-0x16b7d, 0x16b8f,
-}; /* END of CR_Pahawh_Hmong */
+0x1d360, 0x1d371,
+0x1d7ce, 0x1d7ff,
+0x1e8c7, 0x1e8cf,
+0x1f100, 0x1f10c,
+}; /* END of CR_N */
 
-/* PROPERTY: 'Khojki': Script */
+/* PROPERTY: 'Nabataean': Script */
 static const OnigCodePoint
-CR_Khojki[] = { 2,
-0x11200, 0x11211,
-0x11213, 0x1123d,
-}; /* END of CR_Khojki */
+CR_Nabataean[] = { 2,
+0x10880, 0x1089e,
+0x108a7, 0x108af,
+}; /* END of CR_Nabataean */
 
-/* PROPERTY: 'Linear_A': Script */
+/* PROPERTY: 'Nd': General Category */
+#define CR_Nd CR_Digit
+
+/* PROPERTY: 'New_Tai_Lue': Script */
 static const OnigCodePoint
-CR_Linear_A[] = { 3,
-0x10600, 0x10736,
-0x10740, 0x10755,
-0x10760, 0x10767,
-}; /* END of CR_Linear_A */
+CR_New_Tai_Lue[] = { 4,
+0x1980, 0x19ab,
+0x19b0, 0x19c9,
+0x19d0, 0x19da,
+0x19de, 0x19df,
+}; /* END of CR_New_Tai_Lue */
 
-/* PROPERTY: 'Mahajani': Script */
+/* PROPERTY: 'Nko': Script */
 static const OnigCodePoint
-CR_Mahajani[] = { 1,
-0x11150, 0x11176,
-}; /* END of CR_Mahajani */
+CR_Nko[] = { 1,
+0x07c0, 0x07fa,
+}; /* END of CR_Nko */
 
-/* PROPERTY: 'Manichaean': Script */
+/* PROPERTY: 'Nl': General Category */
 static const OnigCodePoint
-CR_Manichaean[] = { 2,
-0x10ac0, 0x10ae6,
-0x10aeb, 0x10af6,
-}; /* END of CR_Manichaean */
+CR_Nl[] = { 12,
+0x16ee, 0x16f0,
+0x2160, 0x2182,
+0x2185, 0x2188,
+0x3007, 0x3007,
+0x3021, 0x3029,
+0x3038, 0x303a,
+0xa6e6, 0xa6ef,
+0x10140, 0x10174,
+0x10341, 0x10341,
+0x1034a, 0x1034a,
+0x103d1, 0x103d5,
+0x12400, 0x1246e,
+}; /* END of CR_Nl */
 
-/* PROPERTY: 'Mende_Kikakui': Script */
+/* PROPERTY: 'No': General Category */
 static const OnigCodePoint
-CR_Mende_Kikakui[] = { 2,
-0x1e800, 0x1e8c4,
-0x1e8c7, 0x1e8d6,
-}; /* END of CR_Mende_Kikakui */
+CR_No[] = { 58,
+0x00b2, 0x00b3,
+0x00b9, 0x00b9,
+0x00bc, 0x00be,
+0x09f4, 0x09f9,
+0x0b72, 0x0b77,
+0x0bf0, 0x0bf2,
+0x0c78, 0x0c7e,
+0x0d70, 0x0d75,
+0x0f2a, 0x0f33,
+0x1369, 0x137c,
+0x17f0, 0x17f9,
+0x19da, 0x19da,
+0x2070, 0x2070,
+0x2074, 0x2079,
+0x2080, 0x2089,
+0x2150, 0x215f,
+0x2189, 0x2189,
+0x2460, 0x249b,
+0x24ea, 0x24ff,
+0x2776, 0x2793,
+0x2cfd, 0x2cfd,
+0x3192, 0x3195,
+0x3220, 0x3229,
+0x3248, 0x324f,
+0x3251, 0x325f,
+0x3280, 0x3289,
+0x32b1, 0x32bf,
+0xa830, 0xa835,
+0x10107, 0x10133,
+0x10175, 0x10178,
+0x1018a, 0x1018b,
+0x102e1, 0x102fb,
+0x10320, 0x10323,
+0x10858, 0x1085f,
+0x10879, 0x1087f,
+0x108a7, 0x108af,
+0x108fb, 0x108ff,
+0x10916, 0x1091b,
+0x109bc, 0x109bd,
+0x109c0, 0x109cf,
+0x109d2, 0x109ff,
+0x10a40, 0x10a47,
+0x10a7d, 0x10a7e,
+0x10a9d, 0x10a9f,
+0x10aeb, 0x10aef,
+0x10b58, 0x10b5f,
+0x10b78, 0x10b7f,
+0x10ba9, 0x10baf,
+0x10cfa, 0x10cff,
+0x10e60, 0x10e7e,
+0x11052, 0x11065,
+0x111e1, 0x111f4,
+0x1173a, 0x1173b,
+0x118ea, 0x118f2,
+0x16b5b, 0x16b61,
+0x1d360, 0x1d371,
+0x1e8c7, 0x1e8cf,
+0x1f100, 0x1f10c,
+}; /* END of CR_No */
 
-/* PROPERTY: 'Modi': Script */
+/* PROPERTY: 'Noncharacter_Code_Point': Binary Property */
 static const OnigCodePoint
-CR_Modi[] = { 2,
-0x11600, 0x11644,
-0x11650, 0x11659,
-}; /* END of CR_Modi */
+CR_Noncharacter_Code_Point[] = { 18,
+0xfdd0, 0xfdef,
+0xfffe, 0xffff,
+0x1fffe, 0x1ffff,
+0x2fffe, 0x2ffff,
+0x3fffe, 0x3ffff,
+0x4fffe, 0x4ffff,
+0x5fffe, 0x5ffff,
+0x6fffe, 0x6ffff,
+0x7fffe, 0x7ffff,
+0x8fffe, 0x8ffff,
+0x9fffe, 0x9ffff,
+0xafffe, 0xaffff,
+0xbfffe, 0xbffff,
+0xcfffe, 0xcffff,
+0xdfffe, 0xdffff,
+0xefffe, 0xeffff,
+0xffffe, 0xfffff,
+0x10fffe, 0x10ffff,
+}; /* END of CR_Noncharacter_Code_Point */
 
-/* PROPERTY: 'Mro': Script */
+/* PROPERTY: 'Ogham': Script */
 static const OnigCodePoint
-CR_Mro[] = { 3,
-0x16a40, 0x16a5e,
-0x16a60, 0x16a69,
-0x16a6e, 0x16a6f,
-}; /* END of CR_Mro */
+CR_Ogham[] = { 1,
+0x1680, 0x169c,
+}; /* END of CR_Ogham */
 
-/* PROPERTY: 'Old_North_Arabian': Script */
+/* PROPERTY: 'Ol_Chiki': Script */
 static const OnigCodePoint
-CR_Old_North_Arabian[] = { 1,
-0x10a80, 0x10a9f,
-}; /* END of CR_Old_North_Arabian */
+CR_Ol_Chiki[] = { 1,
+0x1c50, 0x1c7f,
+}; /* END of CR_Ol_Chiki */
 
-/* PROPERTY: 'Nabataean': Script */
+/* PROPERTY: 'Old_Hungarian': Script */
 static const OnigCodePoint
-CR_Nabataean[] = { 2,
-0x10880, 0x1089e,
-0x108a7, 0x108af,
-}; /* END of CR_Nabataean */
+CR_Old_Hungarian[] = { 3,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x10cfa, 0x10cff,
+}; /* END of CR_Old_Hungarian */
 
-/* PROPERTY: 'Palmyrene': Script */
+/* PROPERTY: 'Old_Italic': Script */
 static const OnigCodePoint
-CR_Palmyrene[] = { 1,
-0x10860, 0x1087f,
-}; /* END of CR_Palmyrene */
+CR_Old_Italic[] = { 1,
+0x10300, 0x10323,
+}; /* END of CR_Old_Italic */
 
-/* PROPERTY: 'Pau_Cin_Hau': Script */
+/* PROPERTY: 'Old_North_Arabian': Script */
 static const OnigCodePoint
-CR_Pau_Cin_Hau[] = { 1,
-0x11ac0, 0x11af8,
-}; /* END of CR_Pau_Cin_Hau */
+CR_Old_North_Arabian[] = { 1,
+0x10a80, 0x10a9f,
+}; /* END of CR_Old_North_Arabian */
 
 /* PROPERTY: 'Old_Permic': Script */
 static const OnigCodePoint
@@ -19068,261 +16967,318 @@ CR_Old_Permic[] = { 1,
 0x10350, 0x1037a,
 }; /* END of CR_Old_Permic */
 
-/* PROPERTY: 'Psalter_Pahlavi': Script */
-static const OnigCodePoint
-CR_Psalter_Pahlavi[] = { 3,
-0x10b80, 0x10b91,
-0x10b99, 0x10b9c,
-0x10ba9, 0x10baf,
-}; /* END of CR_Psalter_Pahlavi */
-
-/* PROPERTY: 'Siddham': Script */
-static const OnigCodePoint
-CR_Siddham[] = { 2,
-0x11580, 0x115b5,
-0x115b8, 0x115dd,
-}; /* END of CR_Siddham */
-
-/* PROPERTY: 'Khudawadi': Script */
-static const OnigCodePoint
-CR_Khudawadi[] = { 2,
-0x112b0, 0x112ea,
-0x112f0, 0x112f9,
-}; /* END of CR_Khudawadi */
-
-/* PROPERTY: 'Tirhuta': Script */
-static const OnigCodePoint
-CR_Tirhuta[] = { 2,
-0x11480, 0x114c7,
-0x114d0, 0x114d9,
-}; /* END of CR_Tirhuta */
-
-/* PROPERTY: 'Warang_Citi': Script */
-static const OnigCodePoint
-CR_Warang_Citi[] = { 2,
-0x118a0, 0x118f2,
-0x118ff, 0x118ff,
-}; /* END of CR_Warang_Citi */
-
-/* PROPERTY: 'Ahom': Script */
+/* PROPERTY: 'Old_Persian': Script */
 static const OnigCodePoint
-CR_Ahom[] = { 3,
-0x11700, 0x11719,
-0x1171d, 0x1172b,
-0x11730, 0x1173f,
-}; /* END of CR_Ahom */
+CR_Old_Persian[] = { 2,
+0x103a0, 0x103c3,
+0x103c8, 0x103d5,
+}; /* END of CR_Old_Persian */
 
-/* PROPERTY: 'Anatolian_Hieroglyphs': Script */
+/* PROPERTY: 'Old_South_Arabian': Script */
 static const OnigCodePoint
-CR_Anatolian_Hieroglyphs[] = { 1,
-0x14400, 0x14646,
-}; /* END of CR_Anatolian_Hieroglyphs */
+CR_Old_South_Arabian[] = { 1,
+0x10a60, 0x10a7f,
+}; /* END of CR_Old_South_Arabian */
 
-/* PROPERTY: 'Hatran': Script */
+/* PROPERTY: 'Old_Turkic': Script */
 static const OnigCodePoint
-CR_Hatran[] = { 3,
-0x108e0, 0x108f2,
-0x108f4, 0x108f5,
-0x108fb, 0x108ff,
-}; /* END of CR_Hatran */
+CR_Old_Turkic[] = { 1,
+0x10c00, 0x10c48,
+}; /* END of CR_Old_Turkic */
 
-/* PROPERTY: 'Multani': Script */
+/* PROPERTY: 'Oriya': Script */
 static const OnigCodePoint
-CR_Multani[] = { 5,
-0x11280, 0x11286,
-0x11288, 0x11288,
-0x1128a, 0x1128d,
-0x1128f, 0x1129d,
-0x1129f, 0x112a9,
-}; /* END of CR_Multani */
+CR_Oriya[] = { 14,
+0x0b01, 0x0b03,
+0x0b05, 0x0b0c,
+0x0b0f, 0x0b10,
+0x0b13, 0x0b28,
+0x0b2a, 0x0b30,
+0x0b32, 0x0b33,
+0x0b35, 0x0b39,
+0x0b3c, 0x0b44,
+0x0b47, 0x0b48,
+0x0b4b, 0x0b4d,
+0x0b56, 0x0b57,
+0x0b5c, 0x0b5d,
+0x0b5f, 0x0b63,
+0x0b66, 0x0b77,
+}; /* END of CR_Oriya */
 
-/* PROPERTY: 'Old_Hungarian': Script */
+/* PROPERTY: 'Osmanya': Script */
 static const OnigCodePoint
-CR_Old_Hungarian[] = { 3,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x10cfa, 0x10cff,
-}; /* END of CR_Old_Hungarian */
+CR_Osmanya[] = { 2,
+0x10480, 0x1049d,
+0x104a0, 0x104a9,
+}; /* END of CR_Osmanya */
 
-/* PROPERTY: 'SignWriting': Script */
+/* PROPERTY: 'Other_Alphabetic': Binary Property */
 static const OnigCodePoint
-CR_SignWriting[] = { 3,
-0x1d800, 0x1da8b,
-0x1da9b, 0x1da9f,
-0x1daa1, 0x1daaf,
-}; /* END of CR_SignWriting */
-
-/* PROPERTY: 'White_Space': Binary Property */
-#define CR_White_Space CR_Space
+CR_Other_Alphabetic[] = { 178,
+0x0345, 0x0345,
+0x05b0, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c5,
+0x05c7, 0x05c7,
+0x0610, 0x061a,
+0x064b, 0x0657,
+0x0659, 0x065f,
+0x0670, 0x0670,
+0x06d6, 0x06dc,
+0x06e1, 0x06e4,
+0x06e7, 0x06e8,
+0x06ed, 0x06ed,
+0x0711, 0x0711,
+0x0730, 0x073f,
+0x07a6, 0x07b0,
+0x0816, 0x0817,
+0x081b, 0x0823,
+0x0825, 0x0827,
+0x0829, 0x082c,
+0x08e3, 0x08e9,
+0x08f0, 0x0903,
+0x093a, 0x093b,
+0x093e, 0x094c,
+0x094e, 0x094f,
+0x0955, 0x0957,
+0x0962, 0x0963,
+0x0981, 0x0983,
+0x09be, 0x09c4,
+0x09c7, 0x09c8,
+0x09cb, 0x09cc,
+0x09d7, 0x09d7,
+0x09e2, 0x09e3,
+0x0a01, 0x0a03,
+0x0a3e, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4c,
+0x0a51, 0x0a51,
+0x0a70, 0x0a71,
+0x0a75, 0x0a75,
+0x0a81, 0x0a83,
+0x0abe, 0x0ac5,
+0x0ac7, 0x0ac9,
+0x0acb, 0x0acc,
+0x0ae2, 0x0ae3,
+0x0b01, 0x0b03,
+0x0b3e, 0x0b44,
+0x0b47, 0x0b48,
+0x0b4b, 0x0b4c,
+0x0b56, 0x0b57,
+0x0b62, 0x0b63,
+0x0b82, 0x0b82,
+0x0bbe, 0x0bc2,
+0x0bc6, 0x0bc8,
+0x0bca, 0x0bcc,
+0x0bd7, 0x0bd7,
+0x0c00, 0x0c03,
+0x0c3e, 0x0c44,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4c,
+0x0c55, 0x0c56,
+0x0c62, 0x0c63,
+0x0c81, 0x0c83,
+0x0cbe, 0x0cc4,
+0x0cc6, 0x0cc8,
+0x0cca, 0x0ccc,
+0x0cd5, 0x0cd6,
+0x0ce2, 0x0ce3,
+0x0d01, 0x0d03,
+0x0d3e, 0x0d44,
+0x0d46, 0x0d48,
+0x0d4a, 0x0d4c,
+0x0d57, 0x0d57,
+0x0d62, 0x0d63,
+0x0d82, 0x0d83,
+0x0dcf, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0dd8, 0x0ddf,
+0x0df2, 0x0df3,
+0x0e31, 0x0e31,
+0x0e34, 0x0e3a,
+0x0e4d, 0x0e4d,
+0x0eb1, 0x0eb1,
+0x0eb4, 0x0eb9,
+0x0ebb, 0x0ebc,
+0x0ecd, 0x0ecd,
+0x0f71, 0x0f81,
+0x0f8d, 0x0f97,
+0x0f99, 0x0fbc,
+0x102b, 0x1036,
+0x1038, 0x1038,
+0x103b, 0x103e,
+0x1056, 0x1059,
+0x105e, 0x1060,
+0x1062, 0x1062,
+0x1067, 0x1068,
+0x1071, 0x1074,
+0x1082, 0x1086,
+0x109c, 0x109d,
+0x135f, 0x135f,
+0x1712, 0x1713,
+0x1732, 0x1733,
+0x1752, 0x1753,
+0x1772, 0x1773,
+0x17b6, 0x17c8,
+0x18a9, 0x18a9,
+0x1920, 0x192b,
+0x1930, 0x1938,
+0x1a17, 0x1a1b,
+0x1a55, 0x1a5e,
+0x1a61, 0x1a74,
+0x1b00, 0x1b04,
+0x1b35, 0x1b43,
+0x1b80, 0x1b82,
+0x1ba1, 0x1ba9,
+0x1bac, 0x1bad,
+0x1be7, 0x1bf1,
+0x1c24, 0x1c35,
+0x1cf2, 0x1cf3,
+0x1de7, 0x1df4,
+0x24b6, 0x24e9,
+0x2de0, 0x2dff,
+0xa674, 0xa67b,
+0xa69e, 0xa69f,
+0xa823, 0xa827,
+0xa880, 0xa881,
+0xa8b4, 0xa8c3,
+0xa926, 0xa92a,
+0xa947, 0xa952,
+0xa980, 0xa983,
+0xa9b4, 0xa9bf,
+0xaa29, 0xaa36,
+0xaa43, 0xaa43,
+0xaa4c, 0xaa4d,
+0xaab0, 0xaab0,
+0xaab2, 0xaab4,
+0xaab7, 0xaab8,
+0xaabe, 0xaabe,
+0xaaeb, 0xaaef,
+0xaaf5, 0xaaf5,
+0xabe3, 0xabea,
+0xfb1e, 0xfb1e,
+0x10376, 0x1037a,
+0x10a01, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a0f,
+0x11000, 0x11002,
+0x11038, 0x11045,
+0x11082, 0x11082,
+0x110b0, 0x110b8,
+0x11100, 0x11102,
+0x11127, 0x11132,
+0x11180, 0x11182,
+0x111b3, 0x111bf,
+0x1122c, 0x11234,
+0x11237, 0x11237,
+0x112df, 0x112e8,
+0x11300, 0x11303,
+0x1133e, 0x11344,
+0x11347, 0x11348,
+0x1134b, 0x1134c,
+0x11357, 0x11357,
+0x11362, 0x11363,
+0x114b0, 0x114c1,
+0x115af, 0x115b5,
+0x115b8, 0x115be,
+0x115dc, 0x115dd,
+0x11630, 0x1163e,
+0x11640, 0x11640,
+0x116ab, 0x116b5,
+0x1171d, 0x1172a,
+0x16b30, 0x16b36,
+0x16f51, 0x16f7e,
+0x1bc9e, 0x1bc9e,
+0x1f130, 0x1f149,
+0x1f150, 0x1f169,
+0x1f170, 0x1f189,
+}; /* END of CR_Other_Alphabetic */
 
-/* PROPERTY: 'Bidi_Control': Binary Property */
+/* PROPERTY: 'Other_Default_Ignorable_Code_Point': Binary Property */
 static const OnigCodePoint
-CR_Bidi_Control[] = { 4,
-0x061c, 0x061c,
-0x200e, 0x200f,
-0x202a, 0x202e,
-0x2066, 0x2069,
-}; /* END of CR_Bidi_Control */
+CR_Other_Default_Ignorable_Code_Point[] = { 11,
+0x034f, 0x034f,
+0x115f, 0x1160,
+0x17b4, 0x17b5,
+0x2065, 0x2065,
+0x3164, 0x3164,
+0xffa0, 0xffa0,
+0xfff0, 0xfff8,
+0xe0000, 0xe0000,
+0xe0002, 0xe001f,
+0xe0080, 0xe00ff,
+0xe01f0, 0xe0fff,
+}; /* END of CR_Other_Default_Ignorable_Code_Point */
 
-/* PROPERTY: 'Join_Control': Binary Property */
+/* PROPERTY: 'Other_Grapheme_Extend': Binary Property */
 static const OnigCodePoint
-CR_Join_Control[] = { 1,
+CR_Other_Grapheme_Extend[] = { 22,
+0x09be, 0x09be,
+0x09d7, 0x09d7,
+0x0b3e, 0x0b3e,
+0x0b57, 0x0b57,
+0x0bbe, 0x0bbe,
+0x0bd7, 0x0bd7,
+0x0cc2, 0x0cc2,
+0x0cd5, 0x0cd6,
+0x0d3e, 0x0d3e,
+0x0d57, 0x0d57,
+0x0dcf, 0x0dcf,
+0x0ddf, 0x0ddf,
 0x200c, 0x200d,
-}; /* END of CR_Join_Control */
-
-/* PROPERTY: 'Dash': Binary Property */
-static const OnigCodePoint
-CR_Dash[] = { 21,
-0x002d, 0x002d,
-0x058a, 0x058a,
-0x05be, 0x05be,
-0x1400, 0x1400,
-0x1806, 0x1806,
-0x2010, 0x2015,
-0x2053, 0x2053,
-0x207b, 0x207b,
-0x208b, 0x208b,
-0x2212, 0x2212,
-0x2e17, 0x2e17,
-0x2e1a, 0x2e1a,
-0x2e3a, 0x2e3b,
-0x2e40, 0x2e40,
-0x301c, 0x301c,
-0x3030, 0x3030,
-0x30a0, 0x30a0,
-0xfe31, 0xfe32,
-0xfe58, 0xfe58,
-0xfe63, 0xfe63,
-0xff0d, 0xff0d,
-}; /* END of CR_Dash */
+0x302e, 0x302f,
+0xff9e, 0xff9f,
+0x1133e, 0x1133e,
+0x11357, 0x11357,
+0x114b0, 0x114b0,
+0x114bd, 0x114bd,
+0x115af, 0x115af,
+0x1d165, 0x1d165,
+0x1d16e, 0x1d172,
+}; /* END of CR_Other_Grapheme_Extend */
 
-/* PROPERTY: 'Hyphen': Binary Property */
+/* PROPERTY: 'Other_ID_Continue': Binary Property */
 static const OnigCodePoint
-CR_Hyphen[] = { 10,
-0x002d, 0x002d,
-0x00ad, 0x00ad,
-0x058a, 0x058a,
-0x1806, 0x1806,
-0x2010, 0x2011,
-0x2e17, 0x2e17,
-0x30fb, 0x30fb,
-0xfe63, 0xfe63,
-0xff0d, 0xff0d,
-0xff65, 0xff65,
-}; /* END of CR_Hyphen */
+CR_Other_ID_Continue[] = { 4,
+0x00b7, 0x00b7,
+0x0387, 0x0387,
+0x1369, 0x1371,
+0x19da, 0x19da,
+}; /* END of CR_Other_ID_Continue */
 
-/* PROPERTY: 'Quotation_Mark': Binary Property */
+/* PROPERTY: 'Other_ID_Start': Binary Property */
 static const OnigCodePoint
-CR_Quotation_Mark[] = { 13,
-0x0022, 0x0022,
-0x0027, 0x0027,
-0x00ab, 0x00ab,
-0x00bb, 0x00bb,
-0x2018, 0x201f,
-0x2039, 0x203a,
-0x2e42, 0x2e42,
-0x300c, 0x300f,
-0x301d, 0x301f,
-0xfe41, 0xfe44,
-0xff02, 0xff02,
-0xff07, 0xff07,
-0xff62, 0xff63,
-}; /* END of CR_Quotation_Mark */
+CR_Other_ID_Start[] = { 3,
+0x2118, 0x2118,
+0x212e, 0x212e,
+0x309b, 0x309c,
+}; /* END of CR_Other_ID_Start */
 
-/* PROPERTY: 'Terminal_Punctuation': Binary Property */
+/* PROPERTY: 'Other_Lowercase': Binary Property */
 static const OnigCodePoint
-CR_Terminal_Punctuation[] = { 90,
-0x0021, 0x0021,
-0x002c, 0x002c,
-0x002e, 0x002e,
-0x003a, 0x003b,
-0x003f, 0x003f,
-0x037e, 0x037e,
-0x0387, 0x0387,
-0x0589, 0x0589,
-0x05c3, 0x05c3,
-0x060c, 0x060c,
-0x061b, 0x061b,
-0x061f, 0x061f,
-0x06d4, 0x06d4,
-0x0700, 0x070a,
-0x070c, 0x070c,
-0x07f8, 0x07f9,
-0x0830, 0x083e,
-0x085e, 0x085e,
-0x0964, 0x0965,
-0x0e5a, 0x0e5b,
-0x0f08, 0x0f08,
-0x0f0d, 0x0f12,
-0x104a, 0x104b,
-0x1361, 0x1368,
-0x166d, 0x166e,
-0x16eb, 0x16ed,
-0x1735, 0x1736,
-0x17d4, 0x17d6,
-0x17da, 0x17da,
-0x1802, 0x1805,
-0x1808, 0x1809,
-0x1944, 0x1945,
-0x1aa8, 0x1aab,
-0x1b5a, 0x1b5b,
-0x1b5d, 0x1b5f,
-0x1c3b, 0x1c3f,
-0x1c7e, 0x1c7f,
-0x203c, 0x203d,
-0x2047, 0x2049,
-0x2e2e, 0x2e2e,
-0x2e3c, 0x2e3c,
-0x2e41, 0x2e41,
-0x3001, 0x3002,
-0xa4fe, 0xa4ff,
-0xa60d, 0xa60f,
-0xa6f3, 0xa6f7,
-0xa876, 0xa877,
-0xa8ce, 0xa8cf,
-0xa92f, 0xa92f,
-0xa9c7, 0xa9c9,
-0xaa5d, 0xaa5f,
-0xaadf, 0xaadf,
-0xaaf0, 0xaaf1,
-0xabeb, 0xabeb,
-0xfe50, 0xfe52,
-0xfe54, 0xfe57,
-0xff01, 0xff01,
-0xff0c, 0xff0c,
-0xff0e, 0xff0e,
-0xff1a, 0xff1b,
-0xff1f, 0xff1f,
-0xff61, 0xff61,
-0xff64, 0xff64,
-0x1039f, 0x1039f,
-0x103d0, 0x103d0,
-0x10857, 0x10857,
-0x1091f, 0x1091f,
-0x10a56, 0x10a57,
-0x10af0, 0x10af5,
-0x10b3a, 0x10b3f,
-0x10b99, 0x10b9c,
-0x11047, 0x1104d,
-0x110be, 0x110c1,
-0x11141, 0x11143,
-0x111c5, 0x111c6,
-0x111cd, 0x111cd,
-0x111de, 0x111df,
-0x11238, 0x1123c,
-0x112a9, 0x112a9,
-0x115c2, 0x115c5,
-0x115c9, 0x115d7,
-0x11641, 0x11642,
-0x1173c, 0x1173e,
-0x12470, 0x12474,
-0x16a6e, 0x16a6f,
-0x16af5, 0x16af5,
-0x16b37, 0x16b39,
-0x16b44, 0x16b44,
-0x1bc9f, 0x1bc9f,
-0x1da87, 0x1da8a,
-}; /* END of CR_Terminal_Punctuation */
+CR_Other_Lowercase[] = { 20,
+0x00aa, 0x00aa,
+0x00ba, 0x00ba,
+0x02b0, 0x02b8,
+0x02c0, 0x02c1,
+0x02e0, 0x02e4,
+0x0345, 0x0345,
+0x037a, 0x037a,
+0x1d2c, 0x1d6a,
+0x1d78, 0x1d78,
+0x1d9b, 0x1dbf,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x2170, 0x217f,
+0x24d0, 0x24e9,
+0x2c7c, 0x2c7d,
+0xa69c, 0xa69d,
+0xa770, 0xa770,
+0xa7f8, 0xa7f9,
+0xab5c, 0xab5f,
+}; /* END of CR_Other_Lowercase */
 
 /* PROPERTY: 'Other_Math': Binary Property */
 static const OnigCodePoint
@@ -19463,556 +17419,1175 @@ CR_Other_Math[] = { 134,
 0x1eeab, 0x1eebb,
 }; /* END of CR_Other_Math */
 
-/* PROPERTY: 'Hex_Digit': Binary Property */
+/* PROPERTY: 'Other_Uppercase': Binary Property */
+static const OnigCodePoint
+CR_Other_Uppercase[] = { 5,
+0x2160, 0x216f,
+0x24b6, 0x24cf,
+0x1f130, 0x1f149,
+0x1f150, 0x1f169,
+0x1f170, 0x1f189,
+}; /* END of CR_Other_Uppercase */
+
+/* PROPERTY: 'P': Major Category */
+#define CR_P CR_Punct
+
+/* PROPERTY: 'Pahawh_Hmong': Script */
+static const OnigCodePoint
+CR_Pahawh_Hmong[] = { 5,
+0x16b00, 0x16b45,
+0x16b50, 0x16b59,
+0x16b5b, 0x16b61,
+0x16b63, 0x16b77,
+0x16b7d, 0x16b8f,
+}; /* END of CR_Pahawh_Hmong */
+
+/* PROPERTY: 'Palmyrene': Script */
+static const OnigCodePoint
+CR_Palmyrene[] = { 1,
+0x10860, 0x1087f,
+}; /* END of CR_Palmyrene */
+
+/* PROPERTY: 'Pattern_Syntax': Binary Property */
+static const OnigCodePoint
+CR_Pattern_Syntax[] = { 28,
+0x0021, 0x002f,
+0x003a, 0x0040,
+0x005b, 0x005e,
+0x0060, 0x0060,
+0x007b, 0x007e,
+0x00a1, 0x00a7,
+0x00a9, 0x00a9,
+0x00ab, 0x00ac,
+0x00ae, 0x00ae,
+0x00b0, 0x00b1,
+0x00b6, 0x00b6,
+0x00bb, 0x00bb,
+0x00bf, 0x00bf,
+0x00d7, 0x00d7,
+0x00f7, 0x00f7,
+0x2010, 0x2027,
+0x2030, 0x203e,
+0x2041, 0x2053,
+0x2055, 0x205e,
+0x2190, 0x245f,
+0x2500, 0x2775,
+0x2794, 0x2bff,
+0x2e00, 0x2e7f,
+0x3001, 0x3003,
+0x3008, 0x3020,
+0x3030, 0x3030,
+0xfd3e, 0xfd3f,
+0xfe45, 0xfe46,
+}; /* END of CR_Pattern_Syntax */
+
+/* PROPERTY: 'Pattern_White_Space': Binary Property */
 static const OnigCodePoint
-CR_Hex_Digit[] = { 6,
-0x0030, 0x0039,
-0x0041, 0x0046,
-0x0061, 0x0066,
-0xff10, 0xff19,
-0xff21, 0xff26,
-0xff41, 0xff46,
-}; /* END of CR_Hex_Digit */
+CR_Pattern_White_Space[] = { 5,
+0x0009, 0x000d,
+0x0020, 0x0020,
+0x0085, 0x0085,
+0x200e, 0x200f,
+0x2028, 0x2029,
+}; /* END of CR_Pattern_White_Space */
 
-/* PROPERTY: 'ASCII_Hex_Digit': Binary Property */
-#define CR_ASCII_Hex_Digit CR_XDigit
+/* PROPERTY: 'Pau_Cin_Hau': Script */
+static const OnigCodePoint
+CR_Pau_Cin_Hau[] = { 1,
+0x11ac0, 0x11af8,
+}; /* END of CR_Pau_Cin_Hau */
 
-/* PROPERTY: 'Other_Alphabetic': Binary Property */
+/* PROPERTY: 'Pc': General Category */
 static const OnigCodePoint
-CR_Other_Alphabetic[] = { 178,
-0x0345, 0x0345,
-0x05b0, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c5,
-0x05c7, 0x05c7,
-0x0610, 0x061a,
-0x064b, 0x0657,
-0x0659, 0x065f,
-0x0670, 0x0670,
-0x06d6, 0x06dc,
-0x06e1, 0x06e4,
-0x06e7, 0x06e8,
-0x06ed, 0x06ed,
-0x0711, 0x0711,
-0x0730, 0x073f,
-0x07a6, 0x07b0,
-0x0816, 0x0817,
-0x081b, 0x0823,
-0x0825, 0x0827,
-0x0829, 0x082c,
-0x08e3, 0x08e9,
-0x08f0, 0x0903,
-0x093a, 0x093b,
-0x093e, 0x094c,
-0x094e, 0x094f,
-0x0955, 0x0957,
-0x0962, 0x0963,
-0x0981, 0x0983,
-0x09be, 0x09c4,
-0x09c7, 0x09c8,
-0x09cb, 0x09cc,
-0x09d7, 0x09d7,
-0x09e2, 0x09e3,
-0x0a01, 0x0a03,
-0x0a3e, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4c,
-0x0a51, 0x0a51,
-0x0a70, 0x0a71,
-0x0a75, 0x0a75,
-0x0a81, 0x0a83,
-0x0abe, 0x0ac5,
-0x0ac7, 0x0ac9,
-0x0acb, 0x0acc,
-0x0ae2, 0x0ae3,
-0x0b01, 0x0b03,
-0x0b3e, 0x0b44,
-0x0b47, 0x0b48,
-0x0b4b, 0x0b4c,
-0x0b56, 0x0b57,
-0x0b62, 0x0b63,
-0x0b82, 0x0b82,
-0x0bbe, 0x0bc2,
-0x0bc6, 0x0bc8,
-0x0bca, 0x0bcc,
-0x0bd7, 0x0bd7,
-0x0c00, 0x0c03,
-0x0c3e, 0x0c44,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4c,
-0x0c55, 0x0c56,
-0x0c62, 0x0c63,
-0x0c81, 0x0c83,
-0x0cbe, 0x0cc4,
-0x0cc6, 0x0cc8,
-0x0cca, 0x0ccc,
-0x0cd5, 0x0cd6,
-0x0ce2, 0x0ce3,
-0x0d01, 0x0d03,
-0x0d3e, 0x0d44,
-0x0d46, 0x0d48,
-0x0d4a, 0x0d4c,
-0x0d57, 0x0d57,
-0x0d62, 0x0d63,
-0x0d82, 0x0d83,
-0x0dcf, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0dd8, 0x0ddf,
-0x0df2, 0x0df3,
-0x0e31, 0x0e31,
-0x0e34, 0x0e3a,
-0x0e4d, 0x0e4d,
-0x0eb1, 0x0eb1,
-0x0eb4, 0x0eb9,
-0x0ebb, 0x0ebc,
-0x0ecd, 0x0ecd,
-0x0f71, 0x0f81,
-0x0f8d, 0x0f97,
-0x0f99, 0x0fbc,
-0x102b, 0x1036,
-0x1038, 0x1038,
-0x103b, 0x103e,
-0x1056, 0x1059,
-0x105e, 0x1060,
-0x1062, 0x1062,
-0x1067, 0x1068,
-0x1071, 0x1074,
-0x1082, 0x1086,
-0x109c, 0x109d,
-0x135f, 0x135f,
-0x1712, 0x1713,
-0x1732, 0x1733,
-0x1752, 0x1753,
-0x1772, 0x1773,
-0x17b6, 0x17c8,
-0x18a9, 0x18a9,
-0x1920, 0x192b,
-0x1930, 0x1938,
-0x1a17, 0x1a1b,
-0x1a55, 0x1a5e,
-0x1a61, 0x1a74,
-0x1b00, 0x1b04,
-0x1b35, 0x1b43,
-0x1b80, 0x1b82,
-0x1ba1, 0x1ba9,
-0x1bac, 0x1bad,
-0x1be7, 0x1bf1,
-0x1c24, 0x1c35,
-0x1cf2, 0x1cf3,
-0x1de7, 0x1df4,
-0x24b6, 0x24e9,
-0x2de0, 0x2dff,
-0xa674, 0xa67b,
-0xa69e, 0xa69f,
-0xa823, 0xa827,
-0xa880, 0xa881,
-0xa8b4, 0xa8c3,
-0xa926, 0xa92a,
-0xa947, 0xa952,
-0xa980, 0xa983,
-0xa9b4, 0xa9bf,
-0xaa29, 0xaa36,
-0xaa43, 0xaa43,
-0xaa4c, 0xaa4d,
-0xaab0, 0xaab0,
-0xaab2, 0xaab4,
-0xaab7, 0xaab8,
-0xaabe, 0xaabe,
-0xaaeb, 0xaaef,
-0xaaf5, 0xaaf5,
-0xabe3, 0xabea,
-0xfb1e, 0xfb1e,
-0x10376, 0x1037a,
-0x10a01, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a0f,
-0x11000, 0x11002,
-0x11038, 0x11045,
-0x11082, 0x11082,
-0x110b0, 0x110b8,
-0x11100, 0x11102,
-0x11127, 0x11132,
-0x11180, 0x11182,
-0x111b3, 0x111bf,
-0x1122c, 0x11234,
-0x11237, 0x11237,
-0x112df, 0x112e8,
-0x11300, 0x11303,
-0x1133e, 0x11344,
-0x11347, 0x11348,
-0x1134b, 0x1134c,
-0x11357, 0x11357,
-0x11362, 0x11363,
-0x114b0, 0x114c1,
-0x115af, 0x115b5,
-0x115b8, 0x115be,
-0x115dc, 0x115dd,
-0x11630, 0x1163e,
-0x11640, 0x11640,
-0x116ab, 0x116b5,
-0x1171d, 0x1172a,
-0x16b30, 0x16b36,
-0x16f51, 0x16f7e,
-0x1bc9e, 0x1bc9e,
-0x1f130, 0x1f149,
-0x1f150, 0x1f169,
-0x1f170, 0x1f189,
-}; /* END of CR_Other_Alphabetic */
+CR_Pc[] = { 6,
+0x005f, 0x005f,
+0x203f, 0x2040,
+0x2054, 0x2054,
+0xfe33, 0xfe34,
+0xfe4d, 0xfe4f,
+0xff3f, 0xff3f,
+}; /* END of CR_Pc */
+
+/* PROPERTY: 'Pd': General Category */
+static const OnigCodePoint
+CR_Pd[] = { 17,
+0x002d, 0x002d,
+0x058a, 0x058a,
+0x05be, 0x05be,
+0x1400, 0x1400,
+0x1806, 0x1806,
+0x2010, 0x2015,
+0x2e17, 0x2e17,
+0x2e1a, 0x2e1a,
+0x2e3a, 0x2e3b,
+0x2e40, 0x2e40,
+0x301c, 0x301c,
+0x3030, 0x3030,
+0x30a0, 0x30a0,
+0xfe31, 0xfe32,
+0xfe58, 0xfe58,
+0xfe63, 0xfe63,
+0xff0d, 0xff0d,
+}; /* END of CR_Pd */
+
+/* PROPERTY: 'Pe': General Category */
+static const OnigCodePoint
+CR_Pe[] = { 72,
+0x0029, 0x0029,
+0x005d, 0x005d,
+0x007d, 0x007d,
+0x0f3b, 0x0f3b,
+0x0f3d, 0x0f3d,
+0x169c, 0x169c,
+0x2046, 0x2046,
+0x207e, 0x207e,
+0x208e, 0x208e,
+0x2309, 0x2309,
+0x230b, 0x230b,
+0x232a, 0x232a,
+0x2769, 0x2769,
+0x276b, 0x276b,
+0x276d, 0x276d,
+0x276f, 0x276f,
+0x2771, 0x2771,
+0x2773, 0x2773,
+0x2775, 0x2775,
+0x27c6, 0x27c6,
+0x27e7, 0x27e7,
+0x27e9, 0x27e9,
+0x27eb, 0x27eb,
+0x27ed, 0x27ed,
+0x27ef, 0x27ef,
+0x2984, 0x2984,
+0x2986, 0x2986,
+0x2988, 0x2988,
+0x298a, 0x298a,
+0x298c, 0x298c,
+0x298e, 0x298e,
+0x2990, 0x2990,
+0x2992, 0x2992,
+0x2994, 0x2994,
+0x2996, 0x2996,
+0x2998, 0x2998,
+0x29d9, 0x29d9,
+0x29db, 0x29db,
+0x29fd, 0x29fd,
+0x2e23, 0x2e23,
+0x2e25, 0x2e25,
+0x2e27, 0x2e27,
+0x2e29, 0x2e29,
+0x3009, 0x3009,
+0x300b, 0x300b,
+0x300d, 0x300d,
+0x300f, 0x300f,
+0x3011, 0x3011,
+0x3015, 0x3015,
+0x3017, 0x3017,
+0x3019, 0x3019,
+0x301b, 0x301b,
+0x301e, 0x301f,
+0xfd3e, 0xfd3e,
+0xfe18, 0xfe18,
+0xfe36, 0xfe36,
+0xfe38, 0xfe38,
+0xfe3a, 0xfe3a,
+0xfe3c, 0xfe3c,
+0xfe3e, 0xfe3e,
+0xfe40, 0xfe40,
+0xfe42, 0xfe42,
+0xfe44, 0xfe44,
+0xfe48, 0xfe48,
+0xfe5a, 0xfe5a,
+0xfe5c, 0xfe5c,
+0xfe5e, 0xfe5e,
+0xff09, 0xff09,
+0xff3d, 0xff3d,
+0xff5d, 0xff5d,
+0xff60, 0xff60,
+0xff63, 0xff63,
+}; /* END of CR_Pe */
+
+/* PROPERTY: 'Pf': General Category */
+static const OnigCodePoint
+CR_Pf[] = { 10,
+0x00bb, 0x00bb,
+0x2019, 0x2019,
+0x201d, 0x201d,
+0x203a, 0x203a,
+0x2e03, 0x2e03,
+0x2e05, 0x2e05,
+0x2e0a, 0x2e0a,
+0x2e0d, 0x2e0d,
+0x2e1d, 0x2e1d,
+0x2e21, 0x2e21,
+}; /* END of CR_Pf */
+
+/* PROPERTY: 'Phags_Pa': Script */
+static const OnigCodePoint
+CR_Phags_Pa[] = { 1,
+0xa840, 0xa877,
+}; /* END of CR_Phags_Pa */
+
+/* PROPERTY: 'Phoenician': Script */
+static const OnigCodePoint
+CR_Phoenician[] = { 2,
+0x10900, 0x1091b,
+0x1091f, 0x1091f,
+}; /* END of CR_Phoenician */
+
+/* PROPERTY: 'Pi': General Category */
+static const OnigCodePoint
+CR_Pi[] = { 11,
+0x00ab, 0x00ab,
+0x2018, 0x2018,
+0x201b, 0x201c,
+0x201f, 0x201f,
+0x2039, 0x2039,
+0x2e02, 0x2e02,
+0x2e04, 0x2e04,
+0x2e09, 0x2e09,
+0x2e0c, 0x2e0c,
+0x2e1c, 0x2e1c,
+0x2e20, 0x2e20,
+}; /* END of CR_Pi */
+
+/* PROPERTY: 'Po': General Category */
+static const OnigCodePoint
+CR_Po[] = { 157,
+0x0021, 0x0023,
+0x0025, 0x0027,
+0x002a, 0x002a,
+0x002c, 0x002c,
+0x002e, 0x002f,
+0x003a, 0x003b,
+0x003f, 0x0040,
+0x005c, 0x005c,
+0x00a1, 0x00a1,
+0x00a7, 0x00a7,
+0x00b6, 0x00b7,
+0x00bf, 0x00bf,
+0x037e, 0x037e,
+0x0387, 0x0387,
+0x055a, 0x055f,
+0x0589, 0x0589,
+0x05c0, 0x05c0,
+0x05c3, 0x05c3,
+0x05c6, 0x05c6,
+0x05f3, 0x05f4,
+0x0609, 0x060a,
+0x060c, 0x060d,
+0x061b, 0x061b,
+0x061e, 0x061f,
+0x066a, 0x066d,
+0x06d4, 0x06d4,
+0x0700, 0x070d,
+0x07f7, 0x07f9,
+0x0830, 0x083e,
+0x085e, 0x085e,
+0x0964, 0x0965,
+0x0970, 0x0970,
+0x0af0, 0x0af0,
+0x0df4, 0x0df4,
+0x0e4f, 0x0e4f,
+0x0e5a, 0x0e5b,
+0x0f04, 0x0f12,
+0x0f14, 0x0f14,
+0x0f85, 0x0f85,
+0x0fd0, 0x0fd4,
+0x0fd9, 0x0fda,
+0x104a, 0x104f,
+0x10fb, 0x10fb,
+0x1360, 0x1368,
+0x166d, 0x166e,
+0x16eb, 0x16ed,
+0x1735, 0x1736,
+0x17d4, 0x17d6,
+0x17d8, 0x17da,
+0x1800, 0x1805,
+0x1807, 0x180a,
+0x1944, 0x1945,
+0x1a1e, 0x1a1f,
+0x1aa0, 0x1aa6,
+0x1aa8, 0x1aad,
+0x1b5a, 0x1b60,
+0x1bfc, 0x1bff,
+0x1c3b, 0x1c3f,
+0x1c7e, 0x1c7f,
+0x1cc0, 0x1cc7,
+0x1cd3, 0x1cd3,
+0x2016, 0x2017,
+0x2020, 0x2027,
+0x2030, 0x2038,
+0x203b, 0x203e,
+0x2041, 0x2043,
+0x2047, 0x2051,
+0x2053, 0x2053,
+0x2055, 0x205e,
+0x2cf9, 0x2cfc,
+0x2cfe, 0x2cff,
+0x2d70, 0x2d70,
+0x2e00, 0x2e01,
+0x2e06, 0x2e08,
+0x2e0b, 0x2e0b,
+0x2e0e, 0x2e16,
+0x2e18, 0x2e19,
+0x2e1b, 0x2e1b,
+0x2e1e, 0x2e1f,
+0x2e2a, 0x2e2e,
+0x2e30, 0x2e39,
+0x2e3c, 0x2e3f,
+0x2e41, 0x2e41,
+0x3001, 0x3003,
+0x303d, 0x303d,
+0x30fb, 0x30fb,
+0xa4fe, 0xa4ff,
+0xa60d, 0xa60f,
+0xa673, 0xa673,
+0xa67e, 0xa67e,
+0xa6f2, 0xa6f7,
+0xa874, 0xa877,
+0xa8ce, 0xa8cf,
+0xa8f8, 0xa8fa,
+0xa8fc, 0xa8fc,
+0xa92e, 0xa92f,
+0xa95f, 0xa95f,
+0xa9c1, 0xa9cd,
+0xa9de, 0xa9df,
+0xaa5c, 0xaa5f,
+0xaade, 0xaadf,
+0xaaf0, 0xaaf1,
+0xabeb, 0xabeb,
+0xfe10, 0xfe16,
+0xfe19, 0xfe19,
+0xfe30, 0xfe30,
+0xfe45, 0xfe46,
+0xfe49, 0xfe4c,
+0xfe50, 0xfe52,
+0xfe54, 0xfe57,
+0xfe5f, 0xfe61,
+0xfe68, 0xfe68,
+0xfe6a, 0xfe6b,
+0xff01, 0xff03,
+0xff05, 0xff07,
+0xff0a, 0xff0a,
+0xff0c, 0xff0c,
+0xff0e, 0xff0f,
+0xff1a, 0xff1b,
+0xff1f, 0xff20,
+0xff3c, 0xff3c,
+0xff61, 0xff61,
+0xff64, 0xff65,
+0x10100, 0x10102,
+0x1039f, 0x1039f,
+0x103d0, 0x103d0,
+0x1056f, 0x1056f,
+0x10857, 0x10857,
+0x1091f, 0x1091f,
+0x1093f, 0x1093f,
+0x10a50, 0x10a58,
+0x10a7f, 0x10a7f,
+0x10af0, 0x10af6,
+0x10b39, 0x10b3f,
+0x10b99, 0x10b9c,
+0x11047, 0x1104d,
+0x110bb, 0x110bc,
+0x110be, 0x110c1,
+0x11140, 0x11143,
+0x11174, 0x11175,
+0x111c5, 0x111c9,
+0x111cd, 0x111cd,
+0x111db, 0x111db,
+0x111dd, 0x111df,
+0x11238, 0x1123d,
+0x112a9, 0x112a9,
+0x114c6, 0x114c6,
+0x115c1, 0x115d7,
+0x11641, 0x11643,
+0x1173c, 0x1173e,
+0x12470, 0x12474,
+0x16a6e, 0x16a6f,
+0x16af5, 0x16af5,
+0x16b37, 0x16b3b,
+0x16b44, 0x16b44,
+0x1bc9f, 0x1bc9f,
+0x1da87, 0x1da8b,
+}; /* END of CR_Po */
 
-/* PROPERTY: 'Ideographic': Binary Property */
+/* PROPERTY: 'Ps': General Category */
 static const OnigCodePoint
-CR_Ideographic[] = { 12,
-0x3006, 0x3007,
-0x3021, 0x3029,
-0x3038, 0x303a,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
-0xf900, 0xfa6d,
-0xfa70, 0xfad9,
-0x20000, 0x2a6d6,
-0x2a700, 0x2b734,
-0x2b740, 0x2b81d,
-0x2b820, 0x2cea1,
-0x2f800, 0x2fa1d,
-}; /* END of CR_Ideographic */
+CR_Ps[] = { 75,
+0x0028, 0x0028,
+0x005b, 0x005b,
+0x007b, 0x007b,
+0x0f3a, 0x0f3a,
+0x0f3c, 0x0f3c,
+0x169b, 0x169b,
+0x201a, 0x201a,
+0x201e, 0x201e,
+0x2045, 0x2045,
+0x207d, 0x207d,
+0x208d, 0x208d,
+0x2308, 0x2308,
+0x230a, 0x230a,
+0x2329, 0x2329,
+0x2768, 0x2768,
+0x276a, 0x276a,
+0x276c, 0x276c,
+0x276e, 0x276e,
+0x2770, 0x2770,
+0x2772, 0x2772,
+0x2774, 0x2774,
+0x27c5, 0x27c5,
+0x27e6, 0x27e6,
+0x27e8, 0x27e8,
+0x27ea, 0x27ea,
+0x27ec, 0x27ec,
+0x27ee, 0x27ee,
+0x2983, 0x2983,
+0x2985, 0x2985,
+0x2987, 0x2987,
+0x2989, 0x2989,
+0x298b, 0x298b,
+0x298d, 0x298d,
+0x298f, 0x298f,
+0x2991, 0x2991,
+0x2993, 0x2993,
+0x2995, 0x2995,
+0x2997, 0x2997,
+0x29d8, 0x29d8,
+0x29da, 0x29da,
+0x29fc, 0x29fc,
+0x2e22, 0x2e22,
+0x2e24, 0x2e24,
+0x2e26, 0x2e26,
+0x2e28, 0x2e28,
+0x2e42, 0x2e42,
+0x3008, 0x3008,
+0x300a, 0x300a,
+0x300c, 0x300c,
+0x300e, 0x300e,
+0x3010, 0x3010,
+0x3014, 0x3014,
+0x3016, 0x3016,
+0x3018, 0x3018,
+0x301a, 0x301a,
+0x301d, 0x301d,
+0xfd3f, 0xfd3f,
+0xfe17, 0xfe17,
+0xfe35, 0xfe35,
+0xfe37, 0xfe37,
+0xfe39, 0xfe39,
+0xfe3b, 0xfe3b,
+0xfe3d, 0xfe3d,
+0xfe3f, 0xfe3f,
+0xfe41, 0xfe41,
+0xfe43, 0xfe43,
+0xfe47, 0xfe47,
+0xfe59, 0xfe59,
+0xfe5b, 0xfe5b,
+0xfe5d, 0xfe5d,
+0xff08, 0xff08,
+0xff3b, 0xff3b,
+0xff5b, 0xff5b,
+0xff5f, 0xff5f,
+0xff62, 0xff62,
+}; /* END of CR_Ps */
 
-/* PROPERTY: 'Diacritic': Binary Property */
+/* PROPERTY: 'Psalter_Pahlavi': Script */
 static const OnigCodePoint
-CR_Diacritic[] = { 147,
-0x005e, 0x005e,
-0x0060, 0x0060,
-0x00a8, 0x00a8,
-0x00af, 0x00af,
-0x00b4, 0x00b4,
-0x00b7, 0x00b8,
-0x02b0, 0x034e,
-0x0350, 0x0357,
-0x035d, 0x0362,
-0x0374, 0x0375,
-0x037a, 0x037a,
-0x0384, 0x0385,
-0x0483, 0x0487,
-0x0559, 0x0559,
-0x0591, 0x05a1,
-0x05a3, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c4,
-0x064b, 0x0652,
-0x0657, 0x0658,
-0x06df, 0x06e0,
-0x06e5, 0x06e6,
-0x06ea, 0x06ec,
-0x0730, 0x074a,
-0x07a6, 0x07b0,
-0x07eb, 0x07f5,
-0x0818, 0x0819,
-0x08e3, 0x08fe,
-0x093c, 0x093c,
-0x094d, 0x094d,
-0x0951, 0x0954,
-0x0971, 0x0971,
-0x09bc, 0x09bc,
-0x09cd, 0x09cd,
-0x0a3c, 0x0a3c,
-0x0a4d, 0x0a4d,
-0x0abc, 0x0abc,
-0x0acd, 0x0acd,
-0x0b3c, 0x0b3c,
-0x0b4d, 0x0b4d,
-0x0bcd, 0x0bcd,
-0x0c4d, 0x0c4d,
-0x0cbc, 0x0cbc,
-0x0ccd, 0x0ccd,
-0x0d4d, 0x0d4d,
-0x0dca, 0x0dca,
-0x0e47, 0x0e4c,
-0x0e4e, 0x0e4e,
-0x0ec8, 0x0ecc,
-0x0f18, 0x0f19,
-0x0f35, 0x0f35,
-0x0f37, 0x0f37,
-0x0f39, 0x0f39,
-0x0f3e, 0x0f3f,
-0x0f82, 0x0f84,
-0x0f86, 0x0f87,
-0x0fc6, 0x0fc6,
-0x1037, 0x1037,
-0x1039, 0x103a,
-0x1087, 0x108d,
-0x108f, 0x108f,
-0x109a, 0x109b,
-0x17c9, 0x17d3,
-0x17dd, 0x17dd,
-0x1939, 0x193b,
-0x1a75, 0x1a7c,
-0x1a7f, 0x1a7f,
-0x1ab0, 0x1abd,
-0x1b34, 0x1b34,
-0x1b44, 0x1b44,
-0x1b6b, 0x1b73,
-0x1baa, 0x1bab,
-0x1c36, 0x1c37,
-0x1c78, 0x1c7d,
-0x1cd0, 0x1ce8,
-0x1ced, 0x1ced,
-0x1cf4, 0x1cf4,
-0x1cf8, 0x1cf9,
-0x1d2c, 0x1d6a,
-0x1dc4, 0x1dcf,
-0x1df5, 0x1df5,
-0x1dfd, 0x1dff,
+CR_Psalter_Pahlavi[] = { 3,
+0x10b80, 0x10b91,
+0x10b99, 0x10b9c,
+0x10ba9, 0x10baf,
+}; /* END of CR_Psalter_Pahlavi */
+
+/* PROPERTY: 'Quotation_Mark': Binary Property */
+static const OnigCodePoint
+CR_Quotation_Mark[] = { 13,
+0x0022, 0x0022,
+0x0027, 0x0027,
+0x00ab, 0x00ab,
+0x00bb, 0x00bb,
+0x2018, 0x201f,
+0x2039, 0x203a,
+0x2e42, 0x2e42,
+0x300c, 0x300f,
+0x301d, 0x301f,
+0xfe41, 0xfe44,
+0xff02, 0xff02,
+0xff07, 0xff07,
+0xff62, 0xff63,
+}; /* END of CR_Quotation_Mark */
+
+/* PROPERTY: 'Radical': Binary Property */
+static const OnigCodePoint
+CR_Radical[] = { 3,
+0x2e80, 0x2e99,
+0x2e9b, 0x2ef3,
+0x2f00, 0x2fd5,
+}; /* END of CR_Radical */
+
+/* PROPERTY: 'Rejang': Script */
+static const OnigCodePoint
+CR_Rejang[] = { 2,
+0xa930, 0xa953,
+0xa95f, 0xa95f,
+}; /* END of CR_Rejang */
+
+/* PROPERTY: 'Runic': Script */
+static const OnigCodePoint
+CR_Runic[] = { 2,
+0x16a0, 0x16ea,
+0x16ee, 0x16f8,
+}; /* END of CR_Runic */
+
+/* PROPERTY: 'S': Major Category */
+static const OnigCodePoint
+CR_S[] = { 214,
+0x0024, 0x0024,
+0x002b, 0x002b,
+0x003c, 0x003e,
+0x005e, 0x005e,
+0x0060, 0x0060,
+0x007c, 0x007c,
+0x007e, 0x007e,
+0x00a2, 0x00a6,
+0x00a8, 0x00a9,
+0x00ac, 0x00ac,
+0x00ae, 0x00b1,
+0x00b4, 0x00b4,
+0x00b8, 0x00b8,
+0x00d7, 0x00d7,
+0x00f7, 0x00f7,
+0x02c2, 0x02c5,
+0x02d2, 0x02df,
+0x02e5, 0x02eb,
+0x02ed, 0x02ed,
+0x02ef, 0x02ff,
+0x0375, 0x0375,
+0x0384, 0x0385,
+0x03f6, 0x03f6,
+0x0482, 0x0482,
+0x058d, 0x058f,
+0x0606, 0x0608,
+0x060b, 0x060b,
+0x060e, 0x060f,
+0x06de, 0x06de,
+0x06e9, 0x06e9,
+0x06fd, 0x06fe,
+0x07f6, 0x07f6,
+0x09f2, 0x09f3,
+0x09fa, 0x09fb,
+0x0af1, 0x0af1,
+0x0b70, 0x0b70,
+0x0bf3, 0x0bfa,
+0x0c7f, 0x0c7f,
+0x0d79, 0x0d79,
+0x0e3f, 0x0e3f,
+0x0f01, 0x0f03,
+0x0f13, 0x0f13,
+0x0f15, 0x0f17,
+0x0f1a, 0x0f1f,
+0x0f34, 0x0f34,
+0x0f36, 0x0f36,
+0x0f38, 0x0f38,
+0x0fbe, 0x0fc5,
+0x0fc7, 0x0fcc,
+0x0fce, 0x0fcf,
+0x0fd5, 0x0fd8,
+0x109e, 0x109f,
+0x1390, 0x1399,
+0x17db, 0x17db,
+0x1940, 0x1940,
+0x19de, 0x19ff,
+0x1b61, 0x1b6a,
+0x1b74, 0x1b7c,
 0x1fbd, 0x1fbd,
 0x1fbf, 0x1fc1,
 0x1fcd, 0x1fcf,
 0x1fdd, 0x1fdf,
 0x1fed, 0x1fef,
 0x1ffd, 0x1ffe,
-0x2cef, 0x2cf1,
-0x2e2f, 0x2e2f,
-0x302a, 0x302f,
-0x3099, 0x309c,
-0x30fc, 0x30fc,
-0xa66f, 0xa66f,
-0xa67c, 0xa67d,
-0xa67f, 0xa67f,
-0xa69c, 0xa69d,
-0xa6f0, 0xa6f1,
-0xa717, 0xa721,
-0xa788, 0xa788,
-0xa7f8, 0xa7f9,
-0xa8c4, 0xa8c4,
-0xa8e0, 0xa8f1,
-0xa92b, 0xa92e,
-0xa953, 0xa953,
-0xa9b3, 0xa9b3,
-0xa9c0, 0xa9c0,
-0xa9e5, 0xa9e5,
-0xaa7b, 0xaa7d,
-0xaabf, 0xaac2,
-0xaaf6, 0xaaf6,
-0xab5b, 0xab5f,
-0xabec, 0xabed,
-0xfb1e, 0xfb1e,
-0xfe20, 0xfe2f,
+0x2044, 0x2044,
+0x2052, 0x2052,
+0x207a, 0x207c,
+0x208a, 0x208c,
+0x20a0, 0x20be,
+0x2100, 0x2101,
+0x2103, 0x2106,
+0x2108, 0x2109,
+0x2114, 0x2114,
+0x2116, 0x2118,
+0x211e, 0x2123,
+0x2125, 0x2125,
+0x2127, 0x2127,
+0x2129, 0x2129,
+0x212e, 0x212e,
+0x213a, 0x213b,
+0x2140, 0x2144,
+0x214a, 0x214d,
+0x214f, 0x214f,
+0x218a, 0x218b,
+0x2190, 0x2307,
+0x230c, 0x2328,
+0x232b, 0x23fa,
+0x2400, 0x2426,
+0x2440, 0x244a,
+0x249c, 0x24e9,
+0x2500, 0x2767,
+0x2794, 0x27c4,
+0x27c7, 0x27e5,
+0x27f0, 0x2982,
+0x2999, 0x29d7,
+0x29dc, 0x29fb,
+0x29fe, 0x2b73,
+0x2b76, 0x2b95,
+0x2b98, 0x2bb9,
+0x2bbd, 0x2bc8,
+0x2bca, 0x2bd1,
+0x2bec, 0x2bef,
+0x2ce5, 0x2cea,
+0x2e80, 0x2e99,
+0x2e9b, 0x2ef3,
+0x2f00, 0x2fd5,
+0x2ff0, 0x2ffb,
+0x3004, 0x3004,
+0x3012, 0x3013,
+0x3020, 0x3020,
+0x3036, 0x3037,
+0x303e, 0x303f,
+0x309b, 0x309c,
+0x3190, 0x3191,
+0x3196, 0x319f,
+0x31c0, 0x31e3,
+0x3200, 0x321e,
+0x322a, 0x3247,
+0x3250, 0x3250,
+0x3260, 0x327f,
+0x328a, 0x32b0,
+0x32c0, 0x32fe,
+0x3300, 0x33ff,
+0x4dc0, 0x4dff,
+0xa490, 0xa4c6,
+0xa700, 0xa716,
+0xa720, 0xa721,
+0xa789, 0xa78a,
+0xa828, 0xa82b,
+0xa836, 0xa839,
+0xaa77, 0xaa79,
+0xab5b, 0xab5b,
+0xfb29, 0xfb29,
+0xfbb2, 0xfbc1,
+0xfdfc, 0xfdfd,
+0xfe62, 0xfe62,
+0xfe64, 0xfe66,
+0xfe69, 0xfe69,
+0xff04, 0xff04,
+0xff0b, 0xff0b,
+0xff1c, 0xff1e,
 0xff3e, 0xff3e,
 0xff40, 0xff40,
-0xff70, 0xff70,
-0xff9e, 0xff9f,
-0xffe3, 0xffe3,
-0x102e0, 0x102e0,
-0x10ae5, 0x10ae6,
-0x110b9, 0x110ba,
-0x11133, 0x11134,
-0x11173, 0x11173,
-0x111c0, 0x111c0,
-0x111ca, 0x111cc,
-0x11235, 0x11236,
-0x112e9, 0x112ea,
-0x1133c, 0x1133c,
-0x1134d, 0x1134d,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-0x114c2, 0x114c3,
-0x115bf, 0x115c0,
-0x1163f, 0x1163f,
-0x116b6, 0x116b7,
-0x1172b, 0x1172b,
-0x16af0, 0x16af4,
-0x16f8f, 0x16f9f,
-0x1d167, 0x1d169,
-0x1d16d, 0x1d172,
-0x1d17b, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0x1e8d0, 0x1e8d6,
-}; /* END of CR_Diacritic */
+0xff5c, 0xff5c,
+0xff5e, 0xff5e,
+0xffe0, 0xffe6,
+0xffe8, 0xffee,
+0xfffc, 0xfffd,
+0x10137, 0x1013f,
+0x10179, 0x10189,
+0x1018c, 0x1018c,
+0x10190, 0x1019b,
+0x101a0, 0x101a0,
+0x101d0, 0x101fc,
+0x10877, 0x10878,
+0x10ac8, 0x10ac8,
+0x1173f, 0x1173f,
+0x16b3c, 0x16b3f,
+0x16b45, 0x16b45,
+0x1bc9c, 0x1bc9c,
+0x1d000, 0x1d0f5,
+0x1d100, 0x1d126,
+0x1d129, 0x1d164,
+0x1d16a, 0x1d16c,
+0x1d183, 0x1d184,
+0x1d18c, 0x1d1a9,
+0x1d1ae, 0x1d1e8,
+0x1d200, 0x1d241,
+0x1d245, 0x1d245,
+0x1d300, 0x1d356,
+0x1d6c1, 0x1d6c1,
+0x1d6db, 0x1d6db,
+0x1d6fb, 0x1d6fb,
+0x1d715, 0x1d715,
+0x1d735, 0x1d735,
+0x1d74f, 0x1d74f,
+0x1d76f, 0x1d76f,
+0x1d789, 0x1d789,
+0x1d7a9, 0x1d7a9,
+0x1d7c3, 0x1d7c3,
+0x1d800, 0x1d9ff,
+0x1da37, 0x1da3a,
+0x1da6d, 0x1da74,
+0x1da76, 0x1da83,
+0x1da85, 0x1da86,
+0x1eef0, 0x1eef1,
+0x1f000, 0x1f02b,
+0x1f030, 0x1f093,
+0x1f0a0, 0x1f0ae,
+0x1f0b1, 0x1f0bf,
+0x1f0c1, 0x1f0cf,
+0x1f0d1, 0x1f0f5,
+0x1f110, 0x1f12e,
+0x1f130, 0x1f16b,
+0x1f170, 0x1f19a,
+0x1f1e6, 0x1f202,
+0x1f210, 0x1f23a,
+0x1f240, 0x1f248,
+0x1f250, 0x1f251,
+0x1f300, 0x1f579,
+0x1f57b, 0x1f5a3,
+0x1f5a5, 0x1f6d0,
+0x1f6e0, 0x1f6ec,
+0x1f6f0, 0x1f6f3,
+0x1f700, 0x1f773,
+0x1f780, 0x1f7d4,
+0x1f800, 0x1f80b,
+0x1f810, 0x1f847,
+0x1f850, 0x1f859,
+0x1f860, 0x1f887,
+0x1f890, 0x1f8ad,
+0x1f910, 0x1f918,
+0x1f980, 0x1f984,
+0x1f9c0, 0x1f9c0,
+}; /* END of CR_S */
 
-/* PROPERTY: 'Extender': Binary Property */
+/* PROPERTY: 'STerm': Binary Property */
 static const OnigCodePoint
-CR_Extender[] = { 26,
-0x00b7, 0x00b7,
-0x02d0, 0x02d1,
-0x0640, 0x0640,
-0x07fa, 0x07fa,
-0x0e46, 0x0e46,
-0x0ec6, 0x0ec6,
-0x180a, 0x180a,
-0x1843, 0x1843,
-0x1aa7, 0x1aa7,
-0x1c36, 0x1c36,
-0x1c7b, 0x1c7b,
-0x3005, 0x3005,
-0x3031, 0x3035,
-0x309d, 0x309e,
-0x30fc, 0x30fe,
-0xa015, 0xa015,
-0xa60c, 0xa60c,
-0xa9cf, 0xa9cf,
-0xa9e6, 0xa9e6,
-0xaa70, 0xaa70,
-0xaadd, 0xaadd,
-0xaaf3, 0xaaf4,
-0xff70, 0xff70,
-0x1135d, 0x1135d,
-0x115c6, 0x115c8,
-0x16b42, 0x16b43,
-}; /* END of CR_Extender */
+CR_STerm[] = { 64,
+0x0021, 0x0021,
+0x002e, 0x002e,
+0x003f, 0x003f,
+0x0589, 0x0589,
+0x061f, 0x061f,
+0x06d4, 0x06d4,
+0x0700, 0x0702,
+0x07f9, 0x07f9,
+0x0964, 0x0965,
+0x104a, 0x104b,
+0x1362, 0x1362,
+0x1367, 0x1368,
+0x166e, 0x166e,
+0x1735, 0x1736,
+0x1803, 0x1803,
+0x1809, 0x1809,
+0x1944, 0x1945,
+0x1aa8, 0x1aab,
+0x1b5a, 0x1b5b,
+0x1b5e, 0x1b5f,
+0x1c3b, 0x1c3c,
+0x1c7e, 0x1c7f,
+0x203c, 0x203d,
+0x2047, 0x2049,
+0x2e2e, 0x2e2e,
+0x2e3c, 0x2e3c,
+0x3002, 0x3002,
+0xa4ff, 0xa4ff,
+0xa60e, 0xa60f,
+0xa6f3, 0xa6f3,
+0xa6f7, 0xa6f7,
+0xa876, 0xa877,
+0xa8ce, 0xa8cf,
+0xa92f, 0xa92f,
+0xa9c8, 0xa9c9,
+0xaa5d, 0xaa5f,
+0xaaf0, 0xaaf1,
+0xabeb, 0xabeb,
+0xfe52, 0xfe52,
+0xfe56, 0xfe57,
+0xff01, 0xff01,
+0xff0e, 0xff0e,
+0xff1f, 0xff1f,
+0xff61, 0xff61,
+0x10a56, 0x10a57,
+0x11047, 0x11048,
+0x110be, 0x110c1,
+0x11141, 0x11143,
+0x111c5, 0x111c6,
+0x111cd, 0x111cd,
+0x111de, 0x111df,
+0x11238, 0x11239,
+0x1123b, 0x1123c,
+0x112a9, 0x112a9,
+0x115c2, 0x115c3,
+0x115c9, 0x115d7,
+0x11641, 0x11642,
+0x1173c, 0x1173e,
+0x16a6e, 0x16a6f,
+0x16af5, 0x16af5,
+0x16b37, 0x16b38,
+0x16b44, 0x16b44,
+0x1bc9f, 0x1bc9f,
+0x1da88, 0x1da88,
+}; /* END of CR_STerm */
 
-/* PROPERTY: 'Other_Lowercase': Binary Property */
+/* PROPERTY: 'Samaritan': Script */
 static const OnigCodePoint
-CR_Other_Lowercase[] = { 20,
-0x00aa, 0x00aa,
-0x00ba, 0x00ba,
-0x02b0, 0x02b8,
-0x02c0, 0x02c1,
-0x02e0, 0x02e4,
-0x0345, 0x0345,
-0x037a, 0x037a,
-0x1d2c, 0x1d6a,
-0x1d78, 0x1d78,
-0x1d9b, 0x1dbf,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x2170, 0x217f,
-0x24d0, 0x24e9,
-0x2c7c, 0x2c7d,
-0xa69c, 0xa69d,
-0xa770, 0xa770,
-0xa7f8, 0xa7f9,
-0xab5c, 0xab5f,
-}; /* END of CR_Other_Lowercase */
+CR_Samaritan[] = { 2,
+0x0800, 0x082d,
+0x0830, 0x083e,
+}; /* END of CR_Samaritan */
 
-/* PROPERTY: 'Other_Uppercase': Binary Property */
+/* PROPERTY: 'Saurashtra': Script */
 static const OnigCodePoint
-CR_Other_Uppercase[] = { 5,
-0x2160, 0x216f,
-0x24b6, 0x24cf,
-0x1f130, 0x1f149,
-0x1f150, 0x1f169,
-0x1f170, 0x1f189,
-}; /* END of CR_Other_Uppercase */
+CR_Saurashtra[] = { 2,
+0xa880, 0xa8c4,
+0xa8ce, 0xa8d9,
+}; /* END of CR_Saurashtra */
 
-/* PROPERTY: 'Noncharacter_Code_Point': Binary Property */
+/* PROPERTY: 'Sc': General Category */
 static const OnigCodePoint
-CR_Noncharacter_Code_Point[] = { 18,
-0xfdd0, 0xfdef,
-0xfffe, 0xffff,
-0x1fffe, 0x1ffff,
-0x2fffe, 0x2ffff,
-0x3fffe, 0x3ffff,
-0x4fffe, 0x4ffff,
-0x5fffe, 0x5ffff,
-0x6fffe, 0x6ffff,
-0x7fffe, 0x7ffff,
-0x8fffe, 0x8ffff,
-0x9fffe, 0x9ffff,
-0xafffe, 0xaffff,
-0xbfffe, 0xbffff,
-0xcfffe, 0xcffff,
-0xdfffe, 0xdffff,
-0xefffe, 0xeffff,
-0xffffe, 0xfffff,
-0x10fffe, 0x10ffff,
-}; /* END of CR_Noncharacter_Code_Point */
+CR_Sc[] = { 17,
+0x0024, 0x0024,
+0x00a2, 0x00a5,
+0x058f, 0x058f,
+0x060b, 0x060b,
+0x09f2, 0x09f3,
+0x09fb, 0x09fb,
+0x0af1, 0x0af1,
+0x0bf9, 0x0bf9,
+0x0e3f, 0x0e3f,
+0x17db, 0x17db,
+0x20a0, 0x20be,
+0xa838, 0xa838,
+0xfdfc, 0xfdfc,
+0xfe69, 0xfe69,
+0xff04, 0xff04,
+0xffe0, 0xffe1,
+0xffe5, 0xffe6,
+}; /* END of CR_Sc */
 
-/* PROPERTY: 'Other_Grapheme_Extend': Binary Property */
+/* PROPERTY: 'Sharada': Script */
 static const OnigCodePoint
-CR_Other_Grapheme_Extend[] = { 22,
-0x09be, 0x09be,
-0x09d7, 0x09d7,
-0x0b3e, 0x0b3e,
-0x0b57, 0x0b57,
-0x0bbe, 0x0bbe,
-0x0bd7, 0x0bd7,
-0x0cc2, 0x0cc2,
-0x0cd5, 0x0cd6,
-0x0d3e, 0x0d3e,
-0x0d57, 0x0d57,
-0x0dcf, 0x0dcf,
-0x0ddf, 0x0ddf,
-0x200c, 0x200d,
-0x302e, 0x302f,
-0xff9e, 0xff9f,
-0x1133e, 0x1133e,
-0x11357, 0x11357,
-0x114b0, 0x114b0,
-0x114bd, 0x114bd,
-0x115af, 0x115af,
-0x1d165, 0x1d165,
-0x1d16e, 0x1d172,
-}; /* END of CR_Other_Grapheme_Extend */
+CR_Sharada[] = { 2,
+0x11180, 0x111cd,
+0x111d0, 0x111df,
+}; /* END of CR_Sharada */
+
+/* PROPERTY: 'Shavian': Script */
+static const OnigCodePoint
+CR_Shavian[] = { 1,
+0x10450, 0x1047f,
+}; /* END of CR_Shavian */
+
+/* PROPERTY: 'Siddham': Script */
+static const OnigCodePoint
+CR_Siddham[] = { 2,
+0x11580, 0x115b5,
+0x115b8, 0x115dd,
+}; /* END of CR_Siddham */
+
+/* PROPERTY: 'SignWriting': Script */
+static const OnigCodePoint
+CR_SignWriting[] = { 3,
+0x1d800, 0x1da8b,
+0x1da9b, 0x1da9f,
+0x1daa1, 0x1daaf,
+}; /* END of CR_SignWriting */
+
+/* PROPERTY: 'Sinhala': Script */
+static const OnigCodePoint
+CR_Sinhala[] = { 13,
+0x0d82, 0x0d83,
+0x0d85, 0x0d96,
+0x0d9a, 0x0db1,
+0x0db3, 0x0dbb,
+0x0dbd, 0x0dbd,
+0x0dc0, 0x0dc6,
+0x0dca, 0x0dca,
+0x0dcf, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0dd8, 0x0ddf,
+0x0de6, 0x0def,
+0x0df2, 0x0df4,
+0x111e1, 0x111f4,
+}; /* END of CR_Sinhala */
 
-/* PROPERTY: 'IDS_Binary_Operator': Binary Property */
+/* PROPERTY: 'Sk': General Category */
 static const OnigCodePoint
-CR_IDS_Binary_Operator[] = { 2,
-0x2ff0, 0x2ff1,
-0x2ff4, 0x2ffb,
-}; /* END of CR_IDS_Binary_Operator */
+CR_Sk[] = { 29,
+0x005e, 0x005e,
+0x0060, 0x0060,
+0x00a8, 0x00a8,
+0x00af, 0x00af,
+0x00b4, 0x00b4,
+0x00b8, 0x00b8,
+0x02c2, 0x02c5,
+0x02d2, 0x02df,
+0x02e5, 0x02eb,
+0x02ed, 0x02ed,
+0x02ef, 0x02ff,
+0x0375, 0x0375,
+0x0384, 0x0385,
+0x1fbd, 0x1fbd,
+0x1fbf, 0x1fc1,
+0x1fcd, 0x1fcf,
+0x1fdd, 0x1fdf,
+0x1fed, 0x1fef,
+0x1ffd, 0x1ffe,
+0x309b, 0x309c,
+0xa700, 0xa716,
+0xa720, 0xa721,
+0xa789, 0xa78a,
+0xab5b, 0xab5b,
+0xfbb2, 0xfbc1,
+0xff3e, 0xff3e,
+0xff40, 0xff40,
+0xffe3, 0xffe3,
+0x1f3fb, 0x1f3ff,
+}; /* END of CR_Sk */
 
-/* PROPERTY: 'IDS_Trinary_Operator': Binary Property */
+/* PROPERTY: 'Sm': General Category */
 static const OnigCodePoint
-CR_IDS_Trinary_Operator[] = { 1,
-0x2ff2, 0x2ff3,
-}; /* END of CR_IDS_Trinary_Operator */
+CR_Sm[] = { 64,
+0x002b, 0x002b,
+0x003c, 0x003e,
+0x007c, 0x007c,
+0x007e, 0x007e,
+0x00ac, 0x00ac,
+0x00b1, 0x00b1,
+0x00d7, 0x00d7,
+0x00f7, 0x00f7,
+0x03f6, 0x03f6,
+0x0606, 0x0608,
+0x2044, 0x2044,
+0x2052, 0x2052,
+0x207a, 0x207c,
+0x208a, 0x208c,
+0x2118, 0x2118,
+0x2140, 0x2144,
+0x214b, 0x214b,
+0x2190, 0x2194,
+0x219a, 0x219b,
+0x21a0, 0x21a0,
+0x21a3, 0x21a3,
+0x21a6, 0x21a6,
+0x21ae, 0x21ae,
+0x21ce, 0x21cf,
+0x21d2, 0x21d2,
+0x21d4, 0x21d4,
+0x21f4, 0x22ff,
+0x2320, 0x2321,
+0x237c, 0x237c,
+0x239b, 0x23b3,
+0x23dc, 0x23e1,
+0x25b7, 0x25b7,
+0x25c1, 0x25c1,
+0x25f8, 0x25ff,
+0x266f, 0x266f,
+0x27c0, 0x27c4,
+0x27c7, 0x27e5,
+0x27f0, 0x27ff,
+0x2900, 0x2982,
+0x2999, 0x29d7,
+0x29dc, 0x29fb,
+0x29fe, 0x2aff,
+0x2b30, 0x2b44,
+0x2b47, 0x2b4c,
+0xfb29, 0xfb29,
+0xfe62, 0xfe62,
+0xfe64, 0xfe66,
+0xff0b, 0xff0b,
+0xff1c, 0xff1e,
+0xff5c, 0xff5c,
+0xff5e, 0xff5e,
+0xffe2, 0xffe2,
+0xffe9, 0xffec,
+0x1d6c1, 0x1d6c1,
+0x1d6db, 0x1d6db,
+0x1d6fb, 0x1d6fb,
+0x1d715, 0x1d715,
+0x1d735, 0x1d735,
+0x1d74f, 0x1d74f,
+0x1d76f, 0x1d76f,
+0x1d789, 0x1d789,
+0x1d7a9, 0x1d7a9,
+0x1d7c3, 0x1d7c3,
+0x1eef0, 0x1eef1,
+}; /* END of CR_Sm */
 
-/* PROPERTY: 'Radical': Binary Property */
+/* PROPERTY: 'So': General Category */
 static const OnigCodePoint
-CR_Radical[] = { 3,
+CR_So[] = { 170,
+0x00a6, 0x00a6,
+0x00a9, 0x00a9,
+0x00ae, 0x00ae,
+0x00b0, 0x00b0,
+0x0482, 0x0482,
+0x058d, 0x058e,
+0x060e, 0x060f,
+0x06de, 0x06de,
+0x06e9, 0x06e9,
+0x06fd, 0x06fe,
+0x07f6, 0x07f6,
+0x09fa, 0x09fa,
+0x0b70, 0x0b70,
+0x0bf3, 0x0bf8,
+0x0bfa, 0x0bfa,
+0x0c7f, 0x0c7f,
+0x0d79, 0x0d79,
+0x0f01, 0x0f03,
+0x0f13, 0x0f13,
+0x0f15, 0x0f17,
+0x0f1a, 0x0f1f,
+0x0f34, 0x0f34,
+0x0f36, 0x0f36,
+0x0f38, 0x0f38,
+0x0fbe, 0x0fc5,
+0x0fc7, 0x0fcc,
+0x0fce, 0x0fcf,
+0x0fd5, 0x0fd8,
+0x109e, 0x109f,
+0x1390, 0x1399,
+0x1940, 0x1940,
+0x19de, 0x19ff,
+0x1b61, 0x1b6a,
+0x1b74, 0x1b7c,
+0x2100, 0x2101,
+0x2103, 0x2106,
+0x2108, 0x2109,
+0x2114, 0x2114,
+0x2116, 0x2117,
+0x211e, 0x2123,
+0x2125, 0x2125,
+0x2127, 0x2127,
+0x2129, 0x2129,
+0x212e, 0x212e,
+0x213a, 0x213b,
+0x214a, 0x214a,
+0x214c, 0x214d,
+0x214f, 0x214f,
+0x218a, 0x218b,
+0x2195, 0x2199,
+0x219c, 0x219f,
+0x21a1, 0x21a2,
+0x21a4, 0x21a5,
+0x21a7, 0x21ad,
+0x21af, 0x21cd,
+0x21d0, 0x21d1,
+0x21d3, 0x21d3,
+0x21d5, 0x21f3,
+0x2300, 0x2307,
+0x230c, 0x231f,
+0x2322, 0x2328,
+0x232b, 0x237b,
+0x237d, 0x239a,
+0x23b4, 0x23db,
+0x23e2, 0x23fa,
+0x2400, 0x2426,
+0x2440, 0x244a,
+0x249c, 0x24e9,
+0x2500, 0x25b6,
+0x25b8, 0x25c0,
+0x25c2, 0x25f7,
+0x2600, 0x266e,
+0x2670, 0x2767,
+0x2794, 0x27bf,
+0x2800, 0x28ff,
+0x2b00, 0x2b2f,
+0x2b45, 0x2b46,
+0x2b4d, 0x2b73,
+0x2b76, 0x2b95,
+0x2b98, 0x2bb9,
+0x2bbd, 0x2bc8,
+0x2bca, 0x2bd1,
+0x2bec, 0x2bef,
+0x2ce5, 0x2cea,
 0x2e80, 0x2e99,
 0x2e9b, 0x2ef3,
 0x2f00, 0x2fd5,
-}; /* END of CR_Radical */
-
-/* PROPERTY: 'Unified_Ideograph': Binary Property */
-static const OnigCodePoint
-CR_Unified_Ideograph[] = { 13,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
-0xfa0e, 0xfa0f,
-0xfa11, 0xfa11,
-0xfa13, 0xfa14,
-0xfa1f, 0xfa1f,
-0xfa21, 0xfa21,
-0xfa23, 0xfa24,
-0xfa27, 0xfa29,
-0x20000, 0x2a6d6,
-0x2a700, 0x2b734,
-0x2b740, 0x2b81d,
-0x2b820, 0x2cea1,
-}; /* END of CR_Unified_Ideograph */
-
-/* PROPERTY: 'Other_Default_Ignorable_Code_Point': Binary Property */
-static const OnigCodePoint
-CR_Other_Default_Ignorable_Code_Point[] = { 11,
-0x034f, 0x034f,
-0x115f, 0x1160,
-0x17b4, 0x17b5,
-0x2065, 0x2065,
-0x3164, 0x3164,
-0xffa0, 0xffa0,
-0xfff0, 0xfff8,
-0xe0000, 0xe0000,
-0xe0002, 0xe001f,
-0xe0080, 0xe00ff,
-0xe01f0, 0xe0fff,
-}; /* END of CR_Other_Default_Ignorable_Code_Point */
-
-/* PROPERTY: 'Deprecated': Binary Property */
-static const OnigCodePoint
-CR_Deprecated[] = { 9,
-0x0149, 0x0149,
-0x0673, 0x0673,
-0x0f77, 0x0f77,
-0x0f79, 0x0f79,
-0x17a3, 0x17a4,
-0x206a, 0x206f,
-0x2329, 0x232a,
-0xe0001, 0xe0001,
-0xe007f, 0xe007f,
-}; /* END of CR_Deprecated */
+0x2ff0, 0x2ffb,
+0x3004, 0x3004,
+0x3012, 0x3013,
+0x3020, 0x3020,
+0x3036, 0x3037,
+0x303e, 0x303f,
+0x3190, 0x3191,
+0x3196, 0x319f,
+0x31c0, 0x31e3,
+0x3200, 0x321e,
+0x322a, 0x3247,
+0x3250, 0x3250,
+0x3260, 0x327f,
+0x328a, 0x32b0,
+0x32c0, 0x32fe,
+0x3300, 0x33ff,
+0x4dc0, 0x4dff,
+0xa490, 0xa4c6,
+0xa828, 0xa82b,
+0xa836, 0xa837,
+0xa839, 0xa839,
+0xaa77, 0xaa79,
+0xfdfd, 0xfdfd,
+0xffe4, 0xffe4,
+0xffe8, 0xffe8,
+0xffed, 0xffee,
+0xfffc, 0xfffd,
+0x10137, 0x1013f,
+0x10179, 0x10189,
+0x1018c, 0x1018c,
+0x10190, 0x1019b,
+0x101a0, 0x101a0,
+0x101d0, 0x101fc,
+0x10877, 0x10878,
+0x10ac8, 0x10ac8,
+0x1173f, 0x1173f,
+0x16b3c, 0x16b3f,
+0x16b45, 0x16b45,
+0x1bc9c, 0x1bc9c,
+0x1d000, 0x1d0f5,
+0x1d100, 0x1d126,
+0x1d129, 0x1d164,
+0x1d16a, 0x1d16c,
+0x1d183, 0x1d184,
+0x1d18c, 0x1d1a9,
+0x1d1ae, 0x1d1e8,
+0x1d200, 0x1d241,
+0x1d245, 0x1d245,
+0x1d300, 0x1d356,
+0x1d800, 0x1d9ff,
+0x1da37, 0x1da3a,
+0x1da6d, 0x1da74,
+0x1da76, 0x1da83,
+0x1da85, 0x1da86,
+0x1f000, 0x1f02b,
+0x1f030, 0x1f093,
+0x1f0a0, 0x1f0ae,
+0x1f0b1, 0x1f0bf,
+0x1f0c1, 0x1f0cf,
+0x1f0d1, 0x1f0f5,
+0x1f110, 0x1f12e,
+0x1f130, 0x1f16b,
+0x1f170, 0x1f19a,
+0x1f1e6, 0x1f202,
+0x1f210, 0x1f23a,
+0x1f240, 0x1f248,
+0x1f250, 0x1f251,
+0x1f300, 0x1f3fa,
+0x1f400, 0x1f579,
+0x1f57b, 0x1f5a3,
+0x1f5a5, 0x1f6d0,
+0x1f6e0, 0x1f6ec,
+0x1f6f0, 0x1f6f3,
+0x1f700, 0x1f773,
+0x1f780, 0x1f7d4,
+0x1f800, 0x1f80b,
+0x1f810, 0x1f847,
+0x1f850, 0x1f859,
+0x1f860, 0x1f887,
+0x1f890, 0x1f8ad,
+0x1f910, 0x1f918,
+0x1f980, 0x1f984,
+0x1f9c0, 0x1f9c0,
+}; /* END of CR_So */
 
 /* PROPERTY: 'Soft_Dotted': Binary Property */
 static const OnigCodePoint
@@ -20050,154 +18625,278 @@ CR_Soft_Dotted[] = { 31,
 0x1d692, 0x1d693,
 }; /* END of CR_Soft_Dotted */
 
-/* PROPERTY: 'Logical_Order_Exception': Binary Property */
+/* PROPERTY: 'Sora_Sompeng': Script */
 static const OnigCodePoint
-CR_Logical_Order_Exception[] = { 7,
-0x0e40, 0x0e44,
-0x0ec0, 0x0ec4,
-0x19b5, 0x19b7,
-0x19ba, 0x19ba,
-0xaab5, 0xaab6,
-0xaab9, 0xaab9,
-0xaabb, 0xaabc,
-}; /* END of CR_Logical_Order_Exception */
+CR_Sora_Sompeng[] = { 2,
+0x110d0, 0x110e8,
+0x110f0, 0x110f9,
+}; /* END of CR_Sora_Sompeng */
 
-/* PROPERTY: 'Other_ID_Start': Binary Property */
+/* PROPERTY: 'Sundanese': Script */
 static const OnigCodePoint
-CR_Other_ID_Start[] = { 3,
-0x2118, 0x2118,
-0x212e, 0x212e,
-0x309b, 0x309c,
-}; /* END of CR_Other_ID_Start */
+CR_Sundanese[] = { 2,
+0x1b80, 0x1bbf,
+0x1cc0, 0x1cc7,
+}; /* END of CR_Sundanese */
 
-/* PROPERTY: 'Other_ID_Continue': Binary Property */
+/* PROPERTY: 'Syloti_Nagri': Script */
 static const OnigCodePoint
-CR_Other_ID_Continue[] = { 4,
-0x00b7, 0x00b7,
-0x0387, 0x0387,
-0x1369, 0x1371,
-0x19da, 0x19da,
-}; /* END of CR_Other_ID_Continue */
+CR_Syloti_Nagri[] = { 1,
+0xa800, 0xa82b,
+}; /* END of CR_Syloti_Nagri */
 
-/* PROPERTY: 'STerm': Binary Property */
+/* PROPERTY: 'Syriac': Script */
 static const OnigCodePoint
-CR_STerm[] = { 64,
+CR_Syriac[] = { 3,
+0x0700, 0x070d,
+0x070f, 0x074a,
+0x074d, 0x074f,
+}; /* END of CR_Syriac */
+
+/* PROPERTY: 'Tagalog': Script */
+static const OnigCodePoint
+CR_Tagalog[] = { 2,
+0x1700, 0x170c,
+0x170e, 0x1714,
+}; /* END of CR_Tagalog */
+
+/* PROPERTY: 'Tagbanwa': Script */
+static const OnigCodePoint
+CR_Tagbanwa[] = { 3,
+0x1760, 0x176c,
+0x176e, 0x1770,
+0x1772, 0x1773,
+}; /* END of CR_Tagbanwa */
+
+/* PROPERTY: 'Tai_Le': Script */
+static const OnigCodePoint
+CR_Tai_Le[] = { 2,
+0x1950, 0x196d,
+0x1970, 0x1974,
+}; /* END of CR_Tai_Le */
+
+/* PROPERTY: 'Tai_Tham': Script */
+static const OnigCodePoint
+CR_Tai_Tham[] = { 5,
+0x1a20, 0x1a5e,
+0x1a60, 0x1a7c,
+0x1a7f, 0x1a89,
+0x1a90, 0x1a99,
+0x1aa0, 0x1aad,
+}; /* END of CR_Tai_Tham */
+
+/* PROPERTY: 'Tai_Viet': Script */
+static const OnigCodePoint
+CR_Tai_Viet[] = { 2,
+0xaa80, 0xaac2,
+0xaadb, 0xaadf,
+}; /* END of CR_Tai_Viet */
+
+/* PROPERTY: 'Takri': Script */
+static const OnigCodePoint
+CR_Takri[] = { 2,
+0x11680, 0x116b7,
+0x116c0, 0x116c9,
+}; /* END of CR_Takri */
+
+/* PROPERTY: 'Tamil': Script */
+static const OnigCodePoint
+CR_Tamil[] = { 16,
+0x0b82, 0x0b83,
+0x0b85, 0x0b8a,
+0x0b8e, 0x0b90,
+0x0b92, 0x0b95,
+0x0b99, 0x0b9a,
+0x0b9c, 0x0b9c,
+0x0b9e, 0x0b9f,
+0x0ba3, 0x0ba4,
+0x0ba8, 0x0baa,
+0x0bae, 0x0bb9,
+0x0bbe, 0x0bc2,
+0x0bc6, 0x0bc8,
+0x0bca, 0x0bcd,
+0x0bd0, 0x0bd0,
+0x0bd7, 0x0bd7,
+0x0be6, 0x0bfa,
+}; /* END of CR_Tamil */
+
+/* PROPERTY: 'Telugu': Script */
+static const OnigCodePoint
+CR_Telugu[] = { 13,
+0x0c00, 0x0c03,
+0x0c05, 0x0c0c,
+0x0c0e, 0x0c10,
+0x0c12, 0x0c28,
+0x0c2a, 0x0c39,
+0x0c3d, 0x0c44,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4d,
+0x0c55, 0x0c56,
+0x0c58, 0x0c5a,
+0x0c60, 0x0c63,
+0x0c66, 0x0c6f,
+0x0c78, 0x0c7f,
+}; /* END of CR_Telugu */
+
+/* PROPERTY: 'Terminal_Punctuation': Binary Property */
+static const OnigCodePoint
+CR_Terminal_Punctuation[] = { 90,
 0x0021, 0x0021,
+0x002c, 0x002c,
 0x002e, 0x002e,
+0x003a, 0x003b,
 0x003f, 0x003f,
+0x037e, 0x037e,
+0x0387, 0x0387,
 0x0589, 0x0589,
+0x05c3, 0x05c3,
+0x060c, 0x060c,
+0x061b, 0x061b,
 0x061f, 0x061f,
 0x06d4, 0x06d4,
-0x0700, 0x0702,
-0x07f9, 0x07f9,
+0x0700, 0x070a,
+0x070c, 0x070c,
+0x07f8, 0x07f9,
+0x0830, 0x083e,
+0x085e, 0x085e,
 0x0964, 0x0965,
+0x0e5a, 0x0e5b,
+0x0f08, 0x0f08,
+0x0f0d, 0x0f12,
 0x104a, 0x104b,
-0x1362, 0x1362,
-0x1367, 0x1368,
-0x166e, 0x166e,
+0x1361, 0x1368,
+0x166d, 0x166e,
+0x16eb, 0x16ed,
 0x1735, 0x1736,
-0x1803, 0x1803,
-0x1809, 0x1809,
+0x17d4, 0x17d6,
+0x17da, 0x17da,
+0x1802, 0x1805,
+0x1808, 0x1809,
 0x1944, 0x1945,
 0x1aa8, 0x1aab,
 0x1b5a, 0x1b5b,
-0x1b5e, 0x1b5f,
-0x1c3b, 0x1c3c,
+0x1b5d, 0x1b5f,
+0x1c3b, 0x1c3f,
 0x1c7e, 0x1c7f,
 0x203c, 0x203d,
 0x2047, 0x2049,
 0x2e2e, 0x2e2e,
 0x2e3c, 0x2e3c,
-0x3002, 0x3002,
-0xa4ff, 0xa4ff,
-0xa60e, 0xa60f,
-0xa6f3, 0xa6f3,
-0xa6f7, 0xa6f7,
+0x2e41, 0x2e41,
+0x3001, 0x3002,
+0xa4fe, 0xa4ff,
+0xa60d, 0xa60f,
+0xa6f3, 0xa6f7,
 0xa876, 0xa877,
 0xa8ce, 0xa8cf,
 0xa92f, 0xa92f,
-0xa9c8, 0xa9c9,
+0xa9c7, 0xa9c9,
 0xaa5d, 0xaa5f,
+0xaadf, 0xaadf,
 0xaaf0, 0xaaf1,
 0xabeb, 0xabeb,
-0xfe52, 0xfe52,
-0xfe56, 0xfe57,
+0xfe50, 0xfe52,
+0xfe54, 0xfe57,
 0xff01, 0xff01,
+0xff0c, 0xff0c,
 0xff0e, 0xff0e,
+0xff1a, 0xff1b,
 0xff1f, 0xff1f,
 0xff61, 0xff61,
+0xff64, 0xff64,
+0x1039f, 0x1039f,
+0x103d0, 0x103d0,
+0x10857, 0x10857,
+0x1091f, 0x1091f,
 0x10a56, 0x10a57,
-0x11047, 0x11048,
+0x10af0, 0x10af5,
+0x10b3a, 0x10b3f,
+0x10b99, 0x10b9c,
+0x11047, 0x1104d,
 0x110be, 0x110c1,
 0x11141, 0x11143,
 0x111c5, 0x111c6,
 0x111cd, 0x111cd,
 0x111de, 0x111df,
-0x11238, 0x11239,
-0x1123b, 0x1123c,
+0x11238, 0x1123c,
 0x112a9, 0x112a9,
-0x115c2, 0x115c3,
+0x115c2, 0x115c5,
 0x115c9, 0x115d7,
 0x11641, 0x11642,
 0x1173c, 0x1173e,
+0x12470, 0x12474,
 0x16a6e, 0x16a6f,
 0x16af5, 0x16af5,
-0x16b37, 0x16b38,
+0x16b37, 0x16b39,
 0x16b44, 0x16b44,
 0x1bc9f, 0x1bc9f,
-0x1da88, 0x1da88,
-}; /* END of CR_STerm */
+0x1da87, 0x1da8a,
+}; /* END of CR_Terminal_Punctuation */
 
-/* PROPERTY: 'Variation_Selector': Binary Property */
+/* PROPERTY: 'Thaana': Script */
 static const OnigCodePoint
-CR_Variation_Selector[] = { 3,
-0x180b, 0x180d,
-0xfe00, 0xfe0f,
-0xe0100, 0xe01ef,
-}; /* END of CR_Variation_Selector */
+CR_Thaana[] = { 1,
+0x0780, 0x07b1,
+}; /* END of CR_Thaana */
 
-/* PROPERTY: 'Pattern_White_Space': Binary Property */
+/* PROPERTY: 'Thai': Script */
 static const OnigCodePoint
-CR_Pattern_White_Space[] = { 5,
-0x0009, 0x000d,
-0x0020, 0x0020,
-0x0085, 0x0085,
-0x200e, 0x200f,
-0x2028, 0x2029,
-}; /* END of CR_Pattern_White_Space */
+CR_Thai[] = { 2,
+0x0e01, 0x0e3a,
+0x0e40, 0x0e5b,
+}; /* END of CR_Thai */
 
-/* PROPERTY: 'Pattern_Syntax': Binary Property */
+/* PROPERTY: 'Tibetan': Script */
 static const OnigCodePoint
-CR_Pattern_Syntax[] = { 28,
-0x0021, 0x002f,
-0x003a, 0x0040,
-0x005b, 0x005e,
-0x0060, 0x0060,
-0x007b, 0x007e,
-0x00a1, 0x00a7,
-0x00a9, 0x00a9,
-0x00ab, 0x00ac,
-0x00ae, 0x00ae,
-0x00b0, 0x00b1,
-0x00b6, 0x00b6,
-0x00bb, 0x00bb,
-0x00bf, 0x00bf,
-0x00d7, 0x00d7,
-0x00f7, 0x00f7,
-0x2010, 0x2027,
-0x2030, 0x203e,
-0x2041, 0x2053,
-0x2055, 0x205e,
-0x2190, 0x245f,
-0x2500, 0x2775,
-0x2794, 0x2bff,
-0x2e00, 0x2e7f,
-0x3001, 0x3003,
-0x3008, 0x3020,
-0x3030, 0x3030,
-0xfd3e, 0xfd3f,
-0xfe45, 0xfe46,
-}; /* END of CR_Pattern_Syntax */
+CR_Tibetan[] = { 7,
+0x0f00, 0x0f47,
+0x0f49, 0x0f6c,
+0x0f71, 0x0f97,
+0x0f99, 0x0fbc,
+0x0fbe, 0x0fcc,
+0x0fce, 0x0fd4,
+0x0fd9, 0x0fda,
+}; /* END of CR_Tibetan */
+
+/* PROPERTY: 'Tifinagh': Script */
+static const OnigCodePoint
+CR_Tifinagh[] = { 3,
+0x2d30, 0x2d67,
+0x2d6f, 0x2d70,
+0x2d7f, 0x2d7f,
+}; /* END of CR_Tifinagh */
+
+/* PROPERTY: 'Tirhuta': Script */
+static const OnigCodePoint
+CR_Tirhuta[] = { 2,
+0x11480, 0x114c7,
+0x114d0, 0x114d9,
+}; /* END of CR_Tirhuta */
+
+/* PROPERTY: 'Ugaritic': Script */
+static const OnigCodePoint
+CR_Ugaritic[] = { 2,
+0x10380, 0x1039d,
+0x1039f, 0x1039f,
+}; /* END of CR_Ugaritic */
+
+/* PROPERTY: 'Unified_Ideograph': Binary Property */
+static const OnigCodePoint
+CR_Unified_Ideograph[] = { 13,
+0x3400, 0x4db5,
+0x4e00, 0x9fd5,
+0xfa0e, 0xfa0f,
+0xfa11, 0xfa11,
+0xfa13, 0xfa14,
+0xfa1f, 0xfa1f,
+0xfa21, 0xfa21,
+0xfa23, 0xfa24,
+0xfa27, 0xfa29,
+0x20000, 0x2a6d6,
+0x2a700, 0x2b734,
+0x2b740, 0x2b81d,
+0x2b820, 0x2cea1,
+}; /* END of CR_Unified_Ideograph */
 
 /* PROPERTY: 'Unknown': Script */
 static const OnigCodePoint
@@ -20815,6 +19514,1307 @@ CR_Unknown[] = { 611,
 0xe01f0, 0x10ffff,
 }; /* END of CR_Unknown */
 
+/* PROPERTY: 'Uppercase': Derived Property */
+#define CR_Uppercase CR_Upper
+
+/* PROPERTY: 'Vai': Script */
+static const OnigCodePoint
+CR_Vai[] = { 1,
+0xa500, 0xa62b,
+}; /* END of CR_Vai */
+
+/* PROPERTY: 'Variation_Selector': Binary Property */
+static const OnigCodePoint
+CR_Variation_Selector[] = { 3,
+0x180b, 0x180d,
+0xfe00, 0xfe0f,
+0xe0100, 0xe01ef,
+}; /* END of CR_Variation_Selector */
+
+/* PROPERTY: 'Warang_Citi': Script */
+static const OnigCodePoint
+CR_Warang_Citi[] = { 2,
+0x118a0, 0x118f2,
+0x118ff, 0x118ff,
+}; /* END of CR_Warang_Citi */
+
+/* PROPERTY: 'White_Space': Binary Property */
+#define CR_White_Space CR_Space
+
+/* PROPERTY: 'XID_Continue': Derived Property */
+static const OnigCodePoint
+CR_XID_Continue[] = { 658,
+0x0030, 0x0039,
+0x0041, 0x005a,
+0x005f, 0x005f,
+0x0061, 0x007a,
+0x00aa, 0x00aa,
+0x00b5, 0x00b5,
+0x00b7, 0x00b7,
+0x00ba, 0x00ba,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x02c1,
+0x02c6, 0x02d1,
+0x02e0, 0x02e4,
+0x02ec, 0x02ec,
+0x02ee, 0x02ee,
+0x0300, 0x0374,
+0x0376, 0x0377,
+0x037b, 0x037d,
+0x037f, 0x037f,
+0x0386, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03f5,
+0x03f7, 0x0481,
+0x0483, 0x0487,
+0x048a, 0x052f,
+0x0531, 0x0556,
+0x0559, 0x0559,
+0x0561, 0x0587,
+0x0591, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c5,
+0x05c7, 0x05c7,
+0x05d0, 0x05ea,
+0x05f0, 0x05f2,
+0x0610, 0x061a,
+0x0620, 0x0669,
+0x066e, 0x06d3,
+0x06d5, 0x06dc,
+0x06df, 0x06e8,
+0x06ea, 0x06fc,
+0x06ff, 0x06ff,
+0x0710, 0x074a,
+0x074d, 0x07b1,
+0x07c0, 0x07f5,
+0x07fa, 0x07fa,
+0x0800, 0x082d,
+0x0840, 0x085b,
+0x08a0, 0x08b4,
+0x08e3, 0x0963,
+0x0966, 0x096f,
+0x0971, 0x0983,
+0x0985, 0x098c,
+0x098f, 0x0990,
+0x0993, 0x09a8,
+0x09aa, 0x09b0,
+0x09b2, 0x09b2,
+0x09b6, 0x09b9,
+0x09bc, 0x09c4,
+0x09c7, 0x09c8,
+0x09cb, 0x09ce,
+0x09d7, 0x09d7,
+0x09dc, 0x09dd,
+0x09df, 0x09e3,
+0x09e6, 0x09f1,
+0x0a01, 0x0a03,
+0x0a05, 0x0a0a,
+0x0a0f, 0x0a10,
+0x0a13, 0x0a28,
+0x0a2a, 0x0a30,
+0x0a32, 0x0a33,
+0x0a35, 0x0a36,
+0x0a38, 0x0a39,
+0x0a3c, 0x0a3c,
+0x0a3e, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4d,
+0x0a51, 0x0a51,
+0x0a59, 0x0a5c,
+0x0a5e, 0x0a5e,
+0x0a66, 0x0a75,
+0x0a81, 0x0a83,
+0x0a85, 0x0a8d,
+0x0a8f, 0x0a91,
+0x0a93, 0x0aa8,
+0x0aaa, 0x0ab0,
+0x0ab2, 0x0ab3,
+0x0ab5, 0x0ab9,
+0x0abc, 0x0ac5,
+0x0ac7, 0x0ac9,
+0x0acb, 0x0acd,
+0x0ad0, 0x0ad0,
+0x0ae0, 0x0ae3,
+0x0ae6, 0x0aef,
+0x0af9, 0x0af9,
+0x0b01, 0x0b03,
+0x0b05, 0x0b0c,
+0x0b0f, 0x0b10,
+0x0b13, 0x0b28,
+0x0b2a, 0x0b30,
+0x0b32, 0x0b33,
+0x0b35, 0x0b39,
+0x0b3c, 0x0b44,
+0x0b47, 0x0b48,
+0x0b4b, 0x0b4d,
+0x0b56, 0x0b57,
+0x0b5c, 0x0b5d,
+0x0b5f, 0x0b63,
+0x0b66, 0x0b6f,
+0x0b71, 0x0b71,
+0x0b82, 0x0b83,
+0x0b85, 0x0b8a,
+0x0b8e, 0x0b90,
+0x0b92, 0x0b95,
+0x0b99, 0x0b9a,
+0x0b9c, 0x0b9c,
+0x0b9e, 0x0b9f,
+0x0ba3, 0x0ba4,
+0x0ba8, 0x0baa,
+0x0bae, 0x0bb9,
+0x0bbe, 0x0bc2,
+0x0bc6, 0x0bc8,
+0x0bca, 0x0bcd,
+0x0bd0, 0x0bd0,
+0x0bd7, 0x0bd7,
+0x0be6, 0x0bef,
+0x0c00, 0x0c03,
+0x0c05, 0x0c0c,
+0x0c0e, 0x0c10,
+0x0c12, 0x0c28,
+0x0c2a, 0x0c39,
+0x0c3d, 0x0c44,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4d,
+0x0c55, 0x0c56,
+0x0c58, 0x0c5a,
+0x0c60, 0x0c63,
+0x0c66, 0x0c6f,
+0x0c81, 0x0c83,
+0x0c85, 0x0c8c,
+0x0c8e, 0x0c90,
+0x0c92, 0x0ca8,
+0x0caa, 0x0cb3,
+0x0cb5, 0x0cb9,
+0x0cbc, 0x0cc4,
+0x0cc6, 0x0cc8,
+0x0cca, 0x0ccd,
+0x0cd5, 0x0cd6,
+0x0cde, 0x0cde,
+0x0ce0, 0x0ce3,
+0x0ce6, 0x0cef,
+0x0cf1, 0x0cf2,
+0x0d01, 0x0d03,
+0x0d05, 0x0d0c,
+0x0d0e, 0x0d10,
+0x0d12, 0x0d3a,
+0x0d3d, 0x0d44,
+0x0d46, 0x0d48,
+0x0d4a, 0x0d4e,
+0x0d57, 0x0d57,
+0x0d5f, 0x0d63,
+0x0d66, 0x0d6f,
+0x0d7a, 0x0d7f,
+0x0d82, 0x0d83,
+0x0d85, 0x0d96,
+0x0d9a, 0x0db1,
+0x0db3, 0x0dbb,
+0x0dbd, 0x0dbd,
+0x0dc0, 0x0dc6,
+0x0dca, 0x0dca,
+0x0dcf, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0dd8, 0x0ddf,
+0x0de6, 0x0def,
+0x0df2, 0x0df3,
+0x0e01, 0x0e3a,
+0x0e40, 0x0e4e,
+0x0e50, 0x0e59,
+0x0e81, 0x0e82,
+0x0e84, 0x0e84,
+0x0e87, 0x0e88,
+0x0e8a, 0x0e8a,
+0x0e8d, 0x0e8d,
+0x0e94, 0x0e97,
+0x0e99, 0x0e9f,
+0x0ea1, 0x0ea3,
+0x0ea5, 0x0ea5,
+0x0ea7, 0x0ea7,
+0x0eaa, 0x0eab,
+0x0ead, 0x0eb9,
+0x0ebb, 0x0ebd,
+0x0ec0, 0x0ec4,
+0x0ec6, 0x0ec6,
+0x0ec8, 0x0ecd,
+0x0ed0, 0x0ed9,
+0x0edc, 0x0edf,
+0x0f00, 0x0f00,
+0x0f18, 0x0f19,
+0x0f20, 0x0f29,
+0x0f35, 0x0f35,
+0x0f37, 0x0f37,
+0x0f39, 0x0f39,
+0x0f3e, 0x0f47,
+0x0f49, 0x0f6c,
+0x0f71, 0x0f84,
+0x0f86, 0x0f97,
+0x0f99, 0x0fbc,
+0x0fc6, 0x0fc6,
+0x1000, 0x1049,
+0x1050, 0x109d,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x10d0, 0x10fa,
+0x10fc, 0x1248,
+0x124a, 0x124d,
+0x1250, 0x1256,
+0x1258, 0x1258,
+0x125a, 0x125d,
+0x1260, 0x1288,
+0x128a, 0x128d,
+0x1290, 0x12b0,
+0x12b2, 0x12b5,
+0x12b8, 0x12be,
+0x12c0, 0x12c0,
+0x12c2, 0x12c5,
+0x12c8, 0x12d6,
+0x12d8, 0x1310,
+0x1312, 0x1315,
+0x1318, 0x135a,
+0x135d, 0x135f,
+0x1369, 0x1371,
+0x1380, 0x138f,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0x1401, 0x166c,
+0x166f, 0x167f,
+0x1681, 0x169a,
+0x16a0, 0x16ea,
+0x16ee, 0x16f8,
+0x1700, 0x170c,
+0x170e, 0x1714,
+0x1720, 0x1734,
+0x1740, 0x1753,
+0x1760, 0x176c,
+0x176e, 0x1770,
+0x1772, 0x1773,
+0x1780, 0x17d3,
+0x17d7, 0x17d7,
+0x17dc, 0x17dd,
+0x17e0, 0x17e9,
+0x180b, 0x180d,
+0x1810, 0x1819,
+0x1820, 0x1877,
+0x1880, 0x18aa,
+0x18b0, 0x18f5,
+0x1900, 0x191e,
+0x1920, 0x192b,
+0x1930, 0x193b,
+0x1946, 0x196d,
+0x1970, 0x1974,
+0x1980, 0x19ab,
+0x19b0, 0x19c9,
+0x19d0, 0x19da,
+0x1a00, 0x1a1b,
+0x1a20, 0x1a5e,
+0x1a60, 0x1a7c,
+0x1a7f, 0x1a89,
+0x1a90, 0x1a99,
+0x1aa7, 0x1aa7,
+0x1ab0, 0x1abd,
+0x1b00, 0x1b4b,
+0x1b50, 0x1b59,
+0x1b6b, 0x1b73,
+0x1b80, 0x1bf3,
+0x1c00, 0x1c37,
+0x1c40, 0x1c49,
+0x1c4d, 0x1c7d,
+0x1cd0, 0x1cd2,
+0x1cd4, 0x1cf6,
+0x1cf8, 0x1cf9,
+0x1d00, 0x1df5,
+0x1dfc, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fe0, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffc,
+0x203f, 0x2040,
+0x2054, 0x2054,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x20d0, 0x20dc,
+0x20e1, 0x20e1,
+0x20e5, 0x20f0,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2118, 0x211d,
+0x2124, 0x2124,
+0x2126, 0x2126,
+0x2128, 0x2128,
+0x212a, 0x2139,
+0x213c, 0x213f,
+0x2145, 0x2149,
+0x214e, 0x214e,
+0x2160, 0x2188,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x2c60, 0x2ce4,
+0x2ceb, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0x2d30, 0x2d67,
+0x2d6f, 0x2d6f,
+0x2d7f, 0x2d96,
+0x2da0, 0x2da6,
+0x2da8, 0x2dae,
+0x2db0, 0x2db6,
+0x2db8, 0x2dbe,
+0x2dc0, 0x2dc6,
+0x2dc8, 0x2dce,
+0x2dd0, 0x2dd6,
+0x2dd8, 0x2dde,
+0x2de0, 0x2dff,
+0x3005, 0x3007,
+0x3021, 0x302f,
+0x3031, 0x3035,
+0x3038, 0x303c,
+0x3041, 0x3096,
+0x3099, 0x309a,
+0x309d, 0x309f,
+0x30a1, 0x30fa,
+0x30fc, 0x30ff,
+0x3105, 0x312d,
+0x3131, 0x318e,
+0x31a0, 0x31ba,
+0x31f0, 0x31ff,
+0x3400, 0x4db5,
+0x4e00, 0x9fd5,
+0xa000, 0xa48c,
+0xa4d0, 0xa4fd,
+0xa500, 0xa60c,
+0xa610, 0xa62b,
+0xa640, 0xa66f,
+0xa674, 0xa67d,
+0xa67f, 0xa6f1,
+0xa717, 0xa71f,
+0xa722, 0xa788,
+0xa78b, 0xa7ad,
+0xa7b0, 0xa7b7,
+0xa7f7, 0xa827,
+0xa840, 0xa873,
+0xa880, 0xa8c4,
+0xa8d0, 0xa8d9,
+0xa8e0, 0xa8f7,
+0xa8fb, 0xa8fb,
+0xa8fd, 0xa8fd,
+0xa900, 0xa92d,
+0xa930, 0xa953,
+0xa960, 0xa97c,
+0xa980, 0xa9c0,
+0xa9cf, 0xa9d9,
+0xa9e0, 0xa9fe,
+0xaa00, 0xaa36,
+0xaa40, 0xaa4d,
+0xaa50, 0xaa59,
+0xaa60, 0xaa76,
+0xaa7a, 0xaac2,
+0xaadb, 0xaadd,
+0xaae0, 0xaaef,
+0xaaf2, 0xaaf6,
+0xab01, 0xab06,
+0xab09, 0xab0e,
+0xab11, 0xab16,
+0xab20, 0xab26,
+0xab28, 0xab2e,
+0xab30, 0xab5a,
+0xab5c, 0xab65,
+0xab70, 0xabea,
+0xabec, 0xabed,
+0xabf0, 0xabf9,
+0xac00, 0xd7a3,
+0xd7b0, 0xd7c6,
+0xd7cb, 0xd7fb,
+0xf900, 0xfa6d,
+0xfa70, 0xfad9,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xfb1d, 0xfb28,
+0xfb2a, 0xfb36,
+0xfb38, 0xfb3c,
+0xfb3e, 0xfb3e,
+0xfb40, 0xfb41,
+0xfb43, 0xfb44,
+0xfb46, 0xfbb1,
+0xfbd3, 0xfc5d,
+0xfc64, 0xfd3d,
+0xfd50, 0xfd8f,
+0xfd92, 0xfdc7,
+0xfdf0, 0xfdf9,
+0xfe00, 0xfe0f,
+0xfe20, 0xfe2f,
+0xfe33, 0xfe34,
+0xfe4d, 0xfe4f,
+0xfe71, 0xfe71,
+0xfe73, 0xfe73,
+0xfe77, 0xfe77,
+0xfe79, 0xfe79,
+0xfe7b, 0xfe7b,
+0xfe7d, 0xfe7d,
+0xfe7f, 0xfefc,
+0xff10, 0xff19,
+0xff21, 0xff3a,
+0xff3f, 0xff3f,
+0xff41, 0xff5a,
+0xff66, 0xffbe,
+0xffc2, 0xffc7,
+0xffca, 0xffcf,
+0xffd2, 0xffd7,
+0xffda, 0xffdc,
+0x10000, 0x1000b,
+0x1000d, 0x10026,
+0x10028, 0x1003a,
+0x1003c, 0x1003d,
+0x1003f, 0x1004d,
+0x10050, 0x1005d,
+0x10080, 0x100fa,
+0x10140, 0x10174,
+0x101fd, 0x101fd,
+0x10280, 0x1029c,
+0x102a0, 0x102d0,
+0x102e0, 0x102e0,
+0x10300, 0x1031f,
+0x10330, 0x1034a,
+0x10350, 0x1037a,
+0x10380, 0x1039d,
+0x103a0, 0x103c3,
+0x103c8, 0x103cf,
+0x103d1, 0x103d5,
+0x10400, 0x1049d,
+0x104a0, 0x104a9,
+0x10500, 0x10527,
+0x10530, 0x10563,
+0x10600, 0x10736,
+0x10740, 0x10755,
+0x10760, 0x10767,
+0x10800, 0x10805,
+0x10808, 0x10808,
+0x1080a, 0x10835,
+0x10837, 0x10838,
+0x1083c, 0x1083c,
+0x1083f, 0x10855,
+0x10860, 0x10876,
+0x10880, 0x1089e,
+0x108e0, 0x108f2,
+0x108f4, 0x108f5,
+0x10900, 0x10915,
+0x10920, 0x10939,
+0x10980, 0x109b7,
+0x109be, 0x109bf,
+0x10a00, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a13,
+0x10a15, 0x10a17,
+0x10a19, 0x10a33,
+0x10a38, 0x10a3a,
+0x10a3f, 0x10a3f,
+0x10a60, 0x10a7c,
+0x10a80, 0x10a9c,
+0x10ac0, 0x10ac7,
+0x10ac9, 0x10ae6,
+0x10b00, 0x10b35,
+0x10b40, 0x10b55,
+0x10b60, 0x10b72,
+0x10b80, 0x10b91,
+0x10c00, 0x10c48,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x11000, 0x11046,
+0x11066, 0x1106f,
+0x1107f, 0x110ba,
+0x110d0, 0x110e8,
+0x110f0, 0x110f9,
+0x11100, 0x11134,
+0x11136, 0x1113f,
+0x11150, 0x11173,
+0x11176, 0x11176,
+0x11180, 0x111c4,
+0x111ca, 0x111cc,
+0x111d0, 0x111da,
+0x111dc, 0x111dc,
+0x11200, 0x11211,
+0x11213, 0x11237,
+0x11280, 0x11286,
+0x11288, 0x11288,
+0x1128a, 0x1128d,
+0x1128f, 0x1129d,
+0x1129f, 0x112a8,
+0x112b0, 0x112ea,
+0x112f0, 0x112f9,
+0x11300, 0x11303,
+0x11305, 0x1130c,
+0x1130f, 0x11310,
+0x11313, 0x11328,
+0x1132a, 0x11330,
+0x11332, 0x11333,
+0x11335, 0x11339,
+0x1133c, 0x11344,
+0x11347, 0x11348,
+0x1134b, 0x1134d,
+0x11350, 0x11350,
+0x11357, 0x11357,
+0x1135d, 0x11363,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+0x11480, 0x114c5,
+0x114c7, 0x114c7,
+0x114d0, 0x114d9,
+0x11580, 0x115b5,
+0x115b8, 0x115c0,
+0x115d8, 0x115dd,
+0x11600, 0x11640,
+0x11644, 0x11644,
+0x11650, 0x11659,
+0x11680, 0x116b7,
+0x116c0, 0x116c9,
+0x11700, 0x11719,
+0x1171d, 0x1172b,
+0x11730, 0x11739,
+0x118a0, 0x118e9,
+0x118ff, 0x118ff,
+0x11ac0, 0x11af8,
+0x12000, 0x12399,
+0x12400, 0x1246e,
+0x12480, 0x12543,
+0x13000, 0x1342e,
+0x14400, 0x14646,
+0x16800, 0x16a38,
+0x16a40, 0x16a5e,
+0x16a60, 0x16a69,
+0x16ad0, 0x16aed,
+0x16af0, 0x16af4,
+0x16b00, 0x16b36,
+0x16b40, 0x16b43,
+0x16b50, 0x16b59,
+0x16b63, 0x16b77,
+0x16b7d, 0x16b8f,
+0x16f00, 0x16f44,
+0x16f50, 0x16f7e,
+0x16f8f, 0x16f9f,
+0x1b000, 0x1b001,
+0x1bc00, 0x1bc6a,
+0x1bc70, 0x1bc7c,
+0x1bc80, 0x1bc88,
+0x1bc90, 0x1bc99,
+0x1bc9d, 0x1bc9e,
+0x1d165, 0x1d169,
+0x1d16d, 0x1d172,
+0x1d17b, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0x1d242, 0x1d244,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d6c0,
+0x1d6c2, 0x1d6da,
+0x1d6dc, 0x1d6fa,
+0x1d6fc, 0x1d714,
+0x1d716, 0x1d734,
+0x1d736, 0x1d74e,
+0x1d750, 0x1d76e,
+0x1d770, 0x1d788,
+0x1d78a, 0x1d7a8,
+0x1d7aa, 0x1d7c2,
+0x1d7c4, 0x1d7cb,
+0x1d7ce, 0x1d7ff,
+0x1da00, 0x1da36,
+0x1da3b, 0x1da6c,
+0x1da75, 0x1da75,
+0x1da84, 0x1da84,
+0x1da9b, 0x1da9f,
+0x1daa1, 0x1daaf,
+0x1e800, 0x1e8c4,
+0x1e8d0, 0x1e8d6,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+0x20000, 0x2a6d6,
+0x2a700, 0x2b734,
+0x2b740, 0x2b81d,
+0x2b820, 0x2cea1,
+0x2f800, 0x2fa1d,
+0xe0100, 0xe01ef,
+}; /* END of CR_XID_Continue */
+
+/* PROPERTY: 'XID_Start': Derived Property */
+static const OnigCodePoint
+CR_XID_Start[] = { 562,
+0x0041, 0x005a,
+0x0061, 0x007a,
+0x00aa, 0x00aa,
+0x00b5, 0x00b5,
+0x00ba, 0x00ba,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x02c1,
+0x02c6, 0x02d1,
+0x02e0, 0x02e4,
+0x02ec, 0x02ec,
+0x02ee, 0x02ee,
+0x0370, 0x0374,
+0x0376, 0x0377,
+0x037b, 0x037d,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03f5,
+0x03f7, 0x0481,
+0x048a, 0x052f,
+0x0531, 0x0556,
+0x0559, 0x0559,
+0x0561, 0x0587,
+0x05d0, 0x05ea,
+0x05f0, 0x05f2,
+0x0620, 0x064a,
+0x066e, 0x066f,
+0x0671, 0x06d3,
+0x06d5, 0x06d5,
+0x06e5, 0x06e6,
+0x06ee, 0x06ef,
+0x06fa, 0x06fc,
+0x06ff, 0x06ff,
+0x0710, 0x0710,
+0x0712, 0x072f,
+0x074d, 0x07a5,
+0x07b1, 0x07b1,
+0x07ca, 0x07ea,
+0x07f4, 0x07f5,
+0x07fa, 0x07fa,
+0x0800, 0x0815,
+0x081a, 0x081a,
+0x0824, 0x0824,
+0x0828, 0x0828,
+0x0840, 0x0858,
+0x08a0, 0x08b4,
+0x0904, 0x0939,
+0x093d, 0x093d,
+0x0950, 0x0950,
+0x0958, 0x0961,
+0x0971, 0x0980,
+0x0985, 0x098c,
+0x098f, 0x0990,
+0x0993, 0x09a8,
+0x09aa, 0x09b0,
+0x09b2, 0x09b2,
+0x09b6, 0x09b9,
+0x09bd, 0x09bd,
+0x09ce, 0x09ce,
+0x09dc, 0x09dd,
+0x09df, 0x09e1,
+0x09f0, 0x09f1,
+0x0a05, 0x0a0a,
+0x0a0f, 0x0a10,
+0x0a13, 0x0a28,
+0x0a2a, 0x0a30,
+0x0a32, 0x0a33,
+0x0a35, 0x0a36,
+0x0a38, 0x0a39,
+0x0a59, 0x0a5c,
+0x0a5e, 0x0a5e,
+0x0a72, 0x0a74,
+0x0a85, 0x0a8d,
+0x0a8f, 0x0a91,
+0x0a93, 0x0aa8,
+0x0aaa, 0x0ab0,
+0x0ab2, 0x0ab3,
+0x0ab5, 0x0ab9,
+0x0abd, 0x0abd,
+0x0ad0, 0x0ad0,
+0x0ae0, 0x0ae1,
+0x0af9, 0x0af9,
+0x0b05, 0x0b0c,
+0x0b0f, 0x0b10,
+0x0b13, 0x0b28,
+0x0b2a, 0x0b30,
+0x0b32, 0x0b33,
+0x0b35, 0x0b39,
+0x0b3d, 0x0b3d,
+0x0b5c, 0x0b5d,
+0x0b5f, 0x0b61,
+0x0b71, 0x0b71,
+0x0b83, 0x0b83,
+0x0b85, 0x0b8a,
+0x0b8e, 0x0b90,
+0x0b92, 0x0b95,
+0x0b99, 0x0b9a,
+0x0b9c, 0x0b9c,
+0x0b9e, 0x0b9f,
+0x0ba3, 0x0ba4,
+0x0ba8, 0x0baa,
+0x0bae, 0x0bb9,
+0x0bd0, 0x0bd0,
+0x0c05, 0x0c0c,
+0x0c0e, 0x0c10,
+0x0c12, 0x0c28,
+0x0c2a, 0x0c39,
+0x0c3d, 0x0c3d,
+0x0c58, 0x0c5a,
+0x0c60, 0x0c61,
+0x0c85, 0x0c8c,
+0x0c8e, 0x0c90,
+0x0c92, 0x0ca8,
+0x0caa, 0x0cb3,
+0x0cb5, 0x0cb9,
+0x0cbd, 0x0cbd,
+0x0cde, 0x0cde,
+0x0ce0, 0x0ce1,
+0x0cf1, 0x0cf2,
+0x0d05, 0x0d0c,
+0x0d0e, 0x0d10,
+0x0d12, 0x0d3a,
+0x0d3d, 0x0d3d,
+0x0d4e, 0x0d4e,
+0x0d5f, 0x0d61,
+0x0d7a, 0x0d7f,
+0x0d85, 0x0d96,
+0x0d9a, 0x0db1,
+0x0db3, 0x0dbb,
+0x0dbd, 0x0dbd,
+0x0dc0, 0x0dc6,
+0x0e01, 0x0e30,
+0x0e32, 0x0e32,
+0x0e40, 0x0e46,
+0x0e81, 0x0e82,
+0x0e84, 0x0e84,
+0x0e87, 0x0e88,
+0x0e8a, 0x0e8a,
+0x0e8d, 0x0e8d,
+0x0e94, 0x0e97,
+0x0e99, 0x0e9f,
+0x0ea1, 0x0ea3,
+0x0ea5, 0x0ea5,
+0x0ea7, 0x0ea7,
+0x0eaa, 0x0eab,
+0x0ead, 0x0eb0,
+0x0eb2, 0x0eb2,
+0x0ebd, 0x0ebd,
+0x0ec0, 0x0ec4,
+0x0ec6, 0x0ec6,
+0x0edc, 0x0edf,
+0x0f00, 0x0f00,
+0x0f40, 0x0f47,
+0x0f49, 0x0f6c,
+0x0f88, 0x0f8c,
+0x1000, 0x102a,
+0x103f, 0x103f,
+0x1050, 0x1055,
+0x105a, 0x105d,
+0x1061, 0x1061,
+0x1065, 0x1066,
+0x106e, 0x1070,
+0x1075, 0x1081,
+0x108e, 0x108e,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x10d0, 0x10fa,
+0x10fc, 0x1248,
+0x124a, 0x124d,
+0x1250, 0x1256,
+0x1258, 0x1258,
+0x125a, 0x125d,
+0x1260, 0x1288,
+0x128a, 0x128d,
+0x1290, 0x12b0,
+0x12b2, 0x12b5,
+0x12b8, 0x12be,
+0x12c0, 0x12c0,
+0x12c2, 0x12c5,
+0x12c8, 0x12d6,
+0x12d8, 0x1310,
+0x1312, 0x1315,
+0x1318, 0x135a,
+0x1380, 0x138f,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0x1401, 0x166c,
+0x166f, 0x167f,
+0x1681, 0x169a,
+0x16a0, 0x16ea,
+0x16ee, 0x16f8,
+0x1700, 0x170c,
+0x170e, 0x1711,
+0x1720, 0x1731,
+0x1740, 0x1751,
+0x1760, 0x176c,
+0x176e, 0x1770,
+0x1780, 0x17b3,
+0x17d7, 0x17d7,
+0x17dc, 0x17dc,
+0x1820, 0x1877,
+0x1880, 0x18a8,
+0x18aa, 0x18aa,
+0x18b0, 0x18f5,
+0x1900, 0x191e,
+0x1950, 0x196d,
+0x1970, 0x1974,
+0x1980, 0x19ab,
+0x19b0, 0x19c9,
+0x1a00, 0x1a16,
+0x1a20, 0x1a54,
+0x1aa7, 0x1aa7,
+0x1b05, 0x1b33,
+0x1b45, 0x1b4b,
+0x1b83, 0x1ba0,
+0x1bae, 0x1baf,
+0x1bba, 0x1be5,
+0x1c00, 0x1c23,
+0x1c4d, 0x1c4f,
+0x1c5a, 0x1c7d,
+0x1ce9, 0x1cec,
+0x1cee, 0x1cf1,
+0x1cf5, 0x1cf6,
+0x1d00, 0x1dbf,
+0x1e00, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fe0, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffc,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2118, 0x211d,
+0x2124, 0x2124,
+0x2126, 0x2126,
+0x2128, 0x2128,
+0x212a, 0x2139,
+0x213c, 0x213f,
+0x2145, 0x2149,
+0x214e, 0x214e,
+0x2160, 0x2188,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x2c60, 0x2ce4,
+0x2ceb, 0x2cee,
+0x2cf2, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0x2d30, 0x2d67,
+0x2d6f, 0x2d6f,
+0x2d80, 0x2d96,
+0x2da0, 0x2da6,
+0x2da8, 0x2dae,
+0x2db0, 0x2db6,
+0x2db8, 0x2dbe,
+0x2dc0, 0x2dc6,
+0x2dc8, 0x2dce,
+0x2dd0, 0x2dd6,
+0x2dd8, 0x2dde,
+0x3005, 0x3007,
+0x3021, 0x3029,
+0x3031, 0x3035,
+0x3038, 0x303c,
+0x3041, 0x3096,
+0x309d, 0x309f,
+0x30a1, 0x30fa,
+0x30fc, 0x30ff,
+0x3105, 0x312d,
+0x3131, 0x318e,
+0x31a0, 0x31ba,
+0x31f0, 0x31ff,
+0x3400, 0x4db5,
+0x4e00, 0x9fd5,
+0xa000, 0xa48c,
+0xa4d0, 0xa4fd,
+0xa500, 0xa60c,
+0xa610, 0xa61f,
+0xa62a, 0xa62b,
+0xa640, 0xa66e,
+0xa67f, 0xa69d,
+0xa6a0, 0xa6ef,
+0xa717, 0xa71f,
+0xa722, 0xa788,
+0xa78b, 0xa7ad,
+0xa7b0, 0xa7b7,
+0xa7f7, 0xa801,
+0xa803, 0xa805,
+0xa807, 0xa80a,
+0xa80c, 0xa822,
+0xa840, 0xa873,
+0xa882, 0xa8b3,
+0xa8f2, 0xa8f7,
+0xa8fb, 0xa8fb,
+0xa8fd, 0xa8fd,
+0xa90a, 0xa925,
+0xa930, 0xa946,
+0xa960, 0xa97c,
+0xa984, 0xa9b2,
+0xa9cf, 0xa9cf,
+0xa9e0, 0xa9e4,
+0xa9e6, 0xa9ef,
+0xa9fa, 0xa9fe,
+0xaa00, 0xaa28,
+0xaa40, 0xaa42,
+0xaa44, 0xaa4b,
+0xaa60, 0xaa76,
+0xaa7a, 0xaa7a,
+0xaa7e, 0xaaaf,
+0xaab1, 0xaab1,
+0xaab5, 0xaab6,
+0xaab9, 0xaabd,
+0xaac0, 0xaac0,
+0xaac2, 0xaac2,
+0xaadb, 0xaadd,
+0xaae0, 0xaaea,
+0xaaf2, 0xaaf4,
+0xab01, 0xab06,
+0xab09, 0xab0e,
+0xab11, 0xab16,
+0xab20, 0xab26,
+0xab28, 0xab2e,
+0xab30, 0xab5a,
+0xab5c, 0xab65,
+0xab70, 0xabe2,
+0xac00, 0xd7a3,
+0xd7b0, 0xd7c6,
+0xd7cb, 0xd7fb,
+0xf900, 0xfa6d,
+0xfa70, 0xfad9,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xfb1d, 0xfb1d,
+0xfb1f, 0xfb28,
+0xfb2a, 0xfb36,
+0xfb38, 0xfb3c,
+0xfb3e, 0xfb3e,
+0xfb40, 0xfb41,
+0xfb43, 0xfb44,
+0xfb46, 0xfbb1,
+0xfbd3, 0xfc5d,
+0xfc64, 0xfd3d,
+0xfd50, 0xfd8f,
+0xfd92, 0xfdc7,
+0xfdf0, 0xfdf9,
+0xfe71, 0xfe71,
+0xfe73, 0xfe73,
+0xfe77, 0xfe77,
+0xfe79, 0xfe79,
+0xfe7b, 0xfe7b,
+0xfe7d, 0xfe7d,
+0xfe7f, 0xfefc,
+0xff21, 0xff3a,
+0xff41, 0xff5a,
+0xff66, 0xff9d,
+0xffa0, 0xffbe,
+0xffc2, 0xffc7,
+0xffca, 0xffcf,
+0xffd2, 0xffd7,
+0xffda, 0xffdc,
+0x10000, 0x1000b,
+0x1000d, 0x10026,
+0x10028, 0x1003a,
+0x1003c, 0x1003d,
+0x1003f, 0x1004d,
+0x10050, 0x1005d,
+0x10080, 0x100fa,
+0x10140, 0x10174,
+0x10280, 0x1029c,
+0x102a0, 0x102d0,
+0x10300, 0x1031f,
+0x10330, 0x1034a,
+0x10350, 0x10375,
+0x10380, 0x1039d,
+0x103a0, 0x103c3,
+0x103c8, 0x103cf,
+0x103d1, 0x103d5,
+0x10400, 0x1049d,
+0x10500, 0x10527,
+0x10530, 0x10563,
+0x10600, 0x10736,
+0x10740, 0x10755,
+0x10760, 0x10767,
+0x10800, 0x10805,
+0x10808, 0x10808,
+0x1080a, 0x10835,
+0x10837, 0x10838,
+0x1083c, 0x1083c,
+0x1083f, 0x10855,
+0x10860, 0x10876,
+0x10880, 0x1089e,
+0x108e0, 0x108f2,
+0x108f4, 0x108f5,
+0x10900, 0x10915,
+0x10920, 0x10939,
+0x10980, 0x109b7,
+0x109be, 0x109bf,
+0x10a00, 0x10a00,
+0x10a10, 0x10a13,
+0x10a15, 0x10a17,
+0x10a19, 0x10a33,
+0x10a60, 0x10a7c,
+0x10a80, 0x10a9c,
+0x10ac0, 0x10ac7,
+0x10ac9, 0x10ae4,
+0x10b00, 0x10b35,
+0x10b40, 0x10b55,
+0x10b60, 0x10b72,
+0x10b80, 0x10b91,
+0x10c00, 0x10c48,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x11003, 0x11037,
+0x11083, 0x110af,
+0x110d0, 0x110e8,
+0x11103, 0x11126,
+0x11150, 0x11172,
+0x11176, 0x11176,
+0x11183, 0x111b2,
+0x111c1, 0x111c4,
+0x111da, 0x111da,
+0x111dc, 0x111dc,
+0x11200, 0x11211,
+0x11213, 0x1122b,
+0x11280, 0x11286,
+0x11288, 0x11288,
+0x1128a, 0x1128d,
+0x1128f, 0x1129d,
+0x1129f, 0x112a8,
+0x112b0, 0x112de,
+0x11305, 0x1130c,
+0x1130f, 0x11310,
+0x11313, 0x11328,
+0x1132a, 0x11330,
+0x11332, 0x11333,
+0x11335, 0x11339,
+0x1133d, 0x1133d,
+0x11350, 0x11350,
+0x1135d, 0x11361,
+0x11480, 0x114af,
+0x114c4, 0x114c5,
+0x114c7, 0x114c7,
+0x11580, 0x115ae,
+0x115d8, 0x115db,
+0x11600, 0x1162f,
+0x11644, 0x11644,
+0x11680, 0x116aa,
+0x11700, 0x11719,
+0x118a0, 0x118df,
+0x118ff, 0x118ff,
+0x11ac0, 0x11af8,
+0x12000, 0x12399,
+0x12400, 0x1246e,
+0x12480, 0x12543,
+0x13000, 0x1342e,
+0x14400, 0x14646,
+0x16800, 0x16a38,
+0x16a40, 0x16a5e,
+0x16ad0, 0x16aed,
+0x16b00, 0x16b2f,
+0x16b40, 0x16b43,
+0x16b63, 0x16b77,
+0x16b7d, 0x16b8f,
+0x16f00, 0x16f44,
+0x16f50, 0x16f50,
+0x16f93, 0x16f9f,
+0x1b000, 0x1b001,
+0x1bc00, 0x1bc6a,
+0x1bc70, 0x1bc7c,
+0x1bc80, 0x1bc88,
+0x1bc90, 0x1bc99,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d6c0,
+0x1d6c2, 0x1d6da,
+0x1d6dc, 0x1d6fa,
+0x1d6fc, 0x1d714,
+0x1d716, 0x1d734,
+0x1d736, 0x1d74e,
+0x1d750, 0x1d76e,
+0x1d770, 0x1d788,
+0x1d78a, 0x1d7a8,
+0x1d7aa, 0x1d7c2,
+0x1d7c4, 0x1d7cb,
+0x1e800, 0x1e8c4,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+0x20000, 0x2a6d6,
+0x2a700, 0x2b734,
+0x2b740, 0x2b81d,
+0x2b820, 0x2cea1,
+0x2f800, 0x2fa1d,
+}; /* END of CR_XID_Start */
+
+/* PROPERTY: 'Yi': Script */
+static const OnigCodePoint
+CR_Yi[] = { 2,
+0xa000, 0xa48c,
+0xa490, 0xa4c6,
+}; /* END of CR_Yi */
+
+/* PROPERTY: 'Z': Major Category */
+static const OnigCodePoint
+CR_Z[] = { 8,
+0x0020, 0x0020,
+0x00a0, 0x00a0,
+0x1680, 0x1680,
+0x2000, 0x200a,
+0x2028, 0x2029,
+0x202f, 0x202f,
+0x205f, 0x205f,
+0x3000, 0x3000,
+}; /* END of CR_Z */
+
+/* PROPERTY: 'Zl': General Category */
+static const OnigCodePoint
+CR_Zl[] = { 1,
+0x2028, 0x2028,
+}; /* END of CR_Zl */
+
+/* PROPERTY: 'Zp': General Category */
+static const OnigCodePoint
+CR_Zp[] = { 1,
+0x2029, 0x2029,
+}; /* END of CR_Zp */
+
+/* PROPERTY: 'Zs': General Category */
+static const OnigCodePoint
+CR_Zs[] = { 7,
+0x0020, 0x0020,
+0x00a0, 0x00a0,
+0x1680, 0x1680,
+0x2000, 0x200a,
+0x202f, 0x202f,
+0x205f, 0x205f,
+0x3000, 0x3000,
+}; /* END of CR_Zs */
+
 /* PROPERTY: 'In_Basic_Latin': Block */
 #define CR_In_Basic_Latin CR_ASCII
 
@@ -22421,229 +22421,229 @@ const CodeRanges[] = {
   CR_Word,
   CR_Alnum,
   CR_ASCII,
+  CR_ASCII_Hex_Digit,
+  CR_Ahom,
+  CR_Alphabetic,
+  CR_Anatolian_Hieroglyphs,
   CR_Any,
+  CR_Arabic,
+  CR_Armenian,
   CR_Assigned,
+  CR_Avestan,
+  CR_Balinese,
+  CR_Bamum,
+  CR_Bassa_Vah,
+  CR_Batak,
+  CR_Bengali,
+  CR_Bidi_Control,
+  CR_Bopomofo,
+  CR_Brahmi,
+  CR_Braille,
+  CR_Buginese,
+  CR_Buhid,
   CR_C,
+  CR_Canadian_Aboriginal,
+  CR_Carian,
+  CR_Case_Ignorable,
+  CR_Cased,
+  CR_Caucasian_Albanian,
   CR_Cc,
   CR_Cf,
+  CR_Chakma,
+  CR_Cham,
+  CR_Changes_When_Casefolded,
+  CR_Changes_When_Casemapped,
+  CR_Changes_When_Lowercased,
+  CR_Changes_When_Titlecased,
+  CR_Changes_When_Uppercased,
+  CR_Cherokee,
   CR_Cn,
   CR_Co,
+  CR_Common,
+  CR_Coptic,
   CR_Cs,
+  CR_Cuneiform,
+  CR_Cypriot,
+  CR_Cyrillic,
+  CR_Dash,
+  CR_Default_Ignorable_Code_Point,
+  CR_Deprecated,
+  CR_Deseret,
+  CR_Devanagari,
+  CR_Diacritic,
+  CR_Duployan,
+  CR_Egyptian_Hieroglyphs,
+  CR_Elbasan,
+  CR_Ethiopic,
+  CR_Extender,
+  CR_Georgian,
+  CR_Glagolitic,
+  CR_Gothic,
+  CR_Grantha,
+  CR_Grapheme_Base,
+  CR_Grapheme_Extend,
+  CR_Grapheme_Link,
+  CR_Greek,
+  CR_Gujarati,
+  CR_Gurmukhi,
+  CR_Han,
+  CR_Hangul,
+  CR_Hanunoo,
+  CR_Hatran,
+  CR_Hebrew,
+  CR_Hex_Digit,
+  CR_Hiragana,
+  CR_Hyphen,
+  CR_IDS_Binary_Operator,
+  CR_IDS_Trinary_Operator,
+  CR_ID_Continue,
+  CR_ID_Start,
+  CR_Ideographic,
+  CR_Imperial_Aramaic,
+  CR_Inherited,
+  CR_Inscriptional_Pahlavi,
+  CR_Inscriptional_Parthian,
+  CR_Javanese,
+  CR_Join_Control,
+  CR_Kaithi,
+  CR_Kannada,
+  CR_Katakana,
+  CR_Kayah_Li,
+  CR_Kharoshthi,
+  CR_Khmer,
+  CR_Khojki,
+  CR_Khudawadi,
   CR_L,
   CR_LC,
+  CR_Lao,
+  CR_Latin,
+  CR_Lepcha,
+  CR_Limbu,
+  CR_Linear_A,
+  CR_Linear_B,
+  CR_Lisu,
   CR_Ll,
   CR_Lm,
   CR_Lo,
+  CR_Logical_Order_Exception,
+  CR_Lowercase,
   CR_Lt,
   CR_Lu,
+  CR_Lycian,
+  CR_Lydian,
   CR_M,
+  CR_Mahajani,
+  CR_Malayalam,
+  CR_Mandaic,
+  CR_Manichaean,
+  CR_Math,
   CR_Mc,
   CR_Me,
+  CR_Meetei_Mayek,
+  CR_Mende_Kikakui,
+  CR_Meroitic_Cursive,
+  CR_Meroitic_Hieroglyphs,
+  CR_Miao,
   CR_Mn,
+  CR_Modi,
+  CR_Mongolian,
+  CR_Mro,
+  CR_Multani,
+  CR_Myanmar,
   CR_N,
+  CR_Nabataean,
   CR_Nd,
+  CR_New_Tai_Lue,
+  CR_Nko,
   CR_Nl,
   CR_No,
+  CR_Noncharacter_Code_Point,
+  CR_Ogham,
+  CR_Ol_Chiki,
+  CR_Old_Hungarian,
+  CR_Old_Italic,
+  CR_Old_North_Arabian,
+  CR_Old_Permic,
+  CR_Old_Persian,
+  CR_Old_South_Arabian,
+  CR_Old_Turkic,
+  CR_Oriya,
+  CR_Osmanya,
+  CR_Other_Alphabetic,
+  CR_Other_Default_Ignorable_Code_Point,
+  CR_Other_Grapheme_Extend,
+  CR_Other_ID_Continue,
+  CR_Other_ID_Start,
+  CR_Other_Lowercase,
+  CR_Other_Math,
+  CR_Other_Uppercase,
   CR_P,
+  CR_Pahawh_Hmong,
+  CR_Palmyrene,
+  CR_Pattern_Syntax,
+  CR_Pattern_White_Space,
+  CR_Pau_Cin_Hau,
   CR_Pc,
   CR_Pd,
   CR_Pe,
   CR_Pf,
+  CR_Phags_Pa,
+  CR_Phoenician,
   CR_Pi,
   CR_Po,
   CR_Ps,
+  CR_Psalter_Pahlavi,
+  CR_Quotation_Mark,
+  CR_Radical,
+  CR_Rejang,
+  CR_Runic,
   CR_S,
+  CR_STerm,
+  CR_Samaritan,
+  CR_Saurashtra,
   CR_Sc,
+  CR_Sharada,
+  CR_Shavian,
+  CR_Siddham,
+  CR_SignWriting,
+  CR_Sinhala,
   CR_Sk,
   CR_Sm,
   CR_So,
-  CR_Z,
-  CR_Zl,
-  CR_Zp,
-  CR_Zs,
-  CR_Math,
-  CR_Alphabetic,
-  CR_Lowercase,
-  CR_Uppercase,
-  CR_Cased,
-  CR_Case_Ignorable,
-  CR_Changes_When_Lowercased,
-  CR_Changes_When_Uppercased,
-  CR_Changes_When_Titlecased,
-  CR_Changes_When_Casefolded,
-  CR_Changes_When_Casemapped,
-  CR_ID_Start,
-  CR_ID_Continue,
-  CR_XID_Start,
-  CR_XID_Continue,
-  CR_Default_Ignorable_Code_Point,
-  CR_Grapheme_Extend,
-  CR_Grapheme_Base,
-  CR_Grapheme_Link,
-  CR_Common,
-  CR_Latin,
-  CR_Greek,
-  CR_Cyrillic,
-  CR_Armenian,
-  CR_Hebrew,
-  CR_Arabic,
+  CR_Soft_Dotted,
+  CR_Sora_Sompeng,
+  CR_Sundanese,
+  CR_Syloti_Nagri,
   CR_Syriac,
-  CR_Thaana,
-  CR_Devanagari,
-  CR_Bengali,
-  CR_Gurmukhi,
-  CR_Gujarati,
-  CR_Oriya,
-  CR_Tamil,
-  CR_Telugu,
-  CR_Kannada,
-  CR_Malayalam,
-  CR_Sinhala,
-  CR_Thai,
-  CR_Lao,
-  CR_Tibetan,
-  CR_Myanmar,
-  CR_Georgian,
-  CR_Hangul,
-  CR_Ethiopic,
-  CR_Cherokee,
-  CR_Canadian_Aboriginal,
-  CR_Ogham,
-  CR_Runic,
-  CR_Khmer,
-  CR_Mongolian,
-  CR_Hiragana,
-  CR_Katakana,
-  CR_Bopomofo,
-  CR_Han,
-  CR_Yi,
-  CR_Old_Italic,
-  CR_Gothic,
-  CR_Deseret,
-  CR_Inherited,
   CR_Tagalog,
-  CR_Hanunoo,
-  CR_Buhid,
   CR_Tagbanwa,
-  CR_Limbu,
   CR_Tai_Le,
-  CR_Linear_B,
-  CR_Ugaritic,
-  CR_Shavian,
-  CR_Osmanya,
-  CR_Cypriot,
-  CR_Braille,
-  CR_Buginese,
-  CR_Coptic,
-  CR_New_Tai_Lue,
-  CR_Glagolitic,
-  CR_Tifinagh,
-  CR_Syloti_Nagri,
-  CR_Old_Persian,
-  CR_Kharoshthi,
-  CR_Balinese,
-  CR_Cuneiform,
-  CR_Phoenician,
-  CR_Phags_Pa,
-  CR_Nko,
-  CR_Sundanese,
-  CR_Lepcha,
-  CR_Ol_Chiki,
-  CR_Vai,
-  CR_Saurashtra,
-  CR_Kayah_Li,
-  CR_Rejang,
-  CR_Lycian,
-  CR_Carian,
-  CR_Lydian,
-  CR_Cham,
   CR_Tai_Tham,
   CR_Tai_Viet,
-  CR_Avestan,
-  CR_Egyptian_Hieroglyphs,
-  CR_Samaritan,
-  CR_Lisu,
-  CR_Bamum,
-  CR_Javanese,
-  CR_Meetei_Mayek,
-  CR_Imperial_Aramaic,
-  CR_Old_South_Arabian,
-  CR_Inscriptional_Parthian,
-  CR_Inscriptional_Pahlavi,
-  CR_Old_Turkic,
-  CR_Kaithi,
-  CR_Batak,
-  CR_Brahmi,
-  CR_Mandaic,
-  CR_Chakma,
-  CR_Meroitic_Cursive,
-  CR_Meroitic_Hieroglyphs,
-  CR_Miao,
-  CR_Sharada,
-  CR_Sora_Sompeng,
   CR_Takri,
-  CR_Caucasian_Albanian,
-  CR_Bassa_Vah,
-  CR_Duployan,
-  CR_Elbasan,
-  CR_Grantha,
-  CR_Pahawh_Hmong,
-  CR_Khojki,
-  CR_Linear_A,
-  CR_Mahajani,
-  CR_Manichaean,
-  CR_Mende_Kikakui,
-  CR_Modi,
-  CR_Mro,
-  CR_Old_North_Arabian,
-  CR_Nabataean,
-  CR_Palmyrene,
-  CR_Pau_Cin_Hau,
-  CR_Old_Permic,
-  CR_Psalter_Pahlavi,
-  CR_Siddham,
-  CR_Khudawadi,
-  CR_Tirhuta,
-  CR_Warang_Citi,
-  CR_Ahom,
-  CR_Anatolian_Hieroglyphs,
-  CR_Hatran,
-  CR_Multani,
-  CR_Old_Hungarian,
-  CR_SignWriting,
-  CR_White_Space,
-  CR_Bidi_Control,
-  CR_Join_Control,
-  CR_Dash,
-  CR_Hyphen,
-  CR_Quotation_Mark,
+  CR_Tamil,
+  CR_Telugu,
   CR_Terminal_Punctuation,
-  CR_Other_Math,
-  CR_Hex_Digit,
-  CR_ASCII_Hex_Digit,
-  CR_Other_Alphabetic,
-  CR_Ideographic,
-  CR_Diacritic,
-  CR_Extender,
-  CR_Other_Lowercase,
-  CR_Other_Uppercase,
-  CR_Noncharacter_Code_Point,
-  CR_Other_Grapheme_Extend,
-  CR_IDS_Binary_Operator,
-  CR_IDS_Trinary_Operator,
-  CR_Radical,
+  CR_Thaana,
+  CR_Thai,
+  CR_Tibetan,
+  CR_Tifinagh,
+  CR_Tirhuta,
+  CR_Ugaritic,
   CR_Unified_Ideograph,
-  CR_Other_Default_Ignorable_Code_Point,
-  CR_Deprecated,
-  CR_Soft_Dotted,
-  CR_Logical_Order_Exception,
-  CR_Other_ID_Start,
-  CR_Other_ID_Continue,
-  CR_STerm,
-  CR_Variation_Selector,
-  CR_Pattern_White_Space,
-  CR_Pattern_Syntax,
   CR_Unknown,
+  CR_Uppercase,
+  CR_Vai,
+  CR_Variation_Selector,
+  CR_Warang_Citi,
+  CR_White_Space,
+  CR_XID_Continue,
+  CR_XID_Start,
+  CR_Yi,
+  CR_Z,
+  CR_Zl,
+  CR_Zp,
+  CR_Zs,
   CR_In_Basic_Latin,
   CR_In_Latin_1_Supplement,
   CR_In_Latin_Extended_A,
@@ -23000,7 +23000,7 @@ hash (register const char *str, register unsigned int len)
       5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
       5163, 5163, 5163, 5163, 5163, 5163
     };
-  register unsigned int hval = len;
+  register int hval = len;
 
   switch (hval)
     {
@@ -23038,6 +23038,12 @@ hash (register const char *str, register unsigned int len)
   return hval + asso_values[(unsigned char)str[len - 1]];
 }
 
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
 const struct PropertyNameCtype *
 unicode_lookup_property_name (register const char *str, register unsigned int len)
 {
@@ -23045,55 +23051,55 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
     {
       {""},
 
-      {"n",                                   34},
+      {"n",                                  144},
       {""},
 
-      {"z",                                   51},
+      {"z",                                  234},
       {""}, {""}, {""}, {""},
 
-      {"zzzz",                               237},
+      {"zzzz",                               225},
 
-      {"mn",                                  33},
+      {"mn",                                 138},
 
-      {"cn",                                  20},
+      {"cn",                                  51},
       {""}, {""}, {""},
 
-      {"ci",                                  60},
+      {"ci",                                  38},
 
-      {"m",                                   30},
+      {"m",                                  125},
       {""},
 
-      {"c",                                   17},
+      {"c",                                   35},
       {""}, {""}, {""}, {""}, {""},
 
       {"inmanichaean",                       430},
 
-      {"mani",                               185},
+      {"mani",                               129},
 
-      {"mc",                                  31},
+      {"mc",                                 131},
 
-      {"cc",                                  18},
+      {"cc",                                  41},
       {""},
 
-      {"qaai",                               114},
+      {"qaai",                                94},
       {""}, {""}, {""}, {""}, {""},
 
-      {"qaac",                               128},
+      {"qaac",                                54},
       {""}, {""}, {""}, {""}, {""}, {""},
 
       {"incham",                             373},
       {""}, {""}, {""}, {""},
 
-      {"mandaic",                            168},
+      {"mandaic",                            128},
       {""}, {""},
 
-      {"sm",                                  49},
+      {"sm",                                 202},
       {""},
 
-      {"sc",                                  47},
+      {"sc",                                 195},
       {""}, {""}, {""}, {""},
 
-      {"cans",                               101},
+      {"cans",                                36},
       {""}, {""}, {""}, {""},
 
       {"ascii",                               14},
@@ -23104,17 +23110,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
 
       {"incuneiform",                        456},
 
-      {"s",                                   46},
+      {"s",                                  191},
 
       {"inarmenian",                         248},
 
-      {"zs",                                  54},
+      {"zs",                                 237},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"cs",                                  22},
+      {"cs",                                  55},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"me",                                  32},
+      {"me",                                 132},
       {""}, {""}, {""}, {""},
 
       {"incommonindicnumberforms",           364},
@@ -23128,7 +23134,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inipaextensions",                    242},
       {""}, {""}, {""}, {""},
 
-      {"initialpunctuation",                  43},
+      {"initialpunctuation",                 183},
       {""}, {""}, {""},
 
       {"inancientsymbols",                   402},
@@ -23137,13 +23143,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inthaana",                           253},
       {""},
 
-      {"cf",                                  19},
+      {"cf",                                  42},
       {""},
 
       {"incuneiformnumbersandpunctuation",   457},
       {""}, {""}, {""},
 
-      {"mtei",                               159},
+      {"mtei",                               133},
       {""},
 
       {"inspecials",                         397},
@@ -23155,17 +23161,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inmiscellaneousmathematicalsymbolsa", 323},
       {""}, {""}, {""},
 
-      {"lm",                                  26},
+      {"lm",                                 117},
 
-      {"lina",                               183},
+      {"lina",                               113},
 
-      {"lc",                                  24},
+      {"lc",                                 108},
       {""},
 
       {"inlycian",                           404},
       {""}, {""}, {""}, {""}, {""},
 
-      {"lana",                               151},
+      {"lana",                               212},
       {""},
 
       {"intaixuanjingsymbols",               472},
@@ -23175,14 +23181,14 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"alnum",                               13},
       {""},
 
-      {"sterm",                              233},
+      {"sterm",                              192},
 
       {"intaitham",                          292},
 
       {"intransportandmapsymbols",           486},
       {""},
 
-      {"taile",                              120},
+      {"taile",                              211},
       {""},
 
       {"inmalayalam",                        266},
@@ -23201,20 +23207,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inmiscellaneoussymbolsandpictographs", 483},
       {""}, {""},
 
-      {"sinhala",                             92},
+      {"sinhala",                            200},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"taiviet",                            152},
+      {"taiviet",                            213},
       {""}, {""},
 
-      {"ext",                                218},
+      {"ext",                                 69},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"latn",                                75},
+      {"latn",                               110},
 
-      {"latin",                               75},
+      {"latin",                              110},
 
-      {"ital",                               111},
+      {"ital",                               155},
 
       {"intamil",                            263},
       {""},
@@ -23222,7 +23228,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inmultani",                          446},
       {""},
 
-      {"taml",                                88},
+      {"taml",                               215},
       {""}, {""}, {""}, {""}, {""}, {""},
 
       {"inrunic",                            279},
@@ -23230,17 +23236,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"incarian",                           405},
       {""},
 
-      {"armn",                                78},
+      {"armn",                                21},
       {""},
 
-      {"armi",                               160},
+      {"armi",                                93},
 
-      {"cari",                               148},
+      {"cari",                                37},
 
       {"inlatinextendedc",                   331},
       {""},
 
-      {"armenian",                            78},
+      {"armenian",                            21},
 
       {"inmyanmar",                          271},
 
@@ -23250,40 +23256,40 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inlatinextendeda",                   240},
       {""}, {""}, {""},
 
-      {"carian",                             148},
+      {"carian",                              37},
       {""}, {""},
 
       {"intaile",                            288},
       {""}, {""}, {""},
 
-      {"tale",                               120},
+      {"tale",                               211},
       {""}, {""},
 
-      {"arabic",                              80},
+      {"arabic",                              20},
       {""}, {""},
 
-      {"l",                                   23},
+      {"l",                                  107},
 
-      {"nl",                                  36},
+      {"nl",                                 149},
 
-      {"zl",                                  52},
+      {"zl",                                 235},
       {""},
 
       {"insyriac",                           251},
       {""},
 
-      {"samr",                               155},
+      {"samr",                               193},
       {""},
 
-      {"merc",                               170},
+      {"merc",                               135},
       {""},
 
       {"inlinearbideograms",                 399},
       {""}, {""},
 
-      {"samaritan",                          155},
+      {"samaritan",                          193},
 
-      {"lt",                                  28},
+      {"lt",                                 121},
       {""}, {""},
 
       {"insharada",                          443},
@@ -23295,12 +23301,12 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inruminumeralsymbols",               437},
       {""}, {""},
 
-      {"miao",                               172},
+      {"miao",                               137},
 
       {"inlatinextendede",                   378},
       {""}, {""}, {""},
 
-      {"zinh",                               114},
+      {"zinh",                                94},
       {""}, {""}, {""},
 
       {"inahom",                             453},
@@ -23308,10 +23314,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
 
       {"incherokee",                         276},
 
-      {"han",                                109},
+      {"han",                                 80},
       {""}, {""},
 
-      {"hani",                               109},
+      {"hani",                                80},
 
       {"inosmanya",                          414},
 
@@ -23319,94 +23325,94 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
 
-      {"cham",                               150},
+      {"cham",                                44},
       {""},
 
       {"inmahajani",                         442},
 
-      {"osma",                               124},
+      {"osma",                               162},
       {""}, {""},
 
-      {"manichaean",                         185},
+      {"manichaean",                         129},
 
-      {"term",                               211},
+      {"term",                               217},
       {""},
 
-      {"sinh",                                92},
+      {"sinh",                               200},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
       {"cntrl",                                3},
       {""}, {""}, {""}, {""},
 
-      {"chakma",                             169},
+      {"chakma",                              43},
 
       {"insinhala",                          267},
       {""}, {""}, {""},
 
-      {"tamil",                               88},
+      {"tamil",                              215},
 
       {"inethiopic",                         274},
       {""}, {""},
 
-      {"connectorpunctuation",                39},
+      {"connectorpunctuation",               177},
 
-      {"shavian",                            123},
+      {"shavian",                            197},
       {""}, {""}, {""},
 
-      {"joinc",                              207},
+      {"joinc",                               98},
 
       {"inenclosedalphanumerics",            317},
       {""}, {""}, {""}, {""}, {""},
 
-      {"ahex",                               214},
+      {"ahex",                                15},
 
       {"inlatinextendedadditional",          304},
 
-      {"lineara",                            183},
+      {"lineara",                            113},
       {""}, {""}, {""}, {""}, {""}, {""},
 
       {"inenclosedcjklettersandmonths",      350},
 
-      {"hex",                                213},
+      {"hex",                                 85},
       {""}, {""},
 
-      {"thai",                                93},
+      {"thai",                               219},
 
-      {"mahj",                               184},
+      {"mahj",                               126},
       {""}, {""}, {""},
 
-      {"math",                                55},
+      {"math",                               130},
       {""}, {""},
 
-      {"ll",                                  25},
+      {"ll",                                 116},
 
-      {"thaa",                                82},
+      {"thaa",                               218},
       {""},
 
-      {"hatran",                             201},
+      {"hatran",                              83},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"mahajani",                           184},
+      {"mahajani",                           126},
 
       {"insinhalaarchaicnumbers",            444},
       {""},
 
-      {"taitham",                            151},
+      {"taitham",                            212},
 
-      {"thaana",                              82},
+      {"thaana",                             218},
       {""}, {""}, {""}, {""},
 
-      {"ethi",                                99},
+      {"ethi",                                68},
 
       {"inenclosedalphanumericsupplement",   481},
       {""}, {""}, {""}, {""},
 
-      {"meroiticcursive",                    170},
+      {"meroiticcursive",                    135},
 
       {"inideographicdescriptioncharacters", 340},
       {""}, {""}, {""},
 
-      {"terminalpunctuation",                211},
+      {"terminalpunctuation",                217},
       {""}, {""}, {""}, {""}, {""}, {""},
 
       {"inemoticons",                        484},
@@ -23415,10 +23421,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"intifinagh",                         334},
       {""},
 
-      {"asciihexdigit",                      214},
+      {"asciihexdigit",                       15},
       {""}, {""}, {""}, {""},
 
-      {"tifinagh",                           131},
+      {"tifinagh",                           221},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""},
 
@@ -23430,26 +23436,26 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""},
 
-      {"loe",                                230},
+      {"loe",                                119},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"titlecaseletter",                     28},
+      {"titlecaseletter",                    121},
       {""}, {""},
 
-      {"inscriptionalparthian",              162},
+      {"inscriptionalparthian",               96},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""},
 
-      {"oriya",                               87},
+      {"oriya",                              161},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"hira",                               106},
+      {"hira",                                86},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"sora",                               174},
+      {"sora",                               205},
 
-      {"mero",                               171},
+      {"mero",                               136},
       {""}, {""}, {""}, {""},
 
       {"inarrows",                           312},
@@ -23458,7 +23464,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inhiragana",                         342},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"no",                                  37},
+      {"no",                                 150},
 
       {"inmahjongtiles",                     478},
       {""}, {""}, {""},
@@ -23466,45 +23472,45 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"innko",                              254},
       {""}, {""},
 
-      {"co",                                  21},
+      {"co",                                  52},
 
-      {"cher",                               100},
+      {"cher",                                50},
       {""}, {""},
 
       {"inmro",                              462},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"common",                              74},
+      {"common",                              53},
 
-      {"cwcm",                                65},
+      {"cwcm",                                46},
       {""}, {""}, {""},
 
       {"inmiao",                             465},
       {""}, {""}, {""}, {""},
 
-      {"inscriptionalpahlavi",               163},
+      {"inscriptionalpahlavi",                95},
       {""}, {""},
 
       {"inmathematicalalphanumericsymbols",  474},
 
-      {"so",                                  50},
+      {"so",                                 203},
       {""},
 
-      {"hano",                               116},
+      {"hano",                                82},
 
-      {"tirh",                               197},
+      {"tirh",                               222},
       {""}, {""}, {""},
 
       {"inhatran",                           422},
 
       {"inolchiki",                          298},
 
-      {"ahom",                               199},
+      {"ahom",                                16},
       {""},
 
-      {"di",                                  70},
+      {"di",                                  60},
 
-      {"hatr",                               201},
+      {"hatr",                                83},
       {""},
 
       {"inogham",                            278},
@@ -23516,41 +23522,41 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inmodi",                             451},
       {""},
 
-      {"idc",                                 67},
+      {"idc",                                 90},
 
-      {"mand",                               168},
+      {"mand",                               128},
       {""}, {""}, {""},
 
       {"inmandaic",                          256},
 
-      {"dia",                                217},
+      {"dia",                                 64},
 
-      {"cwcf",                                64},
+      {"cwcf",                                45},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"xidc",                                69},
+      {"xidc",                               231},
       {""}, {""},
 
-      {"sind",                               196},
+      {"sind",                               106},
 
       {"newline",                              0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"mend",                               186},
+      {"mend",                               134},
       {""}, {""}, {""},
 
-      {"newtailue",                          129},
+      {"newtailue",                          147},
       {""}, {""},
 
       {"inshorthandformatcontrols",          468},
       {""}, {""}, {""},
 
-      {"anatolianhieroglyphs",               200},
+      {"anatolianhieroglyphs",                18},
 
-      {"xids",                                68},
+      {"xids",                               232},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"ids",                                 66},
+      {"ids",                                 91},
       {""}, {""}, {""}, {""}, {""},
 
       {"innewtailue",                        289},
@@ -23561,7 +23567,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"insundanese",                        295},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"lo",                                  27},
+      {"lo",                                 118},
       {""}, {""}, {""},
 
       {"indominotiles",                      479},
@@ -23569,28 +23575,28 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inlao",                              269},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"lao",                                 94},
+      {"lao",                                109},
 
-      {"laoo",                                94},
+      {"laoo",                               109},
 
-      {"mongolian",                          105},
+      {"mongolian",                          140},
       {""}, {""},
 
-      {"cwt",                                 63},
+      {"cwt",                                 48},
       {""},
 
-      {"idst",                               224},
+      {"idst",                                89},
 
-      {"format",                              19},
+      {"format",                              42},
       {""}, {""},
 
-      {"lineseparator",                       52},
+      {"lineseparator",                      235},
       {""}, {""}, {""}, {""}, {""},
 
-      {"letter",                              23},
+      {"letter",                             107},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"idcontinue",                          67},
+      {"idcontinue",                          90},
       {""}, {""},
 
       {"inanatolianhieroglyphs",             460},
@@ -23599,20 +23605,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inlydian",                           424},
       {""},
 
-      {"pi",                                  43},
+      {"pi",                                 183},
 
-      {"nchar",                              221},
+      {"nchar",                              151},
       {""}, {""}, {""}, {""},
 
       {"inspacingmodifierletters",           243},
 
-      {"oalpha",                             215},
+      {"oalpha",                             163},
       {""}, {""},
 
       {"indeseret",                          412},
       {""},
 
-      {"pc",                                  39},
+      {"pc",                                 177},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
@@ -23621,183 +23627,183 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
 
       {"inphaistosdisc",                     403},
 
-      {"joincontrol",                        207},
+      {"joincontrol",                         98},
 
       {"inlowsurrogates",                    385},
       {""},
 
-      {"mro",                                188},
+      {"mro",                                141},
 
-      {"mroo",                               188},
+      {"mroo",                               141},
       {""}, {""}, {""},
 
-      {"xidstart",                            68},
+      {"xidstart",                           232},
       {""}, {""}, {""}, {""}, {""},
 
-      {"wara",                               198},
+      {"wara",                               229},
       {""}, {""},
 
       {"inwarangciti",                       454},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
 
-      {"ps",                                  45},
+      {"ps",                                 185},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"pe",                                  41},
+      {"pe",                                 179},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"cwl",                                 61},
+      {"cwl",                                 47},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
       {"incoptic",                           332},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"diacritic",                          217},
+      {"diacritic",                           64},
       {""}, {""},
 
-      {"pf",                                  42},
+      {"pf",                                 180},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
       {"space",                                9},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"hanunoo",                            116},
+      {"hanunoo",                             82},
       {""}, {""},
 
       {"incyrillicextendeda",                336},
       {""}, {""}, {""},
 
-      {"odi",                                227},
+      {"odi",                                164},
       {""}, {""}, {""}, {""}, {""},
 
-      {"modi",                               187},
+      {"modi",                               139},
 
-      {"oidc",                               232},
+      {"oidc",                               166},
 
       {"incopticepactnumbers",               406},
       {""},
 
-      {"palm",                               191},
+      {"palm",                               173},
 
       {"insundanesesupplement",              299},
 
-      {"patws",                              235},
+      {"patws",                              175},
       {""}, {""}, {""},
 
       {"inolditalic",                        407},
 
       {"inlepcha",                           297},
 
-      {"shaw",                               123},
+      {"shaw",                               197},
       {""},
 
-      {"omath",                              212},
+      {"omath",                              169},
       {""}, {""}, {""}, {""}, {""},
 
       {"alpha",                                1},
       {""}, {""}, {""}, {""}, {""},
 
-      {"oids",                               231},
+      {"oids",                               167},
       {""}, {""}, {""},
 
-      {"control",                             18},
+      {"control",                             41},
 
-      {"ideo",                               216},
+      {"ideo",                                92},
 
-      {"lepc",                               141},
+      {"lepc",                               111},
 
-      {"psalterpahlavi",                     194},
+      {"psalterpahlavi",                     186},
 
-      {"dsrt",                               113},
+      {"dsrt",                                62},
       {""},
 
-      {"otheridcontinue",                    232},
+      {"otheridcontinue",                    166},
       {""}, {""}, {""},
 
       {"inpalmyrene",                        420},
 
-      {"decimalnumber",                       35},
+      {"decimalnumber",                      146},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"noncharactercodepoint",              221},
+      {"noncharactercodepoint",              151},
 
-      {"idstart",                             66},
+      {"idstart",                             91},
 
-      {"otheralphabetic",                    215},
+      {"otheralphabetic",                    163},
 
-      {"letternumber",                        36},
+      {"letternumber",                       149},
       {""}, {""}, {""}, {""},
 
-      {"dash",                               208},
+      {"dash",                                59},
       {""}, {""},
 
-      {"xidcontinue",                         69},
+      {"xidcontinue",                        231},
       {""}, {""}, {""},
 
-      {"finalpunctuation",                    42},
+      {"finalpunctuation",                   180},
 
-      {"extender",                           218},
+      {"extender",                            69},
       {""}, {""}, {""},
 
-      {"siddham",                            195},
+      {"siddham",                            198},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
       {"inoldturkic",                        435},
       {""}, {""},
 
-      {"sharada",                            173},
+      {"sharada",                            196},
       {""}, {""},
 
-      {"whitespace",                         205},
+      {"whitespace",                         230},
       {""}, {""}, {""}, {""},
 
       {"inmodifiertoneletters",              361},
       {""},
 
-      {"radical",                            225},
+      {"radical",                            188},
       {""},
 
-      {"canadianaboriginal",                 101},
+      {"canadianaboriginal",                  36},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
       {"inethiopicextendeda",                377},
 
-      {"imperialaramaic",                    160},
+      {"imperialaramaic",                     93},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"perm",                               193},
+      {"perm",                               157},
 
-      {"deseret",                            113},
+      {"deseret",                             62},
       {""}, {""}, {""}, {""},
 
-      {"casedletter",                         24},
+      {"casedletter",                        108},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""},
 
       {"inimperialaramaic",                  419},
       {""}, {""},
 
-      {"otheridstart",                       231},
+      {"otheridstart",                       167},
       {""}, {""}, {""}, {""},
 
-      {"prti",                               162},
+      {"prti",                                96},
       {""}, {""}, {""}, {""}, {""},
 
-      {"cprt",                               125},
+      {"cprt",                                57},
       {""}, {""}, {""}, {""}, {""},
 
-      {"othersymbol",                         50},
+      {"othersymbol",                        203},
       {""}, {""}, {""},
 
-      {"coptic",                             128},
+      {"coptic",                              54},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""},
 
-      {"otherlowercase",                     219},
+      {"otherlowercase",                     168},
 
-      {"phnx",                               137},
+      {"phnx",                               182},
       {""}, {""}, {""},
 
       {"inphoenician",                       423},
@@ -23808,35 +23814,35 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inlatin1supplement",                 239},
       {""}, {""}, {""},
 
-      {"xpeo",                               133},
+      {"xpeo",                               158},
       {""}, {""}, {""},
 
       {"ininscriptionalparthian",            432},
 
       {"ininscriptionalpahlavi",             433},
 
-      {"other",                               17},
+      {"other",                               35},
 
-      {"privateuse",                          21},
+      {"privateuse",                          52},
       {""}, {""}, {""}, {""},
 
-      {"othernumber",                         37},
+      {"othernumber",                        150},
       {""}, {""}, {""}, {""},
 
       {"inenclosedideographicsupplement",    482},
       {""},
 
-      {"copt",                               128},
+      {"copt",                                54},
       {""}, {""}, {""}, {""},
 
       {"print",                                7},
       {""},
 
-      {"cuneiform",                          136},
+      {"cuneiform",                           56},
 
-      {"olditalic",                          111},
+      {"olditalic",                          155},
 
-      {"xsux",                               136},
+      {"xsux",                                56},
       {""}, {""}, {""},
 
       {"inmongolian",                        285},
@@ -23844,28 +23850,28 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
 
       {"inancientgreekmusicalnotation",      471},
 
-      {"sundanese",                          140},
+      {"sundanese",                          206},
 
       {"inoldnortharabian",                  429},
       {""},
 
-      {"patternsyntax",                      236},
+      {"patternsyntax",                      174},
       {""}, {""},
 
-      {"inherited",                          114},
+      {"inherited",                           94},
 
       {"ingrantha",                          448},
 
       {"inphoneticextensions",               301},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"saurashtra",                         144},
+      {"saurashtra",                         194},
       {""}, {""}, {""}, {""}, {""},
 
       {"inancientgreeknumbers",              401},
       {""}, {""}, {""}, {""}, {""},
 
-      {"shrd",                               173},
+      {"shrd",                               196},
       {""}, {""}, {""},
 
       {"inoldsoutharabian",                  428},
@@ -23874,10 +23880,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
 
       {"inalphabeticpresentationforms",      388},
 
-      {"spaceseparator",                      54},
+      {"spaceseparator",                     237},
       {""}, {""}, {""}, {""}, {""},
 
-      {"olower",                             219},
+      {"olower",                             168},
       {""},
 
       {"ingeneralpunctuation",               306},
@@ -23885,30 +23891,30 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inunifiedcanadianaboriginalsyllabics", 277},
       {""},
 
-      {"bamum",                              157},
+      {"bamum",                               25},
       {""}, {""},
 
       {"inarabic",                           250},
       {""}, {""}, {""},
 
-      {"phli",                               163},
+      {"phli",                                95},
 
       {"inphoneticextensionssupplement",     302},
       {""},
 
-      {"patternwhitespace",                  235},
+      {"patternwhitespace",                  175},
       {""},
 
       {"inbasiclatin",                       238},
       {""},
 
-      {"othermath",                          212},
+      {"othermath",                          169},
 
-      {"idsbinaryoperator",                  223},
+      {"idsbinaryoperator",                   88},
 
       {"inmathematicaloperators",            313},
 
-      {"multani",                            202},
+      {"multani",                            142},
 
       {"ingujarati",                         261},
       {""}, {""}, {""}, {""},
@@ -23919,113 +23925,113 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
 
       {"innumberforms",                      311},
 
-      {"nd",                                  35},
+      {"nd",                                 146},
       {""},
 
-      {"yi",                                 110},
+      {"yi",                                 233},
 
-      {"lisu",                               156},
+      {"lisu",                               115},
       {""}, {""},
 
-      {"yiii",                               110},
+      {"yiii",                               233},
       {""},
 
       {"inpsalterpahlavi",                   434},
       {""}, {""}, {""},
 
-      {"tagbanwa",                           118},
+      {"tagbanwa",                           210},
       {""}, {""}, {""}, {""}, {""},
 
-      {"bass",                               177},
+      {"bass",                                26},
       {""}, {""}, {""}, {""},
 
-      {"nbat",                               190},
+      {"nbat",                               145},
 
       {"inbyzantinemusicalsymbols",          469},
       {""},
 
-      {"closepunctuation",                    41},
+      {"closepunctuation",                   179},
       {""},
 
-      {"tfng",                               131},
+      {"tfng",                               221},
 
-      {"otherletter",                         27},
+      {"otherletter",                        118},
       {""}, {""}, {""},
 
-      {"sd",                                 229},
+      {"sd",                                 204},
       {""}, {""},
 
-      {"lowercase",                           57},
+      {"lowercase",                          120},
 
-      {"sidd",                               195},
+      {"sidd",                               198},
       {""},
 
-      {"nabataean",                          190},
+      {"nabataean",                          145},
       {""},
 
-      {"lepcha",                             141},
+      {"lepcha",                             111},
 
       {"inarabicpresentationformsa",         389},
       {""},
 
-      {"modifierletter",                      26},
+      {"modifierletter",                     117},
 
       {"intags",                             496},
 
-      {"mult",                               202},
+      {"mult",                               142},
       {""}, {""},
 
       {"insiddham",                          450},
 
-      {"talu",                               129},
+      {"talu",                               147},
       {""}, {""}, {""}, {""},
 
-      {"cased",                               59},
+      {"cased",                               39},
       {""},
 
       {"intibetan",                          270},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"separator",                           51},
+      {"separator",                          234},
       {""},
 
-      {"runic",                              103},
+      {"runic",                              190},
 
       {"inmiscellaneousmathematicalsymbolsb", 327},
       {""}, {""}, {""}, {""},
 
-      {"linb",                               121},
+      {"linb",                               114},
 
       {"inbraillepatterns",                  325},
 
-      {"oldpersian",                         133},
+      {"oldpersian",                         158},
       {""},
 
       {"inugaritic",                         410},
 
-      {"telu",                                89},
+      {"telu",                               216},
       {""},
 
-      {"limb",                               119},
+      {"limb",                               112},
       {""},
 
-      {"oldpermic",                          193},
+      {"oldpermic",                          157},
       {""},
 
-      {"bali",                               135},
+      {"bali",                                24},
 
       {"inmyanmarextendedb",                 372},
 
-      {"tibt",                                95},
+      {"tibt",                               220},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"saur",                               144},
+      {"saur",                               194},
       {""}, {""}, {""},
 
-      {"po",                                  44},
+      {"po",                                 184},
       {""},
 
-      {"tibetan",                             95},
+      {"tibetan",                            220},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""},
 
@@ -24034,44 +24040,44 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
 
       {"inbalinese",                         294},
 
-      {"elba",                               179},
+      {"elba",                                67},
       {""}, {""}, {""}, {""},
 
-      {"bengali",                             84},
+      {"bengali",                             28},
 
-      {"gran",                               180},
+      {"gran",                                73},
       {""}, {""}, {""},
 
-      {"phoenician",                         137},
+      {"phoenician",                         182},
       {""},
 
       {"ingurmukhi",                         260},
       {""}, {""},
 
-      {"caseignorable",                       60},
+      {"caseignorable",                       38},
       {""}, {""}, {""}, {""},
 
-      {"lyci",                               147},
+      {"lyci",                               123},
       {""},
 
       {"inyijinghexagramsymbols",            353},
       {""},
 
-      {"mlym",                                91},
+      {"mlym",                               127},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"lycian",                             147},
+      {"lycian",                             123},
       {""}, {""}, {""}, {""},
 
-      {"elbasan",                            179},
+      {"elbasan",                             67},
       {""}, {""}, {""}, {""}, {""},
 
-      {"balinese",                           135},
+      {"balinese",                            24},
 
-      {"narb",                               189},
+      {"narb",                               156},
       {""},
 
-      {"brai",                               126},
+      {"brai",                                32},
       {""}, {""},
 
       {"insuttonsignwriting",                475},
@@ -24079,30 +24085,30 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
 
       {"insorasompeng",                      440},
 
-      {"malayalam",                           91},
+      {"malayalam",                          127},
       {""}, {""},
 
-      {"arab",                                80},
+      {"arab",                                20},
       {""},
 
-      {"brahmi",                             167},
+      {"brahmi",                              31},
       {""},
 
       {"incountingrodnumerals",              473},
       {""}, {""}, {""},
 
-      {"rjng",                               146},
+      {"rjng",                               189},
 
-      {"mong",                               105},
+      {"mong",                               140},
       {""}, {""}, {""},
 
       {"incyrillicsupplement",               247},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"ogam",                               102},
+      {"ogam",                               152},
       {""},
 
-      {"sarb",                               161},
+      {"sarb",                               159},
 
       {"lower",                                6},
       {""},
@@ -24110,15 +24116,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inrejang",                           369},
       {""}, {""}, {""}, {""}, {""},
 
-      {"hmng",                               181},
+      {"hmng",                               172},
       {""}, {""},
 
-      {"tirhuta",                            197},
+      {"tirhuta",                            222},
 
-      {"hang",                                98},
+      {"hang",                                81},
       {""}, {""}, {""}, {""},
 
-      {"wspace",                             205},
+      {"wspace",                             230},
       {""}, {""}, {""}, {""},
 
       {"inlatinextendedd",                   362},
@@ -24129,52 +24135,52 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"incherokeesupplement",               379},
       {""},
 
-      {"mymr",                                96},
+      {"mymr",                               143},
       {""}, {""}, {""},
 
-      {"vai",                                143},
+      {"vai",                                227},
 
-      {"vaii",                               143},
+      {"vaii",                               227},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""},
 
-      {"ethiopic",                            99},
+      {"ethiopic",                            68},
       {""},
 
-      {"sylotinagri",                        132},
+      {"sylotinagri",                        207},
       {""}, {""}, {""}, {""},
 
-      {"myanmar",                             96},
+      {"myanmar",                            143},
       {""},
 
-      {"syrc",                                81},
+      {"syrc",                               208},
       {""},
 
       {"inbrahmi",                           438},
       {""}, {""}, {""},
 
-      {"mathsymbol",                          49},
+      {"mathsymbol",                         202},
       {""},
 
-      {"runr",                               103},
+      {"runr",                               190},
       {""}, {""}, {""}, {""}, {""},
 
       {"inshavian",                          413},
 
-      {"gothic",                             112},
+      {"gothic",                              72},
       {""}, {""}, {""}, {""}, {""},
 
-      {"syriac",                              81},
+      {"syriac",                             208},
 
-      {"p",                                   38},
+      {"p",                                  171},
       {""},
 
-      {"zp",                                  53},
+      {"zp",                                 236},
 
       {"induployan",                         467},
       {""},
 
-      {"vs",                                 234},
+      {"vs",                                 228},
       {""}, {""},
 
       {"ingreekandcoptic",                   245},
@@ -24182,15 +24188,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"ingothic",                           408},
       {""}, {""},
 
-      {"lowercaseletter",                     25},
+      {"lowercaseletter",                    116},
       {""}, {""}, {""},
 
       {"inoriya",                            262},
       {""}, {""}, {""}, {""}, {""},
 
-      {"grext",                               71},
+      {"grext",                               75},
 
-      {"linearb",                            121},
+      {"linearb",                            114},
 
       {"inyiradicals",                       356},
       {""},
@@ -24202,12 +24208,12 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"ingeometricshapes",                  320},
       {""},
 
-      {"java",                               158},
+      {"java",                                97},
 
       {"inblockelements",                    319},
       {""},
 
-      {"number",                              34},
+      {"number",                             144},
 
       {"incombininghalfmarks",               392},
 
@@ -24218,21 +24224,21 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inlinearbsyllabary",                 398},
       {""},
 
-      {"osmanya",                            124},
+      {"osmanya",                            162},
       {""}, {""}, {""},
 
-      {"avst",                               153},
+      {"avst",                                23},
       {""}, {""}, {""}, {""},
 
-      {"hexdigit",                           213},
+      {"hexdigit",                            85},
       {""}, {""}, {""},
 
       {"injavanese",                         371},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"cyrl",                                77},
+      {"cyrl",                                58},
 
-      {"avestan",                            153},
+      {"avestan",                             23},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
@@ -24240,10 +24246,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
 
       {"inornamentaldingbats",               485},
 
-      {"tavt",                               152},
+      {"tavt",                               213},
       {""}, {""}, {""}, {""},
 
-      {"javanese",                           158},
+      {"javanese",                            97},
 
       {"inethiopicextended",                 335},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24258,7 +24264,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inarabicmathematicalalphabeticsymbols", 477},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"hangul",                              98},
+      {"hangul",                              81},
       {""},
 
       {"insuperscriptsandsubscripts",        307},
@@ -24273,10 +24279,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inoldpersian",                       411},
       {""}, {""},
 
-      {"geor",                                97},
+      {"geor",                                70},
       {""},
 
-      {"otherpunctuation",                    44},
+      {"otherpunctuation",                   184},
       {""},
 
       {"inoldpermic",                        409},
@@ -24284,10 +24290,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
 
       {"inalchemicalsymbols",                487},
 
-      {"sylo",                               132},
+      {"sylo",                               207},
       {""},
 
-      {"hiragana",                           106},
+      {"hiragana",                            86},
       {""}, {""},
 
       {"word",                                12},
@@ -24299,41 +24305,41 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"insmallformvariants",                394},
       {""}, {""}, {""}, {""}, {""},
 
-      {"sund",                               140},
+      {"sund",                               206},
 
-      {"brah",                               167},
+      {"brah",                                31},
       {""},
 
       {"insupplementalmathematicaloperators", 328},
 
-      {"glagolitic",                         130},
+      {"glagolitic",                          71},
       {""}, {""},
 
-      {"braille",                            126},
+      {"braille",                             32},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""},
 
-      {"unassigned",                          20},
+      {"unassigned",                          51},
 
-      {"sgnw",                               204},
+      {"sgnw",                               199},
       {""}, {""}, {""},
 
-      {"plrd",                               172},
+      {"plrd",                               137},
       {""}, {""}, {""},
 
-      {"hebr",                                79},
+      {"hebr",                                84},
 
-      {"ogham",                              102},
+      {"ogham",                              152},
       {""}, {""}, {""}, {""},
 
-      {"cyrillic",                            77},
+      {"cyrillic",                            58},
       {""}, {""}, {""},
 
-      {"orya",                                87},
+      {"orya",                               161},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
 
-      {"grantha",                            180},
+      {"grantha",                             73},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""},
 
@@ -24349,38 +24355,38 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inhanguljamoextendeda",              370},
       {""}, {""},
 
-      {"goth",                               112},
+      {"goth",                                72},
 
-      {"graphemebase",                        72},
+      {"graphemebase",                        74},
       {""},
 
-      {"bidic",                              206},
+      {"bidic",                               29},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"ogrext",                             222},
+      {"ogrext",                             165},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"idsb",                               223},
+      {"idsb",                                88},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
       {"invariationselectorssupplement",     497},
 
-      {"assigned",                            16},
+      {"assigned",                            22},
       {""}, {""}, {""},
 
-      {"symbol",                              46},
+      {"symbol",                             191},
       {""}, {""}, {""},
 
       {"ingreekextended",                    305},
       {""},
 
-      {"pauc",                               192},
+      {"pauc",                               176},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"meroitichieroglyphs",                171},
+      {"meroitichieroglyphs",                136},
       {""},
 
-      {"logicalorderexception",              230},
+      {"logicalorderexception",              119},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
@@ -24399,17 +24405,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inkannada",                          265},
       {""}, {""}, {""},
 
-      {"kana",                               107},
+      {"kana",                               101},
 
-      {"phagspa",                            138},
+      {"phagspa",                            181},
       {""}, {""},
 
-      {"cakm",                               169},
+      {"cakm",                                43},
 
       {"digit",                                4},
       {""}, {""}, {""}, {""},
 
-      {"softdotted",                         229},
+      {"softdotted",                         204},
       {""}, {""}, {""},
 
       {"inchakma",                           441},
@@ -24423,13 +24429,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""},
 
-      {"warangciti",                         198},
+      {"warangciti",                         229},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
       {"incjkcompatibilityforms",            393},
       {""}, {""},
 
-      {"idstrinaryoperator",                 224},
+      {"idstrinaryoperator",                  89},
       {""},
 
       {"incjkcompatibilityideographs",       387},
@@ -24438,55 +24444,55 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inkaithi",                           439},
       {""}, {""}, {""}, {""}, {""},
 
-      {"takri",                              175},
+      {"takri",                              214},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"phlp",                               194},
+      {"phlp",                               186},
 
-      {"mendekikakui",                       186},
+      {"mendekikakui",                       134},
       {""},
 
       {"punct",                                8},
       {""}, {""},
 
-      {"otherdefaultignorablecodepoint",     227},
+      {"otherdefaultignorablecodepoint",     164},
 
       {"inkatakana",                         343},
       {""}, {""}, {""}, {""}, {""}, {""},
 
       {"graph",                                5},
 
-      {"lydi",                               149},
+      {"lydi",                               124},
       {""}, {""}, {""}, {""}, {""},
 
-      {"pd",                                  40},
+      {"pd",                                 178},
       {""},
 
       {"incjkstrokes",                       348},
       {""}, {""},
 
-      {"lydian",                             149},
+      {"lydian",                             124},
       {""}, {""}, {""}, {""},
 
-      {"sorasompeng",                        174},
+      {"sorasompeng",                        205},
       {""},
 
       {"incjkcompatibilityideographssupplement", 495},
       {""}, {""},
 
-      {"meeteimayek",                        159},
+      {"meeteimayek",                        133},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"otheruppercase",                     220},
+      {"otheruppercase",                     170},
       {""}, {""},
 
-      {"kali",                               145},
+      {"kali",                               102},
       {""}, {""},
 
       {"inhanguljamo",                       273},
       {""},
 
-      {"ideographic",                        216},
+      {"ideographic",                         92},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
@@ -24498,10 +24504,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"hluw",                               200},
+      {"hluw",                                18},
       {""}, {""}, {""}, {""},
 
-      {"patsyn",                             236},
+      {"patsyn",                             174},
       {""}, {""},
 
       {"incombiningdiacriticalmarks",        244},
@@ -24512,7 +24518,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inkanasupplement",                   466},
       {""},
 
-      {"deprecated",                         228},
+      {"deprecated",                          61},
 
       {"inverticalforms",                    391},
       {""}, {""}, {""},
@@ -24526,24 +24532,24 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inbuhid",                            282},
       {""},
 
-      {"alphabetic",                          56},
+      {"alphabetic",                          17},
       {""}, {""}, {""},
 
-      {"oldhungarian",                       203},
+      {"oldhungarian",                       154},
       {""}, {""},
 
-      {"mark",                                30},
+      {"mark",                               125},
       {""}, {""}, {""}, {""}, {""}, {""},
 
       {"inkharoshthi",                       427},
       {""}, {""}, {""}, {""}, {""},
 
-      {"deva",                                83},
+      {"deva",                                63},
 
       {"invedicextensions",                  300},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"devanagari",                          83},
+      {"devanagari",                          63},
 
       {"incombiningdiacriticalmarkssupplement", 303},
       {""}, {""}, {""},
@@ -24554,7 +24560,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inkhmer",                            284},
       {""}, {""}, {""},
 
-      {"changeswhencasemapped",               65},
+      {"changeswhencasemapped",               46},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""},
@@ -24562,53 +24568,53 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"intakri",                            452},
       {""}, {""},
 
-      {"dep",                                228},
+      {"dep",                                 61},
 
-      {"takr",                               175},
+      {"takr",                               214},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"changeswhencasefolded",               64},
+      {"changeswhencasefolded",               45},
       {""},
 
-      {"kaithi",                             165},
+      {"kaithi",                              99},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
 
-      {"phag",                               138},
+      {"phag",                               181},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
 
       {"inpahawhhmong",                      464},
       {""},
 
-      {"bidicontrol",                        206},
+      {"bidicontrol",                         29},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
       {"inkhojki",                           445},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"bamu",                               157},
+      {"bamu",                                25},
 
       {"inbamum",                            360},
 
-      {"changeswhentitlecased",               63},
+      {"changeswhentitlecased",               48},
       {""}, {""},
 
       {"inkhmersymbols",                     290},
 
-      {"uideo",                              226},
+      {"uideo",                              224},
 
-      {"lu",                                  29},
+      {"lu",                                 122},
       {""}, {""},
 
-      {"kthi",                               165},
+      {"kthi",                                99},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"limbu",                              119},
+      {"limbu",                              112},
       {""},
 
-      {"defaultignorablecodepoint",           70},
+      {"defaultignorablecodepoint",           60},
       {""}, {""}, {""},
 
       {"inplayingcards",                     480},
@@ -24617,10 +24623,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inhebrew",                           249},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"modifiersymbol",                      48},
+      {"modifiersymbol",                     201},
       {""}, {""}, {""}, {""}, {""},
 
-      {"ugaritic",                           122},
+      {"ugaritic",                           223},
       {""}, {""}, {""}, {""},
 
       {"inlisu",                             357},
@@ -24631,27 +24637,27 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inprivateusearea",                   386},
       {""}, {""},
 
-      {"olck",                               142},
+      {"olck",                               153},
       {""}, {""}, {""},
 
       {"inbengali",                          259},
       {""}, {""},
 
-      {"olchiki",                            142},
+      {"olchiki",                            153},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"caucasianalbanian",                  176},
+      {"caucasianalbanian",                   40},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""},
 
-      {"oldturkic",                          164},
+      {"oldturkic",                          160},
 
-      {"beng",                                84},
+      {"beng",                                28},
 
       {"intelugu",                           264},
       {""}, {""}, {""}, {""}, {""},
 
-      {"hyphen",                             209},
+      {"hyphen",                              87},
       {""}, {""},
 
       {"inbuginese",                         291},
@@ -24661,16 +24667,16 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""},
 
-      {"cypriot",                            125},
+      {"cypriot",                             57},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
       {"inlimbu",                            287},
       {""}, {""},
 
-      {"graphemeextend",                      71},
+      {"graphemeextend",                      75},
       {""}, {""},
 
-      {"tagb",                               118},
+      {"tagb",                               210},
       {""}, {""}, {""},
 
       {"incypriotsyllabary",                 418},
@@ -24684,20 +24690,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
 
       {"inkatakanaphoneticextensions",       349},
 
-      {"glag",                               130},
+      {"glag",                                71},
 
-      {"combiningmark",                       30},
+      {"combiningmark",                      125},
 
-      {"palmyrene",                          191},
+      {"palmyrene",                          173},
       {""},
 
       {"khmr",                               104},
       {""}, {""}, {""},
 
-      {"khar",                               134},
+      {"khar",                               103},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"ugar",                               122},
+      {"ugar",                               223},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
       {"inarabicpresentationformsb",         395},
@@ -24706,40 +24712,40 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"insupplementaryprivateuseareaa",     498},
       {""},
 
-      {"variationselector",                  234},
+      {"variationselector",                  228},
       {""}, {""}, {""}, {""},
 
-      {"nko",                                139},
+      {"nko",                                148},
 
-      {"nkoo",                               139},
+      {"nkoo",                               148},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
       {"inbamumsupplement",                  461},
       {""}, {""}, {""}, {""}, {""},
 
-      {"tglg",                               115},
+      {"tglg",                               209},
       {""},
 
-      {"any",                                 15},
+      {"any",                                 19},
 
-      {"enclosingmark",                       32},
+      {"enclosingmark",                      132},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"gujr",                                86},
+      {"gujr",                                78},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"changeswhenlowercased",               61},
+      {"changeswhenlowercased",               47},
       {""}, {""}, {""}, {""},
 
-      {"knda",                                90},
+      {"knda",                               100},
 
-      {"hung",                               203},
+      {"hung",                               154},
 
-      {"gujarati",                            86},
+      {"gujarati",                            78},
       {""}, {""},
 
-      {"bopo",                               108},
+      {"bopo",                                30},
       {""}, {""}, {""}, {""},
 
       {"inmendekikakui",                     476},
@@ -24748,55 +24754,55 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inbopomofo",                         344},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"kharoshthi",                         134},
+      {"kharoshthi",                         103},
       {""},
 
-      {"kannada",                             90},
+      {"kannada",                            100},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""},
 
-      {"khoj",                               182},
+      {"khoj",                               105},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""},
 
-      {"cherokee",                           100},
+      {"cherokee",                            50},
       {""}, {""}, {""},
 
       {"inlatinextendedb",                   241},
       {""}, {""}, {""}, {""}, {""},
 
-      {"dashpunctuation",                     40},
+      {"dashpunctuation",                    178},
       {""}, {""},
 
-      {"dupl",                               178},
+      {"dupl",                                65},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
       {"inyisyllables",                      355},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"georgian",                            97},
+      {"georgian",                            70},
       {""},
 
-      {"rejang",                             146},
+      {"rejang",                             189},
       {""},
 
-      {"oupper",                             220},
+      {"oupper",                             170},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""},
 
-      {"aghb",                               176},
+      {"aghb",                                40},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""},
 
       {"khmer",                              104},
       {""}, {""},
 
-      {"grbase",                              72},
+      {"grbase",                              74},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"currencysymbol",                      47},
+      {"currencysymbol",                     195},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24805,16 +24811,16 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""},
 
-      {"spacingmark",                         31},
+      {"spacingmark",                        131},
       {""},
 
-      {"orkh",                               164},
+      {"orkh",                               160},
       {""}, {""}, {""}, {""}, {""},
 
-      {"cwu",                                 62},
+      {"cwu",                                 49},
       {""},
 
-      {"hebrew",                              79},
+      {"hebrew",                              84},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
@@ -24822,13 +24828,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
 
-      {"oldnortharabian",                    189},
+      {"oldnortharabian",                    156},
       {""}, {""}, {""}, {""}, {""},
 
       {"incjksymbolsandpunctuation",         341},
       {""}, {""},
 
-      {"othergraphemeextend",                222},
+      {"othergraphemeextend",                165},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""},
@@ -24836,15 +24842,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"indevanagariextended",               367},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"tagalog",                            115},
+      {"tagalog",                            209},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"surrogate",                           22},
+      {"surrogate",                           55},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""},
 
-      {"bopomofo",                           108},
+      {"bopomofo",                            30},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24855,10 +24861,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"uppercase",                           58},
+      {"uppercase",                          226},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"unifiedideograph",                   226},
+      {"unifiedideograph",                   224},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24866,7 +24872,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
 
       {"inpaucinhau",                        455},
 
-      {"paucinhau",                          192},
+      {"paucinhau",                          176},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24876,7 +24882,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"nonspacingmark",                      33},
+      {"nonspacingmark",                     138},
       {""},
 
       {"inhanguljamoextendedb",              382},
@@ -24884,15 +24890,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
 
       {"inhighsurrogates",                   383},
 
-      {"punctuation",                         38},
+      {"punctuation",                        171},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""},
 
-      {"openpunctuation",                     45},
+      {"openpunctuation",                    185},
 
-      {"bassavah",                           177},
+      {"bassavah",                            26},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24917,23 +24923,23 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inmeroiticcursive",                  426},
       {""}, {""},
 
-      {"signwriting",                        204},
+      {"signwriting",                        199},
       {""}, {""},
 
       {"incjkradicalssupplement",            338},
       {""},
 
-      {"pahawhhmong",                        181},
+      {"pahawhhmong",                        172},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""},
 
       {"inkayahli",                          368},
 
-      {"uppercaseletter",                     29},
+      {"uppercaseletter",                    122},
       {""},
 
-      {"batk",                               166},
+      {"batk",                                27},
       {""}, {""}, {""}, {""},
 
       {"inbatak",                            296},
@@ -24943,10 +24949,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""},
 
-      {"buhd",                               117},
+      {"buhd",                                34},
       {""}, {""}, {""}, {""}, {""},
 
-      {"egyp",                               154},
+      {"egyp",                                66},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
@@ -24964,7 +24970,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""},
 
-      {"grek",                                76},
+      {"grek",                                77},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24977,7 +24983,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
 
-      {"bugi",                               127},
+      {"bugi",                                33},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24985,20 +24991,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"changeswhenuppercased",               62},
+      {"changeswhenuppercased",               49},
       {""}, {""}, {""},
 
-      {"paragraphseparator",                  53},
+      {"paragraphseparator",                 236},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
 
-      {"buginese",                           127},
+      {"buginese",                            33},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"guru",                                85},
+      {"guru",                                79},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
@@ -25006,13 +25012,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""},
 
-      {"telugu",                              89},
+      {"telugu",                             216},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""},
 
-      {"quotationmark",                      210},
+      {"quotationmark",                      187},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""},
@@ -25020,10 +25026,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {"inkhudawadi",                        447},
       {""}, {""}, {""}, {""}, {""},
 
-      {"kayahli",                            145},
+      {"kayahli",                            102},
       {""},
 
-      {"oldsoutharabian",                    161},
+      {"oldsoutharabian",                    159},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""},
@@ -25044,7 +25050,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""},
 
-      {"zyyy",                                74},
+      {"zyyy",                                53},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25053,28 +25059,28 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"qmark",                              210},
+      {"qmark",                              187},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
 
-      {"buhid",                              117},
+      {"buhid",                               34},
 
-      {"sk",                                  48},
+      {"sk",                                 201},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""},
 
-      {"unknown",                            237},
+      {"unknown",                            225},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"khudawadi",                          196},
+      {"khudawadi",                          106},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"katakana",                           107},
+      {"katakana",                           101},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25097,12 +25103,12 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"duployan",                           178},
+      {"duployan",                            65},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
 
-      {"egyptianhieroglyphs",                154},
+      {"egyptianhieroglyphs",                 66},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25144,7 +25150,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"khojki",                             182},
+      {"khojki",                             105},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25217,7 +25223,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"batak",                              166},
+      {"batak",                               27},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25238,7 +25244,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"greek",                               76},
+      {"greek",                               77},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25251,7 +25257,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
 
-      {"grlink",                              73},
+      {"grlink",                              76},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25266,7 +25272,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""},
 
-      {"gurmukhi",                            85},
+      {"gurmukhi",                            79},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25280,14 +25286,14 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
 
-      {"graphemelink",                        73}
+      {"graphemelink",                        76}
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
     {
-      unsigned int key = hash (str, len);
+      register int key = hash (str, len);
 
-      if (key <= MAX_HASH_VALUE)
+      if (key <= MAX_HASH_VALUE && key >= 0)
         {
           register const char *s = wordlist[key].name;
 
diff --git a/src/unicode_property_data_posix.c b/src/unicode_property_data_posix.c
index 83aabc6..1cf082b 100644
--- a/src/unicode_property_data_posix.c
+++ b/src/unicode_property_data_posix.c
@@ -1,5 +1,5 @@
-/* ANSI-C code produced by gperf version 3.0.3 */
-/* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data_posix.gperf  */
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data_posix.gperf  */
 /* Computed positions: -k'1,3' */
 
 #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -4879,6 +4879,12 @@ hash (register const char *str, register unsigned int len)
   return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]];
 }
 
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
 const struct PropertyNameCtype *
 unicode_lookup_property_name (register const char *str, register unsigned int len)
 {
@@ -4919,9 +4925,9 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
     {
-      unsigned int key = hash (str, len);
+      register int key = hash (str, len);
 
-      if (key <= MAX_HASH_VALUE)
+      if (key <= MAX_HASH_VALUE && key >= 0)
         {
           register const char *s = wordlist[key].name;
 
diff --git a/test/.gitignore b/test/.gitignore
new file mode 100644
index 0000000..04918c1
--- /dev/null
+++ b/test/.gitignore
@@ -0,0 +1,4 @@
+/test_utf8
+/testc
+/testcu
+/testp
diff --git a/test/Makefile.am b/test/Makefile.am
index fe48403..2930e7f 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -5,11 +5,13 @@ AM_LDFLAGS  = -L$(prefix)/lib
 AM_CFLAGS =
 AM_CPPFLAGS = -I../src -I$(includedir)
 
-TESTS = testc testp testcu
+TESTS = test_utf8 testc testp testcu
 
-check_PROGRAMS = testc testp testcu
+check_PROGRAMS = test_utf8 testc testp testcu
 
-test: testc testp testcu
+test: test_utf8 testc testp testcu
+	@echo "[Oniguruma API, UTF-8 check]"
+	@./test_utf8  | grep RESULT
 	@echo "[Oniguruma API, ASCII/EUC-JP check]"
 	@./testc  | grep RESULT
 	@echo "[POSIX API, ASCII/EUC-JP check]"
@@ -17,6 +19,9 @@ test: testc testp testcu
 	@echo "[Oniguruma API, UTF-16 check]"
 	@./testcu | grep RESULT
 
+test_utf8_SOURCES = test_utf8.c
+test_utf8_LDADD = $(lib_onig)
+
 testc_SOURCES = testc.c
 testc_LDADD = $(lib_onig)
 
diff --git a/test/test_utf8.c b/test/test_utf8.c
new file mode 100644
index 0000000..31fcfcd
--- /dev/null
+++ b/test/test_utf8.c
@@ -0,0 +1,1066 @@
+/*
+ * This program was generated by testconv.rb.
+ */
+#include "config.h"
+#ifdef ONIG_ESCAPE_UCHAR_COLLISION
+#undef ONIG_ESCAPE_UCHAR_COLLISION
+#endif
+#include <stdio.h>
+
+#include "oniguruma.h"
+
+#ifdef HAVE_STRING_H
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+
+#define SLEN(s)  strlen(s)
+
+static int nsucc  = 0;
+static int nfail  = 0;
+static int nerror = 0;
+
+static FILE* err_file;
+
+static OnigRegion* region;
+
+static void xx(char* pattern, char* str, int from, int to, int mem, int not,
+               int error_no)
+{
+  int r;
+  regex_t* reg;
+  OnigErrorInfo einfo;
+
+  r = onig_new(&reg, (UChar* )pattern, (UChar* )(pattern + SLEN(pattern)),
+	       ONIG_OPTION_DEFAULT, ONIG_ENCODING_UTF8, ONIG_SYNTAX_DEFAULT, &einfo);
+  if (r) {
+    char s[ONIG_MAX_ERROR_MESSAGE_LEN];
+
+    if (error_no == 0) {
+      onig_error_code_to_str((UChar* )s, r, &einfo);
+      fprintf(err_file, "ERROR: %s  /%s/\n", s, pattern);
+      nerror++;
+    }
+    else {
+      if (r == error_no) {
+        fprintf(stdout, "OK(ERROR): /%s/ %d\n", pattern, r);
+        nsucc++;
+      }
+      else {
+        fprintf(stdout, "FAIL(ERROR): /%s/ '%s', %d, %d\n", pattern, str,
+                error_no, r);
+        nfail++;
+      }
+    }
+
+    return ;
+  }
+
+  r = onig_search(reg, (UChar* )str, (UChar* )(str + SLEN(str)),
+		  (UChar* )str, (UChar* )(str + SLEN(str)),
+		  region, ONIG_OPTION_NONE);
+  if (r < ONIG_MISMATCH) {
+    char s[ONIG_MAX_ERROR_MESSAGE_LEN];
+
+    if (error_no == 0) {
+      onig_error_code_to_str((UChar* )s, r);
+      fprintf(err_file, "ERROR: %s\n", s);
+      nerror++;
+    }
+    else {
+      if (r == error_no) {
+        fprintf(stdout, "OK(ERROR): /%s/ '%s', %d\n", pattern, str, r);
+        nsucc++;
+      }
+      else {
+        fprintf(stdout, "FAIL ERROR NO: /%s/ '%s', %d, %d\n", pattern, str,
+                error_no, r);
+        nfail++;
+      }
+    }
+
+    return ;
+  }
+
+  if (r == ONIG_MISMATCH) {
+    if (not) {
+      fprintf(stdout, "OK(N): /%s/ '%s'\n", pattern, str);
+      nsucc++;
+    }
+    else {
+      fprintf(stdout, "FAIL: /%s/ '%s'\n", pattern, str);
+      nfail++;
+    }
+  }
+  else {
+    if (not) {
+      fprintf(stdout, "FAIL(N): /%s/ '%s'\n", pattern, str);
+      nfail++;
+    }
+    else {
+      if (region->beg[mem] == from && region->end[mem] == to) {
+        fprintf(stdout, "OK: /%s/ '%s'\n", pattern, str);
+        nsucc++;
+      }
+      else {
+        fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", pattern, str,
+	        from, to, region->beg[mem], region->end[mem]);
+        nfail++;
+      }
+    }
+  }
+  onig_free(reg);
+}
+
+static void x2(char* pattern, char* str, int from, int to)
+{
+  xx(pattern, str, from, to, 0, 0, 0);
+}
+
+static void x3(char* pattern, char* str, int from, int to, int mem)
+{
+  xx(pattern, str, from, to, mem, 0, 0);
+}
+
+static void n(char* pattern, char* str)
+{
+  xx(pattern, str, 0, 0, 0, 1, 0);
+}
+
+static void e(char* pattern, char* str, int error_no)
+{
+  xx(pattern, str, 0, 0, 0, 0, error_no);
+}
+
+extern int main(int argc, char* argv[])
+{
+  static OnigEncoding use_encs[] = { ONIG_ENCODING_UTF8 };
+
+  onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0]));
+
+  err_file = stdout;
+
+  region = onig_region_new();
+
+  x2("", "", 0, 0);
+  x2("^", "", 0, 0);
+  x2("$", "", 0, 0);
+  x2("\\G", "", 0, 0);
+  x2("\\A", "", 0, 0);
+  x2("\\Z", "", 0, 0);
+  x2("\\z", "", 0, 0);
+  x2("^$", "", 0, 0);
+  x2("\\ca", "\001", 0, 1);
+  x2("\\C-b", "\002", 0, 1);
+  x2("\\c\\\\", "\034", 0, 1);
+  x2("q[\\c\\\\]", "q\034", 0, 2);
+  x2("", "a", 0, 0);
+  x2("a", "a", 0, 1);
+  x2("\\x61", "a", 0, 1);
+  x2("aa", "aa", 0, 2);
+  x2("aaa", "aaa", 0, 3);
+  x2("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, 35);
+  x2("ab", "ab", 0, 2);
+  x2("b", "ab", 1, 2);
+  x2("bc", "abc", 1, 3);
+  x2("(?i:#RET#)", "#INS##RET#", 5, 10);
+  x2("\\17", "\017", 0, 1);
+  x2("\\x1f", "\x1f", 0, 1);
+  x2("a(?#....\\\\JJJJ)b", "ab", 0, 2);
+  x2("(?x)  G (o O(?-x)oO) g L", "GoOoOgLe", 0, 7);
+  x2(".", "a", 0, 1);
+  n(".", "");
+  x2("..", "ab", 0, 2);
+  x2("\\w", "e", 0, 1);
+  n("\\W", "e");
+  x2("\\s", " ", 0, 1);
+  x2("\\S", "b", 0, 1);
+  x2("\\d", "4", 0, 1);
+  n("\\D", "4");
+  x2("\\b", "z ", 0, 0);
+  x2("\\b", " z", 1, 1);
+  x2("\\B", "zz ", 1, 1);
+  x2("\\B", "z ", 2, 2);
+  x2("\\B", " z", 0, 0);
+  x2("[ab]", "b", 0, 1);
+  n("[ab]", "c");
+  x2("[a-z]", "t", 0, 1);
+  n("[^a]", "a");
+  x2("[^a]", "\n", 0, 1);
+  x2("[]]", "]", 0, 1);
+  n("[^]]", "]");
+  x2("[\\^]+", "0^^1", 1, 3);
+  x2("[b-]", "b", 0, 1);
+  x2("[b-]", "-", 0, 1);
+  x2("[\\w]", "z", 0, 1);
+  n("[\\w]", " ");
+  x2("[\\W]", "b$", 1, 2);
+  x2("[\\d]", "5", 0, 1);
+  n("[\\d]", "e");
+  x2("[\\D]", "t", 0, 1);
+  n("[\\D]", "3");
+  x2("[\\s]", " ", 0, 1);
+  n("[\\s]", "a");
+  x2("[\\S]", "b", 0, 1);
+  n("[\\S]", " ");
+  x2("[\\w\\d]", "2", 0, 1);
+  n("[\\w\\d]", " ");
+  x2("[[:upper:]]", "B", 0, 1);
+  x2("[*[:xdigit:]+]", "+", 0, 1);
+  x2("[*[:xdigit:]+]", "GHIKK-9+*", 6, 7);
+  x2("[*[:xdigit:]+]", "-@^+", 3, 4);
+  n("[[:upper]]", "A");
+  x2("[[:upper]]", ":", 0, 1);
+  x2("[\\044-\\047]", "\046", 0, 1);
+  x2("[\\x5a-\\x5c]", "\x5b", 0, 1);
+  x2("[\\x6A-\\x6D]", "\x6c", 0, 1);
+  n("[\\x6A-\\x6D]", "\x6E");
+  n("^[0-9A-F]+ 0+ UNDEF ", "75F 00000000 SECT14A notype ()    External    | _rb_apply");
+  x2("[\\[]", "[", 0, 1);
+  x2("[\\]]", "]", 0, 1);
+  x2("[&]", "&", 0, 1);
+  x2("[[ab]]", "b", 0, 1);
+  x2("[[ab]c]", "c", 0, 1);
+  n("[[^a]]", "a");
+  n("[^[a]]", "a");
+  x2("[[ab]&&bc]", "b", 0, 1);
+  n("[[ab]&&bc]", "a");
+  n("[[ab]&&bc]", "c");
+  x2("[a-z&&b-y&&c-x]", "w", 0, 1);
+  n("[^a-z&&b-y&&c-x]", "w");
+  x2("[[^a&&a]&&a-z]", "b", 0, 1);
+  n("[[^a&&a]&&a-z]", "a");
+  x2("[[^a-z&&bcdef]&&[^c-g]]", "h", 0, 1);
+  n("[[^a-z&&bcdef]&&[^c-g]]", "c");
+  x2("[^[^abc]&&[^cde]]", "c", 0, 1);
+  x2("[^[^abc]&&[^cde]]", "e", 0, 1);
+  n("[^[^abc]&&[^cde]]", "f");
+  x2("[a-&&-a]", "-", 0, 1);
+  n("[a\\-&&\\-a]", "&");
+  n("\\wabc", " abc");
+  x2("a\\Wbc", "a bc", 0, 4);
+  x2("a.b.c", "aabbc", 0, 5);
+  x2(".\\wb\\W..c", "abb bcc", 0, 7);
+  x2("\\s\\wzzz", " zzzz", 0, 5);
+  x2("aa.b", "aabb", 0, 4);
+  n(".a", "ab");
+  x2(".a", "aa", 0, 2);
+  x2("^a", "a", 0, 1);
+  x2("^a$", "a", 0, 1);
+  x2("^\\w$", "a", 0, 1);
+  n("^\\w$", " ");
+  x2("^\\wab$", "zab", 0, 3);
+  x2("^\\wabcdef$", "zabcdef", 0, 7);
+  x2("^\\w...def$", "zabcdef", 0, 7);
+  x2("\\w\\w\\s\\Waaa\\d", "aa  aaa4", 0, 8);
+  x2("\\A\\Z", "", 0, 0);
+  x2("\\Axyz", "xyz", 0, 3);
+  x2("xyz\\Z", "xyz", 0, 3);
+  x2("xyz\\z", "xyz", 0, 3);
+  x2("a\\Z", "a", 0, 1);
+  x2("\\Gaz", "az", 0, 2);
+  n("\\Gz", "bza");
+  n("az\\G", "az");
+  n("az\\A", "az");
+  n("a\\Az", "az");
+  x2("\\^\\$", "^$", 0, 2);
+  x2("^x?y", "xy", 0, 2);
+  x2("^(x?y)", "xy", 0, 2);
+  x2("\\w", "_", 0, 1);
+  n("\\W", "_");
+  x2("(?=z)z", "z", 0, 1);
+  n("(?=z).", "a");
+  x2("(?!z)a", "a", 0, 1);
+  n("(?!z)a", "z");
+  x2("(?i:a)", "a", 0, 1);
+  x2("(?i:a)", "A", 0, 1);
+  x2("(?i:A)", "a", 0, 1);
+  n("(?i:A)", "b");
+  x2("(?i:[A-Z])", "a", 0, 1);
+  x2("(?i:[f-m])", "H", 0, 1);
+  x2("(?i:[f-m])", "h", 0, 1);
+  n("(?i:[f-m])", "e");
+  x2("(?i:[A-c])", "D", 0, 1);
+  n("(?i:[^a-z])", "A");
+  n("(?i:[^a-z])", "a");
+  x2("(?i:[!-k])", "Z", 0, 1);
+  x2("(?i:[!-k])", "7", 0, 1);
+  x2("(?i:[T-}])", "b", 0, 1);
+  x2("(?i:[T-}])", "{", 0, 1);
+  x2("(?i:\\?a)", "?A", 0, 2);
+  x2("(?i:\\*A)", "*a", 0, 2);
+  n(".", "\n");
+  x2("(?m:.)", "\n", 0, 1);
+  x2("(?m:a.)", "a\n", 0, 2);
+  x2("(?m:.b)", "a\nb", 1, 3);
+  x2(".*abc", "dddabdd\nddabc", 8, 13);
+  x2("(?m:.*abc)", "dddabddabc", 0, 10);
+  n("(?i)(?-i)a", "A");
+  n("(?i)(?-i:a)", "A");
+  x2("a?", "", 0, 0);
+  x2("a?", "b", 0, 0);
+  x2("a?", "a", 0, 1);
+  x2("a*", "", 0, 0);
+  x2("a*", "a", 0, 1);
+  x2("a*", "aaa", 0, 3);
+  x2("a*", "baaaa", 0, 0);
+  n("a+", "");
+  x2("a+", "a", 0, 1);
+  x2("a+", "aaaa", 0, 4);
+  x2("a+", "aabbb", 0, 2);
+  x2("a+", "baaaa", 1, 5);
+  x2(".?", "", 0, 0);
+  x2(".?", "f", 0, 1);
+  x2(".?", "\n", 0, 0);
+  x2(".*", "", 0, 0);
+  x2(".*", "abcde", 0, 5);
+  x2(".+", "z", 0, 1);
+  x2(".+", "zdswer\n", 0, 6);
+  x2("(.*)a\\1f", "babfbac", 0, 4);
+  x2("(.*)a\\1f", "bacbabf", 3, 7);
+  x2("((.*)a\\2f)", "bacbabf", 3, 7);
+  x2("(.*)a\\1f", "baczzzzzz\nbazz\nzzzzbabf", 19, 23);
+  x2("a|b", "a", 0, 1);
+  x2("a|b", "b", 0, 1);
+  x2("|a", "a", 0, 0);
+  x2("(|a)", "a", 0, 0);
+  x2("ab|bc", "ab", 0, 2);
+  x2("ab|bc", "bc", 0, 2);
+  x2("z(?:ab|bc)", "zbc", 0, 3);
+  x2("a(?:ab|bc)c", "aabc", 0, 4);
+  x2("ab|(?:ac|az)", "az", 0, 2);
+  x2("a|b|c", "dc", 1, 2);
+  x2("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "pqr", 0, 2);
+  n("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "mn");
+  x2("a|^z", "ba", 1, 2);
+  x2("a|^z", "za", 0, 1);
+  x2("a|\\Gz", "bza", 2, 3);
+  x2("a|\\Gz", "za", 0, 1);
+  x2("a|\\Az", "bza", 2, 3);
+  x2("a|\\Az", "za", 0, 1);
+  x2("a|b\\Z", "ba", 1, 2);
+  x2("a|b\\Z", "b", 0, 1);
+  x2("a|b\\z", "ba", 1, 2);
+  x2("a|b\\z", "b", 0, 1);
+  x2("\\w|\\s", " ", 0, 1);
+  n("\\w|\\w", " ");
+  x2("\\w|%", "%", 0, 1);
+  x2("\\w|[&$]", "&", 0, 1);
+  x2("[b-d]|[^e-z]", "a", 0, 1);
+  x2("(?:a|[c-f])|bz", "dz", 0, 1);
+  x2("(?:a|[c-f])|bz", "bz", 0, 2);
+  x2("abc|(?=zz)..f", "zzf", 0, 3);
+  x2("abc|(?!zz)..f", "abf", 0, 3);
+  x2("(?=za)..a|(?=zz)..a", "zza", 0, 3);
+  n("(?>a|abd)c", "abdc");
+  x2("(?>abd|a)c", "abdc", 0, 4);
+  x2("a?|b", "a", 0, 1);
+  x2("a?|b", "b", 0, 0);
+  x2("a?|b", "", 0, 0);
+  x2("a*|b", "aa", 0, 2);
+  x2("a*|b*", "ba", 0, 0);
+  x2("a*|b*", "ab", 0, 1);
+  x2("a+|b*", "", 0, 0);
+  x2("a+|b*", "bbb", 0, 3);
+  x2("a+|b*", "abbb", 0, 1);
+  n("a+|b+", "");
+  x2("(a|b)?", "b", 0, 1);
+  x2("(a|b)*", "ba", 0, 2);
+  x2("(a|b)+", "bab", 0, 3);
+  x2("(ab|ca)+", "caabbc", 0, 4);
+  x2("(ab|ca)+", "aabca", 1, 5);
+  x2("(ab|ca)+", "abzca", 0, 2);
+  x2("(a|bab)+", "ababa", 0, 5);
+  x2("(a|bab)+", "ba", 1, 2);
+  x2("(a|bab)+", "baaaba", 1, 4);
+  x2("(?:a|b)(?:a|b)", "ab", 0, 2);
+  x2("(?:a*|b*)(?:a*|b*)", "aaabbb", 0, 3);
+  x2("(?:a*|b*)(?:a+|b+)", "aaabbb", 0, 6);
+  x2("(?:a+|b+){2}", "aaabbb", 0, 6);
+  x2("h{0,}", "hhhh", 0, 4);
+  x2("(?:a+|b+){1,2}", "aaabbb", 0, 6);
+  n("ax{2}*a", "0axxxa1");
+  n("a.{0,2}a", "0aXXXa0");
+  n("a.{0,2}?a", "0aXXXa0");
+  n("a.{0,2}?a", "0aXXXXa0");
+  x2("^a{2,}?a$", "aaa", 0, 3);
+  x2("^[a-z]{2,}?$", "aaa", 0, 3);
+  x2("(?:a+|\\Ab*)cc", "cc", 0, 2);
+  n("(?:a+|\\Ab*)cc", "abcc");
+  x2("(?:^a+|b+)*c", "aabbbabc", 6, 8);
+  x2("(?:^a+|b+)*c", "aabbbbc", 0, 7);
+  x2("a|(?i)c", "C", 0, 1);
+  x2("(?i)c|a", "C", 0, 1);
+  x2("(?i)c|a", "A", 0, 1);
+  x2("(?i:c)|a", "C", 0, 1);
+  n("(?i:c)|a", "A");
+  x2("[abc]?", "abc", 0, 1);
+  x2("[abc]*", "abc", 0, 3);
+  x2("[^abc]*", "abc", 0, 0);
+  n("[^abc]+", "abc");
+  x2("a?\?", "aaa", 0, 0);
+  x2("ba?\?b", "bab", 0, 3);
+  x2("a*?", "aaa", 0, 0);
+  x2("ba*?", "baa", 0, 1);
+  x2("ba*?b", "baab", 0, 4);
+  x2("a+?", "aaa", 0, 1);
+  x2("ba+?", "baa", 0, 2);
+  x2("ba+?b", "baab", 0, 4);
+  x2("(?:a?)?\?", "a", 0, 0);
+  x2("(?:a?\?)?", "a", 0, 0);
+  x2("(?:a?)+?", "aaa", 0, 1);
+  x2("(?:a+)?\?", "aaa", 0, 0);
+  x2("(?:a+)?\?b", "aaab", 0, 4);
+  x2("(?:ab)?{2}", "", 0, 0);
+  x2("(?:ab)?{2}", "ababa", 0, 4);
+  x2("(?:ab)*{0}", "ababa", 0, 0);
+  x2("(?:ab){3,}", "abababab", 0, 8);
+  n("(?:ab){3,}", "abab");
+  x2("(?:ab){2,4}", "ababab", 0, 6);
+  x2("(?:ab){2,4}", "ababababab", 0, 8);
+  x2("(?:ab){2,4}?", "ababababab", 0, 4);
+  x2("(?:ab){,}", "ab{,}", 0, 5);
+  x2("(?:abc)+?{2}", "abcabcabc", 0, 6);
+  x2("(?:X*)(?i:xa)", "XXXa", 0, 4);
+  x2("(d+)([^abc]z)", "dddz", 0, 4);
+  x2("([^abc]*)([^abc]z)", "dddz", 0, 4);
+  x2("(\\w+)(\\wz)", "dddz", 0, 4);
+  x3("(a)", "a", 0, 1, 1);
+  x3("(ab)", "ab", 0, 2, 1);
+  x2("((ab))", "ab", 0, 2);
+  x3("((ab))", "ab", 0, 2, 1);
+  x3("((ab))", "ab", 0, 2, 2);
+  x3("((((((((((((((((((((ab))))))))))))))))))))", "ab", 0, 2, 20);
+  x3("(ab)(cd)", "abcd", 0, 2, 1);
+  x3("(ab)(cd)", "abcd", 2, 4, 2);
+  x3("()(a)bc(def)ghijk", "abcdefghijk", 3, 6, 3);
+  x3("(()(a)bc(def)ghijk)", "abcdefghijk", 3, 6, 4);
+  x2("(^a)", "a", 0, 1);
+  x3("(a)|(a)", "ba", 1, 2, 1);
+  x3("(^a)|(a)", "ba", 1, 2, 2);
+  x3("(a?)", "aaa", 0, 1, 1);
+  x3("(a*)", "aaa", 0, 3, 1);
+  x3("(a*)", "", 0, 0, 1);
+  x3("(a+)", "aaaaaaa", 0, 7, 1);
+  x3("(a+|b*)", "bbbaa", 0, 3, 1);
+  x3("(a+|b?)", "bbbaa", 0, 1, 1);
+  x3("(abc)?", "abc", 0, 3, 1);
+  x3("(abc)*", "abc", 0, 3, 1);
+  x3("(abc)+", "abc", 0, 3, 1);
+  x3("(xyz|abc)+", "abc", 0, 3, 1);
+  x3("([xyz][abc]|abc)+", "abc", 0, 3, 1);
+  x3("((?i:abc))", "AbC", 0, 3, 1);
+  x2("(abc)(?i:\\1)", "abcABC", 0, 6);
+  x3("((?m:a.c))", "a\nc", 0, 3, 1);
+  x3("((?=az)a)", "azb", 0, 1, 1);
+  x3("abc|(.abd)", "zabd", 0, 4, 1);
+  x2("(?:abc)|(ABC)", "abc", 0, 3);
+  x3("(?i:(abc))|(zzz)", "ABC", 0, 3, 1);
+  x3("a*(.)", "aaaaz", 4, 5, 1);
+  x3("a*?(.)", "aaaaz", 0, 1, 1);
+  x3("a*?(c)", "aaaac", 4, 5, 1);
+  x3("[bcd]a*(.)", "caaaaz", 5, 6, 1);
+  x3("(\\Abb)cc", "bbcc", 0, 2, 1);
+  n("(\\Abb)cc", "zbbcc");
+  x3("(^bb)cc", "bbcc", 0, 2, 1);
+  n("(^bb)cc", "zbbcc");
+  x3("cc(bb$)", "ccbb", 2, 4, 1);
+  n("cc(bb$)", "ccbbb");
+  n("(\\1)", "");
+  n("\\1(a)", "aa");
+  n("(a(b)\\1)\\2+", "ababb");
+  n("(?:(?:\\1|z)(a))+$", "zaa");
+  x2("(?:(?:\\1|z)(a))+$", "zaaa", 0, 4);
+  x2("(a)(?=\\1)", "aa", 0, 1);
+  n("(a)$|\\1", "az");
+  x2("(a)\\1", "aa", 0, 2);
+  n("(a)\\1", "ab");
+  x2("(a?)\\1", "aa", 0, 2);
+  x2("(a?\?)\\1", "aa", 0, 0);
+  x2("(a*)\\1", "aaaaa", 0, 4);
+  x3("(a*)\\1", "aaaaa", 0, 2, 1);
+  x2("a(b*)\\1", "abbbb", 0, 5);
+  x2("a(b*)\\1", "ab", 0, 1);
+  x2("(a*)(b*)\\1\\2", "aaabbaaabb", 0, 10);
+  x2("(a*)(b*)\\2", "aaabbbb", 0, 7);
+  x2("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 8);
+  x3("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 3, 7);
+  x2("(a)(b)(c)\\2\\1\\3", "abcbac", 0, 6);
+  x2("([a-d])\\1", "cc", 0, 2);
+  x2("(\\w\\d\\s)\\1", "f5 f5 ", 0, 6);
+  n("(\\w\\d\\s)\\1", "f5 f5");
+  x2("(who|[a-c]{3})\\1", "whowho", 0, 6);
+  x2("...(who|[a-c]{3})\\1", "abcwhowho", 0, 9);
+  x2("(who|[a-c]{3})\\1", "cbccbc", 0, 6);
+  x2("(^a)\\1", "aa", 0, 2);
+  n("(^a)\\1", "baa");
+  n("(a$)\\1", "aa");
+  n("(ab\\Z)\\1", "ab");
+  x2("(a*\\Z)\\1", "a", 1, 1);
+  x2(".(a*\\Z)\\1", "ba", 1, 2);
+  x3("(.(abc)\\2)", "zabcabc", 0, 7, 1);
+  x3("(.(..\\d.)\\2)", "z12341234", 0, 9, 1);
+  x2("((?i:az))\\1", "AzAz", 0, 4);
+  n("((?i:az))\\1", "Azaz");
+  x2("(?<=a)b", "ab", 1, 2);
+  n("(?<=a)b", "bb");
+  x2("(?<=a|b)b", "bb", 1, 2);
+  x2("(?<=a|bc)b", "bcb", 2, 3);
+  x2("(?<=a|bc)b", "ab", 1, 2);
+  x2("(?<=a|bc||defghij|klmnopq|r)z", "rz", 1, 2);
+  x3("(?<=(abc))d", "abcd", 0, 3, 1);
+  x2("(?<=(?i:abc))d", "ABCd", 3, 4);
+  x2("(a)\\g<1>", "aa", 0, 2);
+  x2("(?<!a)b", "cb", 1, 2);
+  n("(?<!a)b", "ab");
+  x2("(?<!a|bc)b", "bbb", 0, 1);
+  n("(?<!a|bc)z", "bcz");
+  x2("(?<name1>a)", "a", 0, 1);
+  x2("(?<name_2>ab)\\g<name_2>", "abab", 0, 4);
+  x2("(?<name_3>.zv.)\\k<name_3>", "azvbazvb", 0, 8);
+  x2("(?<=\\g<ab>)|-\\zEND (?<ab>XyZ)", "XyZ", 3, 3);
+  x2("(?<n>|a\\g<n>)+", "", 0, 0);
+  x2("(?<n>|\\(\\g<n>\\))+$", "()(())", 0, 6);
+  x3("\\g<n>(?<n>.){0}", "X", 0, 1, 1);
+  x2("\\g<n>(abc|df(?<n>.YZ){2,8}){0}", "XYZ", 0, 3);
+  x2("\\A(?<n>(a\\g<n>)|)\\z", "aaaa", 0, 4);
+  x2("(?<n>|\\g<m>\\g<n>)\\z|\\zEND (?<m>a|(b)\\g<m>)", "bbbbabba", 0, 8);
+  x2("(?<name1240>\\w+\\sx)a+\\k<name1240>", "  fg xaaaaaaaafg x", 2, 18);
+  x3("(z)()()(?<_9>a)\\g<_9>", "zaa", 2, 3, 1);
+  x2("(.)(((?<_>a)))\\k<_>", "zaa", 0, 3);
+  x2("((?<name1>\\d)|(?<name2>\\w))(\\k<name1>|\\k<name2>)", "ff", 0, 2);
+  x2("(?:(?<x>)|(?<x>efg))\\k<x>", "", 0, 0);
+  x2("(?:(?<x>abc)|(?<x>efg))\\k<x>", "abcefgefg", 3, 9);
+  n("(?:(?<x>abc)|(?<x>efg))\\k<x>", "abcefg");
+  x2("(?:(?<n1>.)|(?<n1>..)|(?<n1>...)|(?<n1>....)|(?<n1>.....)|(?<n1>......)|(?<n1>.......)|(?<n1>........)|(?<n1>.........)|(?<n1>..........)|(?<n1>...........)|(?<n1>............)|(?<n1>.............)|(?<n1>..............))\\k<n1>$", "a-pyumpyum", 2, 10);
+  x3("(?:(?<n1>.)|(?<n1>..)|(?<n1>...)|(?<n1>....)|(?<n1>.....)|(?<n1>......)|(?<n1>.......)|(?<n1>........)|(?<n1>.........)|(?<n1>..........)|(?<n1>...........)|(?<n1>............)|(?<n1>.............)|(?<n1>..............))\\k<n1>$", "xxxxabcdefghijklmnabcdefghijklmn", 4, 18, 14);
+  x3("(?<name1>)(?<name2>)(?<name3>)(?<name4>)(?<name5>)(?<name6>)(?<name7>)(?<name8>)(?<name9>)(?<name10>)(?<name11>)(?<name12>)(?<name13>)(?<name14>)(?<name15>)(?<name16>aaa)(?<name17>)$", "aaa", 0, 3, 16);
+  x2("(?<foo>a|\\(\\g<foo>\\))", "a", 0, 1);
+  x2("(?<foo>a|\\(\\g<foo>\\))", "((((((a))))))", 0, 13);
+  x3("(?<foo>a|\\(\\g<foo>\\))", "((((((((a))))))))", 0, 17, 1);
+  x2("\\g<bar>|\\zEND(?<bar>.*abc$)", "abcxxxabc", 0, 9);
+  x2("\\g<1>|\\zEND(.a.)", "bac", 0, 3);
+  x3("\\g<_A>\\g<_A>|\\zEND(.a.)(?<_A>.b.)", "xbxyby", 3, 6, 1);
+  x2("\\A(?:\\g<pon>|\\g<pan>|\\zEND  (?<pan>a|c\\g<pon>c)(?<pon>b|d\\g<pan>d))$", "cdcbcdc", 0, 7);
+  x2("\\A(?<n>|a\\g<m>)\\z|\\zEND (?<m>\\g<n>)", "aaaa", 0, 4);
+  x2("(?<n>(a|b\\g<n>c){3,5})", "baaaaca", 1, 5);
+  x2("(?<n>(a|b\\g<n>c){3,5})", "baaaacaaaaa", 0, 10);
+  x2("(?<pare>\\(([^\\(\\)]++|\\g<pare>)*+\\))", "((a))", 0, 5);
+  x2("()*\\1", "", 0, 0);
+  x2("(?:()|())*\\1\\2", "", 0, 0);
+  x3("(?:\\1a|())*", "a", 0, 0, 1);
+  x2("x((.)*)*x", "0x1x2x3", 1, 6);
+  x2("x((.)*)*x(?i:\\1)\\Z", "0x1x2x1X2", 1, 9);
+  x2("(?:()|()|()|()|()|())*\\2\\5", "", 0, 0);
+  x2("(?:()|()|()|(x)|()|())*\\2b\\5", "b", 0, 1);
+  x2("[0-9-a]", "-", 0, 1);   // PR#44
+  n("[0-9-a]", ":");          // PR#44
+  x3("(\\(((?:[^(]|\\g<1>)*)\\))", "(abc)(abc)", 1, 4, 2); // PR#43
+  x2("\\o{101}", "A", 0, 1);
+  x2("(?:\\k'+1'B|(A)C)*", "ACAB", 0, 4); // relative backref by postitive number
+  x2("\\g<+2>(abc)(ABC){0}", "ABCabc", 0, 6); // relative call by positive number
+  x2("A\\g'0'|B()", "AAAAB", 0, 5);
+  x3("(A\\g'0')|B", "AAAAB", 0, 5, 1);
+  x2("(a*)(?(1))aa", "aaaaa", 0, 5);
+  x2("(a*)(?(-1))aa", "aaaaa", 0, 5);
+  x2("(?<name>aaa)(?('name'))aa", "aaaaa", 0, 5);
+  x2("(a)(?(1)aa|bb)a", "aaaaa", 0, 4);
+  x2("(?:aa|())(?(<1>)aa|bb)a", "aabba", 0, 5);
+  x2("(?:aa|())(?('1')aa|bb|cc)a", "aacca", 0, 5);
+  x3("(a*)(?(1)aa|a)b", "aaab", 0, 1, 1);
+  n("(a)(?(1)a|b)c", "abc");
+  x2("(a)(?(1)|)c", "ac", 0, 2);
+  n("(?()aaa|bbb)", "bbb");
+  x2("(a)(?(1+0)b|c)d", "abd", 0, 3);
+  x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "ace", 0, 3);
+  x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "bce", 0, 3);
+  x2("\\R", "\r\n", 0, 2);
+  x2("\\R", "\r", 0, 1);
+  x2("\\R", "\n", 0, 1);
+  x2("\\R", "\x0b", 0, 1);
+  n("\\R\\n", "\r\n");
+  x2("\\R", "\xc2\x85", 0, 2);
+  x2("\\N", "a", 0, 1);
+  n("\\N", "\n");
+  n("(?m:\\N)", "\n");
+  n("(?-m:\\N)", "\n");
+  x2("\\O", "a", 0, 1);
+  x2("\\O", "\n", 0, 1);
+  x2("(?m:\\O)", "\n", 0, 1);
+  x2("(?-m:\\O)", "\n", 0, 1);
+  x2("\\K", "a", 0, 0);
+  x2("a\\K", "a", 1, 1);
+  x2("a\\Kb", "ab", 1, 2);
+  x2("(a\\Kb|ac\\Kd)", "acd", 2, 3);
+  x2("(a\\Kb|\\Kac\\K)*", "acababacab", 9, 10);
+
+  x2("(?~)", "", 0, 0);
+  x2("(?~)", "A", 0, 0);
+  x2("aaaaa(?~)", "aaaaaaaaaa", 0, 5);
+  x2("(?~(?:|aaa))", "aaa", 0, 0);
+  x2("(?~aaa|)", "aaa", 0, 0);
+  x2("a(?~(?~)).", "abcdefghijklmnopqrstuvwxyz", 0, 26); // !!!
+  x2("/\\*(?~\\*/)\\*/", "/* */ */", 0, 5);
+  x2("(?~\\w+)zzzzz", "zzzzz", 0, 5);
+  x2("(?~\\w*)zzzzz", "zzzzz", 0, 5);
+  x2("(?~A.C|B)", "ABC", 0, 0);
+  x2("(?~XYZ|ABC)a", "ABCa", 1, 4);
+  x2("(?~XYZ|ABC)a", "aABCa", 0, 1);
+  x2("<[^>]*>(?~[<>])</[^>]*>", "<a>vvv</a>   <b>  </b>", 0, 10);
+  x2("(?~ab)", "ccc\ndab", 0, 5);
+  x2("(?m:(?~ab))", "ccc\ndab", 0, 5);
+  x2("(?-m:(?~ab))", "ccc\ndab", 0, 5);
+  x2("(?~abc)xyz", "xyz012345678901234567890123456789abc", 0, 3);
+
+  // absent with expr
+  x2("(?~|78|\\d*)", "123456789", 0, 6);
+  x2("(?~|def|(?:abc|de|f){0,100})", "abcdedeabcfdefabc", 0, 11);
+  x2("(?~|ab|.*)", "ccc\nddd", 0, 3);
+  x2("(?~|ab|\\O*)", "ccc\ndab", 0, 5);
+  x2("(?~|ab|\\O{2,10})", "ccc\ndab", 0, 5);
+  x2("(?~|ab|\\O{1,10})", "ab", 1, 2);
+  n("(?~|ab|\\O{2,10})", "ab");
+  x2("(?~|abc|\\O{1,10})", "abc", 1, 3);
+  x2("(?~|ab|\\O{5,10})|abc", "abc", 0, 3);
+  x2("(?~|ab|\\O{1,10})", "cccccccccccab", 0, 10);
+  x2("(?~|aaa|)", "aaa", 0, 0);
+  x2("(?~||a*)", "aaaaaa", 0, 0);
+  x2("(?~||a*?)", "aaaaaa", 0, 0);
+  x2("(a)(?~|b|\\1)", "aaaaaa", 0, 2);
+  x2("(a)(?~|bb|(?:a\\1)*)", "aaaaaa", 0, 5);
+  x2("(b|c)(?~|abac|(?:a\\1)*)", "abababacabab", 1, 4);
+  n("(?~|c|a*+)a", "aaaaa");
+  x2("(?~|aaaaa|a*+)", "aaaaa", 0, 0);
+  x2("(?~|aaaaaa|a*+)b", "aaaaaab", 1, 7);
+  x2("(?~|abcd|(?>))", "zzzabcd", 0, 0);
+  x2("(?~|abc|a*?)", "aaaabc", 0, 0);
+
+  // absent range cutter
+  x2("(?~|abc)a*", "aaaaaabc", 0, 5);
+  x2("(?~|abc)a*z|aaaaaabc", "aaaaaabc", 0, 8);
+  x2("(?~|aaaaaa)a*", "aaaaaa", 0, 0);
+  x2("(?~|abc)aaaa|aaaabc", "aaaabc", 0, 6);
+  x2("(?>(?~|abc))aaaa|aaaabc", "aaaabc", 0, 6);
+  x2("(?~|)a", "a", 0, 1);
+  n("(?~|a)a", "a");
+  x2("(?~|a)(?~|)a", "a", 0, 1);
+  x2("(?~|a).*(?~|)a", "bbbbbbbbbbbbbbbbbbbba", 0, 21);
+  x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaapqrabc", 0, 16);
+  x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaaabcpqrabc", 11, 19);
+  n("\\A(?~|abc).*(xyz|pqrabc)(?~|)abc", "aaaaxyzaaaabcpqrabcabc");
+
+  x2("", "あ", 0, 0);
+  x2("あ", "あ", 0, 3);
+  n("い", "あ");
+  x2("うう", "うう", 0, 6);
+  x2("あいう", "あいう", 0, 9);
+  x2("こここここここここここここここここここここここここここここここここここ", "こここここここここここここここここここここここここここここここここここ", 0, 105);
+  x2("あ", "いあ", 3, 6);
+  x2("いう", "あいう", 3, 9);
+  x2("\\xca\\xb8", "\xca\xb8", 0, 2);
+  x2(".", "あ", 0, 3);
+  x2("..", "かき", 0, 6);
+  x2("\\w", "お", 0, 3);
+  n("\\W", "あ");
+  x2("[\\W]", "う$", 3, 4);
+  x2("\\S", "そ", 0, 3);
+  x2("\\S", "漢", 0, 3);
+  x2("\\b", "気 ", 0, 0);
+  x2("\\b", " ほ", 1, 1);
+  x2("\\B", "せそ ", 3, 3);
+  x2("\\B", "う ", 4, 4);
+  x2("\\B", " い", 0, 0);
+  x2("[たち]", "ち", 0, 3);
+  n("[なに]", "ぬ");
+  x2("[う-お]", "え", 0, 3);
+  n("[^け]", "け");
+  x2("[\\w]", "ね", 0, 3);
+  n("[\\d]", "ふ");
+  x2("[\\D]", "は", 0, 3);
+  n("[\\s]", "く");
+  x2("[\\S]", "へ", 0, 3);
+  x2("[\\w\\d]", "よ", 0, 3);
+  x2("[\\w\\d]", "   よ", 3, 6);
+  n("\\w鬼車", " 鬼車");
+  x2("鬼\\W車", "鬼 車", 0, 7);
+  x2("あ.い.う", "ああいいう", 0, 15);
+  x2(".\\wう\\W..ぞ", "えうう うぞぞ", 0, 19);
+  x2("\\s\\wこここ", " ここここ", 0, 13);
+  x2("ああ.け", "ああけけ", 0, 12);
+  n(".い", "いえ");
+  x2(".お", "おお", 0, 6);
+  x2("^あ", "あ", 0, 3);
+  x2("^む$", "む", 0, 3);
+  x2("^\\w$", "に", 0, 3);
+  x2("^\\wかきくけこ$", "zかきくけこ", 0, 16);
+  x2("^\\w...うえお$", "zあいううえお", 0, 19);
+  x2("\\w\\w\\s\\Wおおお\\d", "aお  おおお4", 0, 16);
+  x2("\\Aたちつ", "たちつ", 0, 9);
+  x2("むめも\\Z", "むめも", 0, 9);
+  x2("かきく\\z", "かきく", 0, 9);
+  x2("かきく\\Z", "かきく\n", 0, 9);
+  x2("\\Gぽぴ", "ぽぴ", 0, 6);
+  n("\\Gえ", "うえお");
+  n("とて\\G", "とて");
+  n("まみ\\A", "まみ");
+  n("ま\\Aみ", "まみ");
+  x2("(?=せ)せ", "せ", 0, 3);
+  n("(?=う).", "い");
+  x2("(?!う)か", "か", 0, 3);
+  n("(?!と)あ", "と");
+  x2("(?i:あ)", "あ", 0, 3);
+  x2("(?i:ぶべ)", "ぶべ", 0, 6);
+  n("(?i:い)", "う");
+  x2("(?m:よ.)", "よ\n", 0, 4);
+  x2("(?m:.め)", "ま\nめ", 3, 7);
+  x2("あ?", "", 0, 0);
+  x2("変?", "化", 0, 0);
+  x2("変?", "変", 0, 3);
+  x2("量*", "", 0, 0);
+  x2("量*", "量", 0, 3);
+  x2("子*", "子子子", 0, 9);
+  x2("馬*", "鹿馬馬馬馬", 0, 0);
+  n("山+", "");
+  x2("河+", "河", 0, 3);
+  x2("時+", "時時時時", 0, 12);
+  x2("え+", "ええううう", 0, 6);
+  x2("う+", "おうううう", 3, 15);
+  x2(".?", "た", 0, 3);
+  x2(".*", "ぱぴぷぺ", 0, 12);
+  x2(".+", "ろ", 0, 3);
+  x2(".+", "いうえか\n", 0, 12);
+  x2("あ|い", "あ", 0, 3);
+  x2("あ|い", "い", 0, 3);
+  x2("あい|いう", "あい", 0, 6);
+  x2("あい|いう", "いう", 0, 6);
+  x2("を(?:かき|きく)", "をかき", 0, 9);
+  x2("を(?:かき|きく)け", "をきくけ", 0, 12);
+  x2("あい|(?:あう|あを)", "あを", 0, 6);
+  x2("あ|い|う", "えう", 3, 6);
+  x2("あ|い|うえ|おかき|く|けこさ|しすせ|そ|たち|つてとなに|ぬね", "しすせ", 0, 9);
+  n("あ|い|うえ|おかき|く|けこさ|しすせ|そ|たち|つてとなに|ぬね", "すせ");
+  x2("あ|^わ", "ぶあ", 3, 6);
+  x2("あ|^を", "をあ", 0, 3);
+  x2("鬼|\\G車", "け車鬼", 6, 9);
+  x2("鬼|\\G車", "車鬼", 0, 3);
+  x2("鬼|\\A車", "b車鬼", 4, 7);
+  x2("鬼|\\A車", "車", 0, 3);
+  x2("鬼|車\\Z", "車鬼", 3, 6);
+  x2("鬼|車\\Z", "車", 0, 3);
+  x2("鬼|車\\Z", "車\n", 0, 3);
+  x2("鬼|車\\z", "車鬼", 3, 6);
+  x2("鬼|車\\z", "車", 0, 3);
+  x2("\\w|\\s", "お", 0, 3);
+  x2("\\w|%", "%お", 0, 1);
+  x2("\\w|[&$]", "う&", 0, 3);
+  x2("[い-け]", "う", 0, 3);
+  x2("[い-け]|[^か-こ]", "あ", 0, 3);
+  x2("[い-け]|[^か-こ]", "か", 0, 3);
+  x2("[^あ]", "\n", 0, 1);
+  x2("(?:あ|[う-き])|いを", "うを", 0, 3);
+  x2("(?:あ|[う-き])|いを", "いを", 0, 6);
+  x2("あいう|(?=けけ)..ほ", "けけほ", 0, 9);
+  x2("あいう|(?!けけ)..ほ", "あいほ", 0, 9);
+  x2("(?=をあ)..あ|(?=をを)..あ", "ををあ", 0, 9);
+  x2("(?<=あ|いう)い", "いうい", 6, 9);
+  n("(?>あ|あいえ)う", "あいえう");
+  x2("(?>あいえ|あ)う", "あいえう", 0, 12);
+  x2("あ?|い", "あ", 0, 3);
+  x2("あ?|い", "い", 0, 0);
+  x2("あ?|い", "", 0, 0);
+  x2("あ*|い", "ああ", 0, 6);
+  x2("あ*|い*", "いあ", 0, 0);
+  x2("あ*|い*", "あい", 0, 3);
+  x2("[aあ]*|い*", "aあいいい", 0, 4);
+  x2("あ+|い*", "", 0, 0);
+  x2("あ+|い*", "いいい", 0, 9);
+  x2("あ+|い*", "あいいい", 0, 3);
+  x2("あ+|い*", "aあいいい", 0, 0);
+  n("あ+|い+", "");
+  x2("(あ|い)?", "い", 0, 3);
+  x2("(あ|い)*", "いあ", 0, 6);
+  x2("(あ|い)+", "いあい", 0, 9);
+  x2("(あい|うあ)+", "うああいうえ", 0, 12);
+  x2("(あい|うえ)+", "うああいうえ", 6, 18);
+  x2("(あい|うあ)+", "ああいうあ", 3, 15);
+  x2("(あい|うあ)+", "あいをうあ", 0, 6);
+  x2("(あい|うあ)+", "$$zzzzあいをうあ", 6, 12);
+  x2("(あ|いあい)+", "あいあいあ", 0, 15);
+  x2("(あ|いあい)+", "いあ", 3, 6);
+  x2("(あ|いあい)+", "いあああいあ", 3, 12);
+  x2("(?:あ|い)(?:あ|い)", "あい", 0, 6);
+  x2("(?:あ*|い*)(?:あ*|い*)", "あああいいい", 0, 9);
+  x2("(?:あ*|い*)(?:あ+|い+)", "あああいいい", 0, 18);
+  x2("(?:あ+|い+){2}", "あああいいい", 0, 18);
+  x2("(?:あ+|い+){1,2}", "あああいいい", 0, 18);
+  x2("(?:あ+|\\Aい*)うう", "うう", 0, 6);
+  n("(?:あ+|\\Aい*)うう", "あいうう");
+  x2("(?:^あ+|い+)*う", "ああいいいあいう", 18, 24);
+  x2("(?:^あ+|い+)*う", "ああいいいいう", 0, 21);
+  x2("う{0,}", "うううう", 0, 12);
+  x2("あ|(?i)c", "C", 0, 1);
+  x2("(?i)c|あ", "C", 0, 1);
+  x2("(?i:あ)|a", "a", 0, 1);
+  n("(?i:あ)|a", "A");
+  x2("[あいう]?", "あいう", 0, 3);
+  x2("[あいう]*", "あいう", 0, 9);
+  x2("[^あいう]*", "あいう", 0, 0);
+  n("[^あいう]+", "あいう");
+  x2("あ?\?", "あああ", 0, 0);
+  x2("いあ?\?い", "いあい", 0, 9);
+  x2("あ*?", "あああ", 0, 0);
+  x2("いあ*?", "いああ", 0, 3);
+  x2("いあ*?い", "いああい", 0, 12);
+  x2("あ+?", "あああ", 0, 3);
+  x2("いあ+?", "いああ", 0, 6);
+  x2("いあ+?い", "いああい", 0, 12);
+  x2("(?:天?)?\?", "天", 0, 0);
+  x2("(?:天?\?)?", "天", 0, 0);
+  x2("(?:夢?)+?", "夢夢夢", 0, 3);
+  x2("(?:風+)?\?", "風風風", 0, 0);
+  x2("(?:雪+)?\?霜", "雪雪雪霜", 0, 12);
+  x2("(?:あい)?{2}", "", 0, 0);
+  x2("(?:鬼車)?{2}", "鬼車鬼車鬼", 0, 12);
+  x2("(?:鬼車)*{0}", "鬼車鬼車鬼", 0, 0);
+  x2("(?:鬼車){3,}", "鬼車鬼車鬼車鬼車", 0, 24);
+  n("(?:鬼車){3,}", "鬼車鬼車");
+  x2("(?:鬼車){2,4}", "鬼車鬼車鬼車", 0, 18);
+  x2("(?:鬼車){2,4}", "鬼車鬼車鬼車鬼車鬼車", 0, 24);
+  x2("(?:鬼車){2,4}?", "鬼車鬼車鬼車鬼車鬼車", 0, 12);
+  x2("(?:鬼車){,}", "鬼車{,}", 0, 9);
+  x2("(?:かきく)+?{2}", "かきくかきくかきく", 0, 18);
+  x3("(火)", "火", 0, 3, 1);
+  x3("(火水)", "火水", 0, 6, 1);
+  x2("((時間))", "時間", 0, 6);
+  x3("((風水))", "風水", 0, 6, 1);
+  x3("((昨日))", "昨日", 0, 6, 2);
+  x3("((((((((((((((((((((量子))))))))))))))))))))", "量子", 0, 6, 20);
+  x3("(あい)(うえ)", "あいうえ", 0, 6, 1);
+  x3("(あい)(うえ)", "あいうえ", 6, 12, 2);
+  x3("()(あ)いう(えおか)きくけこ", "あいうえおかきくけこ", 9, 18, 3);
+  x3("(()(あ)いう(えおか)きくけこ)", "あいうえおかきくけこ", 9, 18, 4);
+  x3(".*(フォ)ン・マ(ン()シュタ)イン", "フォン・マンシュタイン", 15, 27, 2);
+  x2("(^あ)", "あ", 0, 3);
+  x3("(あ)|(あ)", "いあ", 3, 6, 1);
+  x3("(^あ)|(あ)", "いあ", 3, 6, 2);
+  x3("(あ?)", "あああ", 0, 3, 1);
+  x3("(ま*)", "ままま", 0, 9, 1);
+  x3("(と*)", "", 0, 0, 1);
+  x3("(る+)", "るるるるるるる", 0, 21, 1);
+  x3("(ふ+|へ*)", "ふふふへへ", 0, 9, 1);
+  x3("(あ+|い?)", "いいいああ", 0, 3, 1);
+  x3("(あいう)?", "あいう", 0, 9, 1);
+  x3("(あいう)*", "あいう", 0, 9, 1);
+  x3("(あいう)+", "あいう", 0, 9, 1);
+  x3("(さしす|あいう)+", "あいう", 0, 9, 1);
+  x3("([なにぬ][かきく]|かきく)+", "かきく", 0, 9, 1);
+  x3("((?i:あいう))", "あいう", 0, 9, 1);
+  x3("((?m:あ.う))", "あ\nう", 0, 7, 1);
+  x3("((?=あん)あ)", "あんい", 0, 3, 1);
+  x3("あいう|(.あいえ)", "んあいえ", 0, 12, 1);
+  x3("あ*(.)", "ああああん", 12, 15, 1);
+  x3("あ*?(.)", "ああああん", 0, 3, 1);
+  x3("あ*?(ん)", "ああああん", 12, 15, 1);
+  x3("[いうえ]あ*(.)", "えああああん", 15, 18, 1);
+  x3("(\\Aいい)うう", "いいうう", 0, 6, 1);
+  n("(\\Aいい)うう", "んいいうう");
+  x3("(^いい)うう", "いいうう", 0, 6, 1);
+  n("(^いい)うう", "んいいうう");
+  x3("ろろ(るる$)", "ろろるる", 6, 12, 1);
+  n("ろろ(るる$)", "ろろるるる");
+  x2("(無)\\1", "無無", 0, 6);
+  n("(無)\\1", "無武");
+  x2("(空?)\\1", "空空", 0, 6);
+  x2("(空?\?)\\1", "空空", 0, 0);
+  x2("(空*)\\1", "空空空空空", 0, 12);
+  x3("(空*)\\1", "空空空空空", 0, 6, 1);
+  x2("あ(い*)\\1", "あいいいい", 0, 15);
+  x2("あ(い*)\\1", "あい", 0, 3);
+  x2("(あ*)(い*)\\1\\2", "あああいいあああいい", 0, 30);
+  x2("(あ*)(い*)\\2", "あああいいいい", 0, 21);
+  x3("(あ*)(い*)\\2", "あああいいいい", 9, 15, 2);
+  x2("(((((((ぽ*)ぺ))))))ぴ\\7", "ぽぽぽぺぴぽぽぽ", 0, 24);
+  x3("(((((((ぽ*)ぺ))))))ぴ\\7", "ぽぽぽぺぴぽぽぽ", 0, 9, 7);
+  x2("(は)(ひ)(ふ)\\2\\1\\3", "はひふひはふ", 0, 18);
+  x2("([き-け])\\1", "くく", 0, 6);
+  x2("(\\w\\d\\s)\\1", "あ5 あ5 ", 0, 10);
+  n("(\\w\\d\\s)\\1", "あ5 あ5");
+  x2("(誰?|[あ-う]{3})\\1", "誰?誰?", 0, 12);
+  x2("...(誰?|[あ-う]{3})\\1", "あaあ誰?誰?", 0, 19);
+  x2("(誰?|[あ-う]{3})\\1", "ういうういう", 0, 18);
+  x2("(^こ)\\1", "ここ", 0, 6);
+  n("(^む)\\1", "めむむ");
+  n("(あ$)\\1", "ああ");
+  n("(あい\\Z)\\1", "あい");
+  x2("(あ*\\Z)\\1", "あ", 3, 3);
+  x2(".(あ*\\Z)\\1", "いあ", 3, 6);
+  x3("(.(やいゆ)\\2)", "zやいゆやいゆ", 0, 19, 1);
+  x3("(.(..\\d.)\\2)", "あ12341234", 0, 11, 1);
+  x2("((?i:あvず))\\1", "あvずあvず", 0, 14);
+  x2("(?<愚か>変|\\(\\g<愚か>\\))", "((((((変))))))", 0, 15);
+  x2("\\A(?:\\g<阿_1>|\\g<云_2>|\\z終了  (?<阿_1>観|自\\g<云_2>自)(?<云_2>在|菩薩\\g<阿_1>菩薩))$", "菩薩自菩薩自在自菩薩自菩薩", 0, 39);
+  x2("[[ひふ]]", "ふ", 0, 3);
+  x2("[[いおう]か]", "か", 0, 3);
+  n("[[^あ]]", "あ");
+  n("[^[あ]]", "あ");
+  x2("[^[^あ]]", "あ", 0, 3);
+  x2("[[かきく]&&きく]", "く", 0, 3);
+  n("[[かきく]&&きく]", "か");
+  n("[[かきく]&&きく]", "け");
+  x2("[あ-ん&&い-を&&う-ゑ]", "ゑ", 0, 3);
+  n("[^あ-ん&&い-を&&う-ゑ]", "ゑ");
+  x2("[[^あ&&あ]&&あ-ん]", "い", 0, 3);
+  n("[[^あ&&あ]&&あ-ん]", "あ");
+  x2("[[^あ-ん&&いうえお]&&[^う-か]]", "き", 0, 3);
+  n("[[^あ-ん&&いうえお]&&[^う-か]]", "い");
+  x2("[^[^あいう]&&[^うえお]]", "う", 0, 3);
+  x2("[^[^あいう]&&[^うえお]]", "え", 0, 3);
+  n("[^[^あいう]&&[^うえお]]", "か");
+  x2("[あ-&&-あ]", "-", 0, 1);
+  x2("[^[^a-zあいう]&&[^bcdefgうえお]q-w]", "え", 0, 3);
+  x2("[^[^a-zあいう]&&[^bcdefgうえお]g-w]", "f", 0, 1);
+  x2("[^[^a-zあいう]&&[^bcdefgうえお]g-w]", "g", 0, 1);
+  n("[^[^a-zあいう]&&[^bcdefgうえお]g-w]", "2");
+  x2("a<b>バージョンのダウンロード<\\/b>", "a<b>バージョンのダウンロード</b>", 0, 44);
+  x2(".<b>バージョンのダウンロード<\\/b>", "a<b>バージョンのダウンロード</b>", 0, 44);
+  x2("\\n?\\z", "こんにちは", 15, 15);
+
+  x2("\\p{Hiragana}", "ぴ", 0, 3);
+  n("\\P{Hiragana}", "ぴ");
+
+  x2("\\p{Word}", "こ", 0, 3);
+  n("\\p{^Word}", "こ");
+  x2("[\\p{Word}]", "こ", 0, 3);
+  n("[\\p{^Word}]", "こ");
+  n("[^\\p{Word}]", "こ");
+  x2("[^\\p{^Word}]", "こ", 0, 3);
+  x2("[^\\p{^Word}&&\\p{ASCII}]", "こ", 0, 3);
+  x2("[^\\p{^Word}&&\\p{ASCII}]", "a", 0, 1);
+  n("[^\\p{^Word}&&\\p{ASCII}]", "#");
+  x2("[^[\\p{^Word}]&&[\\p{ASCII}]]", "こ", 0, 3);
+  x2("[^[\\p{ASCII}]&&[^\\p{Word}]]", "こ", 0, 3);
+  n("[[\\p{ASCII}]&&[^\\p{Word}]]", "こ");
+  x2("[^[\\p{^Word}]&&[^\\p{ASCII}]]", "こ", 0, 3);
+  x2("[^\\x{104a}]", "こ", 0, 3);
+  x2("[^\\p{^Word}&&[^\\x{104a}]]", "こ", 0, 3);
+  x2("[^[\\p{^Word}]&&[^\\x{104a}]]", "こ", 0, 3);
+  n("[^\\p{Word}||[^\\x{104a}]]", "こ");
+
+  x2("\\p{^Cntrl}", "こ", 0, 3);
+  n("\\p{Cntrl}", "こ");
+  x2("[\\p{^Cntrl}]", "こ", 0, 3);
+  n("[\\p{Cntrl}]", "こ");
+  n("[^\\p{^Cntrl}]", "こ");
+  x2("[^\\p{Cntrl}]", "こ", 0, 3);
+  x2("[^\\p{Cntrl}&&\\p{ASCII}]", "こ", 0, 3);
+  x2("[^\\p{Cntrl}&&\\p{ASCII}]", "a", 0, 1);
+  n("[^\\p{^Cntrl}&&\\p{ASCII}]", "#");
+  x2("[^[\\p{^Cntrl}]&&[\\p{ASCII}]]", "こ", 0, 3);
+  x2("[^[\\p{ASCII}]&&[^\\p{Cntrl}]]", "こ", 0, 3);
+  n("[[\\p{ASCII}]&&[^\\p{Cntrl}]]", "こ");
+  n("[^[\\p{^Cntrl}]&&[^\\p{ASCII}]]", "こ");
+  n("[^\\p{^Cntrl}&&[^\\x{104a}]]", "こ");
+  n("[^[\\p{^Cntrl}]&&[^\\x{104a}]]", "こ");
+  n("[^\\p{Cntrl}||[^\\x{104a}]]", "こ");
+
+  x2("(?-W:\\p{Word})", "こ", 0, 3);
+  n("(?W:\\p{Word})", "こ");
+  x2("(?W:\\p{Word})", "k", 0, 1);
+  x2("(?-W:[[:word:]])", "こ", 0, 3);
+  n("(?W:[[:word:]])", "こ");
+  x2("(?-D:\\p{Digit})", "3", 0, 3);
+  n("(?D:\\p{Digit})", "3");
+  x2("(?-S:\\p{Space})", "\xc2\x85", 0, 2);
+  n("(?S:\\p{Space})", "\xc2\x85");
+  x2("(?-P:\\p{Word})", "こ", 0, 3);
+  n("(?P:\\p{Word})", "こ");
+  x2("(?-W:\\w)", "こ", 0, 3);
+  n("(?W:\\w)", "こ");
+  x2("(?-W:\\w)", "k", 0, 1);
+  x2("(?W:\\w)", "k", 0, 1);
+  n("(?-W:\\W)", "こ");
+  x2("(?W:\\W)", "こ", 0, 3);
+  n("(?-W:\\W)", "k");
+  n("(?W:\\W)", "k");
+
+  x2("(?-W:\\b)", "こ", 0, 0);
+  n("(?W:\\b)", "こ");
+  x2("(?-W:\\b)", "h", 0, 0);
+  x2("(?W:\\b)", "h", 0, 0);
+  n("(?-W:\\B)", "こ");
+  x2("(?W:\\B)", "こ", 0, 0);
+  n("(?-W:\\B)", "h");
+  n("(?W:\\B)", "h");
+  x2("(?-P:\\b)", "こ", 0, 0);
+  n("(?P:\\b)", "こ");
+  x2("(?-P:\\b)", "h", 0, 0);
+  x2("(?P:\\b)", "h", 0, 0);
+  n("(?-P:\\B)", "こ");
+  x2("(?P:\\B)", "こ", 0, 0);
+  n("(?-P:\\B)", "h");
+  n("(?P:\\B)", "h");
+
+  x2("\\p{InBasicLatin}", "\x41", 0, 1);
+  //x2("\\p{Grapheme_Cluster_Break_Regional_Indicator}", "\xF0\x9F\x87\xA9", 0, 4);
+  //n("\\p{Grapheme_Cluster_Break_Regional_Indicator}",  "\xF0\x9F\x87\xA5");
+
+  // extended grapheme cluster
+
+  // CR + LF
+  n(".\\y\\O", "\x0d\x0a");
+  x2(".\\Y\\O", "\x0d\x0a", 0, 2);
+
+  // LATIN SMALL LETTER G, COMBINING DIAERESIS
+  n("^.\\y.$", "\x67\xCC\x88");
+  x2(".\\Y.", "\x67\xCC\x88", 0, 3);
+  x2("\\y.\\Y.\\y", "\x67\xCC\x88", 0, 3);
+  // HANGUL SYLLABLE GAG
+  x2("\\y.\\y", "\xEA\xB0\x81", 0, 3);
+  // HANGUL CHOSEONG KIYEOK, HANGUL JUNGSEONG A, HANGUL JONGSEONG KIYEOK
+  x2("^.\\Y.\\Y.$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8", 0, 9);
+  n("^.\\y.\\Y.$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8");
+  // TAMIL LETTER NA, TAMIL VOWEL SIGN I,
+  x2(".\\Y.", "\xE0\xAE\xA8\xE0\xAE\xBF", 0, 6);
+  n(".\\y.", "\xE0\xAE\xA8\xE0\xAE\xBF");
+  // THAI CHARACTER KO KAI, THAI CHARACTER SARA AM
+  x2(".\\Y.", "\xE0\xB8\x81\xE0\xB8\xB3", 0, 6);
+  n(".\\y.", "\xE0\xB8\x81\xE0\xB8\xB3");
+  // DEVANAGARI LETTER SSA, DEVANAGARI VOWEL SIGN I
+  x2(".\\Y.", "\xE0\xA4\xB7\xE0\xA4\xBF", 0, 6);
+  n(".\\y.", "\xE0\xA4\xB7\xE0\xA4\xBF");
+
+  // CR + LF
+  n("^\\X\\X$", "\x0d\x0a");
+  x2("^\\X$", "\x0d\x0a", 0, 2);
+  // LATIN SMALL LETTER G, COMBINING DIAERESIS
+  n("^\\X\\X.$", "\x67\xCC\x88");
+  x2("^\\X$", "\x67\xCC\x88", 0, 3);
+  // HANGUL CHOSEONG KIYEOK, HANGUL JUNGSEONG A, HANGUL JONGSEONG KIYEOK
+  x2("^\\X$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8", 0, 9);
+  n("^\\X\\X\\X$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8");
+  // TAMIL LETTER NA, TAMIL VOWEL SIGN I,
+  x2("^\\X$", "\xE0\xAE\xA8\xE0\xAE\xBF", 0, 6);
+  n("\\X\\X", "\xE0\xAE\xA8\xE0\xAE\xBF");
+  // THAI CHARACTER KO KAI, THAI CHARACTER SARA AM
+  x2("^\\X$", "\xE0\xB8\x81\xE0\xB8\xB3", 0, 6);
+  n("\\X\\X", "\xE0\xB8\x81\xE0\xB8\xB3");
+  // DEVANAGARI LETTER SSA, DEVANAGARI VOWEL SIGN I
+  x2("^\\X$", "\xE0\xA4\xB7\xE0\xA4\xBF", 0, 6);
+  n("\\X\\X", "\xE0\xA4\xB7\xE0\xA4\xBF");
+
+  n("^\\X.$", "\xE0\xAE\xA8\xE0\xAE\xBF");
+
+
+  e("(?<abc>\\g<abc>)", "zzzz", ONIGERR_NEVER_ENDING_RECURSION);
+  e("(?<=(?>abc))", "abc", ONIGERR_INVALID_LOOK_BEHIND_PATTERN);
+
+  fprintf(stdout,
+       "\nRESULT   SUCC: %d,  FAIL: %d,  ERROR: %d      (by Oniguruma %s)\n",
+       nsucc, nfail, nerror, onig_version());
+
+  onig_region_free(region, 1);
+  onig_end();
+
+  return ((nfail == 0 && nerror == 0) ? 0 : -1);
+}
diff --git a/test/testc.c b/test/testc.c
index 222c9cd..1a60c8a 100644
--- a/test/testc.c
+++ b/test/testc.c
@@ -639,6 +639,7 @@ extern int main(int argc, char* argv[])
   x2("(?~ab)", "ccc\ndab", 0, 5);
   x2("(?m:(?~ab))", "ccc\ndab", 0, 5);
   x2("(?-m:(?~ab))", "ccc\ndab", 0, 5);
+  x2("(?~abc)xyz", "xyz012345678901234567890123456789abc", 0, 3);
 
   // absent with expr
   x2("(?~|78|\\d*)", "123456789", 0, 6);
@@ -661,8 +662,9 @@ extern int main(int argc, char* argv[])
   x2("(?~|aaaaa|a*+)", "aaaaa", 0, 0);
   x2("(?~|aaaaaa|a*+)b", "aaaaaab", 1, 7);
   x2("(?~|abcd|(?>))", "zzzabcd", 0, 0);
+  x2("(?~|abc|a*?)", "aaaabc", 0, 0);
 
-  // absent range cutter
+  // absent stopper
   x2("(?~|abc)a*", "aaaaaabc", 0, 5);
   x2("(?~|abc)a*z|aaaaaabc", "aaaaaabc", 0, 8);
   x2("(?~|aaaaaa)a*", "aaaaaa", 0, 0);
@@ -672,6 +674,21 @@ extern int main(int argc, char* argv[])
   n("(?~|a)a", "a");
   x2("(?~|a)(?~|)a", "a", 0, 1);
   x2("(?~|a).*(?~|)a", "bbbbbbbbbbbbbbbbbbbba", 0, 21);
+  x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaapqrabc", 0, 16);
+  x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaaabcpqrabc", 11, 19);
+  n("\\A(?~|abc).*(xyz|pqrabc)(?~|)abc", "aaaaxyzaaaabcpqrabcabc");
+  x2("(?~|a)(?~|)c|ab|a|", "ab", 0, 2);
+  x2("(?~|a)((?~|)c|ab|a|)", "ab", 0, 0);
+  x2("(?~|a)((?>(?~|))c|ab|a|)", "ab", 0, 0);
+
+  // extended grapheme cluster
+
+  // CR + LF
+  n(".\\y\\O", "\x0d\x0a");
+  x2(".\\Y\\O", "\x0d\x0a", 0, 2);
+  n("\\X\\X", "\x0d\x0a");
+  x2("^\\X$", "\x0d\x0a", 0, 2);
+  x2("^\\X\\X\\X$", "ab\x0d\x0a", 0, 4);
 
   /*
     < ifndef IGNORE_EUC_JP >
diff --git a/test/testu.c b/test/testu.c
index 6ff3a10..d037194 100644
--- a/test/testu.c
+++ b/test/testu.c
@@ -915,6 +915,46 @@ extern int main(int argc, char* argv[])
   x2("\000\\\000R\000\000", "\x20\x29\000\000", 0, 2);
   n("\000\\\000R\000\000", "\x20\x2a\000\000");
 
+  x2("\000\\\000w\000\000", "\x01\x00\000\000", 0, 2);
+  n("\000\\\000W\000\000", "\x01\x00\000\000");
+  x2("\000\\\000d\000\000", "\x0b\x66\000\000", 0, 2);
+  n("\000\\\000D\000\000", "\x0b\x66\000\000");
+  x2("\000\\\000s\000\000", "\x20\x01\000\000", 0, 2);
+  n("\000\\\000S\000\000", "\x20\x01\000\000");
+  x2("\000\\\000b\000\000", "\x00\x20\x01\x00\000\000", 2, 2);
+  n("\000\\\000B\000\000", "\x01\x00\000\000");
+  x2("\000\\\000B\000\000", "\x00\x20\000\000", 0, 0);
+  x2("\000[\000[\000:\000g\000r\000a\000p\000h\000:\000]\000]\000\000",
+     "\x0d\x30\000\000", 0, 2);
+  n("\000[\000[\000:\000g\000r\000a\000p\000h\000:\000]\000]\000\000",
+     "\x0a\x00\000\000");
+
+  // extended grapheme cluster
+
+  // CR + LF
+  n("\000.\000\\\000y\000\\\000O\000\000", "\x00\x0d\x00\x0a\000\000");
+  x2("\000.\000\\\000Y\000\\\000O\000\000", "\x00\x0d\x00\x0a\000\000", 0, 4);
+
+  // LATIN SMALL LETTER G, COMBINING DIAERESIS
+  n("\000^\000.\000\\\000y\000.\000$\000\000", "\x00\x67\x03\x08\000\000");
+  x2("\000.\000\\\000Y\000.\000\000", "\x00\x67\x03\x08\000\000", 0, 4);
+  x2("\000\\\000y\000.\000\\\000Y\000.\000\\\000y\000\000",
+     "\x00\x67\x03\x08\000\000", 0, 4);
+  // TAMIL LETTER NA, TAMIL VOWEL SIGN I,
+  x2("\000.\000\\\000Y\000.\000\000", "\x0B\xA8\x0B\xBF\000\000", 0, 4);
+  n("\000.\000\\\000y\000.\000\000", "\x0B\xA8\x0B\xBF\000\000");
+
+  // CR + LF
+  n("\000\\\000X\000\\\000X\000\000", "\x00\x0d\x00\x0a\000\000");
+  x2("\000^\000\\\000X\000$\000\000", "\x00\x0d\x00\x0a\000\000", 0, 4);
+  // LATIN SMALL LETTER G, COMBINING DIAERESIS
+  n("\000\\\000X\000\\\000X\000\000", "\x00\x67\x03\x08\000\000");
+  x2("\000^\000\\\000X\000$\000\000", "\x00\x67\x03\x08\000\000", 0, 4);
+  // TAMIL LETTER NA, TAMIL VOWEL SIGN I,
+  x2("\000^\000\\\000X\000$\000\000", "\x0B\xA8\x0B\xBF\000\000", 0, 4);
+  n("\000\\\000X\000\\\000X\000\000", "\x0B\xA8\x0B\xBF\000\000");
+
+
   fprintf(stdout,
        "\nRESULT   SUCC: %d,  FAIL: %d,  ERROR: %d      (by Oniguruma %s)\n",
        nsucc, nfail, nerror, onig_version());
-- 
cgit v1.2.3


From 42d9fceca3c1f36dd9fd244ed0f30df8afea9617 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= <debian@jff-webhosting.net>
Date: Fri, 1 Sep 2017 18:56:42 +0200
Subject: New upstream release

---
 debian/changelog | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index d7330ed..b324277 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+libonig (6.6.1-1) UNRELEASED; urgency=medium
+
+  * New upstream release.
+
+ -- Jörg Frings-Fürst <debian@jff-webhosting.net>  Fri, 01 Sep 2017 18:54:10 +0200
+
 libonig (6.5.0-1) unstable; urgency=medium
 
   * New upstream release.
-- 
cgit v1.2.3


From a4abc776a36e65d7dfb98540d9fc5e5faeb0fb6a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= <debian@jff-webhosting.net>
Date: Fri, 1 Sep 2017 18:57:37 +0200
Subject: Add debian/files to .gitignore

---
 .gitignore | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.gitignore b/.gitignore
index fe616c2..880dcd3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,3 +22,4 @@ Makefile.in
 .deps/
 /build
 m4/*.m4
+debian/files
-- 
cgit v1.2.3


From ada128f30e54a619086006227d50ca0d2ad54e2c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= <debian@jff-webhosting.net>
Date: Fri, 1 Sep 2017 19:07:23 +0200
Subject: Refresh symbols file

---
 debian/changelog | 1 +
 debian/symbols   | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index b324277..d42a366 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
 libonig (6.6.1-1) UNRELEASED; urgency=medium
 
   * New upstream release.
+    + Refresh symbols file.
 
  -- Jörg Frings-Fürst <debian@jff-webhosting.net>  Fri, 01 Sep 2017 18:54:10 +0200
 
diff --git a/debian/symbols b/debian/symbols
index d3c085c..dd785d7 100644
--- a/debian/symbols
+++ b/debian/symbols
@@ -166,6 +166,7 @@ libonig.so.4 libonig4 #MINVER#
  onigenc_ascii_apply_all_case_fold@Base 5.9.5
  onigenc_ascii_get_case_fold_codes_by_str@Base 5.9.5
  onigenc_ascii_mbc_case_fold@Base 5.9.5
+ onigenc_egcb_is_break_position@Base 6.6.1
  onigenc_get_case_fold_codes_by_str_with_map@Base 5.9.5
  onigenc_get_default_encoding@Base 5.9.5
  onigenc_get_left_adjust_char_head@Base 5.9.5
@@ -174,6 +175,7 @@ libonig.so.4 libonig4 #MINVER#
  onigenc_get_right_adjust_char_head_with_prev@Base 5.9.5
  onigenc_init@Base 5.9.5
  onigenc_is_mbc_newline_0x0a@Base 5.9.5
+ onigenc_is_mbc_word_ascii@Base 6.6.1
  onigenc_is_valid_mbc_string@Base 6.1.0
  onigenc_length_check_is_valid_mbc_string@Base 6.1.0
  onigenc_mb2_code_to_mbc@Base 5.9.5
-- 
cgit v1.2.3


From 89a1962ef6ee25dd08181f1aa8b4916ee3a685fb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= <debian@jff-webhosting.net>
Date: Fri, 1 Sep 2017 19:13:25 +0200
Subject: Bump Standards-Version to 4.1.0.0

---
 debian/changelog | 3 ++-
 debian/control   | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index d42a366..f0f9bfe 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,7 +1,8 @@
 libonig (6.6.1-1) UNRELEASED; urgency=medium
 
   * New upstream release.
-    + Refresh symbols file.
+    - Refresh symbols file.
+  * Declare compliance with Debian Policy 4.1.0.0. (No changes needed).
 
  -- Jörg Frings-Fürst <debian@jff-webhosting.net>  Fri, 01 Sep 2017 18:54:10 +0200
 
diff --git a/debian/control b/debian/control
index 6b25f28..e59bbc4 100644
--- a/debian/control
+++ b/debian/control
@@ -4,7 +4,7 @@ Priority: extra
 Maintainer: Jörg Frings-Fürst <debian@jff-webhosting.net>
 Build-Depends:
  debhelper (>= 10)
-Standards-Version: 4.0.0
+Standards-Version: 4.1.0.0
 Homepage: https://github.com/kkos/oniguruma
 Vcs-Git: https://anonscm.debian.org/cgit/collab-maint/libonig.git
 Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/libonig.git
-- 
cgit v1.2.3


From de5adb21f7224352652be174c66fb88e596bb49c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= <debian@jff-webhosting.net>
Date: Fri, 1 Sep 2017 19:38:19 +0200
Subject: Remove missing README.ja from debian/libonig-dev.docs and
 debian/libonig-dev.doc-base

---
 debian/changelog            | 2 ++
 debian/libonig-dev.doc-base | 1 -
 debian/libonig-dev.docs     | 1 -
 3 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index f0f9bfe..37844cf 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,8 @@ libonig (6.6.1-1) UNRELEASED; urgency=medium
   * New upstream release.
     - Refresh symbols file.
   * Declare compliance with Debian Policy 4.1.0.0. (No changes needed).
+  * Remove missing README.ja from debian/libonig-dev.docs and
+    debian/libonig-dev.doc-base.
 
  -- Jörg Frings-Fürst <debian@jff-webhosting.net>  Fri, 01 Sep 2017 18:54:10 +0200
 
diff --git a/debian/libonig-dev.doc-base b/debian/libonig-dev.doc-base
index 2c6bcf7..8dab269 100644
--- a/debian/libonig-dev.doc-base
+++ b/debian/libonig-dev.doc-base
@@ -10,7 +10,6 @@ Files: /usr/share/doc/libonig-dev/API.gz
        /usr/share/doc/libonig-dev/RE.gz
        /usr/share/doc/libonig-dev/RE.ja.gz
        /usr/share/doc/libonig-dev/README.gz
-       /usr/share/doc/libonig-dev/README.ja.gz
 
 Format: HTML
 Index: /usr/share/doc/libonig-dev/index.html
diff --git a/debian/libonig-dev.docs b/debian/libonig-dev.docs
index 856bacd..b8be5a0 100644
--- a/debian/libonig-dev.docs
+++ b/debian/libonig-dev.docs
@@ -1,6 +1,5 @@
 AUTHORS
 README
-README.ja
 doc/API
 doc/API.ja
 doc/FAQ
-- 
cgit v1.2.3


From b7ad39361a923207113da1145f8655a1bc50c3aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= <debian@jff-webhosting.net>
Date: Fri, 1 Sep 2017 20:05:27 +0200
Subject: d/changelog: Change date/time, release

---
 debian/changelog | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 37844cf..453ddab 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-libonig (6.6.1-1) UNRELEASED; urgency=medium
+libonig (6.6.1-1) unstable; urgency=medium
 
   * New upstream release.
     - Refresh symbols file.
@@ -6,7 +6,7 @@ libonig (6.6.1-1) UNRELEASED; urgency=medium
   * Remove missing README.ja from debian/libonig-dev.docs and
     debian/libonig-dev.doc-base.
 
- -- Jörg Frings-Fürst <debian@jff-webhosting.net>  Fri, 01 Sep 2017 18:54:10 +0200
+ -- Jörg Frings-Fürst <debian@jff-webhosting.net>  Fri, 01 Sep 2017 19:57:42 +0200
 
 libonig (6.5.0-1) unstable; urgency=medium
 
-- 
cgit v1.2.3