New Upstream Release - ocaml-sedlex

Ready changes

Summary

Merged new upstream version: 3.1 (was: 3.0).

Diff

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..2417baa
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,72 @@
+name: build
+
+on:
+  pull_request:
+  push:
+    branches:
+      - master
+  schedule:
+    # Prime the caches every Monday
+    - cron: 0 1 * * MON
+
+jobs:
+  build:
+    strategy:
+      fail-fast: false
+      matrix:
+        os:
+          - ubuntu-latest
+        ocaml-compiler:
+          - 4.14.x
+        skip-test:
+          - false
+
+    runs-on: ${{ matrix.os }}
+
+    steps:
+      - name: Set git to use LF
+        run: |
+          git config --global core.autocrlf false
+          git config --global core.eol lf
+          git config --global core.ignorecase false
+
+      - name: Checkout code
+        uses: actions/checkout@v3
+
+      - name: Use OCaml ${{ matrix.ocaml-compiler }}
+        uses: ocaml/setup-ocaml@v2
+        with:
+          ocaml-compiler: ${{ matrix.ocaml-compiler }}
+          dune-cache: ${{ matrix.os == 'ubuntu-latest' }}
+          opam-depext: ${{ !matrix.skip-test }}
+          opam-depext-flags: --with-test
+
+      - run: opam install . --best-effort
+        if: ${{ matrix.skip-test }}
+
+      - run: opam install . --with-test
+        if: ${{ !matrix.skip-test }}
+
+      - run: opam exec -- make build
+        if: ${{ !matrix.skip-test }}
+
+      - run: opam exec -- make test
+        if: ${{ !matrix.skip-test }}
+
+      - run: opam exec -- git diff --exit-code
+        if: ${{ !matrix.skip-test }}
+
+  lint-fmt:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout code
+        uses: actions/checkout@v3
+
+      - name: Use OCaml 4.14.x
+        uses: ocaml/setup-ocaml@v2
+        with:
+          ocaml-compiler: 4.14.x
+          dune-cache: true
+
+      - name: Lint fmt
+        uses: ocaml/setup-ocaml/lint-fmt@v2
diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml
new file mode 100644
index 0000000..ae4ac99
--- /dev/null
+++ b/.github/workflows/changelog.yml
@@ -0,0 +1,20 @@
+name: Check changelog
+
+on:
+  pull_request:
+    branches:
+      - master
+    types:
+      - labeled
+      - opened
+      - reopened
+      - synchronize
+      - unlabeled
+
+jobs:
+  check-changelog:
+    name: Check changelog
+    runs-on: ubuntu-latest
+    steps:
+      - name: Check changelog
+        uses: tarides/changelog-check-action@v1
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d42f08a..e286b5c 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,17 +1,18 @@
 name: CI
 
-on:
-  pull_request:
-  push:
-    branches:
-      - master
+on: [push]
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
 
 jobs:
   build:
     runs-on: ${{ matrix.os }}
     strategy:
+      fail-fast: false
       matrix:
-        os: [ubuntu-latest, macos-latest, windows-latest]
+        os: [macos-latest, ubuntu-latest, windows-latest]
     steps:
     - name: Build and test module
       uses: savonet/build-and-test-ocaml-module@main
diff --git a/.ocamlformat b/.ocamlformat
index ff63c58..3663901 100644
--- a/.ocamlformat
+++ b/.ocamlformat
@@ -1,4 +1,4 @@
-version=0.19.0
+version=0.24.1
 profile = conventional
 break-separators = after
 space-around-lists = false
diff --git a/CHANGES b/CHANGES
deleted file mode 100644
index 24ef0fb..0000000
--- a/CHANGES
+++ /dev/null
@@ -1,91 +0,0 @@
-3.0:
-    * Dropped `Stream` api which was removed in `4.14.0` ahead of the `5.0`
-      release.
-
-2.6:
-    * Adapted to ppxlib `0.26`, thanks to @pitag-ha
-
-2.5:
-    * Fix exponential compilation time, thanks to @mnxn for reporting in #97
-      and @fangyi-zhou for fixing in #106
-    * Update unicode support for `14.0.0`.
-
-2.4
-    * Update `dune` support to `2.8`, add auto-generated `opam` files.
-    * Optimize generated code, thanks to @bobzhang 
-    * Update unicode version to 13.0.0
-
-2.3
-    * Switch to ppxlib
-
-2.2
-     * Support for OCaml 4.08
-
-2.1
-     * GPR#78: Auto-generate unicode data
-
-2.0
-     * GPR#70: Switch to dune, opam v2
-     * GPR#60: Breaking change: switch from int codepoints to Uchar.t
-       codepoints
-     * GPR#59: Track lexing position
-
--------------------------------------------------------------------------------
-
-1.99.4
-     * GPR#47: Switch to ocaml-migrate-parsetree (contributed by Adrien Guatto)
-     * GPR#42: Added 'Rep' (repeat operator) (contributed by jpathy)
-
-1.99.3
-     * Update to work with 4.03 (4.02 still supported)
-
-1.99.2
-     * First official release of sedlex
-
-1.99.1
-     * Support for new Ast_mapper registration API, follow OCaml trunk after
-       the inclusion of the extension_point branch
-
-1.99
-     * First version of sedlex.  The history below refers to ulex, the ancestor
-       or sedlex implemented with Camlp4.
-
--------------------------------------------------------------------------------
-
-1.1
-     * Generate (more) globally unique identifiers to avoid conflicts when open'ing another module
-       processed by ulex (issue reported by Gerd Stolpmann)
-
-1.0
-     * Update to the new Camlp4 and to ocamlbuild (release for OCaml 3.10
-       only), by Nicolas Pouillard.
-
-0.8
-     * Really make it work with OCaml 3.09.
-     * Support for Utf-16.
-
-0.7 released May 24 2005
-     * Bug fixes
-     * Update to OCaml 3.09 (currently CVS). Still works with OCaml 3.08.
-     * MIT-like license (used to LGPL)
-
-0.5 release Jul. 8 2004
-     * Document how to use a custom implementation for lex buffers
-     * Update to OCaml 3.08
-
-0.4 released Jan. 10 2004
-     * Bug fix (accept 1114111 as valid Unicode code point)
-     * Add the rollback function
-
-0.3 released Oct. 8 2003
-     * Bug fix
-     * Add a new predefined class for ISO identifiers
-
-0.2 released Sep. 22 2003
-     * Changed the names of predefined regexp
-     * Fix max_code = 0x10ffff
-     * Lexers that changes encoding on the fly
-     * Documentation of the interface Ulexing
-
-0.1 released Sep. 20 2003
-     * Initial release
diff --git a/CHANGES.md b/CHANGES.md
new file mode 100644
index 0000000..91c72ba
--- /dev/null
+++ b/CHANGES.md
@@ -0,0 +1,96 @@
+# 3.1:
+- Fix directly nested sedlex matches (@smuenzel, PR #117, fixes: #12)
+- Use explicit stdlib in generated code (@hhugo, PR #122, fixes: #115)
+- Preserve location of lexbuf (@hhugo, PR #118, fixes: #19)
+- Don't use gen to consume channels (@hhugo, PR #124, fixes: #45)
+- New expect_test testsuite (@hhugo, PR #124)
+- Properly recognize malformed truncated input (@hhugo, PR #124)
+- Raise `Malformed` instead of `Invalid_arg` (@hhugo, PR #126, fixes: #91)
+- Updated unicode support to `15.0.0`
+
+# 3.0:
+- Dropped `Stream` api which was removed in `4.14.0` ahead of the `5.0`
+  release.
+
+2.6:
+- Adapted to ppxlib `0.26`, thanks to @pitag-ha
+
+2.5:
+- Fix exponential compilation time, thanks to @mnxn for reporting in #97
+  and @fangyi-zhou for fixing in #106
+- Update unicode support for `14.0.0`.
+
+# 2.4
+- Update `dune` support to `2.8`, add auto-generated `opam` files.
+- Optimize generated code, thanks to @bobzhang
+- Update unicode version to 13.0.0
+
+# 2.3
+- Switch to ppxlib
+
+# 2.2
+- Support for OCaml 4.08
+
+# 2.1
+- GPR#78: Auto-generate unicode data
+
+# 2.0
+- GPR#70: Switch to dune, opam v2
+- GPR#60: Breaking change: switch from int codepoints to Uchar.t
+  codepoints
+- GPR#59: Track lexing position
+
+# 1.99.4
+- GPR#47: Switch to ocaml-migrate-parsetree (contributed by Adrien Guatto)
+- GPR#42: Added 'Rep' (repeat operator) (contributed by jpathy)
+
+# 1.99.3
+- Update to work with 4.03 (4.02 still supported)
+
+# 1.99.2
+- First official release of sedlex
+
+# 1.99.1
+- Support for new Ast_mapper registration API, follow OCaml trunk after
+  the inclusion of the extension_point branch
+
+# 1.99
+- First version of sedlex.  The history below refers to ulex, the ancestor
+  or sedlex implemented with Camlp4.
+
+# 1.1
+- Generate (more) globally unique identifiers to avoid conflicts when open'ing another module
+  processed by ulex (issue reported by Gerd Stolpmann)
+
+# 1.0
+- Update to the new Camlp4 and to ocamlbuild (release for OCaml 3.10
+  only), by Nicolas Pouillard.
+
+# 0.8
+- Really make it work with OCaml 3.09.
+- Support for Utf-16.
+
+# 0.7 released May 24 2005
+- Bug fixes
+- Update to OCaml 3.09 (currently CVS). Still works with OCaml 3.08.
+- MIT-like license (used to LGPL)
+
+# 0.5 release Jul. 8 2004
+- Document how to use a custom implementation for lex buffers
+- Update to OCaml 3.08
+
+# 0.4 released Jan. 10 2004
+- Bug fix (accept 1114111 as valid Unicode code point)
+- Add the rollback function-
+# 0.3 released Oct. 8 2003
+- Bug fix
+- Add a new predefined class for ISO identifiers
+
+# 0.2 released Sep. 22 2003
+- Changed the names of predefined regexp
+- Fix max_code = 0x10ffff
+- Lexers that changes encoding on the fly
+- Documentation of the interface Ulexing
+
+# 0.1 released Sep. 20 2003
+- Initial release
diff --git a/debian/changelog b/debian/changelog
index 2740abd..ee3bb07 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+ocaml-sedlex (3.1-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Tue, 23 May 2023 10:47:36 -0000
+
 ocaml-sedlex (3.0-1) unstable; urgency=medium
 
   * New upstream release.
diff --git a/dune-project b/dune-project
index e98e727..34c0fb0 100644
--- a/dune-project
+++ b/dune-project
@@ -1,5 +1,5 @@
 (lang dune 2.8)
-(version 3.0)
+(version 3.1)
 (name sedlex)
 (source (github ocaml-community/sedlex))
 (license MIT)
@@ -18,8 +18,8 @@ Unicode. Unlike ocamllex, sedlex allows lexer specifications within regular
 OCaml source files. Lexing specific constructs are provided via a ppx syntax
 extension.")
  (depends
-   (ocaml (>= 4.08))
+   (ocaml (>= 4.14))
    dune
    (ppxlib (>= 0.26.0))
    gen
-   uchar))
+   (ppx_expect :with-test)))
diff --git a/examples/regressions.ml b/examples/regressions.ml
index a7d27dd..2dc2ba5 100644
--- a/examples/regressions.ml
+++ b/examples/regressions.ml
@@ -1,7 +1,7 @@
 (* This test that unicode_old.ml is a strict sub-set of 
  * new unicode.ml. *)
 
-let test_versions = ("13.0.0", "14.0.0")
+let test_versions = ("14.0.0", "15.0.0")
 let regressions = []
 let interval s e = Array.to_list (Array.init (e - s) (fun pos -> s + pos))
 
diff --git a/examples/unicode_old.ml b/examples/unicode_old.ml
index 2549f8e..ed32296 100644
--- a/examples/unicode_old.ml
+++ b/examples/unicode_old.ml
@@ -1,4 +1,4 @@
-let version = "13.0.0"
+let version = "14.0.0"
 
 module Categories = struct
   let cc = [(0x85, 0x85); (0x7f, 0x9f); (0x9, 0xd); (0x0, 0x1f)]
@@ -10,6 +10,7 @@ module Categories = struct
       (0x61c, 0x61c);
       (0x6dd, 0x6dd);
       (0x70f, 0x70f);
+      (0x890, 0x891);
       (0x8e2, 0x8e2);
       (0x180e, 0x180e);
       (0x200b, 0x200f);
@@ -29,8 +30,8 @@ module Categories = struct
       (0x13430, 0x13438);
       (0x1bca0, 0x1bca3);
       (0x1d173, 0x1d17a);
-      (0xe0001, 0xe0001);
       (0xe0020, 0xe007f);
+      (0xe0001, 0xe0001);
     ]
 
   let cn =
@@ -47,7 +48,6 @@ module Categories = struct
       (0x5c8, 0x5cf);
       (0x5eb, 0x5ee);
       (0x5f5, 0x5ff);
-      (0x61d, 0x61d);
       (0x70e, 0x70e);
       (0x74b, 0x74c);
       (0x7b2, 0x7bf);
@@ -56,9 +56,9 @@ module Categories = struct
       (0x83f, 0x83f);
       (0x85c, 0x85d);
       (0x85f, 0x85f);
-      (0x86b, 0x89f);
-      (0x8b5, 0x8b5);
-      (0x8c8, 0x8d2);
+      (0x86b, 0x86f);
+      (0x88f, 0x88f);
+      (0x892, 0x897);
       (0x984, 0x984);
       (0x98d, 0x98e);
       (0x991, 0x992);
@@ -136,12 +136,13 @@ module Categories = struct
       (0xc0d, 0xc0d);
       (0xc11, 0xc11);
       (0xc29, 0xc29);
-      (0xc3a, 0xc3c);
+      (0xc3a, 0xc3b);
       (0xc45, 0xc45);
       (0xc49, 0xc49);
       (0xc4e, 0xc54);
       (0xc57, 0xc57);
-      (0xc5b, 0xc5f);
+      (0xc5b, 0xc5c);
+      (0xc5e, 0xc5f);
       (0xc64, 0xc65);
       (0xc70, 0xc76);
       (0xc8d, 0xc8d);
@@ -152,7 +153,7 @@ module Categories = struct
       (0xcc5, 0xcc5);
       (0xcc9, 0xcc9);
       (0xcce, 0xcd4);
-      (0xcd7, 0xcdd);
+      (0xcd7, 0xcdc);
       (0xcdf, 0xcdf);
       (0xce4, 0xce5);
       (0xcf0, 0xcf0);
@@ -220,8 +221,7 @@ module Categories = struct
       (0x13fe, 0x13ff);
       (0x169d, 0x169f);
       (0x16f9, 0x16ff);
-      (0x170d, 0x170d);
-      (0x1715, 0x171f);
+      (0x1716, 0x171e);
       (0x1737, 0x173f);
       (0x1754, 0x175f);
       (0x176d, 0x176d);
@@ -230,7 +230,6 @@ module Categories = struct
       (0x17de, 0x17df);
       (0x17ea, 0x17ef);
       (0x17fa, 0x17ff);
-      (0x180f, 0x180f);
       (0x181a, 0x181f);
       (0x1879, 0x187f);
       (0x18ab, 0x18af);
@@ -250,9 +249,9 @@ module Categories = struct
       (0x1a8a, 0x1a8f);
       (0x1a9a, 0x1a9f);
       (0x1aae, 0x1aaf);
-      (0x1ac1, 0x1aff);
-      (0x1b4c, 0x1b4f);
-      (0x1b7d, 0x1b7f);
+      (0x1acf, 0x1aff);
+      (0x1b4d, 0x1b4f);
+      (0x1b7f, 0x1b7f);
       (0x1bf4, 0x1bfb);
       (0x1c38, 0x1c3a);
       (0x1c4a, 0x1c4c);
@@ -260,7 +259,6 @@ module Categories = struct
       (0x1cbb, 0x1cbc);
       (0x1cc8, 0x1ccf);
       (0x1cfb, 0x1cff);
-      (0x1dfa, 0x1dfa);
       (0x1f16, 0x1f17);
       (0x1f1e, 0x1f1f);
       (0x1f46, 0x1f47);
@@ -281,15 +279,13 @@ module Categories = struct
       (0x2072, 0x2073);
       (0x208f, 0x208f);
       (0x209d, 0x209f);
-      (0x20c0, 0x20cf);
+      (0x20c1, 0x20cf);
       (0x20f1, 0x20ff);
       (0x218c, 0x218f);
       (0x2427, 0x243f);
       (0x244b, 0x245f);
       (0x2b74, 0x2b75);
       (0x2b96, 0x2b96);
-      (0x2c2f, 0x2c2f);
-      (0x2c5f, 0x2c5f);
       (0x2cf4, 0x2cf8);
       (0x2d26, 0x2d26);
       (0x2d28, 0x2d2c);
@@ -305,7 +301,7 @@ module Categories = struct
       (0x2dcf, 0x2dcf);
       (0x2dd7, 0x2dd7);
       (0x2ddf, 0x2ddf);
-      (0x2e53, 0x2e7f);
+      (0x2e5e, 0x2e7f);
       (0x2e9a, 0x2e9a);
       (0x2ef4, 0x2eff);
       (0x2fd6, 0x2fef);
@@ -317,13 +313,14 @@ module Categories = struct
       (0x318f, 0x318f);
       (0x31e4, 0x31ef);
       (0x321f, 0x321f);
-      (0x9ffd, 0x9fff);
       (0xa48d, 0xa48f);
       (0xa4c7, 0xa4cf);
       (0xa62c, 0xa63f);
       (0xa6f8, 0xa6ff);
-      (0xa7c0, 0xa7c1);
-      (0xa7cb, 0xa7f4);
+      (0xa7cb, 0xa7cf);
+      (0xa7d2, 0xa7d2);
+      (0xa7d4, 0xa7d4);
+      (0xa7da, 0xa7f1);
       (0xa82d, 0xa82f);
       (0xa83a, 0xa83f);
       (0xa878, 0xa87f);
@@ -359,12 +356,10 @@ module Categories = struct
       (0xfb3f, 0xfb3f);
       (0xfb42, 0xfb42);
       (0xfb45, 0xfb45);
-      (0xfbc2, 0xfbd2);
-      (0xfd40, 0xfd4f);
+      (0xfbc3, 0xfbd2);
       (0xfd90, 0xfd91);
-      (0xfdc8, 0xfdef);
+      (0xfdc8, 0xfdce);
       (0xfdd0, 0xfdef);
-      (0xfdfe, 0xfdff);
       (0xfe1a, 0xfe1f);
       (0xfe53, 0xfe53);
       (0xfe67, 0xfe67);
@@ -409,10 +404,20 @@ module Categories = struct
       (0x104fc, 0x104ff);
       (0x10528, 0x1052f);
       (0x10564, 0x1056e);
-      (0x10570, 0x105ff);
+      (0x1057b, 0x1057b);
+      (0x1058b, 0x1058b);
+      (0x10593, 0x10593);
+      (0x10596, 0x10596);
+      (0x105a2, 0x105a2);
+      (0x105b2, 0x105b2);
+      (0x105ba, 0x105ba);
+      (0x105bd, 0x105ff);
       (0x10737, 0x1073f);
       (0x10756, 0x1075f);
-      (0x10768, 0x107ff);
+      (0x10768, 0x1077f);
+      (0x10786, 0x10786);
+      (0x107b1, 0x107b1);
+      (0x107bb, 0x107ff);
       (0x10806, 0x10807);
       (0x10809, 0x10809);
       (0x10836, 0x10836);
@@ -455,12 +460,13 @@ module Categories = struct
       (0x10eae, 0x10eaf);
       (0x10eb2, 0x10eff);
       (0x10f28, 0x10f2f);
-      (0x10f5a, 0x10faf);
+      (0x10f5a, 0x10f6f);
+      (0x10f8a, 0x10faf);
       (0x10fcc, 0x10fdf);
       (0x10ff7, 0x10fff);
       (0x1104e, 0x11051);
-      (0x11070, 0x1107e);
-      (0x110c2, 0x110cc);
+      (0x11076, 0x1107e);
+      (0x110c3, 0x110cc);
       (0x110ce, 0x110cf);
       (0x110e9, 0x110ef);
       (0x110fa, 0x110ff);
@@ -502,11 +508,11 @@ module Categories = struct
       (0x11645, 0x1164f);
       (0x1165a, 0x1165f);
       (0x1166d, 0x1167f);
-      (0x116b9, 0x116bf);
+      (0x116ba, 0x116bf);
       (0x116ca, 0x116ff);
       (0x1171b, 0x1171c);
       (0x1172c, 0x1172f);
-      (0x11740, 0x117ff);
+      (0x11747, 0x117ff);
       (0x1183c, 0x1189f);
       (0x118f3, 0x118fe);
       (0x11907, 0x11908);
@@ -521,7 +527,7 @@ module Categories = struct
       (0x119d8, 0x119d9);
       (0x119e5, 0x119ff);
       (0x11a48, 0x11a4f);
-      (0x11aa3, 0x11abf);
+      (0x11aa3, 0x11aaf);
       (0x11af9, 0x11bff);
       (0x11c09, 0x11c09);
       (0x11c37, 0x11c37);
@@ -549,14 +555,16 @@ module Categories = struct
       (0x1239a, 0x123ff);
       (0x1246f, 0x1246f);
       (0x12475, 0x1247f);
-      (0x12544, 0x12fff);
+      (0x12544, 0x12f8f);
+      (0x12ff3, 0x12fff);
       (0x1342f, 0x1342f);
       (0x13439, 0x143ff);
       (0x14647, 0x167ff);
       (0x16a39, 0x16a3f);
       (0x16a5f, 0x16a5f);
       (0x16a6a, 0x16a6d);
-      (0x16a70, 0x16acf);
+      (0x16abf, 0x16abf);
+      (0x16aca, 0x16acf);
       (0x16aee, 0x16aef);
       (0x16af6, 0x16aff);
       (0x16b46, 0x16b4f);
@@ -572,8 +580,11 @@ module Categories = struct
       (0x16ff2, 0x16fff);
       (0x187f8, 0x187ff);
       (0x18cd6, 0x18cff);
-      (0x18d09, 0x1afff);
-      (0x1b11f, 0x1b14f);
+      (0x18d09, 0x1afef);
+      (0x1aff4, 0x1aff4);
+      (0x1affc, 0x1affc);
+      (0x1afff, 0x1afff);
+      (0x1b123, 0x1b14f);
       (0x1b153, 0x1b163);
       (0x1b168, 0x1b16f);
       (0x1b2fc, 0x1bbff);
@@ -581,10 +592,13 @@ module Categories = struct
       (0x1bc7d, 0x1bc7f);
       (0x1bc89, 0x1bc8f);
       (0x1bc9a, 0x1bc9b);
-      (0x1bca4, 0x1cfff);
+      (0x1bca4, 0x1ceff);
+      (0x1cf2e, 0x1cf2f);
+      (0x1cf47, 0x1cf4f);
+      (0x1cfc4, 0x1cfff);
       (0x1d0f6, 0x1d0ff);
       (0x1d127, 0x1d128);
-      (0x1d1e9, 0x1d1ff);
+      (0x1d1eb, 0x1d1ff);
       (0x1d246, 0x1d2df);
       (0x1d2f4, 0x1d2ff);
       (0x1d357, 0x1d35f);
@@ -611,7 +625,8 @@ module Categories = struct
       (0x1d7cc, 0x1d7cd);
       (0x1da8c, 0x1da9a);
       (0x1daa0, 0x1daa0);
-      (0x1dab0, 0x1dfff);
+      (0x1dab0, 0x1deff);
+      (0x1df1f, 0x1dfff);
       (0x1e007, 0x1e007);
       (0x1e019, 0x1e01a);
       (0x1e022, 0x1e022);
@@ -620,9 +635,14 @@ module Categories = struct
       (0x1e12d, 0x1e12f);
       (0x1e13e, 0x1e13f);
       (0x1e14a, 0x1e14d);
-      (0x1e150, 0x1e2bf);
+      (0x1e150, 0x1e28f);
+      (0x1e2af, 0x1e2bf);
       (0x1e2fa, 0x1e2fe);
-      (0x1e300, 0x1e7ff);
+      (0x1e300, 0x1e7df);
+      (0x1e7e7, 0x1e7e7);
+      (0x1e7ec, 0x1e7ec);
+      (0x1e7ef, 0x1e7ef);
+      (0x1e7ff, 0x1e7ff);
       (0x1e8c5, 0x1e8c6);
       (0x1e8d7, 0x1e8ff);
       (0x1e94c, 0x1e94f);
@@ -676,35 +696,36 @@ module Categories = struct
       (0x1f249, 0x1f24f);
       (0x1f252, 0x1f25f);
       (0x1f266, 0x1f2ff);
-      (0x1f6d8, 0x1f6df);
+      (0x1f6d8, 0x1f6dc);
       (0x1f6ed, 0x1f6ef);
       (0x1f6fd, 0x1f6ff);
       (0x1f774, 0x1f77f);
       (0x1f7d9, 0x1f7df);
-      (0x1f7ec, 0x1f7ff);
+      (0x1f7ec, 0x1f7ef);
+      (0x1f7f1, 0x1f7ff);
       (0x1f80c, 0x1f80f);
       (0x1f848, 0x1f84f);
       (0x1f85a, 0x1f85f);
       (0x1f888, 0x1f88f);
       (0x1f8ae, 0x1f8af);
       (0x1f8b2, 0x1f8ff);
-      (0x1f979, 0x1f979);
-      (0x1f9cc, 0x1f9cc);
       (0x1fa54, 0x1fa5f);
       (0x1fa6e, 0x1fa6f);
       (0x1fa75, 0x1fa77);
-      (0x1fa7b, 0x1fa7f);
+      (0x1fa7d, 0x1fa7f);
       (0x1fa87, 0x1fa8f);
-      (0x1faa9, 0x1faaf);
-      (0x1fab7, 0x1fabf);
-      (0x1fac3, 0x1facf);
-      (0x1fad7, 0x1faff);
+      (0x1faad, 0x1faaf);
+      (0x1fabb, 0x1fabf);
+      (0x1fac6, 0x1facf);
+      (0x1fada, 0x1fadf);
+      (0x1fae8, 0x1faef);
+      (0x1faf7, 0x1faff);
       (0x1fb93, 0x1fb93);
       (0x1fbcb, 0x1fbef);
       (0x1fbfa, 0x1ffff);
       (0x1fffe, 0x1ffff);
-      (0x2a6de, 0x2a6ff);
-      (0x2b735, 0x2b73f);
+      (0x2a6e0, 0x2a6ff);
+      (0x2b739, 0x2b73f);
       (0x2b81e, 0x2b81f);
       (0x2cea2, 0x2ceaf);
       (0x2ebe1, 0x2f7ff);
@@ -1168,7 +1189,7 @@ module Categories = struct
       (0x2146, 0x2149);
       (0x214e, 0x214e);
       (0x2184, 0x2184);
-      (0x2c30, 0x2c5e);
+      (0x2c30, 0x2c5f);
       (0x2c61, 0x2c61);
       (0x2c65, 0x2c66);
       (0x2c68, 0x2c68);
@@ -1337,9 +1358,15 @@ module Categories = struct
       (0xa7bb, 0xa7bb);
       (0xa7bd, 0xa7bd);
       (0xa7bf, 0xa7bf);
+      (0xa7c1, 0xa7c1);
       (0xa7c3, 0xa7c3);
       (0xa7c8, 0xa7c8);
       (0xa7ca, 0xa7ca);
+      (0xa7d1, 0xa7d1);
+      (0xa7d3, 0xa7d3);
+      (0xa7d5, 0xa7d5);
+      (0xa7d7, 0xa7d7);
+      (0xa7d9, 0xa7d9);
       (0xa7f6, 0xa7f6);
       (0xa7fa, 0xa7fa);
       (0xab30, 0xab5a);
@@ -1350,6 +1377,10 @@ module Categories = struct
       (0xff41, 0xff5a);
       (0x10428, 0x1044f);
       (0x104d8, 0x104fb);
+      (0x10597, 0x105a1);
+      (0x105a3, 0x105b1);
+      (0x105b3, 0x105b9);
+      (0x105bb, 0x105bc);
       (0x10cc0, 0x10cf2);
       (0x118c0, 0x118df);
       (0x16e60, 0x16e7f);
@@ -1377,11 +1408,13 @@ module Categories = struct
       (0x1d736, 0x1d74e);
       (0x1d750, 0x1d755);
       (0x1d770, 0x1d788);
-      (0x1e922, 0x1e943);
-      (0x1d7cb, 0x1d7cb);
-      (0x1d7c4, 0x1d7c9);
-      (0x1d7aa, 0x1d7c2);
       (0x1d78a, 0x1d78f);
+      (0x1d7aa, 0x1d7c2);
+      (0x1d7c4, 0x1d7c9);
+      (0x1d7cb, 0x1d7cb);
+      (0x1df00, 0x1df09);
+      (0x1e922, 0x1e943);
+      (0x1df0b, 0x1df1e);
     ]
 
   let lm =
@@ -1405,6 +1438,7 @@ module Categories = struct
       (0x81a, 0x81a);
       (0x824, 0x824);
       (0x828, 0x828);
+      (0x8c9, 0x8c9);
       (0x971, 0x971);
       (0xe46, 0xe46);
       (0xec6, 0xec6);
@@ -1441,6 +1475,7 @@ module Categories = struct
       (0xa717, 0xa71f);
       (0xa770, 0xa770);
       (0xa788, 0xa788);
+      (0xa7f2, 0xa7f4);
       (0xa7f8, 0xa7f9);
       (0xa9cf, 0xa9cf);
       (0xa9e6, 0xa9e6);
@@ -1451,14 +1486,23 @@ module Categories = struct
       (0xab69, 0xab69);
       (0xff70, 0xff70);
       (0xff9e, 0xff9f);
+      (0x10780, 0x10780);
+      (0x10780, 0x10785);
+      (0x10781, 0x10782);
+      (0x10783, 0x10785);
+      (0x10787, 0x107b0);
+      (0x107b2, 0x107ba);
       (0x16b40, 0x16b43);
       (0x16b42, 0x16b43);
       (0x16f93, 0x16f9f);
       (0x16fe0, 0x16fe1);
       (0x16fe3, 0x16fe3);
+      (0x1aff0, 0x1aff3);
+      (0x1aff5, 0x1affb);
       (0x1e94b, 0x1e94b);
       (0x1e13c, 0x1e13d);
       (0x1e137, 0x1e13d);
+      (0x1affd, 0x1affe);
     ]
 
   let lo =
@@ -1487,8 +1531,9 @@ module Categories = struct
       (0x800, 0x815);
       (0x840, 0x858);
       (0x860, 0x86a);
-      (0x8a0, 0x8b4);
-      (0x8b6, 0x8c7);
+      (0x870, 0x887);
+      (0x889, 0x88e);
+      (0x8a0, 0x8c8);
       (0x904, 0x939);
       (0x93d, 0x93d);
       (0x950, 0x950);
@@ -1553,6 +1598,7 @@ module Categories = struct
       (0xc2a, 0xc39);
       (0xc3d, 0xc3d);
       (0xc58, 0xc5a);
+      (0xc5d, 0xc5d);
       (0xc60, 0xc61);
       (0xc80, 0xc80);
       (0xc85, 0xc8c);
@@ -1561,7 +1607,7 @@ module Categories = struct
       (0xcaa, 0xcb3);
       (0xcb5, 0xcb9);
       (0xcbd, 0xcbd);
-      (0xcde, 0xcde);
+      (0xcdd, 0xcde);
       (0xce0, 0xce1);
       (0xcf1, 0xcf2);
       (0xd04, 0xd0c);
@@ -1629,9 +1675,8 @@ module Categories = struct
       (0x1681, 0x169a);
       (0x16a0, 0x16ea);
       (0x16f1, 0x16f8);
-      (0x1700, 0x170c);
-      (0x170e, 0x1711);
-      (0x1720, 0x1731);
+      (0x1700, 0x1711);
+      (0x171f, 0x1731);
       (0x1740, 0x1751);
       (0x1760, 0x176c);
       (0x176e, 0x1770);
@@ -1654,7 +1699,7 @@ module Categories = struct
       (0x1a00, 0x1a16);
       (0x1a20, 0x1a54);
       (0x1b05, 0x1b33);
-      (0x1b45, 0x1b4b);
+      (0x1b45, 0x1b4c);
       (0x1b83, 0x1ba0);
       (0x1bae, 0x1baf);
       (0x1bba, 0x1be5);
@@ -1688,8 +1733,8 @@ module Categories = struct
       (0x31a0, 0x31bf);
       (0x31f0, 0x31ff);
       (0x3400, 0x4dbf);
-      (0x4e00, 0x9ffc);
-      (0xa000, 0xa014);
+      (0x4e00, 0x9fff);
+      (0x4e00, 0xa014);
       (0xa016, 0xa48c);
       (0xa4d0, 0xa4f7);
       (0xa500, 0xa60b);
@@ -1838,9 +1883,12 @@ module Categories = struct
       (0x10f00, 0x10f1c);
       (0x10f27, 0x10f27);
       (0x10f30, 0x10f45);
+      (0x10f70, 0x10f81);
       (0x10fb0, 0x10fc4);
       (0x10fe0, 0x10ff6);
       (0x11003, 0x11037);
+      (0x11071, 0x11072);
+      (0x11075, 0x11075);
       (0x11083, 0x110af);
       (0x110d0, 0x110e8);
       (0x11103, 0x11126);
@@ -1883,6 +1931,7 @@ module Categories = struct
       (0x11680, 0x116aa);
       (0x116b8, 0x116b8);
       (0x11700, 0x1171a);
+      (0x11740, 0x11746);
       (0x11800, 0x1182b);
       (0x118ff, 0x11906);
       (0x11909, 0x11909);
@@ -1901,7 +1950,7 @@ module Categories = struct
       (0x11a50, 0x11a50);
       (0x11a5c, 0x11a89);
       (0x11a9d, 0x11a9d);
-      (0x11ac0, 0x11af8);
+      (0x11ab0, 0x11af8);
       (0x11c00, 0x11c08);
       (0x11c0a, 0x11c2e);
       (0x11c40, 0x11c40);
@@ -1918,10 +1967,12 @@ module Categories = struct
       (0x11fb0, 0x11fb0);
       (0x12000, 0x12399);
       (0x12480, 0x12543);
+      (0x12f90, 0x12ff0);
       (0x13000, 0x1342e);
       (0x14400, 0x14646);
       (0x16800, 0x16a38);
       (0x16a40, 0x16a5e);
+      (0x16a70, 0x16abe);
       (0x16ad0, 0x16aed);
       (0x16b00, 0x16b2f);
       (0x16b63, 0x16b77);
@@ -1931,7 +1982,7 @@ module Categories = struct
       (0x17000, 0x187f7);
       (0x18800, 0x18cd5);
       (0x18d00, 0x18d08);
-      (0x1b000, 0x1b11e);
+      (0x1b000, 0x1b122);
       (0x1b150, 0x1b152);
       (0x1b164, 0x1b167);
       (0x1b170, 0x1b2fb);
@@ -1939,9 +1990,15 @@ module Categories = struct
       (0x1bc70, 0x1bc7c);
       (0x1bc80, 0x1bc88);
       (0x1bc90, 0x1bc99);
+      (0x1df0a, 0x1df0a);
       (0x1e100, 0x1e12c);
       (0x1e14e, 0x1e14e);
+      (0x1e290, 0x1e2ad);
       (0x1e2c0, 0x1e2eb);
+      (0x1e7e0, 0x1e7e6);
+      (0x1e7e8, 0x1e7eb);
+      (0x1e7ed, 0x1e7ee);
+      (0x1e7f0, 0x1e7fe);
       (0x1e800, 0x1e8c4);
       (0x1ee00, 0x1ee03);
       (0x1ee05, 0x1ee1f);
@@ -1976,13 +2033,13 @@ module Categories = struct
       (0x1eea1, 0x1eea3);
       (0x1eea5, 0x1eea9);
       (0x1eeab, 0x1eebb);
-      (0x20000, 0x2a6dd);
-      (0x2a700, 0x2b734);
+      (0x20000, 0x2a6df);
+      (0x2a700, 0x2b738);
+      (0x2b740, 0x2b81d);
+      (0x2b820, 0x2cea1);
       (0x30000, 0x3134a);
       (0x2f800, 0x2fa1d);
       (0x2ceb0, 0x2ebe0);
-      (0x2b820, 0x2cea1);
-      (0x2b740, 0x2b81d);
     ]
 
   let lt =
@@ -2432,7 +2489,7 @@ module Categories = struct
       (0x213e, 0x213f);
       (0x2145, 0x2145);
       (0x2183, 0x2183);
-      (0x2c00, 0x2c2e);
+      (0x2c00, 0x2c2f);
       (0x2c60, 0x2c60);
       (0x2c62, 0x2c64);
       (0x2c67, 0x2c67);
@@ -2597,13 +2654,21 @@ module Categories = struct
       (0xa7ba, 0xa7ba);
       (0xa7bc, 0xa7bc);
       (0xa7be, 0xa7be);
+      (0xa7c0, 0xa7c0);
       (0xa7c2, 0xa7c2);
       (0xa7c4, 0xa7c7);
       (0xa7c9, 0xa7c9);
+      (0xa7d0, 0xa7d0);
+      (0xa7d6, 0xa7d6);
+      (0xa7d8, 0xa7d8);
       (0xa7f5, 0xa7f5);
       (0xff21, 0xff3a);
       (0x10400, 0x10427);
       (0x104b0, 0x104d3);
+      (0x10570, 0x1057a);
+      (0x1057c, 0x1058a);
+      (0x1058c, 0x10592);
+      (0x10594, 0x10595);
       (0x10c80, 0x10cb2);
       (0x118a0, 0x118bf);
       (0x16e40, 0x16e5f);
@@ -2636,9 +2701,9 @@ module Categories = struct
       (0x1d6e2, 0x1d6fa);
       (0x1d71c, 0x1d734);
       (0x1d756, 0x1d76e);
-      (0x1e900, 0x1e921);
-      (0x1d7ca, 0x1d7ca);
       (0x1d790, 0x1d7a8);
+      (0x1d7ca, 0x1d7ca);
+      (0x1e900, 0x1e921);
     ]
 
   let mc =
@@ -2716,6 +2781,8 @@ module Categories = struct
       (0x108f, 0x108f);
       (0x109a, 0x109b);
       (0x109a, 0x109c);
+      (0x1715, 0x1715);
+      (0x1734, 0x1734);
       (0x17b6, 0x17b6);
       (0x17be, 0x17c5);
       (0x17c7, 0x17c8);
@@ -2856,9 +2923,9 @@ module Categories = struct
       (0x1d165, 0x1d165);
       (0x1d165, 0x1d166);
       (0x1d166, 0x1d166);
-      (0x1d16d, 0x1d16d);
-      (0x1d16d, 0x1d172);
       (0x1d16e, 0x1d172);
+      (0x1d16d, 0x1d172);
+      (0x1d16d, 0x1d16d);
     ]
 
   let me =
@@ -2917,7 +2984,9 @@ module Categories = struct
       (0x829, 0x82c);
       (0x829, 0x82d);
       (0x859, 0x85b);
-      (0x8d3, 0x8e1);
+      (0x898, 0x89f);
+      (0x8ca, 0x8d2);
+      (0x8ca, 0x8e1);
       (0x8d4, 0x8df);
       (0x8e3, 0x8e9);
       (0x8e3, 0x8fe);
@@ -2970,6 +3039,7 @@ module Categories = struct
       (0xbcd, 0xbcd);
       (0xc00, 0xc00);
       (0xc04, 0xc04);
+      (0xc3c, 0xc3c);
       (0xc3e, 0xc40);
       (0xc46, 0xc48);
       (0xc4a, 0xc4c);
@@ -3042,8 +3112,6 @@ module Categories = struct
       (0x1712, 0x1714);
       (0x1714, 0x1714);
       (0x1732, 0x1733);
-      (0x1732, 0x1734);
-      (0x1734, 0x1734);
       (0x1752, 0x1753);
       (0x1772, 0x1773);
       (0x17b4, 0x17b5);
@@ -3053,6 +3121,7 @@ module Categories = struct
       (0x17d2, 0x17d2);
       (0x17dd, 0x17dd);
       (0x180b, 0x180d);
+      (0x180f, 0x180f);
       (0x1885, 0x1886);
       (0x18a9, 0x18a9);
       (0x1920, 0x1922);
@@ -3072,6 +3141,9 @@ module Categories = struct
       (0x1a7f, 0x1a7f);
       (0x1ab0, 0x1abd);
       (0x1abf, 0x1ac0);
+      (0x1abf, 0x1ace);
+      (0x1ac1, 0x1acb);
+      (0x1acc, 0x1ace);
       (0x1b00, 0x1b03);
       (0x1b34, 0x1b34);
       (0x1b36, 0x1b3a);
@@ -3097,12 +3169,10 @@ module Categories = struct
       (0x1ced, 0x1ced);
       (0x1cf4, 0x1cf4);
       (0x1cf8, 0x1cf9);
-      (0x1dc0, 0x1df9);
+      (0x1dc0, 0x1dff);
       (0x1dc4, 0x1dcf);
       (0x1de7, 0x1df4);
-      (0x1df5, 0x1df9);
-      (0x1dfb, 0x1dff);
-      (0x1dfd, 0x1dff);
+      (0x1df5, 0x1dff);
       (0x20d0, 0x20dc);
       (0x20e1, 0x20e1);
       (0x20e5, 0x20e6);
@@ -3171,15 +3241,19 @@ module Categories = struct
       (0x10d24, 0x10d27);
       (0x10eab, 0x10eac);
       (0x10f46, 0x10f50);
+      (0x10f82, 0x10f85);
       (0x11001, 0x11001);
       (0x11038, 0x11045);
       (0x11038, 0x11046);
       (0x11046, 0x11046);
+      (0x11070, 0x11070);
+      (0x11073, 0x11074);
       (0x1107f, 0x1107f);
       (0x1107f, 0x11081);
       (0x110b3, 0x110b6);
       (0x110b9, 0x110b9);
       (0x110b9, 0x110ba);
+      (0x110c2, 0x110c2);
       (0x11100, 0x11102);
       (0x11127, 0x1112b);
       (0x1112d, 0x11132);
@@ -3286,6 +3360,8 @@ module Categories = struct
       (0x16fe4, 0x16fe4);
       (0x1bc9d, 0x1bc9e);
       (0x1bc9e, 0x1bc9e);
+      (0x1cf00, 0x1cf2d);
+      (0x1cf30, 0x1cf46);
       (0x1d167, 0x1d169);
       (0x1d17b, 0x1d182);
       (0x1d185, 0x1d18b);
@@ -3303,6 +3379,7 @@ module Categories = struct
       (0x1e023, 0x1e024);
       (0x1e026, 0x1e02a);
       (0x1e130, 0x1e136);
+      (0x1e2ae, 0x1e2ae);
       (0x1e2ec, 0x1e2ef);
       (0x1e8d0, 0x1e8d6);
       (0x1e944, 0x1e946);
@@ -3369,12 +3446,13 @@ module Categories = struct
       (0x11d50, 0x11d59);
       (0x11da0, 0x11da9);
       (0x16a60, 0x16a69);
+      (0x16ac0, 0x16ac9);
       (0x16b50, 0x16b59);
       (0x1d7ce, 0x1d7ff);
       (0x1e140, 0x1e149);
       (0x1e2f0, 0x1e2f9);
-      (0x1e950, 0x1e959);
       (0x1fbf0, 0x1fbf9);
+      (0x1e950, 0x1e959);
     ]
 
   let nl =
@@ -3496,14 +3574,15 @@ module Categories = struct
       (0x2e1a, 0x2e1a);
       (0x2e3a, 0x2e3b);
       (0x2e40, 0x2e40);
+      (0x2e5d, 0x2e5d);
       (0x301c, 0x301c);
       (0x3030, 0x3030);
       (0x30a0, 0x30a0);
-      (0xfe31, 0xfe32);
       (0x10ead, 0x10ead);
       (0xff0d, 0xff0d);
       (0xfe63, 0xfe63);
       (0xfe58, 0xfe58);
+      (0xfe31, 0xfe32);
     ]
 
   let pe =
@@ -3551,6 +3630,10 @@ module Categories = struct
       (0x2e25, 0x2e25);
       (0x2e27, 0x2e27);
       (0x2e29, 0x2e29);
+      (0x2e56, 0x2e56);
+      (0x2e58, 0x2e58);
+      (0x2e5a, 0x2e5a);
+      (0x2e5c, 0x2e5c);
       (0x3009, 0x3009);
       (0x300b, 0x300b);
       (0x300d, 0x300d);
@@ -3578,8 +3661,8 @@ module Categories = struct
       (0xff09, 0xff09);
       (0xff3d, 0xff3d);
       (0xff5d, 0xff5d);
-      (0xff63, 0xff63);
       (0xff60, 0xff60);
+      (0xff63, 0xff63);
     ]
 
   let pf =
@@ -3647,7 +3730,7 @@ module Categories = struct
       (0x60c, 0x60c);
       (0x60c, 0x60d);
       (0x61b, 0x61b);
-      (0x61e, 0x61f);
+      (0x61d, 0x61f);
       (0x66a, 0x66d);
       (0x6d4, 0x6d4);
       (0x700, 0x702);
@@ -3708,6 +3791,7 @@ module Categories = struct
       (0x1b5a, 0x1b60);
       (0x1b5d, 0x1b5f);
       (0x1b5e, 0x1b5f);
+      (0x1b7d, 0x1b7e);
       (0x1bfc, 0x1bff);
       (0x1c3b, 0x1c3c);
       (0x1c3b, 0x1c3f);
@@ -3747,7 +3831,8 @@ module Categories = struct
       (0x2e43, 0x2e4f);
       (0x2e4c, 0x2e4c);
       (0x2e4e, 0x2e4f);
-      (0x2e52, 0x2e52);
+      (0x2e52, 0x2e54);
+      (0x2e53, 0x2e54);
       (0x3001, 0x3002);
       (0x3001, 0x3003);
       (0x3002, 0x3002);
@@ -3831,6 +3916,7 @@ module Categories = struct
       (0x10b3a, 0x10b3f);
       (0x10b99, 0x10b9c);
       (0x10f55, 0x10f59);
+      (0x10f86, 0x10f89);
       (0x11047, 0x11048);
       (0x11047, 0x1104d);
       (0x110bb, 0x110bc);
@@ -3863,6 +3949,7 @@ module Categories = struct
       (0x11641, 0x11642);
       (0x11641, 0x11643);
       (0x11660, 0x1166c);
+      (0x116b9, 0x116b9);
       (0x1173c, 0x1173e);
       (0x1183b, 0x1183b);
       (0x11944, 0x11944);
@@ -3883,6 +3970,7 @@ module Categories = struct
       (0x11ef7, 0x11ef8);
       (0x11fff, 0x11fff);
       (0x12470, 0x12474);
+      (0x12ff1, 0x12ff2);
       (0x16a6e, 0x16a6f);
       (0x16af5, 0x16af5);
       (0x16b37, 0x16b38);
@@ -3948,6 +4036,10 @@ module Categories = struct
       (0x2e26, 0x2e26);
       (0x2e28, 0x2e28);
       (0x2e42, 0x2e42);
+      (0x2e55, 0x2e55);
+      (0x2e57, 0x2e57);
+      (0x2e59, 0x2e59);
+      (0x2e5b, 0x2e5b);
       (0x3008, 0x3008);
       (0x300a, 0x300a);
       (0x300c, 0x300c);
@@ -3972,11 +4064,11 @@ module Categories = struct
       (0xfe59, 0xfe59);
       (0xfe5b, 0xfe5b);
       (0xfe5d, 0xfe5d);
+      (0xff08, 0xff08);
       (0xff62, 0xff62);
       (0xff5f, 0xff5f);
       (0xff5b, 0xff5b);
       (0xff3b, 0xff3b);
-      (0xff08, 0xff08);
     ]
 
   let sc =
@@ -3992,7 +4084,7 @@ module Categories = struct
       (0xbf9, 0xbf9);
       (0xe3f, 0xe3f);
       (0x17db, 0x17db);
-      (0x20a0, 0x20bf);
+      (0x20a0, 0x20c0);
       (0xa838, 0xa838);
       (0xfdfc, 0xfdfc);
       (0xfe69, 0xfe69);
@@ -4019,6 +4111,7 @@ module Categories = struct
       (0x2ef, 0x2ff);
       (0x375, 0x375);
       (0x384, 0x385);
+      (0x888, 0x888);
       (0x1fbd, 0x1fbd);
       (0x1fbf, 0x1fc1);
       (0x1fcd, 0x1fcf);
@@ -4031,11 +4124,11 @@ module Categories = struct
       (0xa789, 0xa78a);
       (0xab5b, 0xab5b);
       (0xab6a, 0xab6b);
-      (0x1f3fb, 0x1f3ff);
-      (0xffe3, 0xffe3);
-      (0xff40, 0xff40);
+      (0xfbb2, 0xfbc2);
       (0xff3e, 0xff3e);
-      (0xfbb2, 0xfbc1);
+      (0xff40, 0xff40);
+      (0xffe3, 0xffe3);
+      (0x1f3fb, 0x1f3ff);
     ]
 
   let sm =
@@ -4250,7 +4343,9 @@ module Categories = struct
       (0xa836, 0xa837);
       (0xa839, 0xa839);
       (0xaa77, 0xaa79);
-      (0xfdfd, 0xfdfd);
+      (0xfd40, 0xfd4f);
+      (0xfdcf, 0xfdcf);
+      (0xfdfd, 0xfdff);
       (0xffe4, 0xffe4);
       (0xffe8, 0xffe8);
       (0xffed, 0xffee);
@@ -4269,13 +4364,14 @@ module Categories = struct
       (0x16b3c, 0x16b3f);
       (0x16b45, 0x16b45);
       (0x1bc9c, 0x1bc9c);
+      (0x1cf50, 0x1cfc3);
       (0x1d000, 0x1d0f5);
       (0x1d100, 0x1d126);
       (0x1d129, 0x1d164);
       (0x1d16a, 0x1d16c);
       (0x1d183, 0x1d184);
       (0x1d18c, 0x1d1a9);
-      (0x1d1ae, 0x1d1e8);
+      (0x1d1ae, 0x1d1ea);
       (0x1d200, 0x1d241);
       (0x1d245, 0x1d245);
       (0x1d300, 0x1d356);
@@ -4305,30 +4401,31 @@ module Categories = struct
       (0x1f260, 0x1f265);
       (0x1f300, 0x1f3fa);
       (0x1f400, 0x1f6d7);
-      (0x1f6e0, 0x1f6ec);
+      (0x1f6dd, 0x1f6ec);
       (0x1f6f0, 0x1f6fc);
       (0x1f700, 0x1f773);
       (0x1f780, 0x1f7d8);
       (0x1f7e0, 0x1f7eb);
+      (0x1f7f0, 0x1f7f0);
       (0x1f800, 0x1f80b);
       (0x1f810, 0x1f847);
       (0x1f850, 0x1f859);
       (0x1f860, 0x1f887);
       (0x1f890, 0x1f8ad);
       (0x1f8b0, 0x1f8b1);
-      (0x1f900, 0x1f978);
-      (0x1f97a, 0x1f9cb);
-      (0x1f9cd, 0x1fa53);
+      (0x1f900, 0x1fa53);
       (0x1fa60, 0x1fa6d);
       (0x1fa70, 0x1fa74);
-      (0x1fa78, 0x1fa7a);
+      (0x1fa78, 0x1fa7c);
       (0x1fa80, 0x1fa86);
-      (0x1fa90, 0x1faa8);
-      (0x1fab0, 0x1fab6);
-      (0x1fac0, 0x1fac2);
+      (0x1fa90, 0x1faac);
+      (0x1fab0, 0x1faba);
+      (0x1fac0, 0x1fac5);
+      (0x1fad0, 0x1fad9);
+      (0x1fae0, 0x1fae7);
+      (0x1faf0, 0x1faf6);
       (0x1fb94, 0x1fbca);
       (0x1fb00, 0x1fb92);
-      (0x1fad0, 0x1fad6);
     ]
 
   let zl = [(0x2028, 0x2028)]
@@ -4464,8 +4561,10 @@ module Properties = struct
       (0x829, 0x82c);
       (0x840, 0x858);
       (0x860, 0x86a);
-      (0x8a0, 0x8b4);
-      (0x8b6, 0x8c7);
+      (0x870, 0x887);
+      (0x889, 0x88e);
+      (0x8a0, 0x8c8);
+      (0x8c9, 0x8c9);
       (0x8d4, 0x8df);
       (0x8e3, 0x8e9);
       (0x8f0, 0x902);
@@ -4594,6 +4693,7 @@ module Properties = struct
       (0xc4a, 0xc4c);
       (0xc55, 0xc56);
       (0xc58, 0xc5a);
+      (0xc5d, 0xc5d);
       (0xc60, 0xc61);
       (0xc62, 0xc63);
       (0xc80, 0xc80);
@@ -4613,7 +4713,7 @@ module Properties = struct
       (0xcca, 0xccb);
       (0xccc, 0xccc);
       (0xcd5, 0xcd6);
-      (0xcde, 0xcde);
+      (0xcdd, 0xcde);
       (0xce0, 0xce1);
       (0xce2, 0xce3);
       (0xcf1, 0xcf2);
@@ -4737,10 +4837,9 @@ module Properties = struct
       (0x16a0, 0x16ea);
       (0x16ee, 0x16f0);
       (0x16f1, 0x16f8);
-      (0x1700, 0x170c);
-      (0x170e, 0x1711);
+      (0x1700, 0x1711);
       (0x1712, 0x1713);
-      (0x1720, 0x1731);
+      (0x171f, 0x1731);
       (0x1732, 0x1733);
       (0x1740, 0x1751);
       (0x1752, 0x1753);
@@ -4793,6 +4892,7 @@ module Properties = struct
       (0x1a73, 0x1a74);
       (0x1aa7, 0x1aa7);
       (0x1abf, 0x1ac0);
+      (0x1acc, 0x1ace);
       (0x1b00, 0x1b03);
       (0x1b04, 0x1b04);
       (0x1b05, 0x1b33);
@@ -4803,7 +4903,7 @@ module Properties = struct
       (0x1b3d, 0x1b41);
       (0x1b42, 0x1b42);
       (0x1b43, 0x1b43);
-      (0x1b45, 0x1b4b);
+      (0x1b45, 0x1b4c);
       (0x1b80, 0x1b81);
       (0x1b82, 0x1b82);
       (0x1b83, 0x1ba0);
@@ -4883,9 +4983,7 @@ module Properties = struct
       (0x2183, 0x2184);
       (0x2185, 0x2188);
       (0x24b6, 0x24e9);
-      (0x2c00, 0x2c2e);
-      (0x2c30, 0x2c5e);
-      (0x2c60, 0x2c7b);
+      (0x2c00, 0x2c7b);
       (0x2c7c, 0x2c7d);
       (0x2c7e, 0x2ce4);
       (0x2ceb, 0x2cee);
@@ -4925,8 +5023,7 @@ module Properties = struct
       (0x31a0, 0x31bf);
       (0x31f0, 0x31ff);
       (0x3400, 0x4dbf);
-      (0x4e00, 0x9ffc);
-      (0xa000, 0xa014);
+      (0x4e00, 0xa014);
       (0xa015, 0xa015);
       (0xa016, 0xa48c);
       (0xa4d0, 0xa4f7);
@@ -4951,8 +5048,11 @@ module Properties = struct
       (0xa788, 0xa788);
       (0xa78b, 0xa78e);
       (0xa78f, 0xa78f);
-      (0xa790, 0xa7bf);
-      (0xa7c2, 0xa7ca);
+      (0xa790, 0xa7ca);
+      (0xa7d0, 0xa7d1);
+      (0xa7d3, 0xa7d3);
+      (0xa7d5, 0xa7d9);
+      (0xa7f2, 0xa7f4);
       (0xa7f5, 0xa7f6);
       (0xa7f7, 0xa7f7);
       (0xa7f8, 0xa7f9);
@@ -5108,9 +5208,20 @@ module Properties = struct
       (0x104d8, 0x104fb);
       (0x10500, 0x10527);
       (0x10530, 0x10563);
+      (0x10570, 0x1057a);
+      (0x1057c, 0x1058a);
+      (0x1058c, 0x10592);
+      (0x10594, 0x10595);
+      (0x10597, 0x105a1);
+      (0x105a3, 0x105b1);
+      (0x105b3, 0x105b9);
+      (0x105bb, 0x105bc);
       (0x10600, 0x10736);
       (0x10740, 0x10755);
       (0x10760, 0x10767);
+      (0x10780, 0x10785);
+      (0x10787, 0x107b0);
+      (0x107b2, 0x107ba);
       (0x10800, 0x10805);
       (0x10808, 0x10808);
       (0x1080a, 0x10835);
@@ -5151,6 +5262,7 @@ module Properties = struct
       (0x10f00, 0x10f1c);
       (0x10f27, 0x10f27);
       (0x10f30, 0x10f45);
+      (0x10f70, 0x10f81);
       (0x10fb0, 0x10fc4);
       (0x10fe0, 0x10ff6);
       (0x11000, 0x11000);
@@ -5158,11 +5270,15 @@ module Properties = struct
       (0x11002, 0x11002);
       (0x11003, 0x11037);
       (0x11038, 0x11045);
+      (0x11071, 0x11072);
+      (0x11073, 0x11074);
+      (0x11075, 0x11075);
       (0x11082, 0x11082);
       (0x11083, 0x110af);
       (0x110b0, 0x110b2);
       (0x110b3, 0x110b6);
       (0x110b7, 0x110b8);
+      (0x110c2, 0x110c2);
       (0x110d0, 0x110e8);
       (0x11100, 0x11102);
       (0x11103, 0x11126);
@@ -5267,6 +5383,7 @@ module Properties = struct
       (0x11722, 0x11725);
       (0x11726, 0x11726);
       (0x11727, 0x1172a);
+      (0x11740, 0x11746);
       (0x11800, 0x1182b);
       (0x1182c, 0x1182e);
       (0x1182f, 0x11837);
@@ -5308,7 +5425,7 @@ module Properties = struct
       (0x11a8a, 0x11a96);
       (0x11a97, 0x11a97);
       (0x11a9d, 0x11a9d);
-      (0x11ac0, 0x11af8);
+      (0x11ab0, 0x11af8);
       (0x11c00, 0x11c08);
       (0x11c0a, 0x11c2e);
       (0x11c2f, 0x11c2f);
@@ -5350,10 +5467,12 @@ module Properties = struct
       (0x12000, 0x12399);
       (0x12400, 0x1246e);
       (0x12480, 0x12543);
+      (0x12f90, 0x12ff0);
       (0x13000, 0x1342e);
       (0x14400, 0x14646);
       (0x16800, 0x16a38);
       (0x16a40, 0x16a5e);
+      (0x16a70, 0x16abe);
       (0x16ad0, 0x16aed);
       (0x16b00, 0x16b2f);
       (0x16b40, 0x16b43);
@@ -5372,7 +5491,10 @@ module Properties = struct
       (0x17000, 0x187f7);
       (0x18800, 0x18cd5);
       (0x18d00, 0x18d08);
-      (0x1b000, 0x1b11e);
+      (0x1aff0, 0x1aff3);
+      (0x1aff5, 0x1affb);
+      (0x1affd, 0x1affe);
+      (0x1b000, 0x1b122);
       (0x1b150, 0x1b152);
       (0x1b164, 0x1b167);
       (0x1b170, 0x1b2fb);
@@ -5411,6 +5533,9 @@ module Properties = struct
       (0x1d78a, 0x1d7a8);
       (0x1d7aa, 0x1d7c2);
       (0x1d7c4, 0x1d7cb);
+      (0x1df00, 0x1df09);
+      (0x1df0a, 0x1df0a);
+      (0x1df0b, 0x1df1e);
       (0x1e000, 0x1e006);
       (0x1e008, 0x1e018);
       (0x1e01b, 0x1e021);
@@ -5419,7 +5544,12 @@ module Properties = struct
       (0x1e100, 0x1e12c);
       (0x1e137, 0x1e13d);
       (0x1e14e, 0x1e14e);
+      (0x1e290, 0x1e2ad);
       (0x1e2c0, 0x1e2eb);
+      (0x1e7e0, 0x1e7e6);
+      (0x1e7e8, 0x1e7eb);
+      (0x1e7ed, 0x1e7ee);
+      (0x1e7f0, 0x1e7fe);
       (0x1e800, 0x1e8c4);
       (0x1e900, 0x1e943);
       (0x1e947, 0x1e947);
@@ -5460,13 +5590,13 @@ module Properties = struct
       (0x1f130, 0x1f149);
       (0x1f150, 0x1f169);
       (0x1f170, 0x1f189);
-      (0x20000, 0x2a6dd);
-      (0x2a700, 0x2b734);
+      (0x20000, 0x2a6df);
+      (0x2a700, 0x2b738);
       (0x2b740, 0x2b81d);
+      (0x2b820, 0x2cea1);
+      (0x2ceb0, 0x2ebe0);
       (0x30000, 0x3134a);
       (0x2f800, 0x2fa1d);
-      (0x2ceb0, 0x2ebe0);
-      (0x2b820, 0x2cea1);
     ]
 
   let ascii_hex_digit = [(0x61, 0x66); (0x41, 0x46); (0x30, 0x39)]
@@ -5574,9 +5704,12 @@ module Properties = struct
       (0x840, 0x858);
       (0x859, 0x85b);
       (0x860, 0x86a);
-      (0x8a0, 0x8b4);
-      (0x8b6, 0x8c7);
-      (0x8d3, 0x8e1);
+      (0x870, 0x887);
+      (0x889, 0x88e);
+      (0x898, 0x89f);
+      (0x8a0, 0x8c8);
+      (0x8c9, 0x8c9);
+      (0x8ca, 0x8e1);
       (0x8e3, 0x902);
       (0x903, 0x903);
       (0x904, 0x939);
@@ -5714,6 +5847,7 @@ module Properties = struct
       (0xc0e, 0xc10);
       (0xc12, 0xc28);
       (0xc2a, 0xc39);
+      (0xc3c, 0xc3c);
       (0xc3d, 0xc3d);
       (0xc3e, 0xc40);
       (0xc41, 0xc44);
@@ -5721,6 +5855,7 @@ module Properties = struct
       (0xc4a, 0xc4d);
       (0xc55, 0xc56);
       (0xc58, 0xc5a);
+      (0xc5d, 0xc5d);
       (0xc60, 0xc61);
       (0xc62, 0xc63);
       (0xc66, 0xc6f);
@@ -5742,7 +5877,7 @@ module Properties = struct
       (0xcca, 0xccb);
       (0xccc, 0xccd);
       (0xcd5, 0xcd6);
-      (0xcde, 0xcde);
+      (0xcdd, 0xcde);
       (0xce0, 0xce1);
       (0xce2, 0xce3);
       (0xce6, 0xcef);
@@ -5886,11 +6021,12 @@ module Properties = struct
       (0x16a0, 0x16ea);
       (0x16ee, 0x16f0);
       (0x16f1, 0x16f8);
-      (0x1700, 0x170c);
-      (0x170e, 0x1711);
+      (0x1700, 0x1711);
       (0x1712, 0x1714);
-      (0x1720, 0x1731);
-      (0x1732, 0x1734);
+      (0x1715, 0x1715);
+      (0x171f, 0x1731);
+      (0x1732, 0x1733);
+      (0x1734, 0x1734);
       (0x1740, 0x1751);
       (0x1752, 0x1753);
       (0x1760, 0x176c);
@@ -5909,6 +6045,7 @@ module Properties = struct
       (0x17dd, 0x17dd);
       (0x17e0, 0x17e9);
       (0x180b, 0x180d);
+      (0x180f, 0x180f);
       (0x1810, 0x1819);
       (0x1820, 0x1842);
       (0x1843, 0x1843);
@@ -5956,7 +6093,7 @@ module Properties = struct
       (0x1a90, 0x1a99);
       (0x1aa7, 0x1aa7);
       (0x1ab0, 0x1abd);
-      (0x1abf, 0x1ac0);
+      (0x1abf, 0x1ace);
       (0x1b00, 0x1b03);
       (0x1b04, 0x1b04);
       (0x1b05, 0x1b33);
@@ -5968,7 +6105,7 @@ module Properties = struct
       (0x1b3d, 0x1b41);
       (0x1b42, 0x1b42);
       (0x1b43, 0x1b44);
-      (0x1b45, 0x1b4b);
+      (0x1b45, 0x1b4c);
       (0x1b50, 0x1b59);
       (0x1b6b, 0x1b73);
       (0x1b80, 0x1b81);
@@ -6022,8 +6159,7 @@ module Properties = struct
       (0x1d78, 0x1d78);
       (0x1d79, 0x1d9a);
       (0x1d9b, 0x1dbf);
-      (0x1dc0, 0x1df9);
-      (0x1dfb, 0x1dff);
+      (0x1dc0, 0x1dff);
       (0x1e00, 0x1f15);
       (0x1f18, 0x1f1d);
       (0x1f20, 0x1f45);
@@ -6071,9 +6207,7 @@ module Properties = struct
       (0x2160, 0x2182);
       (0x2183, 0x2184);
       (0x2185, 0x2188);
-      (0x2c00, 0x2c2e);
-      (0x2c30, 0x2c5e);
-      (0x2c60, 0x2c7b);
+      (0x2c00, 0x2c7b);
       (0x2c7c, 0x2c7d);
       (0x2c7e, 0x2ce4);
       (0x2ceb, 0x2cee);
@@ -6118,8 +6252,7 @@ module Properties = struct
       (0x31a0, 0x31bf);
       (0x31f0, 0x31ff);
       (0x3400, 0x4dbf);
-      (0x4e00, 0x9ffc);
-      (0xa000, 0xa014);
+      (0x4e00, 0xa014);
       (0xa015, 0xa015);
       (0xa016, 0xa48c);
       (0xa4d0, 0xa4f7);
@@ -6147,8 +6280,11 @@ module Properties = struct
       (0xa788, 0xa788);
       (0xa78b, 0xa78e);
       (0xa78f, 0xa78f);
-      (0xa790, 0xa7bf);
-      (0xa7c2, 0xa7ca);
+      (0xa790, 0xa7ca);
+      (0xa7d0, 0xa7d1);
+      (0xa7d3, 0xa7d3);
+      (0xa7d5, 0xa7d9);
+      (0xa7f2, 0xa7f4);
       (0xa7f5, 0xa7f6);
       (0xa7f7, 0xa7f7);
       (0xa7f8, 0xa7f9);
@@ -6327,9 +6463,20 @@ module Properties = struct
       (0x104d8, 0x104fb);
       (0x10500, 0x10527);
       (0x10530, 0x10563);
+      (0x10570, 0x1057a);
+      (0x1057c, 0x1058a);
+      (0x1058c, 0x10592);
+      (0x10594, 0x10595);
+      (0x10597, 0x105a1);
+      (0x105a3, 0x105b1);
+      (0x105b3, 0x105b9);
+      (0x105bb, 0x105bc);
       (0x10600, 0x10736);
       (0x10740, 0x10755);
       (0x10760, 0x10767);
+      (0x10780, 0x10785);
+      (0x10787, 0x107b0);
+      (0x107b2, 0x107ba);
       (0x10800, 0x10805);
       (0x10808, 0x10808);
       (0x1080a, 0x10835);
@@ -6375,6 +6522,8 @@ module Properties = struct
       (0x10f27, 0x10f27);
       (0x10f30, 0x10f45);
       (0x10f46, 0x10f50);
+      (0x10f70, 0x10f81);
+      (0x10f82, 0x10f85);
       (0x10fb0, 0x10fc4);
       (0x10fe0, 0x10ff6);
       (0x11000, 0x11000);
@@ -6383,6 +6532,10 @@ module Properties = struct
       (0x11003, 0x11037);
       (0x11038, 0x11046);
       (0x11066, 0x1106f);
+      (0x11070, 0x11070);
+      (0x11071, 0x11072);
+      (0x11073, 0x11074);
+      (0x11075, 0x11075);
       (0x1107f, 0x11081);
       (0x11082, 0x11082);
       (0x11083, 0x110af);
@@ -6390,6 +6543,7 @@ module Properties = struct
       (0x110b3, 0x110b6);
       (0x110b7, 0x110b8);
       (0x110b9, 0x110ba);
+      (0x110c2, 0x110c2);
       (0x110d0, 0x110e8);
       (0x110f0, 0x110f9);
       (0x11100, 0x11102);
@@ -6515,6 +6669,7 @@ module Properties = struct
       (0x11726, 0x11726);
       (0x11727, 0x1172b);
       (0x11730, 0x11739);
+      (0x11740, 0x11746);
       (0x11800, 0x1182b);
       (0x1182c, 0x1182e);
       (0x1182f, 0x11837);
@@ -6565,7 +6720,7 @@ module Properties = struct
       (0x11a97, 0x11a97);
       (0x11a98, 0x11a99);
       (0x11a9d, 0x11a9d);
-      (0x11ac0, 0x11af8);
+      (0x11ab0, 0x11af8);
       (0x11c00, 0x11c08);
       (0x11c0a, 0x11c2e);
       (0x11c2f, 0x11c2f);
@@ -6611,11 +6766,14 @@ module Properties = struct
       (0x12000, 0x12399);
       (0x12400, 0x1246e);
       (0x12480, 0x12543);
+      (0x12f90, 0x12ff0);
       (0x13000, 0x1342e);
       (0x14400, 0x14646);
       (0x16800, 0x16a38);
       (0x16a40, 0x16a5e);
       (0x16a60, 0x16a69);
+      (0x16a70, 0x16abe);
+      (0x16ac0, 0x16ac9);
       (0x16ad0, 0x16aed);
       (0x16af0, 0x16af4);
       (0x16b00, 0x16b2f);
@@ -6638,7 +6796,10 @@ module Properties = struct
       (0x17000, 0x187f7);
       (0x18800, 0x18cd5);
       (0x18d00, 0x18d08);
-      (0x1b000, 0x1b11e);
+      (0x1aff0, 0x1aff3);
+      (0x1aff5, 0x1affb);
+      (0x1affd, 0x1affe);
+      (0x1b000, 0x1b122);
       (0x1b150, 0x1b152);
       (0x1b164, 0x1b167);
       (0x1b170, 0x1b2fb);
@@ -6647,6 +6808,8 @@ module Properties = struct
       (0x1bc80, 0x1bc88);
       (0x1bc90, 0x1bc99);
       (0x1bc9d, 0x1bc9e);
+      (0x1cf00, 0x1cf2d);
+      (0x1cf30, 0x1cf46);
       (0x1d165, 0x1d166);
       (0x1d167, 0x1d169);
       (0x1d16d, 0x1d172);
@@ -6691,6 +6854,9 @@ module Properties = struct
       (0x1da84, 0x1da84);
       (0x1da9b, 0x1da9f);
       (0x1daa1, 0x1daaf);
+      (0x1df00, 0x1df09);
+      (0x1df0a, 0x1df0a);
+      (0x1df0b, 0x1df1e);
       (0x1e000, 0x1e006);
       (0x1e008, 0x1e018);
       (0x1e01b, 0x1e021);
@@ -6701,9 +6867,15 @@ module Properties = struct
       (0x1e137, 0x1e13d);
       (0x1e140, 0x1e149);
       (0x1e14e, 0x1e14e);
+      (0x1e290, 0x1e2ad);
+      (0x1e2ae, 0x1e2ae);
       (0x1e2c0, 0x1e2eb);
       (0x1e2ec, 0x1e2ef);
       (0x1e2f0, 0x1e2f9);
+      (0x1e7e0, 0x1e7e6);
+      (0x1e7e8, 0x1e7eb);
+      (0x1e7ed, 0x1e7ee);
+      (0x1e7f0, 0x1e7fe);
       (0x1e800, 0x1e8c4);
       (0x1e8d0, 0x1e8d6);
       (0x1e900, 0x1e943);
@@ -6744,14 +6916,14 @@ module Properties = struct
       (0x1eea5, 0x1eea9);
       (0x1eeab, 0x1eebb);
       (0x1fbf0, 0x1fbf9);
-      (0x20000, 0x2a6dd);
-      (0x2a700, 0x2b734);
+      (0x20000, 0x2a6df);
+      (0x2a700, 0x2b738);
       (0x2b740, 0x2b81d);
       (0x2b820, 0x2cea1);
-      (0xe0100, 0xe01ef);
-      (0x30000, 0x3134a);
-      (0x2f800, 0x2fa1d);
       (0x2ceb0, 0x2ebe0);
+      (0x2f800, 0x2fa1d);
+      (0x30000, 0x3134a);
+      (0xe0100, 0xe01ef);
     ]
 
   let id_start =
@@ -6816,8 +6988,10 @@ module Properties = struct
       (0x828, 0x828);
       (0x840, 0x858);
       (0x860, 0x86a);
-      (0x8a0, 0x8b4);
-      (0x8b6, 0x8c7);
+      (0x870, 0x887);
+      (0x889, 0x88e);
+      (0x8a0, 0x8c8);
+      (0x8c9, 0x8c9);
       (0x904, 0x939);
       (0x93d, 0x93d);
       (0x950, 0x950);
@@ -6883,6 +7057,7 @@ module Properties = struct
       (0xc2a, 0xc39);
       (0xc3d, 0xc3d);
       (0xc58, 0xc5a);
+      (0xc5d, 0xc5d);
       (0xc60, 0xc61);
       (0xc80, 0xc80);
       (0xc85, 0xc8c);
@@ -6891,7 +7066,7 @@ module Properties = struct
       (0xcaa, 0xcb3);
       (0xcb5, 0xcb9);
       (0xcbd, 0xcbd);
-      (0xcde, 0xcde);
+      (0xcdd, 0xcde);
       (0xce0, 0xce1);
       (0xcf1, 0xcf2);
       (0xd04, 0xd0c);
@@ -6966,9 +7141,8 @@ module Properties = struct
       (0x16a0, 0x16ea);
       (0x16ee, 0x16f0);
       (0x16f1, 0x16f8);
-      (0x1700, 0x170c);
-      (0x170e, 0x1711);
-      (0x1720, 0x1731);
+      (0x1700, 0x1711);
+      (0x171f, 0x1731);
       (0x1740, 0x1751);
       (0x1760, 0x176c);
       (0x176e, 0x1770);
@@ -6992,7 +7166,7 @@ module Properties = struct
       (0x1a20, 0x1a54);
       (0x1aa7, 0x1aa7);
       (0x1b05, 0x1b33);
-      (0x1b45, 0x1b4b);
+      (0x1b45, 0x1b4c);
       (0x1b83, 0x1ba0);
       (0x1bae, 0x1baf);
       (0x1bba, 0x1be5);
@@ -7055,9 +7229,7 @@ module Properties = struct
       (0x2160, 0x2182);
       (0x2183, 0x2184);
       (0x2185, 0x2188);
-      (0x2c00, 0x2c2e);
-      (0x2c30, 0x2c5e);
-      (0x2c60, 0x2c7b);
+      (0x2c00, 0x2c7b);
       (0x2c7c, 0x2c7d);
       (0x2c7e, 0x2ce4);
       (0x2ceb, 0x2cee);
@@ -7096,8 +7268,7 @@ module Properties = struct
       (0x31a0, 0x31bf);
       (0x31f0, 0x31ff);
       (0x3400, 0x4dbf);
-      (0x4e00, 0x9ffc);
-      (0xa000, 0xa014);
+      (0x4e00, 0xa014);
       (0xa015, 0xa015);
       (0xa016, 0xa48c);
       (0xa4d0, 0xa4f7);
@@ -7120,8 +7291,11 @@ module Properties = struct
       (0xa788, 0xa788);
       (0xa78b, 0xa78e);
       (0xa78f, 0xa78f);
-      (0xa790, 0xa7bf);
-      (0xa7c2, 0xa7ca);
+      (0xa790, 0xa7ca);
+      (0xa7d0, 0xa7d1);
+      (0xa7d3, 0xa7d3);
+      (0xa7d5, 0xa7d9);
+      (0xa7f2, 0xa7f4);
       (0xa7f5, 0xa7f6);
       (0xa7f7, 0xa7f7);
       (0xa7f8, 0xa7f9);
@@ -7231,9 +7405,20 @@ module Properties = struct
       (0x104d8, 0x104fb);
       (0x10500, 0x10527);
       (0x10530, 0x10563);
+      (0x10570, 0x1057a);
+      (0x1057c, 0x1058a);
+      (0x1058c, 0x10592);
+      (0x10594, 0x10595);
+      (0x10597, 0x105a1);
+      (0x105a3, 0x105b1);
+      (0x105b3, 0x105b9);
+      (0x105bb, 0x105bc);
       (0x10600, 0x10736);
       (0x10740, 0x10755);
       (0x10760, 0x10767);
+      (0x10780, 0x10785);
+      (0x10787, 0x107b0);
+      (0x107b2, 0x107ba);
       (0x10800, 0x10805);
       (0x10808, 0x10808);
       (0x1080a, 0x10835);
@@ -7269,9 +7454,12 @@ module Properties = struct
       (0x10f00, 0x10f1c);
       (0x10f27, 0x10f27);
       (0x10f30, 0x10f45);
+      (0x10f70, 0x10f81);
       (0x10fb0, 0x10fc4);
       (0x10fe0, 0x10ff6);
       (0x11003, 0x11037);
+      (0x11071, 0x11072);
+      (0x11075, 0x11075);
       (0x11083, 0x110af);
       (0x110d0, 0x110e8);
       (0x11103, 0x11126);
@@ -7313,6 +7501,7 @@ module Properties = struct
       (0x11680, 0x116aa);
       (0x116b8, 0x116b8);
       (0x11700, 0x1171a);
+      (0x11740, 0x11746);
       (0x11800, 0x1182b);
       (0x118a0, 0x118df);
       (0x118ff, 0x11906);
@@ -7332,7 +7521,7 @@ module Properties = struct
       (0x11a50, 0x11a50);
       (0x11a5c, 0x11a89);
       (0x11a9d, 0x11a9d);
-      (0x11ac0, 0x11af8);
+      (0x11ab0, 0x11af8);
       (0x11c00, 0x11c08);
       (0x11c0a, 0x11c2e);
       (0x11c40, 0x11c40);
@@ -7350,10 +7539,12 @@ module Properties = struct
       (0x12000, 0x12399);
       (0x12400, 0x1246e);
       (0x12480, 0x12543);
+      (0x12f90, 0x12ff0);
       (0x13000, 0x1342e);
       (0x14400, 0x14646);
       (0x16800, 0x16a38);
       (0x16a40, 0x16a5e);
+      (0x16a70, 0x16abe);
       (0x16ad0, 0x16aed);
       (0x16b00, 0x16b2f);
       (0x16b40, 0x16b43);
@@ -7368,7 +7559,10 @@ module Properties = struct
       (0x17000, 0x187f7);
       (0x18800, 0x18cd5);
       (0x18d00, 0x18d08);
-      (0x1b000, 0x1b11e);
+      (0x1aff0, 0x1aff3);
+      (0x1aff5, 0x1affb);
+      (0x1affd, 0x1affe);
+      (0x1b000, 0x1b122);
       (0x1b150, 0x1b152);
       (0x1b164, 0x1b167);
       (0x1b170, 0x1b2fb);
@@ -7406,10 +7600,18 @@ module Properties = struct
       (0x1d78a, 0x1d7a8);
       (0x1d7aa, 0x1d7c2);
       (0x1d7c4, 0x1d7cb);
+      (0x1df00, 0x1df09);
+      (0x1df0a, 0x1df0a);
+      (0x1df0b, 0x1df1e);
       (0x1e100, 0x1e12c);
       (0x1e137, 0x1e13d);
       (0x1e14e, 0x1e14e);
+      (0x1e290, 0x1e2ad);
       (0x1e2c0, 0x1e2eb);
+      (0x1e7e0, 0x1e7e6);
+      (0x1e7e8, 0x1e7eb);
+      (0x1e7ed, 0x1e7ee);
+      (0x1e7f0, 0x1e7fe);
       (0x1e800, 0x1e8c4);
       (0x1e900, 0x1e943);
       (0x1e94b, 0x1e94b);
@@ -7446,8 +7648,8 @@ module Properties = struct
       (0x1eea1, 0x1eea3);
       (0x1eea5, 0x1eea9);
       (0x1eeab, 0x1eebb);
-      (0x20000, 0x2a6dd);
-      (0x2a700, 0x2b734);
+      (0x20000, 0x2a6df);
+      (0x2a700, 0x2b738);
       (0x2b740, 0x2b81d);
       (0x2b820, 0x2cea1);
       (0x2ceb0, 0x2ebe0);
@@ -7903,7 +8105,7 @@ module Properties = struct
       (0x2170, 0x217f);
       (0x2184, 0x2184);
       (0x24d0, 0x24e9);
-      (0x2c30, 0x2c5e);
+      (0x2c30, 0x2c5f);
       (0x2c61, 0x2c61);
       (0x2c65, 0x2c66);
       (0x2c68, 0x2c68);
@@ -8075,9 +8277,15 @@ module Properties = struct
       (0xa7bb, 0xa7bb);
       (0xa7bd, 0xa7bd);
       (0xa7bf, 0xa7bf);
+      (0xa7c1, 0xa7c1);
       (0xa7c3, 0xa7c3);
       (0xa7c8, 0xa7c8);
       (0xa7ca, 0xa7ca);
+      (0xa7d1, 0xa7d1);
+      (0xa7d3, 0xa7d3);
+      (0xa7d5, 0xa7d5);
+      (0xa7d7, 0xa7d7);
+      (0xa7d9, 0xa7d9);
       (0xa7f6, 0xa7f6);
       (0xa7f8, 0xa7f9);
       (0xa7fa, 0xa7fa);
@@ -8090,6 +8298,14 @@ module Properties = struct
       (0xff41, 0xff5a);
       (0x10428, 0x1044f);
       (0x104d8, 0x104fb);
+      (0x10597, 0x105a1);
+      (0x105a3, 0x105b1);
+      (0x105b3, 0x105b9);
+      (0x105bb, 0x105bc);
+      (0x10780, 0x10780);
+      (0x10783, 0x10785);
+      (0x10787, 0x107b0);
+      (0x107b2, 0x107ba);
       (0x10cc0, 0x10cf2);
       (0x118c0, 0x118df);
       (0x16e60, 0x16e7f);
@@ -8117,11 +8333,13 @@ module Properties = struct
       (0x1d736, 0x1d74e);
       (0x1d750, 0x1d755);
       (0x1d770, 0x1d788);
-      (0x1e922, 0x1e943);
-      (0x1d7cb, 0x1d7cb);
-      (0x1d7c4, 0x1d7c9);
-      (0x1d7aa, 0x1d7c2);
       (0x1d78a, 0x1d78f);
+      (0x1d7aa, 0x1d7c2);
+      (0x1d7c4, 0x1d7c9);
+      (0x1d7cb, 0x1d7cb);
+      (0x1df00, 0x1df09);
+      (0x1df0b, 0x1df1e);
+      (0x1e922, 0x1e943);
     ]
 
   let math =
@@ -8546,6 +8764,7 @@ module Properties = struct
       (0x1a6d, 0x1a72);
       (0x1a73, 0x1a74);
       (0x1abf, 0x1ac0);
+      (0x1acc, 0x1ace);
       (0x1b00, 0x1b03);
       (0x1b04, 0x1b04);
       (0x1b35, 0x1b35);
@@ -8632,10 +8851,12 @@ module Properties = struct
       (0x11001, 0x11001);
       (0x11002, 0x11002);
       (0x11038, 0x11045);
+      (0x11073, 0x11074);
       (0x11082, 0x11082);
       (0x110b0, 0x110b2);
       (0x110b3, 0x110b6);
       (0x110b7, 0x110b8);
+      (0x110c2, 0x110c2);
       (0x11100, 0x11102);
       (0x11127, 0x1112b);
       (0x1112c, 0x1112c);
@@ -8755,11 +8976,11 @@ module Properties = struct
       (0x1e008, 0x1e018);
       (0x1e01b, 0x1e021);
       (0x1e023, 0x1e024);
+      (0x1e026, 0x1e02a);
+      (0x1e947, 0x1e947);
       (0x1f170, 0x1f189);
       (0x1f150, 0x1f169);
       (0x1f130, 0x1f149);
-      (0x1e947, 0x1e947);
-      (0x1e026, 0x1e02a);
     ]
 
   let other_lowercase =
@@ -8779,11 +9000,15 @@ module Properties = struct
       (0x2090, 0x209c);
       (0x2170, 0x217f);
       (0x24d0, 0x24e9);
-      (0xab5c, 0xab5f);
-      (0xa7f8, 0xa7f9);
-      (0xa770, 0xa770);
-      (0xa69c, 0xa69d);
       (0x2c7c, 0x2c7d);
+      (0xa69c, 0xa69d);
+      (0xa770, 0xa770);
+      (0xa7f8, 0xa7f9);
+      (0xab5c, 0xab5f);
+      (0x107b2, 0x107ba);
+      (0x10787, 0x107b0);
+      (0x10783, 0x10785);
+      (0x10780, 0x10780);
     ]
 
   let other_math =
@@ -9410,7 +9635,7 @@ module Properties = struct
       (0x2160, 0x216f);
       (0x2183, 0x2183);
       (0x24b6, 0x24cf);
-      (0x2c00, 0x2c2e);
+      (0x2c00, 0x2c2f);
       (0x2c60, 0x2c60);
       (0x2c62, 0x2c64);
       (0x2c67, 0x2c67);
@@ -9575,13 +9800,21 @@ module Properties = struct
       (0xa7ba, 0xa7ba);
       (0xa7bc, 0xa7bc);
       (0xa7be, 0xa7be);
+      (0xa7c0, 0xa7c0);
       (0xa7c2, 0xa7c2);
       (0xa7c4, 0xa7c7);
       (0xa7c9, 0xa7c9);
+      (0xa7d0, 0xa7d0);
+      (0xa7d6, 0xa7d6);
+      (0xa7d8, 0xa7d8);
       (0xa7f5, 0xa7f5);
       (0xff21, 0xff3a);
       (0x10400, 0x10427);
       (0x104b0, 0x104d3);
+      (0x10570, 0x1057a);
+      (0x1057c, 0x1058a);
+      (0x1058c, 0x10592);
+      (0x10594, 0x10595);
       (0x10c80, 0x10cb2);
       (0x118a0, 0x118bf);
       (0x16e40, 0x16e5f);
@@ -9617,9 +9850,9 @@ module Properties = struct
       (0x1d790, 0x1d7a8);
       (0x1d7ca, 0x1d7ca);
       (0x1e900, 0x1e921);
-      (0x1f170, 0x1f189);
-      (0x1f150, 0x1f169);
       (0x1f130, 0x1f149);
+      (0x1f150, 0x1f169);
+      (0x1f170, 0x1f189);
     ]
 
   let white_space =
@@ -9729,9 +9962,12 @@ module Properties = struct
       (0x840, 0x858);
       (0x859, 0x85b);
       (0x860, 0x86a);
-      (0x8a0, 0x8b4);
-      (0x8b6, 0x8c7);
-      (0x8d3, 0x8e1);
+      (0x870, 0x887);
+      (0x889, 0x88e);
+      (0x898, 0x89f);
+      (0x8a0, 0x8c8);
+      (0x8c9, 0x8c9);
+      (0x8ca, 0x8e1);
       (0x8e3, 0x902);
       (0x903, 0x903);
       (0x904, 0x939);
@@ -9869,6 +10105,7 @@ module Properties = struct
       (0xc0e, 0xc10);
       (0xc12, 0xc28);
       (0xc2a, 0xc39);
+      (0xc3c, 0xc3c);
       (0xc3d, 0xc3d);
       (0xc3e, 0xc40);
       (0xc41, 0xc44);
@@ -9876,6 +10113,7 @@ module Properties = struct
       (0xc4a, 0xc4d);
       (0xc55, 0xc56);
       (0xc58, 0xc5a);
+      (0xc5d, 0xc5d);
       (0xc60, 0xc61);
       (0xc62, 0xc63);
       (0xc66, 0xc6f);
@@ -9897,7 +10135,7 @@ module Properties = struct
       (0xcca, 0xccb);
       (0xccc, 0xccd);
       (0xcd5, 0xcd6);
-      (0xcde, 0xcde);
+      (0xcdd, 0xcde);
       (0xce0, 0xce1);
       (0xce2, 0xce3);
       (0xce6, 0xcef);
@@ -10041,11 +10279,12 @@ module Properties = struct
       (0x16a0, 0x16ea);
       (0x16ee, 0x16f0);
       (0x16f1, 0x16f8);
-      (0x1700, 0x170c);
-      (0x170e, 0x1711);
+      (0x1700, 0x1711);
       (0x1712, 0x1714);
-      (0x1720, 0x1731);
-      (0x1732, 0x1734);
+      (0x1715, 0x1715);
+      (0x171f, 0x1731);
+      (0x1732, 0x1733);
+      (0x1734, 0x1734);
       (0x1740, 0x1751);
       (0x1752, 0x1753);
       (0x1760, 0x176c);
@@ -10064,6 +10303,7 @@ module Properties = struct
       (0x17dd, 0x17dd);
       (0x17e0, 0x17e9);
       (0x180b, 0x180d);
+      (0x180f, 0x180f);
       (0x1810, 0x1819);
       (0x1820, 0x1842);
       (0x1843, 0x1843);
@@ -10111,7 +10351,7 @@ module Properties = struct
       (0x1a90, 0x1a99);
       (0x1aa7, 0x1aa7);
       (0x1ab0, 0x1abd);
-      (0x1abf, 0x1ac0);
+      (0x1abf, 0x1ace);
       (0x1b00, 0x1b03);
       (0x1b04, 0x1b04);
       (0x1b05, 0x1b33);
@@ -10123,7 +10363,7 @@ module Properties = struct
       (0x1b3d, 0x1b41);
       (0x1b42, 0x1b42);
       (0x1b43, 0x1b44);
-      (0x1b45, 0x1b4b);
+      (0x1b45, 0x1b4c);
       (0x1b50, 0x1b59);
       (0x1b6b, 0x1b73);
       (0x1b80, 0x1b81);
@@ -10177,8 +10417,7 @@ module Properties = struct
       (0x1d78, 0x1d78);
       (0x1d79, 0x1d9a);
       (0x1d9b, 0x1dbf);
-      (0x1dc0, 0x1df9);
-      (0x1dfb, 0x1dff);
+      (0x1dc0, 0x1dff);
       (0x1e00, 0x1f15);
       (0x1f18, 0x1f1d);
       (0x1f20, 0x1f45);
@@ -10226,9 +10465,7 @@ module Properties = struct
       (0x2160, 0x2182);
       (0x2183, 0x2184);
       (0x2185, 0x2188);
-      (0x2c00, 0x2c2e);
-      (0x2c30, 0x2c5e);
-      (0x2c60, 0x2c7b);
+      (0x2c00, 0x2c7b);
       (0x2c7c, 0x2c7d);
       (0x2c7e, 0x2ce4);
       (0x2ceb, 0x2cee);
@@ -10272,8 +10509,7 @@ module Properties = struct
       (0x31a0, 0x31bf);
       (0x31f0, 0x31ff);
       (0x3400, 0x4dbf);
-      (0x4e00, 0x9ffc);
-      (0xa000, 0xa014);
+      (0x4e00, 0xa014);
       (0xa015, 0xa015);
       (0xa016, 0xa48c);
       (0xa4d0, 0xa4f7);
@@ -10301,8 +10537,11 @@ module Properties = struct
       (0xa788, 0xa788);
       (0xa78b, 0xa78e);
       (0xa78f, 0xa78f);
-      (0xa790, 0xa7bf);
-      (0xa7c2, 0xa7ca);
+      (0xa790, 0xa7ca);
+      (0xa7d0, 0xa7d1);
+      (0xa7d3, 0xa7d3);
+      (0xa7d5, 0xa7d9);
+      (0xa7f2, 0xa7f4);
       (0xa7f5, 0xa7f6);
       (0xa7f7, 0xa7f7);
       (0xa7f8, 0xa7f9);
@@ -10487,9 +10726,20 @@ module Properties = struct
       (0x104d8, 0x104fb);
       (0x10500, 0x10527);
       (0x10530, 0x10563);
+      (0x10570, 0x1057a);
+      (0x1057c, 0x1058a);
+      (0x1058c, 0x10592);
+      (0x10594, 0x10595);
+      (0x10597, 0x105a1);
+      (0x105a3, 0x105b1);
+      (0x105b3, 0x105b9);
+      (0x105bb, 0x105bc);
       (0x10600, 0x10736);
       (0x10740, 0x10755);
       (0x10760, 0x10767);
+      (0x10780, 0x10785);
+      (0x10787, 0x107b0);
+      (0x107b2, 0x107ba);
       (0x10800, 0x10805);
       (0x10808, 0x10808);
       (0x1080a, 0x10835);
@@ -10535,6 +10785,8 @@ module Properties = struct
       (0x10f27, 0x10f27);
       (0x10f30, 0x10f45);
       (0x10f46, 0x10f50);
+      (0x10f70, 0x10f81);
+      (0x10f82, 0x10f85);
       (0x10fb0, 0x10fc4);
       (0x10fe0, 0x10ff6);
       (0x11000, 0x11000);
@@ -10543,6 +10795,10 @@ module Properties = struct
       (0x11003, 0x11037);
       (0x11038, 0x11046);
       (0x11066, 0x1106f);
+      (0x11070, 0x11070);
+      (0x11071, 0x11072);
+      (0x11073, 0x11074);
+      (0x11075, 0x11075);
       (0x1107f, 0x11081);
       (0x11082, 0x11082);
       (0x11083, 0x110af);
@@ -10550,6 +10806,7 @@ module Properties = struct
       (0x110b3, 0x110b6);
       (0x110b7, 0x110b8);
       (0x110b9, 0x110ba);
+      (0x110c2, 0x110c2);
       (0x110d0, 0x110e8);
       (0x110f0, 0x110f9);
       (0x11100, 0x11102);
@@ -10675,6 +10932,7 @@ module Properties = struct
       (0x11726, 0x11726);
       (0x11727, 0x1172b);
       (0x11730, 0x11739);
+      (0x11740, 0x11746);
       (0x11800, 0x1182b);
       (0x1182c, 0x1182e);
       (0x1182f, 0x11837);
@@ -10725,7 +10983,7 @@ module Properties = struct
       (0x11a97, 0x11a97);
       (0x11a98, 0x11a99);
       (0x11a9d, 0x11a9d);
-      (0x11ac0, 0x11af8);
+      (0x11ab0, 0x11af8);
       (0x11c00, 0x11c08);
       (0x11c0a, 0x11c2e);
       (0x11c2f, 0x11c2f);
@@ -10771,11 +11029,14 @@ module Properties = struct
       (0x12000, 0x12399);
       (0x12400, 0x1246e);
       (0x12480, 0x12543);
+      (0x12f90, 0x12ff0);
       (0x13000, 0x1342e);
       (0x14400, 0x14646);
       (0x16800, 0x16a38);
       (0x16a40, 0x16a5e);
       (0x16a60, 0x16a69);
+      (0x16a70, 0x16abe);
+      (0x16ac0, 0x16ac9);
       (0x16ad0, 0x16aed);
       (0x16af0, 0x16af4);
       (0x16b00, 0x16b2f);
@@ -10798,7 +11059,10 @@ module Properties = struct
       (0x17000, 0x187f7);
       (0x18800, 0x18cd5);
       (0x18d00, 0x18d08);
-      (0x1b000, 0x1b11e);
+      (0x1aff0, 0x1aff3);
+      (0x1aff5, 0x1affb);
+      (0x1affd, 0x1affe);
+      (0x1b000, 0x1b122);
       (0x1b150, 0x1b152);
       (0x1b164, 0x1b167);
       (0x1b170, 0x1b2fb);
@@ -10807,6 +11071,8 @@ module Properties = struct
       (0x1bc80, 0x1bc88);
       (0x1bc90, 0x1bc99);
       (0x1bc9d, 0x1bc9e);
+      (0x1cf00, 0x1cf2d);
+      (0x1cf30, 0x1cf46);
       (0x1d165, 0x1d166);
       (0x1d167, 0x1d169);
       (0x1d16d, 0x1d172);
@@ -10851,6 +11117,9 @@ module Properties = struct
       (0x1da84, 0x1da84);
       (0x1da9b, 0x1da9f);
       (0x1daa1, 0x1daaf);
+      (0x1df00, 0x1df09);
+      (0x1df0a, 0x1df0a);
+      (0x1df0b, 0x1df1e);
       (0x1e000, 0x1e006);
       (0x1e008, 0x1e018);
       (0x1e01b, 0x1e021);
@@ -10861,9 +11130,15 @@ module Properties = struct
       (0x1e137, 0x1e13d);
       (0x1e140, 0x1e149);
       (0x1e14e, 0x1e14e);
+      (0x1e290, 0x1e2ad);
+      (0x1e2ae, 0x1e2ae);
       (0x1e2c0, 0x1e2eb);
       (0x1e2ec, 0x1e2ef);
       (0x1e2f0, 0x1e2f9);
+      (0x1e7e0, 0x1e7e6);
+      (0x1e7e8, 0x1e7eb);
+      (0x1e7ed, 0x1e7ee);
+      (0x1e7f0, 0x1e7fe);
       (0x1e800, 0x1e8c4);
       (0x1e8d0, 0x1e8d6);
       (0x1e900, 0x1e943);
@@ -10904,14 +11179,14 @@ module Properties = struct
       (0x1eea5, 0x1eea9);
       (0x1eeab, 0x1eebb);
       (0x1fbf0, 0x1fbf9);
-      (0x20000, 0x2a6dd);
-      (0x2a700, 0x2b734);
+      (0x20000, 0x2a6df);
+      (0x2a700, 0x2b738);
       (0x2b740, 0x2b81d);
-      (0x2b820, 0x2cea1);
-      (0x2ceb0, 0x2ebe0);
       (0xe0100, 0xe01ef);
       (0x30000, 0x3134a);
       (0x2f800, 0x2fa1d);
+      (0x2ceb0, 0x2ebe0);
+      (0x2b820, 0x2cea1);
     ]
 
   let xid_start =
@@ -10975,8 +11250,10 @@ module Properties = struct
       (0x828, 0x828);
       (0x840, 0x858);
       (0x860, 0x86a);
-      (0x8a0, 0x8b4);
-      (0x8b6, 0x8c7);
+      (0x870, 0x887);
+      (0x889, 0x88e);
+      (0x8a0, 0x8c8);
+      (0x8c9, 0x8c9);
       (0x904, 0x939);
       (0x93d, 0x93d);
       (0x950, 0x950);
@@ -11042,6 +11319,7 @@ module Properties = struct
       (0xc2a, 0xc39);
       (0xc3d, 0xc3d);
       (0xc58, 0xc5a);
+      (0xc5d, 0xc5d);
       (0xc60, 0xc61);
       (0xc80, 0xc80);
       (0xc85, 0xc8c);
@@ -11050,7 +11328,7 @@ module Properties = struct
       (0xcaa, 0xcb3);
       (0xcb5, 0xcb9);
       (0xcbd, 0xcbd);
-      (0xcde, 0xcde);
+      (0xcdd, 0xcde);
       (0xce0, 0xce1);
       (0xcf1, 0xcf2);
       (0xd04, 0xd0c);
@@ -11125,9 +11403,8 @@ module Properties = struct
       (0x16a0, 0x16ea);
       (0x16ee, 0x16f0);
       (0x16f1, 0x16f8);
-      (0x1700, 0x170c);
-      (0x170e, 0x1711);
-      (0x1720, 0x1731);
+      (0x1700, 0x1711);
+      (0x171f, 0x1731);
       (0x1740, 0x1751);
       (0x1760, 0x176c);
       (0x176e, 0x1770);
@@ -11151,7 +11428,7 @@ module Properties = struct
       (0x1a20, 0x1a54);
       (0x1aa7, 0x1aa7);
       (0x1b05, 0x1b33);
-      (0x1b45, 0x1b4b);
+      (0x1b45, 0x1b4c);
       (0x1b83, 0x1ba0);
       (0x1bae, 0x1baf);
       (0x1bba, 0x1be5);
@@ -11214,9 +11491,7 @@ module Properties = struct
       (0x2160, 0x2182);
       (0x2183, 0x2184);
       (0x2185, 0x2188);
-      (0x2c00, 0x2c2e);
-      (0x2c30, 0x2c5e);
-      (0x2c60, 0x2c7b);
+      (0x2c00, 0x2c7b);
       (0x2c7c, 0x2c7d);
       (0x2c7e, 0x2ce4);
       (0x2ceb, 0x2cee);
@@ -11254,8 +11529,7 @@ module Properties = struct
       (0x31a0, 0x31bf);
       (0x31f0, 0x31ff);
       (0x3400, 0x4dbf);
-      (0x4e00, 0x9ffc);
-      (0xa000, 0xa014);
+      (0x4e00, 0xa014);
       (0xa015, 0xa015);
       (0xa016, 0xa48c);
       (0xa4d0, 0xa4f7);
@@ -11278,8 +11552,11 @@ module Properties = struct
       (0xa788, 0xa788);
       (0xa78b, 0xa78e);
       (0xa78f, 0xa78f);
-      (0xa790, 0xa7bf);
-      (0xa7c2, 0xa7ca);
+      (0xa790, 0xa7ca);
+      (0xa7d0, 0xa7d1);
+      (0xa7d3, 0xa7d3);
+      (0xa7d5, 0xa7d9);
+      (0xa7f2, 0xa7f4);
       (0xa7f5, 0xa7f6);
       (0xa7f7, 0xa7f7);
       (0xa7f8, 0xa7f9);
@@ -11394,9 +11671,20 @@ module Properties = struct
       (0x104d8, 0x104fb);
       (0x10500, 0x10527);
       (0x10530, 0x10563);
+      (0x10570, 0x1057a);
+      (0x1057c, 0x1058a);
+      (0x1058c, 0x10592);
+      (0x10594, 0x10595);
+      (0x10597, 0x105a1);
+      (0x105a3, 0x105b1);
+      (0x105b3, 0x105b9);
+      (0x105bb, 0x105bc);
       (0x10600, 0x10736);
       (0x10740, 0x10755);
       (0x10760, 0x10767);
+      (0x10780, 0x10785);
+      (0x10787, 0x107b0);
+      (0x107b2, 0x107ba);
       (0x10800, 0x10805);
       (0x10808, 0x10808);
       (0x1080a, 0x10835);
@@ -11432,9 +11720,12 @@ module Properties = struct
       (0x10f00, 0x10f1c);
       (0x10f27, 0x10f27);
       (0x10f30, 0x10f45);
+      (0x10f70, 0x10f81);
       (0x10fb0, 0x10fc4);
       (0x10fe0, 0x10ff6);
       (0x11003, 0x11037);
+      (0x11071, 0x11072);
+      (0x11075, 0x11075);
       (0x11083, 0x110af);
       (0x110d0, 0x110e8);
       (0x11103, 0x11126);
@@ -11476,6 +11767,7 @@ module Properties = struct
       (0x11680, 0x116aa);
       (0x116b8, 0x116b8);
       (0x11700, 0x1171a);
+      (0x11740, 0x11746);
       (0x11800, 0x1182b);
       (0x118a0, 0x118df);
       (0x118ff, 0x11906);
@@ -11495,7 +11787,7 @@ module Properties = struct
       (0x11a50, 0x11a50);
       (0x11a5c, 0x11a89);
       (0x11a9d, 0x11a9d);
-      (0x11ac0, 0x11af8);
+      (0x11ab0, 0x11af8);
       (0x11c00, 0x11c08);
       (0x11c0a, 0x11c2e);
       (0x11c40, 0x11c40);
@@ -11513,10 +11805,12 @@ module Properties = struct
       (0x12000, 0x12399);
       (0x12400, 0x1246e);
       (0x12480, 0x12543);
+      (0x12f90, 0x12ff0);
       (0x13000, 0x1342e);
       (0x14400, 0x14646);
       (0x16800, 0x16a38);
       (0x16a40, 0x16a5e);
+      (0x16a70, 0x16abe);
       (0x16ad0, 0x16aed);
       (0x16b00, 0x16b2f);
       (0x16b40, 0x16b43);
@@ -11531,7 +11825,10 @@ module Properties = struct
       (0x17000, 0x187f7);
       (0x18800, 0x18cd5);
       (0x18d00, 0x18d08);
-      (0x1b000, 0x1b11e);
+      (0x1aff0, 0x1aff3);
+      (0x1aff5, 0x1affb);
+      (0x1affd, 0x1affe);
+      (0x1b000, 0x1b122);
       (0x1b150, 0x1b152);
       (0x1b164, 0x1b167);
       (0x1b170, 0x1b2fb);
@@ -11569,10 +11866,18 @@ module Properties = struct
       (0x1d78a, 0x1d7a8);
       (0x1d7aa, 0x1d7c2);
       (0x1d7c4, 0x1d7cb);
+      (0x1df00, 0x1df09);
+      (0x1df0a, 0x1df0a);
+      (0x1df0b, 0x1df1e);
       (0x1e100, 0x1e12c);
       (0x1e137, 0x1e13d);
       (0x1e14e, 0x1e14e);
+      (0x1e290, 0x1e2ad);
       (0x1e2c0, 0x1e2eb);
+      (0x1e7e0, 0x1e7e6);
+      (0x1e7e8, 0x1e7eb);
+      (0x1e7ed, 0x1e7ee);
+      (0x1e7f0, 0x1e7fe);
       (0x1e800, 0x1e8c4);
       (0x1e900, 0x1e943);
       (0x1e94b, 0x1e94b);
@@ -11609,8 +11914,8 @@ module Properties = struct
       (0x1eea1, 0x1eea3);
       (0x1eea5, 0x1eea9);
       (0x1eeab, 0x1eebb);
-      (0x20000, 0x2a6dd);
-      (0x2a700, 0x2b734);
+      (0x20000, 0x2a6df);
+      (0x2a700, 0x2b738);
       (0x30000, 0x3134a);
       (0x2f800, 0x2fa1d);
       (0x2ceb0, 0x2ebe0);
diff --git a/sedlex.opam b/sedlex.opam
index 95c6ec7..2dc2642 100644
--- a/sedlex.opam
+++ b/sedlex.opam
@@ -1,6 +1,6 @@
 # This file is generated by dune, edit dune-project instead
 opam-version: "2.0"
-version: "3.0"
+version: "3.1"
 synopsis: "An OCaml lexer generator for Unicode"
 description: """
 sedlex is a lexer generator for OCaml. It is similar to ocamllex, but supports
@@ -16,11 +16,11 @@ license: "MIT"
 homepage: "https://github.com/ocaml-community/sedlex"
 bug-reports: "https://github.com/ocaml-community/sedlex/issues"
 depends: [
-  "ocaml" {>= "4.08"}
+  "ocaml" {>= "4.14"}
   "dune" {>= "2.8"}
   "ppxlib" {>= "0.26.0"}
   "gen"
-  "uchar"
+  "ppx_expect" {with-test}
   "odoc" {with-doc}
 ]
 build: [
diff --git a/src/generator/data/base_url b/src/generator/data/base_url
index fb91401..00fa3e0 100644
--- a/src/generator/data/base_url
+++ b/src/generator/data/base_url
@@ -1 +1 @@
-https://www.unicode.org/Public/14.0.0
\ No newline at end of file
+https://www.unicode.org/Public/15.0.0
\ No newline at end of file
diff --git a/src/generator/gen_unicode.ml.inc b/src/generator/gen_unicode.ml.inc
index 78415fc..82bcff8 100644
--- a/src/generator/gen_unicode.ml.inc
+++ b/src/generator/gen_unicode.ml.inc
@@ -135,7 +135,10 @@ let () =
       done
     with End_of_file -> close_in ch) files;
   let ch = open_out_bin target in
-  Printf.fprintf ch "let version = %S\n\n" version;
+  Printf.fprintf ch "(* This file was automatically generated, do not edit. *)\n";
+  Printf.fprintf ch "(* Edit gen_unicode.ml.inc instead. *)\n";
+  Printf.fprintf ch {|[@@@ocamlformat "disable"]|};
+  Printf.fprintf ch "\n\nlet version = %S\n\n" version;
   Printf.fprintf ch "module Categories = struct\n\n";
   print_elements ch categories;
   Printf.fprintf ch "end\n\n";
diff --git a/src/lib/sedlexing.ml b/src/lib/sedlexing.ml
index adc415c..3f6f3e5 100644
--- a/src/lib/sedlexing.ml
+++ b/src/lib/sedlexing.ml
@@ -5,11 +5,14 @@
 exception InvalidCodepoint of int
 exception MalFormed
 
-let gen_of_channel chan =
-  let f () = try Some (input_char chan) with End_of_file -> None in
-  f
+module Uchar = struct
+  include Uchar
 
-let ( >>= ) o f = match o with Some x -> f x | None -> None
+  let of_int x =
+    if Uchar.is_valid x then Uchar.unsafe_of_int x else raise MalFormed
+end
+
+let ( >>| ) o f = match o with Some x -> Some (f x) | None -> None
 
 (* Absolute position from the beginning of the stream *)
 type apos = int
@@ -216,6 +219,76 @@ let with_tokenizer lexer' lexbuf =
   in
   lexer
 
+module Chan = struct
+  exception Missing_input
+
+  type t = {
+    b : Bytes.t;
+    ic : in_channel;
+    mutable len : int;
+    mutable pos : int;
+  }
+
+  let min_buffer_size = 64
+
+  let create ic len : t =
+    let len = max len min_buffer_size in
+    { b = Bytes.create len; ic; len = 0; pos = 0 }
+
+  let available (t : t) = t.len - t.pos
+
+  let rec ensure_bytes_available (t : t) ~can_refill n =
+    if available t >= n then ()
+    else if can_refill then (
+      let len = t.len - t.pos in
+      if len > 0 then Bytes.blit t.b t.pos t.b 0 len;
+      let read = input t.ic t.b len (Bytes.length t.b - len) in
+      t.len <- len + read;
+      t.pos <- 0;
+      if read = 0 then raise Missing_input
+      else ensure_bytes_available t ~can_refill n)
+    else raise Missing_input
+
+  let ensure_bytes_available t ~can_refill n =
+    (* [n] should not exceed the size of the buffer. Here we are
+       conservative and make sure it doesn't exceed the mininum size
+       for the buffer. *)
+    if n <= 0 || n > min_buffer_size then invalid_arg "Sedlexing.Chan.ensure";
+    ensure_bytes_available t ~can_refill n
+
+  let get (t : t) i = Bytes.get t.b (t.pos + i)
+
+  let advance (t : t) n =
+    if t.pos + n > t.len then invalid_arg "advance";
+    t.pos <- t.pos + n
+
+  let raw_buf (t : t) = t.b
+  let raw_pos (t : t) = t.pos
+end
+
+let make_from_channel ic ~max_bytes_per_uchar ~min_bytes_per_uchar ~read_uchar =
+  let t = Chan.create ic (chunk_size * max_bytes_per_uchar) in
+  let refill buf pos len =
+    let rec loop i =
+      if i = len then i
+      else (
+        match
+          (* we refill our bytes buffer only if we haven't refilled any uchar yet. *)
+          let can_refill = i = 0 in
+          Chan.ensure_bytes_available t ~can_refill min_bytes_per_uchar;
+          read_uchar ~can_refill t
+        with
+          | c ->
+              buf.(pos + i) <- c;
+              loop (i + 1)
+          | exception Chan.Missing_input ->
+              if i = 0 && Chan.available t > 0 then raise MalFormed;
+              i)
+    in
+    loop 0
+  in
+  create refill
+
 module Latin1 = struct
   let from_gen s = create (fill_buf_from_gen Uchar.of_char s)
 
@@ -228,7 +301,12 @@ module Latin1 = struct
       finished = true;
     }
 
-  let from_channel ic = from_gen (gen_of_channel ic)
+  let from_channel ic =
+    make_from_channel ic ~min_bytes_per_uchar:1 ~max_bytes_per_uchar:1
+      ~read_uchar:(fun ~can_refill:_ t ->
+        let c = Chan.get t 0 in
+        Chan.advance t 1;
+        Uchar.of_char c)
 
   let to_latin1 c =
     if Uchar.is_char c then Uchar.to_char c
@@ -250,32 +328,24 @@ module Utf8 = struct
   module Helper = struct
     (* http://www.faqs.org/rfcs/rfc3629.html *)
 
-    let width = Array.make 256 (-1)
-
-    let () =
-      for i = 0 to 127 do
-        width.(i) <- 1
-      done;
-      for i = 192 to 223 do
-        width.(i) <- 2
-      done;
-      for i = 224 to 239 do
-        width.(i) <- 3
-      done;
-      for i = 240 to 247 do
-        width.(i) <- 4
-      done
+    let width = function
+      | '\000' .. '\127' -> 1
+      | '\192' .. '\223' -> 2
+      | '\224' .. '\239' -> 3
+      | '\240' .. '\247' -> 4
+      | _ -> raise MalFormed
 
     let next s i =
-      match s.[i] with
-        | '\000' .. '\127' as c -> Char.code c
-        | '\192' .. '\223' as c ->
-            let n1 = Char.code c in
+      let c1 = s.[i] in
+      match width c1 with
+        | 1 -> Char.code c1
+        | 2 ->
+            let n1 = Char.code c1 in
             let n2 = Char.code s.[i + 1] in
             if n2 lsr 6 != 0b10 then raise MalFormed;
             ((n1 land 0x1f) lsl 6) lor (n2 land 0x3f)
-        | '\224' .. '\239' as c ->
-            let n1 = Char.code c in
+        | 3 ->
+            let n1 = Char.code c1 in
             let n2 = Char.code s.[i + 1] in
             let n3 = Char.code s.[i + 2] in
             if n2 lsr 6 != 0b10 || n3 lsr 6 != 0b10 then raise MalFormed;
@@ -286,8 +356,8 @@ module Utf8 = struct
             in
             if p >= 0xd800 && p <= 0xdf00 then raise MalFormed;
             p
-        | '\240' .. '\247' as c ->
-            let n1 = Char.code c in
+        | 4 ->
+            let n1 = Char.code c1 in
             let n2 = Char.code s.[i + 1] in
             let n3 = Char.code s.[i + 2] in
             let n4 = Char.code s.[i + 3] in
@@ -297,60 +367,56 @@ module Utf8 = struct
             lor ((n2 land 0x3f) lsl 12)
             lor ((n3 land 0x3f) lsl 6)
             lor (n4 land 0x3f)
-        | _ -> raise MalFormed
+        | _ -> assert false
 
     let from_gen s =
-      Gen.next s >>= function
-      | '\000' .. '\127' as c -> Some (Uchar.of_char c)
-      | '\192' .. '\223' as c ->
-          let n1 = Char.code c in
-          Gen.next s >>= fun c2 ->
-          let n2 = Char.code c2 in
-          if n2 lsr 6 != 0b10 then raise MalFormed;
-          Some (Uchar.of_int (((n1 land 0x1f) lsl 6) lor (n2 land 0x3f)))
-      | '\224' .. '\239' as c ->
-          let n1 = Char.code c in
-          Gen.next s >>= fun c2 ->
-          let n2 = Char.code c2 in
-          Gen.next s >>= fun c3 ->
-          let n3 = Char.code c3 in
-          if n2 lsr 6 != 0b10 || n3 lsr 6 != 0b10 then raise MalFormed;
-          Some
-            (Uchar.of_int
-               (((n1 land 0x0f) lsl 12)
-               lor ((n2 land 0x3f) lsl 6)
-               lor (n3 land 0x3f)))
-      | '\240' .. '\247' as c ->
-          let n1 = Char.code c in
-          Gen.next s >>= fun c2 ->
-          let n2 = Char.code c2 in
-          Gen.next s >>= fun c3 ->
-          let n3 = Char.code c3 in
-          Gen.next s >>= fun c4 ->
-          let n4 = Char.code c4 in
-          if n2 lsr 6 != 0b10 || n3 lsr 6 != 0b10 || n4 lsr 6 != 0b10 then
-            raise MalFormed;
-          Some
-            (Uchar.of_int
-               (((n1 land 0x07) lsl 18)
-               lor ((n2 land 0x3f) lsl 12)
-               lor ((n3 land 0x3f) lsl 6)
-               lor (n4 land 0x3f)))
-      | _ -> raise MalFormed
+      let next_or_fail () =
+        match Gen.next s with None -> raise MalFormed | Some x -> Char.code x
+      in
+      Gen.next s >>| fun c1 ->
+      match width c1 with
+        | 1 -> Uchar.of_char c1
+        | 2 ->
+            let n1 = Char.code c1 in
+            let n2 = next_or_fail () in
+            if n2 lsr 6 != 0b10 then raise MalFormed;
+            Uchar.of_int (((n1 land 0x1f) lsl 6) lor (n2 land 0x3f))
+        | 3 ->
+            let n1 = Char.code c1 in
+            let n2 = next_or_fail () in
+            let n3 = next_or_fail () in
+            if n2 lsr 6 != 0b10 || n3 lsr 6 != 0b10 then raise MalFormed;
+            Uchar.of_int
+              (((n1 land 0x0f) lsl 12)
+              lor ((n2 land 0x3f) lsl 6)
+              lor (n3 land 0x3f))
+        | 4 ->
+            let n1 = Char.code c1 in
+            let n2 = next_or_fail () in
+            let n3 = next_or_fail () in
+            let n4 = next_or_fail () in
+            if n2 lsr 6 != 0b10 || n3 lsr 6 != 0b10 || n4 lsr 6 != 0b10 then
+              raise MalFormed;
+            Uchar.of_int
+              (((n1 land 0x07) lsl 18)
+              lor ((n2 land 0x3f) lsl 12)
+              lor ((n3 land 0x3f) lsl 6)
+              lor (n4 land 0x3f))
+        | _ -> raise MalFormed
 
     let compute_len s pos bytes =
       let rec aux n i =
         if i >= pos + bytes then if i = pos + bytes then n else raise MalFormed
         else (
-          let w = width.(Char.code s.[i]) in
-          if w > 0 then aux (succ n) (i + w) else raise MalFormed)
+          let w = width s.[i] in
+          aux (succ n) (i + w))
       in
       aux 0 pos
 
     let rec blit_to_int s spos a apos n =
       if n > 0 then begin
         a.(apos) <- next s spos;
-        blit_to_int s (spos + width.(Char.code s.[spos])) a (succ apos) (pred n)
+        blit_to_int s (spos + width s.[spos]) a (succ apos) (pred n)
       end
 
     let to_int_array s pos bytes =
@@ -391,7 +457,16 @@ module Utf8 = struct
     let gen_from_char_gen s () = from_gen s
   end
 
-  let from_channel ic = from_gen (Helper.gen_from_char_gen (gen_of_channel ic))
+  let from_channel ic =
+    make_from_channel ic ~min_bytes_per_uchar:1 ~max_bytes_per_uchar:4
+      ~read_uchar:(fun ~can_refill t ->
+        let w = Helper.width (Chan.get t 0) in
+        Chan.ensure_bytes_available t ~can_refill w;
+        let c =
+          Helper.next (Bytes.unsafe_to_string (Chan.raw_buf t)) (Chan.raw_pos t)
+        in
+        Chan.advance t w;
+        Uchar.of_int c)
 
   let from_gen s =
     create (fill_buf_from_gen (fun id -> id) (Helper.gen_from_char_gen s))
@@ -410,10 +485,10 @@ module Utf16 = struct
   module Helper = struct
     (* http://www.ietf.org/rfc/rfc2781.txt *)
 
-    let number_of_char_pair bo c1 c2 =
+    let number_of_pair bo c1 c2 =
       match bo with
-        | Little_endian -> (Char.code c2 lsl 8) + Char.code c1
-        | Big_endian -> (Char.code c1 lsl 8) + Char.code c2
+        | Little_endian -> (c2 lsl 8) + c1
+        | Big_endian -> (c1 lsl 8) + c2
 
     let char_pair_of_number bo num =
       match bo with
@@ -422,43 +497,43 @@ module Utf16 = struct
         | Big_endian ->
             (Char.chr ((num lsr 8) land 0xFF), Char.chr (num land 0xFF))
 
-    let next_in_gen bo s =
-      Gen.next s >>= fun c1 ->
-      Gen.next s >>= fun c2 -> Some (number_of_char_pair bo c1 c2)
-
-    let from_gen bo s w1 =
-      if w1 = 0xfffe then raise (InvalidCodepoint w1);
-      if w1 < 0xd800 || 0xdfff < w1 then Some (Uchar.of_int w1)
-      else if w1 <= 0xdbff then (
-        next_in_gen bo s >>= fun w2 ->
-        if w2 < 0xdc00 || w2 > 0xdfff then raise MalFormed;
-        let upper10 = (w1 land 0x3ff) lsl 10 and lower10 = w2 land 0x3ff in
-        Some (Uchar.of_int (0x10000 + upper10 + lower10)))
-      else raise MalFormed
+    let get_bo bo c1 c2 =
+      match !bo with
+        | Some o -> o
+        | None ->
+            let o =
+              match (c1, c2) with
+                | 0xff, 0xfe -> Little_endian
+                | _ -> Big_endian
+            in
+            bo := Some o;
+            o
 
-    let gen_from_char_gen opt_bo s =
+    let from_gen opt_bo s =
+      let next_or_fail () =
+        match Gen.next s with None -> raise MalFormed | Some x -> Char.code x
+      in
       let bo = ref opt_bo in
       fun () ->
-        Gen.next s >>= fun c1 ->
-        Gen.next s >>= fun c2 ->
-        let o =
-          match !bo with
-            | Some o -> o
-            | None ->
-                let o =
-                  match (Char.code c1, Char.code c2) with
-                    | 0xff, 0xfe -> Little_endian
-                    | _ -> Big_endian
-                in
-                bo := Some o;
-                o
-        in
-        from_gen o s (number_of_char_pair o c1 c2)
+        Gen.next s >>| fun c1 ->
+        let n1 = Char.code c1 in
+        let n2 = next_or_fail () in
+        let o = get_bo bo n1 n2 in
+        let w1 = number_of_pair o n1 n2 in
+        if w1 = 0xfffe then raise (InvalidCodepoint w1);
+        if w1 < 0xd800 || 0xdfff < w1 then Uchar.of_int w1
+        else if w1 <= 0xdbff then (
+          let n3 = next_or_fail () in
+          let n4 = next_or_fail () in
+          let w2 = number_of_pair o n3 n4 in
+          if w2 < 0xdc00 || w2 > 0xdfff then raise MalFormed;
+          let upper10 = (w1 land 0x3ff) lsl 10 and lower10 = w2 land 0x3ff in
+          Uchar.of_int (0x10000 + upper10 + lower10))
+        else raise MalFormed
 
     let compute_len opt_bo str pos bytes =
       let s =
-        gen_from_char_gen opt_bo
-          (Gen.init ~limit:(bytes - pos) (fun i -> str.[i + pos]))
+        from_gen opt_bo (Gen.init ~limit:(bytes - pos) (fun i -> str.[i + pos]))
       in
       let l = ref 0 in
       Gen.iter (fun _ -> incr l) s;
@@ -466,8 +541,7 @@ module Utf16 = struct
 
     let blit_to_int opt_bo s spos a apos bytes =
       let s =
-        gen_from_char_gen opt_bo
-          (Gen.init ~limit:(bytes - spos) (fun i -> s.[i + spos]))
+        from_gen opt_bo (Gen.init ~limit:(bytes - spos) (fun i -> s.[i + spos]))
       in
       let p = ref apos in
       Gen.iter
@@ -511,8 +585,30 @@ module Utf16 = struct
       aux apos len
   end
 
-  let from_gen s opt_bo = from_gen (Helper.gen_from_char_gen opt_bo s)
-  let from_channel ic opt_bo = from_gen (gen_of_channel ic) opt_bo
+  let from_gen s opt_bo = from_gen (Helper.from_gen opt_bo s)
+
+  let from_channel ic opt_bo =
+    let bo = ref opt_bo in
+    make_from_channel ic ~min_bytes_per_uchar:2 ~max_bytes_per_uchar:4
+      ~read_uchar:(fun ~can_refill t ->
+        let n1 = Char.code (Chan.get t 0) in
+        let n2 = Char.code (Chan.get t 1) in
+        let o = Helper.get_bo bo n1 n2 in
+        let w1 = Helper.number_of_pair o n1 n2 in
+        if w1 = 0xfffe then raise (InvalidCodepoint w1);
+        if w1 < 0xd800 || 0xdfff < w1 then (
+          Chan.advance t 2;
+          Uchar.of_int w1)
+        else if w1 <= 0xdbff then (
+          Chan.ensure_bytes_available t ~can_refill 4;
+          let n3 = Char.code (Chan.get t 2) in
+          let n4 = Char.code (Chan.get t 3) in
+          let w2 = Helper.number_of_pair o n3 n4 in
+          if w2 < 0xdc00 || w2 > 0xdfff then raise MalFormed;
+          let upper10 = (w1 land 0x3ff) lsl 10 and lower10 = w2 land 0x3ff in
+          Chan.advance t 4;
+          Uchar.of_int (0x10000 + upper10 + lower10))
+        else raise MalFormed)
 
   let from_string s opt_bo =
     let a = Helper.to_uchar_array opt_bo s 0 (String.length s) in
diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml
index 172ad71..44369c8 100644
--- a/src/syntax/ppx_sedlex.ml
+++ b/src/syntax/ppx_sedlex.ml
@@ -177,7 +177,11 @@ let partition (name, p) =
           Char.code (String.unsafe_get [%e evar ~loc (table_name t)] [%e c]) - 1]
   in
   let body = gen_tree (simplify_decision_tree (decision_table p)) in
-  glb_value name [%expr fun c -> [%e body]]
+  glb_value name
+    [%expr
+      fun c ->
+        let open! Stdlib in
+        [%e body]]
 
 (* Code generation for the automata *)
 
@@ -196,9 +200,9 @@ let call_state lexbuf auto state =
     match best_final final with
       | Some i -> eint ~loc:default_loc i
       | None -> assert false)
-  else appfun (state_fun state) [evar ~loc:default_loc lexbuf]
+  else appfun (state_fun state) [lexbuf]
 
-let gen_state lexbuf auto i (trans, final) =
+let gen_state (lexbuf_name, lexbuf) auto i (trans, final) =
   let loc = default_loc in
   let partition = Array.map fst trans in
   let cases =
@@ -211,22 +215,21 @@ let gen_state lexbuf auto i (trans, final) =
   let body () =
     pexp_match ~loc
       (appfun (partition_name partition)
-         [[%expr Sedlexing.__private__next_int [%e evar ~loc lexbuf]]])
+         [[%expr Sedlexing.__private__next_int [%e lexbuf]]])
       (cases
       @ [
           case
             ~lhs:[%pat? _]
             ~guard:None
-            ~rhs:[%expr Sedlexing.backtrack [%e evar ~loc lexbuf]];
+            ~rhs:[%expr Sedlexing.backtrack [%e lexbuf]];
         ])
   in
   let ret body =
+    let lhs = pvar ~loc:lexbuf.pexp_loc lexbuf_name in
     [
       value_binding ~loc
         ~pat:(pvar ~loc (state_fun i))
-        ~expr:
-          (pexp_function ~loc
-             [case ~lhs:(pvar ~loc lexbuf) ~guard:None ~rhs:body]);
+        ~expr:(pexp_function ~loc [case ~lhs ~guard:None ~rhs:body]);
     ]
   in
   match best_final final with
@@ -235,7 +238,7 @@ let gen_state lexbuf auto i (trans, final) =
     | Some i ->
         ret
           [%expr
-            Sedlexing.mark [%e evar ~loc lexbuf] [%e eint ~loc i];
+            Sedlexing.mark [%e lexbuf] [%e eint ~loc i];
             [%e body ()]]
 
 let gen_recflag auto =
@@ -253,7 +256,7 @@ let gen_recflag auto =
     Nonrecursive
   with Exit -> Recursive
 
-let gen_definition lexbuf l error =
+let gen_definition ((_, lexbuf) as lexbuf_with_name) l error =
   let loc = default_loc in
   let brs = Array.of_list l in
   let auto = Sedlex.compile (Array.map fst brs) in
@@ -263,13 +266,13 @@ let gen_definition lexbuf l error =
          (fun i (_, e) -> case ~lhs:(pint ~loc i) ~guard:None ~rhs:e)
          brs)
   in
-  let states = Array.mapi (gen_state lexbuf auto) auto in
+  let states = Array.mapi (gen_state lexbuf_with_name auto) auto in
   let states = List.flatten (Array.to_list states) in
   pexp_let ~loc (gen_recflag auto) states
     (pexp_sequence ~loc
-       [%expr Sedlexing.start [%e evar ~loc lexbuf]]
+       [%expr Sedlexing.start [%e lexbuf]]
        (pexp_match ~loc
-          (appfun (state_fun 0) [evar ~loc lexbuf])
+          (appfun (state_fun 0) [lexbuf])
           (cases @ [case ~lhs:(ppat_any ~loc) ~guard:None ~rhs:error])))
 
 (* Lexer specification parser *)
@@ -427,7 +430,8 @@ let mapper =
         | [%expr [%sedlex [%e? { pexp_desc = Pexp_match (lexbuf, cases) }]]] ->
             let lexbuf =
               match lexbuf with
-                | { pexp_desc = Pexp_ident { txt = Lident lexbuf } } -> lexbuf
+                | { pexp_desc = Pexp_ident { txt = Lident txt } } ->
+                    (txt, lexbuf)
                 | _ ->
                     err lexbuf.pexp_loc
                       "the matched expression must be a single identifier"
@@ -436,7 +440,7 @@ let mapper =
             let error =
               match List.hd cases with
                 | { pc_lhs = [%pat? _]; pc_rhs = e; pc_guard = None } ->
-                    super#expression e
+                    this#expression e
                 | { pc_lhs = p } ->
                     err p.ppat_loc
                       "the last branch must be a catch-all error case"
@@ -446,7 +450,7 @@ let mapper =
               List.map
                 (function
                   | { pc_lhs = p; pc_rhs = e; pc_guard = None } ->
-                      (regexp_of_pattern env p, super#expression e)
+                      (regexp_of_pattern env p, this#expression e)
                   | { pc_guard = Some e } ->
                       err e.pexp_loc "'when' guards are not supported")
                 cases
diff --git a/src/syntax/sedlex_cset.ml b/src/syntax/sedlex_cset.ml
index 6bee853..254997a 100644
--- a/src/syntax/sedlex_cset.ml
+++ b/src/syntax/sedlex_cset.ml
@@ -9,7 +9,6 @@
 type t = (int * int) list
 
 let max_code = 0x10ffff (* must be < max_int *)
-
 let min_code = -1
 let empty = []
 let singleton i = [(i, i)]
diff --git a/src/syntax/unicode.ml b/src/syntax/unicode.ml
index ed32296..0216979 100644
--- a/src/syntax/unicode.ml
+++ b/src/syntax/unicode.ml
@@ -1,11944 +1,2553 @@
-let version = "14.0.0"
+(* This file was automatically generated, do not edit. *)
+(* Edit gen_unicode.ml.inc instead. *)
+[@@@ocamlformat "disable"]
+
+let version = "15.0.0"
 
 module Categories = struct
-  let cc = [(0x85, 0x85); (0x7f, 0x9f); (0x9, 0xd); (0x0, 0x1f)]
+
+  let cc =
+    [0x85, 0x85; 0x7f, 0x9f; 0x9, 0xd; 0x0, 0x1f]
 
   let cf =
-    [
-      (0xad, 0xad);
-      (0x600, 0x605);
-      (0x61c, 0x61c);
-      (0x6dd, 0x6dd);
-      (0x70f, 0x70f);
-      (0x890, 0x891);
-      (0x8e2, 0x8e2);
-      (0x180e, 0x180e);
-      (0x200b, 0x200f);
-      (0x200c, 0x200c);
-      (0x200c, 0x200d);
-      (0x200e, 0x200f);
-      (0x202a, 0x202e);
-      (0x2060, 0x2064);
-      (0x2061, 0x2064);
-      (0x2066, 0x2069);
-      (0x2066, 0x206f);
-      (0x206a, 0x206f);
-      (0xfeff, 0xfeff);
-      (0xfff9, 0xfffb);
-      (0x110bd, 0x110bd);
-      (0x110cd, 0x110cd);
-      (0x13430, 0x13438);
-      (0x1bca0, 0x1bca3);
-      (0x1d173, 0x1d17a);
-      (0xe0020, 0xe007f);
-      (0xe0001, 0xe0001);
-    ]
+    [0xad, 0xad; 0x600, 0x605; 0x61c, 0x61c; 0x6dd, 0x6dd; 0x70f, 0x70f;
+     0x890, 0x891; 0x8e2, 0x8e2; 0x180e, 0x180e; 0x200b, 0x200f; 0x200c, 0x200c;
+     0x200c, 0x200d; 0x200e, 0x200f; 0x202a, 0x202e; 0x2060, 0x2064; 0x2061, 0x2064;
+     0x2066, 0x2069; 0x2066, 0x206f; 0x206a, 0x206f; 0xfeff, 0xfeff; 0xfff9, 0xfffb;
+     0x110bd, 0x110bd; 0x110cd, 0x110cd; 0x13430, 0x1343f; 0x1bca0, 0x1bca3; 0x1d173, 0x1d17a;
+     0xe0020, 0xe007f; 0xe0001, 0xe0001]
 
   let cn =
-    [
-      (0x378, 0x379);
-      (0x380, 0x383);
-      (0x38b, 0x38b);
-      (0x38d, 0x38d);
-      (0x3a2, 0x3a2);
-      (0x530, 0x530);
-      (0x557, 0x558);
-      (0x58b, 0x58c);
-      (0x590, 0x590);
-      (0x5c8, 0x5cf);
-      (0x5eb, 0x5ee);
-      (0x5f5, 0x5ff);
-      (0x70e, 0x70e);
-      (0x74b, 0x74c);
-      (0x7b2, 0x7bf);
-      (0x7fb, 0x7fc);
-      (0x82e, 0x82f);
-      (0x83f, 0x83f);
-      (0x85c, 0x85d);
-      (0x85f, 0x85f);
-      (0x86b, 0x86f);
-      (0x88f, 0x88f);
-      (0x892, 0x897);
-      (0x984, 0x984);
-      (0x98d, 0x98e);
-      (0x991, 0x992);
-      (0x9a9, 0x9a9);
-      (0x9b1, 0x9b1);
-      (0x9b3, 0x9b5);
-      (0x9ba, 0x9bb);
-      (0x9c5, 0x9c6);
-      (0x9c9, 0x9ca);
-      (0x9cf, 0x9d6);
-      (0x9d8, 0x9db);
-      (0x9de, 0x9de);
-      (0x9e4, 0x9e5);
-      (0x9ff, 0xa00);
-      (0xa04, 0xa04);
-      (0xa0b, 0xa0e);
-      (0xa11, 0xa12);
-      (0xa29, 0xa29);
-      (0xa31, 0xa31);
-      (0xa34, 0xa34);
-      (0xa37, 0xa37);
-      (0xa3a, 0xa3b);
-      (0xa3d, 0xa3d);
-      (0xa43, 0xa46);
-      (0xa49, 0xa4a);
-      (0xa4e, 0xa50);
-      (0xa52, 0xa58);
-      (0xa5d, 0xa5d);
-      (0xa5f, 0xa65);
-      (0xa77, 0xa80);
-      (0xa84, 0xa84);
-      (0xa8e, 0xa8e);
-      (0xa92, 0xa92);
-      (0xaa9, 0xaa9);
-      (0xab1, 0xab1);
-      (0xab4, 0xab4);
-      (0xaba, 0xabb);
-      (0xac6, 0xac6);
-      (0xaca, 0xaca);
-      (0xace, 0xacf);
-      (0xad1, 0xadf);
-      (0xae4, 0xae5);
-      (0xaf2, 0xaf8);
-      (0xb00, 0xb00);
-      (0xb04, 0xb04);
-      (0xb0d, 0xb0e);
-      (0xb11, 0xb12);
-      (0xb29, 0xb29);
-      (0xb31, 0xb31);
-      (0xb34, 0xb34);
-      (0xb3a, 0xb3b);
-      (0xb45, 0xb46);
-      (0xb49, 0xb4a);
-      (0xb4e, 0xb54);
-      (0xb58, 0xb5b);
-      (0xb5e, 0xb5e);
-      (0xb64, 0xb65);
-      (0xb78, 0xb81);
-      (0xb84, 0xb84);
-      (0xb8b, 0xb8d);
-      (0xb91, 0xb91);
-      (0xb96, 0xb98);
-      (0xb9b, 0xb9b);
-      (0xb9d, 0xb9d);
-      (0xba0, 0xba2);
-      (0xba5, 0xba7);
-      (0xbab, 0xbad);
-      (0xbba, 0xbbd);
-      (0xbc3, 0xbc5);
-      (0xbc9, 0xbc9);
-      (0xbce, 0xbcf);
-      (0xbd1, 0xbd6);
-      (0xbd8, 0xbe5);
-      (0xbfb, 0xbff);
-      (0xc0d, 0xc0d);
-      (0xc11, 0xc11);
-      (0xc29, 0xc29);
-      (0xc3a, 0xc3b);
-      (0xc45, 0xc45);
-      (0xc49, 0xc49);
-      (0xc4e, 0xc54);
-      (0xc57, 0xc57);
-      (0xc5b, 0xc5c);
-      (0xc5e, 0xc5f);
-      (0xc64, 0xc65);
-      (0xc70, 0xc76);
-      (0xc8d, 0xc8d);
-      (0xc91, 0xc91);
-      (0xca9, 0xca9);
-      (0xcb4, 0xcb4);
-      (0xcba, 0xcbb);
-      (0xcc5, 0xcc5);
-      (0xcc9, 0xcc9);
-      (0xcce, 0xcd4);
-      (0xcd7, 0xcdc);
-      (0xcdf, 0xcdf);
-      (0xce4, 0xce5);
-      (0xcf0, 0xcf0);
-      (0xcf3, 0xcff);
-      (0xd0d, 0xd0d);
-      (0xd11, 0xd11);
-      (0xd45, 0xd45);
-      (0xd49, 0xd49);
-      (0xd50, 0xd53);
-      (0xd64, 0xd65);
-      (0xd80, 0xd80);
-      (0xd84, 0xd84);
-      (0xd97, 0xd99);
-      (0xdb2, 0xdb2);
-      (0xdbc, 0xdbc);
-      (0xdbe, 0xdbf);
-      (0xdc7, 0xdc9);
-      (0xdcb, 0xdce);
-      (0xdd5, 0xdd5);
-      (0xdd7, 0xdd7);
-      (0xde0, 0xde5);
-      (0xdf0, 0xdf1);
-      (0xdf5, 0xe00);
-      (0xe3b, 0xe3e);
-      (0xe5c, 0xe80);
-      (0xe83, 0xe83);
-      (0xe85, 0xe85);
-      (0xe8b, 0xe8b);
-      (0xea4, 0xea4);
-      (0xea6, 0xea6);
-      (0xebe, 0xebf);
-      (0xec5, 0xec5);
-      (0xec7, 0xec7);
-      (0xece, 0xecf);
-      (0xeda, 0xedb);
-      (0xee0, 0xeff);
-      (0xf48, 0xf48);
-      (0xf6d, 0xf70);
-      (0xf98, 0xf98);
-      (0xfbd, 0xfbd);
-      (0xfcd, 0xfcd);
-      (0xfdb, 0xfff);
-      (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);
-      (0x1716, 0x171e);
-      (0x1737, 0x173f);
-      (0x1754, 0x175f);
-      (0x176d, 0x176d);
-      (0x1771, 0x1771);
-      (0x1774, 0x177f);
-      (0x17de, 0x17df);
-      (0x17ea, 0x17ef);
-      (0x17fa, 0x17ff);
-      (0x181a, 0x181f);
-      (0x1879, 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);
-      (0x1acf, 0x1aff);
-      (0x1b4d, 0x1b4f);
-      (0x1b7f, 0x1b7f);
-      (0x1bf4, 0x1bfb);
-      (0x1c38, 0x1c3a);
-      (0x1c4a, 0x1c4c);
-      (0x1c89, 0x1c8f);
-      (0x1cbb, 0x1cbc);
-      (0x1cc8, 0x1ccf);
-      (0x1cfb, 0x1cff);
-      (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);
-      (0x20c1, 0x20cf);
-      (0x20f1, 0x20ff);
-      (0x218c, 0x218f);
-      (0x2427, 0x243f);
-      (0x244b, 0x245f);
-      (0x2b74, 0x2b75);
-      (0x2b96, 0x2b96);
-      (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);
-      (0x2e5e, 0x2e7f);
-      (0x2e9a, 0x2e9a);
-      (0x2ef4, 0x2eff);
-      (0x2fd6, 0x2fef);
-      (0x2ffc, 0x2fff);
-      (0x3040, 0x3040);
-      (0x3097, 0x3098);
-      (0x3100, 0x3104);
-      (0x3130, 0x3130);
-      (0x318f, 0x318f);
-      (0x31e4, 0x31ef);
-      (0x321f, 0x321f);
-      (0xa48d, 0xa48f);
-      (0xa4c7, 0xa4cf);
-      (0xa62c, 0xa63f);
-      (0xa6f8, 0xa6ff);
-      (0xa7cb, 0xa7cf);
-      (0xa7d2, 0xa7d2);
-      (0xa7d4, 0xa7d4);
-      (0xa7da, 0xa7f1);
-      (0xa82d, 0xa82f);
-      (0xa83a, 0xa83f);
-      (0xa878, 0xa87f);
-      (0xa8c6, 0xa8cd);
-      (0xa8da, 0xa8df);
-      (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);
-      (0xab6c, 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);
-      (0xfbc3, 0xfbd2);
-      (0xfd90, 0xfd91);
-      (0xfdc8, 0xfdce);
-      (0xfdd0, 0xfdef);
-      (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);
-      (0xfff0, 0xfff8);
-      (0xfffe, 0xffff);
-      (0x1000c, 0x1000c);
-      (0x10027, 0x10027);
-      (0x1003b, 0x1003b);
-      (0x1003e, 0x1003e);
-      (0x1004e, 0x1004f);
-      (0x1005e, 0x1007f);
-      (0x100fb, 0x100ff);
-      (0x10103, 0x10106);
-      (0x10134, 0x10136);
-      (0x1018f, 0x1018f);
-      (0x1019d, 0x1019f);
-      (0x101a1, 0x101cf);
-      (0x101fe, 0x1027f);
-      (0x1029d, 0x1029f);
-      (0x102d1, 0x102df);
-      (0x102fc, 0x102ff);
-      (0x10324, 0x1032c);
-      (0x1034b, 0x1034f);
-      (0x1037b, 0x1037f);
-      (0x1039e, 0x1039e);
-      (0x103c4, 0x103c7);
-      (0x103d6, 0x103ff);
-      (0x1049e, 0x1049f);
-      (0x104aa, 0x104af);
-      (0x104d4, 0x104d7);
-      (0x104fc, 0x104ff);
-      (0x10528, 0x1052f);
-      (0x10564, 0x1056e);
-      (0x1057b, 0x1057b);
-      (0x1058b, 0x1058b);
-      (0x10593, 0x10593);
-      (0x10596, 0x10596);
-      (0x105a2, 0x105a2);
-      (0x105b2, 0x105b2);
-      (0x105ba, 0x105ba);
-      (0x105bd, 0x105ff);
-      (0x10737, 0x1073f);
-      (0x10756, 0x1075f);
-      (0x10768, 0x1077f);
-      (0x10786, 0x10786);
-      (0x107b1, 0x107b1);
-      (0x107bb, 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);
-      (0x10a36, 0x10a37);
-      (0x10a3b, 0x10a3e);
-      (0x10a49, 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);
-      (0x10d28, 0x10d2f);
-      (0x10d3a, 0x10e5f);
-      (0x10e7f, 0x10e7f);
-      (0x10eaa, 0x10eaa);
-      (0x10eae, 0x10eaf);
-      (0x10eb2, 0x10eff);
-      (0x10f28, 0x10f2f);
-      (0x10f5a, 0x10f6f);
-      (0x10f8a, 0x10faf);
-      (0x10fcc, 0x10fdf);
-      (0x10ff7, 0x10fff);
-      (0x1104e, 0x11051);
-      (0x11076, 0x1107e);
-      (0x110c3, 0x110cc);
-      (0x110ce, 0x110cf);
-      (0x110e9, 0x110ef);
-      (0x110fa, 0x110ff);
-      (0x11135, 0x11135);
-      (0x11148, 0x1114f);
-      (0x11177, 0x1117f);
-      (0x111e0, 0x111e0);
-      (0x111f5, 0x111ff);
-      (0x11212, 0x11212);
-      (0x1123f, 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, 0x1133a);
-      (0x11345, 0x11346);
-      (0x11349, 0x1134a);
-      (0x1134e, 0x1134f);
-      (0x11351, 0x11356);
-      (0x11358, 0x1135c);
-      (0x11364, 0x11365);
-      (0x1136d, 0x1136f);
-      (0x11375, 0x113ff);
-      (0x1145c, 0x1145c);
-      (0x11462, 0x1147f);
-      (0x114c8, 0x114cf);
-      (0x114da, 0x1157f);
-      (0x115b6, 0x115b7);
-      (0x115de, 0x115ff);
-      (0x11645, 0x1164f);
-      (0x1165a, 0x1165f);
-      (0x1166d, 0x1167f);
-      (0x116ba, 0x116bf);
-      (0x116ca, 0x116ff);
-      (0x1171b, 0x1171c);
-      (0x1172c, 0x1172f);
-      (0x11747, 0x117ff);
-      (0x1183c, 0x1189f);
-      (0x118f3, 0x118fe);
-      (0x11907, 0x11908);
-      (0x1190a, 0x1190b);
-      (0x11914, 0x11914);
-      (0x11917, 0x11917);
-      (0x11936, 0x11936);
-      (0x11939, 0x1193a);
-      (0x11947, 0x1194f);
-      (0x1195a, 0x1199f);
-      (0x119a8, 0x119a9);
-      (0x119d8, 0x119d9);
-      (0x119e5, 0x119ff);
-      (0x11a48, 0x11a4f);
-      (0x11aa3, 0x11aaf);
-      (0x11af9, 0x11bff);
-      (0x11c09, 0x11c09);
-      (0x11c37, 0x11c37);
-      (0x11c46, 0x11c4f);
-      (0x11c6d, 0x11c6f);
-      (0x11c90, 0x11c91);
-      (0x11ca8, 0x11ca8);
-      (0x11cb7, 0x11cff);
-      (0x11d07, 0x11d07);
-      (0x11d0a, 0x11d0a);
-      (0x11d37, 0x11d39);
-      (0x11d3b, 0x11d3b);
-      (0x11d3e, 0x11d3e);
-      (0x11d48, 0x11d4f);
-      (0x11d5a, 0x11d5f);
-      (0x11d66, 0x11d66);
-      (0x11d69, 0x11d69);
-      (0x11d8f, 0x11d8f);
-      (0x11d92, 0x11d92);
-      (0x11d99, 0x11d9f);
-      (0x11daa, 0x11edf);
-      (0x11ef9, 0x11faf);
-      (0x11fb1, 0x11fbf);
-      (0x11ff2, 0x11ffe);
-      (0x1239a, 0x123ff);
-      (0x1246f, 0x1246f);
-      (0x12475, 0x1247f);
-      (0x12544, 0x12f8f);
-      (0x12ff3, 0x12fff);
-      (0x1342f, 0x1342f);
-      (0x13439, 0x143ff);
-      (0x14647, 0x167ff);
-      (0x16a39, 0x16a3f);
-      (0x16a5f, 0x16a5f);
-      (0x16a6a, 0x16a6d);
-      (0x16abf, 0x16abf);
-      (0x16aca, 0x16acf);
-      (0x16aee, 0x16aef);
-      (0x16af6, 0x16aff);
-      (0x16b46, 0x16b4f);
-      (0x16b5a, 0x16b5a);
-      (0x16b62, 0x16b62);
-      (0x16b78, 0x16b7c);
-      (0x16b90, 0x16e3f);
-      (0x16e9b, 0x16eff);
-      (0x16f4b, 0x16f4e);
-      (0x16f88, 0x16f8e);
-      (0x16fa0, 0x16fdf);
-      (0x16fe5, 0x16fef);
-      (0x16ff2, 0x16fff);
-      (0x187f8, 0x187ff);
-      (0x18cd6, 0x18cff);
-      (0x18d09, 0x1afef);
-      (0x1aff4, 0x1aff4);
-      (0x1affc, 0x1affc);
-      (0x1afff, 0x1afff);
-      (0x1b123, 0x1b14f);
-      (0x1b153, 0x1b163);
-      (0x1b168, 0x1b16f);
-      (0x1b2fc, 0x1bbff);
-      (0x1bc6b, 0x1bc6f);
-      (0x1bc7d, 0x1bc7f);
-      (0x1bc89, 0x1bc8f);
-      (0x1bc9a, 0x1bc9b);
-      (0x1bca4, 0x1ceff);
-      (0x1cf2e, 0x1cf2f);
-      (0x1cf47, 0x1cf4f);
-      (0x1cfc4, 0x1cfff);
-      (0x1d0f6, 0x1d0ff);
-      (0x1d127, 0x1d128);
-      (0x1d1eb, 0x1d1ff);
-      (0x1d246, 0x1d2df);
-      (0x1d2f4, 0x1d2ff);
-      (0x1d357, 0x1d35f);
-      (0x1d379, 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, 0x1deff);
-      (0x1df1f, 0x1dfff);
-      (0x1e007, 0x1e007);
-      (0x1e019, 0x1e01a);
-      (0x1e022, 0x1e022);
-      (0x1e025, 0x1e025);
-      (0x1e02b, 0x1e0ff);
-      (0x1e12d, 0x1e12f);
-      (0x1e13e, 0x1e13f);
-      (0x1e14a, 0x1e14d);
-      (0x1e150, 0x1e28f);
-      (0x1e2af, 0x1e2bf);
-      (0x1e2fa, 0x1e2fe);
-      (0x1e300, 0x1e7df);
-      (0x1e7e7, 0x1e7e7);
-      (0x1e7ec, 0x1e7ec);
-      (0x1e7ef, 0x1e7ef);
-      (0x1e7ff, 0x1e7ff);
-      (0x1e8c5, 0x1e8c6);
-      (0x1e8d7, 0x1e8ff);
-      (0x1e94c, 0x1e94f);
-      (0x1e95a, 0x1e95d);
-      (0x1e960, 0x1ec70);
-      (0x1ecb5, 0x1ed00);
-      (0x1ed3e, 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);
-      (0x1f1ae, 0x1f1e5);
-      (0x1f203, 0x1f20f);
-      (0x1f23c, 0x1f23f);
-      (0x1f249, 0x1f24f);
-      (0x1f252, 0x1f25f);
-      (0x1f266, 0x1f2ff);
-      (0x1f6d8, 0x1f6dc);
-      (0x1f6ed, 0x1f6ef);
-      (0x1f6fd, 0x1f6ff);
-      (0x1f774, 0x1f77f);
-      (0x1f7d9, 0x1f7df);
-      (0x1f7ec, 0x1f7ef);
-      (0x1f7f1, 0x1f7ff);
-      (0x1f80c, 0x1f80f);
-      (0x1f848, 0x1f84f);
-      (0x1f85a, 0x1f85f);
-      (0x1f888, 0x1f88f);
-      (0x1f8ae, 0x1f8af);
-      (0x1f8b2, 0x1f8ff);
-      (0x1fa54, 0x1fa5f);
-      (0x1fa6e, 0x1fa6f);
-      (0x1fa75, 0x1fa77);
-      (0x1fa7d, 0x1fa7f);
-      (0x1fa87, 0x1fa8f);
-      (0x1faad, 0x1faaf);
-      (0x1fabb, 0x1fabf);
-      (0x1fac6, 0x1facf);
-      (0x1fada, 0x1fadf);
-      (0x1fae8, 0x1faef);
-      (0x1faf7, 0x1faff);
-      (0x1fb93, 0x1fb93);
-      (0x1fbcb, 0x1fbef);
-      (0x1fbfa, 0x1ffff);
-      (0x1fffe, 0x1ffff);
-      (0x2a6e0, 0x2a6ff);
-      (0x2b739, 0x2b73f);
-      (0x2b81e, 0x2b81f);
-      (0x2cea2, 0x2ceaf);
-      (0x2ebe1, 0x2f7ff);
-      (0x2fa1e, 0x2ffff);
-      (0x2fffe, 0x2ffff);
-      (0x3134b, 0xe0000);
-      (0x3fffe, 0x3ffff);
-      (0x4fffe, 0x4ffff);
-      (0x5fffe, 0x5ffff);
-      (0x6fffe, 0x6ffff);
-      (0x7fffe, 0x7ffff);
-      (0x8fffe, 0x8ffff);
-      (0x9fffe, 0x9ffff);
-      (0xafffe, 0xaffff);
-      (0xbfffe, 0xbffff);
-      (0xcfffe, 0xcffff);
-      (0xdfffe, 0xdffff);
-      (0xe0000, 0xe0000);
-      (0xe0002, 0xe001f);
-      (0xe0080, 0xe00ff);
-      (0x10fffe, 0x10ffff);
-      (0xffffe, 0xfffff);
-      (0xefffe, 0xeffff);
-      (0xe01f0, 0xeffff);
-      (0xe01f0, 0xe0fff);
-    ]
+    [0x378, 0x379; 0x380, 0x383; 0x38b, 0x38b; 0x38d, 0x38d; 0x3a2, 0x3a2;
+     0x530, 0x530; 0x557, 0x558; 0x58b, 0x58c; 0x590, 0x590; 0x5c8, 0x5cf;
+     0x5eb, 0x5ee; 0x5f5, 0x5ff; 0x70e, 0x70e; 0x74b, 0x74c; 0x7b2, 0x7bf;
+     0x7fb, 0x7fc; 0x82e, 0x82f; 0x83f, 0x83f; 0x85c, 0x85d; 0x85f, 0x85f;
+     0x86b, 0x86f; 0x88f, 0x88f; 0x892, 0x897; 0x984, 0x984; 0x98d, 0x98e;
+     0x991, 0x992; 0x9a9, 0x9a9; 0x9b1, 0x9b1; 0x9b3, 0x9b5; 0x9ba, 0x9bb;
+     0x9c5, 0x9c6; 0x9c9, 0x9ca; 0x9cf, 0x9d6; 0x9d8, 0x9db; 0x9de, 0x9de;
+     0x9e4, 0x9e5; 0x9ff, 0xa00; 0xa04, 0xa04; 0xa0b, 0xa0e; 0xa11, 0xa12;
+     0xa29, 0xa29; 0xa31, 0xa31; 0xa34, 0xa34; 0xa37, 0xa37; 0xa3a, 0xa3b;
+     0xa3d, 0xa3d; 0xa43, 0xa46; 0xa49, 0xa4a; 0xa4e, 0xa50; 0xa52, 0xa58;
+     0xa5d, 0xa5d; 0xa5f, 0xa65; 0xa77, 0xa80; 0xa84, 0xa84; 0xa8e, 0xa8e;
+     0xa92, 0xa92; 0xaa9, 0xaa9; 0xab1, 0xab1; 0xab4, 0xab4; 0xaba, 0xabb;
+     0xac6, 0xac6; 0xaca, 0xaca; 0xace, 0xacf; 0xad1, 0xadf; 0xae4, 0xae5;
+     0xaf2, 0xaf8; 0xb00, 0xb00; 0xb04, 0xb04; 0xb0d, 0xb0e; 0xb11, 0xb12;
+     0xb29, 0xb29; 0xb31, 0xb31; 0xb34, 0xb34; 0xb3a, 0xb3b; 0xb45, 0xb46;
+     0xb49, 0xb4a; 0xb4e, 0xb54; 0xb58, 0xb5b; 0xb5e, 0xb5e; 0xb64, 0xb65;
+     0xb78, 0xb81; 0xb84, 0xb84; 0xb8b, 0xb8d; 0xb91, 0xb91; 0xb96, 0xb98;
+     0xb9b, 0xb9b; 0xb9d, 0xb9d; 0xba0, 0xba2; 0xba5, 0xba7; 0xbab, 0xbad;
+     0xbba, 0xbbd; 0xbc3, 0xbc5; 0xbc9, 0xbc9; 0xbce, 0xbcf; 0xbd1, 0xbd6;
+     0xbd8, 0xbe5; 0xbfb, 0xbff; 0xc0d, 0xc0d; 0xc11, 0xc11; 0xc29, 0xc29;
+     0xc3a, 0xc3b; 0xc45, 0xc45; 0xc49, 0xc49; 0xc4e, 0xc54; 0xc57, 0xc57;
+     0xc5b, 0xc5c; 0xc5e, 0xc5f; 0xc64, 0xc65; 0xc70, 0xc76; 0xc8d, 0xc8d;
+     0xc91, 0xc91; 0xca9, 0xca9; 0xcb4, 0xcb4; 0xcba, 0xcbb; 0xcc5, 0xcc5;
+     0xcc9, 0xcc9; 0xcce, 0xcd4; 0xcd7, 0xcdc; 0xcdf, 0xcdf; 0xce4, 0xce5;
+     0xcf0, 0xcf0; 0xcf4, 0xcff; 0xd0d, 0xd0d; 0xd11, 0xd11; 0xd45, 0xd45;
+     0xd49, 0xd49; 0xd50, 0xd53; 0xd64, 0xd65; 0xd80, 0xd80; 0xd84, 0xd84;
+     0xd97, 0xd99; 0xdb2, 0xdb2; 0xdbc, 0xdbc; 0xdbe, 0xdbf; 0xdc7, 0xdc9;
+     0xdcb, 0xdce; 0xdd5, 0xdd5; 0xdd7, 0xdd7; 0xde0, 0xde5; 0xdf0, 0xdf1;
+     0xdf5, 0xe00; 0xe3b, 0xe3e; 0xe5c, 0xe80; 0xe83, 0xe83; 0xe85, 0xe85;
+     0xe8b, 0xe8b; 0xea4, 0xea4; 0xea6, 0xea6; 0xebe, 0xebf; 0xec5, 0xec5;
+     0xec7, 0xec7; 0xecf, 0xecf; 0xeda, 0xedb; 0xee0, 0xeff; 0xf48, 0xf48;
+     0xf6d, 0xf70; 0xf98, 0xf98; 0xfbd, 0xfbd; 0xfcd, 0xfcd; 0xfdb, 0xfff;
+     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;
+     0x1716, 0x171e; 0x1737, 0x173f; 0x1754, 0x175f; 0x176d, 0x176d; 0x1771, 0x1771;
+     0x1774, 0x177f; 0x17de, 0x17df; 0x17ea, 0x17ef; 0x17fa, 0x17ff; 0x181a, 0x181f;
+     0x1879, 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; 0x1acf, 0x1aff; 0x1b4d, 0x1b4f;
+     0x1b7f, 0x1b7f; 0x1bf4, 0x1bfb; 0x1c38, 0x1c3a; 0x1c4a, 0x1c4c; 0x1c89, 0x1c8f;
+     0x1cbb, 0x1cbc; 0x1cc8, 0x1ccf; 0x1cfb, 0x1cff; 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; 0x20c1, 0x20cf; 0x20f1, 0x20ff;
+     0x218c, 0x218f; 0x2427, 0x243f; 0x244b, 0x245f; 0x2b74, 0x2b75; 0x2b96, 0x2b96;
+     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;
+     0x2e5e, 0x2e7f; 0x2e9a, 0x2e9a; 0x2ef4, 0x2eff; 0x2fd6, 0x2fef; 0x2ffc, 0x2fff;
+     0x3040, 0x3040; 0x3097, 0x3098; 0x3100, 0x3104; 0x3130, 0x3130; 0x318f, 0x318f;
+     0x31e4, 0x31ef; 0x321f, 0x321f; 0xa48d, 0xa48f; 0xa4c7, 0xa4cf; 0xa62c, 0xa63f;
+     0xa6f8, 0xa6ff; 0xa7cb, 0xa7cf; 0xa7d2, 0xa7d2; 0xa7d4, 0xa7d4; 0xa7da, 0xa7f1;
+     0xa82d, 0xa82f; 0xa83a, 0xa83f; 0xa878, 0xa87f; 0xa8c6, 0xa8cd; 0xa8da, 0xa8df;
+     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;
+     0xab6c, 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;
+     0xfbc3, 0xfbd2; 0xfd90, 0xfd91; 0xfdc8, 0xfdce; 0xfdd0, 0xfdef; 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; 0xfff0, 0xfff8; 0xfffe, 0xffff;
+     0x1000c, 0x1000c; 0x10027, 0x10027; 0x1003b, 0x1003b; 0x1003e, 0x1003e; 0x1004e, 0x1004f;
+     0x1005e, 0x1007f; 0x100fb, 0x100ff; 0x10103, 0x10106; 0x10134, 0x10136; 0x1018f, 0x1018f;
+     0x1019d, 0x1019f; 0x101a1, 0x101cf; 0x101fe, 0x1027f; 0x1029d, 0x1029f; 0x102d1, 0x102df;
+     0x102fc, 0x102ff; 0x10324, 0x1032c; 0x1034b, 0x1034f; 0x1037b, 0x1037f; 0x1039e, 0x1039e;
+     0x103c4, 0x103c7; 0x103d6, 0x103ff; 0x1049e, 0x1049f; 0x104aa, 0x104af; 0x104d4, 0x104d7;
+     0x104fc, 0x104ff; 0x10528, 0x1052f; 0x10564, 0x1056e; 0x1057b, 0x1057b; 0x1058b, 0x1058b;
+     0x10593, 0x10593; 0x10596, 0x10596; 0x105a2, 0x105a2; 0x105b2, 0x105b2; 0x105ba, 0x105ba;
+     0x105bd, 0x105ff; 0x10737, 0x1073f; 0x10756, 0x1075f; 0x10768, 0x1077f; 0x10786, 0x10786;
+     0x107b1, 0x107b1; 0x107bb, 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; 0x10a36, 0x10a37; 0x10a3b, 0x10a3e; 0x10a49, 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; 0x10d28, 0x10d2f; 0x10d3a, 0x10e5f; 0x10e7f, 0x10e7f;
+     0x10eaa, 0x10eaa; 0x10eae, 0x10eaf; 0x10eb2, 0x10efc; 0x10f28, 0x10f2f; 0x10f5a, 0x10f6f;
+     0x10f8a, 0x10faf; 0x10fcc, 0x10fdf; 0x10ff7, 0x10fff; 0x1104e, 0x11051; 0x11076, 0x1107e;
+     0x110c3, 0x110cc; 0x110ce, 0x110cf; 0x110e9, 0x110ef; 0x110fa, 0x110ff; 0x11135, 0x11135;
+     0x11148, 0x1114f; 0x11177, 0x1117f; 0x111e0, 0x111e0; 0x111f5, 0x111ff; 0x11212, 0x11212;
+     0x11242, 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, 0x1133a;
+     0x11345, 0x11346; 0x11349, 0x1134a; 0x1134e, 0x1134f; 0x11351, 0x11356; 0x11358, 0x1135c;
+     0x11364, 0x11365; 0x1136d, 0x1136f; 0x11375, 0x113ff; 0x1145c, 0x1145c; 0x11462, 0x1147f;
+     0x114c8, 0x114cf; 0x114da, 0x1157f; 0x115b6, 0x115b7; 0x115de, 0x115ff; 0x11645, 0x1164f;
+     0x1165a, 0x1165f; 0x1166d, 0x1167f; 0x116ba, 0x116bf; 0x116ca, 0x116ff; 0x1171b, 0x1171c;
+     0x1172c, 0x1172f; 0x11747, 0x117ff; 0x1183c, 0x1189f; 0x118f3, 0x118fe; 0x11907, 0x11908;
+     0x1190a, 0x1190b; 0x11914, 0x11914; 0x11917, 0x11917; 0x11936, 0x11936; 0x11939, 0x1193a;
+     0x11947, 0x1194f; 0x1195a, 0x1199f; 0x119a8, 0x119a9; 0x119d8, 0x119d9; 0x119e5, 0x119ff;
+     0x11a48, 0x11a4f; 0x11aa3, 0x11aaf; 0x11af9, 0x11aff; 0x11b0a, 0x11bff; 0x11c09, 0x11c09;
+     0x11c37, 0x11c37; 0x11c46, 0x11c4f; 0x11c6d, 0x11c6f; 0x11c90, 0x11c91; 0x11ca8, 0x11ca8;
+     0x11cb7, 0x11cff; 0x11d07, 0x11d07; 0x11d0a, 0x11d0a; 0x11d37, 0x11d39; 0x11d3b, 0x11d3b;
+     0x11d3e, 0x11d3e; 0x11d48, 0x11d4f; 0x11d5a, 0x11d5f; 0x11d66, 0x11d66; 0x11d69, 0x11d69;
+     0x11d8f, 0x11d8f; 0x11d92, 0x11d92; 0x11d99, 0x11d9f; 0x11daa, 0x11edf; 0x11ef9, 0x11eff;
+     0x11f11, 0x11f11; 0x11f3b, 0x11f3d; 0x11f5a, 0x11faf; 0x11fb1, 0x11fbf; 0x11ff2, 0x11ffe;
+     0x1239a, 0x123ff; 0x1246f, 0x1246f; 0x12475, 0x1247f; 0x12544, 0x12f8f; 0x12ff3, 0x12fff;
+     0x13456, 0x143ff; 0x14647, 0x167ff; 0x16a39, 0x16a3f; 0x16a5f, 0x16a5f; 0x16a6a, 0x16a6d;
+     0x16abf, 0x16abf; 0x16aca, 0x16acf; 0x16aee, 0x16aef; 0x16af6, 0x16aff; 0x16b46, 0x16b4f;
+     0x16b5a, 0x16b5a; 0x16b62, 0x16b62; 0x16b78, 0x16b7c; 0x16b90, 0x16e3f; 0x16e9b, 0x16eff;
+     0x16f4b, 0x16f4e; 0x16f88, 0x16f8e; 0x16fa0, 0x16fdf; 0x16fe5, 0x16fef; 0x16ff2, 0x16fff;
+     0x187f8, 0x187ff; 0x18cd6, 0x18cff; 0x18d09, 0x1afef; 0x1aff4, 0x1aff4; 0x1affc, 0x1affc;
+     0x1afff, 0x1afff; 0x1b123, 0x1b131; 0x1b133, 0x1b14f; 0x1b153, 0x1b154; 0x1b156, 0x1b163;
+     0x1b168, 0x1b16f; 0x1b2fc, 0x1bbff; 0x1bc6b, 0x1bc6f; 0x1bc7d, 0x1bc7f; 0x1bc89, 0x1bc8f;
+     0x1bc9a, 0x1bc9b; 0x1bca4, 0x1ceff; 0x1cf2e, 0x1cf2f; 0x1cf47, 0x1cf4f; 0x1cfc4, 0x1cfff;
+     0x1d0f6, 0x1d0ff; 0x1d127, 0x1d128; 0x1d1eb, 0x1d1ff; 0x1d246, 0x1d2bf; 0x1d2d4, 0x1d2df;
+     0x1d2f4, 0x1d2ff; 0x1d357, 0x1d35f; 0x1d379, 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, 0x1deff; 0x1df1f, 0x1df24; 0x1df2b, 0x1dfff; 0x1e007, 0x1e007; 0x1e019, 0x1e01a;
+     0x1e022, 0x1e022; 0x1e025, 0x1e025; 0x1e02b, 0x1e02f; 0x1e06e, 0x1e08e; 0x1e090, 0x1e0ff;
+     0x1e12d, 0x1e12f; 0x1e13e, 0x1e13f; 0x1e14a, 0x1e14d; 0x1e150, 0x1e28f; 0x1e2af, 0x1e2bf;
+     0x1e2fa, 0x1e2fe; 0x1e300, 0x1e4cf; 0x1e4fa, 0x1e7df; 0x1e7e7, 0x1e7e7; 0x1e7ec, 0x1e7ec;
+     0x1e7ef, 0x1e7ef; 0x1e7ff, 0x1e7ff; 0x1e8c5, 0x1e8c6; 0x1e8d7, 0x1e8ff; 0x1e94c, 0x1e94f;
+     0x1e95a, 0x1e95d; 0x1e960, 0x1ec70; 0x1ecb5, 0x1ed00; 0x1ed3e, 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; 0x1f1ae, 0x1f1e5;
+     0x1f203, 0x1f20f; 0x1f23c, 0x1f23f; 0x1f249, 0x1f24f; 0x1f252, 0x1f25f; 0x1f266, 0x1f2ff;
+     0x1f6d8, 0x1f6db; 0x1f6ed, 0x1f6ef; 0x1f6fd, 0x1f6ff; 0x1f777, 0x1f77a; 0x1f7da, 0x1f7df;
+     0x1f7ec, 0x1f7ef; 0x1f7f1, 0x1f7ff; 0x1f80c, 0x1f80f; 0x1f848, 0x1f84f; 0x1f85a, 0x1f85f;
+     0x1f888, 0x1f88f; 0x1f8ae, 0x1f8af; 0x1f8b2, 0x1f8ff; 0x1fa54, 0x1fa5f; 0x1fa6e, 0x1fa6f;
+     0x1fa7d, 0x1fa7f; 0x1fa89, 0x1fa8f; 0x1fabe, 0x1fabe; 0x1fac6, 0x1facd; 0x1fadc, 0x1fadf;
+     0x1fae9, 0x1faef; 0x1faf9, 0x1faff; 0x1fb93, 0x1fb93; 0x1fbcb, 0x1fbef; 0x1fbfa, 0x1ffff;
+     0x1fffe, 0x1ffff; 0x2a6e0, 0x2a6ff; 0x2b73a, 0x2b73f; 0x2b81e, 0x2b81f; 0x2cea2, 0x2ceaf;
+     0x2ebe1, 0x2f7ff; 0x2fa1e, 0x2ffff; 0x2fffe, 0x2ffff; 0x3134b, 0x3134f; 0x323b0, 0xe0000;
+     0x3fffe, 0x3ffff; 0x4fffe, 0x4ffff; 0x5fffe, 0x5ffff; 0x6fffe, 0x6ffff; 0x7fffe, 0x7ffff;
+     0x8fffe, 0x8ffff; 0x9fffe, 0x9ffff; 0xafffe, 0xaffff; 0xbfffe, 0xbffff; 0xcfffe, 0xcffff;
+     0xdfffe, 0xdffff; 0xe0000, 0xe0000; 0xe0002, 0xe001f; 0xe0080, 0xe00ff; 0xe01f0, 0xe0fff;
+     0x10fffe, 0x10ffff; 0xffffe, 0xfffff; 0xefffe, 0xeffff; 0xe01f0, 0xeffff]
 
-  let co = [(0x100000, 0x10fffd); (0xf0000, 0xffffd); (0xe000, 0xf8ff)]
-  let cs = [(0xd800, 0xdfff)]
+  let co =
+    [0x100000, 0x10fffd; 0xf0000, 0xffffd; 0xe000, 0xf8ff]
+
+  let cs =
+    [0xd800, 0xdfff]
 
   let ll =
-    [
-      (0x61, 0x7a);
-      (0xb5, 0xb5);
-      (0xdf, 0xf6);
-      (0xf8, 0xff);
-      (0x101, 0x101);
-      (0x103, 0x103);
-      (0x105, 0x105);
-      (0x107, 0x107);
-      (0x109, 0x109);
-      (0x10b, 0x10b);
-      (0x10d, 0x10d);
-      (0x10f, 0x10f);
-      (0x111, 0x111);
-      (0x113, 0x113);
-      (0x115, 0x115);
-      (0x117, 0x117);
-      (0x119, 0x119);
-      (0x11b, 0x11b);
-      (0x11d, 0x11d);
-      (0x11f, 0x11f);
-      (0x121, 0x121);
-      (0x123, 0x123);
-      (0x125, 0x125);
-      (0x127, 0x127);
-      (0x129, 0x129);
-      (0x12b, 0x12b);
-      (0x12d, 0x12d);
-      (0x12f, 0x12f);
-      (0x131, 0x131);
-      (0x133, 0x133);
-      (0x135, 0x135);
-      (0x137, 0x138);
-      (0x13a, 0x13a);
-      (0x13c, 0x13c);
-      (0x13e, 0x13e);
-      (0x140, 0x140);
-      (0x142, 0x142);
-      (0x144, 0x144);
-      (0x146, 0x146);
-      (0x148, 0x149);
-      (0x14b, 0x14b);
-      (0x14d, 0x14d);
-      (0x14f, 0x14f);
-      (0x151, 0x151);
-      (0x153, 0x153);
-      (0x155, 0x155);
-      (0x157, 0x157);
-      (0x159, 0x159);
-      (0x15b, 0x15b);
-      (0x15d, 0x15d);
-      (0x15f, 0x15f);
-      (0x161, 0x161);
-      (0x163, 0x163);
-      (0x165, 0x165);
-      (0x167, 0x167);
-      (0x169, 0x169);
-      (0x16b, 0x16b);
-      (0x16d, 0x16d);
-      (0x16f, 0x16f);
-      (0x171, 0x171);
-      (0x173, 0x173);
-      (0x175, 0x175);
-      (0x177, 0x177);
-      (0x17a, 0x17a);
-      (0x17c, 0x17c);
-      (0x17e, 0x180);
-      (0x183, 0x183);
-      (0x185, 0x185);
-      (0x188, 0x188);
-      (0x18c, 0x18d);
-      (0x192, 0x192);
-      (0x195, 0x195);
-      (0x199, 0x19b);
-      (0x19e, 0x19e);
-      (0x1a1, 0x1a1);
-      (0x1a3, 0x1a3);
-      (0x1a5, 0x1a5);
-      (0x1a8, 0x1a8);
-      (0x1aa, 0x1ab);
-      (0x1ad, 0x1ad);
-      (0x1b0, 0x1b0);
-      (0x1b4, 0x1b4);
-      (0x1b6, 0x1b6);
-      (0x1b9, 0x1ba);
-      (0x1bd, 0x1bf);
-      (0x1c6, 0x1c6);
-      (0x1c9, 0x1c9);
-      (0x1cc, 0x1cc);
-      (0x1ce, 0x1ce);
-      (0x1d0, 0x1d0);
-      (0x1d2, 0x1d2);
-      (0x1d4, 0x1d4);
-      (0x1d6, 0x1d6);
-      (0x1d8, 0x1d8);
-      (0x1da, 0x1da);
-      (0x1dc, 0x1dd);
-      (0x1df, 0x1df);
-      (0x1e1, 0x1e1);
-      (0x1e3, 0x1e3);
-      (0x1e5, 0x1e5);
-      (0x1e7, 0x1e7);
-      (0x1e9, 0x1e9);
-      (0x1eb, 0x1eb);
-      (0x1ed, 0x1ed);
-      (0x1ef, 0x1f0);
-      (0x1f3, 0x1f3);
-      (0x1f5, 0x1f5);
-      (0x1f9, 0x1f9);
-      (0x1fb, 0x1fb);
-      (0x1fd, 0x1fd);
-      (0x1ff, 0x1ff);
-      (0x201, 0x201);
-      (0x203, 0x203);
-      (0x205, 0x205);
-      (0x207, 0x207);
-      (0x209, 0x209);
-      (0x20b, 0x20b);
-      (0x20d, 0x20d);
-      (0x20f, 0x20f);
-      (0x211, 0x211);
-      (0x213, 0x213);
-      (0x215, 0x215);
-      (0x217, 0x217);
-      (0x219, 0x219);
-      (0x21b, 0x21b);
-      (0x21d, 0x21d);
-      (0x21f, 0x21f);
-      (0x221, 0x221);
-      (0x223, 0x223);
-      (0x225, 0x225);
-      (0x227, 0x227);
-      (0x229, 0x229);
-      (0x22b, 0x22b);
-      (0x22d, 0x22d);
-      (0x22f, 0x22f);
-      (0x231, 0x231);
-      (0x233, 0x239);
-      (0x23c, 0x23c);
-      (0x23f, 0x240);
-      (0x242, 0x242);
-      (0x247, 0x247);
-      (0x249, 0x249);
-      (0x24b, 0x24b);
-      (0x24d, 0x24d);
-      (0x24f, 0x293);
-      (0x295, 0x2af);
-      (0x371, 0x371);
-      (0x373, 0x373);
-      (0x377, 0x377);
-      (0x37b, 0x37d);
-      (0x390, 0x390);
-      (0x3ac, 0x3ce);
-      (0x3d0, 0x3d1);
-      (0x3d5, 0x3d7);
-      (0x3d9, 0x3d9);
-      (0x3db, 0x3db);
-      (0x3dd, 0x3dd);
-      (0x3df, 0x3df);
-      (0x3e1, 0x3e1);
-      (0x3e3, 0x3e3);
-      (0x3e5, 0x3e5);
-      (0x3e7, 0x3e7);
-      (0x3e9, 0x3e9);
-      (0x3eb, 0x3eb);
-      (0x3ed, 0x3ed);
-      (0x3ef, 0x3f3);
-      (0x3f5, 0x3f5);
-      (0x3f8, 0x3f8);
-      (0x3fb, 0x3fc);
-      (0x430, 0x45f);
-      (0x461, 0x461);
-      (0x463, 0x463);
-      (0x465, 0x465);
-      (0x467, 0x467);
-      (0x469, 0x469);
-      (0x46b, 0x46b);
-      (0x46d, 0x46d);
-      (0x46f, 0x46f);
-      (0x471, 0x471);
-      (0x473, 0x473);
-      (0x475, 0x475);
-      (0x477, 0x477);
-      (0x479, 0x479);
-      (0x47b, 0x47b);
-      (0x47d, 0x47d);
-      (0x47f, 0x47f);
-      (0x481, 0x481);
-      (0x48b, 0x48b);
-      (0x48d, 0x48d);
-      (0x48f, 0x48f);
-      (0x491, 0x491);
-      (0x493, 0x493);
-      (0x495, 0x495);
-      (0x497, 0x497);
-      (0x499, 0x499);
-      (0x49b, 0x49b);
-      (0x49d, 0x49d);
-      (0x49f, 0x49f);
-      (0x4a1, 0x4a1);
-      (0x4a3, 0x4a3);
-      (0x4a5, 0x4a5);
-      (0x4a7, 0x4a7);
-      (0x4a9, 0x4a9);
-      (0x4ab, 0x4ab);
-      (0x4ad, 0x4ad);
-      (0x4af, 0x4af);
-      (0x4b1, 0x4b1);
-      (0x4b3, 0x4b3);
-      (0x4b5, 0x4b5);
-      (0x4b7, 0x4b7);
-      (0x4b9, 0x4b9);
-      (0x4bb, 0x4bb);
-      (0x4bd, 0x4bd);
-      (0x4bf, 0x4bf);
-      (0x4c2, 0x4c2);
-      (0x4c4, 0x4c4);
-      (0x4c6, 0x4c6);
-      (0x4c8, 0x4c8);
-      (0x4ca, 0x4ca);
-      (0x4cc, 0x4cc);
-      (0x4ce, 0x4cf);
-      (0x4d1, 0x4d1);
-      (0x4d3, 0x4d3);
-      (0x4d5, 0x4d5);
-      (0x4d7, 0x4d7);
-      (0x4d9, 0x4d9);
-      (0x4db, 0x4db);
-      (0x4dd, 0x4dd);
-      (0x4df, 0x4df);
-      (0x4e1, 0x4e1);
-      (0x4e3, 0x4e3);
-      (0x4e5, 0x4e5);
-      (0x4e7, 0x4e7);
-      (0x4e9, 0x4e9);
-      (0x4eb, 0x4eb);
-      (0x4ed, 0x4ed);
-      (0x4ef, 0x4ef);
-      (0x4f1, 0x4f1);
-      (0x4f3, 0x4f3);
-      (0x4f5, 0x4f5);
-      (0x4f7, 0x4f7);
-      (0x4f9, 0x4f9);
-      (0x4fb, 0x4fb);
-      (0x4fd, 0x4fd);
-      (0x4ff, 0x4ff);
-      (0x501, 0x501);
-      (0x503, 0x503);
-      (0x505, 0x505);
-      (0x507, 0x507);
-      (0x509, 0x509);
-      (0x50b, 0x50b);
-      (0x50d, 0x50d);
-      (0x50f, 0x50f);
-      (0x511, 0x511);
-      (0x513, 0x513);
-      (0x515, 0x515);
-      (0x517, 0x517);
-      (0x519, 0x519);
-      (0x51b, 0x51b);
-      (0x51d, 0x51d);
-      (0x51f, 0x51f);
-      (0x521, 0x521);
-      (0x523, 0x523);
-      (0x525, 0x525);
-      (0x527, 0x527);
-      (0x529, 0x529);
-      (0x52b, 0x52b);
-      (0x52d, 0x52d);
-      (0x52f, 0x52f);
-      (0x560, 0x588);
-      (0x10d0, 0x10fa);
-      (0x10fd, 0x10ff);
-      (0x13f8, 0x13fd);
-      (0x1c80, 0x1c88);
-      (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, 0x2c5f);
-      (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);
-      (0xa7af, 0xa7af);
-      (0xa7b5, 0xa7b5);
-      (0xa7b7, 0xa7b7);
-      (0xa7b9, 0xa7b9);
-      (0xa7bb, 0xa7bb);
-      (0xa7bd, 0xa7bd);
-      (0xa7bf, 0xa7bf);
-      (0xa7c1, 0xa7c1);
-      (0xa7c3, 0xa7c3);
-      (0xa7c8, 0xa7c8);
-      (0xa7ca, 0xa7ca);
-      (0xa7d1, 0xa7d1);
-      (0xa7d3, 0xa7d3);
-      (0xa7d5, 0xa7d5);
-      (0xa7d7, 0xa7d7);
-      (0xa7d9, 0xa7d9);
-      (0xa7f6, 0xa7f6);
-      (0xa7fa, 0xa7fa);
-      (0xab30, 0xab5a);
-      (0xab60, 0xab68);
-      (0xab70, 0xabbf);
-      (0xfb00, 0xfb06);
-      (0xfb13, 0xfb17);
-      (0xff41, 0xff5a);
-      (0x10428, 0x1044f);
-      (0x104d8, 0x104fb);
-      (0x10597, 0x105a1);
-      (0x105a3, 0x105b1);
-      (0x105b3, 0x105b9);
-      (0x105bb, 0x105bc);
-      (0x10cc0, 0x10cf2);
-      (0x118c0, 0x118df);
-      (0x16e60, 0x16e7f);
-      (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);
-      (0x1df00, 0x1df09);
-      (0x1e922, 0x1e943);
-      (0x1df0b, 0x1df1e);
-    ]
+    [0x61, 0x7a; 0xb5, 0xb5; 0xdf, 0xf6; 0xf8, 0xff; 0x101, 0x101;
+     0x103, 0x103; 0x105, 0x105; 0x107, 0x107; 0x109, 0x109; 0x10b, 0x10b;
+     0x10d, 0x10d; 0x10f, 0x10f; 0x111, 0x111; 0x113, 0x113; 0x115, 0x115;
+     0x117, 0x117; 0x119, 0x119; 0x11b, 0x11b; 0x11d, 0x11d; 0x11f, 0x11f;
+     0x121, 0x121; 0x123, 0x123; 0x125, 0x125; 0x127, 0x127; 0x129, 0x129;
+     0x12b, 0x12b; 0x12d, 0x12d; 0x12f, 0x12f; 0x131, 0x131; 0x133, 0x133;
+     0x135, 0x135; 0x137, 0x138; 0x13a, 0x13a; 0x13c, 0x13c; 0x13e, 0x13e;
+     0x140, 0x140; 0x142, 0x142; 0x144, 0x144; 0x146, 0x146; 0x148, 0x149;
+     0x14b, 0x14b; 0x14d, 0x14d; 0x14f, 0x14f; 0x151, 0x151; 0x153, 0x153;
+     0x155, 0x155; 0x157, 0x157; 0x159, 0x159; 0x15b, 0x15b; 0x15d, 0x15d;
+     0x15f, 0x15f; 0x161, 0x161; 0x163, 0x163; 0x165, 0x165; 0x167, 0x167;
+     0x169, 0x169; 0x16b, 0x16b; 0x16d, 0x16d; 0x16f, 0x16f; 0x171, 0x171;
+     0x173, 0x173; 0x175, 0x175; 0x177, 0x177; 0x17a, 0x17a; 0x17c, 0x17c;
+     0x17e, 0x180; 0x183, 0x183; 0x185, 0x185; 0x188, 0x188; 0x18c, 0x18d;
+     0x192, 0x192; 0x195, 0x195; 0x199, 0x19b; 0x19e, 0x19e; 0x1a1, 0x1a1;
+     0x1a3, 0x1a3; 0x1a5, 0x1a5; 0x1a8, 0x1a8; 0x1aa, 0x1ab; 0x1ad, 0x1ad;
+     0x1b0, 0x1b0; 0x1b4, 0x1b4; 0x1b6, 0x1b6; 0x1b9, 0x1ba; 0x1bd, 0x1bf;
+     0x1c6, 0x1c6; 0x1c9, 0x1c9; 0x1cc, 0x1cc; 0x1ce, 0x1ce; 0x1d0, 0x1d0;
+     0x1d2, 0x1d2; 0x1d4, 0x1d4; 0x1d6, 0x1d6; 0x1d8, 0x1d8; 0x1da, 0x1da;
+     0x1dc, 0x1dd; 0x1df, 0x1df; 0x1e1, 0x1e1; 0x1e3, 0x1e3; 0x1e5, 0x1e5;
+     0x1e7, 0x1e7; 0x1e9, 0x1e9; 0x1eb, 0x1eb; 0x1ed, 0x1ed; 0x1ef, 0x1f0;
+     0x1f3, 0x1f3; 0x1f5, 0x1f5; 0x1f9, 0x1f9; 0x1fb, 0x1fb; 0x1fd, 0x1fd;
+     0x1ff, 0x1ff; 0x201, 0x201; 0x203, 0x203; 0x205, 0x205; 0x207, 0x207;
+     0x209, 0x209; 0x20b, 0x20b; 0x20d, 0x20d; 0x20f, 0x20f; 0x211, 0x211;
+     0x213, 0x213; 0x215, 0x215; 0x217, 0x217; 0x219, 0x219; 0x21b, 0x21b;
+     0x21d, 0x21d; 0x21f, 0x21f; 0x221, 0x221; 0x223, 0x223; 0x225, 0x225;
+     0x227, 0x227; 0x229, 0x229; 0x22b, 0x22b; 0x22d, 0x22d; 0x22f, 0x22f;
+     0x231, 0x231; 0x233, 0x239; 0x23c, 0x23c; 0x23f, 0x240; 0x242, 0x242;
+     0x247, 0x247; 0x249, 0x249; 0x24b, 0x24b; 0x24d, 0x24d; 0x24f, 0x293;
+     0x295, 0x2af; 0x371, 0x371; 0x373, 0x373; 0x377, 0x377; 0x37b, 0x37d;
+     0x390, 0x390; 0x3ac, 0x3ce; 0x3d0, 0x3d1; 0x3d5, 0x3d7; 0x3d9, 0x3d9;
+     0x3db, 0x3db; 0x3dd, 0x3dd; 0x3df, 0x3df; 0x3e1, 0x3e1; 0x3e3, 0x3e3;
+     0x3e5, 0x3e5; 0x3e7, 0x3e7; 0x3e9, 0x3e9; 0x3eb, 0x3eb; 0x3ed, 0x3ed;
+     0x3ef, 0x3f3; 0x3f5, 0x3f5; 0x3f8, 0x3f8; 0x3fb, 0x3fc; 0x430, 0x45f;
+     0x461, 0x461; 0x463, 0x463; 0x465, 0x465; 0x467, 0x467; 0x469, 0x469;
+     0x46b, 0x46b; 0x46d, 0x46d; 0x46f, 0x46f; 0x471, 0x471; 0x473, 0x473;
+     0x475, 0x475; 0x477, 0x477; 0x479, 0x479; 0x47b, 0x47b; 0x47d, 0x47d;
+     0x47f, 0x47f; 0x481, 0x481; 0x48b, 0x48b; 0x48d, 0x48d; 0x48f, 0x48f;
+     0x491, 0x491; 0x493, 0x493; 0x495, 0x495; 0x497, 0x497; 0x499, 0x499;
+     0x49b, 0x49b; 0x49d, 0x49d; 0x49f, 0x49f; 0x4a1, 0x4a1; 0x4a3, 0x4a3;
+     0x4a5, 0x4a5; 0x4a7, 0x4a7; 0x4a9, 0x4a9; 0x4ab, 0x4ab; 0x4ad, 0x4ad;
+     0x4af, 0x4af; 0x4b1, 0x4b1; 0x4b3, 0x4b3; 0x4b5, 0x4b5; 0x4b7, 0x4b7;
+     0x4b9, 0x4b9; 0x4bb, 0x4bb; 0x4bd, 0x4bd; 0x4bf, 0x4bf; 0x4c2, 0x4c2;
+     0x4c4, 0x4c4; 0x4c6, 0x4c6; 0x4c8, 0x4c8; 0x4ca, 0x4ca; 0x4cc, 0x4cc;
+     0x4ce, 0x4cf; 0x4d1, 0x4d1; 0x4d3, 0x4d3; 0x4d5, 0x4d5; 0x4d7, 0x4d7;
+     0x4d9, 0x4d9; 0x4db, 0x4db; 0x4dd, 0x4dd; 0x4df, 0x4df; 0x4e1, 0x4e1;
+     0x4e3, 0x4e3; 0x4e5, 0x4e5; 0x4e7, 0x4e7; 0x4e9, 0x4e9; 0x4eb, 0x4eb;
+     0x4ed, 0x4ed; 0x4ef, 0x4ef; 0x4f1, 0x4f1; 0x4f3, 0x4f3; 0x4f5, 0x4f5;
+     0x4f7, 0x4f7; 0x4f9, 0x4f9; 0x4fb, 0x4fb; 0x4fd, 0x4fd; 0x4ff, 0x4ff;
+     0x501, 0x501; 0x503, 0x503; 0x505, 0x505; 0x507, 0x507; 0x509, 0x509;
+     0x50b, 0x50b; 0x50d, 0x50d; 0x50f, 0x50f; 0x511, 0x511; 0x513, 0x513;
+     0x515, 0x515; 0x517, 0x517; 0x519, 0x519; 0x51b, 0x51b; 0x51d, 0x51d;
+     0x51f, 0x51f; 0x521, 0x521; 0x523, 0x523; 0x525, 0x525; 0x527, 0x527;
+     0x529, 0x529; 0x52b, 0x52b; 0x52d, 0x52d; 0x52f, 0x52f; 0x560, 0x588;
+     0x10d0, 0x10fa; 0x10fd, 0x10ff; 0x13f8, 0x13fd; 0x1c80, 0x1c88; 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, 0x2c5f; 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; 0xa7af, 0xa7af; 0xa7b5, 0xa7b5;
+     0xa7b7, 0xa7b7; 0xa7b9, 0xa7b9; 0xa7bb, 0xa7bb; 0xa7bd, 0xa7bd; 0xa7bf, 0xa7bf;
+     0xa7c1, 0xa7c1; 0xa7c3, 0xa7c3; 0xa7c8, 0xa7c8; 0xa7ca, 0xa7ca; 0xa7d1, 0xa7d1;
+     0xa7d3, 0xa7d3; 0xa7d5, 0xa7d5; 0xa7d7, 0xa7d7; 0xa7d9, 0xa7d9; 0xa7f6, 0xa7f6;
+     0xa7fa, 0xa7fa; 0xab30, 0xab5a; 0xab60, 0xab68; 0xab70, 0xabbf; 0xfb00, 0xfb06;
+     0xfb13, 0xfb17; 0xff41, 0xff5a; 0x10428, 0x1044f; 0x104d8, 0x104fb; 0x10597, 0x105a1;
+     0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc; 0x10cc0, 0x10cf2; 0x118c0, 0x118df;
+     0x16e60, 0x16e7f; 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; 0x1df00, 0x1df09;
+     0x1e922, 0x1e943; 0x1df25, 0x1df2a; 0x1df0b, 0x1df1e]
 
   let lm =
-    [
-      (0x2b0, 0x2b8);
-      (0x2b0, 0x2c1);
-      (0x2b2, 0x2b2);
-      (0x2c0, 0x2c1);
-      (0x2c6, 0x2d1);
-      (0x2d0, 0x2d1);
-      (0x2e0, 0x2e4);
-      (0x2ec, 0x2ec);
-      (0x2ee, 0x2ee);
-      (0x374, 0x374);
-      (0x37a, 0x37a);
-      (0x559, 0x559);
-      (0x640, 0x640);
-      (0x6e5, 0x6e6);
-      (0x7f4, 0x7f5);
-      (0x7fa, 0x7fa);
-      (0x81a, 0x81a);
-      (0x824, 0x824);
-      (0x828, 0x828);
-      (0x8c9, 0x8c9);
-      (0x971, 0x971);
-      (0xe46, 0xe46);
-      (0xec6, 0xec6);
-      (0x10fc, 0x10fc);
-      (0x17d7, 0x17d7);
-      (0x1843, 0x1843);
-      (0x1aa7, 0x1aa7);
-      (0x1c78, 0x1c7d);
-      (0x1c7b, 0x1c7b);
-      (0x1d2c, 0x1d6a);
-      (0x1d62, 0x1d62);
-      (0x1d78, 0x1d78);
-      (0x1d9b, 0x1dbf);
-      (0x1da4, 0x1da4);
-      (0x1da8, 0x1da8);
-      (0x2071, 0x2071);
-      (0x207f, 0x207f);
-      (0x2090, 0x209c);
-      (0x2c7c, 0x2c7c);
-      (0x2c7c, 0x2c7d);
-      (0x2d6f, 0x2d6f);
-      (0x2e2f, 0x2e2f);
-      (0x3005, 0x3005);
-      (0x3031, 0x3035);
-      (0x303b, 0x303b);
-      (0x309d, 0x309e);
-      (0x30fc, 0x30fc);
-      (0x30fc, 0x30fe);
-      (0xa015, 0xa015);
-      (0xa4f8, 0xa4fd);
-      (0xa60c, 0xa60c);
-      (0xa67f, 0xa67f);
-      (0xa69c, 0xa69d);
-      (0xa717, 0xa71f);
-      (0xa770, 0xa770);
-      (0xa788, 0xa788);
-      (0xa7f2, 0xa7f4);
-      (0xa7f8, 0xa7f9);
-      (0xa9cf, 0xa9cf);
-      (0xa9e6, 0xa9e6);
-      (0xaa70, 0xaa70);
-      (0xaadd, 0xaadd);
-      (0xaaf3, 0xaaf4);
-      (0xab5c, 0xab5f);
-      (0xab69, 0xab69);
-      (0xff70, 0xff70);
-      (0xff9e, 0xff9f);
-      (0x10780, 0x10780);
-      (0x10780, 0x10785);
-      (0x10781, 0x10782);
-      (0x10783, 0x10785);
-      (0x10787, 0x107b0);
-      (0x107b2, 0x107ba);
-      (0x16b40, 0x16b43);
-      (0x16b42, 0x16b43);
-      (0x16f93, 0x16f9f);
-      (0x16fe0, 0x16fe1);
-      (0x16fe3, 0x16fe3);
-      (0x1aff0, 0x1aff3);
-      (0x1aff5, 0x1affb);
-      (0x1e94b, 0x1e94b);
-      (0x1e13c, 0x1e13d);
-      (0x1e137, 0x1e13d);
-      (0x1affd, 0x1affe);
-    ]
+    [0x2b0, 0x2b8; 0x2b0, 0x2c1; 0x2b2, 0x2b2; 0x2c0, 0x2c1; 0x2c6, 0x2d1;
+     0x2d0, 0x2d1; 0x2e0, 0x2e4; 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x374, 0x374;
+     0x37a, 0x37a; 0x559, 0x559; 0x640, 0x640; 0x6e5, 0x6e6; 0x7f4, 0x7f5;
+     0x7fa, 0x7fa; 0x81a, 0x81a; 0x824, 0x824; 0x828, 0x828; 0x8c9, 0x8c9;
+     0x971, 0x971; 0xe46, 0xe46; 0xec6, 0xec6; 0x10fc, 0x10fc; 0x17d7, 0x17d7;
+     0x1843, 0x1843; 0x1aa7, 0x1aa7; 0x1c78, 0x1c7d; 0x1c7b, 0x1c7b; 0x1d2c, 0x1d6a;
+     0x1d62, 0x1d62; 0x1d78, 0x1d78; 0x1d9b, 0x1dbf; 0x1da4, 0x1da4; 0x1da8, 0x1da8;
+     0x2071, 0x2071; 0x207f, 0x207f; 0x2090, 0x209c; 0x2c7c, 0x2c7c; 0x2c7c, 0x2c7d;
+     0x2d6f, 0x2d6f; 0x2e2f, 0x2e2f; 0x3005, 0x3005; 0x3031, 0x3035; 0x303b, 0x303b;
+     0x309d, 0x309e; 0x30fc, 0x30fc; 0x30fc, 0x30fe; 0xa015, 0xa015; 0xa4f8, 0xa4fd;
+     0xa60c, 0xa60c; 0xa67f, 0xa67f; 0xa69c, 0xa69d; 0xa717, 0xa71f; 0xa770, 0xa770;
+     0xa788, 0xa788; 0xa7f2, 0xa7f4; 0xa7f8, 0xa7f9; 0xa9cf, 0xa9cf; 0xa9e6, 0xa9e6;
+     0xaa70, 0xaa70; 0xaadd, 0xaadd; 0xaaf3, 0xaaf4; 0xab5c, 0xab5f; 0xab69, 0xab69;
+     0xff70, 0xff70; 0xff9e, 0xff9f; 0x10780, 0x10780; 0x10780, 0x10785; 0x10781, 0x10782;
+     0x10783, 0x10785; 0x10787, 0x107b0; 0x107b2, 0x107ba; 0x16b40, 0x16b43; 0x16b42, 0x16b43;
+     0x16f93, 0x16f9f; 0x16fe0, 0x16fe1; 0x16fe3, 0x16fe3; 0x1aff0, 0x1aff3; 0x1aff5, 0x1affb;
+     0x1affd, 0x1affe; 0x1e030, 0x1e06d; 0x1e04c, 0x1e04d; 0x1e068, 0x1e068; 0x1e137, 0x1e13d;
+     0x1e94b, 0x1e94b; 0x1e4eb, 0x1e4eb; 0x1e13c, 0x1e13d]
 
   let lo =
-    [
-      (0xaa, 0xaa);
-      (0xba, 0xba);
-      (0x1bb, 0x1bb);
-      (0x1c0, 0x1c3);
-      (0x294, 0x294);
-      (0x5d0, 0x5ea);
-      (0x5ef, 0x5f2);
-      (0x620, 0x63f);
-      (0x641, 0x64a);
-      (0x66e, 0x66f);
-      (0x671, 0x6d3);
-      (0x673, 0x673);
-      (0x6d5, 0x6d5);
-      (0x6ee, 0x6ef);
-      (0x6fa, 0x6fc);
-      (0x6ff, 0x6ff);
-      (0x710, 0x710);
-      (0x712, 0x72f);
-      (0x74d, 0x7a5);
-      (0x7b1, 0x7b1);
-      (0x7ca, 0x7ea);
-      (0x800, 0x815);
-      (0x840, 0x858);
-      (0x860, 0x86a);
-      (0x870, 0x887);
-      (0x889, 0x88e);
-      (0x8a0, 0x8c8);
-      (0x904, 0x939);
-      (0x93d, 0x93d);
-      (0x950, 0x950);
-      (0x958, 0x961);
-      (0x972, 0x980);
-      (0x985, 0x98c);
-      (0x98f, 0x990);
-      (0x993, 0x9a8);
-      (0x9aa, 0x9b0);
-      (0x9b2, 0x9b2);
-      (0x9b6, 0x9b9);
-      (0x9bd, 0x9bd);
-      (0x9ce, 0x9ce);
-      (0x9dc, 0x9dd);
-      (0x9df, 0x9e1);
-      (0x9f0, 0x9f1);
-      (0x9fc, 0x9fc);
-      (0xa05, 0xa0a);
-      (0xa0f, 0xa10);
-      (0xa13, 0xa28);
-      (0xa2a, 0xa30);
-      (0xa32, 0xa33);
-      (0xa35, 0xa36);
-      (0xa38, 0xa39);
-      (0xa59, 0xa5c);
-      (0xa5e, 0xa5e);
-      (0xa72, 0xa74);
-      (0xa85, 0xa8d);
-      (0xa8f, 0xa91);
-      (0xa93, 0xaa8);
-      (0xaaa, 0xab0);
-      (0xab2, 0xab3);
-      (0xab5, 0xab9);
-      (0xabd, 0xabd);
-      (0xad0, 0xad0);
-      (0xae0, 0xae1);
-      (0xaf9, 0xaf9);
-      (0xb05, 0xb0c);
-      (0xb0f, 0xb10);
-      (0xb13, 0xb28);
-      (0xb2a, 0xb30);
-      (0xb32, 0xb33);
-      (0xb35, 0xb39);
-      (0xb3d, 0xb3d);
-      (0xb5c, 0xb5d);
-      (0xb5f, 0xb61);
-      (0xb71, 0xb71);
-      (0xb83, 0xb83);
-      (0xb85, 0xb8a);
-      (0xb8e, 0xb90);
-      (0xb92, 0xb95);
-      (0xb99, 0xb9a);
-      (0xb9c, 0xb9c);
-      (0xb9e, 0xb9f);
-      (0xba3, 0xba4);
-      (0xba8, 0xbaa);
-      (0xbae, 0xbb9);
-      (0xbd0, 0xbd0);
-      (0xc05, 0xc0c);
-      (0xc0e, 0xc10);
-      (0xc12, 0xc28);
-      (0xc2a, 0xc39);
-      (0xc3d, 0xc3d);
-      (0xc58, 0xc5a);
-      (0xc5d, 0xc5d);
-      (0xc60, 0xc61);
-      (0xc80, 0xc80);
-      (0xc85, 0xc8c);
-      (0xc8e, 0xc90);
-      (0xc92, 0xca8);
-      (0xcaa, 0xcb3);
-      (0xcb5, 0xcb9);
-      (0xcbd, 0xcbd);
-      (0xcdd, 0xcde);
-      (0xce0, 0xce1);
-      (0xcf1, 0xcf2);
-      (0xd04, 0xd0c);
-      (0xd0e, 0xd10);
-      (0xd12, 0xd3a);
-      (0xd3d, 0xd3d);
-      (0xd4e, 0xd4e);
-      (0xd54, 0xd56);
-      (0xd5f, 0xd61);
-      (0xd7a, 0xd7f);
-      (0xd85, 0xd96);
-      (0xd9a, 0xdb1);
-      (0xdb3, 0xdbb);
-      (0xdbd, 0xdbd);
-      (0xdc0, 0xdc6);
-      (0xe01, 0xe30);
-      (0xe32, 0xe32);
-      (0xe32, 0xe33);
-      (0xe40, 0xe44);
-      (0xe40, 0xe45);
-      (0xe81, 0xe82);
-      (0xe84, 0xe84);
-      (0xe86, 0xe8a);
-      (0xe8c, 0xea3);
-      (0xea5, 0xea5);
-      (0xea7, 0xeb0);
-      (0xeb2, 0xeb2);
-      (0xeb2, 0xeb3);
-      (0xebd, 0xebd);
-      (0xec0, 0xec4);
-      (0xedc, 0xedf);
-      (0xf00, 0xf00);
-      (0xf40, 0xf47);
-      (0xf49, 0xf6c);
-      (0xf88, 0xf8c);
-      (0x1000, 0x102a);
-      (0x103f, 0x103f);
-      (0x1050, 0x1055);
-      (0x105a, 0x105d);
-      (0x1061, 0x1061);
-      (0x1065, 0x1066);
-      (0x106e, 0x1070);
-      (0x1075, 0x1081);
-      (0x108e, 0x108e);
-      (0x1100, 0x1248);
-      (0x115f, 0x1160);
-      (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, 0x1711);
-      (0x171f, 0x1731);
-      (0x1740, 0x1751);
-      (0x1760, 0x176c);
-      (0x176e, 0x1770);
-      (0x1780, 0x17b3);
-      (0x17a3, 0x17a4);
-      (0x17dc, 0x17dc);
-      (0x1820, 0x1842);
-      (0x1844, 0x1878);
-      (0x1880, 0x1884);
-      (0x1887, 0x18a8);
-      (0x18aa, 0x18aa);
-      (0x18b0, 0x18f5);
-      (0x1900, 0x191e);
-      (0x1950, 0x196d);
-      (0x1970, 0x1974);
-      (0x1980, 0x19ab);
-      (0x19b0, 0x19c9);
-      (0x19b5, 0x19b7);
-      (0x19ba, 0x19ba);
-      (0x1a00, 0x1a16);
-      (0x1a20, 0x1a54);
-      (0x1b05, 0x1b33);
-      (0x1b45, 0x1b4c);
-      (0x1b83, 0x1ba0);
-      (0x1bae, 0x1baf);
-      (0x1bba, 0x1be5);
-      (0x1c00, 0x1c23);
-      (0x1c4d, 0x1c4f);
-      (0x1c5a, 0x1c77);
-      (0x1ce9, 0x1cec);
-      (0x1cee, 0x1cf3);
-      (0x1cf5, 0x1cf6);
-      (0x1cfa, 0x1cfa);
-      (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, 0x312f);
-      (0x3131, 0x318e);
-      (0x3164, 0x3164);
-      (0x31a0, 0x31bf);
-      (0x31f0, 0x31ff);
-      (0x3400, 0x4dbf);
-      (0x4e00, 0x9fff);
-      (0x4e00, 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, 0xa8fe);
-      (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, 0xaab9);
-      (0xaab9, 0xaabd);
-      (0xaabb, 0xaabc);
-      (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);
-      (0xfa0e, 0xfa0f);
-      (0xfa11, 0xfa11);
-      (0xfa13, 0xfa14);
-      (0xfa1f, 0xfa1f);
-      (0xfa21, 0xfa21);
-      (0xfa23, 0xfa24);
-      (0xfa27, 0xfa29);
-      (0xfa70, 0xfad9);
-      (0xfb1d, 0xfb1d);
-      (0xfb1f, 0xfb28);
-      (0xfb2a, 0xfb36);
-      (0xfb38, 0xfb3c);
-      (0xfb3e, 0xfb3e);
-      (0xfb40, 0xfb41);
-      (0xfb43, 0xfb44);
-      (0xfb46, 0xfbb1);
-      (0xfbd3, 0xfc5d);
-      (0xfbd3, 0xfd3d);
-      (0xfc64, 0xfd3d);
-      (0xfd50, 0xfd8f);
-      (0xfd92, 0xfdc7);
-      (0xfdf0, 0xfdf9);
-      (0xfdf0, 0xfdfb);
-      (0xfe70, 0xfe74);
-      (0xfe71, 0xfe71);
-      (0xfe73, 0xfe73);
-      (0xfe76, 0xfefc);
-      (0xfe77, 0xfe77);
-      (0xfe79, 0xfe79);
-      (0xfe7b, 0xfe7b);
-      (0xfe7d, 0xfe7d);
-      (0xfe7f, 0xfefc);
-      (0xff66, 0xff6f);
-      (0xff71, 0xff9d);
-      (0xffa0, 0xffa0);
-      (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);
-      (0x1032d, 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, 0x10a35);
-      (0x10a60, 0x10a7c);
-      (0x10a80, 0x10a9c);
-      (0x10ac0, 0x10ac7);
-      (0x10ac9, 0x10ae4);
-      (0x10b00, 0x10b35);
-      (0x10b40, 0x10b55);
-      (0x10b60, 0x10b72);
-      (0x10b80, 0x10b91);
-      (0x10c00, 0x10c48);
-      (0x10d00, 0x10d23);
-      (0x10d22, 0x10d23);
-      (0x10e80, 0x10ea9);
-      (0x10eb0, 0x10eb1);
-      (0x10f00, 0x10f1c);
-      (0x10f27, 0x10f27);
-      (0x10f30, 0x10f45);
-      (0x10f70, 0x10f81);
-      (0x10fb0, 0x10fc4);
-      (0x10fe0, 0x10ff6);
-      (0x11003, 0x11037);
-      (0x11071, 0x11072);
-      (0x11075, 0x11075);
-      (0x11083, 0x110af);
-      (0x110d0, 0x110e8);
-      (0x11103, 0x11126);
-      (0x11144, 0x11144);
-      (0x11147, 0x11147);
-      (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, 0x1135d);
-      (0x1135d, 0x11361);
-      (0x11400, 0x11434);
-      (0x11447, 0x1144a);
-      (0x1145f, 0x11461);
-      (0x11480, 0x114af);
-      (0x114c4, 0x114c5);
-      (0x114c7, 0x114c7);
-      (0x11580, 0x115ae);
-      (0x115d8, 0x115db);
-      (0x11600, 0x1162f);
-      (0x11644, 0x11644);
-      (0x11680, 0x116aa);
-      (0x116b8, 0x116b8);
-      (0x11700, 0x1171a);
-      (0x11740, 0x11746);
-      (0x11800, 0x1182b);
-      (0x118ff, 0x11906);
-      (0x11909, 0x11909);
-      (0x1190c, 0x11913);
-      (0x11915, 0x11916);
-      (0x11918, 0x1192f);
-      (0x1193f, 0x1193f);
-      (0x11941, 0x11941);
-      (0x119a0, 0x119a7);
-      (0x119aa, 0x119d0);
-      (0x119e1, 0x119e1);
-      (0x119e3, 0x119e3);
-      (0x11a00, 0x11a00);
-      (0x11a0b, 0x11a32);
-      (0x11a3a, 0x11a3a);
-      (0x11a50, 0x11a50);
-      (0x11a5c, 0x11a89);
-      (0x11a9d, 0x11a9d);
-      (0x11ab0, 0x11af8);
-      (0x11c00, 0x11c08);
-      (0x11c0a, 0x11c2e);
-      (0x11c40, 0x11c40);
-      (0x11c72, 0x11c8f);
-      (0x11d00, 0x11d06);
-      (0x11d08, 0x11d09);
-      (0x11d0b, 0x11d30);
-      (0x11d46, 0x11d46);
-      (0x11d60, 0x11d65);
-      (0x11d67, 0x11d68);
-      (0x11d6a, 0x11d89);
-      (0x11d98, 0x11d98);
-      (0x11ee0, 0x11ef2);
-      (0x11fb0, 0x11fb0);
-      (0x12000, 0x12399);
-      (0x12480, 0x12543);
-      (0x12f90, 0x12ff0);
-      (0x13000, 0x1342e);
-      (0x14400, 0x14646);
-      (0x16800, 0x16a38);
-      (0x16a40, 0x16a5e);
-      (0x16a70, 0x16abe);
-      (0x16ad0, 0x16aed);
-      (0x16b00, 0x16b2f);
-      (0x16b63, 0x16b77);
-      (0x16b7d, 0x16b8f);
-      (0x16f00, 0x16f4a);
-      (0x16f50, 0x16f50);
-      (0x17000, 0x187f7);
-      (0x18800, 0x18cd5);
-      (0x18d00, 0x18d08);
-      (0x1b000, 0x1b122);
-      (0x1b150, 0x1b152);
-      (0x1b164, 0x1b167);
-      (0x1b170, 0x1b2fb);
-      (0x1bc00, 0x1bc6a);
-      (0x1bc70, 0x1bc7c);
-      (0x1bc80, 0x1bc88);
-      (0x1bc90, 0x1bc99);
-      (0x1df0a, 0x1df0a);
-      (0x1e100, 0x1e12c);
-      (0x1e14e, 0x1e14e);
-      (0x1e290, 0x1e2ad);
-      (0x1e2c0, 0x1e2eb);
-      (0x1e7e0, 0x1e7e6);
-      (0x1e7e8, 0x1e7eb);
-      (0x1e7ed, 0x1e7ee);
-      (0x1e7f0, 0x1e7fe);
-      (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, 0x2a6df);
-      (0x2a700, 0x2b738);
-      (0x2b740, 0x2b81d);
-      (0x2b820, 0x2cea1);
-      (0x30000, 0x3134a);
-      (0x2f800, 0x2fa1d);
-      (0x2ceb0, 0x2ebe0);
-    ]
+    [0xaa, 0xaa; 0xba, 0xba; 0x1bb, 0x1bb; 0x1c0, 0x1c3; 0x294, 0x294;
+     0x5d0, 0x5ea; 0x5ef, 0x5f2; 0x620, 0x63f; 0x641, 0x64a; 0x66e, 0x66f;
+     0x671, 0x6d3; 0x673, 0x673; 0x6d5, 0x6d5; 0x6ee, 0x6ef; 0x6fa, 0x6fc;
+     0x6ff, 0x6ff; 0x710, 0x710; 0x712, 0x72f; 0x74d, 0x7a5; 0x7b1, 0x7b1;
+     0x7ca, 0x7ea; 0x800, 0x815; 0x840, 0x858; 0x860, 0x86a; 0x870, 0x887;
+     0x889, 0x88e; 0x8a0, 0x8c8; 0x904, 0x939; 0x93d, 0x93d; 0x950, 0x950;
+     0x958, 0x961; 0x972, 0x980; 0x985, 0x98c; 0x98f, 0x990; 0x993, 0x9a8;
+     0x9aa, 0x9b0; 0x9b2, 0x9b2; 0x9b6, 0x9b9; 0x9bd, 0x9bd; 0x9ce, 0x9ce;
+     0x9dc, 0x9dd; 0x9df, 0x9e1; 0x9f0, 0x9f1; 0x9fc, 0x9fc; 0xa05, 0xa0a;
+     0xa0f, 0xa10; 0xa13, 0xa28; 0xa2a, 0xa30; 0xa32, 0xa33; 0xa35, 0xa36;
+     0xa38, 0xa39; 0xa59, 0xa5c; 0xa5e, 0xa5e; 0xa72, 0xa74; 0xa85, 0xa8d;
+     0xa8f, 0xa91; 0xa93, 0xaa8; 0xaaa, 0xab0; 0xab2, 0xab3; 0xab5, 0xab9;
+     0xabd, 0xabd; 0xad0, 0xad0; 0xae0, 0xae1; 0xaf9, 0xaf9; 0xb05, 0xb0c;
+     0xb0f, 0xb10; 0xb13, 0xb28; 0xb2a, 0xb30; 0xb32, 0xb33; 0xb35, 0xb39;
+     0xb3d, 0xb3d; 0xb5c, 0xb5d; 0xb5f, 0xb61; 0xb71, 0xb71; 0xb83, 0xb83;
+     0xb85, 0xb8a; 0xb8e, 0xb90; 0xb92, 0xb95; 0xb99, 0xb9a; 0xb9c, 0xb9c;
+     0xb9e, 0xb9f; 0xba3, 0xba4; 0xba8, 0xbaa; 0xbae, 0xbb9; 0xbd0, 0xbd0;
+     0xc05, 0xc0c; 0xc0e, 0xc10; 0xc12, 0xc28; 0xc2a, 0xc39; 0xc3d, 0xc3d;
+     0xc58, 0xc5a; 0xc5d, 0xc5d; 0xc60, 0xc61; 0xc80, 0xc80; 0xc85, 0xc8c;
+     0xc8e, 0xc90; 0xc92, 0xca8; 0xcaa, 0xcb3; 0xcb5, 0xcb9; 0xcbd, 0xcbd;
+     0xcdd, 0xcde; 0xce0, 0xce1; 0xcf1, 0xcf2; 0xd04, 0xd0c; 0xd0e, 0xd10;
+     0xd12, 0xd3a; 0xd3d, 0xd3d; 0xd4e, 0xd4e; 0xd54, 0xd56; 0xd5f, 0xd61;
+     0xd7a, 0xd7f; 0xd85, 0xd96; 0xd9a, 0xdb1; 0xdb3, 0xdbb; 0xdbd, 0xdbd;
+     0xdc0, 0xdc6; 0xe01, 0xe30; 0xe32, 0xe32; 0xe32, 0xe33; 0xe40, 0xe44;
+     0xe40, 0xe45; 0xe81, 0xe82; 0xe84, 0xe84; 0xe86, 0xe8a; 0xe8c, 0xea3;
+     0xea5, 0xea5; 0xea7, 0xeb0; 0xeb2, 0xeb2; 0xeb2, 0xeb3; 0xebd, 0xebd;
+     0xec0, 0xec4; 0xedc, 0xedf; 0xf00, 0xf00; 0xf40, 0xf47; 0xf49, 0xf6c;
+     0xf88, 0xf8c; 0x1000, 0x102a; 0x103f, 0x103f; 0x1050, 0x1055; 0x105a, 0x105d;
+     0x1061, 0x1061; 0x1065, 0x1066; 0x106e, 0x1070; 0x1075, 0x1081; 0x108e, 0x108e;
+     0x1100, 0x1248; 0x115f, 0x1160; 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, 0x1711; 0x171f, 0x1731;
+     0x1740, 0x1751; 0x1760, 0x176c; 0x176e, 0x1770; 0x1780, 0x17b3; 0x17a3, 0x17a4;
+     0x17dc, 0x17dc; 0x1820, 0x1842; 0x1844, 0x1878; 0x1880, 0x1884; 0x1887, 0x18a8;
+     0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e; 0x1950, 0x196d; 0x1970, 0x1974;
+     0x1980, 0x19ab; 0x19b0, 0x19c9; 0x19b5, 0x19b7; 0x19ba, 0x19ba; 0x1a00, 0x1a16;
+     0x1a20, 0x1a54; 0x1b05, 0x1b33; 0x1b45, 0x1b4c; 0x1b83, 0x1ba0; 0x1bae, 0x1baf;
+     0x1bba, 0x1be5; 0x1c00, 0x1c23; 0x1c4d, 0x1c4f; 0x1c5a, 0x1c77; 0x1ce9, 0x1cec;
+     0x1cee, 0x1cf3; 0x1cf5, 0x1cf6; 0x1cfa, 0x1cfa; 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, 0x312f; 0x3131, 0x318e; 0x3164, 0x3164; 0x31a0, 0x31bf; 0x31f0, 0x31ff;
+     0x3400, 0x4dbf; 0x4e00, 0x9fff; 0x4e00, 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, 0xa8fe; 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, 0xaab9; 0xaab9, 0xaabd; 0xaabb, 0xaabc;
+     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;
+     0xfa0e, 0xfa0f; 0xfa11, 0xfa11; 0xfa13, 0xfa14; 0xfa1f, 0xfa1f; 0xfa21, 0xfa21;
+     0xfa23, 0xfa24; 0xfa27, 0xfa29; 0xfa70, 0xfad9; 0xfb1d, 0xfb1d; 0xfb1f, 0xfb28;
+     0xfb2a, 0xfb36; 0xfb38, 0xfb3c; 0xfb3e, 0xfb3e; 0xfb40, 0xfb41; 0xfb43, 0xfb44;
+     0xfb46, 0xfbb1; 0xfbd3, 0xfc5d; 0xfbd3, 0xfd3d; 0xfc64, 0xfd3d; 0xfd50, 0xfd8f;
+     0xfd92, 0xfdc7; 0xfdf0, 0xfdf9; 0xfdf0, 0xfdfb; 0xfe70, 0xfe74; 0xfe71, 0xfe71;
+     0xfe73, 0xfe73; 0xfe76, 0xfefc; 0xfe77, 0xfe77; 0xfe79, 0xfe79; 0xfe7b, 0xfe7b;
+     0xfe7d, 0xfe7d; 0xfe7f, 0xfefc; 0xff66, 0xff6f; 0xff71, 0xff9d; 0xffa0, 0xffa0;
+     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;
+     0x1032d, 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, 0x10a35;
+     0x10a60, 0x10a7c; 0x10a80, 0x10a9c; 0x10ac0, 0x10ac7; 0x10ac9, 0x10ae4; 0x10b00, 0x10b35;
+     0x10b40, 0x10b55; 0x10b60, 0x10b72; 0x10b80, 0x10b91; 0x10c00, 0x10c48; 0x10d00, 0x10d23;
+     0x10d22, 0x10d23; 0x10e80, 0x10ea9; 0x10eb0, 0x10eb1; 0x10f00, 0x10f1c; 0x10f27, 0x10f27;
+     0x10f30, 0x10f45; 0x10f70, 0x10f81; 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; 0x11003, 0x11037;
+     0x11071, 0x11072; 0x11075, 0x11075; 0x11083, 0x110af; 0x110d0, 0x110e8; 0x11103, 0x11126;
+     0x11144, 0x11144; 0x11147, 0x11147; 0x11150, 0x11172; 0x11176, 0x11176; 0x11183, 0x111b2;
+     0x111c1, 0x111c4; 0x111da, 0x111da; 0x111dc, 0x111dc; 0x11200, 0x11211; 0x11213, 0x1122b;
+     0x1123f, 0x11240; 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, 0x1135d; 0x1135d, 0x11361; 0x11400, 0x11434; 0x11447, 0x1144a; 0x1145f, 0x11461;
+     0x11480, 0x114af; 0x114c4, 0x114c5; 0x114c7, 0x114c7; 0x11580, 0x115ae; 0x115d8, 0x115db;
+     0x11600, 0x1162f; 0x11644, 0x11644; 0x11680, 0x116aa; 0x116b8, 0x116b8; 0x11700, 0x1171a;
+     0x11740, 0x11746; 0x11800, 0x1182b; 0x118ff, 0x11906; 0x11909, 0x11909; 0x1190c, 0x11913;
+     0x11915, 0x11916; 0x11918, 0x1192f; 0x1193f, 0x1193f; 0x11941, 0x11941; 0x119a0, 0x119a7;
+     0x119aa, 0x119d0; 0x119e1, 0x119e1; 0x119e3, 0x119e3; 0x11a00, 0x11a00; 0x11a0b, 0x11a32;
+     0x11a3a, 0x11a3a; 0x11a50, 0x11a50; 0x11a5c, 0x11a89; 0x11a9d, 0x11a9d; 0x11ab0, 0x11af8;
+     0x11c00, 0x11c08; 0x11c0a, 0x11c2e; 0x11c40, 0x11c40; 0x11c72, 0x11c8f; 0x11d00, 0x11d06;
+     0x11d08, 0x11d09; 0x11d0b, 0x11d30; 0x11d46, 0x11d46; 0x11d60, 0x11d65; 0x11d67, 0x11d68;
+     0x11d6a, 0x11d89; 0x11d98, 0x11d98; 0x11ee0, 0x11ef2; 0x11f02, 0x11f02; 0x11f04, 0x11f10;
+     0x11f12, 0x11f33; 0x11fb0, 0x11fb0; 0x12000, 0x12399; 0x12480, 0x12543; 0x12f90, 0x12ff0;
+     0x13000, 0x1342f; 0x13441, 0x13446; 0x14400, 0x14646; 0x16800, 0x16a38; 0x16a40, 0x16a5e;
+     0x16a70, 0x16abe; 0x16ad0, 0x16aed; 0x16b00, 0x16b2f; 0x16b63, 0x16b77; 0x16b7d, 0x16b8f;
+     0x16f00, 0x16f4a; 0x16f50, 0x16f50; 0x17000, 0x187f7; 0x18800, 0x18cd5; 0x18d00, 0x18d08;
+     0x1b000, 0x1b122; 0x1b132, 0x1b132; 0x1b150, 0x1b152; 0x1b155, 0x1b155; 0x1b164, 0x1b167;
+     0x1b170, 0x1b2fb; 0x1bc00, 0x1bc6a; 0x1bc70, 0x1bc7c; 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99;
+     0x1df0a, 0x1df0a; 0x1e100, 0x1e12c; 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; 0x1e2c0, 0x1e2eb;
+     0x1e4d0, 0x1e4ea; 0x1e7e0, 0x1e7e6; 0x1e7e8, 0x1e7eb; 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe;
+     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, 0x2a6df;
+     0x2a700, 0x2b739; 0x2b740, 0x2b81d; 0x2b820, 0x2cea1; 0x2ceb0, 0x2ebe0; 0x2f800, 0x2fa1d;
+     0x31350, 0x323af; 0x30000, 0x3134a]
 
   let lt =
-    [
-      (0x1c5, 0x1c5);
-      (0x1c8, 0x1c8);
-      (0x1cb, 0x1cb);
-      (0x1f2, 0x1f2);
-      (0x1f88, 0x1f8f);
-      (0x1ffc, 0x1ffc);
-      (0x1fcc, 0x1fcc);
-      (0x1fbc, 0x1fbc);
-      (0x1fa8, 0x1faf);
-      (0x1f98, 0x1f9f);
-    ]
+    [0x1c5, 0x1c5; 0x1c8, 0x1c8; 0x1cb, 0x1cb; 0x1f2, 0x1f2; 0x1f88, 0x1f8f;
+     0x1ffc, 0x1ffc; 0x1fcc, 0x1fcc; 0x1fbc, 0x1fbc; 0x1fa8, 0x1faf; 0x1f98, 0x1f9f]
 
   let lu =
-    [
-      (0x41, 0x5a);
-      (0xc0, 0xd6);
-      (0xd8, 0xde);
-      (0x100, 0x100);
-      (0x102, 0x102);
-      (0x104, 0x104);
-      (0x106, 0x106);
-      (0x108, 0x108);
-      (0x10a, 0x10a);
-      (0x10c, 0x10c);
-      (0x10e, 0x10e);
-      (0x110, 0x110);
-      (0x112, 0x112);
-      (0x114, 0x114);
-      (0x116, 0x116);
-      (0x118, 0x118);
-      (0x11a, 0x11a);
-      (0x11c, 0x11c);
-      (0x11e, 0x11e);
-      (0x120, 0x120);
-      (0x122, 0x122);
-      (0x124, 0x124);
-      (0x126, 0x126);
-      (0x128, 0x128);
-      (0x12a, 0x12a);
-      (0x12c, 0x12c);
-      (0x12e, 0x12e);
-      (0x130, 0x130);
-      (0x132, 0x132);
-      (0x134, 0x134);
-      (0x136, 0x136);
-      (0x139, 0x139);
-      (0x13b, 0x13b);
-      (0x13d, 0x13d);
-      (0x13f, 0x13f);
-      (0x141, 0x141);
-      (0x143, 0x143);
-      (0x145, 0x145);
-      (0x147, 0x147);
-      (0x14a, 0x14a);
-      (0x14c, 0x14c);
-      (0x14e, 0x14e);
-      (0x150, 0x150);
-      (0x152, 0x152);
-      (0x154, 0x154);
-      (0x156, 0x156);
-      (0x158, 0x158);
-      (0x15a, 0x15a);
-      (0x15c, 0x15c);
-      (0x15e, 0x15e);
-      (0x160, 0x160);
-      (0x162, 0x162);
-      (0x164, 0x164);
-      (0x166, 0x166);
-      (0x168, 0x168);
-      (0x16a, 0x16a);
-      (0x16c, 0x16c);
-      (0x16e, 0x16e);
-      (0x170, 0x170);
-      (0x172, 0x172);
-      (0x174, 0x174);
-      (0x176, 0x176);
-      (0x178, 0x179);
-      (0x17b, 0x17b);
-      (0x17d, 0x17d);
-      (0x181, 0x182);
-      (0x184, 0x184);
-      (0x186, 0x187);
-      (0x189, 0x18b);
-      (0x18e, 0x191);
-      (0x193, 0x194);
-      (0x196, 0x198);
-      (0x19c, 0x19d);
-      (0x19f, 0x1a0);
-      (0x1a2, 0x1a2);
-      (0x1a4, 0x1a4);
-      (0x1a6, 0x1a7);
-      (0x1a9, 0x1a9);
-      (0x1ac, 0x1ac);
-      (0x1ae, 0x1af);
-      (0x1b1, 0x1b3);
-      (0x1b5, 0x1b5);
-      (0x1b7, 0x1b8);
-      (0x1bc, 0x1bc);
-      (0x1c4, 0x1c4);
-      (0x1c7, 0x1c7);
-      (0x1ca, 0x1ca);
-      (0x1cd, 0x1cd);
-      (0x1cf, 0x1cf);
-      (0x1d1, 0x1d1);
-      (0x1d3, 0x1d3);
-      (0x1d5, 0x1d5);
-      (0x1d7, 0x1d7);
-      (0x1d9, 0x1d9);
-      (0x1db, 0x1db);
-      (0x1de, 0x1de);
-      (0x1e0, 0x1e0);
-      (0x1e2, 0x1e2);
-      (0x1e4, 0x1e4);
-      (0x1e6, 0x1e6);
-      (0x1e8, 0x1e8);
-      (0x1ea, 0x1ea);
-      (0x1ec, 0x1ec);
-      (0x1ee, 0x1ee);
-      (0x1f1, 0x1f1);
-      (0x1f4, 0x1f4);
-      (0x1f6, 0x1f8);
-      (0x1fa, 0x1fa);
-      (0x1fc, 0x1fc);
-      (0x1fe, 0x1fe);
-      (0x200, 0x200);
-      (0x202, 0x202);
-      (0x204, 0x204);
-      (0x206, 0x206);
-      (0x208, 0x208);
-      (0x20a, 0x20a);
-      (0x20c, 0x20c);
-      (0x20e, 0x20e);
-      (0x210, 0x210);
-      (0x212, 0x212);
-      (0x214, 0x214);
-      (0x216, 0x216);
-      (0x218, 0x218);
-      (0x21a, 0x21a);
-      (0x21c, 0x21c);
-      (0x21e, 0x21e);
-      (0x220, 0x220);
-      (0x222, 0x222);
-      (0x224, 0x224);
-      (0x226, 0x226);
-      (0x228, 0x228);
-      (0x22a, 0x22a);
-      (0x22c, 0x22c);
-      (0x22e, 0x22e);
-      (0x230, 0x230);
-      (0x232, 0x232);
-      (0x23a, 0x23b);
-      (0x23d, 0x23e);
-      (0x241, 0x241);
-      (0x243, 0x246);
-      (0x248, 0x248);
-      (0x24a, 0x24a);
-      (0x24c, 0x24c);
-      (0x24e, 0x24e);
-      (0x370, 0x370);
-      (0x372, 0x372);
-      (0x376, 0x376);
-      (0x37f, 0x37f);
-      (0x386, 0x386);
-      (0x388, 0x38a);
-      (0x38c, 0x38c);
-      (0x38e, 0x38f);
-      (0x391, 0x3a1);
-      (0x3a3, 0x3ab);
-      (0x3cf, 0x3cf);
-      (0x3d2, 0x3d4);
-      (0x3d8, 0x3d8);
-      (0x3da, 0x3da);
-      (0x3dc, 0x3dc);
-      (0x3de, 0x3de);
-      (0x3e0, 0x3e0);
-      (0x3e2, 0x3e2);
-      (0x3e4, 0x3e4);
-      (0x3e6, 0x3e6);
-      (0x3e8, 0x3e8);
-      (0x3ea, 0x3ea);
-      (0x3ec, 0x3ec);
-      (0x3ee, 0x3ee);
-      (0x3f4, 0x3f4);
-      (0x3f7, 0x3f7);
-      (0x3f9, 0x3fa);
-      (0x3fd, 0x42f);
-      (0x460, 0x460);
-      (0x462, 0x462);
-      (0x464, 0x464);
-      (0x466, 0x466);
-      (0x468, 0x468);
-      (0x46a, 0x46a);
-      (0x46c, 0x46c);
-      (0x46e, 0x46e);
-      (0x470, 0x470);
-      (0x472, 0x472);
-      (0x474, 0x474);
-      (0x476, 0x476);
-      (0x478, 0x478);
-      (0x47a, 0x47a);
-      (0x47c, 0x47c);
-      (0x47e, 0x47e);
-      (0x480, 0x480);
-      (0x48a, 0x48a);
-      (0x48c, 0x48c);
-      (0x48e, 0x48e);
-      (0x490, 0x490);
-      (0x492, 0x492);
-      (0x494, 0x494);
-      (0x496, 0x496);
-      (0x498, 0x498);
-      (0x49a, 0x49a);
-      (0x49c, 0x49c);
-      (0x49e, 0x49e);
-      (0x4a0, 0x4a0);
-      (0x4a2, 0x4a2);
-      (0x4a4, 0x4a4);
-      (0x4a6, 0x4a6);
-      (0x4a8, 0x4a8);
-      (0x4aa, 0x4aa);
-      (0x4ac, 0x4ac);
-      (0x4ae, 0x4ae);
-      (0x4b0, 0x4b0);
-      (0x4b2, 0x4b2);
-      (0x4b4, 0x4b4);
-      (0x4b6, 0x4b6);
-      (0x4b8, 0x4b8);
-      (0x4ba, 0x4ba);
-      (0x4bc, 0x4bc);
-      (0x4be, 0x4be);
-      (0x4c0, 0x4c1);
-      (0x4c3, 0x4c3);
-      (0x4c5, 0x4c5);
-      (0x4c7, 0x4c7);
-      (0x4c9, 0x4c9);
-      (0x4cb, 0x4cb);
-      (0x4cd, 0x4cd);
-      (0x4d0, 0x4d0);
-      (0x4d2, 0x4d2);
-      (0x4d4, 0x4d4);
-      (0x4d6, 0x4d6);
-      (0x4d8, 0x4d8);
-      (0x4da, 0x4da);
-      (0x4dc, 0x4dc);
-      (0x4de, 0x4de);
-      (0x4e0, 0x4e0);
-      (0x4e2, 0x4e2);
-      (0x4e4, 0x4e4);
-      (0x4e6, 0x4e6);
-      (0x4e8, 0x4e8);
-      (0x4ea, 0x4ea);
-      (0x4ec, 0x4ec);
-      (0x4ee, 0x4ee);
-      (0x4f0, 0x4f0);
-      (0x4f2, 0x4f2);
-      (0x4f4, 0x4f4);
-      (0x4f6, 0x4f6);
-      (0x4f8, 0x4f8);
-      (0x4fa, 0x4fa);
-      (0x4fc, 0x4fc);
-      (0x4fe, 0x4fe);
-      (0x500, 0x500);
-      (0x502, 0x502);
-      (0x504, 0x504);
-      (0x506, 0x506);
-      (0x508, 0x508);
-      (0x50a, 0x50a);
-      (0x50c, 0x50c);
-      (0x50e, 0x50e);
-      (0x510, 0x510);
-      (0x512, 0x512);
-      (0x514, 0x514);
-      (0x516, 0x516);
-      (0x518, 0x518);
-      (0x51a, 0x51a);
-      (0x51c, 0x51c);
-      (0x51e, 0x51e);
-      (0x520, 0x520);
-      (0x522, 0x522);
-      (0x524, 0x524);
-      (0x526, 0x526);
-      (0x528, 0x528);
-      (0x52a, 0x52a);
-      (0x52c, 0x52c);
-      (0x52e, 0x52e);
-      (0x531, 0x556);
-      (0x10a0, 0x10c5);
-      (0x10c7, 0x10c7);
-      (0x10cd, 0x10cd);
-      (0x13a0, 0x13f5);
-      (0x1c90, 0x1cba);
-      (0x1cbd, 0x1cbf);
-      (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, 0x2c2f);
-      (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, 0xa7ae);
-      (0xa7b0, 0xa7b4);
-      (0xa7b6, 0xa7b6);
-      (0xa7b8, 0xa7b8);
-      (0xa7ba, 0xa7ba);
-      (0xa7bc, 0xa7bc);
-      (0xa7be, 0xa7be);
-      (0xa7c0, 0xa7c0);
-      (0xa7c2, 0xa7c2);
-      (0xa7c4, 0xa7c7);
-      (0xa7c9, 0xa7c9);
-      (0xa7d0, 0xa7d0);
-      (0xa7d6, 0xa7d6);
-      (0xa7d8, 0xa7d8);
-      (0xa7f5, 0xa7f5);
-      (0xff21, 0xff3a);
-      (0x10400, 0x10427);
-      (0x104b0, 0x104d3);
-      (0x10570, 0x1057a);
-      (0x1057c, 0x1058a);
-      (0x1058c, 0x10592);
-      (0x10594, 0x10595);
-      (0x10c80, 0x10cb2);
-      (0x118a0, 0x118bf);
-      (0x16e40, 0x16e5f);
-      (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);
-      (0x1e900, 0x1e921);
-    ]
+    [0x41, 0x5a; 0xc0, 0xd6; 0xd8, 0xde; 0x100, 0x100; 0x102, 0x102;
+     0x104, 0x104; 0x106, 0x106; 0x108, 0x108; 0x10a, 0x10a; 0x10c, 0x10c;
+     0x10e, 0x10e; 0x110, 0x110; 0x112, 0x112; 0x114, 0x114; 0x116, 0x116;
+     0x118, 0x118; 0x11a, 0x11a; 0x11c, 0x11c; 0x11e, 0x11e; 0x120, 0x120;
+     0x122, 0x122; 0x124, 0x124; 0x126, 0x126; 0x128, 0x128; 0x12a, 0x12a;
+     0x12c, 0x12c; 0x12e, 0x12e; 0x130, 0x130; 0x132, 0x132; 0x134, 0x134;
+     0x136, 0x136; 0x139, 0x139; 0x13b, 0x13b; 0x13d, 0x13d; 0x13f, 0x13f;
+     0x141, 0x141; 0x143, 0x143; 0x145, 0x145; 0x147, 0x147; 0x14a, 0x14a;
+     0x14c, 0x14c; 0x14e, 0x14e; 0x150, 0x150; 0x152, 0x152; 0x154, 0x154;
+     0x156, 0x156; 0x158, 0x158; 0x15a, 0x15a; 0x15c, 0x15c; 0x15e, 0x15e;
+     0x160, 0x160; 0x162, 0x162; 0x164, 0x164; 0x166, 0x166; 0x168, 0x168;
+     0x16a, 0x16a; 0x16c, 0x16c; 0x16e, 0x16e; 0x170, 0x170; 0x172, 0x172;
+     0x174, 0x174; 0x176, 0x176; 0x178, 0x179; 0x17b, 0x17b; 0x17d, 0x17d;
+     0x181, 0x182; 0x184, 0x184; 0x186, 0x187; 0x189, 0x18b; 0x18e, 0x191;
+     0x193, 0x194; 0x196, 0x198; 0x19c, 0x19d; 0x19f, 0x1a0; 0x1a2, 0x1a2;
+     0x1a4, 0x1a4; 0x1a6, 0x1a7; 0x1a9, 0x1a9; 0x1ac, 0x1ac; 0x1ae, 0x1af;
+     0x1b1, 0x1b3; 0x1b5, 0x1b5; 0x1b7, 0x1b8; 0x1bc, 0x1bc; 0x1c4, 0x1c4;
+     0x1c7, 0x1c7; 0x1ca, 0x1ca; 0x1cd, 0x1cd; 0x1cf, 0x1cf; 0x1d1, 0x1d1;
+     0x1d3, 0x1d3; 0x1d5, 0x1d5; 0x1d7, 0x1d7; 0x1d9, 0x1d9; 0x1db, 0x1db;
+     0x1de, 0x1de; 0x1e0, 0x1e0; 0x1e2, 0x1e2; 0x1e4, 0x1e4; 0x1e6, 0x1e6;
+     0x1e8, 0x1e8; 0x1ea, 0x1ea; 0x1ec, 0x1ec; 0x1ee, 0x1ee; 0x1f1, 0x1f1;
+     0x1f4, 0x1f4; 0x1f6, 0x1f8; 0x1fa, 0x1fa; 0x1fc, 0x1fc; 0x1fe, 0x1fe;
+     0x200, 0x200; 0x202, 0x202; 0x204, 0x204; 0x206, 0x206; 0x208, 0x208;
+     0x20a, 0x20a; 0x20c, 0x20c; 0x20e, 0x20e; 0x210, 0x210; 0x212, 0x212;
+     0x214, 0x214; 0x216, 0x216; 0x218, 0x218; 0x21a, 0x21a; 0x21c, 0x21c;
+     0x21e, 0x21e; 0x220, 0x220; 0x222, 0x222; 0x224, 0x224; 0x226, 0x226;
+     0x228, 0x228; 0x22a, 0x22a; 0x22c, 0x22c; 0x22e, 0x22e; 0x230, 0x230;
+     0x232, 0x232; 0x23a, 0x23b; 0x23d, 0x23e; 0x241, 0x241; 0x243, 0x246;
+     0x248, 0x248; 0x24a, 0x24a; 0x24c, 0x24c; 0x24e, 0x24e; 0x370, 0x370;
+     0x372, 0x372; 0x376, 0x376; 0x37f, 0x37f; 0x386, 0x386; 0x388, 0x38a;
+     0x38c, 0x38c; 0x38e, 0x38f; 0x391, 0x3a1; 0x3a3, 0x3ab; 0x3cf, 0x3cf;
+     0x3d2, 0x3d4; 0x3d8, 0x3d8; 0x3da, 0x3da; 0x3dc, 0x3dc; 0x3de, 0x3de;
+     0x3e0, 0x3e0; 0x3e2, 0x3e2; 0x3e4, 0x3e4; 0x3e6, 0x3e6; 0x3e8, 0x3e8;
+     0x3ea, 0x3ea; 0x3ec, 0x3ec; 0x3ee, 0x3ee; 0x3f4, 0x3f4; 0x3f7, 0x3f7;
+     0x3f9, 0x3fa; 0x3fd, 0x42f; 0x460, 0x460; 0x462, 0x462; 0x464, 0x464;
+     0x466, 0x466; 0x468, 0x468; 0x46a, 0x46a; 0x46c, 0x46c; 0x46e, 0x46e;
+     0x470, 0x470; 0x472, 0x472; 0x474, 0x474; 0x476, 0x476; 0x478, 0x478;
+     0x47a, 0x47a; 0x47c, 0x47c; 0x47e, 0x47e; 0x480, 0x480; 0x48a, 0x48a;
+     0x48c, 0x48c; 0x48e, 0x48e; 0x490, 0x490; 0x492, 0x492; 0x494, 0x494;
+     0x496, 0x496; 0x498, 0x498; 0x49a, 0x49a; 0x49c, 0x49c; 0x49e, 0x49e;
+     0x4a0, 0x4a0; 0x4a2, 0x4a2; 0x4a4, 0x4a4; 0x4a6, 0x4a6; 0x4a8, 0x4a8;
+     0x4aa, 0x4aa; 0x4ac, 0x4ac; 0x4ae, 0x4ae; 0x4b0, 0x4b0; 0x4b2, 0x4b2;
+     0x4b4, 0x4b4; 0x4b6, 0x4b6; 0x4b8, 0x4b8; 0x4ba, 0x4ba; 0x4bc, 0x4bc;
+     0x4be, 0x4be; 0x4c0, 0x4c1; 0x4c3, 0x4c3; 0x4c5, 0x4c5; 0x4c7, 0x4c7;
+     0x4c9, 0x4c9; 0x4cb, 0x4cb; 0x4cd, 0x4cd; 0x4d0, 0x4d0; 0x4d2, 0x4d2;
+     0x4d4, 0x4d4; 0x4d6, 0x4d6; 0x4d8, 0x4d8; 0x4da, 0x4da; 0x4dc, 0x4dc;
+     0x4de, 0x4de; 0x4e0, 0x4e0; 0x4e2, 0x4e2; 0x4e4, 0x4e4; 0x4e6, 0x4e6;
+     0x4e8, 0x4e8; 0x4ea, 0x4ea; 0x4ec, 0x4ec; 0x4ee, 0x4ee; 0x4f0, 0x4f0;
+     0x4f2, 0x4f2; 0x4f4, 0x4f4; 0x4f6, 0x4f6; 0x4f8, 0x4f8; 0x4fa, 0x4fa;
+     0x4fc, 0x4fc; 0x4fe, 0x4fe; 0x500, 0x500; 0x502, 0x502; 0x504, 0x504;
+     0x506, 0x506; 0x508, 0x508; 0x50a, 0x50a; 0x50c, 0x50c; 0x50e, 0x50e;
+     0x510, 0x510; 0x512, 0x512; 0x514, 0x514; 0x516, 0x516; 0x518, 0x518;
+     0x51a, 0x51a; 0x51c, 0x51c; 0x51e, 0x51e; 0x520, 0x520; 0x522, 0x522;
+     0x524, 0x524; 0x526, 0x526; 0x528, 0x528; 0x52a, 0x52a; 0x52c, 0x52c;
+     0x52e, 0x52e; 0x531, 0x556; 0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd;
+     0x13a0, 0x13f5; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 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, 0x2c2f; 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, 0xa7ae;
+     0xa7b0, 0xa7b4; 0xa7b6, 0xa7b6; 0xa7b8, 0xa7b8; 0xa7ba, 0xa7ba; 0xa7bc, 0xa7bc;
+     0xa7be, 0xa7be; 0xa7c0, 0xa7c0; 0xa7c2, 0xa7c2; 0xa7c4, 0xa7c7; 0xa7c9, 0xa7c9;
+     0xa7d0, 0xa7d0; 0xa7d6, 0xa7d6; 0xa7d8, 0xa7d8; 0xa7f5, 0xa7f5; 0xff21, 0xff3a;
+     0x10400, 0x10427; 0x104b0, 0x104d3; 0x10570, 0x1057a; 0x1057c, 0x1058a; 0x1058c, 0x10592;
+     0x10594, 0x10595; 0x10c80, 0x10cb2; 0x118a0, 0x118bf; 0x16e40, 0x16e5f; 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;
+     0x1e900, 0x1e921]
 
   let mc =
-    [
-      (0x903, 0x903);
-      (0x93b, 0x93b);
-      (0x93e, 0x940);
-      (0x949, 0x94c);
-      (0x94e, 0x94f);
-      (0x982, 0x983);
-      (0x9be, 0x9be);
-      (0x9be, 0x9c0);
-      (0x9bf, 0x9c0);
-      (0x9c7, 0x9c8);
-      (0x9cb, 0x9cc);
-      (0x9d7, 0x9d7);
-      (0xa03, 0xa03);
-      (0xa3e, 0xa40);
-      (0xa83, 0xa83);
-      (0xabe, 0xac0);
-      (0xac9, 0xac9);
-      (0xacb, 0xacc);
-      (0xb02, 0xb03);
-      (0xb3e, 0xb3e);
-      (0xb40, 0xb40);
-      (0xb47, 0xb48);
-      (0xb4b, 0xb4c);
-      (0xb57, 0xb57);
-      (0xbbe, 0xbbe);
-      (0xbbe, 0xbbf);
-      (0xbbf, 0xbbf);
-      (0xbc1, 0xbc2);
-      (0xbc6, 0xbc8);
-      (0xbca, 0xbcc);
-      (0xbd7, 0xbd7);
-      (0xc01, 0xc03);
-      (0xc41, 0xc44);
-      (0xc82, 0xc83);
-      (0xcbe, 0xcbe);
-      (0xcc0, 0xcc1);
-      (0xcc0, 0xcc4);
-      (0xcc2, 0xcc2);
-      (0xcc3, 0xcc4);
-      (0xcc7, 0xcc8);
-      (0xcca, 0xccb);
-      (0xcd5, 0xcd6);
-      (0xd02, 0xd03);
-      (0xd3e, 0xd3e);
-      (0xd3e, 0xd40);
-      (0xd3f, 0xd40);
-      (0xd46, 0xd48);
-      (0xd4a, 0xd4c);
-      (0xd57, 0xd57);
-      (0xd82, 0xd83);
-      (0xdcf, 0xdcf);
-      (0xdcf, 0xdd1);
-      (0xdd0, 0xdd1);
-      (0xdd8, 0xdde);
-      (0xdd8, 0xddf);
-      (0xddf, 0xddf);
-      (0xdf2, 0xdf3);
-      (0xf3e, 0xf3f);
-      (0xf7f, 0xf7f);
-      (0x102b, 0x102c);
-      (0x1031, 0x1031);
-      (0x1038, 0x1038);
-      (0x103b, 0x103c);
-      (0x1056, 0x1057);
-      (0x1062, 0x1064);
-      (0x1063, 0x1064);
-      (0x1067, 0x106d);
-      (0x1069, 0x106d);
-      (0x1083, 0x1084);
-      (0x1087, 0x108c);
-      (0x108f, 0x108f);
-      (0x109a, 0x109b);
-      (0x109a, 0x109c);
-      (0x1715, 0x1715);
-      (0x1734, 0x1734);
-      (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, 0x1b43);
-      (0x1b43, 0x1b44);
-      (0x1b44, 0x1b44);
-      (0x1b82, 0x1b82);
-      (0x1ba1, 0x1ba1);
-      (0x1ba6, 0x1ba7);
-      (0x1baa, 0x1baa);
-      (0x1be7, 0x1be7);
-      (0x1bea, 0x1bec);
-      (0x1bee, 0x1bee);
-      (0x1bf2, 0x1bf3);
-      (0x1c24, 0x1c2b);
-      (0x1c34, 0x1c35);
-      (0x1ce1, 0x1ce1);
-      (0x1cf7, 0x1cf7);
-      (0x302e, 0x302f);
-      (0xa823, 0xa824);
-      (0xa827, 0xa827);
-      (0xa880, 0xa881);
-      (0xa8b4, 0xa8c3);
-      (0xa952, 0xa952);
-      (0xa952, 0xa953);
-      (0xa953, 0xa953);
-      (0xa983, 0xa983);
-      (0xa9b4, 0xa9b5);
-      (0xa9ba, 0xa9bb);
-      (0xa9be, 0xa9bf);
-      (0xa9be, 0xa9c0);
-      (0xa9c0, 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);
-      (0x11145, 0x11146);
-      (0x11182, 0x11182);
-      (0x111b3, 0x111b5);
-      (0x111bf, 0x111bf);
-      (0x111bf, 0x111c0);
-      (0x111c0, 0x111c0);
-      (0x111ce, 0x111ce);
-      (0x1122c, 0x1122e);
-      (0x11232, 0x11233);
-      (0x11235, 0x11235);
-      (0x112e0, 0x112e2);
-      (0x11302, 0x11303);
-      (0x1133e, 0x1133e);
-      (0x1133e, 0x1133f);
-      (0x1133f, 0x1133f);
-      (0x11341, 0x11344);
-      (0x11347, 0x11348);
-      (0x1134b, 0x1134c);
-      (0x1134b, 0x1134d);
-      (0x1134d, 0x1134d);
-      (0x11357, 0x11357);
-      (0x11362, 0x11363);
-      (0x11435, 0x11437);
-      (0x11440, 0x11441);
-      (0x11445, 0x11445);
-      (0x114b0, 0x114b0);
-      (0x114b0, 0x114b2);
-      (0x114b1, 0x114b2);
-      (0x114b9, 0x114b9);
-      (0x114bb, 0x114bc);
-      (0x114bb, 0x114be);
-      (0x114bd, 0x114bd);
-      (0x114be, 0x114be);
-      (0x114c1, 0x114c1);
-      (0x115af, 0x115af);
-      (0x115af, 0x115b1);
-      (0x115b0, 0x115b1);
-      (0x115b8, 0x115bb);
-      (0x115be, 0x115be);
-      (0x11630, 0x11632);
-      (0x1163b, 0x1163c);
-      (0x1163e, 0x1163e);
-      (0x116ac, 0x116ac);
-      (0x116ae, 0x116af);
-      (0x116b6, 0x116b6);
-      (0x11720, 0x11721);
-      (0x11726, 0x11726);
-      (0x1182c, 0x1182e);
-      (0x11838, 0x11838);
-      (0x11930, 0x11930);
-      (0x11930, 0x11935);
-      (0x11931, 0x11935);
-      (0x11937, 0x11938);
-      (0x1193d, 0x1193d);
-      (0x11940, 0x11940);
-      (0x11942, 0x11942);
-      (0x119d1, 0x119d3);
-      (0x119dc, 0x119df);
-      (0x119e4, 0x119e4);
-      (0x11a39, 0x11a39);
-      (0x11a57, 0x11a58);
-      (0x11a97, 0x11a97);
-      (0x11c2f, 0x11c2f);
-      (0x11c3e, 0x11c3e);
-      (0x11ca9, 0x11ca9);
-      (0x11cb1, 0x11cb1);
-      (0x11cb4, 0x11cb4);
-      (0x11d8a, 0x11d8e);
-      (0x11d93, 0x11d94);
-      (0x11d96, 0x11d96);
-      (0x11ef5, 0x11ef6);
-      (0x16f51, 0x16f87);
-      (0x16ff0, 0x16ff1);
-      (0x1d165, 0x1d165);
-      (0x1d165, 0x1d166);
-      (0x1d166, 0x1d166);
-      (0x1d16e, 0x1d172);
-      (0x1d16d, 0x1d172);
-      (0x1d16d, 0x1d16d);
-    ]
+    [0x903, 0x903; 0x93b, 0x93b; 0x93e, 0x940; 0x949, 0x94c; 0x94e, 0x94f;
+     0x982, 0x983; 0x9be, 0x9be; 0x9be, 0x9c0; 0x9bf, 0x9c0; 0x9c7, 0x9c8;
+     0x9cb, 0x9cc; 0x9d7, 0x9d7; 0xa03, 0xa03; 0xa3e, 0xa40; 0xa83, 0xa83;
+     0xabe, 0xac0; 0xac9, 0xac9; 0xacb, 0xacc; 0xb02, 0xb03; 0xb3e, 0xb3e;
+     0xb40, 0xb40; 0xb47, 0xb48; 0xb4b, 0xb4c; 0xb57, 0xb57; 0xbbe, 0xbbe;
+     0xbbe, 0xbbf; 0xbbf, 0xbbf; 0xbc1, 0xbc2; 0xbc6, 0xbc8; 0xbca, 0xbcc;
+     0xbd7, 0xbd7; 0xc01, 0xc03; 0xc41, 0xc44; 0xc82, 0xc83; 0xcbe, 0xcbe;
+     0xcc0, 0xcc1; 0xcc0, 0xcc4; 0xcc2, 0xcc2; 0xcc3, 0xcc4; 0xcc7, 0xcc8;
+     0xcca, 0xccb; 0xcd5, 0xcd6; 0xcf3, 0xcf3; 0xd02, 0xd03; 0xd3e, 0xd3e;
+     0xd3e, 0xd40; 0xd3f, 0xd40; 0xd46, 0xd48; 0xd4a, 0xd4c; 0xd57, 0xd57;
+     0xd82, 0xd83; 0xdcf, 0xdcf; 0xdcf, 0xdd1; 0xdd0, 0xdd1; 0xdd8, 0xdde;
+     0xdd8, 0xddf; 0xddf, 0xddf; 0xdf2, 0xdf3; 0xf3e, 0xf3f; 0xf7f, 0xf7f;
+     0x102b, 0x102c; 0x1031, 0x1031; 0x1038, 0x1038; 0x103b, 0x103c; 0x1056, 0x1057;
+     0x1062, 0x1064; 0x1063, 0x1064; 0x1067, 0x106d; 0x1069, 0x106d; 0x1083, 0x1084;
+     0x1087, 0x108c; 0x108f, 0x108f; 0x109a, 0x109b; 0x109a, 0x109c; 0x1715, 0x1715;
+     0x1734, 0x1734; 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, 0x1b43; 0x1b43, 0x1b44;
+     0x1b44, 0x1b44; 0x1b82, 0x1b82; 0x1ba1, 0x1ba1; 0x1ba6, 0x1ba7; 0x1baa, 0x1baa;
+     0x1be7, 0x1be7; 0x1bea, 0x1bec; 0x1bee, 0x1bee; 0x1bf2, 0x1bf3; 0x1c24, 0x1c2b;
+     0x1c34, 0x1c35; 0x1ce1, 0x1ce1; 0x1cf7, 0x1cf7; 0x302e, 0x302f; 0xa823, 0xa824;
+     0xa827, 0xa827; 0xa880, 0xa881; 0xa8b4, 0xa8c3; 0xa952, 0xa952; 0xa952, 0xa953;
+     0xa953, 0xa953; 0xa983, 0xa983; 0xa9b4, 0xa9b5; 0xa9ba, 0xa9bb; 0xa9be, 0xa9bf;
+     0xa9be, 0xa9c0; 0xa9c0, 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;
+     0x11145, 0x11146; 0x11182, 0x11182; 0x111b3, 0x111b5; 0x111bf, 0x111bf; 0x111bf, 0x111c0;
+     0x111c0, 0x111c0; 0x111ce, 0x111ce; 0x1122c, 0x1122e; 0x11232, 0x11233; 0x11235, 0x11235;
+     0x112e0, 0x112e2; 0x11302, 0x11303; 0x1133e, 0x1133e; 0x1133e, 0x1133f; 0x1133f, 0x1133f;
+     0x11341, 0x11344; 0x11347, 0x11348; 0x1134b, 0x1134c; 0x1134b, 0x1134d; 0x1134d, 0x1134d;
+     0x11357, 0x11357; 0x11362, 0x11363; 0x11435, 0x11437; 0x11440, 0x11441; 0x11445, 0x11445;
+     0x114b0, 0x114b0; 0x114b0, 0x114b2; 0x114b1, 0x114b2; 0x114b9, 0x114b9; 0x114bb, 0x114bc;
+     0x114bb, 0x114be; 0x114bd, 0x114bd; 0x114be, 0x114be; 0x114c1, 0x114c1; 0x115af, 0x115af;
+     0x115af, 0x115b1; 0x115b0, 0x115b1; 0x115b8, 0x115bb; 0x115be, 0x115be; 0x11630, 0x11632;
+     0x1163b, 0x1163c; 0x1163e, 0x1163e; 0x116ac, 0x116ac; 0x116ae, 0x116af; 0x116b6, 0x116b6;
+     0x11720, 0x11721; 0x11726, 0x11726; 0x1182c, 0x1182e; 0x11838, 0x11838; 0x11930, 0x11930;
+     0x11930, 0x11935; 0x11931, 0x11935; 0x11937, 0x11938; 0x1193d, 0x1193d; 0x11940, 0x11940;
+     0x11942, 0x11942; 0x119d1, 0x119d3; 0x119dc, 0x119df; 0x119e4, 0x119e4; 0x11a39, 0x11a39;
+     0x11a57, 0x11a58; 0x11a97, 0x11a97; 0x11c2f, 0x11c2f; 0x11c3e, 0x11c3e; 0x11ca9, 0x11ca9;
+     0x11cb1, 0x11cb1; 0x11cb4, 0x11cb4; 0x11d8a, 0x11d8e; 0x11d93, 0x11d94; 0x11d96, 0x11d96;
+     0x11ef5, 0x11ef6; 0x11f03, 0x11f03; 0x11f34, 0x11f35; 0x11f3e, 0x11f3f; 0x11f41, 0x11f41;
+     0x16f51, 0x16f87; 0x16ff0, 0x16ff1; 0x1d165, 0x1d165; 0x1d165, 0x1d166; 0x1d166, 0x1d166;
+     0x1d16e, 0x1d172; 0x1d16d, 0x1d172; 0x1d16d, 0x1d16d]
 
   let me =
-    [
-      (0xa670, 0xa672);
-      (0x20e2, 0x20e4);
-      (0x20dd, 0x20e0);
-      (0x1abe, 0x1abe);
-      (0x488, 0x489);
-    ]
+    [0xa670, 0xa672; 0x20e2, 0x20e4; 0x20dd, 0x20e0; 0x1abe, 0x1abe; 0x488, 0x489]
 
   let mn =
-    [
-      (0x300, 0x34e);
-      (0x300, 0x36f);
-      (0x345, 0x345);
-      (0x34f, 0x34f);
-      (0x350, 0x357);
-      (0x35d, 0x362);
-      (0x483, 0x487);
-      (0x591, 0x5a1);
-      (0x591, 0x5bd);
-      (0x5a3, 0x5bd);
-      (0x5b0, 0x5bd);
-      (0x5bf, 0x5bf);
-      (0x5c1, 0x5c2);
-      (0x5c4, 0x5c4);
-      (0x5c4, 0x5c5);
-      (0x5c7, 0x5c7);
-      (0x610, 0x61a);
-      (0x64b, 0x652);
-      (0x64b, 0x657);
-      (0x64b, 0x65f);
-      (0x657, 0x658);
-      (0x659, 0x65f);
-      (0x670, 0x670);
-      (0x6d6, 0x6dc);
-      (0x6df, 0x6e0);
-      (0x6df, 0x6e4);
-      (0x6e1, 0x6e4);
-      (0x6e7, 0x6e8);
-      (0x6ea, 0x6ec);
-      (0x6ea, 0x6ed);
-      (0x6ed, 0x6ed);
-      (0x711, 0x711);
-      (0x730, 0x73f);
-      (0x730, 0x74a);
-      (0x7a6, 0x7b0);
-      (0x7eb, 0x7f3);
-      (0x7fd, 0x7fd);
-      (0x816, 0x817);
-      (0x816, 0x819);
-      (0x818, 0x819);
-      (0x81b, 0x823);
-      (0x825, 0x827);
-      (0x829, 0x82c);
-      (0x829, 0x82d);
-      (0x859, 0x85b);
-      (0x898, 0x89f);
-      (0x8ca, 0x8d2);
-      (0x8ca, 0x8e1);
-      (0x8d4, 0x8df);
-      (0x8e3, 0x8e9);
-      (0x8e3, 0x8fe);
-      (0x8e3, 0x902);
-      (0x8f0, 0x902);
-      (0x93a, 0x93a);
-      (0x93c, 0x93c);
-      (0x941, 0x948);
-      (0x94d, 0x94d);
-      (0x951, 0x954);
-      (0x951, 0x957);
-      (0x955, 0x957);
-      (0x962, 0x963);
-      (0x981, 0x981);
-      (0x9bc, 0x9bc);
-      (0x9c1, 0x9c4);
-      (0x9cd, 0x9cd);
-      (0x9e2, 0x9e3);
-      (0x9fe, 0x9fe);
-      (0xa01, 0xa02);
-      (0xa3c, 0xa3c);
-      (0xa41, 0xa42);
-      (0xa47, 0xa48);
-      (0xa4b, 0xa4c);
-      (0xa4b, 0xa4d);
-      (0xa4d, 0xa4d);
-      (0xa51, 0xa51);
-      (0xa70, 0xa71);
-      (0xa75, 0xa75);
-      (0xa81, 0xa82);
-      (0xabc, 0xabc);
-      (0xac1, 0xac5);
-      (0xac7, 0xac8);
-      (0xacd, 0xacd);
-      (0xae2, 0xae3);
-      (0xafa, 0xafc);
-      (0xafa, 0xaff);
-      (0xafd, 0xaff);
-      (0xb01, 0xb01);
-      (0xb3c, 0xb3c);
-      (0xb3f, 0xb3f);
-      (0xb41, 0xb44);
-      (0xb4d, 0xb4d);
-      (0xb55, 0xb55);
-      (0xb55, 0xb56);
-      (0xb56, 0xb56);
-      (0xb62, 0xb63);
-      (0xb82, 0xb82);
-      (0xbc0, 0xbc0);
-      (0xbcd, 0xbcd);
-      (0xc00, 0xc00);
-      (0xc04, 0xc04);
-      (0xc3c, 0xc3c);
-      (0xc3e, 0xc40);
-      (0xc46, 0xc48);
-      (0xc4a, 0xc4c);
-      (0xc4a, 0xc4d);
-      (0xc4d, 0xc4d);
-      (0xc55, 0xc56);
-      (0xc62, 0xc63);
-      (0xc81, 0xc81);
-      (0xcbc, 0xcbc);
-      (0xcbf, 0xcbf);
-      (0xcc6, 0xcc6);
-      (0xccc, 0xccc);
-      (0xccc, 0xccd);
-      (0xccd, 0xccd);
-      (0xce2, 0xce3);
-      (0xd00, 0xd01);
-      (0xd3b, 0xd3c);
-      (0xd41, 0xd44);
-      (0xd4d, 0xd4d);
-      (0xd62, 0xd63);
-      (0xd81, 0xd81);
-      (0xdca, 0xdca);
-      (0xdd2, 0xdd4);
-      (0xdd6, 0xdd6);
-      (0xe31, 0xe31);
-      (0xe34, 0xe3a);
-      (0xe3a, 0xe3a);
-      (0xe47, 0xe4c);
-      (0xe47, 0xe4e);
-      (0xe4d, 0xe4d);
-      (0xe4e, 0xe4e);
-      (0xeb1, 0xeb1);
-      (0xeb4, 0xeb9);
-      (0xeb4, 0xebc);
-      (0xeba, 0xeba);
-      (0xebb, 0xebc);
-      (0xec8, 0xecc);
-      (0xec8, 0xecd);
-      (0xecd, 0xecd);
-      (0xf18, 0xf19);
-      (0xf35, 0xf35);
-      (0xf37, 0xf37);
-      (0xf39, 0xf39);
-      (0xf71, 0xf7e);
-      (0xf77, 0xf77);
-      (0xf79, 0xf79);
-      (0xf80, 0xf81);
-      (0xf80, 0xf84);
-      (0xf82, 0xf84);
-      (0xf84, 0xf84);
-      (0xf86, 0xf87);
-      (0xf8d, 0xf97);
-      (0xf99, 0xfbc);
-      (0xfc6, 0xfc6);
-      (0x102d, 0x1030);
-      (0x1032, 0x1036);
-      (0x1032, 0x1037);
-      (0x1037, 0x1037);
-      (0x1039, 0x103a);
-      (0x103d, 0x103e);
-      (0x1058, 0x1059);
-      (0x105e, 0x1060);
-      (0x1071, 0x1074);
-      (0x1082, 0x1082);
-      (0x1085, 0x1086);
-      (0x108d, 0x108d);
-      (0x109d, 0x109d);
-      (0x135d, 0x135f);
-      (0x1712, 0x1713);
-      (0x1712, 0x1714);
-      (0x1714, 0x1714);
-      (0x1732, 0x1733);
-      (0x1752, 0x1753);
-      (0x1772, 0x1773);
-      (0x17b4, 0x17b5);
-      (0x17b7, 0x17bd);
-      (0x17c6, 0x17c6);
-      (0x17c9, 0x17d3);
-      (0x17d2, 0x17d2);
-      (0x17dd, 0x17dd);
-      (0x180b, 0x180d);
-      (0x180f, 0x180f);
-      (0x1885, 0x1886);
-      (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, 0x1a74);
-      (0x1a73, 0x1a7c);
-      (0x1a75, 0x1a7c);
-      (0x1a7f, 0x1a7f);
-      (0x1ab0, 0x1abd);
-      (0x1abf, 0x1ac0);
-      (0x1abf, 0x1ace);
-      (0x1ac1, 0x1acb);
-      (0x1acc, 0x1ace);
-      (0x1b00, 0x1b03);
-      (0x1b34, 0x1b34);
-      (0x1b36, 0x1b3a);
-      (0x1b3c, 0x1b3c);
-      (0x1b42, 0x1b42);
-      (0x1b6b, 0x1b73);
-      (0x1b80, 0x1b81);
-      (0x1ba2, 0x1ba5);
-      (0x1ba8, 0x1ba9);
-      (0x1bab, 0x1bab);
-      (0x1bab, 0x1bad);
-      (0x1bac, 0x1bad);
-      (0x1be6, 0x1be6);
-      (0x1be8, 0x1be9);
-      (0x1bed, 0x1bed);
-      (0x1bef, 0x1bf1);
-      (0x1c2c, 0x1c33);
-      (0x1c36, 0x1c36);
-      (0x1c36, 0x1c37);
-      (0x1cd0, 0x1cd2);
-      (0x1cd4, 0x1ce0);
-      (0x1ce2, 0x1ce8);
-      (0x1ced, 0x1ced);
-      (0x1cf4, 0x1cf4);
-      (0x1cf8, 0x1cf9);
-      (0x1dc0, 0x1dff);
-      (0x1dc4, 0x1dcf);
-      (0x1de7, 0x1df4);
-      (0x1df5, 0x1dff);
-      (0x20d0, 0x20dc);
-      (0x20e1, 0x20e1);
-      (0x20e5, 0x20e6);
-      (0x20e5, 0x20f0);
-      (0x20eb, 0x20ef);
-      (0x2cef, 0x2cf1);
-      (0x2d7f, 0x2d7f);
-      (0x2de0, 0x2dff);
-      (0x302a, 0x302d);
-      (0x3099, 0x309a);
-      (0xa66f, 0xa66f);
-      (0xa674, 0xa67b);
-      (0xa674, 0xa67d);
-      (0xa67c, 0xa67d);
-      (0xa69e, 0xa69f);
-      (0xa6f0, 0xa6f1);
-      (0xa802, 0xa802);
-      (0xa806, 0xa806);
-      (0xa80b, 0xa80b);
-      (0xa825, 0xa826);
-      (0xa82c, 0xa82c);
-      (0xa8c4, 0xa8c4);
-      (0xa8c4, 0xa8c5);
-      (0xa8c5, 0xa8c5);
-      (0xa8e0, 0xa8f1);
-      (0xa8ff, 0xa8ff);
-      (0xa926, 0xa92a);
-      (0xa926, 0xa92d);
-      (0xa92b, 0xa92d);
-      (0xa947, 0xa951);
-      (0xa980, 0xa982);
-      (0xa9b3, 0xa9b3);
-      (0xa9b6, 0xa9b9);
-      (0xa9bc, 0xa9bd);
-      (0xa9e5, 0xa9e5);
-      (0xaa29, 0xaa2e);
-      (0xaa31, 0xaa32);
-      (0xaa35, 0xaa36);
-      (0xaa43, 0xaa43);
-      (0xaa4c, 0xaa4c);
-      (0xaa7c, 0xaa7c);
-      (0xaab0, 0xaab0);
-      (0xaab2, 0xaab4);
-      (0xaab7, 0xaab8);
-      (0xaabe, 0xaabe);
-      (0xaabe, 0xaabf);
-      (0xaabf, 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);
-      (0x10d24, 0x10d27);
-      (0x10eab, 0x10eac);
-      (0x10f46, 0x10f50);
-      (0x10f82, 0x10f85);
-      (0x11001, 0x11001);
-      (0x11038, 0x11045);
-      (0x11038, 0x11046);
-      (0x11046, 0x11046);
-      (0x11070, 0x11070);
-      (0x11073, 0x11074);
-      (0x1107f, 0x1107f);
-      (0x1107f, 0x11081);
-      (0x110b3, 0x110b6);
-      (0x110b9, 0x110b9);
-      (0x110b9, 0x110ba);
-      (0x110c2, 0x110c2);
-      (0x11100, 0x11102);
-      (0x11127, 0x1112b);
-      (0x1112d, 0x11132);
-      (0x1112d, 0x11134);
-      (0x11133, 0x11134);
-      (0x11173, 0x11173);
-      (0x11180, 0x11181);
-      (0x111b6, 0x111be);
-      (0x111c9, 0x111cc);
-      (0x111ca, 0x111cc);
-      (0x111cf, 0x111cf);
-      (0x1122f, 0x11231);
-      (0x11234, 0x11234);
-      (0x11236, 0x11236);
-      (0x11236, 0x11237);
-      (0x11237, 0x11237);
-      (0x1123e, 0x1123e);
-      (0x112df, 0x112df);
-      (0x112e3, 0x112e8);
-      (0x112e3, 0x112ea);
-      (0x112e9, 0x112ea);
-      (0x112ea, 0x112ea);
-      (0x11300, 0x11301);
-      (0x1133b, 0x1133c);
-      (0x1133c, 0x1133c);
-      (0x11340, 0x11340);
-      (0x11366, 0x1136c);
-      (0x11370, 0x11374);
-      (0x11438, 0x1143f);
-      (0x11442, 0x11442);
-      (0x11442, 0x11444);
-      (0x11443, 0x11444);
-      (0x11446, 0x11446);
-      (0x1145e, 0x1145e);
-      (0x114b3, 0x114b8);
-      (0x114ba, 0x114ba);
-      (0x114bf, 0x114c0);
-      (0x114c2, 0x114c2);
-      (0x114c2, 0x114c3);
-      (0x115b2, 0x115b5);
-      (0x115bc, 0x115bd);
-      (0x115bf, 0x115bf);
-      (0x115bf, 0x115c0);
-      (0x115dc, 0x115dd);
-      (0x11633, 0x1163a);
-      (0x1163d, 0x1163d);
-      (0x1163f, 0x1163f);
-      (0x1163f, 0x11640);
-      (0x11640, 0x11640);
-      (0x116ab, 0x116ab);
-      (0x116ad, 0x116ad);
-      (0x116b0, 0x116b5);
-      (0x116b7, 0x116b7);
-      (0x1171d, 0x1171f);
-      (0x11722, 0x11725);
-      (0x11727, 0x1172a);
-      (0x11727, 0x1172b);
-      (0x1172b, 0x1172b);
-      (0x1182f, 0x11837);
-      (0x11839, 0x11839);
-      (0x11839, 0x1183a);
-      (0x1193b, 0x1193c);
-      (0x1193e, 0x1193e);
-      (0x11943, 0x11943);
-      (0x119d4, 0x119d7);
-      (0x119da, 0x119db);
-      (0x119e0, 0x119e0);
-      (0x11a01, 0x11a0a);
-      (0x11a33, 0x11a38);
-      (0x11a34, 0x11a34);
-      (0x11a35, 0x11a38);
-      (0x11a3b, 0x11a3e);
-      (0x11a47, 0x11a47);
-      (0x11a51, 0x11a56);
-      (0x11a59, 0x11a5b);
-      (0x11a8a, 0x11a96);
-      (0x11a98, 0x11a98);
-      (0x11a98, 0x11a99);
-      (0x11a99, 0x11a99);
-      (0x11c30, 0x11c36);
-      (0x11c38, 0x11c3d);
-      (0x11c3f, 0x11c3f);
-      (0x11c92, 0x11ca7);
-      (0x11caa, 0x11cb0);
-      (0x11cb2, 0x11cb3);
-      (0x11cb5, 0x11cb6);
-      (0x11d31, 0x11d36);
-      (0x11d3a, 0x11d3a);
-      (0x11d3c, 0x11d3d);
-      (0x11d3f, 0x11d41);
-      (0x11d3f, 0x11d45);
-      (0x11d42, 0x11d42);
-      (0x11d43, 0x11d43);
-      (0x11d44, 0x11d45);
-      (0x11d47, 0x11d47);
-      (0x11d90, 0x11d91);
-      (0x11d95, 0x11d95);
-      (0x11d97, 0x11d97);
-      (0x11ef3, 0x11ef4);
-      (0x16af0, 0x16af4);
-      (0x16b30, 0x16b36);
-      (0x16f4f, 0x16f4f);
-      (0x16f8f, 0x16f92);
-      (0x16fe4, 0x16fe4);
-      (0x1bc9d, 0x1bc9e);
-      (0x1bc9e, 0x1bc9e);
-      (0x1cf00, 0x1cf2d);
-      (0x1cf30, 0x1cf46);
-      (0x1d167, 0x1d169);
-      (0x1d17b, 0x1d182);
-      (0x1d185, 0x1d18b);
-      (0x1d1aa, 0x1d1ad);
-      (0x1d242, 0x1d244);
-      (0x1da00, 0x1da36);
-      (0x1da3b, 0x1da6c);
-      (0x1da75, 0x1da75);
-      (0x1da84, 0x1da84);
-      (0x1da9b, 0x1da9f);
-      (0x1daa1, 0x1daaf);
-      (0x1e000, 0x1e006);
-      (0x1e008, 0x1e018);
-      (0x1e01b, 0x1e021);
-      (0x1e023, 0x1e024);
-      (0x1e026, 0x1e02a);
-      (0x1e130, 0x1e136);
-      (0x1e2ae, 0x1e2ae);
-      (0x1e2ec, 0x1e2ef);
-      (0x1e8d0, 0x1e8d6);
-      (0x1e944, 0x1e946);
-      (0x1e944, 0x1e94a);
-      (0xe0100, 0xe01ef);
-      (0x1e948, 0x1e94a);
-      (0x1e947, 0x1e947);
-    ]
+    [0x300, 0x34e; 0x300, 0x36f; 0x345, 0x345; 0x34f, 0x34f; 0x350, 0x357;
+     0x35d, 0x362; 0x483, 0x487; 0x591, 0x5a1; 0x591, 0x5bd; 0x5a3, 0x5bd;
+     0x5b0, 0x5bd; 0x5bf, 0x5bf; 0x5c1, 0x5c2; 0x5c4, 0x5c4; 0x5c4, 0x5c5;
+     0x5c7, 0x5c7; 0x610, 0x61a; 0x64b, 0x652; 0x64b, 0x657; 0x64b, 0x65f;
+     0x657, 0x658; 0x659, 0x65f; 0x670, 0x670; 0x6d6, 0x6dc; 0x6df, 0x6e0;
+     0x6df, 0x6e4; 0x6e1, 0x6e4; 0x6e7, 0x6e8; 0x6ea, 0x6ec; 0x6ea, 0x6ed;
+     0x6ed, 0x6ed; 0x711, 0x711; 0x730, 0x73f; 0x730, 0x74a; 0x7a6, 0x7b0;
+     0x7eb, 0x7f3; 0x7fd, 0x7fd; 0x816, 0x817; 0x816, 0x819; 0x818, 0x819;
+     0x81b, 0x823; 0x825, 0x827; 0x829, 0x82c; 0x829, 0x82d; 0x859, 0x85b;
+     0x898, 0x89f; 0x8ca, 0x8d2; 0x8ca, 0x8e1; 0x8d4, 0x8df; 0x8e3, 0x8e9;
+     0x8e3, 0x8fe; 0x8e3, 0x902; 0x8f0, 0x902; 0x93a, 0x93a; 0x93c, 0x93c;
+     0x941, 0x948; 0x94d, 0x94d; 0x951, 0x954; 0x951, 0x957; 0x955, 0x957;
+     0x962, 0x963; 0x981, 0x981; 0x9bc, 0x9bc; 0x9c1, 0x9c4; 0x9cd, 0x9cd;
+     0x9e2, 0x9e3; 0x9fe, 0x9fe; 0xa01, 0xa02; 0xa3c, 0xa3c; 0xa41, 0xa42;
+     0xa47, 0xa48; 0xa4b, 0xa4c; 0xa4b, 0xa4d; 0xa4d, 0xa4d; 0xa51, 0xa51;
+     0xa70, 0xa71; 0xa75, 0xa75; 0xa81, 0xa82; 0xabc, 0xabc; 0xac1, 0xac5;
+     0xac7, 0xac8; 0xacd, 0xacd; 0xae2, 0xae3; 0xafa, 0xafc; 0xafa, 0xaff;
+     0xafd, 0xaff; 0xb01, 0xb01; 0xb3c, 0xb3c; 0xb3f, 0xb3f; 0xb41, 0xb44;
+     0xb4d, 0xb4d; 0xb55, 0xb55; 0xb55, 0xb56; 0xb56, 0xb56; 0xb62, 0xb63;
+     0xb82, 0xb82; 0xbc0, 0xbc0; 0xbcd, 0xbcd; 0xc00, 0xc00; 0xc04, 0xc04;
+     0xc3c, 0xc3c; 0xc3e, 0xc40; 0xc46, 0xc48; 0xc4a, 0xc4c; 0xc4a, 0xc4d;
+     0xc4d, 0xc4d; 0xc55, 0xc56; 0xc62, 0xc63; 0xc81, 0xc81; 0xcbc, 0xcbc;
+     0xcbf, 0xcbf; 0xcc6, 0xcc6; 0xccc, 0xccc; 0xccc, 0xccd; 0xccd, 0xccd;
+     0xce2, 0xce3; 0xd00, 0xd01; 0xd3b, 0xd3c; 0xd41, 0xd44; 0xd4d, 0xd4d;
+     0xd62, 0xd63; 0xd81, 0xd81; 0xdca, 0xdca; 0xdd2, 0xdd4; 0xdd6, 0xdd6;
+     0xe31, 0xe31; 0xe34, 0xe3a; 0xe3a, 0xe3a; 0xe47, 0xe4c; 0xe47, 0xe4e;
+     0xe4d, 0xe4d; 0xe4e, 0xe4e; 0xeb1, 0xeb1; 0xeb4, 0xeb9; 0xeb4, 0xebc;
+     0xeba, 0xeba; 0xebb, 0xebc; 0xec8, 0xecc; 0xec8, 0xece; 0xecd, 0xecd;
+     0xf18, 0xf19; 0xf35, 0xf35; 0xf37, 0xf37; 0xf39, 0xf39; 0xf71, 0xf7e;
+     0xf77, 0xf77; 0xf79, 0xf79; 0xf80, 0xf83; 0xf80, 0xf84; 0xf82, 0xf84;
+     0xf84, 0xf84; 0xf86, 0xf87; 0xf8d, 0xf97; 0xf99, 0xfbc; 0xfc6, 0xfc6;
+     0x102d, 0x1030; 0x1032, 0x1036; 0x1032, 0x1037; 0x1037, 0x1037; 0x1039, 0x103a;
+     0x103d, 0x103e; 0x1058, 0x1059; 0x105e, 0x1060; 0x1071, 0x1074; 0x1082, 0x1082;
+     0x1085, 0x1086; 0x108d, 0x108d; 0x109d, 0x109d; 0x135d, 0x135f; 0x1712, 0x1713;
+     0x1712, 0x1714; 0x1714, 0x1714; 0x1732, 0x1733; 0x1752, 0x1753; 0x1772, 0x1773;
+     0x17b4, 0x17b5; 0x17b7, 0x17bd; 0x17c6, 0x17c6; 0x17c9, 0x17d3; 0x17d2, 0x17d2;
+     0x17dd, 0x17dd; 0x180b, 0x180d; 0x180f, 0x180f; 0x1885, 0x1886; 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, 0x1a74; 0x1a73, 0x1a7c; 0x1a75, 0x1a7c; 0x1a7f, 0x1a7f;
+     0x1ab0, 0x1abd; 0x1abf, 0x1ac0; 0x1abf, 0x1ace; 0x1ac1, 0x1acb; 0x1acc, 0x1ace;
+     0x1b00, 0x1b03; 0x1b34, 0x1b34; 0x1b36, 0x1b3a; 0x1b3c, 0x1b3c; 0x1b42, 0x1b42;
+     0x1b6b, 0x1b73; 0x1b80, 0x1b81; 0x1ba2, 0x1ba5; 0x1ba8, 0x1ba9; 0x1bab, 0x1bab;
+     0x1bab, 0x1bad; 0x1bac, 0x1bad; 0x1be6, 0x1be6; 0x1be8, 0x1be9; 0x1bed, 0x1bed;
+     0x1bef, 0x1bf1; 0x1c2c, 0x1c33; 0x1c36, 0x1c36; 0x1c36, 0x1c37; 0x1cd0, 0x1cd2;
+     0x1cd4, 0x1ce0; 0x1ce2, 0x1ce8; 0x1ced, 0x1ced; 0x1cf4, 0x1cf4; 0x1cf8, 0x1cf9;
+     0x1dc0, 0x1dff; 0x1dc4, 0x1dcf; 0x1de7, 0x1df4; 0x1df5, 0x1dff; 0x20d0, 0x20dc;
+     0x20e1, 0x20e1; 0x20e5, 0x20e6; 0x20e5, 0x20f0; 0x20eb, 0x20ef; 0x2cef, 0x2cf1;
+     0x2d7f, 0x2d7f; 0x2de0, 0x2dff; 0x302a, 0x302d; 0x3099, 0x309a; 0xa66f, 0xa66f;
+     0xa674, 0xa67b; 0xa674, 0xa67d; 0xa67c, 0xa67d; 0xa69e, 0xa69f; 0xa6f0, 0xa6f1;
+     0xa802, 0xa802; 0xa806, 0xa806; 0xa80b, 0xa80b; 0xa825, 0xa826; 0xa82c, 0xa82c;
+     0xa8c4, 0xa8c4; 0xa8c4, 0xa8c5; 0xa8c5, 0xa8c5; 0xa8e0, 0xa8f1; 0xa8ff, 0xa8ff;
+     0xa926, 0xa92a; 0xa926, 0xa92d; 0xa92b, 0xa92d; 0xa947, 0xa951; 0xa980, 0xa982;
+     0xa9b3, 0xa9b3; 0xa9b6, 0xa9b9; 0xa9bc, 0xa9bd; 0xa9e5, 0xa9e5; 0xaa29, 0xaa2e;
+     0xaa31, 0xaa32; 0xaa35, 0xaa36; 0xaa43, 0xaa43; 0xaa4c, 0xaa4c; 0xaa7c, 0xaa7c;
+     0xaab0, 0xaab0; 0xaab2, 0xaab4; 0xaab7, 0xaab8; 0xaabe, 0xaabe; 0xaabe, 0xaabf;
+     0xaabf, 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; 0x10d24, 0x10d27;
+     0x10eab, 0x10eac; 0x10efd, 0x10eff; 0x10f46, 0x10f50; 0x10f82, 0x10f85; 0x11001, 0x11001;
+     0x11038, 0x11045; 0x11038, 0x11046; 0x11046, 0x11046; 0x11070, 0x11070; 0x11073, 0x11074;
+     0x1107f, 0x1107f; 0x1107f, 0x11081; 0x11080, 0x11081; 0x110b3, 0x110b6; 0x110b9, 0x110b9;
+     0x110b9, 0x110ba; 0x110c2, 0x110c2; 0x11100, 0x11102; 0x11127, 0x1112b; 0x1112d, 0x11132;
+     0x1112d, 0x11134; 0x11133, 0x11134; 0x11173, 0x11173; 0x11180, 0x11181; 0x111b6, 0x111be;
+     0x111c9, 0x111cc; 0x111ca, 0x111cc; 0x111cf, 0x111cf; 0x1122f, 0x11231; 0x11234, 0x11234;
+     0x11236, 0x11236; 0x11236, 0x11237; 0x11237, 0x11237; 0x1123e, 0x1123e; 0x11241, 0x11241;
+     0x112df, 0x112df; 0x112e3, 0x112e8; 0x112e3, 0x112ea; 0x112e9, 0x112ea; 0x112ea, 0x112ea;
+     0x11300, 0x11301; 0x1133b, 0x1133c; 0x1133c, 0x1133c; 0x11340, 0x11340; 0x11366, 0x1136c;
+     0x11370, 0x11374; 0x11438, 0x1143f; 0x11442, 0x11442; 0x11442, 0x11444; 0x11443, 0x11444;
+     0x11446, 0x11446; 0x1145e, 0x1145e; 0x114b3, 0x114b8; 0x114ba, 0x114ba; 0x114bf, 0x114c0;
+     0x114c2, 0x114c2; 0x114c2, 0x114c3; 0x115b2, 0x115b5; 0x115bc, 0x115bd; 0x115bf, 0x115bf;
+     0x115bf, 0x115c0; 0x115dc, 0x115dd; 0x11633, 0x1163a; 0x1163d, 0x1163d; 0x1163f, 0x1163f;
+     0x1163f, 0x11640; 0x11640, 0x11640; 0x116ab, 0x116ab; 0x116ad, 0x116ad; 0x116b0, 0x116b5;
+     0x116b7, 0x116b7; 0x1171d, 0x1171f; 0x11722, 0x11725; 0x11727, 0x1172a; 0x11727, 0x1172b;
+     0x1172b, 0x1172b; 0x1182f, 0x11837; 0x11839, 0x11839; 0x11839, 0x1183a; 0x1193b, 0x1193c;
+     0x1193e, 0x1193e; 0x11943, 0x11943; 0x119d4, 0x119d7; 0x119da, 0x119db; 0x119e0, 0x119e0;
+     0x11a01, 0x11a0a; 0x11a33, 0x11a38; 0x11a34, 0x11a34; 0x11a35, 0x11a38; 0x11a3b, 0x11a3e;
+     0x11a47, 0x11a47; 0x11a51, 0x11a56; 0x11a59, 0x11a5b; 0x11a8a, 0x11a96; 0x11a98, 0x11a98;
+     0x11a98, 0x11a99; 0x11a99, 0x11a99; 0x11c30, 0x11c36; 0x11c38, 0x11c3d; 0x11c3f, 0x11c3f;
+     0x11c92, 0x11ca7; 0x11caa, 0x11cb0; 0x11cb2, 0x11cb3; 0x11cb5, 0x11cb6; 0x11d31, 0x11d36;
+     0x11d3a, 0x11d3a; 0x11d3c, 0x11d3d; 0x11d3f, 0x11d41; 0x11d3f, 0x11d45; 0x11d42, 0x11d42;
+     0x11d43, 0x11d43; 0x11d44, 0x11d45; 0x11d47, 0x11d47; 0x11d90, 0x11d91; 0x11d95, 0x11d95;
+     0x11d97, 0x11d97; 0x11ef3, 0x11ef4; 0x11f00, 0x11f01; 0x11f36, 0x11f3a; 0x11f40, 0x11f40;
+     0x11f42, 0x11f42; 0x13440, 0x13440; 0x13447, 0x13455; 0x16af0, 0x16af4; 0x16b30, 0x16b36;
+     0x16f4f, 0x16f4f; 0x16f8f, 0x16f92; 0x16fe4, 0x16fe4; 0x1bc9d, 0x1bc9e; 0x1bc9e, 0x1bc9e;
+     0x1cf00, 0x1cf2d; 0x1cf30, 0x1cf46; 0x1d167, 0x1d169; 0x1d17b, 0x1d182; 0x1d185, 0x1d18b;
+     0x1d1aa, 0x1d1ad; 0x1d242, 0x1d244; 0x1da00, 0x1da36; 0x1da3b, 0x1da6c; 0x1da75, 0x1da75;
+     0x1da84, 0x1da84; 0x1da9b, 0x1da9f; 0x1daa1, 0x1daaf; 0x1e000, 0x1e006; 0x1e008, 0x1e018;
+     0x1e01b, 0x1e021; 0x1e023, 0x1e024; 0x1e026, 0x1e02a; 0x1e08f, 0x1e08f; 0x1e130, 0x1e136;
+     0x1e2ae, 0x1e2ae; 0x1e2ec, 0x1e2ef; 0x1e4ec, 0x1e4ef; 0x1e8d0, 0x1e8d6; 0x1e944, 0x1e946;
+     0xe0100, 0xe01ef; 0x1e948, 0x1e94a; 0x1e947, 0x1e947; 0x1e944, 0x1e94a]
 
   let nd =
-    [
-      (0x30, 0x39);
-      (0x660, 0x669);
-      (0x6f0, 0x6f9);
-      (0x7c0, 0x7c9);
-      (0x966, 0x96f);
-      (0x9e6, 0x9ef);
-      (0xa66, 0xa6f);
-      (0xae6, 0xaef);
-      (0xb66, 0xb6f);
-      (0xbe6, 0xbef);
-      (0xc66, 0xc6f);
-      (0xce6, 0xcef);
-      (0xd66, 0xd6f);
-      (0xde6, 0xdef);
-      (0xe50, 0xe59);
-      (0xed0, 0xed9);
-      (0xf20, 0xf29);
-      (0x1040, 0x1049);
-      (0x1090, 0x1099);
-      (0x17e0, 0x17e9);
-      (0x1810, 0x1819);
-      (0x1946, 0x194f);
-      (0x19d0, 0x19d9);
-      (0x1a80, 0x1a89);
-      (0x1a90, 0x1a99);
-      (0x1b50, 0x1b59);
-      (0x1bb0, 0x1bb9);
-      (0x1c40, 0x1c49);
-      (0x1c50, 0x1c59);
-      (0xa620, 0xa629);
-      (0xa8d0, 0xa8d9);
-      (0xa900, 0xa909);
-      (0xa9d0, 0xa9d9);
-      (0xa9f0, 0xa9f9);
-      (0xaa50, 0xaa59);
-      (0xabf0, 0xabf9);
-      (0xff10, 0xff19);
-      (0x104a0, 0x104a9);
-      (0x10d30, 0x10d39);
-      (0x11066, 0x1106f);
-      (0x110f0, 0x110f9);
-      (0x11136, 0x1113f);
-      (0x111d0, 0x111d9);
-      (0x112f0, 0x112f9);
-      (0x11450, 0x11459);
-      (0x114d0, 0x114d9);
-      (0x11650, 0x11659);
-      (0x116c0, 0x116c9);
-      (0x11730, 0x11739);
-      (0x118e0, 0x118e9);
-      (0x11950, 0x11959);
-      (0x11c50, 0x11c59);
-      (0x11d50, 0x11d59);
-      (0x11da0, 0x11da9);
-      (0x16a60, 0x16a69);
-      (0x16ac0, 0x16ac9);
-      (0x16b50, 0x16b59);
-      (0x1d7ce, 0x1d7ff);
-      (0x1e140, 0x1e149);
-      (0x1e2f0, 0x1e2f9);
-      (0x1fbf0, 0x1fbf9);
-      (0x1e950, 0x1e959);
-    ]
+    [0x30, 0x39; 0x660, 0x669; 0x6f0, 0x6f9; 0x7c0, 0x7c9; 0x966, 0x96f;
+     0x9e6, 0x9ef; 0xa66, 0xa6f; 0xae6, 0xaef; 0xb66, 0xb6f; 0xbe6, 0xbef;
+     0xc66, 0xc6f; 0xce6, 0xcef; 0xd66, 0xd6f; 0xde6, 0xdef; 0xe50, 0xe59;
+     0xed0, 0xed9; 0xf20, 0xf29; 0x1040, 0x1049; 0x1090, 0x1099; 0x17e0, 0x17e9;
+     0x1810, 0x1819; 0x1946, 0x194f; 0x19d0, 0x19d9; 0x1a80, 0x1a89; 0x1a90, 0x1a99;
+     0x1b50, 0x1b59; 0x1bb0, 0x1bb9; 0x1c40, 0x1c49; 0x1c50, 0x1c59; 0xa620, 0xa629;
+     0xa8d0, 0xa8d9; 0xa900, 0xa909; 0xa9d0, 0xa9d9; 0xa9f0, 0xa9f9; 0xaa50, 0xaa59;
+     0xabf0, 0xabf9; 0xff10, 0xff19; 0x104a0, 0x104a9; 0x10d30, 0x10d39; 0x11066, 0x1106f;
+     0x110f0, 0x110f9; 0x11136, 0x1113f; 0x111d0, 0x111d9; 0x112f0, 0x112f9; 0x11450, 0x11459;
+     0x114d0, 0x114d9; 0x11650, 0x11659; 0x116c0, 0x116c9; 0x11730, 0x11739; 0x118e0, 0x118e9;
+     0x11950, 0x11959; 0x11c50, 0x11c59; 0x11d50, 0x11d59; 0x11da0, 0x11da9; 0x11f50, 0x11f59;
+     0x16a60, 0x16a69; 0x16ac0, 0x16ac9; 0x16b50, 0x16b59; 0x1d7ce, 0x1d7ff; 0x1e140, 0x1e149;
+     0x1fbf0, 0x1fbf9; 0x1e950, 0x1e959; 0x1e4f0, 0x1e4f9; 0x1e2f0, 0x1e2f9]
 
   let nl =
-    [
-      (0x16ee, 0x16f0);
-      (0x2160, 0x216f);
-      (0x2160, 0x217f);
-      (0x2160, 0x2182);
-      (0x2170, 0x217f);
-      (0x2185, 0x2188);
-      (0x3007, 0x3007);
-      (0x3021, 0x3029);
-      (0x3038, 0x303a);
-      (0xa6e6, 0xa6ef);
-      (0x12400, 0x1246e);
-      (0x103d1, 0x103d5);
-      (0x1034a, 0x1034a);
-      (0x10341, 0x10341);
-      (0x10140, 0x10174);
-    ]
+    [0x16ee, 0x16f0; 0x2160, 0x216f; 0x2160, 0x217f; 0x2160, 0x2182; 0x2170, 0x217f;
+     0x2185, 0x2188; 0x3007, 0x3007; 0x3021, 0x3029; 0x3038, 0x303a; 0xa6e6, 0xa6ef;
+     0x12400, 0x1246e; 0x103d1, 0x103d5; 0x1034a, 0x1034a; 0x10341, 0x10341; 0x10140, 0x10174]
 
   let no =
-    [
-      (0xb2, 0xb3);
-      (0xb9, 0xb9);
-      (0xbc, 0xbe);
-      (0x9f4, 0x9f9);
-      (0xb72, 0xb77);
-      (0xbf0, 0xbf2);
-      (0xc78, 0xc7e);
-      (0xd58, 0xd5e);
-      (0xd70, 0xd78);
-      (0xf2a, 0xf33);
-      (0x1369, 0x1371);
-      (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, 0x10a48);
-      (0x10a7d, 0x10a7e);
-      (0x10a9d, 0x10a9f);
-      (0x10aeb, 0x10aef);
-      (0x10b58, 0x10b5f);
-      (0x10b78, 0x10b7f);
-      (0x10ba9, 0x10baf);
-      (0x10cfa, 0x10cff);
-      (0x10e60, 0x10e7e);
-      (0x10f1d, 0x10f26);
-      (0x10f51, 0x10f54);
-      (0x10fc5, 0x10fcb);
-      (0x11052, 0x11065);
-      (0x111e1, 0x111f4);
-      (0x1173a, 0x1173b);
-      (0x118ea, 0x118f2);
-      (0x11c5a, 0x11c6c);
-      (0x11fc0, 0x11fd4);
-      (0x16b5b, 0x16b61);
-      (0x16e80, 0x16e96);
-      (0x1d2e0, 0x1d2f3);
-      (0x1d360, 0x1d378);
-      (0x1e8c7, 0x1e8cf);
-      (0x1ec71, 0x1ecab);
-      (0x1ecad, 0x1ecaf);
-      (0x1ecb1, 0x1ecb4);
-      (0x1ed01, 0x1ed2d);
-      (0x1f100, 0x1f10c);
-      (0x1ed2f, 0x1ed3d);
-    ]
+    [0xb2, 0xb3; 0xb9, 0xb9; 0xbc, 0xbe; 0x9f4, 0x9f9; 0xb72, 0xb77;
+     0xbf0, 0xbf2; 0xc78, 0xc7e; 0xd58, 0xd5e; 0xd70, 0xd78; 0xf2a, 0xf33;
+     0x1369, 0x1371; 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, 0x10a48; 0x10a7d, 0x10a7e;
+     0x10a9d, 0x10a9f; 0x10aeb, 0x10aef; 0x10b58, 0x10b5f; 0x10b78, 0x10b7f; 0x10ba9, 0x10baf;
+     0x10cfa, 0x10cff; 0x10e60, 0x10e7e; 0x10f1d, 0x10f26; 0x10f51, 0x10f54; 0x10fc5, 0x10fcb;
+     0x11052, 0x11065; 0x111e1, 0x111f4; 0x1173a, 0x1173b; 0x118ea, 0x118f2; 0x11c5a, 0x11c6c;
+     0x11fc0, 0x11fd4; 0x16b5b, 0x16b61; 0x16e80, 0x16e96; 0x1d2c0, 0x1d2d3; 0x1d2e0, 0x1d2f3;
+     0x1d360, 0x1d378; 0x1e8c7, 0x1e8cf; 0x1ec71, 0x1ecab; 0x1ecad, 0x1ecaf; 0x1ecb1, 0x1ecb4;
+     0x1f100, 0x1f10c; 0x1ed2f, 0x1ed3d; 0x1ed01, 0x1ed2d]
 
   let pc =
-    [
-      (0x5f, 0x5f);
-      (0x203f, 0x2040);
-      (0x2040, 0x2040);
-      (0x2054, 0x2054);
-      (0xfe33, 0xfe34);
-      (0xff3f, 0xff3f);
-      (0xfe4d, 0xfe4f);
-    ]
+    [0x5f, 0x5f; 0x203f, 0x2040; 0x2040, 0x2040; 0x2054, 0x2054; 0xfe33, 0xfe34;
+     0xff3f, 0xff3f; 0xfe4d, 0xfe4f]
 
   let pd =
-    [
-      (0x2d, 0x2d);
-      (0x58a, 0x58a);
-      (0x5be, 0x5be);
-      (0x1400, 0x1400);
-      (0x1806, 0x1806);
-      (0x2010, 0x2011);
-      (0x2010, 0x2015);
-      (0x2e17, 0x2e17);
-      (0x2e1a, 0x2e1a);
-      (0x2e3a, 0x2e3b);
-      (0x2e40, 0x2e40);
-      (0x2e5d, 0x2e5d);
-      (0x301c, 0x301c);
-      (0x3030, 0x3030);
-      (0x30a0, 0x30a0);
-      (0x10ead, 0x10ead);
-      (0xff0d, 0xff0d);
-      (0xfe63, 0xfe63);
-      (0xfe58, 0xfe58);
-      (0xfe31, 0xfe32);
-    ]
+    [0x2d, 0x2d; 0x58a, 0x58a; 0x5be, 0x5be; 0x1400, 0x1400; 0x1806, 0x1806;
+     0x2010, 0x2011; 0x2010, 0x2015; 0x2e17, 0x2e17; 0x2e1a, 0x2e1a; 0x2e3a, 0x2e3b;
+     0x2e40, 0x2e40; 0x2e5d, 0x2e5d; 0x301c, 0x301c; 0x3030, 0x3030; 0x30a0, 0x30a0;
+     0x10ead, 0x10ead; 0xff0d, 0xff0d; 0xfe63, 0xfe63; 0xfe58, 0xfe58; 0xfe31, 0xfe32]
 
   let pe =
-    [
-      (0x29, 0x29);
-      (0x5d, 0x5d);
-      (0x7d, 0x7d);
-      (0xf3b, 0xf3b);
-      (0xf3d, 0xf3d);
-      (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);
-      (0x2e56, 0x2e56);
-      (0x2e58, 0x2e58);
-      (0x2e5a, 0x2e5a);
-      (0x2e5c, 0x2e5c);
-      (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);
-    ]
+    [0x29, 0x29; 0x5d, 0x5d; 0x7d, 0x7d; 0xf3b, 0xf3b; 0xf3d, 0xf3d;
+     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; 0x2e56, 0x2e56; 0x2e58, 0x2e58;
+     0x2e5a, 0x2e5a; 0x2e5c, 0x2e5c; 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]
 
   let pf =
-    [
-      (0xbb, 0xbb);
-      (0x2019, 0x2019);
-      (0x201d, 0x201d);
-      (0x203a, 0x203a);
-      (0x2e03, 0x2e03);
-      (0x2e21, 0x2e21);
-      (0x2e1d, 0x2e1d);
-      (0x2e0d, 0x2e0d);
-      (0x2e0a, 0x2e0a);
-      (0x2e05, 0x2e05);
-    ]
+    [0xbb, 0xbb; 0x2019, 0x2019; 0x201d, 0x201d; 0x203a, 0x203a; 0x2e03, 0x2e03;
+     0x2e21, 0x2e21; 0x2e1d, 0x2e1d; 0x2e0d, 0x2e0d; 0x2e0a, 0x2e0a; 0x2e05, 0x2e05]
 
   let pi =
-    [
-      (0xab, 0xab);
-      (0x2018, 0x2018);
-      (0x201b, 0x201c);
-      (0x201f, 0x201f);
-      (0x2039, 0x2039);
-      (0x2e02, 0x2e02);
-      (0x2e04, 0x2e04);
-      (0x2e09, 0x2e09);
-      (0x2e0c, 0x2e0c);
-      (0x2e1c, 0x2e1c);
-      (0x2e20, 0x2e20);
-    ]
+    [0xab, 0xab; 0x2018, 0x2018; 0x201b, 0x201c; 0x201f, 0x201f; 0x2039, 0x2039;
+     0x2e02, 0x2e02; 0x2e04, 0x2e04; 0x2e09, 0x2e09; 0x2e0c, 0x2e0c; 0x2e1c, 0x2e1c;
+     0x2e20, 0x2e20]
 
   let po =
-    [
-      (0x21, 0x21);
-      (0x21, 0x23);
-      (0x22, 0x22);
-      (0x25, 0x27);
-      (0x27, 0x27);
-      (0x2a, 0x2a);
-      (0x2c, 0x2c);
-      (0x2e, 0x2e);
-      (0x2e, 0x2f);
-      (0x3a, 0x3a);
-      (0x3a, 0x3b);
-      (0x3f, 0x3f);
-      (0x3f, 0x40);
-      (0x5c, 0x5c);
-      (0xa1, 0xa1);
-      (0xa7, 0xa7);
-      (0xb6, 0xb6);
-      (0xb6, 0xb7);
-      (0xb7, 0xb7);
-      (0xbf, 0xbf);
-      (0x37e, 0x37e);
-      (0x387, 0x387);
-      (0x55a, 0x55f);
-      (0x55f, 0x55f);
-      (0x589, 0x589);
-      (0x5c0, 0x5c0);
-      (0x5c3, 0x5c3);
-      (0x5c6, 0x5c6);
-      (0x5f3, 0x5f4);
-      (0x5f4, 0x5f4);
-      (0x609, 0x60a);
-      (0x60c, 0x60c);
-      (0x60c, 0x60d);
-      (0x61b, 0x61b);
-      (0x61d, 0x61f);
-      (0x66a, 0x66d);
-      (0x6d4, 0x6d4);
-      (0x700, 0x702);
-      (0x700, 0x70a);
-      (0x700, 0x70d);
-      (0x70c, 0x70c);
-      (0x7f7, 0x7f9);
-      (0x7f8, 0x7f9);
-      (0x7f9, 0x7f9);
-      (0x830, 0x83e);
-      (0x837, 0x837);
-      (0x839, 0x839);
-      (0x83d, 0x83e);
-      (0x85e, 0x85e);
-      (0x964, 0x965);
-      (0x970, 0x970);
-      (0x9fd, 0x9fd);
-      (0xa76, 0xa76);
-      (0xaf0, 0xaf0);
-      (0xc77, 0xc77);
-      (0xc84, 0xc84);
-      (0xdf4, 0xdf4);
-      (0xe4f, 0xe4f);
-      (0xe5a, 0xe5b);
-      (0xf04, 0xf12);
-      (0xf08, 0xf08);
-      (0xf0d, 0xf12);
-      (0xf14, 0xf14);
-      (0xf85, 0xf85);
-      (0xfd0, 0xfd4);
-      (0xfd9, 0xfda);
-      (0x104a, 0x104b);
-      (0x104a, 0x104f);
-      (0x10fb, 0x10fb);
-      (0x1360, 0x1368);
-      (0x1361, 0x1368);
-      (0x1362, 0x1362);
-      (0x1367, 0x1368);
-      (0x166e, 0x166e);
-      (0x16eb, 0x16ed);
-      (0x1735, 0x1736);
-      (0x17d4, 0x17d6);
-      (0x17d8, 0x17da);
-      (0x17da, 0x17da);
-      (0x1800, 0x1805);
-      (0x1802, 0x1805);
-      (0x1803, 0x1803);
-      (0x1807, 0x180a);
-      (0x1808, 0x1809);
-      (0x1809, 0x1809);
-      (0x180a, 0x180a);
-      (0x1944, 0x1945);
-      (0x1a1e, 0x1a1f);
-      (0x1aa0, 0x1aa6);
-      (0x1aa8, 0x1aab);
-      (0x1aa8, 0x1aad);
-      (0x1b5a, 0x1b5b);
-      (0x1b5a, 0x1b60);
-      (0x1b5d, 0x1b5f);
-      (0x1b5e, 0x1b5f);
-      (0x1b7d, 0x1b7e);
-      (0x1bfc, 0x1bff);
-      (0x1c3b, 0x1c3c);
-      (0x1c3b, 0x1c3f);
-      (0x1c7e, 0x1c7f);
-      (0x1cc0, 0x1cc7);
-      (0x1cd3, 0x1cd3);
-      (0x2016, 0x2016);
-      (0x2016, 0x2017);
-      (0x2020, 0x2027);
-      (0x2024, 0x2024);
-      (0x2027, 0x2027);
-      (0x2030, 0x2038);
-      (0x2032, 0x2034);
-      (0x203b, 0x203e);
-      (0x203c, 0x203d);
-      (0x2041, 0x2043);
-      (0x2047, 0x2049);
-      (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);
-      (0x2e2e, 0x2e2e);
-      (0x2e30, 0x2e39);
-      (0x2e3c, 0x2e3c);
-      (0x2e3c, 0x2e3f);
-      (0x2e41, 0x2e41);
-      (0x2e43, 0x2e4f);
-      (0x2e4c, 0x2e4c);
-      (0x2e4e, 0x2e4f);
-      (0x2e52, 0x2e54);
-      (0x2e53, 0x2e54);
-      (0x3001, 0x3002);
-      (0x3001, 0x3003);
-      (0x3002, 0x3002);
-      (0x303d, 0x303d);
-      (0x30fb, 0x30fb);
-      (0xa4fe, 0xa4ff);
-      (0xa4ff, 0xa4ff);
-      (0xa60d, 0xa60f);
-      (0xa60e, 0xa60f);
-      (0xa673, 0xa673);
-      (0xa67e, 0xa67e);
-      (0xa6f2, 0xa6f7);
-      (0xa6f3, 0xa6f3);
-      (0xa6f3, 0xa6f7);
-      (0xa6f7, 0xa6f7);
-      (0xa874, 0xa877);
-      (0xa876, 0xa877);
-      (0xa8ce, 0xa8cf);
-      (0xa8f8, 0xa8fa);
-      (0xa8fc, 0xa8fc);
-      (0xa92e, 0xa92e);
-      (0xa92e, 0xa92f);
-      (0xa92f, 0xa92f);
-      (0xa95f, 0xa95f);
-      (0xa9c1, 0xa9cd);
-      (0xa9c7, 0xa9c9);
-      (0xa9c8, 0xa9c9);
-      (0xa9de, 0xa9df);
-      (0xaa5c, 0xaa5f);
-      (0xaa5d, 0xaa5f);
-      (0xaade, 0xaadf);
-      (0xaadf, 0xaadf);
-      (0xaaf0, 0xaaf1);
-      (0xabeb, 0xabeb);
-      (0xfe10, 0xfe16);
-      (0xfe13, 0xfe13);
-      (0xfe19, 0xfe19);
-      (0xfe30, 0xfe30);
-      (0xfe45, 0xfe46);
-      (0xfe49, 0xfe4c);
-      (0xfe50, 0xfe52);
-      (0xfe52, 0xfe52);
-      (0xfe54, 0xfe57);
-      (0xfe55, 0xfe55);
-      (0xfe56, 0xfe57);
-      (0xfe5f, 0xfe61);
-      (0xfe61, 0xfe61);
-      (0xfe68, 0xfe68);
-      (0xfe6a, 0xfe6b);
-      (0xff01, 0xff01);
-      (0xff01, 0xff03);
-      (0xff02, 0xff02);
-      (0xff05, 0xff07);
-      (0xff07, 0xff07);
-      (0xff0a, 0xff0a);
-      (0xff0c, 0xff0c);
-      (0xff0e, 0xff0e);
-      (0xff0e, 0xff0f);
-      (0xff1a, 0xff1a);
-      (0xff1a, 0xff1b);
-      (0xff1f, 0xff1f);
-      (0xff1f, 0xff20);
-      (0xff3c, 0xff3c);
-      (0xff61, 0xff61);
-      (0xff64, 0xff64);
-      (0xff64, 0xff65);
-      (0xff65, 0xff65);
-      (0x10100, 0x10102);
-      (0x1039f, 0x1039f);
-      (0x103d0, 0x103d0);
-      (0x1056f, 0x1056f);
-      (0x10857, 0x10857);
-      (0x1091f, 0x1091f);
-      (0x1093f, 0x1093f);
-      (0x10a50, 0x10a58);
-      (0x10a56, 0x10a57);
-      (0x10a7f, 0x10a7f);
-      (0x10af0, 0x10af5);
-      (0x10af0, 0x10af6);
-      (0x10b39, 0x10b3f);
-      (0x10b3a, 0x10b3f);
-      (0x10b99, 0x10b9c);
-      (0x10f55, 0x10f59);
-      (0x10f86, 0x10f89);
-      (0x11047, 0x11048);
-      (0x11047, 0x1104d);
-      (0x110bb, 0x110bc);
-      (0x110be, 0x110c1);
-      (0x11140, 0x11143);
-      (0x11141, 0x11143);
-      (0x11174, 0x11175);
-      (0x111c5, 0x111c6);
-      (0x111c5, 0x111c8);
-      (0x111cd, 0x111cd);
-      (0x111db, 0x111db);
-      (0x111dd, 0x111df);
-      (0x111de, 0x111df);
-      (0x11238, 0x11239);
-      (0x11238, 0x1123c);
-      (0x11238, 0x1123d);
-      (0x1123b, 0x1123c);
-      (0x112a9, 0x112a9);
-      (0x1144b, 0x1144c);
-      (0x1144b, 0x1144d);
-      (0x1144b, 0x1144f);
-      (0x1145a, 0x1145b);
-      (0x1145d, 0x1145d);
-      (0x114c6, 0x114c6);
-      (0x115c1, 0x115d7);
-      (0x115c2, 0x115c3);
-      (0x115c2, 0x115c5);
-      (0x115c6, 0x115c8);
-      (0x115c9, 0x115d7);
-      (0x11641, 0x11642);
-      (0x11641, 0x11643);
-      (0x11660, 0x1166c);
-      (0x116b9, 0x116b9);
-      (0x1173c, 0x1173e);
-      (0x1183b, 0x1183b);
-      (0x11944, 0x11944);
-      (0x11944, 0x11946);
-      (0x11946, 0x11946);
-      (0x119e2, 0x119e2);
-      (0x11a3f, 0x11a46);
-      (0x11a42, 0x11a43);
-      (0x11a9a, 0x11a9c);
-      (0x11a9b, 0x11a9c);
-      (0x11a9e, 0x11aa2);
-      (0x11aa1, 0x11aa2);
-      (0x11c41, 0x11c42);
-      (0x11c41, 0x11c43);
-      (0x11c41, 0x11c45);
-      (0x11c70, 0x11c71);
-      (0x11c71, 0x11c71);
-      (0x11ef7, 0x11ef8);
-      (0x11fff, 0x11fff);
-      (0x12470, 0x12474);
-      (0x12ff1, 0x12ff2);
-      (0x16a6e, 0x16a6f);
-      (0x16af5, 0x16af5);
-      (0x16b37, 0x16b38);
-      (0x16b37, 0x16b39);
-      (0x16b37, 0x16b3b);
-      (0x16b44, 0x16b44);
-      (0x16e97, 0x16e98);
-      (0x16e97, 0x16e9a);
-      (0x16e98, 0x16e98);
-      (0x16fe2, 0x16fe2);
-      (0x1e95e, 0x1e95f);
-      (0x1da88, 0x1da88);
-      (0x1da87, 0x1da8b);
-      (0x1da87, 0x1da8a);
-      (0x1bc9f, 0x1bc9f);
-    ]
+    [0x21, 0x21; 0x21, 0x23; 0x22, 0x22; 0x25, 0x27; 0x27, 0x27;
+     0x2a, 0x2a; 0x2c, 0x2c; 0x2e, 0x2e; 0x2e, 0x2f; 0x3a, 0x3a;
+     0x3a, 0x3b; 0x3f, 0x3f; 0x3f, 0x40; 0x5c, 0x5c; 0xa1, 0xa1;
+     0xa7, 0xa7; 0xb6, 0xb6; 0xb6, 0xb7; 0xb7, 0xb7; 0xbf, 0xbf;
+     0x37e, 0x37e; 0x387, 0x387; 0x55a, 0x55f; 0x55f, 0x55f; 0x589, 0x589;
+     0x5c0, 0x5c0; 0x5c3, 0x5c3; 0x5c6, 0x5c6; 0x5f3, 0x5f4; 0x5f4, 0x5f4;
+     0x609, 0x60a; 0x60c, 0x60c; 0x60c, 0x60d; 0x61b, 0x61b; 0x61d, 0x61f;
+     0x66a, 0x66d; 0x6d4, 0x6d4; 0x700, 0x702; 0x700, 0x70a; 0x700, 0x70d;
+     0x70c, 0x70c; 0x7f7, 0x7f9; 0x7f8, 0x7f9; 0x7f9, 0x7f9; 0x830, 0x83e;
+     0x837, 0x837; 0x839, 0x839; 0x83d, 0x83e; 0x85e, 0x85e; 0x964, 0x965;
+     0x970, 0x970; 0x9fd, 0x9fd; 0xa76, 0xa76; 0xaf0, 0xaf0; 0xc77, 0xc77;
+     0xc84, 0xc84; 0xdf4, 0xdf4; 0xe4f, 0xe4f; 0xe5a, 0xe5b; 0xf04, 0xf12;
+     0xf08, 0xf08; 0xf0d, 0xf12; 0xf14, 0xf14; 0xf85, 0xf85; 0xfd0, 0xfd4;
+     0xfd9, 0xfda; 0x104a, 0x104b; 0x104a, 0x104f; 0x10fb, 0x10fb; 0x1360, 0x1368;
+     0x1361, 0x1368; 0x1362, 0x1362; 0x1367, 0x1368; 0x166e, 0x166e; 0x16eb, 0x16ed;
+     0x1735, 0x1736; 0x17d4, 0x17d6; 0x17d8, 0x17da; 0x17da, 0x17da; 0x1800, 0x1805;
+     0x1802, 0x1805; 0x1803, 0x1803; 0x1807, 0x180a; 0x1808, 0x1809; 0x1809, 0x1809;
+     0x180a, 0x180a; 0x1944, 0x1945; 0x1a1e, 0x1a1f; 0x1aa0, 0x1aa6; 0x1aa8, 0x1aab;
+     0x1aa8, 0x1aad; 0x1b5a, 0x1b5b; 0x1b5a, 0x1b60; 0x1b5d, 0x1b5f; 0x1b5e, 0x1b5f;
+     0x1b7d, 0x1b7e; 0x1bfc, 0x1bff; 0x1c3b, 0x1c3c; 0x1c3b, 0x1c3f; 0x1c7e, 0x1c7f;
+     0x1cc0, 0x1cc7; 0x1cd3, 0x1cd3; 0x2016, 0x2016; 0x2016, 0x2017; 0x2020, 0x2027;
+     0x2024, 0x2024; 0x2027, 0x2027; 0x2030, 0x2038; 0x2032, 0x2034; 0x203b, 0x203e;
+     0x203c, 0x203d; 0x2041, 0x2043; 0x2047, 0x2049; 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; 0x2e2e, 0x2e2e; 0x2e30, 0x2e39; 0x2e3c, 0x2e3c;
+     0x2e3c, 0x2e3f; 0x2e41, 0x2e41; 0x2e43, 0x2e4f; 0x2e4c, 0x2e4c; 0x2e4e, 0x2e4f;
+     0x2e52, 0x2e54; 0x2e53, 0x2e54; 0x3001, 0x3002; 0x3001, 0x3003; 0x3002, 0x3002;
+     0x303d, 0x303d; 0x30fb, 0x30fb; 0xa4fe, 0xa4ff; 0xa4ff, 0xa4ff; 0xa60d, 0xa60f;
+     0xa60e, 0xa60f; 0xa673, 0xa673; 0xa67e, 0xa67e; 0xa6f2, 0xa6f7; 0xa6f3, 0xa6f3;
+     0xa6f3, 0xa6f7; 0xa6f7, 0xa6f7; 0xa874, 0xa877; 0xa876, 0xa877; 0xa8ce, 0xa8cf;
+     0xa8f8, 0xa8fa; 0xa8fc, 0xa8fc; 0xa92e, 0xa92e; 0xa92e, 0xa92f; 0xa92f, 0xa92f;
+     0xa95f, 0xa95f; 0xa9c1, 0xa9cd; 0xa9c7, 0xa9c9; 0xa9c8, 0xa9c9; 0xa9de, 0xa9df;
+     0xaa5c, 0xaa5f; 0xaa5d, 0xaa5f; 0xaade, 0xaadf; 0xaadf, 0xaadf; 0xaaf0, 0xaaf1;
+     0xabeb, 0xabeb; 0xfe10, 0xfe16; 0xfe13, 0xfe13; 0xfe19, 0xfe19; 0xfe30, 0xfe30;
+     0xfe45, 0xfe46; 0xfe49, 0xfe4c; 0xfe50, 0xfe52; 0xfe52, 0xfe52; 0xfe54, 0xfe57;
+     0xfe55, 0xfe55; 0xfe56, 0xfe57; 0xfe5f, 0xfe61; 0xfe61, 0xfe61; 0xfe68, 0xfe68;
+     0xfe6a, 0xfe6b; 0xff01, 0xff01; 0xff01, 0xff03; 0xff02, 0xff02; 0xff05, 0xff07;
+     0xff07, 0xff07; 0xff0a, 0xff0a; 0xff0c, 0xff0c; 0xff0e, 0xff0e; 0xff0e, 0xff0f;
+     0xff1a, 0xff1a; 0xff1a, 0xff1b; 0xff1f, 0xff1f; 0xff1f, 0xff20; 0xff3c, 0xff3c;
+     0xff61, 0xff61; 0xff64, 0xff64; 0xff64, 0xff65; 0xff65, 0xff65; 0x10100, 0x10102;
+     0x1039f, 0x1039f; 0x103d0, 0x103d0; 0x1056f, 0x1056f; 0x10857, 0x10857; 0x1091f, 0x1091f;
+     0x1093f, 0x1093f; 0x10a50, 0x10a58; 0x10a56, 0x10a57; 0x10a7f, 0x10a7f; 0x10af0, 0x10af5;
+     0x10af0, 0x10af6; 0x10b39, 0x10b3f; 0x10b3a, 0x10b3f; 0x10b99, 0x10b9c; 0x10f55, 0x10f59;
+     0x10f86, 0x10f89; 0x11047, 0x11048; 0x11047, 0x1104d; 0x110bb, 0x110bc; 0x110be, 0x110c1;
+     0x11140, 0x11143; 0x11141, 0x11143; 0x11174, 0x11175; 0x111c5, 0x111c6; 0x111c5, 0x111c8;
+     0x111cd, 0x111cd; 0x111db, 0x111db; 0x111dd, 0x111df; 0x111de, 0x111df; 0x11238, 0x11239;
+     0x11238, 0x1123c; 0x11238, 0x1123d; 0x1123b, 0x1123c; 0x112a9, 0x112a9; 0x1144b, 0x1144c;
+     0x1144b, 0x1144d; 0x1144b, 0x1144f; 0x1145a, 0x1145b; 0x1145d, 0x1145d; 0x114c6, 0x114c6;
+     0x115c1, 0x115d7; 0x115c2, 0x115c3; 0x115c2, 0x115c5; 0x115c6, 0x115c8; 0x115c9, 0x115d7;
+     0x11641, 0x11642; 0x11641, 0x11643; 0x11660, 0x1166c; 0x116b9, 0x116b9; 0x1173c, 0x1173e;
+     0x1183b, 0x1183b; 0x11944, 0x11944; 0x11944, 0x11946; 0x11946, 0x11946; 0x119e2, 0x119e2;
+     0x11a3f, 0x11a46; 0x11a42, 0x11a43; 0x11a9a, 0x11a9c; 0x11a9b, 0x11a9c; 0x11a9e, 0x11aa2;
+     0x11aa1, 0x11aa2; 0x11b00, 0x11b09; 0x11c41, 0x11c42; 0x11c41, 0x11c43; 0x11c41, 0x11c45;
+     0x11c70, 0x11c71; 0x11c71, 0x11c71; 0x11ef7, 0x11ef8; 0x11f43, 0x11f44; 0x11f43, 0x11f4f;
+     0x11fff, 0x11fff; 0x12470, 0x12474; 0x12ff1, 0x12ff2; 0x16a6e, 0x16a6f; 0x16af5, 0x16af5;
+     0x16b37, 0x16b38; 0x16b37, 0x16b39; 0x16b37, 0x16b3b; 0x16b44, 0x16b44; 0x16e97, 0x16e98;
+     0x16e97, 0x16e9a; 0x16e98, 0x16e98; 0x16fe2, 0x16fe2; 0x1bc9f, 0x1bc9f; 0x1da87, 0x1da8a;
+     0x1e95e, 0x1e95f; 0x1da88, 0x1da88; 0x1da87, 0x1da8b]
 
   let ps =
-    [
-      (0x28, 0x28);
-      (0x5b, 0x5b);
-      (0x7b, 0x7b);
-      (0xf3a, 0xf3a);
-      (0xf3c, 0xf3c);
-      (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);
-      (0x2e55, 0x2e55);
-      (0x2e57, 0x2e57);
-      (0x2e59, 0x2e59);
-      (0x2e5b, 0x2e5b);
-      (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);
-      (0xff62, 0xff62);
-      (0xff5f, 0xff5f);
-      (0xff5b, 0xff5b);
-      (0xff3b, 0xff3b);
-    ]
+    [0x28, 0x28; 0x5b, 0x5b; 0x7b, 0x7b; 0xf3a, 0xf3a; 0xf3c, 0xf3c;
+     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; 0x2e55, 0x2e55; 0x2e57, 0x2e57; 0x2e59, 0x2e59; 0x2e5b, 0x2e5b;
+     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;
+     0xff62, 0xff62; 0xff5f, 0xff5f; 0xff5b, 0xff5b; 0xff3b, 0xff3b]
 
   let sc =
-    [
-      (0x24, 0x24);
-      (0xa2, 0xa5);
-      (0x58f, 0x58f);
-      (0x60b, 0x60b);
-      (0x7fe, 0x7ff);
-      (0x9f2, 0x9f3);
-      (0x9fb, 0x9fb);
-      (0xaf1, 0xaf1);
-      (0xbf9, 0xbf9);
-      (0xe3f, 0xe3f);
-      (0x17db, 0x17db);
-      (0x20a0, 0x20c0);
-      (0xa838, 0xa838);
-      (0xfdfc, 0xfdfc);
-      (0xfe69, 0xfe69);
-      (0xff04, 0xff04);
-      (0xffe0, 0xffe1);
-      (0xffe5, 0xffe6);
-      (0x11fdd, 0x11fe0);
-      (0x1e2ff, 0x1e2ff);
-      (0x1ecb0, 0x1ecb0);
-    ]
+    [0x24, 0x24; 0xa2, 0xa5; 0x58f, 0x58f; 0x60b, 0x60b; 0x7fe, 0x7ff;
+     0x9f2, 0x9f3; 0x9fb, 0x9fb; 0xaf1, 0xaf1; 0xbf9, 0xbf9; 0xe3f, 0xe3f;
+     0x17db, 0x17db; 0x20a0, 0x20c0; 0xa838, 0xa838; 0xfdfc, 0xfdfc; 0xfe69, 0xfe69;
+     0xff04, 0xff04; 0xffe0, 0xffe1; 0xffe5, 0xffe6; 0x11fdd, 0x11fe0; 0x1e2ff, 0x1e2ff;
+     0x1ecb0, 0x1ecb0]
 
   let sk =
-    [
-      (0x5e, 0x5e);
-      (0x60, 0x60);
-      (0xa8, 0xa8);
-      (0xaf, 0xaf);
-      (0xb4, 0xb4);
-      (0xb8, 0xb8);
-      (0x2c2, 0x2c5);
-      (0x2d2, 0x2df);
-      (0x2e5, 0x2eb);
-      (0x2ed, 0x2ed);
-      (0x2ef, 0x2ff);
-      (0x375, 0x375);
-      (0x384, 0x385);
-      (0x888, 0x888);
-      (0x1fbd, 0x1fbd);
-      (0x1fbf, 0x1fc1);
-      (0x1fcd, 0x1fcf);
-      (0x1fdd, 0x1fdf);
-      (0x1fed, 0x1fef);
-      (0x1ffd, 0x1ffe);
-      (0x309b, 0x309c);
-      (0xa700, 0xa716);
-      (0xa720, 0xa721);
-      (0xa789, 0xa78a);
-      (0xab5b, 0xab5b);
-      (0xab6a, 0xab6b);
-      (0xfbb2, 0xfbc2);
-      (0xff3e, 0xff3e);
-      (0xff40, 0xff40);
-      (0xffe3, 0xffe3);
-      (0x1f3fb, 0x1f3ff);
-    ]
+    [0x5e, 0x5e; 0x60, 0x60; 0xa8, 0xa8; 0xaf, 0xaf; 0xb4, 0xb4;
+     0xb8, 0xb8; 0x2c2, 0x2c5; 0x2d2, 0x2df; 0x2e5, 0x2eb; 0x2ed, 0x2ed;
+     0x2ef, 0x2ff; 0x375, 0x375; 0x384, 0x385; 0x888, 0x888; 0x1fbd, 0x1fbd;
+     0x1fbf, 0x1fc1; 0x1fcd, 0x1fcf; 0x1fdd, 0x1fdf; 0x1fed, 0x1fef; 0x1ffd, 0x1ffe;
+     0x309b, 0x309c; 0xa700, 0xa716; 0xa720, 0xa721; 0xa789, 0xa78a; 0xab5b, 0xab5b;
+     0xab6a, 0xab6b; 0xfbb2, 0xfbc2; 0xff3e, 0xff3e; 0xff40, 0xff40; 0xffe3, 0xffe3;
+     0x1f3fb, 0x1f3ff]
 
   let sm =
-    [
-      (0x2b, 0x2b);
-      (0x3c, 0x3e);
-      (0x7c, 0x7c);
-      (0x7e, 0x7e);
-      (0xac, 0xac);
-      (0xb1, 0xb1);
-      (0xd7, 0xd7);
-      (0xf7, 0xf7);
-      (0x3f6, 0x3f6);
-      (0x606, 0x608);
-      (0x2044, 0x2044);
-      (0x2052, 0x2052);
-      (0x207a, 0x207c);
-      (0x207b, 0x207b);
-      (0x208a, 0x208c);
-      (0x208b, 0x208b);
-      (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);
-      (0x2212, 0x2212);
-      (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);
-      (0x1eef0, 0x1eef1);
-      (0x1d7c3, 0x1d7c3);
-    ]
+    [0x2b, 0x2b; 0x3c, 0x3e; 0x7c, 0x7c; 0x7e, 0x7e; 0xac, 0xac;
+     0xb1, 0xb1; 0xd7, 0xd7; 0xf7, 0xf7; 0x3f6, 0x3f6; 0x606, 0x608;
+     0x2044, 0x2044; 0x2052, 0x2052; 0x207a, 0x207c; 0x207b, 0x207b; 0x208a, 0x208c;
+     0x208b, 0x208b; 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; 0x2212, 0x2212;
+     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;
+     0x1eef0, 0x1eef1; 0x1d7c3, 0x1d7c3]
 
   let so =
-    [
-      (0xa6, 0xa6);
-      (0xa9, 0xa9);
-      (0xae, 0xae);
-      (0xb0, 0xb0);
-      (0x482, 0x482);
-      (0x58d, 0x58e);
-      (0x60e, 0x60f);
-      (0x6de, 0x6de);
-      (0x6e9, 0x6e9);
-      (0x6fd, 0x6fe);
-      (0x7f6, 0x7f6);
-      (0x9fa, 0x9fa);
-      (0xb70, 0xb70);
-      (0xbf3, 0xbf8);
-      (0xbfa, 0xbfa);
-      (0xc7f, 0xc7f);
-      (0xd4f, 0xd4f);
-      (0xd79, 0xd79);
-      (0xf01, 0xf03);
-      (0xf13, 0xf13);
-      (0xf15, 0xf17);
-      (0xf1a, 0xf1f);
-      (0xf34, 0xf34);
-      (0xf36, 0xf36);
-      (0xf38, 0xf38);
-      (0xfbe, 0xfc5);
-      (0xfc7, 0xfcc);
-      (0xfce, 0xfcf);
-      (0xfd5, 0xfd8);
-      (0x109e, 0x109f);
-      (0x1390, 0x1399);
-      (0x166d, 0x166d);
-      (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, 0x21a7);
-      (0x21a7, 0x21ad);
-      (0x21a9, 0x21ad);
-      (0x21af, 0x21cd);
-      (0x21b0, 0x21b1);
-      (0x21b6, 0x21b7);
-      (0x21bc, 0x21cd);
-      (0x21d0, 0x21d1);
-      (0x21d3, 0x21d3);
-      (0x21d5, 0x21db);
-      (0x21d5, 0x21f3);
-      (0x21dd, 0x21dd);
-      (0x21e4, 0x21e5);
-      (0x2300, 0x2307);
-      (0x230c, 0x231f);
-      (0x2322, 0x2328);
-      (0x232b, 0x237b);
-      (0x237d, 0x239a);
-      (0x23b4, 0x23b5);
-      (0x23b4, 0x23db);
-      (0x23b7, 0x23b7);
-      (0x23d0, 0x23d0);
-      (0x23e2, 0x23e2);
-      (0x23e2, 0x2426);
-      (0x2440, 0x244a);
-      (0x249c, 0x24e9);
-      (0x24b6, 0x24cf);
-      (0x24b6, 0x24e9);
-      (0x24d0, 0x24e9);
-      (0x2500, 0x25b6);
-      (0x25a0, 0x25a1);
-      (0x25ae, 0x25b6);
-      (0x25b8, 0x25c0);
-      (0x25bc, 0x25c0);
-      (0x25c2, 0x25f7);
-      (0x25c6, 0x25c7);
-      (0x25ca, 0x25cb);
-      (0x25cf, 0x25d3);
-      (0x25e2, 0x25e2);
-      (0x25e4, 0x25e4);
-      (0x25e7, 0x25ec);
-      (0x2600, 0x266e);
-      (0x2605, 0x2606);
-      (0x2640, 0x2640);
-      (0x2642, 0x2642);
-      (0x2660, 0x2663);
-      (0x266d, 0x266e);
-      (0x2670, 0x2767);
-      (0x2794, 0x27bf);
-      (0x2800, 0x28ff);
-      (0x2b00, 0x2b2f);
-      (0x2b45, 0x2b46);
-      (0x2b4d, 0x2b73);
-      (0x2b76, 0x2b95);
-      (0x2b97, 0x2bff);
-      (0x2ce5, 0x2cea);
-      (0x2e50, 0x2e51);
-      (0x2e80, 0x2e99);
-      (0x2e9b, 0x2ef3);
-      (0x2f00, 0x2fd5);
-      (0x2ff0, 0x2ff1);
-      (0x2ff0, 0x2ffb);
-      (0x2ff2, 0x2ff3);
-      (0x2ff4, 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, 0x33ff);
-      (0x4dc0, 0x4dff);
-      (0xa490, 0xa4c6);
-      (0xa828, 0xa82b);
-      (0xa836, 0xa837);
-      (0xa839, 0xa839);
-      (0xaa77, 0xaa79);
-      (0xfd40, 0xfd4f);
-      (0xfdcf, 0xfdcf);
-      (0xfdfd, 0xfdff);
-      (0xffe4, 0xffe4);
-      (0xffe8, 0xffe8);
-      (0xffed, 0xffee);
-      (0xfffc, 0xfffd);
-      (0x10137, 0x1013f);
-      (0x10179, 0x10189);
-      (0x1018c, 0x1018e);
-      (0x10190, 0x1019c);
-      (0x101a0, 0x101a0);
-      (0x101d0, 0x101fc);
-      (0x10877, 0x10878);
-      (0x10ac8, 0x10ac8);
-      (0x1173f, 0x1173f);
-      (0x11fd5, 0x11fdc);
-      (0x11fe1, 0x11ff1);
-      (0x16b3c, 0x16b3f);
-      (0x16b45, 0x16b45);
-      (0x1bc9c, 0x1bc9c);
-      (0x1cf50, 0x1cfc3);
-      (0x1d000, 0x1d0f5);
-      (0x1d100, 0x1d126);
-      (0x1d129, 0x1d164);
-      (0x1d16a, 0x1d16c);
-      (0x1d183, 0x1d184);
-      (0x1d18c, 0x1d1a9);
-      (0x1d1ae, 0x1d1ea);
-      (0x1d200, 0x1d241);
-      (0x1d245, 0x1d245);
-      (0x1d300, 0x1d356);
-      (0x1d800, 0x1d9ff);
-      (0x1da37, 0x1da3a);
-      (0x1da6d, 0x1da74);
-      (0x1da76, 0x1da83);
-      (0x1da85, 0x1da86);
-      (0x1e14f, 0x1e14f);
-      (0x1ecac, 0x1ecac);
-      (0x1ed2e, 0x1ed2e);
-      (0x1f000, 0x1f02b);
-      (0x1f030, 0x1f093);
-      (0x1f0a0, 0x1f0ae);
-      (0x1f0b1, 0x1f0bf);
-      (0x1f0c1, 0x1f0cf);
-      (0x1f0d1, 0x1f0f5);
-      (0x1f10d, 0x1f1ad);
-      (0x1f130, 0x1f149);
-      (0x1f150, 0x1f169);
-      (0x1f170, 0x1f189);
-      (0x1f1e6, 0x1f1ff);
-      (0x1f1e6, 0x1f202);
-      (0x1f210, 0x1f23b);
-      (0x1f240, 0x1f248);
-      (0x1f250, 0x1f251);
-      (0x1f260, 0x1f265);
-      (0x1f300, 0x1f3fa);
-      (0x1f400, 0x1f6d7);
-      (0x1f6dd, 0x1f6ec);
-      (0x1f6f0, 0x1f6fc);
-      (0x1f700, 0x1f773);
-      (0x1f780, 0x1f7d8);
-      (0x1f7e0, 0x1f7eb);
-      (0x1f7f0, 0x1f7f0);
-      (0x1f800, 0x1f80b);
-      (0x1f810, 0x1f847);
-      (0x1f850, 0x1f859);
-      (0x1f860, 0x1f887);
-      (0x1f890, 0x1f8ad);
-      (0x1f8b0, 0x1f8b1);
-      (0x1f900, 0x1fa53);
-      (0x1fa60, 0x1fa6d);
-      (0x1fa70, 0x1fa74);
-      (0x1fa78, 0x1fa7c);
-      (0x1fa80, 0x1fa86);
-      (0x1fa90, 0x1faac);
-      (0x1fab0, 0x1faba);
-      (0x1fac0, 0x1fac5);
-      (0x1fad0, 0x1fad9);
-      (0x1fae0, 0x1fae7);
-      (0x1faf0, 0x1faf6);
-      (0x1fb94, 0x1fbca);
-      (0x1fb00, 0x1fb92);
-    ]
+    [0xa6, 0xa6; 0xa9, 0xa9; 0xae, 0xae; 0xb0, 0xb0; 0x482, 0x482;
+     0x58d, 0x58e; 0x60e, 0x60f; 0x6de, 0x6de; 0x6e9, 0x6e9; 0x6fd, 0x6fe;
+     0x7f6, 0x7f6; 0x9fa, 0x9fa; 0xb70, 0xb70; 0xbf3, 0xbf8; 0xbfa, 0xbfa;
+     0xc7f, 0xc7f; 0xd4f, 0xd4f; 0xd79, 0xd79; 0xf01, 0xf03; 0xf13, 0xf13;
+     0xf15, 0xf17; 0xf1a, 0xf1f; 0xf34, 0xf34; 0xf36, 0xf36; 0xf38, 0xf38;
+     0xfbe, 0xfc5; 0xfc7, 0xfcc; 0xfce, 0xfcf; 0xfd5, 0xfd8; 0x109e, 0x109f;
+     0x1390, 0x1399; 0x166d, 0x166d; 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, 0x21a7; 0x21a7, 0x21ad; 0x21a9, 0x21ad; 0x21af, 0x21cd; 0x21b0, 0x21b1;
+     0x21b6, 0x21b7; 0x21bc, 0x21cd; 0x21d0, 0x21d1; 0x21d3, 0x21d3; 0x21d5, 0x21db;
+     0x21d5, 0x21f3; 0x21dd, 0x21dd; 0x21e4, 0x21e5; 0x2300, 0x2307; 0x230c, 0x231f;
+     0x2322, 0x2328; 0x232b, 0x237b; 0x237d, 0x239a; 0x23b4, 0x23b5; 0x23b4, 0x23db;
+     0x23b7, 0x23b7; 0x23d0, 0x23d0; 0x23e2, 0x23e2; 0x23e2, 0x2426; 0x2440, 0x244a;
+     0x249c, 0x24e9; 0x24b6, 0x24cf; 0x24b6, 0x24e9; 0x24d0, 0x24e9; 0x2500, 0x25b6;
+     0x25a0, 0x25a1; 0x25ae, 0x25b6; 0x25b8, 0x25c0; 0x25bc, 0x25c0; 0x25c2, 0x25f7;
+     0x25c6, 0x25c7; 0x25ca, 0x25cb; 0x25cf, 0x25d3; 0x25e2, 0x25e2; 0x25e4, 0x25e4;
+     0x25e7, 0x25ec; 0x2600, 0x266e; 0x2605, 0x2606; 0x2640, 0x2640; 0x2642, 0x2642;
+     0x2660, 0x2663; 0x266d, 0x266e; 0x2670, 0x2767; 0x2794, 0x27bf; 0x2800, 0x28ff;
+     0x2b00, 0x2b2f; 0x2b45, 0x2b46; 0x2b4d, 0x2b73; 0x2b76, 0x2b95; 0x2b97, 0x2bff;
+     0x2ce5, 0x2cea; 0x2e50, 0x2e51; 0x2e80, 0x2e99; 0x2e9b, 0x2ef3; 0x2f00, 0x2fd5;
+     0x2ff0, 0x2ff1; 0x2ff0, 0x2ffb; 0x2ff2, 0x2ff3; 0x2ff4, 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, 0x33ff; 0x4dc0, 0x4dff; 0xa490, 0xa4c6;
+     0xa828, 0xa82b; 0xa836, 0xa837; 0xa839, 0xa839; 0xaa77, 0xaa79; 0xfd40, 0xfd4f;
+     0xfdcf, 0xfdcf; 0xfdfd, 0xfdff; 0xffe4, 0xffe4; 0xffe8, 0xffe8; 0xffed, 0xffee;
+     0xfffc, 0xfffd; 0x10137, 0x1013f; 0x10179, 0x10189; 0x1018c, 0x1018e; 0x10190, 0x1019c;
+     0x101a0, 0x101a0; 0x101d0, 0x101fc; 0x10877, 0x10878; 0x10ac8, 0x10ac8; 0x1173f, 0x1173f;
+     0x11fd5, 0x11fdc; 0x11fe1, 0x11ff1; 0x16b3c, 0x16b3f; 0x16b45, 0x16b45; 0x1bc9c, 0x1bc9c;
+     0x1cf50, 0x1cfc3; 0x1d000, 0x1d0f5; 0x1d100, 0x1d126; 0x1d129, 0x1d164; 0x1d16a, 0x1d16c;
+     0x1d183, 0x1d184; 0x1d18c, 0x1d1a9; 0x1d1ae, 0x1d1ea; 0x1d200, 0x1d241; 0x1d245, 0x1d245;
+     0x1d300, 0x1d356; 0x1d800, 0x1d9ff; 0x1da37, 0x1da3a; 0x1da6d, 0x1da74; 0x1da76, 0x1da83;
+     0x1da85, 0x1da86; 0x1e14f, 0x1e14f; 0x1ecac, 0x1ecac; 0x1ed2e, 0x1ed2e; 0x1f000, 0x1f02b;
+     0x1f030, 0x1f093; 0x1f0a0, 0x1f0ae; 0x1f0b1, 0x1f0bf; 0x1f0c1, 0x1f0cf; 0x1f0d1, 0x1f0f5;
+     0x1f10d, 0x1f1ad; 0x1f130, 0x1f149; 0x1f150, 0x1f169; 0x1f170, 0x1f189; 0x1f1e6, 0x1f1ff;
+     0x1f1e6, 0x1f202; 0x1f210, 0x1f23b; 0x1f240, 0x1f248; 0x1f250, 0x1f251; 0x1f260, 0x1f265;
+     0x1f300, 0x1f3fa; 0x1f400, 0x1f6d7; 0x1f6dc, 0x1f6ec; 0x1f6f0, 0x1f6fc; 0x1f700, 0x1f776;
+     0x1f77b, 0x1f7d9; 0x1f7e0, 0x1f7eb; 0x1f7f0, 0x1f7f0; 0x1f800, 0x1f80b; 0x1f810, 0x1f847;
+     0x1f850, 0x1f859; 0x1f860, 0x1f887; 0x1f890, 0x1f8ad; 0x1f8b0, 0x1f8b1; 0x1f900, 0x1fa53;
+     0x1fa60, 0x1fa6d; 0x1fa70, 0x1fa7c; 0x1fa80, 0x1fa88; 0x1fa90, 0x1fabd; 0x1fabf, 0x1fac5;
+     0x1fb94, 0x1fbca; 0x1fb00, 0x1fb92; 0x1faf0, 0x1faf8; 0x1fae0, 0x1fae8; 0x1face, 0x1fadb]
+
+  let zl =
+    [0x2028, 0x2028]
 
-  let zl = [(0x2028, 0x2028)]
-  let zp = [(0x2029, 0x2029)]
+  let zp =
+    [0x2029, 0x2029]
 
   let zs =
-    [
-      (0x20, 0x20);
-      (0xa0, 0xa0);
-      (0x1680, 0x1680);
-      (0x2000, 0x200a);
-      (0x202f, 0x202f);
-      (0x3000, 0x3000);
-      (0x205f, 0x205f);
-    ]
+    [0x20, 0x20; 0xa0, 0xa0; 0x1680, 0x1680; 0x2000, 0x200a; 0x202f, 0x202f;
+     0x3000, 0x3000; 0x205f, 0x205f]
+
+  let list = [
+    ("cc", cc);
+    ("cf", cf);
+    ("cn", cn);
+    ("co", co);
+    ("cs", cs);
+    ("ll", ll);
+    ("lm", lm);
+    ("lo", lo);
+    ("lt", lt);
+    ("lu", lu);
+    ("mc", mc);
+    ("me", me);
+    ("mn", mn);
+    ("nd", nd);
+    ("nl", nl);
+    ("no", no);
+    ("pc", pc);
+    ("pd", pd);
+    ("pe", pe);
+    ("pf", pf);
+    ("pi", pi);
+    ("po", po);
+    ("ps", ps);
+    ("sc", sc);
+    ("sk", sk);
+    ("sm", sm);
+    ("so", so);
+    ("zl", zl);
+    ("zp", zp);
+    ("zs", zs)
+  ]
 
-  let list =
-    [
-      ("cc", cc);
-      ("cf", cf);
-      ("cn", cn);
-      ("co", co);
-      ("cs", cs);
-      ("ll", ll);
-      ("lm", lm);
-      ("lo", lo);
-      ("lt", lt);
-      ("lu", lu);
-      ("mc", mc);
-      ("me", me);
-      ("mn", mn);
-      ("nd", nd);
-      ("nl", nl);
-      ("no", no);
-      ("pc", pc);
-      ("pd", pd);
-      ("pe", pe);
-      ("pf", pf);
-      ("pi", pi);
-      ("po", po);
-      ("ps", ps);
-      ("sc", sc);
-      ("sk", sk);
-      ("sm", sm);
-      ("so", so);
-      ("zl", zl);
-      ("zp", zp);
-      ("zs", zs);
-    ]
 end
 
 module Properties = struct
+
   let alphabetic =
-    [
-      (0x41, 0x5a);
-      (0x61, 0x7a);
-      (0xaa, 0xaa);
-      (0xb5, 0xb5);
-      (0xba, 0xba);
-      (0xc0, 0xd6);
-      (0xd8, 0xf6);
-      (0xf8, 0x1ba);
-      (0x1bb, 0x1bb);
-      (0x1bc, 0x1bf);
-      (0x1c0, 0x1c3);
-      (0x1c4, 0x293);
-      (0x294, 0x294);
-      (0x295, 0x2af);
-      (0x2b0, 0x2c1);
-      (0x2c6, 0x2d1);
-      (0x2e0, 0x2e4);
-      (0x2ec, 0x2ec);
-      (0x2ee, 0x2ee);
-      (0x345, 0x345);
-      (0x370, 0x373);
-      (0x374, 0x374);
-      (0x376, 0x377);
-      (0x37a, 0x37a);
-      (0x37b, 0x37d);
-      (0x37f, 0x37f);
-      (0x386, 0x386);
-      (0x388, 0x38a);
-      (0x38c, 0x38c);
-      (0x38e, 0x3a1);
-      (0x3a3, 0x3f5);
-      (0x3f7, 0x481);
-      (0x48a, 0x52f);
-      (0x531, 0x556);
-      (0x559, 0x559);
-      (0x560, 0x588);
-      (0x5b0, 0x5bd);
-      (0x5bf, 0x5bf);
-      (0x5c1, 0x5c2);
-      (0x5c4, 0x5c5);
-      (0x5c7, 0x5c7);
-      (0x5d0, 0x5ea);
-      (0x5ef, 0x5f2);
-      (0x610, 0x61a);
-      (0x620, 0x63f);
-      (0x640, 0x640);
-      (0x641, 0x64a);
-      (0x64b, 0x657);
-      (0x659, 0x65f);
-      (0x66e, 0x66f);
-      (0x670, 0x670);
-      (0x671, 0x6d3);
-      (0x6d5, 0x6d5);
-      (0x6d6, 0x6dc);
-      (0x6e1, 0x6e4);
-      (0x6e5, 0x6e6);
-      (0x6e7, 0x6e8);
-      (0x6ed, 0x6ed);
-      (0x6ee, 0x6ef);
-      (0x6fa, 0x6fc);
-      (0x6ff, 0x6ff);
-      (0x710, 0x710);
-      (0x711, 0x711);
-      (0x712, 0x72f);
-      (0x730, 0x73f);
-      (0x74d, 0x7a5);
-      (0x7a6, 0x7b0);
-      (0x7b1, 0x7b1);
-      (0x7ca, 0x7ea);
-      (0x7f4, 0x7f5);
-      (0x7fa, 0x7fa);
-      (0x800, 0x815);
-      (0x816, 0x817);
-      (0x81a, 0x81a);
-      (0x81b, 0x823);
-      (0x824, 0x824);
-      (0x825, 0x827);
-      (0x828, 0x828);
-      (0x829, 0x82c);
-      (0x840, 0x858);
-      (0x860, 0x86a);
-      (0x870, 0x887);
-      (0x889, 0x88e);
-      (0x8a0, 0x8c8);
-      (0x8c9, 0x8c9);
-      (0x8d4, 0x8df);
-      (0x8e3, 0x8e9);
-      (0x8f0, 0x902);
-      (0x903, 0x903);
-      (0x904, 0x939);
-      (0x93a, 0x93a);
-      (0x93b, 0x93b);
-      (0x93d, 0x93d);
-      (0x93e, 0x940);
-      (0x941, 0x948);
-      (0x949, 0x94c);
-      (0x94e, 0x94f);
-      (0x950, 0x950);
-      (0x955, 0x957);
-      (0x958, 0x961);
-      (0x962, 0x963);
-      (0x971, 0x971);
-      (0x972, 0x980);
-      (0x981, 0x981);
-      (0x982, 0x983);
-      (0x985, 0x98c);
-      (0x98f, 0x990);
-      (0x993, 0x9a8);
-      (0x9aa, 0x9b0);
-      (0x9b2, 0x9b2);
-      (0x9b6, 0x9b9);
-      (0x9bd, 0x9bd);
-      (0x9be, 0x9c0);
-      (0x9c1, 0x9c4);
-      (0x9c7, 0x9c8);
-      (0x9cb, 0x9cc);
-      (0x9ce, 0x9ce);
-      (0x9d7, 0x9d7);
-      (0x9dc, 0x9dd);
-      (0x9df, 0x9e1);
-      (0x9e2, 0x9e3);
-      (0x9f0, 0x9f1);
-      (0x9fc, 0x9fc);
-      (0xa01, 0xa02);
-      (0xa03, 0xa03);
-      (0xa05, 0xa0a);
-      (0xa0f, 0xa10);
-      (0xa13, 0xa28);
-      (0xa2a, 0xa30);
-      (0xa32, 0xa33);
-      (0xa35, 0xa36);
-      (0xa38, 0xa39);
-      (0xa3e, 0xa40);
-      (0xa41, 0xa42);
-      (0xa47, 0xa48);
-      (0xa4b, 0xa4c);
-      (0xa51, 0xa51);
-      (0xa59, 0xa5c);
-      (0xa5e, 0xa5e);
-      (0xa70, 0xa71);
-      (0xa72, 0xa74);
-      (0xa75, 0xa75);
-      (0xa81, 0xa82);
-      (0xa83, 0xa83);
-      (0xa85, 0xa8d);
-      (0xa8f, 0xa91);
-      (0xa93, 0xaa8);
-      (0xaaa, 0xab0);
-      (0xab2, 0xab3);
-      (0xab5, 0xab9);
-      (0xabd, 0xabd);
-      (0xabe, 0xac0);
-      (0xac1, 0xac5);
-      (0xac7, 0xac8);
-      (0xac9, 0xac9);
-      (0xacb, 0xacc);
-      (0xad0, 0xad0);
-      (0xae0, 0xae1);
-      (0xae2, 0xae3);
-      (0xaf9, 0xaf9);
-      (0xafa, 0xafc);
-      (0xb01, 0xb01);
-      (0xb02, 0xb03);
-      (0xb05, 0xb0c);
-      (0xb0f, 0xb10);
-      (0xb13, 0xb28);
-      (0xb2a, 0xb30);
-      (0xb32, 0xb33);
-      (0xb35, 0xb39);
-      (0xb3d, 0xb3d);
-      (0xb3e, 0xb3e);
-      (0xb3f, 0xb3f);
-      (0xb40, 0xb40);
-      (0xb41, 0xb44);
-      (0xb47, 0xb48);
-      (0xb4b, 0xb4c);
-      (0xb56, 0xb56);
-      (0xb57, 0xb57);
-      (0xb5c, 0xb5d);
-      (0xb5f, 0xb61);
-      (0xb62, 0xb63);
-      (0xb71, 0xb71);
-      (0xb82, 0xb82);
-      (0xb83, 0xb83);
-      (0xb85, 0xb8a);
-      (0xb8e, 0xb90);
-      (0xb92, 0xb95);
-      (0xb99, 0xb9a);
-      (0xb9c, 0xb9c);
-      (0xb9e, 0xb9f);
-      (0xba3, 0xba4);
-      (0xba8, 0xbaa);
-      (0xbae, 0xbb9);
-      (0xbbe, 0xbbf);
-      (0xbc0, 0xbc0);
-      (0xbc1, 0xbc2);
-      (0xbc6, 0xbc8);
-      (0xbca, 0xbcc);
-      (0xbd0, 0xbd0);
-      (0xbd7, 0xbd7);
-      (0xc00, 0xc00);
-      (0xc01, 0xc03);
-      (0xc05, 0xc0c);
-      (0xc0e, 0xc10);
-      (0xc12, 0xc28);
-      (0xc2a, 0xc39);
-      (0xc3d, 0xc3d);
-      (0xc3e, 0xc40);
-      (0xc41, 0xc44);
-      (0xc46, 0xc48);
-      (0xc4a, 0xc4c);
-      (0xc55, 0xc56);
-      (0xc58, 0xc5a);
-      (0xc5d, 0xc5d);
-      (0xc60, 0xc61);
-      (0xc62, 0xc63);
-      (0xc80, 0xc80);
-      (0xc81, 0xc81);
-      (0xc82, 0xc83);
-      (0xc85, 0xc8c);
-      (0xc8e, 0xc90);
-      (0xc92, 0xca8);
-      (0xcaa, 0xcb3);
-      (0xcb5, 0xcb9);
-      (0xcbd, 0xcbd);
-      (0xcbe, 0xcbe);
-      (0xcbf, 0xcbf);
-      (0xcc0, 0xcc4);
-      (0xcc6, 0xcc6);
-      (0xcc7, 0xcc8);
-      (0xcca, 0xccb);
-      (0xccc, 0xccc);
-      (0xcd5, 0xcd6);
-      (0xcdd, 0xcde);
-      (0xce0, 0xce1);
-      (0xce2, 0xce3);
-      (0xcf1, 0xcf2);
-      (0xd00, 0xd01);
-      (0xd02, 0xd03);
-      (0xd04, 0xd0c);
-      (0xd0e, 0xd10);
-      (0xd12, 0xd3a);
-      (0xd3d, 0xd3d);
-      (0xd3e, 0xd40);
-      (0xd41, 0xd44);
-      (0xd46, 0xd48);
-      (0xd4a, 0xd4c);
-      (0xd4e, 0xd4e);
-      (0xd54, 0xd56);
-      (0xd57, 0xd57);
-      (0xd5f, 0xd61);
-      (0xd62, 0xd63);
-      (0xd7a, 0xd7f);
-      (0xd81, 0xd81);
-      (0xd82, 0xd83);
-      (0xd85, 0xd96);
-      (0xd9a, 0xdb1);
-      (0xdb3, 0xdbb);
-      (0xdbd, 0xdbd);
-      (0xdc0, 0xdc6);
-      (0xdcf, 0xdd1);
-      (0xdd2, 0xdd4);
-      (0xdd6, 0xdd6);
-      (0xdd8, 0xddf);
-      (0xdf2, 0xdf3);
-      (0xe01, 0xe30);
-      (0xe31, 0xe31);
-      (0xe32, 0xe33);
-      (0xe34, 0xe3a);
-      (0xe40, 0xe45);
-      (0xe46, 0xe46);
-      (0xe4d, 0xe4d);
-      (0xe81, 0xe82);
-      (0xe84, 0xe84);
-      (0xe86, 0xe8a);
-      (0xe8c, 0xea3);
-      (0xea5, 0xea5);
-      (0xea7, 0xeb0);
-      (0xeb1, 0xeb1);
-      (0xeb2, 0xeb3);
-      (0xeb4, 0xeb9);
-      (0xebb, 0xebc);
-      (0xebd, 0xebd);
-      (0xec0, 0xec4);
-      (0xec6, 0xec6);
-      (0xecd, 0xecd);
-      (0xedc, 0xedf);
-      (0xf00, 0xf00);
-      (0xf40, 0xf47);
-      (0xf49, 0xf6c);
-      (0xf71, 0xf7e);
-      (0xf7f, 0xf7f);
-      (0xf80, 0xf81);
-      (0xf88, 0xf8c);
-      (0xf8d, 0xf97);
-      (0xf99, 0xfbc);
-      (0x1000, 0x102a);
-      (0x102b, 0x102c);
-      (0x102d, 0x1030);
-      (0x1031, 0x1031);
-      (0x1032, 0x1036);
-      (0x1038, 0x1038);
-      (0x103b, 0x103c);
-      (0x103d, 0x103e);
-      (0x103f, 0x103f);
-      (0x1050, 0x1055);
-      (0x1056, 0x1057);
-      (0x1058, 0x1059);
-      (0x105a, 0x105d);
-      (0x105e, 0x1060);
-      (0x1061, 0x1061);
-      (0x1062, 0x1064);
-      (0x1065, 0x1066);
-      (0x1067, 0x106d);
-      (0x106e, 0x1070);
-      (0x1071, 0x1074);
-      (0x1075, 0x1081);
-      (0x1082, 0x1082);
-      (0x1083, 0x1084);
-      (0x1085, 0x1086);
-      (0x1087, 0x108c);
-      (0x108d, 0x108d);
-      (0x108e, 0x108e);
-      (0x108f, 0x108f);
-      (0x109a, 0x109c);
-      (0x109d, 0x109d);
-      (0x10a0, 0x10c5);
-      (0x10c7, 0x10c7);
-      (0x10cd, 0x10cd);
-      (0x10d0, 0x10fa);
-      (0x10fc, 0x10fc);
-      (0x10fd, 0x10ff);
-      (0x1100, 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, 0x16f0);
-      (0x16f1, 0x16f8);
-      (0x1700, 0x1711);
-      (0x1712, 0x1713);
-      (0x171f, 0x1731);
-      (0x1732, 0x1733);
-      (0x1740, 0x1751);
-      (0x1752, 0x1753);
-      (0x1760, 0x176c);
-      (0x176e, 0x1770);
-      (0x1772, 0x1773);
-      (0x1780, 0x17b3);
-      (0x17b6, 0x17b6);
-      (0x17b7, 0x17bd);
-      (0x17be, 0x17c5);
-      (0x17c6, 0x17c6);
-      (0x17c7, 0x17c8);
-      (0x17d7, 0x17d7);
-      (0x17dc, 0x17dc);
-      (0x1820, 0x1842);
-      (0x1843, 0x1843);
-      (0x1844, 0x1878);
-      (0x1880, 0x1884);
-      (0x1885, 0x1886);
-      (0x1887, 0x18a8);
-      (0x18a9, 0x18a9);
-      (0x18aa, 0x18aa);
-      (0x18b0, 0x18f5);
-      (0x1900, 0x191e);
-      (0x1920, 0x1922);
-      (0x1923, 0x1926);
-      (0x1927, 0x1928);
-      (0x1929, 0x192b);
-      (0x1930, 0x1931);
-      (0x1932, 0x1932);
-      (0x1933, 0x1938);
-      (0x1950, 0x196d);
-      (0x1970, 0x1974);
-      (0x1980, 0x19ab);
-      (0x19b0, 0x19c9);
-      (0x1a00, 0x1a16);
-      (0x1a17, 0x1a18);
-      (0x1a19, 0x1a1a);
-      (0x1a1b, 0x1a1b);
-      (0x1a20, 0x1a54);
-      (0x1a55, 0x1a55);
-      (0x1a56, 0x1a56);
-      (0x1a57, 0x1a57);
-      (0x1a58, 0x1a5e);
-      (0x1a61, 0x1a61);
-      (0x1a62, 0x1a62);
-      (0x1a63, 0x1a64);
-      (0x1a65, 0x1a6c);
-      (0x1a6d, 0x1a72);
-      (0x1a73, 0x1a74);
-      (0x1aa7, 0x1aa7);
-      (0x1abf, 0x1ac0);
-      (0x1acc, 0x1ace);
-      (0x1b00, 0x1b03);
-      (0x1b04, 0x1b04);
-      (0x1b05, 0x1b33);
-      (0x1b35, 0x1b35);
-      (0x1b36, 0x1b3a);
-      (0x1b3b, 0x1b3b);
-      (0x1b3c, 0x1b3c);
-      (0x1b3d, 0x1b41);
-      (0x1b42, 0x1b42);
-      (0x1b43, 0x1b43);
-      (0x1b45, 0x1b4c);
-      (0x1b80, 0x1b81);
-      (0x1b82, 0x1b82);
-      (0x1b83, 0x1ba0);
-      (0x1ba1, 0x1ba1);
-      (0x1ba2, 0x1ba5);
-      (0x1ba6, 0x1ba7);
-      (0x1ba8, 0x1ba9);
-      (0x1bac, 0x1bad);
-      (0x1bae, 0x1baf);
-      (0x1bba, 0x1be5);
-      (0x1be7, 0x1be7);
-      (0x1be8, 0x1be9);
-      (0x1bea, 0x1bec);
-      (0x1bed, 0x1bed);
-      (0x1bee, 0x1bee);
-      (0x1bef, 0x1bf1);
-      (0x1c00, 0x1c23);
-      (0x1c24, 0x1c2b);
-      (0x1c2c, 0x1c33);
-      (0x1c34, 0x1c35);
-      (0x1c36, 0x1c36);
-      (0x1c4d, 0x1c4f);
-      (0x1c5a, 0x1c77);
-      (0x1c78, 0x1c7d);
-      (0x1c80, 0x1c88);
-      (0x1c90, 0x1cba);
-      (0x1cbd, 0x1cbf);
-      (0x1ce9, 0x1cec);
-      (0x1cee, 0x1cf3);
-      (0x1cf5, 0x1cf6);
-      (0x1cfa, 0x1cfa);
-      (0x1d00, 0x1d2b);
-      (0x1d2c, 0x1d6a);
-      (0x1d6b, 0x1d77);
-      (0x1d78, 0x1d78);
-      (0x1d79, 0x1d9a);
-      (0x1d9b, 0x1dbf);
-      (0x1de7, 0x1df4);
-      (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);
-      (0x2135, 0x2138);
-      (0x2139, 0x2139);
-      (0x213c, 0x213f);
-      (0x2145, 0x2149);
-      (0x214e, 0x214e);
-      (0x2160, 0x2182);
-      (0x2183, 0x2184);
-      (0x2185, 0x2188);
-      (0x24b6, 0x24e9);
-      (0x2c00, 0x2c7b);
-      (0x2c7c, 0x2c7d);
-      (0x2c7e, 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);
-      (0x2de0, 0x2dff);
-      (0x2e2f, 0x2e2f);
-      (0x3005, 0x3005);
-      (0x3006, 0x3006);
-      (0x3007, 0x3007);
-      (0x3021, 0x3029);
-      (0x3031, 0x3035);
-      (0x3038, 0x303a);
-      (0x303b, 0x303b);
-      (0x303c, 0x303c);
-      (0x3041, 0x3096);
-      (0x309d, 0x309e);
-      (0x309f, 0x309f);
-      (0x30a1, 0x30fa);
-      (0x30fc, 0x30fe);
-      (0x30ff, 0x30ff);
-      (0x3105, 0x312f);
-      (0x3131, 0x318e);
-      (0x31a0, 0x31bf);
-      (0x31f0, 0x31ff);
-      (0x3400, 0x4dbf);
-      (0x4e00, 0xa014);
-      (0xa015, 0xa015);
-      (0xa016, 0xa48c);
-      (0xa4d0, 0xa4f7);
-      (0xa4f8, 0xa4fd);
-      (0xa500, 0xa60b);
-      (0xa60c, 0xa60c);
-      (0xa610, 0xa61f);
-      (0xa62a, 0xa62b);
-      (0xa640, 0xa66d);
-      (0xa66e, 0xa66e);
-      (0xa674, 0xa67b);
-      (0xa67f, 0xa67f);
-      (0xa680, 0xa69b);
-      (0xa69c, 0xa69d);
-      (0xa69e, 0xa69f);
-      (0xa6a0, 0xa6e5);
-      (0xa6e6, 0xa6ef);
-      (0xa717, 0xa71f);
-      (0xa722, 0xa76f);
-      (0xa770, 0xa770);
-      (0xa771, 0xa787);
-      (0xa788, 0xa788);
-      (0xa78b, 0xa78e);
-      (0xa78f, 0xa78f);
-      (0xa790, 0xa7ca);
-      (0xa7d0, 0xa7d1);
-      (0xa7d3, 0xa7d3);
-      (0xa7d5, 0xa7d9);
-      (0xa7f2, 0xa7f4);
-      (0xa7f5, 0xa7f6);
-      (0xa7f7, 0xa7f7);
-      (0xa7f8, 0xa7f9);
-      (0xa7fa, 0xa7fa);
-      (0xa7fb, 0xa801);
-      (0xa802, 0xa802);
-      (0xa803, 0xa805);
-      (0xa807, 0xa80a);
-      (0xa80b, 0xa80b);
-      (0xa80c, 0xa822);
-      (0xa823, 0xa824);
-      (0xa825, 0xa826);
-      (0xa827, 0xa827);
-      (0xa840, 0xa873);
-      (0xa880, 0xa881);
-      (0xa882, 0xa8b3);
-      (0xa8b4, 0xa8c3);
-      (0xa8c5, 0xa8c5);
-      (0xa8f2, 0xa8f7);
-      (0xa8fb, 0xa8fb);
-      (0xa8fd, 0xa8fe);
-      (0xa8ff, 0xa8ff);
-      (0xa90a, 0xa925);
-      (0xa926, 0xa92a);
-      (0xa930, 0xa946);
-      (0xa947, 0xa951);
-      (0xa952, 0xa952);
-      (0xa960, 0xa97c);
-      (0xa980, 0xa982);
-      (0xa983, 0xa983);
-      (0xa984, 0xa9b2);
-      (0xa9b4, 0xa9b5);
-      (0xa9b6, 0xa9b9);
-      (0xa9ba, 0xa9bb);
-      (0xa9bc, 0xa9bd);
-      (0xa9be, 0xa9bf);
-      (0xa9cf, 0xa9cf);
-      (0xa9e0, 0xa9e4);
-      (0xa9e5, 0xa9e5);
-      (0xa9e6, 0xa9e6);
-      (0xa9e7, 0xa9ef);
-      (0xa9fa, 0xa9fe);
-      (0xaa00, 0xaa28);
-      (0xaa29, 0xaa2e);
-      (0xaa2f, 0xaa30);
-      (0xaa31, 0xaa32);
-      (0xaa33, 0xaa34);
-      (0xaa35, 0xaa36);
-      (0xaa40, 0xaa42);
-      (0xaa43, 0xaa43);
-      (0xaa44, 0xaa4b);
-      (0xaa4c, 0xaa4c);
-      (0xaa4d, 0xaa4d);
-      (0xaa60, 0xaa6f);
-      (0xaa70, 0xaa70);
-      (0xaa71, 0xaa76);
-      (0xaa7a, 0xaa7a);
-      (0xaa7b, 0xaa7b);
-      (0xaa7c, 0xaa7c);
-      (0xaa7d, 0xaa7d);
-      (0xaa7e, 0xaaaf);
-      (0xaab0, 0xaab0);
-      (0xaab1, 0xaab1);
-      (0xaab2, 0xaab4);
-      (0xaab5, 0xaab6);
-      (0xaab7, 0xaab8);
-      (0xaab9, 0xaabd);
-      (0xaabe, 0xaabe);
-      (0xaac0, 0xaac0);
-      (0xaac2, 0xaac2);
-      (0xaadb, 0xaadc);
-      (0xaadd, 0xaadd);
-      (0xaae0, 0xaaea);
-      (0xaaeb, 0xaaeb);
-      (0xaaec, 0xaaed);
-      (0xaaee, 0xaaef);
-      (0xaaf2, 0xaaf2);
-      (0xaaf3, 0xaaf4);
-      (0xaaf5, 0xaaf5);
-      (0xab01, 0xab06);
-      (0xab09, 0xab0e);
-      (0xab11, 0xab16);
-      (0xab20, 0xab26);
-      (0xab28, 0xab2e);
-      (0xab30, 0xab5a);
-      (0xab5c, 0xab5f);
-      (0xab60, 0xab68);
-      (0xab69, 0xab69);
-      (0xab70, 0xabbf);
-      (0xabc0, 0xabe2);
-      (0xabe3, 0xabe4);
-      (0xabe5, 0xabe5);
-      (0xabe6, 0xabe7);
-      (0xabe8, 0xabe8);
-      (0xabe9, 0xabea);
-      (0xac00, 0xd7a3);
-      (0xd7b0, 0xd7c6);
-      (0xd7cb, 0xd7fb);
-      (0xf900, 0xfa6d);
-      (0xfa70, 0xfad9);
-      (0xfb00, 0xfb06);
-      (0xfb13, 0xfb17);
-      (0xfb1d, 0xfb1d);
-      (0xfb1e, 0xfb1e);
-      (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, 0xff6f);
-      (0xff70, 0xff70);
-      (0xff71, 0xff9d);
-      (0xff9e, 0xff9f);
-      (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);
-      (0x1032d, 0x10340);
-      (0x10341, 0x10341);
-      (0x10342, 0x10349);
-      (0x1034a, 0x1034a);
-      (0x10350, 0x10375);
-      (0x10376, 0x1037a);
-      (0x10380, 0x1039d);
-      (0x103a0, 0x103c3);
-      (0x103c8, 0x103cf);
-      (0x103d1, 0x103d5);
-      (0x10400, 0x1044f);
-      (0x10450, 0x1049d);
-      (0x104b0, 0x104d3);
-      (0x104d8, 0x104fb);
-      (0x10500, 0x10527);
-      (0x10530, 0x10563);
-      (0x10570, 0x1057a);
-      (0x1057c, 0x1058a);
-      (0x1058c, 0x10592);
-      (0x10594, 0x10595);
-      (0x10597, 0x105a1);
-      (0x105a3, 0x105b1);
-      (0x105b3, 0x105b9);
-      (0x105bb, 0x105bc);
-      (0x10600, 0x10736);
-      (0x10740, 0x10755);
-      (0x10760, 0x10767);
-      (0x10780, 0x10785);
-      (0x10787, 0x107b0);
-      (0x107b2, 0x107ba);
-      (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);
-      (0x10a01, 0x10a03);
-      (0x10a05, 0x10a06);
-      (0x10a0c, 0x10a0f);
-      (0x10a10, 0x10a13);
-      (0x10a15, 0x10a17);
-      (0x10a19, 0x10a35);
-      (0x10a60, 0x10a7c);
-      (0x10a80, 0x10a9c);
-      (0x10ac0, 0x10ac7);
-      (0x10ac9, 0x10ae4);
-      (0x10b00, 0x10b35);
-      (0x10b40, 0x10b55);
-      (0x10b60, 0x10b72);
-      (0x10b80, 0x10b91);
-      (0x10c00, 0x10c48);
-      (0x10c80, 0x10cb2);
-      (0x10cc0, 0x10cf2);
-      (0x10d00, 0x10d23);
-      (0x10d24, 0x10d27);
-      (0x10e80, 0x10ea9);
-      (0x10eab, 0x10eac);
-      (0x10eb0, 0x10eb1);
-      (0x10f00, 0x10f1c);
-      (0x10f27, 0x10f27);
-      (0x10f30, 0x10f45);
-      (0x10f70, 0x10f81);
-      (0x10fb0, 0x10fc4);
-      (0x10fe0, 0x10ff6);
-      (0x11000, 0x11000);
-      (0x11001, 0x11001);
-      (0x11002, 0x11002);
-      (0x11003, 0x11037);
-      (0x11038, 0x11045);
-      (0x11071, 0x11072);
-      (0x11073, 0x11074);
-      (0x11075, 0x11075);
-      (0x11082, 0x11082);
-      (0x11083, 0x110af);
-      (0x110b0, 0x110b2);
-      (0x110b3, 0x110b6);
-      (0x110b7, 0x110b8);
-      (0x110c2, 0x110c2);
-      (0x110d0, 0x110e8);
-      (0x11100, 0x11102);
-      (0x11103, 0x11126);
-      (0x11127, 0x1112b);
-      (0x1112c, 0x1112c);
-      (0x1112d, 0x11132);
-      (0x11144, 0x11144);
-      (0x11145, 0x11146);
-      (0x11147, 0x11147);
-      (0x11150, 0x11172);
-      (0x11176, 0x11176);
-      (0x11180, 0x11181);
-      (0x11182, 0x11182);
-      (0x11183, 0x111b2);
-      (0x111b3, 0x111b5);
-      (0x111b6, 0x111be);
-      (0x111bf, 0x111bf);
-      (0x111c1, 0x111c4);
-      (0x111ce, 0x111ce);
-      (0x111cf, 0x111cf);
-      (0x111da, 0x111da);
-      (0x111dc, 0x111dc);
-      (0x11200, 0x11211);
-      (0x11213, 0x1122b);
-      (0x1122c, 0x1122e);
-      (0x1122f, 0x11231);
-      (0x11232, 0x11233);
-      (0x11234, 0x11234);
-      (0x11237, 0x11237);
-      (0x1123e, 0x1123e);
-      (0x11280, 0x11286);
-      (0x11288, 0x11288);
-      (0x1128a, 0x1128d);
-      (0x1128f, 0x1129d);
-      (0x1129f, 0x112a8);
-      (0x112b0, 0x112de);
-      (0x112df, 0x112df);
-      (0x112e0, 0x112e2);
-      (0x112e3, 0x112e8);
-      (0x11300, 0x11301);
-      (0x11302, 0x11303);
-      (0x11305, 0x1130c);
-      (0x1130f, 0x11310);
-      (0x11313, 0x11328);
-      (0x1132a, 0x11330);
-      (0x11332, 0x11333);
-      (0x11335, 0x11339);
-      (0x1133d, 0x1133d);
-      (0x1133e, 0x1133f);
-      (0x11340, 0x11340);
-      (0x11341, 0x11344);
-      (0x11347, 0x11348);
-      (0x1134b, 0x1134c);
-      (0x11350, 0x11350);
-      (0x11357, 0x11357);
-      (0x1135d, 0x11361);
-      (0x11362, 0x11363);
-      (0x11400, 0x11434);
-      (0x11435, 0x11437);
-      (0x11438, 0x1143f);
-      (0x11440, 0x11441);
-      (0x11443, 0x11444);
-      (0x11445, 0x11445);
-      (0x11447, 0x1144a);
-      (0x1145f, 0x11461);
-      (0x11480, 0x114af);
-      (0x114b0, 0x114b2);
-      (0x114b3, 0x114b8);
-      (0x114b9, 0x114b9);
-      (0x114ba, 0x114ba);
-      (0x114bb, 0x114be);
-      (0x114bf, 0x114c0);
-      (0x114c1, 0x114c1);
-      (0x114c4, 0x114c5);
-      (0x114c7, 0x114c7);
-      (0x11580, 0x115ae);
-      (0x115af, 0x115b1);
-      (0x115b2, 0x115b5);
-      (0x115b8, 0x115bb);
-      (0x115bc, 0x115bd);
-      (0x115be, 0x115be);
-      (0x115d8, 0x115db);
-      (0x115dc, 0x115dd);
-      (0x11600, 0x1162f);
-      (0x11630, 0x11632);
-      (0x11633, 0x1163a);
-      (0x1163b, 0x1163c);
-      (0x1163d, 0x1163d);
-      (0x1163e, 0x1163e);
-      (0x11640, 0x11640);
-      (0x11644, 0x11644);
-      (0x11680, 0x116aa);
-      (0x116ab, 0x116ab);
-      (0x116ac, 0x116ac);
-      (0x116ad, 0x116ad);
-      (0x116ae, 0x116af);
-      (0x116b0, 0x116b5);
-      (0x116b8, 0x116b8);
-      (0x11700, 0x1171a);
-      (0x1171d, 0x1171f);
-      (0x11720, 0x11721);
-      (0x11722, 0x11725);
-      (0x11726, 0x11726);
-      (0x11727, 0x1172a);
-      (0x11740, 0x11746);
-      (0x11800, 0x1182b);
-      (0x1182c, 0x1182e);
-      (0x1182f, 0x11837);
-      (0x11838, 0x11838);
-      (0x118a0, 0x118df);
-      (0x118ff, 0x11906);
-      (0x11909, 0x11909);
-      (0x1190c, 0x11913);
-      (0x11915, 0x11916);
-      (0x11918, 0x1192f);
-      (0x11930, 0x11935);
-      (0x11937, 0x11938);
-      (0x1193b, 0x1193c);
-      (0x1193f, 0x1193f);
-      (0x11940, 0x11940);
-      (0x11941, 0x11941);
-      (0x11942, 0x11942);
-      (0x119a0, 0x119a7);
-      (0x119aa, 0x119d0);
-      (0x119d1, 0x119d3);
-      (0x119d4, 0x119d7);
-      (0x119da, 0x119db);
-      (0x119dc, 0x119df);
-      (0x119e1, 0x119e1);
-      (0x119e3, 0x119e3);
-      (0x119e4, 0x119e4);
-      (0x11a00, 0x11a00);
-      (0x11a01, 0x11a0a);
-      (0x11a0b, 0x11a32);
-      (0x11a35, 0x11a38);
-      (0x11a39, 0x11a39);
-      (0x11a3a, 0x11a3a);
-      (0x11a3b, 0x11a3e);
-      (0x11a50, 0x11a50);
-      (0x11a51, 0x11a56);
-      (0x11a57, 0x11a58);
-      (0x11a59, 0x11a5b);
-      (0x11a5c, 0x11a89);
-      (0x11a8a, 0x11a96);
-      (0x11a97, 0x11a97);
-      (0x11a9d, 0x11a9d);
-      (0x11ab0, 0x11af8);
-      (0x11c00, 0x11c08);
-      (0x11c0a, 0x11c2e);
-      (0x11c2f, 0x11c2f);
-      (0x11c30, 0x11c36);
-      (0x11c38, 0x11c3d);
-      (0x11c3e, 0x11c3e);
-      (0x11c40, 0x11c40);
-      (0x11c72, 0x11c8f);
-      (0x11c92, 0x11ca7);
-      (0x11ca9, 0x11ca9);
-      (0x11caa, 0x11cb0);
-      (0x11cb1, 0x11cb1);
-      (0x11cb2, 0x11cb3);
-      (0x11cb4, 0x11cb4);
-      (0x11cb5, 0x11cb6);
-      (0x11d00, 0x11d06);
-      (0x11d08, 0x11d09);
-      (0x11d0b, 0x11d30);
-      (0x11d31, 0x11d36);
-      (0x11d3a, 0x11d3a);
-      (0x11d3c, 0x11d3d);
-      (0x11d3f, 0x11d41);
-      (0x11d43, 0x11d43);
-      (0x11d46, 0x11d46);
-      (0x11d47, 0x11d47);
-      (0x11d60, 0x11d65);
-      (0x11d67, 0x11d68);
-      (0x11d6a, 0x11d89);
-      (0x11d8a, 0x11d8e);
-      (0x11d90, 0x11d91);
-      (0x11d93, 0x11d94);
-      (0x11d95, 0x11d95);
-      (0x11d96, 0x11d96);
-      (0x11d98, 0x11d98);
-      (0x11ee0, 0x11ef2);
-      (0x11ef3, 0x11ef4);
-      (0x11ef5, 0x11ef6);
-      (0x11fb0, 0x11fb0);
-      (0x12000, 0x12399);
-      (0x12400, 0x1246e);
-      (0x12480, 0x12543);
-      (0x12f90, 0x12ff0);
-      (0x13000, 0x1342e);
-      (0x14400, 0x14646);
-      (0x16800, 0x16a38);
-      (0x16a40, 0x16a5e);
-      (0x16a70, 0x16abe);
-      (0x16ad0, 0x16aed);
-      (0x16b00, 0x16b2f);
-      (0x16b40, 0x16b43);
-      (0x16b63, 0x16b77);
-      (0x16b7d, 0x16b8f);
-      (0x16e40, 0x16e7f);
-      (0x16f00, 0x16f4a);
-      (0x16f4f, 0x16f4f);
-      (0x16f50, 0x16f50);
-      (0x16f51, 0x16f87);
-      (0x16f8f, 0x16f92);
-      (0x16f93, 0x16f9f);
-      (0x16fe0, 0x16fe1);
-      (0x16fe3, 0x16fe3);
-      (0x16ff0, 0x16ff1);
-      (0x17000, 0x187f7);
-      (0x18800, 0x18cd5);
-      (0x18d00, 0x18d08);
-      (0x1aff0, 0x1aff3);
-      (0x1aff5, 0x1affb);
-      (0x1affd, 0x1affe);
-      (0x1b000, 0x1b122);
-      (0x1b150, 0x1b152);
-      (0x1b164, 0x1b167);
-      (0x1b170, 0x1b2fb);
-      (0x1bc00, 0x1bc6a);
-      (0x1bc70, 0x1bc7c);
-      (0x1bc80, 0x1bc88);
-      (0x1bc90, 0x1bc99);
-      (0x1bc9e, 0x1bc9e);
-      (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);
-      (0x1df00, 0x1df09);
-      (0x1df0a, 0x1df0a);
-      (0x1df0b, 0x1df1e);
-      (0x1e000, 0x1e006);
-      (0x1e008, 0x1e018);
-      (0x1e01b, 0x1e021);
-      (0x1e023, 0x1e024);
-      (0x1e026, 0x1e02a);
-      (0x1e100, 0x1e12c);
-      (0x1e137, 0x1e13d);
-      (0x1e14e, 0x1e14e);
-      (0x1e290, 0x1e2ad);
-      (0x1e2c0, 0x1e2eb);
-      (0x1e7e0, 0x1e7e6);
-      (0x1e7e8, 0x1e7eb);
-      (0x1e7ed, 0x1e7ee);
-      (0x1e7f0, 0x1e7fe);
-      (0x1e800, 0x1e8c4);
-      (0x1e900, 0x1e943);
-      (0x1e947, 0x1e947);
-      (0x1e94b, 0x1e94b);
-      (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);
-      (0x1f130, 0x1f149);
-      (0x1f150, 0x1f169);
-      (0x1f170, 0x1f189);
-      (0x20000, 0x2a6df);
-      (0x2a700, 0x2b738);
-      (0x2b740, 0x2b81d);
-      (0x2b820, 0x2cea1);
-      (0x2ceb0, 0x2ebe0);
-      (0x30000, 0x3134a);
-      (0x2f800, 0x2fa1d);
-    ]
+    [0x41, 0x5a; 0x61, 0x7a; 0xaa, 0xaa; 0xb5, 0xb5; 0xba, 0xba;
+     0xc0, 0xd6; 0xd8, 0xf6; 0xf8, 0x1ba; 0x1bb, 0x1bb; 0x1bc, 0x1bf;
+     0x1c0, 0x1c3; 0x1c4, 0x293; 0x294, 0x294; 0x295, 0x2af; 0x2b0, 0x2c1;
+     0x2c6, 0x2d1; 0x2e0, 0x2e4; 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x345, 0x345;
+     0x370, 0x373; 0x374, 0x374; 0x376, 0x377; 0x37a, 0x37a; 0x37b, 0x37d;
+     0x37f, 0x37f; 0x386, 0x386; 0x388, 0x38a; 0x38c, 0x38c; 0x38e, 0x3a1;
+     0x3a3, 0x3f5; 0x3f7, 0x481; 0x48a, 0x52f; 0x531, 0x556; 0x559, 0x559;
+     0x560, 0x588; 0x5b0, 0x5bd; 0x5bf, 0x5bf; 0x5c1, 0x5c2; 0x5c4, 0x5c5;
+     0x5c7, 0x5c7; 0x5d0, 0x5ea; 0x5ef, 0x5f2; 0x610, 0x61a; 0x620, 0x63f;
+     0x640, 0x640; 0x641, 0x64a; 0x64b, 0x657; 0x659, 0x65f; 0x66e, 0x66f;
+     0x670, 0x670; 0x671, 0x6d3; 0x6d5, 0x6d5; 0x6d6, 0x6dc; 0x6e1, 0x6e4;
+     0x6e5, 0x6e6; 0x6e7, 0x6e8; 0x6ed, 0x6ed; 0x6ee, 0x6ef; 0x6fa, 0x6fc;
+     0x6ff, 0x6ff; 0x710, 0x710; 0x711, 0x711; 0x712, 0x72f; 0x730, 0x73f;
+     0x74d, 0x7a5; 0x7a6, 0x7b0; 0x7b1, 0x7b1; 0x7ca, 0x7ea; 0x7f4, 0x7f5;
+     0x7fa, 0x7fa; 0x800, 0x815; 0x816, 0x817; 0x81a, 0x81a; 0x81b, 0x823;
+     0x824, 0x824; 0x825, 0x827; 0x828, 0x828; 0x829, 0x82c; 0x840, 0x858;
+     0x860, 0x86a; 0x870, 0x887; 0x889, 0x88e; 0x8a0, 0x8c8; 0x8c9, 0x8c9;
+     0x8d4, 0x8df; 0x8e3, 0x8e9; 0x8f0, 0x902; 0x903, 0x903; 0x904, 0x939;
+     0x93a, 0x93a; 0x93b, 0x93b; 0x93d, 0x93d; 0x93e, 0x940; 0x941, 0x948;
+     0x949, 0x94c; 0x94e, 0x94f; 0x950, 0x950; 0x955, 0x957; 0x958, 0x961;
+     0x962, 0x963; 0x971, 0x971; 0x972, 0x980; 0x981, 0x981; 0x982, 0x983;
+     0x985, 0x98c; 0x98f, 0x990; 0x993, 0x9a8; 0x9aa, 0x9b0; 0x9b2, 0x9b2;
+     0x9b6, 0x9b9; 0x9bd, 0x9bd; 0x9be, 0x9c0; 0x9c1, 0x9c4; 0x9c7, 0x9c8;
+     0x9cb, 0x9cc; 0x9ce, 0x9ce; 0x9d7, 0x9d7; 0x9dc, 0x9dd; 0x9df, 0x9e1;
+     0x9e2, 0x9e3; 0x9f0, 0x9f1; 0x9fc, 0x9fc; 0xa01, 0xa02; 0xa03, 0xa03;
+     0xa05, 0xa0a; 0xa0f, 0xa10; 0xa13, 0xa28; 0xa2a, 0xa30; 0xa32, 0xa33;
+     0xa35, 0xa36; 0xa38, 0xa39; 0xa3e, 0xa40; 0xa41, 0xa42; 0xa47, 0xa48;
+     0xa4b, 0xa4c; 0xa51, 0xa51; 0xa59, 0xa5c; 0xa5e, 0xa5e; 0xa70, 0xa71;
+     0xa72, 0xa74; 0xa75, 0xa75; 0xa81, 0xa82; 0xa83, 0xa83; 0xa85, 0xa8d;
+     0xa8f, 0xa91; 0xa93, 0xaa8; 0xaaa, 0xab0; 0xab2, 0xab3; 0xab5, 0xab9;
+     0xabd, 0xabd; 0xabe, 0xac0; 0xac1, 0xac5; 0xac7, 0xac8; 0xac9, 0xac9;
+     0xacb, 0xacc; 0xad0, 0xad0; 0xae0, 0xae1; 0xae2, 0xae3; 0xaf9, 0xaf9;
+     0xafa, 0xafc; 0xb01, 0xb01; 0xb02, 0xb03; 0xb05, 0xb0c; 0xb0f, 0xb10;
+     0xb13, 0xb28; 0xb2a, 0xb30; 0xb32, 0xb33; 0xb35, 0xb39; 0xb3d, 0xb3d;
+     0xb3e, 0xb3e; 0xb3f, 0xb3f; 0xb40, 0xb40; 0xb41, 0xb44; 0xb47, 0xb48;
+     0xb4b, 0xb4c; 0xb56, 0xb56; 0xb57, 0xb57; 0xb5c, 0xb5d; 0xb5f, 0xb61;
+     0xb62, 0xb63; 0xb71, 0xb71; 0xb82, 0xb82; 0xb83, 0xb83; 0xb85, 0xb8a;
+     0xb8e, 0xb90; 0xb92, 0xb95; 0xb99, 0xb9a; 0xb9c, 0xb9c; 0xb9e, 0xb9f;
+     0xba3, 0xba4; 0xba8, 0xbaa; 0xbae, 0xbb9; 0xbbe, 0xbbf; 0xbc0, 0xbc0;
+     0xbc1, 0xbc2; 0xbc6, 0xbc8; 0xbca, 0xbcc; 0xbd0, 0xbd0; 0xbd7, 0xbd7;
+     0xc00, 0xc00; 0xc01, 0xc03; 0xc04, 0xc04; 0xc05, 0xc0c; 0xc0e, 0xc10;
+     0xc12, 0xc28; 0xc2a, 0xc39; 0xc3d, 0xc3d; 0xc3e, 0xc40; 0xc41, 0xc44;
+     0xc46, 0xc48; 0xc4a, 0xc4c; 0xc55, 0xc56; 0xc58, 0xc5a; 0xc5d, 0xc5d;
+     0xc60, 0xc61; 0xc62, 0xc63; 0xc80, 0xc80; 0xc81, 0xc81; 0xc82, 0xc83;
+     0xc85, 0xc8c; 0xc8e, 0xc90; 0xc92, 0xca8; 0xcaa, 0xcb3; 0xcb5, 0xcb9;
+     0xcbd, 0xcbd; 0xcbe, 0xcbe; 0xcbf, 0xcbf; 0xcc0, 0xcc4; 0xcc6, 0xcc6;
+     0xcc7, 0xcc8; 0xcca, 0xccb; 0xccc, 0xccc; 0xcd5, 0xcd6; 0xcdd, 0xcde;
+     0xce0, 0xce1; 0xce2, 0xce3; 0xcf1, 0xcf2; 0xcf3, 0xcf3; 0xd00, 0xd01;
+     0xd02, 0xd03; 0xd04, 0xd0c; 0xd0e, 0xd10; 0xd12, 0xd3a; 0xd3d, 0xd3d;
+     0xd3e, 0xd40; 0xd41, 0xd44; 0xd46, 0xd48; 0xd4a, 0xd4c; 0xd4e, 0xd4e;
+     0xd54, 0xd56; 0xd57, 0xd57; 0xd5f, 0xd61; 0xd62, 0xd63; 0xd7a, 0xd7f;
+     0xd81, 0xd81; 0xd82, 0xd83; 0xd85, 0xd96; 0xd9a, 0xdb1; 0xdb3, 0xdbb;
+     0xdbd, 0xdbd; 0xdc0, 0xdc6; 0xdcf, 0xdd1; 0xdd2, 0xdd4; 0xdd6, 0xdd6;
+     0xdd8, 0xddf; 0xdf2, 0xdf3; 0xe01, 0xe30; 0xe31, 0xe31; 0xe32, 0xe33;
+     0xe34, 0xe3a; 0xe40, 0xe45; 0xe46, 0xe46; 0xe4d, 0xe4d; 0xe81, 0xe82;
+     0xe84, 0xe84; 0xe86, 0xe8a; 0xe8c, 0xea3; 0xea5, 0xea5; 0xea7, 0xeb0;
+     0xeb1, 0xeb1; 0xeb2, 0xeb3; 0xeb4, 0xeb9; 0xebb, 0xebc; 0xebd, 0xebd;
+     0xec0, 0xec4; 0xec6, 0xec6; 0xecd, 0xecd; 0xedc, 0xedf; 0xf00, 0xf00;
+     0xf40, 0xf47; 0xf49, 0xf6c; 0xf71, 0xf7e; 0xf7f, 0xf7f; 0xf80, 0xf83;
+     0xf88, 0xf8c; 0xf8d, 0xf97; 0xf99, 0xfbc; 0x1000, 0x102a; 0x102b, 0x102c;
+     0x102d, 0x1030; 0x1031, 0x1031; 0x1032, 0x1036; 0x1038, 0x1038; 0x103b, 0x103c;
+     0x103d, 0x103e; 0x103f, 0x103f; 0x1050, 0x1055; 0x1056, 0x1057; 0x1058, 0x1059;
+     0x105a, 0x105d; 0x105e, 0x1060; 0x1061, 0x1061; 0x1062, 0x1064; 0x1065, 0x1066;
+     0x1067, 0x106d; 0x106e, 0x1070; 0x1071, 0x1074; 0x1075, 0x1081; 0x1082, 0x1082;
+     0x1083, 0x1084; 0x1085, 0x1086; 0x1087, 0x108c; 0x108d, 0x108d; 0x108e, 0x108e;
+     0x108f, 0x108f; 0x109a, 0x109c; 0x109d, 0x109d; 0x10a0, 0x10c5; 0x10c7, 0x10c7;
+     0x10cd, 0x10cd; 0x10d0, 0x10fa; 0x10fc, 0x10fc; 0x10fd, 0x10ff; 0x1100, 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, 0x16f0; 0x16f1, 0x16f8; 0x1700, 0x1711;
+     0x1712, 0x1713; 0x171f, 0x1731; 0x1732, 0x1733; 0x1740, 0x1751; 0x1752, 0x1753;
+     0x1760, 0x176c; 0x176e, 0x1770; 0x1772, 0x1773; 0x1780, 0x17b3; 0x17b6, 0x17b6;
+     0x17b7, 0x17bd; 0x17be, 0x17c5; 0x17c6, 0x17c6; 0x17c7, 0x17c8; 0x17d7, 0x17d7;
+     0x17dc, 0x17dc; 0x1820, 0x1842; 0x1843, 0x1843; 0x1844, 0x1878; 0x1880, 0x1884;
+     0x1885, 0x1886; 0x1887, 0x18a8; 0x18a9, 0x18a9; 0x18aa, 0x18aa; 0x18b0, 0x18f5;
+     0x1900, 0x191e; 0x1920, 0x1922; 0x1923, 0x1926; 0x1927, 0x1928; 0x1929, 0x192b;
+     0x1930, 0x1931; 0x1932, 0x1932; 0x1933, 0x1938; 0x1950, 0x196d; 0x1970, 0x1974;
+     0x1980, 0x19ab; 0x19b0, 0x19c9; 0x1a00, 0x1a16; 0x1a17, 0x1a18; 0x1a19, 0x1a1a;
+     0x1a1b, 0x1a1b; 0x1a20, 0x1a54; 0x1a55, 0x1a55; 0x1a56, 0x1a56; 0x1a57, 0x1a57;
+     0x1a58, 0x1a5e; 0x1a61, 0x1a61; 0x1a62, 0x1a62; 0x1a63, 0x1a64; 0x1a65, 0x1a6c;
+     0x1a6d, 0x1a72; 0x1a73, 0x1a74; 0x1aa7, 0x1aa7; 0x1abf, 0x1ac0; 0x1acc, 0x1ace;
+     0x1b00, 0x1b03; 0x1b04, 0x1b04; 0x1b05, 0x1b33; 0x1b35, 0x1b35; 0x1b36, 0x1b3a;
+     0x1b3b, 0x1b3b; 0x1b3c, 0x1b3c; 0x1b3d, 0x1b41; 0x1b42, 0x1b42; 0x1b43, 0x1b43;
+     0x1b45, 0x1b4c; 0x1b80, 0x1b81; 0x1b82, 0x1b82; 0x1b83, 0x1ba0; 0x1ba1, 0x1ba1;
+     0x1ba2, 0x1ba5; 0x1ba6, 0x1ba7; 0x1ba8, 0x1ba9; 0x1bac, 0x1bad; 0x1bae, 0x1baf;
+     0x1bba, 0x1be5; 0x1be7, 0x1be7; 0x1be8, 0x1be9; 0x1bea, 0x1bec; 0x1bed, 0x1bed;
+     0x1bee, 0x1bee; 0x1bef, 0x1bf1; 0x1c00, 0x1c23; 0x1c24, 0x1c2b; 0x1c2c, 0x1c33;
+     0x1c34, 0x1c35; 0x1c36, 0x1c36; 0x1c4d, 0x1c4f; 0x1c5a, 0x1c77; 0x1c78, 0x1c7d;
+     0x1c80, 0x1c88; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1ce9, 0x1cec; 0x1cee, 0x1cf3;
+     0x1cf5, 0x1cf6; 0x1cfa, 0x1cfa; 0x1d00, 0x1d2b; 0x1d2c, 0x1d6a; 0x1d6b, 0x1d77;
+     0x1d78, 0x1d78; 0x1d79, 0x1d9a; 0x1d9b, 0x1dbf; 0x1de7, 0x1df4; 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; 0x2135, 0x2138; 0x2139, 0x2139; 0x213c, 0x213f; 0x2145, 0x2149;
+     0x214e, 0x214e; 0x2160, 0x2182; 0x2183, 0x2184; 0x2185, 0x2188; 0x24b6, 0x24e9;
+     0x2c00, 0x2c7b; 0x2c7c, 0x2c7d; 0x2c7e, 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; 0x2de0, 0x2dff;
+     0x2e2f, 0x2e2f; 0x3005, 0x3005; 0x3006, 0x3006; 0x3007, 0x3007; 0x3021, 0x3029;
+     0x3031, 0x3035; 0x3038, 0x303a; 0x303b, 0x303b; 0x303c, 0x303c; 0x3041, 0x3096;
+     0x309d, 0x309e; 0x309f, 0x309f; 0x30a1, 0x30fa; 0x30fc, 0x30fe; 0x30ff, 0x30ff;
+     0x3105, 0x312f; 0x3131, 0x318e; 0x31a0, 0x31bf; 0x31f0, 0x31ff; 0x3400, 0x4dbf;
+     0x4e00, 0xa014; 0xa015, 0xa015; 0xa016, 0xa48c; 0xa4d0, 0xa4f7; 0xa4f8, 0xa4fd;
+     0xa500, 0xa60b; 0xa60c, 0xa60c; 0xa610, 0xa61f; 0xa62a, 0xa62b; 0xa640, 0xa66d;
+     0xa66e, 0xa66e; 0xa674, 0xa67b; 0xa67f, 0xa67f; 0xa680, 0xa69b; 0xa69c, 0xa69d;
+     0xa69e, 0xa69f; 0xa6a0, 0xa6e5; 0xa6e6, 0xa6ef; 0xa717, 0xa71f; 0xa722, 0xa76f;
+     0xa770, 0xa770; 0xa771, 0xa787; 0xa788, 0xa788; 0xa78b, 0xa78e; 0xa78f, 0xa78f;
+     0xa790, 0xa7ca; 0xa7d0, 0xa7d1; 0xa7d3, 0xa7d3; 0xa7d5, 0xa7d9; 0xa7f2, 0xa7f4;
+     0xa7f5, 0xa7f6; 0xa7f7, 0xa7f7; 0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa; 0xa7fb, 0xa801;
+     0xa802, 0xa802; 0xa803, 0xa805; 0xa807, 0xa80a; 0xa80b, 0xa80b; 0xa80c, 0xa822;
+     0xa823, 0xa824; 0xa825, 0xa826; 0xa827, 0xa827; 0xa840, 0xa873; 0xa880, 0xa881;
+     0xa882, 0xa8b3; 0xa8b4, 0xa8c3; 0xa8c5, 0xa8c5; 0xa8f2, 0xa8f7; 0xa8fb, 0xa8fb;
+     0xa8fd, 0xa8fe; 0xa8ff, 0xa8ff; 0xa90a, 0xa925; 0xa926, 0xa92a; 0xa930, 0xa946;
+     0xa947, 0xa951; 0xa952, 0xa952; 0xa960, 0xa97c; 0xa980, 0xa982; 0xa983, 0xa983;
+     0xa984, 0xa9b2; 0xa9b4, 0xa9b5; 0xa9b6, 0xa9b9; 0xa9ba, 0xa9bb; 0xa9bc, 0xa9bd;
+     0xa9be, 0xa9bf; 0xa9cf, 0xa9cf; 0xa9e0, 0xa9e4; 0xa9e5, 0xa9e5; 0xa9e6, 0xa9e6;
+     0xa9e7, 0xa9ef; 0xa9fa, 0xa9fe; 0xaa00, 0xaa28; 0xaa29, 0xaa2e; 0xaa2f, 0xaa30;
+     0xaa31, 0xaa32; 0xaa33, 0xaa34; 0xaa35, 0xaa36; 0xaa40, 0xaa42; 0xaa43, 0xaa43;
+     0xaa44, 0xaa4b; 0xaa4c, 0xaa4c; 0xaa4d, 0xaa4d; 0xaa60, 0xaa6f; 0xaa70, 0xaa70;
+     0xaa71, 0xaa76; 0xaa7a, 0xaa7a; 0xaa7b, 0xaa7b; 0xaa7c, 0xaa7c; 0xaa7d, 0xaa7d;
+     0xaa7e, 0xaaaf; 0xaab0, 0xaab0; 0xaab1, 0xaab1; 0xaab2, 0xaab4; 0xaab5, 0xaab6;
+     0xaab7, 0xaab8; 0xaab9, 0xaabd; 0xaabe, 0xaabe; 0xaac0, 0xaac0; 0xaac2, 0xaac2;
+     0xaadb, 0xaadc; 0xaadd, 0xaadd; 0xaae0, 0xaaea; 0xaaeb, 0xaaeb; 0xaaec, 0xaaed;
+     0xaaee, 0xaaef; 0xaaf2, 0xaaf2; 0xaaf3, 0xaaf4; 0xaaf5, 0xaaf5; 0xab01, 0xab06;
+     0xab09, 0xab0e; 0xab11, 0xab16; 0xab20, 0xab26; 0xab28, 0xab2e; 0xab30, 0xab5a;
+     0xab5c, 0xab5f; 0xab60, 0xab68; 0xab69, 0xab69; 0xab70, 0xabbf; 0xabc0, 0xabe2;
+     0xabe3, 0xabe4; 0xabe5, 0xabe5; 0xabe6, 0xabe7; 0xabe8, 0xabe8; 0xabe9, 0xabea;
+     0xac00, 0xd7a3; 0xd7b0, 0xd7c6; 0xd7cb, 0xd7fb; 0xf900, 0xfa6d; 0xfa70, 0xfad9;
+     0xfb00, 0xfb06; 0xfb13, 0xfb17; 0xfb1d, 0xfb1d; 0xfb1e, 0xfb1e; 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, 0xff6f;
+     0xff70, 0xff70; 0xff71, 0xff9d; 0xff9e, 0xff9f; 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; 0x1032d, 0x10340;
+     0x10341, 0x10341; 0x10342, 0x10349; 0x1034a, 0x1034a; 0x10350, 0x10375; 0x10376, 0x1037a;
+     0x10380, 0x1039d; 0x103a0, 0x103c3; 0x103c8, 0x103cf; 0x103d1, 0x103d5; 0x10400, 0x1044f;
+     0x10450, 0x1049d; 0x104b0, 0x104d3; 0x104d8, 0x104fb; 0x10500, 0x10527; 0x10530, 0x10563;
+     0x10570, 0x1057a; 0x1057c, 0x1058a; 0x1058c, 0x10592; 0x10594, 0x10595; 0x10597, 0x105a1;
+     0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc; 0x10600, 0x10736; 0x10740, 0x10755;
+     0x10760, 0x10767; 0x10780, 0x10785; 0x10787, 0x107b0; 0x107b2, 0x107ba; 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; 0x10a01, 0x10a03;
+     0x10a05, 0x10a06; 0x10a0c, 0x10a0f; 0x10a10, 0x10a13; 0x10a15, 0x10a17; 0x10a19, 0x10a35;
+     0x10a60, 0x10a7c; 0x10a80, 0x10a9c; 0x10ac0, 0x10ac7; 0x10ac9, 0x10ae4; 0x10b00, 0x10b35;
+     0x10b40, 0x10b55; 0x10b60, 0x10b72; 0x10b80, 0x10b91; 0x10c00, 0x10c48; 0x10c80, 0x10cb2;
+     0x10cc0, 0x10cf2; 0x10d00, 0x10d23; 0x10d24, 0x10d27; 0x10e80, 0x10ea9; 0x10eab, 0x10eac;
+     0x10eb0, 0x10eb1; 0x10f00, 0x10f1c; 0x10f27, 0x10f27; 0x10f30, 0x10f45; 0x10f70, 0x10f81;
+     0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; 0x11000, 0x11000; 0x11001, 0x11001; 0x11002, 0x11002;
+     0x11003, 0x11037; 0x11038, 0x11045; 0x11071, 0x11072; 0x11073, 0x11074; 0x11075, 0x11075;
+     0x11080, 0x11081; 0x11082, 0x11082; 0x11083, 0x110af; 0x110b0, 0x110b2; 0x110b3, 0x110b6;
+     0x110b7, 0x110b8; 0x110c2, 0x110c2; 0x110d0, 0x110e8; 0x11100, 0x11102; 0x11103, 0x11126;
+     0x11127, 0x1112b; 0x1112c, 0x1112c; 0x1112d, 0x11132; 0x11144, 0x11144; 0x11145, 0x11146;
+     0x11147, 0x11147; 0x11150, 0x11172; 0x11176, 0x11176; 0x11180, 0x11181; 0x11182, 0x11182;
+     0x11183, 0x111b2; 0x111b3, 0x111b5; 0x111b6, 0x111be; 0x111bf, 0x111bf; 0x111c1, 0x111c4;
+     0x111ce, 0x111ce; 0x111cf, 0x111cf; 0x111da, 0x111da; 0x111dc, 0x111dc; 0x11200, 0x11211;
+     0x11213, 0x1122b; 0x1122c, 0x1122e; 0x1122f, 0x11231; 0x11232, 0x11233; 0x11234, 0x11234;
+     0x11237, 0x11237; 0x1123e, 0x1123e; 0x1123f, 0x11240; 0x11241, 0x11241; 0x11280, 0x11286;
+     0x11288, 0x11288; 0x1128a, 0x1128d; 0x1128f, 0x1129d; 0x1129f, 0x112a8; 0x112b0, 0x112de;
+     0x112df, 0x112df; 0x112e0, 0x112e2; 0x112e3, 0x112e8; 0x11300, 0x11301; 0x11302, 0x11303;
+     0x11305, 0x1130c; 0x1130f, 0x11310; 0x11313, 0x11328; 0x1132a, 0x11330; 0x11332, 0x11333;
+     0x11335, 0x11339; 0x1133d, 0x1133d; 0x1133e, 0x1133f; 0x11340, 0x11340; 0x11341, 0x11344;
+     0x11347, 0x11348; 0x1134b, 0x1134c; 0x11350, 0x11350; 0x11357, 0x11357; 0x1135d, 0x11361;
+     0x11362, 0x11363; 0x11400, 0x11434; 0x11435, 0x11437; 0x11438, 0x1143f; 0x11440, 0x11441;
+     0x11443, 0x11444; 0x11445, 0x11445; 0x11447, 0x1144a; 0x1145f, 0x11461; 0x11480, 0x114af;
+     0x114b0, 0x114b2; 0x114b3, 0x114b8; 0x114b9, 0x114b9; 0x114ba, 0x114ba; 0x114bb, 0x114be;
+     0x114bf, 0x114c0; 0x114c1, 0x114c1; 0x114c4, 0x114c5; 0x114c7, 0x114c7; 0x11580, 0x115ae;
+     0x115af, 0x115b1; 0x115b2, 0x115b5; 0x115b8, 0x115bb; 0x115bc, 0x115bd; 0x115be, 0x115be;
+     0x115d8, 0x115db; 0x115dc, 0x115dd; 0x11600, 0x1162f; 0x11630, 0x11632; 0x11633, 0x1163a;
+     0x1163b, 0x1163c; 0x1163d, 0x1163d; 0x1163e, 0x1163e; 0x11640, 0x11640; 0x11644, 0x11644;
+     0x11680, 0x116aa; 0x116ab, 0x116ab; 0x116ac, 0x116ac; 0x116ad, 0x116ad; 0x116ae, 0x116af;
+     0x116b0, 0x116b5; 0x116b8, 0x116b8; 0x11700, 0x1171a; 0x1171d, 0x1171f; 0x11720, 0x11721;
+     0x11722, 0x11725; 0x11726, 0x11726; 0x11727, 0x1172a; 0x11740, 0x11746; 0x11800, 0x1182b;
+     0x1182c, 0x1182e; 0x1182f, 0x11837; 0x11838, 0x11838; 0x118a0, 0x118df; 0x118ff, 0x11906;
+     0x11909, 0x11909; 0x1190c, 0x11913; 0x11915, 0x11916; 0x11918, 0x1192f; 0x11930, 0x11935;
+     0x11937, 0x11938; 0x1193b, 0x1193c; 0x1193f, 0x1193f; 0x11940, 0x11940; 0x11941, 0x11941;
+     0x11942, 0x11942; 0x119a0, 0x119a7; 0x119aa, 0x119d0; 0x119d1, 0x119d3; 0x119d4, 0x119d7;
+     0x119da, 0x119db; 0x119dc, 0x119df; 0x119e1, 0x119e1; 0x119e3, 0x119e3; 0x119e4, 0x119e4;
+     0x11a00, 0x11a00; 0x11a01, 0x11a0a; 0x11a0b, 0x11a32; 0x11a35, 0x11a38; 0x11a39, 0x11a39;
+     0x11a3a, 0x11a3a; 0x11a3b, 0x11a3e; 0x11a50, 0x11a50; 0x11a51, 0x11a56; 0x11a57, 0x11a58;
+     0x11a59, 0x11a5b; 0x11a5c, 0x11a89; 0x11a8a, 0x11a96; 0x11a97, 0x11a97; 0x11a9d, 0x11a9d;
+     0x11ab0, 0x11af8; 0x11c00, 0x11c08; 0x11c0a, 0x11c2e; 0x11c2f, 0x11c2f; 0x11c30, 0x11c36;
+     0x11c38, 0x11c3d; 0x11c3e, 0x11c3e; 0x11c40, 0x11c40; 0x11c72, 0x11c8f; 0x11c92, 0x11ca7;
+     0x11ca9, 0x11ca9; 0x11caa, 0x11cb0; 0x11cb1, 0x11cb1; 0x11cb2, 0x11cb3; 0x11cb4, 0x11cb4;
+     0x11cb5, 0x11cb6; 0x11d00, 0x11d06; 0x11d08, 0x11d09; 0x11d0b, 0x11d30; 0x11d31, 0x11d36;
+     0x11d3a, 0x11d3a; 0x11d3c, 0x11d3d; 0x11d3f, 0x11d41; 0x11d43, 0x11d43; 0x11d46, 0x11d46;
+     0x11d47, 0x11d47; 0x11d60, 0x11d65; 0x11d67, 0x11d68; 0x11d6a, 0x11d89; 0x11d8a, 0x11d8e;
+     0x11d90, 0x11d91; 0x11d93, 0x11d94; 0x11d95, 0x11d95; 0x11d96, 0x11d96; 0x11d98, 0x11d98;
+     0x11ee0, 0x11ef2; 0x11ef3, 0x11ef4; 0x11ef5, 0x11ef6; 0x11f00, 0x11f01; 0x11f02, 0x11f02;
+     0x11f03, 0x11f03; 0x11f04, 0x11f10; 0x11f12, 0x11f33; 0x11f34, 0x11f35; 0x11f36, 0x11f3a;
+     0x11f3e, 0x11f3f; 0x11f40, 0x11f40; 0x11fb0, 0x11fb0; 0x12000, 0x12399; 0x12400, 0x1246e;
+     0x12480, 0x12543; 0x12f90, 0x12ff0; 0x13000, 0x1342f; 0x13441, 0x13446; 0x14400, 0x14646;
+     0x16800, 0x16a38; 0x16a40, 0x16a5e; 0x16a70, 0x16abe; 0x16ad0, 0x16aed; 0x16b00, 0x16b2f;
+     0x16b40, 0x16b43; 0x16b63, 0x16b77; 0x16b7d, 0x16b8f; 0x16e40, 0x16e7f; 0x16f00, 0x16f4a;
+     0x16f4f, 0x16f4f; 0x16f50, 0x16f50; 0x16f51, 0x16f87; 0x16f8f, 0x16f92; 0x16f93, 0x16f9f;
+     0x16fe0, 0x16fe1; 0x16fe3, 0x16fe3; 0x16ff0, 0x16ff1; 0x17000, 0x187f7; 0x18800, 0x18cd5;
+     0x18d00, 0x18d08; 0x1aff0, 0x1aff3; 0x1aff5, 0x1affb; 0x1affd, 0x1affe; 0x1b000, 0x1b122;
+     0x1b132, 0x1b132; 0x1b150, 0x1b152; 0x1b155, 0x1b155; 0x1b164, 0x1b167; 0x1b170, 0x1b2fb;
+     0x1bc00, 0x1bc6a; 0x1bc70, 0x1bc7c; 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99; 0x1bc9e, 0x1bc9e;
+     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;
+     0x1df00, 0x1df09; 0x1df0a, 0x1df0a; 0x1df0b, 0x1df1e; 0x1df25, 0x1df2a; 0x1e000, 0x1e006;
+     0x1e008, 0x1e018; 0x1e01b, 0x1e021; 0x1e023, 0x1e024; 0x1e026, 0x1e02a; 0x1e030, 0x1e06d;
+     0x1e08f, 0x1e08f; 0x1e100, 0x1e12c; 0x1e137, 0x1e13d; 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad;
+     0x1e2c0, 0x1e2eb; 0x1e4d0, 0x1e4ea; 0x1e4eb, 0x1e4eb; 0x1e7e0, 0x1e7e6; 0x1e7e8, 0x1e7eb;
+     0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe; 0x1e800, 0x1e8c4; 0x1e900, 0x1e943; 0x1e947, 0x1e947;
+     0x1e94b, 0x1e94b; 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; 0x1f130, 0x1f149;
+     0x1f150, 0x1f169; 0x1f170, 0x1f189; 0x20000, 0x2a6df; 0x2a700, 0x2b739; 0x2b740, 0x2b81d;
+     0x31350, 0x323af; 0x30000, 0x3134a; 0x2f800, 0x2fa1d; 0x2ceb0, 0x2ebe0; 0x2b820, 0x2cea1]
 
-  let ascii_hex_digit = [(0x61, 0x66); (0x41, 0x46); (0x30, 0x39)]
+  let ascii_hex_digit =
+    [0x61, 0x66; 0x41, 0x46; 0x30, 0x39]
 
   let hex_digit =
-    [
-      (0x30, 0x39);
-      (0x41, 0x46);
-      (0x61, 0x66);
-      (0xff10, 0xff19);
-      (0xff21, 0xff26);
-      (0xff41, 0xff46);
-    ]
+    [0x30, 0x39; 0x41, 0x46; 0x61, 0x66; 0xff10, 0xff19; 0xff21, 0xff26;
+     0xff41, 0xff46]
 
   let id_continue =
-    [
-      (0x30, 0x39);
-      (0x41, 0x5a);
-      (0x5f, 0x5f);
-      (0x61, 0x7a);
-      (0xaa, 0xaa);
-      (0xb5, 0xb5);
-      (0xb7, 0xb7);
-      (0xba, 0xba);
-      (0xc0, 0xd6);
-      (0xd8, 0xf6);
-      (0xf8, 0x1ba);
-      (0x1bb, 0x1bb);
-      (0x1bc, 0x1bf);
-      (0x1c0, 0x1c3);
-      (0x1c4, 0x293);
-      (0x294, 0x294);
-      (0x295, 0x2af);
-      (0x2b0, 0x2c1);
-      (0x2c6, 0x2d1);
-      (0x2e0, 0x2e4);
-      (0x2ec, 0x2ec);
-      (0x2ee, 0x2ee);
-      (0x300, 0x36f);
-      (0x370, 0x373);
-      (0x374, 0x374);
-      (0x376, 0x377);
-      (0x37a, 0x37a);
-      (0x37b, 0x37d);
-      (0x37f, 0x37f);
-      (0x386, 0x386);
-      (0x387, 0x387);
-      (0x388, 0x38a);
-      (0x38c, 0x38c);
-      (0x38e, 0x3a1);
-      (0x3a3, 0x3f5);
-      (0x3f7, 0x481);
-      (0x483, 0x487);
-      (0x48a, 0x52f);
-      (0x531, 0x556);
-      (0x559, 0x559);
-      (0x560, 0x588);
-      (0x591, 0x5bd);
-      (0x5bf, 0x5bf);
-      (0x5c1, 0x5c2);
-      (0x5c4, 0x5c5);
-      (0x5c7, 0x5c7);
-      (0x5d0, 0x5ea);
-      (0x5ef, 0x5f2);
-      (0x610, 0x61a);
-      (0x620, 0x63f);
-      (0x640, 0x640);
-      (0x641, 0x64a);
-      (0x64b, 0x65f);
-      (0x660, 0x669);
-      (0x66e, 0x66f);
-      (0x670, 0x670);
-      (0x671, 0x6d3);
-      (0x6d5, 0x6d5);
-      (0x6d6, 0x6dc);
-      (0x6df, 0x6e4);
-      (0x6e5, 0x6e6);
-      (0x6e7, 0x6e8);
-      (0x6ea, 0x6ed);
-      (0x6ee, 0x6ef);
-      (0x6f0, 0x6f9);
-      (0x6fa, 0x6fc);
-      (0x6ff, 0x6ff);
-      (0x710, 0x710);
-      (0x711, 0x711);
-      (0x712, 0x72f);
-      (0x730, 0x74a);
-      (0x74d, 0x7a5);
-      (0x7a6, 0x7b0);
-      (0x7b1, 0x7b1);
-      (0x7c0, 0x7c9);
-      (0x7ca, 0x7ea);
-      (0x7eb, 0x7f3);
-      (0x7f4, 0x7f5);
-      (0x7fa, 0x7fa);
-      (0x7fd, 0x7fd);
-      (0x800, 0x815);
-      (0x816, 0x819);
-      (0x81a, 0x81a);
-      (0x81b, 0x823);
-      (0x824, 0x824);
-      (0x825, 0x827);
-      (0x828, 0x828);
-      (0x829, 0x82d);
-      (0x840, 0x858);
-      (0x859, 0x85b);
-      (0x860, 0x86a);
-      (0x870, 0x887);
-      (0x889, 0x88e);
-      (0x898, 0x89f);
-      (0x8a0, 0x8c8);
-      (0x8c9, 0x8c9);
-      (0x8ca, 0x8e1);
-      (0x8e3, 0x902);
-      (0x903, 0x903);
-      (0x904, 0x939);
-      (0x93a, 0x93a);
-      (0x93b, 0x93b);
-      (0x93c, 0x93c);
-      (0x93d, 0x93d);
-      (0x93e, 0x940);
-      (0x941, 0x948);
-      (0x949, 0x94c);
-      (0x94d, 0x94d);
-      (0x94e, 0x94f);
-      (0x950, 0x950);
-      (0x951, 0x957);
-      (0x958, 0x961);
-      (0x962, 0x963);
-      (0x966, 0x96f);
-      (0x971, 0x971);
-      (0x972, 0x980);
-      (0x981, 0x981);
-      (0x982, 0x983);
-      (0x985, 0x98c);
-      (0x98f, 0x990);
-      (0x993, 0x9a8);
-      (0x9aa, 0x9b0);
-      (0x9b2, 0x9b2);
-      (0x9b6, 0x9b9);
-      (0x9bc, 0x9bc);
-      (0x9bd, 0x9bd);
-      (0x9be, 0x9c0);
-      (0x9c1, 0x9c4);
-      (0x9c7, 0x9c8);
-      (0x9cb, 0x9cc);
-      (0x9cd, 0x9cd);
-      (0x9ce, 0x9ce);
-      (0x9d7, 0x9d7);
-      (0x9dc, 0x9dd);
-      (0x9df, 0x9e1);
-      (0x9e2, 0x9e3);
-      (0x9e6, 0x9ef);
-      (0x9f0, 0x9f1);
-      (0x9fc, 0x9fc);
-      (0x9fe, 0x9fe);
-      (0xa01, 0xa02);
-      (0xa03, 0xa03);
-      (0xa05, 0xa0a);
-      (0xa0f, 0xa10);
-      (0xa13, 0xa28);
-      (0xa2a, 0xa30);
-      (0xa32, 0xa33);
-      (0xa35, 0xa36);
-      (0xa38, 0xa39);
-      (0xa3c, 0xa3c);
-      (0xa3e, 0xa40);
-      (0xa41, 0xa42);
-      (0xa47, 0xa48);
-      (0xa4b, 0xa4d);
-      (0xa51, 0xa51);
-      (0xa59, 0xa5c);
-      (0xa5e, 0xa5e);
-      (0xa66, 0xa6f);
-      (0xa70, 0xa71);
-      (0xa72, 0xa74);
-      (0xa75, 0xa75);
-      (0xa81, 0xa82);
-      (0xa83, 0xa83);
-      (0xa85, 0xa8d);
-      (0xa8f, 0xa91);
-      (0xa93, 0xaa8);
-      (0xaaa, 0xab0);
-      (0xab2, 0xab3);
-      (0xab5, 0xab9);
-      (0xabc, 0xabc);
-      (0xabd, 0xabd);
-      (0xabe, 0xac0);
-      (0xac1, 0xac5);
-      (0xac7, 0xac8);
-      (0xac9, 0xac9);
-      (0xacb, 0xacc);
-      (0xacd, 0xacd);
-      (0xad0, 0xad0);
-      (0xae0, 0xae1);
-      (0xae2, 0xae3);
-      (0xae6, 0xaef);
-      (0xaf9, 0xaf9);
-      (0xafa, 0xaff);
-      (0xb01, 0xb01);
-      (0xb02, 0xb03);
-      (0xb05, 0xb0c);
-      (0xb0f, 0xb10);
-      (0xb13, 0xb28);
-      (0xb2a, 0xb30);
-      (0xb32, 0xb33);
-      (0xb35, 0xb39);
-      (0xb3c, 0xb3c);
-      (0xb3d, 0xb3d);
-      (0xb3e, 0xb3e);
-      (0xb3f, 0xb3f);
-      (0xb40, 0xb40);
-      (0xb41, 0xb44);
-      (0xb47, 0xb48);
-      (0xb4b, 0xb4c);
-      (0xb4d, 0xb4d);
-      (0xb55, 0xb56);
-      (0xb57, 0xb57);
-      (0xb5c, 0xb5d);
-      (0xb5f, 0xb61);
-      (0xb62, 0xb63);
-      (0xb66, 0xb6f);
-      (0xb71, 0xb71);
-      (0xb82, 0xb82);
-      (0xb83, 0xb83);
-      (0xb85, 0xb8a);
-      (0xb8e, 0xb90);
-      (0xb92, 0xb95);
-      (0xb99, 0xb9a);
-      (0xb9c, 0xb9c);
-      (0xb9e, 0xb9f);
-      (0xba3, 0xba4);
-      (0xba8, 0xbaa);
-      (0xbae, 0xbb9);
-      (0xbbe, 0xbbf);
-      (0xbc0, 0xbc0);
-      (0xbc1, 0xbc2);
-      (0xbc6, 0xbc8);
-      (0xbca, 0xbcc);
-      (0xbcd, 0xbcd);
-      (0xbd0, 0xbd0);
-      (0xbd7, 0xbd7);
-      (0xbe6, 0xbef);
-      (0xc00, 0xc00);
-      (0xc01, 0xc03);
-      (0xc04, 0xc04);
-      (0xc05, 0xc0c);
-      (0xc0e, 0xc10);
-      (0xc12, 0xc28);
-      (0xc2a, 0xc39);
-      (0xc3c, 0xc3c);
-      (0xc3d, 0xc3d);
-      (0xc3e, 0xc40);
-      (0xc41, 0xc44);
-      (0xc46, 0xc48);
-      (0xc4a, 0xc4d);
-      (0xc55, 0xc56);
-      (0xc58, 0xc5a);
-      (0xc5d, 0xc5d);
-      (0xc60, 0xc61);
-      (0xc62, 0xc63);
-      (0xc66, 0xc6f);
-      (0xc80, 0xc80);
-      (0xc81, 0xc81);
-      (0xc82, 0xc83);
-      (0xc85, 0xc8c);
-      (0xc8e, 0xc90);
-      (0xc92, 0xca8);
-      (0xcaa, 0xcb3);
-      (0xcb5, 0xcb9);
-      (0xcbc, 0xcbc);
-      (0xcbd, 0xcbd);
-      (0xcbe, 0xcbe);
-      (0xcbf, 0xcbf);
-      (0xcc0, 0xcc4);
-      (0xcc6, 0xcc6);
-      (0xcc7, 0xcc8);
-      (0xcca, 0xccb);
-      (0xccc, 0xccd);
-      (0xcd5, 0xcd6);
-      (0xcdd, 0xcde);
-      (0xce0, 0xce1);
-      (0xce2, 0xce3);
-      (0xce6, 0xcef);
-      (0xcf1, 0xcf2);
-      (0xd00, 0xd01);
-      (0xd02, 0xd03);
-      (0xd04, 0xd0c);
-      (0xd0e, 0xd10);
-      (0xd12, 0xd3a);
-      (0xd3b, 0xd3c);
-      (0xd3d, 0xd3d);
-      (0xd3e, 0xd40);
-      (0xd41, 0xd44);
-      (0xd46, 0xd48);
-      (0xd4a, 0xd4c);
-      (0xd4d, 0xd4d);
-      (0xd4e, 0xd4e);
-      (0xd54, 0xd56);
-      (0xd57, 0xd57);
-      (0xd5f, 0xd61);
-      (0xd62, 0xd63);
-      (0xd66, 0xd6f);
-      (0xd7a, 0xd7f);
-      (0xd81, 0xd81);
-      (0xd82, 0xd83);
-      (0xd85, 0xd96);
-      (0xd9a, 0xdb1);
-      (0xdb3, 0xdbb);
-      (0xdbd, 0xdbd);
-      (0xdc0, 0xdc6);
-      (0xdca, 0xdca);
-      (0xdcf, 0xdd1);
-      (0xdd2, 0xdd4);
-      (0xdd6, 0xdd6);
-      (0xdd8, 0xddf);
-      (0xde6, 0xdef);
-      (0xdf2, 0xdf3);
-      (0xe01, 0xe30);
-      (0xe31, 0xe31);
-      (0xe32, 0xe33);
-      (0xe34, 0xe3a);
-      (0xe40, 0xe45);
-      (0xe46, 0xe46);
-      (0xe47, 0xe4e);
-      (0xe50, 0xe59);
-      (0xe81, 0xe82);
-      (0xe84, 0xe84);
-      (0xe86, 0xe8a);
-      (0xe8c, 0xea3);
-      (0xea5, 0xea5);
-      (0xea7, 0xeb0);
-      (0xeb1, 0xeb1);
-      (0xeb2, 0xeb3);
-      (0xeb4, 0xebc);
-      (0xebd, 0xebd);
-      (0xec0, 0xec4);
-      (0xec6, 0xec6);
-      (0xec8, 0xecd);
-      (0xed0, 0xed9);
-      (0xedc, 0xedf);
-      (0xf00, 0xf00);
-      (0xf18, 0xf19);
-      (0xf20, 0xf29);
-      (0xf35, 0xf35);
-      (0xf37, 0xf37);
-      (0xf39, 0xf39);
-      (0xf3e, 0xf3f);
-      (0xf40, 0xf47);
-      (0xf49, 0xf6c);
-      (0xf71, 0xf7e);
-      (0xf7f, 0xf7f);
-      (0xf80, 0xf84);
-      (0xf86, 0xf87);
-      (0xf88, 0xf8c);
-      (0xf8d, 0xf97);
-      (0xf99, 0xfbc);
-      (0xfc6, 0xfc6);
-      (0x1000, 0x102a);
-      (0x102b, 0x102c);
-      (0x102d, 0x1030);
-      (0x1031, 0x1031);
-      (0x1032, 0x1037);
-      (0x1038, 0x1038);
-      (0x1039, 0x103a);
-      (0x103b, 0x103c);
-      (0x103d, 0x103e);
-      (0x103f, 0x103f);
-      (0x1040, 0x1049);
-      (0x1050, 0x1055);
-      (0x1056, 0x1057);
-      (0x1058, 0x1059);
-      (0x105a, 0x105d);
-      (0x105e, 0x1060);
-      (0x1061, 0x1061);
-      (0x1062, 0x1064);
-      (0x1065, 0x1066);
-      (0x1067, 0x106d);
-      (0x106e, 0x1070);
-      (0x1071, 0x1074);
-      (0x1075, 0x1081);
-      (0x1082, 0x1082);
-      (0x1083, 0x1084);
-      (0x1085, 0x1086);
-      (0x1087, 0x108c);
-      (0x108d, 0x108d);
-      (0x108e, 0x108e);
-      (0x108f, 0x108f);
-      (0x1090, 0x1099);
-      (0x109a, 0x109c);
-      (0x109d, 0x109d);
-      (0x10a0, 0x10c5);
-      (0x10c7, 0x10c7);
-      (0x10cd, 0x10cd);
-      (0x10d0, 0x10fa);
-      (0x10fc, 0x10fc);
-      (0x10fd, 0x10ff);
-      (0x1100, 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, 0x16f0);
-      (0x16f1, 0x16f8);
-      (0x1700, 0x1711);
-      (0x1712, 0x1714);
-      (0x1715, 0x1715);
-      (0x171f, 0x1731);
-      (0x1732, 0x1733);
-      (0x1734, 0x1734);
-      (0x1740, 0x1751);
-      (0x1752, 0x1753);
-      (0x1760, 0x176c);
-      (0x176e, 0x1770);
-      (0x1772, 0x1773);
-      (0x1780, 0x17b3);
-      (0x17b4, 0x17b5);
-      (0x17b6, 0x17b6);
-      (0x17b7, 0x17bd);
-      (0x17be, 0x17c5);
-      (0x17c6, 0x17c6);
-      (0x17c7, 0x17c8);
-      (0x17c9, 0x17d3);
-      (0x17d7, 0x17d7);
-      (0x17dc, 0x17dc);
-      (0x17dd, 0x17dd);
-      (0x17e0, 0x17e9);
-      (0x180b, 0x180d);
-      (0x180f, 0x180f);
-      (0x1810, 0x1819);
-      (0x1820, 0x1842);
-      (0x1843, 0x1843);
-      (0x1844, 0x1878);
-      (0x1880, 0x1884);
-      (0x1885, 0x1886);
-      (0x1887, 0x18a8);
-      (0x18a9, 0x18a9);
-      (0x18aa, 0x18aa);
-      (0x18b0, 0x18f5);
-      (0x1900, 0x191e);
-      (0x1920, 0x1922);
-      (0x1923, 0x1926);
-      (0x1927, 0x1928);
-      (0x1929, 0x192b);
-      (0x1930, 0x1931);
-      (0x1932, 0x1932);
-      (0x1933, 0x1938);
-      (0x1939, 0x193b);
-      (0x1946, 0x194f);
-      (0x1950, 0x196d);
-      (0x1970, 0x1974);
-      (0x1980, 0x19ab);
-      (0x19b0, 0x19c9);
-      (0x19d0, 0x19d9);
-      (0x19da, 0x19da);
-      (0x1a00, 0x1a16);
-      (0x1a17, 0x1a18);
-      (0x1a19, 0x1a1a);
-      (0x1a1b, 0x1a1b);
-      (0x1a20, 0x1a54);
-      (0x1a55, 0x1a55);
-      (0x1a56, 0x1a56);
-      (0x1a57, 0x1a57);
-      (0x1a58, 0x1a5e);
-      (0x1a60, 0x1a60);
-      (0x1a61, 0x1a61);
-      (0x1a62, 0x1a62);
-      (0x1a63, 0x1a64);
-      (0x1a65, 0x1a6c);
-      (0x1a6d, 0x1a72);
-      (0x1a73, 0x1a7c);
-      (0x1a7f, 0x1a7f);
-      (0x1a80, 0x1a89);
-      (0x1a90, 0x1a99);
-      (0x1aa7, 0x1aa7);
-      (0x1ab0, 0x1abd);
-      (0x1abf, 0x1ace);
-      (0x1b00, 0x1b03);
-      (0x1b04, 0x1b04);
-      (0x1b05, 0x1b33);
-      (0x1b34, 0x1b34);
-      (0x1b35, 0x1b35);
-      (0x1b36, 0x1b3a);
-      (0x1b3b, 0x1b3b);
-      (0x1b3c, 0x1b3c);
-      (0x1b3d, 0x1b41);
-      (0x1b42, 0x1b42);
-      (0x1b43, 0x1b44);
-      (0x1b45, 0x1b4c);
-      (0x1b50, 0x1b59);
-      (0x1b6b, 0x1b73);
-      (0x1b80, 0x1b81);
-      (0x1b82, 0x1b82);
-      (0x1b83, 0x1ba0);
-      (0x1ba1, 0x1ba1);
-      (0x1ba2, 0x1ba5);
-      (0x1ba6, 0x1ba7);
-      (0x1ba8, 0x1ba9);
-      (0x1baa, 0x1baa);
-      (0x1bab, 0x1bad);
-      (0x1bae, 0x1baf);
-      (0x1bb0, 0x1bb9);
-      (0x1bba, 0x1be5);
-      (0x1be6, 0x1be6);
-      (0x1be7, 0x1be7);
-      (0x1be8, 0x1be9);
-      (0x1bea, 0x1bec);
-      (0x1bed, 0x1bed);
-      (0x1bee, 0x1bee);
-      (0x1bef, 0x1bf1);
-      (0x1bf2, 0x1bf3);
-      (0x1c00, 0x1c23);
-      (0x1c24, 0x1c2b);
-      (0x1c2c, 0x1c33);
-      (0x1c34, 0x1c35);
-      (0x1c36, 0x1c37);
-      (0x1c40, 0x1c49);
-      (0x1c4d, 0x1c4f);
-      (0x1c50, 0x1c59);
-      (0x1c5a, 0x1c77);
-      (0x1c78, 0x1c7d);
-      (0x1c80, 0x1c88);
-      (0x1c90, 0x1cba);
-      (0x1cbd, 0x1cbf);
-      (0x1cd0, 0x1cd2);
-      (0x1cd4, 0x1ce0);
-      (0x1ce1, 0x1ce1);
-      (0x1ce2, 0x1ce8);
-      (0x1ce9, 0x1cec);
-      (0x1ced, 0x1ced);
-      (0x1cee, 0x1cf3);
-      (0x1cf4, 0x1cf4);
-      (0x1cf5, 0x1cf6);
-      (0x1cf7, 0x1cf7);
-      (0x1cf8, 0x1cf9);
-      (0x1cfa, 0x1cfa);
-      (0x1d00, 0x1d2b);
-      (0x1d2c, 0x1d6a);
-      (0x1d6b, 0x1d77);
-      (0x1d78, 0x1d78);
-      (0x1d79, 0x1d9a);
-      (0x1d9b, 0x1dbf);
-      (0x1dc0, 0x1dff);
-      (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);
-      (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, 0x2118);
-      (0x2119, 0x211d);
-      (0x2124, 0x2124);
-      (0x2126, 0x2126);
-      (0x2128, 0x2128);
-      (0x212a, 0x212d);
-      (0x212e, 0x212e);
-      (0x212f, 0x2134);
-      (0x2135, 0x2138);
-      (0x2139, 0x2139);
-      (0x213c, 0x213f);
-      (0x2145, 0x2149);
-      (0x214e, 0x214e);
-      (0x2160, 0x2182);
-      (0x2183, 0x2184);
-      (0x2185, 0x2188);
-      (0x2c00, 0x2c7b);
-      (0x2c7c, 0x2c7d);
-      (0x2c7e, 0x2ce4);
-      (0x2ceb, 0x2cee);
-      (0x2cef, 0x2cf1);
-      (0x2cf2, 0x2cf3);
-      (0x2d00, 0x2d25);
-      (0x2d27, 0x2d27);
-      (0x2d2d, 0x2d2d);
-      (0x2d30, 0x2d67);
-      (0x2d6f, 0x2d6f);
-      (0x2d7f, 0x2d7f);
-      (0x2d80, 0x2d96);
-      (0x2da0, 0x2da6);
-      (0x2da8, 0x2dae);
-      (0x2db0, 0x2db6);
-      (0x2db8, 0x2dbe);
-      (0x2dc0, 0x2dc6);
-      (0x2dc8, 0x2dce);
-      (0x2dd0, 0x2dd6);
-      (0x2dd8, 0x2dde);
-      (0x2de0, 0x2dff);
-      (0x3005, 0x3005);
-      (0x3006, 0x3006);
-      (0x3007, 0x3007);
-      (0x3021, 0x3029);
-      (0x302a, 0x302d);
-      (0x302e, 0x302f);
-      (0x3031, 0x3035);
-      (0x3038, 0x303a);
-      (0x303b, 0x303b);
-      (0x303c, 0x303c);
-      (0x3041, 0x3096);
-      (0x3099, 0x309a);
-      (0x309b, 0x309c);
-      (0x309d, 0x309e);
-      (0x309f, 0x309f);
-      (0x30a1, 0x30fa);
-      (0x30fc, 0x30fe);
-      (0x30ff, 0x30ff);
-      (0x3105, 0x312f);
-      (0x3131, 0x318e);
-      (0x31a0, 0x31bf);
-      (0x31f0, 0x31ff);
-      (0x3400, 0x4dbf);
-      (0x4e00, 0xa014);
-      (0xa015, 0xa015);
-      (0xa016, 0xa48c);
-      (0xa4d0, 0xa4f7);
-      (0xa4f8, 0xa4fd);
-      (0xa500, 0xa60b);
-      (0xa60c, 0xa60c);
-      (0xa610, 0xa61f);
-      (0xa620, 0xa629);
-      (0xa62a, 0xa62b);
-      (0xa640, 0xa66d);
-      (0xa66e, 0xa66e);
-      (0xa66f, 0xa66f);
-      (0xa674, 0xa67d);
-      (0xa67f, 0xa67f);
-      (0xa680, 0xa69b);
-      (0xa69c, 0xa69d);
-      (0xa69e, 0xa69f);
-      (0xa6a0, 0xa6e5);
-      (0xa6e6, 0xa6ef);
-      (0xa6f0, 0xa6f1);
-      (0xa717, 0xa71f);
-      (0xa722, 0xa76f);
-      (0xa770, 0xa770);
-      (0xa771, 0xa787);
-      (0xa788, 0xa788);
-      (0xa78b, 0xa78e);
-      (0xa78f, 0xa78f);
-      (0xa790, 0xa7ca);
-      (0xa7d0, 0xa7d1);
-      (0xa7d3, 0xa7d3);
-      (0xa7d5, 0xa7d9);
-      (0xa7f2, 0xa7f4);
-      (0xa7f5, 0xa7f6);
-      (0xa7f7, 0xa7f7);
-      (0xa7f8, 0xa7f9);
-      (0xa7fa, 0xa7fa);
-      (0xa7fb, 0xa801);
-      (0xa802, 0xa802);
-      (0xa803, 0xa805);
-      (0xa806, 0xa806);
-      (0xa807, 0xa80a);
-      (0xa80b, 0xa80b);
-      (0xa80c, 0xa822);
-      (0xa823, 0xa824);
-      (0xa825, 0xa826);
-      (0xa827, 0xa827);
-      (0xa82c, 0xa82c);
-      (0xa840, 0xa873);
-      (0xa880, 0xa881);
-      (0xa882, 0xa8b3);
-      (0xa8b4, 0xa8c3);
-      (0xa8c4, 0xa8c5);
-      (0xa8d0, 0xa8d9);
-      (0xa8e0, 0xa8f1);
-      (0xa8f2, 0xa8f7);
-      (0xa8fb, 0xa8fb);
-      (0xa8fd, 0xa8fe);
-      (0xa8ff, 0xa8ff);
-      (0xa900, 0xa909);
-      (0xa90a, 0xa925);
-      (0xa926, 0xa92d);
-      (0xa930, 0xa946);
-      (0xa947, 0xa951);
-      (0xa952, 0xa953);
-      (0xa960, 0xa97c);
-      (0xa980, 0xa982);
-      (0xa983, 0xa983);
-      (0xa984, 0xa9b2);
-      (0xa9b3, 0xa9b3);
-      (0xa9b4, 0xa9b5);
-      (0xa9b6, 0xa9b9);
-      (0xa9ba, 0xa9bb);
-      (0xa9bc, 0xa9bd);
-      (0xa9be, 0xa9c0);
-      (0xa9cf, 0xa9cf);
-      (0xa9d0, 0xa9d9);
-      (0xa9e0, 0xa9e4);
-      (0xa9e5, 0xa9e5);
-      (0xa9e6, 0xa9e6);
-      (0xa9e7, 0xa9ef);
-      (0xa9f0, 0xa9f9);
-      (0xa9fa, 0xa9fe);
-      (0xaa00, 0xaa28);
-      (0xaa29, 0xaa2e);
-      (0xaa2f, 0xaa30);
-      (0xaa31, 0xaa32);
-      (0xaa33, 0xaa34);
-      (0xaa35, 0xaa36);
-      (0xaa40, 0xaa42);
-      (0xaa43, 0xaa43);
-      (0xaa44, 0xaa4b);
-      (0xaa4c, 0xaa4c);
-      (0xaa4d, 0xaa4d);
-      (0xaa50, 0xaa59);
-      (0xaa60, 0xaa6f);
-      (0xaa70, 0xaa70);
-      (0xaa71, 0xaa76);
-      (0xaa7a, 0xaa7a);
-      (0xaa7b, 0xaa7b);
-      (0xaa7c, 0xaa7c);
-      (0xaa7d, 0xaa7d);
-      (0xaa7e, 0xaaaf);
-      (0xaab0, 0xaab0);
-      (0xaab1, 0xaab1);
-      (0xaab2, 0xaab4);
-      (0xaab5, 0xaab6);
-      (0xaab7, 0xaab8);
-      (0xaab9, 0xaabd);
-      (0xaabe, 0xaabf);
-      (0xaac0, 0xaac0);
-      (0xaac1, 0xaac1);
-      (0xaac2, 0xaac2);
-      (0xaadb, 0xaadc);
-      (0xaadd, 0xaadd);
-      (0xaae0, 0xaaea);
-      (0xaaeb, 0xaaeb);
-      (0xaaec, 0xaaed);
-      (0xaaee, 0xaaef);
-      (0xaaf2, 0xaaf2);
-      (0xaaf3, 0xaaf4);
-      (0xaaf5, 0xaaf5);
-      (0xaaf6, 0xaaf6);
-      (0xab01, 0xab06);
-      (0xab09, 0xab0e);
-      (0xab11, 0xab16);
-      (0xab20, 0xab26);
-      (0xab28, 0xab2e);
-      (0xab30, 0xab5a);
-      (0xab5c, 0xab5f);
-      (0xab60, 0xab68);
-      (0xab69, 0xab69);
-      (0xab70, 0xabbf);
-      (0xabc0, 0xabe2);
-      (0xabe3, 0xabe4);
-      (0xabe5, 0xabe5);
-      (0xabe6, 0xabe7);
-      (0xabe8, 0xabe8);
-      (0xabe9, 0xabea);
-      (0xabec, 0xabec);
-      (0xabed, 0xabed);
-      (0xabf0, 0xabf9);
-      (0xac00, 0xd7a3);
-      (0xd7b0, 0xd7c6);
-      (0xd7cb, 0xd7fb);
-      (0xf900, 0xfa6d);
-      (0xfa70, 0xfad9);
-      (0xfb00, 0xfb06);
-      (0xfb13, 0xfb17);
-      (0xfb1d, 0xfb1d);
-      (0xfb1e, 0xfb1e);
-      (0xfb1f, 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, 0xff6f);
-      (0xff70, 0xff70);
-      (0xff71, 0xff9d);
-      (0xff9e, 0xff9f);
-      (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);
-      (0x101fd, 0x101fd);
-      (0x10280, 0x1029c);
-      (0x102a0, 0x102d0);
-      (0x102e0, 0x102e0);
-      (0x10300, 0x1031f);
-      (0x1032d, 0x10340);
-      (0x10341, 0x10341);
-      (0x10342, 0x10349);
-      (0x1034a, 0x1034a);
-      (0x10350, 0x10375);
-      (0x10376, 0x1037a);
-      (0x10380, 0x1039d);
-      (0x103a0, 0x103c3);
-      (0x103c8, 0x103cf);
-      (0x103d1, 0x103d5);
-      (0x10400, 0x1044f);
-      (0x10450, 0x1049d);
-      (0x104a0, 0x104a9);
-      (0x104b0, 0x104d3);
-      (0x104d8, 0x104fb);
-      (0x10500, 0x10527);
-      (0x10530, 0x10563);
-      (0x10570, 0x1057a);
-      (0x1057c, 0x1058a);
-      (0x1058c, 0x10592);
-      (0x10594, 0x10595);
-      (0x10597, 0x105a1);
-      (0x105a3, 0x105b1);
-      (0x105b3, 0x105b9);
-      (0x105bb, 0x105bc);
-      (0x10600, 0x10736);
-      (0x10740, 0x10755);
-      (0x10760, 0x10767);
-      (0x10780, 0x10785);
-      (0x10787, 0x107b0);
-      (0x107b2, 0x107ba);
-      (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);
-      (0x10a01, 0x10a03);
-      (0x10a05, 0x10a06);
-      (0x10a0c, 0x10a0f);
-      (0x10a10, 0x10a13);
-      (0x10a15, 0x10a17);
-      (0x10a19, 0x10a35);
-      (0x10a38, 0x10a3a);
-      (0x10a3f, 0x10a3f);
-      (0x10a60, 0x10a7c);
-      (0x10a80, 0x10a9c);
-      (0x10ac0, 0x10ac7);
-      (0x10ac9, 0x10ae4);
-      (0x10ae5, 0x10ae6);
-      (0x10b00, 0x10b35);
-      (0x10b40, 0x10b55);
-      (0x10b60, 0x10b72);
-      (0x10b80, 0x10b91);
-      (0x10c00, 0x10c48);
-      (0x10c80, 0x10cb2);
-      (0x10cc0, 0x10cf2);
-      (0x10d00, 0x10d23);
-      (0x10d24, 0x10d27);
-      (0x10d30, 0x10d39);
-      (0x10e80, 0x10ea9);
-      (0x10eab, 0x10eac);
-      (0x10eb0, 0x10eb1);
-      (0x10f00, 0x10f1c);
-      (0x10f27, 0x10f27);
-      (0x10f30, 0x10f45);
-      (0x10f46, 0x10f50);
-      (0x10f70, 0x10f81);
-      (0x10f82, 0x10f85);
-      (0x10fb0, 0x10fc4);
-      (0x10fe0, 0x10ff6);
-      (0x11000, 0x11000);
-      (0x11001, 0x11001);
-      (0x11002, 0x11002);
-      (0x11003, 0x11037);
-      (0x11038, 0x11046);
-      (0x11066, 0x1106f);
-      (0x11070, 0x11070);
-      (0x11071, 0x11072);
-      (0x11073, 0x11074);
-      (0x11075, 0x11075);
-      (0x1107f, 0x11081);
-      (0x11082, 0x11082);
-      (0x11083, 0x110af);
-      (0x110b0, 0x110b2);
-      (0x110b3, 0x110b6);
-      (0x110b7, 0x110b8);
-      (0x110b9, 0x110ba);
-      (0x110c2, 0x110c2);
-      (0x110d0, 0x110e8);
-      (0x110f0, 0x110f9);
-      (0x11100, 0x11102);
-      (0x11103, 0x11126);
-      (0x11127, 0x1112b);
-      (0x1112c, 0x1112c);
-      (0x1112d, 0x11134);
-      (0x11136, 0x1113f);
-      (0x11144, 0x11144);
-      (0x11145, 0x11146);
-      (0x11147, 0x11147);
-      (0x11150, 0x11172);
-      (0x11173, 0x11173);
-      (0x11176, 0x11176);
-      (0x11180, 0x11181);
-      (0x11182, 0x11182);
-      (0x11183, 0x111b2);
-      (0x111b3, 0x111b5);
-      (0x111b6, 0x111be);
-      (0x111bf, 0x111c0);
-      (0x111c1, 0x111c4);
-      (0x111c9, 0x111cc);
-      (0x111ce, 0x111ce);
-      (0x111cf, 0x111cf);
-      (0x111d0, 0x111d9);
-      (0x111da, 0x111da);
-      (0x111dc, 0x111dc);
-      (0x11200, 0x11211);
-      (0x11213, 0x1122b);
-      (0x1122c, 0x1122e);
-      (0x1122f, 0x11231);
-      (0x11232, 0x11233);
-      (0x11234, 0x11234);
-      (0x11235, 0x11235);
-      (0x11236, 0x11237);
-      (0x1123e, 0x1123e);
-      (0x11280, 0x11286);
-      (0x11288, 0x11288);
-      (0x1128a, 0x1128d);
-      (0x1128f, 0x1129d);
-      (0x1129f, 0x112a8);
-      (0x112b0, 0x112de);
-      (0x112df, 0x112df);
-      (0x112e0, 0x112e2);
-      (0x112e3, 0x112ea);
-      (0x112f0, 0x112f9);
-      (0x11300, 0x11301);
-      (0x11302, 0x11303);
-      (0x11305, 0x1130c);
-      (0x1130f, 0x11310);
-      (0x11313, 0x11328);
-      (0x1132a, 0x11330);
-      (0x11332, 0x11333);
-      (0x11335, 0x11339);
-      (0x1133b, 0x1133c);
-      (0x1133d, 0x1133d);
-      (0x1133e, 0x1133f);
-      (0x11340, 0x11340);
-      (0x11341, 0x11344);
-      (0x11347, 0x11348);
-      (0x1134b, 0x1134d);
-      (0x11350, 0x11350);
-      (0x11357, 0x11357);
-      (0x1135d, 0x11361);
-      (0x11362, 0x11363);
-      (0x11366, 0x1136c);
-      (0x11370, 0x11374);
-      (0x11400, 0x11434);
-      (0x11435, 0x11437);
-      (0x11438, 0x1143f);
-      (0x11440, 0x11441);
-      (0x11442, 0x11444);
-      (0x11445, 0x11445);
-      (0x11446, 0x11446);
-      (0x11447, 0x1144a);
-      (0x11450, 0x11459);
-      (0x1145e, 0x1145e);
-      (0x1145f, 0x11461);
-      (0x11480, 0x114af);
-      (0x114b0, 0x114b2);
-      (0x114b3, 0x114b8);
-      (0x114b9, 0x114b9);
-      (0x114ba, 0x114ba);
-      (0x114bb, 0x114be);
-      (0x114bf, 0x114c0);
-      (0x114c1, 0x114c1);
-      (0x114c2, 0x114c3);
-      (0x114c4, 0x114c5);
-      (0x114c7, 0x114c7);
-      (0x114d0, 0x114d9);
-      (0x11580, 0x115ae);
-      (0x115af, 0x115b1);
-      (0x115b2, 0x115b5);
-      (0x115b8, 0x115bb);
-      (0x115bc, 0x115bd);
-      (0x115be, 0x115be);
-      (0x115bf, 0x115c0);
-      (0x115d8, 0x115db);
-      (0x115dc, 0x115dd);
-      (0x11600, 0x1162f);
-      (0x11630, 0x11632);
-      (0x11633, 0x1163a);
-      (0x1163b, 0x1163c);
-      (0x1163d, 0x1163d);
-      (0x1163e, 0x1163e);
-      (0x1163f, 0x11640);
-      (0x11644, 0x11644);
-      (0x11650, 0x11659);
-      (0x11680, 0x116aa);
-      (0x116ab, 0x116ab);
-      (0x116ac, 0x116ac);
-      (0x116ad, 0x116ad);
-      (0x116ae, 0x116af);
-      (0x116b0, 0x116b5);
-      (0x116b6, 0x116b6);
-      (0x116b7, 0x116b7);
-      (0x116b8, 0x116b8);
-      (0x116c0, 0x116c9);
-      (0x11700, 0x1171a);
-      (0x1171d, 0x1171f);
-      (0x11720, 0x11721);
-      (0x11722, 0x11725);
-      (0x11726, 0x11726);
-      (0x11727, 0x1172b);
-      (0x11730, 0x11739);
-      (0x11740, 0x11746);
-      (0x11800, 0x1182b);
-      (0x1182c, 0x1182e);
-      (0x1182f, 0x11837);
-      (0x11838, 0x11838);
-      (0x11839, 0x1183a);
-      (0x118a0, 0x118df);
-      (0x118e0, 0x118e9);
-      (0x118ff, 0x11906);
-      (0x11909, 0x11909);
-      (0x1190c, 0x11913);
-      (0x11915, 0x11916);
-      (0x11918, 0x1192f);
-      (0x11930, 0x11935);
-      (0x11937, 0x11938);
-      (0x1193b, 0x1193c);
-      (0x1193d, 0x1193d);
-      (0x1193e, 0x1193e);
-      (0x1193f, 0x1193f);
-      (0x11940, 0x11940);
-      (0x11941, 0x11941);
-      (0x11942, 0x11942);
-      (0x11943, 0x11943);
-      (0x11950, 0x11959);
-      (0x119a0, 0x119a7);
-      (0x119aa, 0x119d0);
-      (0x119d1, 0x119d3);
-      (0x119d4, 0x119d7);
-      (0x119da, 0x119db);
-      (0x119dc, 0x119df);
-      (0x119e0, 0x119e0);
-      (0x119e1, 0x119e1);
-      (0x119e3, 0x119e3);
-      (0x119e4, 0x119e4);
-      (0x11a00, 0x11a00);
-      (0x11a01, 0x11a0a);
-      (0x11a0b, 0x11a32);
-      (0x11a33, 0x11a38);
-      (0x11a39, 0x11a39);
-      (0x11a3a, 0x11a3a);
-      (0x11a3b, 0x11a3e);
-      (0x11a47, 0x11a47);
-      (0x11a50, 0x11a50);
-      (0x11a51, 0x11a56);
-      (0x11a57, 0x11a58);
-      (0x11a59, 0x11a5b);
-      (0x11a5c, 0x11a89);
-      (0x11a8a, 0x11a96);
-      (0x11a97, 0x11a97);
-      (0x11a98, 0x11a99);
-      (0x11a9d, 0x11a9d);
-      (0x11ab0, 0x11af8);
-      (0x11c00, 0x11c08);
-      (0x11c0a, 0x11c2e);
-      (0x11c2f, 0x11c2f);
-      (0x11c30, 0x11c36);
-      (0x11c38, 0x11c3d);
-      (0x11c3e, 0x11c3e);
-      (0x11c3f, 0x11c3f);
-      (0x11c40, 0x11c40);
-      (0x11c50, 0x11c59);
-      (0x11c72, 0x11c8f);
-      (0x11c92, 0x11ca7);
-      (0x11ca9, 0x11ca9);
-      (0x11caa, 0x11cb0);
-      (0x11cb1, 0x11cb1);
-      (0x11cb2, 0x11cb3);
-      (0x11cb4, 0x11cb4);
-      (0x11cb5, 0x11cb6);
-      (0x11d00, 0x11d06);
-      (0x11d08, 0x11d09);
-      (0x11d0b, 0x11d30);
-      (0x11d31, 0x11d36);
-      (0x11d3a, 0x11d3a);
-      (0x11d3c, 0x11d3d);
-      (0x11d3f, 0x11d45);
-      (0x11d46, 0x11d46);
-      (0x11d47, 0x11d47);
-      (0x11d50, 0x11d59);
-      (0x11d60, 0x11d65);
-      (0x11d67, 0x11d68);
-      (0x11d6a, 0x11d89);
-      (0x11d8a, 0x11d8e);
-      (0x11d90, 0x11d91);
-      (0x11d93, 0x11d94);
-      (0x11d95, 0x11d95);
-      (0x11d96, 0x11d96);
-      (0x11d97, 0x11d97);
-      (0x11d98, 0x11d98);
-      (0x11da0, 0x11da9);
-      (0x11ee0, 0x11ef2);
-      (0x11ef3, 0x11ef4);
-      (0x11ef5, 0x11ef6);
-      (0x11fb0, 0x11fb0);
-      (0x12000, 0x12399);
-      (0x12400, 0x1246e);
-      (0x12480, 0x12543);
-      (0x12f90, 0x12ff0);
-      (0x13000, 0x1342e);
-      (0x14400, 0x14646);
-      (0x16800, 0x16a38);
-      (0x16a40, 0x16a5e);
-      (0x16a60, 0x16a69);
-      (0x16a70, 0x16abe);
-      (0x16ac0, 0x16ac9);
-      (0x16ad0, 0x16aed);
-      (0x16af0, 0x16af4);
-      (0x16b00, 0x16b2f);
-      (0x16b30, 0x16b36);
-      (0x16b40, 0x16b43);
-      (0x16b50, 0x16b59);
-      (0x16b63, 0x16b77);
-      (0x16b7d, 0x16b8f);
-      (0x16e40, 0x16e7f);
-      (0x16f00, 0x16f4a);
-      (0x16f4f, 0x16f4f);
-      (0x16f50, 0x16f50);
-      (0x16f51, 0x16f87);
-      (0x16f8f, 0x16f92);
-      (0x16f93, 0x16f9f);
-      (0x16fe0, 0x16fe1);
-      (0x16fe3, 0x16fe3);
-      (0x16fe4, 0x16fe4);
-      (0x16ff0, 0x16ff1);
-      (0x17000, 0x187f7);
-      (0x18800, 0x18cd5);
-      (0x18d00, 0x18d08);
-      (0x1aff0, 0x1aff3);
-      (0x1aff5, 0x1affb);
-      (0x1affd, 0x1affe);
-      (0x1b000, 0x1b122);
-      (0x1b150, 0x1b152);
-      (0x1b164, 0x1b167);
-      (0x1b170, 0x1b2fb);
-      (0x1bc00, 0x1bc6a);
-      (0x1bc70, 0x1bc7c);
-      (0x1bc80, 0x1bc88);
-      (0x1bc90, 0x1bc99);
-      (0x1bc9d, 0x1bc9e);
-      (0x1cf00, 0x1cf2d);
-      (0x1cf30, 0x1cf46);
-      (0x1d165, 0x1d166);
-      (0x1d167, 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);
-      (0x1df00, 0x1df09);
-      (0x1df0a, 0x1df0a);
-      (0x1df0b, 0x1df1e);
-      (0x1e000, 0x1e006);
-      (0x1e008, 0x1e018);
-      (0x1e01b, 0x1e021);
-      (0x1e023, 0x1e024);
-      (0x1e026, 0x1e02a);
-      (0x1e100, 0x1e12c);
-      (0x1e130, 0x1e136);
-      (0x1e137, 0x1e13d);
-      (0x1e140, 0x1e149);
-      (0x1e14e, 0x1e14e);
-      (0x1e290, 0x1e2ad);
-      (0x1e2ae, 0x1e2ae);
-      (0x1e2c0, 0x1e2eb);
-      (0x1e2ec, 0x1e2ef);
-      (0x1e2f0, 0x1e2f9);
-      (0x1e7e0, 0x1e7e6);
-      (0x1e7e8, 0x1e7eb);
-      (0x1e7ed, 0x1e7ee);
-      (0x1e7f0, 0x1e7fe);
-      (0x1e800, 0x1e8c4);
-      (0x1e8d0, 0x1e8d6);
-      (0x1e900, 0x1e943);
-      (0x1e944, 0x1e94a);
-      (0x1e94b, 0x1e94b);
-      (0x1e950, 0x1e959);
-      (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);
-      (0x1fbf0, 0x1fbf9);
-      (0x20000, 0x2a6df);
-      (0x2a700, 0x2b738);
-      (0x2b740, 0x2b81d);
-      (0x2b820, 0x2cea1);
-      (0x2ceb0, 0x2ebe0);
-      (0x2f800, 0x2fa1d);
-      (0x30000, 0x3134a);
-      (0xe0100, 0xe01ef);
-    ]
+    [0x30, 0x39; 0x41, 0x5a; 0x5f, 0x5f; 0x61, 0x7a; 0xaa, 0xaa;
+     0xb5, 0xb5; 0xb7, 0xb7; 0xba, 0xba; 0xc0, 0xd6; 0xd8, 0xf6;
+     0xf8, 0x1ba; 0x1bb, 0x1bb; 0x1bc, 0x1bf; 0x1c0, 0x1c3; 0x1c4, 0x293;
+     0x294, 0x294; 0x295, 0x2af; 0x2b0, 0x2c1; 0x2c6, 0x2d1; 0x2e0, 0x2e4;
+     0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x300, 0x36f; 0x370, 0x373; 0x374, 0x374;
+     0x376, 0x377; 0x37a, 0x37a; 0x37b, 0x37d; 0x37f, 0x37f; 0x386, 0x386;
+     0x387, 0x387; 0x388, 0x38a; 0x38c, 0x38c; 0x38e, 0x3a1; 0x3a3, 0x3f5;
+     0x3f7, 0x481; 0x483, 0x487; 0x48a, 0x52f; 0x531, 0x556; 0x559, 0x559;
+     0x560, 0x588; 0x591, 0x5bd; 0x5bf, 0x5bf; 0x5c1, 0x5c2; 0x5c4, 0x5c5;
+     0x5c7, 0x5c7; 0x5d0, 0x5ea; 0x5ef, 0x5f2; 0x610, 0x61a; 0x620, 0x63f;
+     0x640, 0x640; 0x641, 0x64a; 0x64b, 0x65f; 0x660, 0x669; 0x66e, 0x66f;
+     0x670, 0x670; 0x671, 0x6d3; 0x6d5, 0x6d5; 0x6d6, 0x6dc; 0x6df, 0x6e4;
+     0x6e5, 0x6e6; 0x6e7, 0x6e8; 0x6ea, 0x6ed; 0x6ee, 0x6ef; 0x6f0, 0x6f9;
+     0x6fa, 0x6fc; 0x6ff, 0x6ff; 0x710, 0x710; 0x711, 0x711; 0x712, 0x72f;
+     0x730, 0x74a; 0x74d, 0x7a5; 0x7a6, 0x7b0; 0x7b1, 0x7b1; 0x7c0, 0x7c9;
+     0x7ca, 0x7ea; 0x7eb, 0x7f3; 0x7f4, 0x7f5; 0x7fa, 0x7fa; 0x7fd, 0x7fd;
+     0x800, 0x815; 0x816, 0x819; 0x81a, 0x81a; 0x81b, 0x823; 0x824, 0x824;
+     0x825, 0x827; 0x828, 0x828; 0x829, 0x82d; 0x840, 0x858; 0x859, 0x85b;
+     0x860, 0x86a; 0x870, 0x887; 0x889, 0x88e; 0x898, 0x89f; 0x8a0, 0x8c8;
+     0x8c9, 0x8c9; 0x8ca, 0x8e1; 0x8e3, 0x902; 0x903, 0x903; 0x904, 0x939;
+     0x93a, 0x93a; 0x93b, 0x93b; 0x93c, 0x93c; 0x93d, 0x93d; 0x93e, 0x940;
+     0x941, 0x948; 0x949, 0x94c; 0x94d, 0x94d; 0x94e, 0x94f; 0x950, 0x950;
+     0x951, 0x957; 0x958, 0x961; 0x962, 0x963; 0x966, 0x96f; 0x971, 0x971;
+     0x972, 0x980; 0x981, 0x981; 0x982, 0x983; 0x985, 0x98c; 0x98f, 0x990;
+     0x993, 0x9a8; 0x9aa, 0x9b0; 0x9b2, 0x9b2; 0x9b6, 0x9b9; 0x9bc, 0x9bc;
+     0x9bd, 0x9bd; 0x9be, 0x9c0; 0x9c1, 0x9c4; 0x9c7, 0x9c8; 0x9cb, 0x9cc;
+     0x9cd, 0x9cd; 0x9ce, 0x9ce; 0x9d7, 0x9d7; 0x9dc, 0x9dd; 0x9df, 0x9e1;
+     0x9e2, 0x9e3; 0x9e6, 0x9ef; 0x9f0, 0x9f1; 0x9fc, 0x9fc; 0x9fe, 0x9fe;
+     0xa01, 0xa02; 0xa03, 0xa03; 0xa05, 0xa0a; 0xa0f, 0xa10; 0xa13, 0xa28;
+     0xa2a, 0xa30; 0xa32, 0xa33; 0xa35, 0xa36; 0xa38, 0xa39; 0xa3c, 0xa3c;
+     0xa3e, 0xa40; 0xa41, 0xa42; 0xa47, 0xa48; 0xa4b, 0xa4d; 0xa51, 0xa51;
+     0xa59, 0xa5c; 0xa5e, 0xa5e; 0xa66, 0xa6f; 0xa70, 0xa71; 0xa72, 0xa74;
+     0xa75, 0xa75; 0xa81, 0xa82; 0xa83, 0xa83; 0xa85, 0xa8d; 0xa8f, 0xa91;
+     0xa93, 0xaa8; 0xaaa, 0xab0; 0xab2, 0xab3; 0xab5, 0xab9; 0xabc, 0xabc;
+     0xabd, 0xabd; 0xabe, 0xac0; 0xac1, 0xac5; 0xac7, 0xac8; 0xac9, 0xac9;
+     0xacb, 0xacc; 0xacd, 0xacd; 0xad0, 0xad0; 0xae0, 0xae1; 0xae2, 0xae3;
+     0xae6, 0xaef; 0xaf9, 0xaf9; 0xafa, 0xaff; 0xb01, 0xb01; 0xb02, 0xb03;
+     0xb05, 0xb0c; 0xb0f, 0xb10; 0xb13, 0xb28; 0xb2a, 0xb30; 0xb32, 0xb33;
+     0xb35, 0xb39; 0xb3c, 0xb3c; 0xb3d, 0xb3d; 0xb3e, 0xb3e; 0xb3f, 0xb3f;
+     0xb40, 0xb40; 0xb41, 0xb44; 0xb47, 0xb48; 0xb4b, 0xb4c; 0xb4d, 0xb4d;
+     0xb55, 0xb56; 0xb57, 0xb57; 0xb5c, 0xb5d; 0xb5f, 0xb61; 0xb62, 0xb63;
+     0xb66, 0xb6f; 0xb71, 0xb71; 0xb82, 0xb82; 0xb83, 0xb83; 0xb85, 0xb8a;
+     0xb8e, 0xb90; 0xb92, 0xb95; 0xb99, 0xb9a; 0xb9c, 0xb9c; 0xb9e, 0xb9f;
+     0xba3, 0xba4; 0xba8, 0xbaa; 0xbae, 0xbb9; 0xbbe, 0xbbf; 0xbc0, 0xbc0;
+     0xbc1, 0xbc2; 0xbc6, 0xbc8; 0xbca, 0xbcc; 0xbcd, 0xbcd; 0xbd0, 0xbd0;
+     0xbd7, 0xbd7; 0xbe6, 0xbef; 0xc00, 0xc00; 0xc01, 0xc03; 0xc04, 0xc04;
+     0xc05, 0xc0c; 0xc0e, 0xc10; 0xc12, 0xc28; 0xc2a, 0xc39; 0xc3c, 0xc3c;
+     0xc3d, 0xc3d; 0xc3e, 0xc40; 0xc41, 0xc44; 0xc46, 0xc48; 0xc4a, 0xc4d;
+     0xc55, 0xc56; 0xc58, 0xc5a; 0xc5d, 0xc5d; 0xc60, 0xc61; 0xc62, 0xc63;
+     0xc66, 0xc6f; 0xc80, 0xc80; 0xc81, 0xc81; 0xc82, 0xc83; 0xc85, 0xc8c;
+     0xc8e, 0xc90; 0xc92, 0xca8; 0xcaa, 0xcb3; 0xcb5, 0xcb9; 0xcbc, 0xcbc;
+     0xcbd, 0xcbd; 0xcbe, 0xcbe; 0xcbf, 0xcbf; 0xcc0, 0xcc4; 0xcc6, 0xcc6;
+     0xcc7, 0xcc8; 0xcca, 0xccb; 0xccc, 0xccd; 0xcd5, 0xcd6; 0xcdd, 0xcde;
+     0xce0, 0xce1; 0xce2, 0xce3; 0xce6, 0xcef; 0xcf1, 0xcf2; 0xcf3, 0xcf3;
+     0xd00, 0xd01; 0xd02, 0xd03; 0xd04, 0xd0c; 0xd0e, 0xd10; 0xd12, 0xd3a;
+     0xd3b, 0xd3c; 0xd3d, 0xd3d; 0xd3e, 0xd40; 0xd41, 0xd44; 0xd46, 0xd48;
+     0xd4a, 0xd4c; 0xd4d, 0xd4d; 0xd4e, 0xd4e; 0xd54, 0xd56; 0xd57, 0xd57;
+     0xd5f, 0xd61; 0xd62, 0xd63; 0xd66, 0xd6f; 0xd7a, 0xd7f; 0xd81, 0xd81;
+     0xd82, 0xd83; 0xd85, 0xd96; 0xd9a, 0xdb1; 0xdb3, 0xdbb; 0xdbd, 0xdbd;
+     0xdc0, 0xdc6; 0xdca, 0xdca; 0xdcf, 0xdd1; 0xdd2, 0xdd4; 0xdd6, 0xdd6;
+     0xdd8, 0xddf; 0xde6, 0xdef; 0xdf2, 0xdf3; 0xe01, 0xe30; 0xe31, 0xe31;
+     0xe32, 0xe33; 0xe34, 0xe3a; 0xe40, 0xe45; 0xe46, 0xe46; 0xe47, 0xe4e;
+     0xe50, 0xe59; 0xe81, 0xe82; 0xe84, 0xe84; 0xe86, 0xe8a; 0xe8c, 0xea3;
+     0xea5, 0xea5; 0xea7, 0xeb0; 0xeb1, 0xeb1; 0xeb2, 0xeb3; 0xeb4, 0xebc;
+     0xebd, 0xebd; 0xec0, 0xec4; 0xec6, 0xec6; 0xec8, 0xece; 0xed0, 0xed9;
+     0xedc, 0xedf; 0xf00, 0xf00; 0xf18, 0xf19; 0xf20, 0xf29; 0xf35, 0xf35;
+     0xf37, 0xf37; 0xf39, 0xf39; 0xf3e, 0xf3f; 0xf40, 0xf47; 0xf49, 0xf6c;
+     0xf71, 0xf7e; 0xf7f, 0xf7f; 0xf80, 0xf84; 0xf86, 0xf87; 0xf88, 0xf8c;
+     0xf8d, 0xf97; 0xf99, 0xfbc; 0xfc6, 0xfc6; 0x1000, 0x102a; 0x102b, 0x102c;
+     0x102d, 0x1030; 0x1031, 0x1031; 0x1032, 0x1037; 0x1038, 0x1038; 0x1039, 0x103a;
+     0x103b, 0x103c; 0x103d, 0x103e; 0x103f, 0x103f; 0x1040, 0x1049; 0x1050, 0x1055;
+     0x1056, 0x1057; 0x1058, 0x1059; 0x105a, 0x105d; 0x105e, 0x1060; 0x1061, 0x1061;
+     0x1062, 0x1064; 0x1065, 0x1066; 0x1067, 0x106d; 0x106e, 0x1070; 0x1071, 0x1074;
+     0x1075, 0x1081; 0x1082, 0x1082; 0x1083, 0x1084; 0x1085, 0x1086; 0x1087, 0x108c;
+     0x108d, 0x108d; 0x108e, 0x108e; 0x108f, 0x108f; 0x1090, 0x1099; 0x109a, 0x109c;
+     0x109d, 0x109d; 0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd; 0x10d0, 0x10fa;
+     0x10fc, 0x10fc; 0x10fd, 0x10ff; 0x1100, 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, 0x16f0; 0x16f1, 0x16f8; 0x1700, 0x1711;
+     0x1712, 0x1714; 0x1715, 0x1715; 0x171f, 0x1731; 0x1732, 0x1733; 0x1734, 0x1734;
+     0x1740, 0x1751; 0x1752, 0x1753; 0x1760, 0x176c; 0x176e, 0x1770; 0x1772, 0x1773;
+     0x1780, 0x17b3; 0x17b4, 0x17b5; 0x17b6, 0x17b6; 0x17b7, 0x17bd; 0x17be, 0x17c5;
+     0x17c6, 0x17c6; 0x17c7, 0x17c8; 0x17c9, 0x17d3; 0x17d7, 0x17d7; 0x17dc, 0x17dc;
+     0x17dd, 0x17dd; 0x17e0, 0x17e9; 0x180b, 0x180d; 0x180f, 0x180f; 0x1810, 0x1819;
+     0x1820, 0x1842; 0x1843, 0x1843; 0x1844, 0x1878; 0x1880, 0x1884; 0x1885, 0x1886;
+     0x1887, 0x18a8; 0x18a9, 0x18a9; 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e;
+     0x1920, 0x1922; 0x1923, 0x1926; 0x1927, 0x1928; 0x1929, 0x192b; 0x1930, 0x1931;
+     0x1932, 0x1932; 0x1933, 0x1938; 0x1939, 0x193b; 0x1946, 0x194f; 0x1950, 0x196d;
+     0x1970, 0x1974; 0x1980, 0x19ab; 0x19b0, 0x19c9; 0x19d0, 0x19d9; 0x19da, 0x19da;
+     0x1a00, 0x1a16; 0x1a17, 0x1a18; 0x1a19, 0x1a1a; 0x1a1b, 0x1a1b; 0x1a20, 0x1a54;
+     0x1a55, 0x1a55; 0x1a56, 0x1a56; 0x1a57, 0x1a57; 0x1a58, 0x1a5e; 0x1a60, 0x1a60;
+     0x1a61, 0x1a61; 0x1a62, 0x1a62; 0x1a63, 0x1a64; 0x1a65, 0x1a6c; 0x1a6d, 0x1a72;
+     0x1a73, 0x1a7c; 0x1a7f, 0x1a7f; 0x1a80, 0x1a89; 0x1a90, 0x1a99; 0x1aa7, 0x1aa7;
+     0x1ab0, 0x1abd; 0x1abf, 0x1ace; 0x1b00, 0x1b03; 0x1b04, 0x1b04; 0x1b05, 0x1b33;
+     0x1b34, 0x1b34; 0x1b35, 0x1b35; 0x1b36, 0x1b3a; 0x1b3b, 0x1b3b; 0x1b3c, 0x1b3c;
+     0x1b3d, 0x1b41; 0x1b42, 0x1b42; 0x1b43, 0x1b44; 0x1b45, 0x1b4c; 0x1b50, 0x1b59;
+     0x1b6b, 0x1b73; 0x1b80, 0x1b81; 0x1b82, 0x1b82; 0x1b83, 0x1ba0; 0x1ba1, 0x1ba1;
+     0x1ba2, 0x1ba5; 0x1ba6, 0x1ba7; 0x1ba8, 0x1ba9; 0x1baa, 0x1baa; 0x1bab, 0x1bad;
+     0x1bae, 0x1baf; 0x1bb0, 0x1bb9; 0x1bba, 0x1be5; 0x1be6, 0x1be6; 0x1be7, 0x1be7;
+     0x1be8, 0x1be9; 0x1bea, 0x1bec; 0x1bed, 0x1bed; 0x1bee, 0x1bee; 0x1bef, 0x1bf1;
+     0x1bf2, 0x1bf3; 0x1c00, 0x1c23; 0x1c24, 0x1c2b; 0x1c2c, 0x1c33; 0x1c34, 0x1c35;
+     0x1c36, 0x1c37; 0x1c40, 0x1c49; 0x1c4d, 0x1c4f; 0x1c50, 0x1c59; 0x1c5a, 0x1c77;
+     0x1c78, 0x1c7d; 0x1c80, 0x1c88; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1cd0, 0x1cd2;
+     0x1cd4, 0x1ce0; 0x1ce1, 0x1ce1; 0x1ce2, 0x1ce8; 0x1ce9, 0x1cec; 0x1ced, 0x1ced;
+     0x1cee, 0x1cf3; 0x1cf4, 0x1cf4; 0x1cf5, 0x1cf6; 0x1cf7, 0x1cf7; 0x1cf8, 0x1cf9;
+     0x1cfa, 0x1cfa; 0x1d00, 0x1d2b; 0x1d2c, 0x1d6a; 0x1d6b, 0x1d77; 0x1d78, 0x1d78;
+     0x1d79, 0x1d9a; 0x1d9b, 0x1dbf; 0x1dc0, 0x1dff; 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; 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, 0x2118;
+     0x2119, 0x211d; 0x2124, 0x2124; 0x2126, 0x2126; 0x2128, 0x2128; 0x212a, 0x212d;
+     0x212e, 0x212e; 0x212f, 0x2134; 0x2135, 0x2138; 0x2139, 0x2139; 0x213c, 0x213f;
+     0x2145, 0x2149; 0x214e, 0x214e; 0x2160, 0x2182; 0x2183, 0x2184; 0x2185, 0x2188;
+     0x2c00, 0x2c7b; 0x2c7c, 0x2c7d; 0x2c7e, 0x2ce4; 0x2ceb, 0x2cee; 0x2cef, 0x2cf1;
+     0x2cf2, 0x2cf3; 0x2d00, 0x2d25; 0x2d27, 0x2d27; 0x2d2d, 0x2d2d; 0x2d30, 0x2d67;
+     0x2d6f, 0x2d6f; 0x2d7f, 0x2d7f; 0x2d80, 0x2d96; 0x2da0, 0x2da6; 0x2da8, 0x2dae;
+     0x2db0, 0x2db6; 0x2db8, 0x2dbe; 0x2dc0, 0x2dc6; 0x2dc8, 0x2dce; 0x2dd0, 0x2dd6;
+     0x2dd8, 0x2dde; 0x2de0, 0x2dff; 0x3005, 0x3005; 0x3006, 0x3006; 0x3007, 0x3007;
+     0x3021, 0x3029; 0x302a, 0x302d; 0x302e, 0x302f; 0x3031, 0x3035; 0x3038, 0x303a;
+     0x303b, 0x303b; 0x303c, 0x303c; 0x3041, 0x3096; 0x3099, 0x309a; 0x309b, 0x309c;
+     0x309d, 0x309e; 0x309f, 0x309f; 0x30a1, 0x30fa; 0x30fc, 0x30fe; 0x30ff, 0x30ff;
+     0x3105, 0x312f; 0x3131, 0x318e; 0x31a0, 0x31bf; 0x31f0, 0x31ff; 0x3400, 0x4dbf;
+     0x4e00, 0xa014; 0xa015, 0xa015; 0xa016, 0xa48c; 0xa4d0, 0xa4f7; 0xa4f8, 0xa4fd;
+     0xa500, 0xa60b; 0xa60c, 0xa60c; 0xa610, 0xa61f; 0xa620, 0xa629; 0xa62a, 0xa62b;
+     0xa640, 0xa66d; 0xa66e, 0xa66e; 0xa66f, 0xa66f; 0xa674, 0xa67d; 0xa67f, 0xa67f;
+     0xa680, 0xa69b; 0xa69c, 0xa69d; 0xa69e, 0xa69f; 0xa6a0, 0xa6e5; 0xa6e6, 0xa6ef;
+     0xa6f0, 0xa6f1; 0xa717, 0xa71f; 0xa722, 0xa76f; 0xa770, 0xa770; 0xa771, 0xa787;
+     0xa788, 0xa788; 0xa78b, 0xa78e; 0xa78f, 0xa78f; 0xa790, 0xa7ca; 0xa7d0, 0xa7d1;
+     0xa7d3, 0xa7d3; 0xa7d5, 0xa7d9; 0xa7f2, 0xa7f4; 0xa7f5, 0xa7f6; 0xa7f7, 0xa7f7;
+     0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa; 0xa7fb, 0xa801; 0xa802, 0xa802; 0xa803, 0xa805;
+     0xa806, 0xa806; 0xa807, 0xa80a; 0xa80b, 0xa80b; 0xa80c, 0xa822; 0xa823, 0xa824;
+     0xa825, 0xa826; 0xa827, 0xa827; 0xa82c, 0xa82c; 0xa840, 0xa873; 0xa880, 0xa881;
+     0xa882, 0xa8b3; 0xa8b4, 0xa8c3; 0xa8c4, 0xa8c5; 0xa8d0, 0xa8d9; 0xa8e0, 0xa8f1;
+     0xa8f2, 0xa8f7; 0xa8fb, 0xa8fb; 0xa8fd, 0xa8fe; 0xa8ff, 0xa8ff; 0xa900, 0xa909;
+     0xa90a, 0xa925; 0xa926, 0xa92d; 0xa930, 0xa946; 0xa947, 0xa951; 0xa952, 0xa953;
+     0xa960, 0xa97c; 0xa980, 0xa982; 0xa983, 0xa983; 0xa984, 0xa9b2; 0xa9b3, 0xa9b3;
+     0xa9b4, 0xa9b5; 0xa9b6, 0xa9b9; 0xa9ba, 0xa9bb; 0xa9bc, 0xa9bd; 0xa9be, 0xa9c0;
+     0xa9cf, 0xa9cf; 0xa9d0, 0xa9d9; 0xa9e0, 0xa9e4; 0xa9e5, 0xa9e5; 0xa9e6, 0xa9e6;
+     0xa9e7, 0xa9ef; 0xa9f0, 0xa9f9; 0xa9fa, 0xa9fe; 0xaa00, 0xaa28; 0xaa29, 0xaa2e;
+     0xaa2f, 0xaa30; 0xaa31, 0xaa32; 0xaa33, 0xaa34; 0xaa35, 0xaa36; 0xaa40, 0xaa42;
+     0xaa43, 0xaa43; 0xaa44, 0xaa4b; 0xaa4c, 0xaa4c; 0xaa4d, 0xaa4d; 0xaa50, 0xaa59;
+     0xaa60, 0xaa6f; 0xaa70, 0xaa70; 0xaa71, 0xaa76; 0xaa7a, 0xaa7a; 0xaa7b, 0xaa7b;
+     0xaa7c, 0xaa7c; 0xaa7d, 0xaa7d; 0xaa7e, 0xaaaf; 0xaab0, 0xaab0; 0xaab1, 0xaab1;
+     0xaab2, 0xaab4; 0xaab5, 0xaab6; 0xaab7, 0xaab8; 0xaab9, 0xaabd; 0xaabe, 0xaabf;
+     0xaac0, 0xaac0; 0xaac1, 0xaac1; 0xaac2, 0xaac2; 0xaadb, 0xaadc; 0xaadd, 0xaadd;
+     0xaae0, 0xaaea; 0xaaeb, 0xaaeb; 0xaaec, 0xaaed; 0xaaee, 0xaaef; 0xaaf2, 0xaaf2;
+     0xaaf3, 0xaaf4; 0xaaf5, 0xaaf5; 0xaaf6, 0xaaf6; 0xab01, 0xab06; 0xab09, 0xab0e;
+     0xab11, 0xab16; 0xab20, 0xab26; 0xab28, 0xab2e; 0xab30, 0xab5a; 0xab5c, 0xab5f;
+     0xab60, 0xab68; 0xab69, 0xab69; 0xab70, 0xabbf; 0xabc0, 0xabe2; 0xabe3, 0xabe4;
+     0xabe5, 0xabe5; 0xabe6, 0xabe7; 0xabe8, 0xabe8; 0xabe9, 0xabea; 0xabec, 0xabec;
+     0xabed, 0xabed; 0xabf0, 0xabf9; 0xac00, 0xd7a3; 0xd7b0, 0xd7c6; 0xd7cb, 0xd7fb;
+     0xf900, 0xfa6d; 0xfa70, 0xfad9; 0xfb00, 0xfb06; 0xfb13, 0xfb17; 0xfb1d, 0xfb1d;
+     0xfb1e, 0xfb1e; 0xfb1f, 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, 0xff6f; 0xff70, 0xff70; 0xff71, 0xff9d;
+     0xff9e, 0xff9f; 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; 0x101fd, 0x101fd;
+     0x10280, 0x1029c; 0x102a0, 0x102d0; 0x102e0, 0x102e0; 0x10300, 0x1031f; 0x1032d, 0x10340;
+     0x10341, 0x10341; 0x10342, 0x10349; 0x1034a, 0x1034a; 0x10350, 0x10375; 0x10376, 0x1037a;
+     0x10380, 0x1039d; 0x103a0, 0x103c3; 0x103c8, 0x103cf; 0x103d1, 0x103d5; 0x10400, 0x1044f;
+     0x10450, 0x1049d; 0x104a0, 0x104a9; 0x104b0, 0x104d3; 0x104d8, 0x104fb; 0x10500, 0x10527;
+     0x10530, 0x10563; 0x10570, 0x1057a; 0x1057c, 0x1058a; 0x1058c, 0x10592; 0x10594, 0x10595;
+     0x10597, 0x105a1; 0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc; 0x10600, 0x10736;
+     0x10740, 0x10755; 0x10760, 0x10767; 0x10780, 0x10785; 0x10787, 0x107b0; 0x107b2, 0x107ba;
+     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;
+     0x10a01, 0x10a03; 0x10a05, 0x10a06; 0x10a0c, 0x10a0f; 0x10a10, 0x10a13; 0x10a15, 0x10a17;
+     0x10a19, 0x10a35; 0x10a38, 0x10a3a; 0x10a3f, 0x10a3f; 0x10a60, 0x10a7c; 0x10a80, 0x10a9c;
+     0x10ac0, 0x10ac7; 0x10ac9, 0x10ae4; 0x10ae5, 0x10ae6; 0x10b00, 0x10b35; 0x10b40, 0x10b55;
+     0x10b60, 0x10b72; 0x10b80, 0x10b91; 0x10c00, 0x10c48; 0x10c80, 0x10cb2; 0x10cc0, 0x10cf2;
+     0x10d00, 0x10d23; 0x10d24, 0x10d27; 0x10d30, 0x10d39; 0x10e80, 0x10ea9; 0x10eab, 0x10eac;
+     0x10eb0, 0x10eb1; 0x10efd, 0x10eff; 0x10f00, 0x10f1c; 0x10f27, 0x10f27; 0x10f30, 0x10f45;
+     0x10f46, 0x10f50; 0x10f70, 0x10f81; 0x10f82, 0x10f85; 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6;
+     0x11000, 0x11000; 0x11001, 0x11001; 0x11002, 0x11002; 0x11003, 0x11037; 0x11038, 0x11046;
+     0x11066, 0x1106f; 0x11070, 0x11070; 0x11071, 0x11072; 0x11073, 0x11074; 0x11075, 0x11075;
+     0x1107f, 0x11081; 0x11082, 0x11082; 0x11083, 0x110af; 0x110b0, 0x110b2; 0x110b3, 0x110b6;
+     0x110b7, 0x110b8; 0x110b9, 0x110ba; 0x110c2, 0x110c2; 0x110d0, 0x110e8; 0x110f0, 0x110f9;
+     0x11100, 0x11102; 0x11103, 0x11126; 0x11127, 0x1112b; 0x1112c, 0x1112c; 0x1112d, 0x11134;
+     0x11136, 0x1113f; 0x11144, 0x11144; 0x11145, 0x11146; 0x11147, 0x11147; 0x11150, 0x11172;
+     0x11173, 0x11173; 0x11176, 0x11176; 0x11180, 0x11181; 0x11182, 0x11182; 0x11183, 0x111b2;
+     0x111b3, 0x111b5; 0x111b6, 0x111be; 0x111bf, 0x111c0; 0x111c1, 0x111c4; 0x111c9, 0x111cc;
+     0x111ce, 0x111ce; 0x111cf, 0x111cf; 0x111d0, 0x111d9; 0x111da, 0x111da; 0x111dc, 0x111dc;
+     0x11200, 0x11211; 0x11213, 0x1122b; 0x1122c, 0x1122e; 0x1122f, 0x11231; 0x11232, 0x11233;
+     0x11234, 0x11234; 0x11235, 0x11235; 0x11236, 0x11237; 0x1123e, 0x1123e; 0x1123f, 0x11240;
+     0x11241, 0x11241; 0x11280, 0x11286; 0x11288, 0x11288; 0x1128a, 0x1128d; 0x1128f, 0x1129d;
+     0x1129f, 0x112a8; 0x112b0, 0x112de; 0x112df, 0x112df; 0x112e0, 0x112e2; 0x112e3, 0x112ea;
+     0x112f0, 0x112f9; 0x11300, 0x11301; 0x11302, 0x11303; 0x11305, 0x1130c; 0x1130f, 0x11310;
+     0x11313, 0x11328; 0x1132a, 0x11330; 0x11332, 0x11333; 0x11335, 0x11339; 0x1133b, 0x1133c;
+     0x1133d, 0x1133d; 0x1133e, 0x1133f; 0x11340, 0x11340; 0x11341, 0x11344; 0x11347, 0x11348;
+     0x1134b, 0x1134d; 0x11350, 0x11350; 0x11357, 0x11357; 0x1135d, 0x11361; 0x11362, 0x11363;
+     0x11366, 0x1136c; 0x11370, 0x11374; 0x11400, 0x11434; 0x11435, 0x11437; 0x11438, 0x1143f;
+     0x11440, 0x11441; 0x11442, 0x11444; 0x11445, 0x11445; 0x11446, 0x11446; 0x11447, 0x1144a;
+     0x11450, 0x11459; 0x1145e, 0x1145e; 0x1145f, 0x11461; 0x11480, 0x114af; 0x114b0, 0x114b2;
+     0x114b3, 0x114b8; 0x114b9, 0x114b9; 0x114ba, 0x114ba; 0x114bb, 0x114be; 0x114bf, 0x114c0;
+     0x114c1, 0x114c1; 0x114c2, 0x114c3; 0x114c4, 0x114c5; 0x114c7, 0x114c7; 0x114d0, 0x114d9;
+     0x11580, 0x115ae; 0x115af, 0x115b1; 0x115b2, 0x115b5; 0x115b8, 0x115bb; 0x115bc, 0x115bd;
+     0x115be, 0x115be; 0x115bf, 0x115c0; 0x115d8, 0x115db; 0x115dc, 0x115dd; 0x11600, 0x1162f;
+     0x11630, 0x11632; 0x11633, 0x1163a; 0x1163b, 0x1163c; 0x1163d, 0x1163d; 0x1163e, 0x1163e;
+     0x1163f, 0x11640; 0x11644, 0x11644; 0x11650, 0x11659; 0x11680, 0x116aa; 0x116ab, 0x116ab;
+     0x116ac, 0x116ac; 0x116ad, 0x116ad; 0x116ae, 0x116af; 0x116b0, 0x116b5; 0x116b6, 0x116b6;
+     0x116b7, 0x116b7; 0x116b8, 0x116b8; 0x116c0, 0x116c9; 0x11700, 0x1171a; 0x1171d, 0x1171f;
+     0x11720, 0x11721; 0x11722, 0x11725; 0x11726, 0x11726; 0x11727, 0x1172b; 0x11730, 0x11739;
+     0x11740, 0x11746; 0x11800, 0x1182b; 0x1182c, 0x1182e; 0x1182f, 0x11837; 0x11838, 0x11838;
+     0x11839, 0x1183a; 0x118a0, 0x118df; 0x118e0, 0x118e9; 0x118ff, 0x11906; 0x11909, 0x11909;
+     0x1190c, 0x11913; 0x11915, 0x11916; 0x11918, 0x1192f; 0x11930, 0x11935; 0x11937, 0x11938;
+     0x1193b, 0x1193c; 0x1193d, 0x1193d; 0x1193e, 0x1193e; 0x1193f, 0x1193f; 0x11940, 0x11940;
+     0x11941, 0x11941; 0x11942, 0x11942; 0x11943, 0x11943; 0x11950, 0x11959; 0x119a0, 0x119a7;
+     0x119aa, 0x119d0; 0x119d1, 0x119d3; 0x119d4, 0x119d7; 0x119da, 0x119db; 0x119dc, 0x119df;
+     0x119e0, 0x119e0; 0x119e1, 0x119e1; 0x119e3, 0x119e3; 0x119e4, 0x119e4; 0x11a00, 0x11a00;
+     0x11a01, 0x11a0a; 0x11a0b, 0x11a32; 0x11a33, 0x11a38; 0x11a39, 0x11a39; 0x11a3a, 0x11a3a;
+     0x11a3b, 0x11a3e; 0x11a47, 0x11a47; 0x11a50, 0x11a50; 0x11a51, 0x11a56; 0x11a57, 0x11a58;
+     0x11a59, 0x11a5b; 0x11a5c, 0x11a89; 0x11a8a, 0x11a96; 0x11a97, 0x11a97; 0x11a98, 0x11a99;
+     0x11a9d, 0x11a9d; 0x11ab0, 0x11af8; 0x11c00, 0x11c08; 0x11c0a, 0x11c2e; 0x11c2f, 0x11c2f;
+     0x11c30, 0x11c36; 0x11c38, 0x11c3d; 0x11c3e, 0x11c3e; 0x11c3f, 0x11c3f; 0x11c40, 0x11c40;
+     0x11c50, 0x11c59; 0x11c72, 0x11c8f; 0x11c92, 0x11ca7; 0x11ca9, 0x11ca9; 0x11caa, 0x11cb0;
+     0x11cb1, 0x11cb1; 0x11cb2, 0x11cb3; 0x11cb4, 0x11cb4; 0x11cb5, 0x11cb6; 0x11d00, 0x11d06;
+     0x11d08, 0x11d09; 0x11d0b, 0x11d30; 0x11d31, 0x11d36; 0x11d3a, 0x11d3a; 0x11d3c, 0x11d3d;
+     0x11d3f, 0x11d45; 0x11d46, 0x11d46; 0x11d47, 0x11d47; 0x11d50, 0x11d59; 0x11d60, 0x11d65;
+     0x11d67, 0x11d68; 0x11d6a, 0x11d89; 0x11d8a, 0x11d8e; 0x11d90, 0x11d91; 0x11d93, 0x11d94;
+     0x11d95, 0x11d95; 0x11d96, 0x11d96; 0x11d97, 0x11d97; 0x11d98, 0x11d98; 0x11da0, 0x11da9;
+     0x11ee0, 0x11ef2; 0x11ef3, 0x11ef4; 0x11ef5, 0x11ef6; 0x11f00, 0x11f01; 0x11f02, 0x11f02;
+     0x11f03, 0x11f03; 0x11f04, 0x11f10; 0x11f12, 0x11f33; 0x11f34, 0x11f35; 0x11f36, 0x11f3a;
+     0x11f3e, 0x11f3f; 0x11f40, 0x11f40; 0x11f41, 0x11f41; 0x11f42, 0x11f42; 0x11f50, 0x11f59;
+     0x11fb0, 0x11fb0; 0x12000, 0x12399; 0x12400, 0x1246e; 0x12480, 0x12543; 0x12f90, 0x12ff0;
+     0x13000, 0x1342f; 0x13440, 0x13440; 0x13441, 0x13446; 0x13447, 0x13455; 0x14400, 0x14646;
+     0x16800, 0x16a38; 0x16a40, 0x16a5e; 0x16a60, 0x16a69; 0x16a70, 0x16abe; 0x16ac0, 0x16ac9;
+     0x16ad0, 0x16aed; 0x16af0, 0x16af4; 0x16b00, 0x16b2f; 0x16b30, 0x16b36; 0x16b40, 0x16b43;
+     0x16b50, 0x16b59; 0x16b63, 0x16b77; 0x16b7d, 0x16b8f; 0x16e40, 0x16e7f; 0x16f00, 0x16f4a;
+     0x16f4f, 0x16f4f; 0x16f50, 0x16f50; 0x16f51, 0x16f87; 0x16f8f, 0x16f92; 0x16f93, 0x16f9f;
+     0x16fe0, 0x16fe1; 0x16fe3, 0x16fe3; 0x16fe4, 0x16fe4; 0x16ff0, 0x16ff1; 0x17000, 0x187f7;
+     0x18800, 0x18cd5; 0x18d00, 0x18d08; 0x1aff0, 0x1aff3; 0x1aff5, 0x1affb; 0x1affd, 0x1affe;
+     0x1b000, 0x1b122; 0x1b132, 0x1b132; 0x1b150, 0x1b152; 0x1b155, 0x1b155; 0x1b164, 0x1b167;
+     0x1b170, 0x1b2fb; 0x1bc00, 0x1bc6a; 0x1bc70, 0x1bc7c; 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99;
+     0x1bc9d, 0x1bc9e; 0x1cf00, 0x1cf2d; 0x1cf30, 0x1cf46; 0x1d165, 0x1d166; 0x1d167, 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; 0x1df00, 0x1df09; 0x1df0a, 0x1df0a; 0x1df0b, 0x1df1e;
+     0x1df25, 0x1df2a; 0x1e000, 0x1e006; 0x1e008, 0x1e018; 0x1e01b, 0x1e021; 0x1e023, 0x1e024;
+     0x1e026, 0x1e02a; 0x1e030, 0x1e06d; 0x1e08f, 0x1e08f; 0x1e100, 0x1e12c; 0x1e130, 0x1e136;
+     0x1e137, 0x1e13d; 0x1e140, 0x1e149; 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; 0x1e2ae, 0x1e2ae;
+     0x1e2c0, 0x1e2eb; 0x1e2ec, 0x1e2ef; 0x1e2f0, 0x1e2f9; 0x1e4d0, 0x1e4ea; 0x1e4eb, 0x1e4eb;
+     0x1e4ec, 0x1e4ef; 0x1e4f0, 0x1e4f9; 0x1e7e0, 0x1e7e6; 0x1e7e8, 0x1e7eb; 0x1e7ed, 0x1e7ee;
+     0x1e7f0, 0x1e7fe; 0x1e800, 0x1e8c4; 0x1e8d0, 0x1e8d6; 0x1e900, 0x1e943; 0x1e944, 0x1e94a;
+     0x1e94b, 0x1e94b; 0x1e950, 0x1e959; 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;
+     0x1fbf0, 0x1fbf9; 0x20000, 0x2a6df; 0x2a700, 0x2b739; 0x2b740, 0x2b81d; 0x2b820, 0x2cea1;
+     0xe0100, 0xe01ef; 0x31350, 0x323af; 0x30000, 0x3134a; 0x2f800, 0x2fa1d; 0x2ceb0, 0x2ebe0]
 
   let id_start =
-    [
-      (0x41, 0x5a);
-      (0x61, 0x7a);
-      (0xaa, 0xaa);
-      (0xb5, 0xb5);
-      (0xba, 0xba);
-      (0xc0, 0xd6);
-      (0xd8, 0xf6);
-      (0xf8, 0x1ba);
-      (0x1bb, 0x1bb);
-      (0x1bc, 0x1bf);
-      (0x1c0, 0x1c3);
-      (0x1c4, 0x293);
-      (0x294, 0x294);
-      (0x295, 0x2af);
-      (0x2b0, 0x2c1);
-      (0x2c6, 0x2d1);
-      (0x2e0, 0x2e4);
-      (0x2ec, 0x2ec);
-      (0x2ee, 0x2ee);
-      (0x370, 0x373);
-      (0x374, 0x374);
-      (0x376, 0x377);
-      (0x37a, 0x37a);
-      (0x37b, 0x37d);
-      (0x37f, 0x37f);
-      (0x386, 0x386);
-      (0x388, 0x38a);
-      (0x38c, 0x38c);
-      (0x38e, 0x3a1);
-      (0x3a3, 0x3f5);
-      (0x3f7, 0x481);
-      (0x48a, 0x52f);
-      (0x531, 0x556);
-      (0x559, 0x559);
-      (0x560, 0x588);
-      (0x5d0, 0x5ea);
-      (0x5ef, 0x5f2);
-      (0x620, 0x63f);
-      (0x640, 0x640);
-      (0x641, 0x64a);
-      (0x66e, 0x66f);
-      (0x671, 0x6d3);
-      (0x6d5, 0x6d5);
-      (0x6e5, 0x6e6);
-      (0x6ee, 0x6ef);
-      (0x6fa, 0x6fc);
-      (0x6ff, 0x6ff);
-      (0x710, 0x710);
-      (0x712, 0x72f);
-      (0x74d, 0x7a5);
-      (0x7b1, 0x7b1);
-      (0x7ca, 0x7ea);
-      (0x7f4, 0x7f5);
-      (0x7fa, 0x7fa);
-      (0x800, 0x815);
-      (0x81a, 0x81a);
-      (0x824, 0x824);
-      (0x828, 0x828);
-      (0x840, 0x858);
-      (0x860, 0x86a);
-      (0x870, 0x887);
-      (0x889, 0x88e);
-      (0x8a0, 0x8c8);
-      (0x8c9, 0x8c9);
-      (0x904, 0x939);
-      (0x93d, 0x93d);
-      (0x950, 0x950);
-      (0x958, 0x961);
-      (0x971, 0x971);
-      (0x972, 0x980);
-      (0x985, 0x98c);
-      (0x98f, 0x990);
-      (0x993, 0x9a8);
-      (0x9aa, 0x9b0);
-      (0x9b2, 0x9b2);
-      (0x9b6, 0x9b9);
-      (0x9bd, 0x9bd);
-      (0x9ce, 0x9ce);
-      (0x9dc, 0x9dd);
-      (0x9df, 0x9e1);
-      (0x9f0, 0x9f1);
-      (0x9fc, 0x9fc);
-      (0xa05, 0xa0a);
-      (0xa0f, 0xa10);
-      (0xa13, 0xa28);
-      (0xa2a, 0xa30);
-      (0xa32, 0xa33);
-      (0xa35, 0xa36);
-      (0xa38, 0xa39);
-      (0xa59, 0xa5c);
-      (0xa5e, 0xa5e);
-      (0xa72, 0xa74);
-      (0xa85, 0xa8d);
-      (0xa8f, 0xa91);
-      (0xa93, 0xaa8);
-      (0xaaa, 0xab0);
-      (0xab2, 0xab3);
-      (0xab5, 0xab9);
-      (0xabd, 0xabd);
-      (0xad0, 0xad0);
-      (0xae0, 0xae1);
-      (0xaf9, 0xaf9);
-      (0xb05, 0xb0c);
-      (0xb0f, 0xb10);
-      (0xb13, 0xb28);
-      (0xb2a, 0xb30);
-      (0xb32, 0xb33);
-      (0xb35, 0xb39);
-      (0xb3d, 0xb3d);
-      (0xb5c, 0xb5d);
-      (0xb5f, 0xb61);
-      (0xb71, 0xb71);
-      (0xb83, 0xb83);
-      (0xb85, 0xb8a);
-      (0xb8e, 0xb90);
-      (0xb92, 0xb95);
-      (0xb99, 0xb9a);
-      (0xb9c, 0xb9c);
-      (0xb9e, 0xb9f);
-      (0xba3, 0xba4);
-      (0xba8, 0xbaa);
-      (0xbae, 0xbb9);
-      (0xbd0, 0xbd0);
-      (0xc05, 0xc0c);
-      (0xc0e, 0xc10);
-      (0xc12, 0xc28);
-      (0xc2a, 0xc39);
-      (0xc3d, 0xc3d);
-      (0xc58, 0xc5a);
-      (0xc5d, 0xc5d);
-      (0xc60, 0xc61);
-      (0xc80, 0xc80);
-      (0xc85, 0xc8c);
-      (0xc8e, 0xc90);
-      (0xc92, 0xca8);
-      (0xcaa, 0xcb3);
-      (0xcb5, 0xcb9);
-      (0xcbd, 0xcbd);
-      (0xcdd, 0xcde);
-      (0xce0, 0xce1);
-      (0xcf1, 0xcf2);
-      (0xd04, 0xd0c);
-      (0xd0e, 0xd10);
-      (0xd12, 0xd3a);
-      (0xd3d, 0xd3d);
-      (0xd4e, 0xd4e);
-      (0xd54, 0xd56);
-      (0xd5f, 0xd61);
-      (0xd7a, 0xd7f);
-      (0xd85, 0xd96);
-      (0xd9a, 0xdb1);
-      (0xdb3, 0xdbb);
-      (0xdbd, 0xdbd);
-      (0xdc0, 0xdc6);
-      (0xe01, 0xe30);
-      (0xe32, 0xe33);
-      (0xe40, 0xe45);
-      (0xe46, 0xe46);
-      (0xe81, 0xe82);
-      (0xe84, 0xe84);
-      (0xe86, 0xe8a);
-      (0xe8c, 0xea3);
-      (0xea5, 0xea5);
-      (0xea7, 0xeb0);
-      (0xeb2, 0xeb3);
-      (0xebd, 0xebd);
-      (0xec0, 0xec4);
-      (0xec6, 0xec6);
-      (0xedc, 0xedf);
-      (0xf00, 0xf00);
-      (0xf40, 0xf47);
-      (0xf49, 0xf6c);
-      (0xf88, 0xf8c);
-      (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, 0x10fc);
-      (0x10fd, 0x10ff);
-      (0x1100, 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, 0x16f0);
-      (0x16f1, 0x16f8);
-      (0x1700, 0x1711);
-      (0x171f, 0x1731);
-      (0x1740, 0x1751);
-      (0x1760, 0x176c);
-      (0x176e, 0x1770);
-      (0x1780, 0x17b3);
-      (0x17d7, 0x17d7);
-      (0x17dc, 0x17dc);
-      (0x1820, 0x1842);
-      (0x1843, 0x1843);
-      (0x1844, 0x1878);
-      (0x1880, 0x1884);
-      (0x1885, 0x1886);
-      (0x1887, 0x18a8);
-      (0x18aa, 0x18aa);
-      (0x18b0, 0x18f5);
-      (0x1900, 0x191e);
-      (0x1950, 0x196d);
-      (0x1970, 0x1974);
-      (0x1980, 0x19ab);
-      (0x19b0, 0x19c9);
-      (0x1a00, 0x1a16);
-      (0x1a20, 0x1a54);
-      (0x1aa7, 0x1aa7);
-      (0x1b05, 0x1b33);
-      (0x1b45, 0x1b4c);
-      (0x1b83, 0x1ba0);
-      (0x1bae, 0x1baf);
-      (0x1bba, 0x1be5);
-      (0x1c00, 0x1c23);
-      (0x1c4d, 0x1c4f);
-      (0x1c5a, 0x1c77);
-      (0x1c78, 0x1c7d);
-      (0x1c80, 0x1c88);
-      (0x1c90, 0x1cba);
-      (0x1cbd, 0x1cbf);
-      (0x1ce9, 0x1cec);
-      (0x1cee, 0x1cf3);
-      (0x1cf5, 0x1cf6);
-      (0x1cfa, 0x1cfa);
-      (0x1d00, 0x1d2b);
-      (0x1d2c, 0x1d6a);
-      (0x1d6b, 0x1d77);
-      (0x1d78, 0x1d78);
-      (0x1d79, 0x1d9a);
-      (0x1d9b, 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, 0x2118);
-      (0x2119, 0x211d);
-      (0x2124, 0x2124);
-      (0x2126, 0x2126);
-      (0x2128, 0x2128);
-      (0x212a, 0x212d);
-      (0x212e, 0x212e);
-      (0x212f, 0x2134);
-      (0x2135, 0x2138);
-      (0x2139, 0x2139);
-      (0x213c, 0x213f);
-      (0x2145, 0x2149);
-      (0x214e, 0x214e);
-      (0x2160, 0x2182);
-      (0x2183, 0x2184);
-      (0x2185, 0x2188);
-      (0x2c00, 0x2c7b);
-      (0x2c7c, 0x2c7d);
-      (0x2c7e, 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, 0x3005);
-      (0x3006, 0x3006);
-      (0x3007, 0x3007);
-      (0x3021, 0x3029);
-      (0x3031, 0x3035);
-      (0x3038, 0x303a);
-      (0x303b, 0x303b);
-      (0x303c, 0x303c);
-      (0x3041, 0x3096);
-      (0x309b, 0x309c);
-      (0x309d, 0x309e);
-      (0x309f, 0x309f);
-      (0x30a1, 0x30fa);
-      (0x30fc, 0x30fe);
-      (0x30ff, 0x30ff);
-      (0x3105, 0x312f);
-      (0x3131, 0x318e);
-      (0x31a0, 0x31bf);
-      (0x31f0, 0x31ff);
-      (0x3400, 0x4dbf);
-      (0x4e00, 0xa014);
-      (0xa015, 0xa015);
-      (0xa016, 0xa48c);
-      (0xa4d0, 0xa4f7);
-      (0xa4f8, 0xa4fd);
-      (0xa500, 0xa60b);
-      (0xa60c, 0xa60c);
-      (0xa610, 0xa61f);
-      (0xa62a, 0xa62b);
-      (0xa640, 0xa66d);
-      (0xa66e, 0xa66e);
-      (0xa67f, 0xa67f);
-      (0xa680, 0xa69b);
-      (0xa69c, 0xa69d);
-      (0xa6a0, 0xa6e5);
-      (0xa6e6, 0xa6ef);
-      (0xa717, 0xa71f);
-      (0xa722, 0xa76f);
-      (0xa770, 0xa770);
-      (0xa771, 0xa787);
-      (0xa788, 0xa788);
-      (0xa78b, 0xa78e);
-      (0xa78f, 0xa78f);
-      (0xa790, 0xa7ca);
-      (0xa7d0, 0xa7d1);
-      (0xa7d3, 0xa7d3);
-      (0xa7d5, 0xa7d9);
-      (0xa7f2, 0xa7f4);
-      (0xa7f5, 0xa7f6);
-      (0xa7f7, 0xa7f7);
-      (0xa7f8, 0xa7f9);
-      (0xa7fa, 0xa7fa);
-      (0xa7fb, 0xa801);
-      (0xa803, 0xa805);
-      (0xa807, 0xa80a);
-      (0xa80c, 0xa822);
-      (0xa840, 0xa873);
-      (0xa882, 0xa8b3);
-      (0xa8f2, 0xa8f7);
-      (0xa8fb, 0xa8fb);
-      (0xa8fd, 0xa8fe);
-      (0xa90a, 0xa925);
-      (0xa930, 0xa946);
-      (0xa960, 0xa97c);
-      (0xa984, 0xa9b2);
-      (0xa9cf, 0xa9cf);
-      (0xa9e0, 0xa9e4);
-      (0xa9e6, 0xa9e6);
-      (0xa9e7, 0xa9ef);
-      (0xa9fa, 0xa9fe);
-      (0xaa00, 0xaa28);
-      (0xaa40, 0xaa42);
-      (0xaa44, 0xaa4b);
-      (0xaa60, 0xaa6f);
-      (0xaa70, 0xaa70);
-      (0xaa71, 0xaa76);
-      (0xaa7a, 0xaa7a);
-      (0xaa7e, 0xaaaf);
-      (0xaab1, 0xaab1);
-      (0xaab5, 0xaab6);
-      (0xaab9, 0xaabd);
-      (0xaac0, 0xaac0);
-      (0xaac2, 0xaac2);
-      (0xaadb, 0xaadc);
-      (0xaadd, 0xaadd);
-      (0xaae0, 0xaaea);
-      (0xaaf2, 0xaaf2);
-      (0xaaf3, 0xaaf4);
-      (0xab01, 0xab06);
-      (0xab09, 0xab0e);
-      (0xab11, 0xab16);
-      (0xab20, 0xab26);
-      (0xab28, 0xab2e);
-      (0xab30, 0xab5a);
-      (0xab5c, 0xab5f);
-      (0xab60, 0xab68);
-      (0xab69, 0xab69);
-      (0xab70, 0xabbf);
-      (0xabc0, 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, 0xff6f);
-      (0xff70, 0xff70);
-      (0xff71, 0xff9d);
-      (0xff9e, 0xff9f);
-      (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);
-      (0x1032d, 0x10340);
-      (0x10341, 0x10341);
-      (0x10342, 0x10349);
-      (0x1034a, 0x1034a);
-      (0x10350, 0x10375);
-      (0x10380, 0x1039d);
-      (0x103a0, 0x103c3);
-      (0x103c8, 0x103cf);
-      (0x103d1, 0x103d5);
-      (0x10400, 0x1044f);
-      (0x10450, 0x1049d);
-      (0x104b0, 0x104d3);
-      (0x104d8, 0x104fb);
-      (0x10500, 0x10527);
-      (0x10530, 0x10563);
-      (0x10570, 0x1057a);
-      (0x1057c, 0x1058a);
-      (0x1058c, 0x10592);
-      (0x10594, 0x10595);
-      (0x10597, 0x105a1);
-      (0x105a3, 0x105b1);
-      (0x105b3, 0x105b9);
-      (0x105bb, 0x105bc);
-      (0x10600, 0x10736);
-      (0x10740, 0x10755);
-      (0x10760, 0x10767);
-      (0x10780, 0x10785);
-      (0x10787, 0x107b0);
-      (0x107b2, 0x107ba);
-      (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, 0x10a35);
-      (0x10a60, 0x10a7c);
-      (0x10a80, 0x10a9c);
-      (0x10ac0, 0x10ac7);
-      (0x10ac9, 0x10ae4);
-      (0x10b00, 0x10b35);
-      (0x10b40, 0x10b55);
-      (0x10b60, 0x10b72);
-      (0x10b80, 0x10b91);
-      (0x10c00, 0x10c48);
-      (0x10c80, 0x10cb2);
-      (0x10cc0, 0x10cf2);
-      (0x10d00, 0x10d23);
-      (0x10e80, 0x10ea9);
-      (0x10eb0, 0x10eb1);
-      (0x10f00, 0x10f1c);
-      (0x10f27, 0x10f27);
-      (0x10f30, 0x10f45);
-      (0x10f70, 0x10f81);
-      (0x10fb0, 0x10fc4);
-      (0x10fe0, 0x10ff6);
-      (0x11003, 0x11037);
-      (0x11071, 0x11072);
-      (0x11075, 0x11075);
-      (0x11083, 0x110af);
-      (0x110d0, 0x110e8);
-      (0x11103, 0x11126);
-      (0x11144, 0x11144);
-      (0x11147, 0x11147);
-      (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);
-      (0x11400, 0x11434);
-      (0x11447, 0x1144a);
-      (0x1145f, 0x11461);
-      (0x11480, 0x114af);
-      (0x114c4, 0x114c5);
-      (0x114c7, 0x114c7);
-      (0x11580, 0x115ae);
-      (0x115d8, 0x115db);
-      (0x11600, 0x1162f);
-      (0x11644, 0x11644);
-      (0x11680, 0x116aa);
-      (0x116b8, 0x116b8);
-      (0x11700, 0x1171a);
-      (0x11740, 0x11746);
-      (0x11800, 0x1182b);
-      (0x118a0, 0x118df);
-      (0x118ff, 0x11906);
-      (0x11909, 0x11909);
-      (0x1190c, 0x11913);
-      (0x11915, 0x11916);
-      (0x11918, 0x1192f);
-      (0x1193f, 0x1193f);
-      (0x11941, 0x11941);
-      (0x119a0, 0x119a7);
-      (0x119aa, 0x119d0);
-      (0x119e1, 0x119e1);
-      (0x119e3, 0x119e3);
-      (0x11a00, 0x11a00);
-      (0x11a0b, 0x11a32);
-      (0x11a3a, 0x11a3a);
-      (0x11a50, 0x11a50);
-      (0x11a5c, 0x11a89);
-      (0x11a9d, 0x11a9d);
-      (0x11ab0, 0x11af8);
-      (0x11c00, 0x11c08);
-      (0x11c0a, 0x11c2e);
-      (0x11c40, 0x11c40);
-      (0x11c72, 0x11c8f);
-      (0x11d00, 0x11d06);
-      (0x11d08, 0x11d09);
-      (0x11d0b, 0x11d30);
-      (0x11d46, 0x11d46);
-      (0x11d60, 0x11d65);
-      (0x11d67, 0x11d68);
-      (0x11d6a, 0x11d89);
-      (0x11d98, 0x11d98);
-      (0x11ee0, 0x11ef2);
-      (0x11fb0, 0x11fb0);
-      (0x12000, 0x12399);
-      (0x12400, 0x1246e);
-      (0x12480, 0x12543);
-      (0x12f90, 0x12ff0);
-      (0x13000, 0x1342e);
-      (0x14400, 0x14646);
-      (0x16800, 0x16a38);
-      (0x16a40, 0x16a5e);
-      (0x16a70, 0x16abe);
-      (0x16ad0, 0x16aed);
-      (0x16b00, 0x16b2f);
-      (0x16b40, 0x16b43);
-      (0x16b63, 0x16b77);
-      (0x16b7d, 0x16b8f);
-      (0x16e40, 0x16e7f);
-      (0x16f00, 0x16f4a);
-      (0x16f50, 0x16f50);
-      (0x16f93, 0x16f9f);
-      (0x16fe0, 0x16fe1);
-      (0x16fe3, 0x16fe3);
-      (0x17000, 0x187f7);
-      (0x18800, 0x18cd5);
-      (0x18d00, 0x18d08);
-      (0x1aff0, 0x1aff3);
-      (0x1aff5, 0x1affb);
-      (0x1affd, 0x1affe);
-      (0x1b000, 0x1b122);
-      (0x1b150, 0x1b152);
-      (0x1b164, 0x1b167);
-      (0x1b170, 0x1b2fb);
-      (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);
-      (0x1df00, 0x1df09);
-      (0x1df0a, 0x1df0a);
-      (0x1df0b, 0x1df1e);
-      (0x1e100, 0x1e12c);
-      (0x1e137, 0x1e13d);
-      (0x1e14e, 0x1e14e);
-      (0x1e290, 0x1e2ad);
-      (0x1e2c0, 0x1e2eb);
-      (0x1e7e0, 0x1e7e6);
-      (0x1e7e8, 0x1e7eb);
-      (0x1e7ed, 0x1e7ee);
-      (0x1e7f0, 0x1e7fe);
-      (0x1e800, 0x1e8c4);
-      (0x1e900, 0x1e943);
-      (0x1e94b, 0x1e94b);
-      (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, 0x2a6df);
-      (0x2a700, 0x2b738);
-      (0x2b740, 0x2b81d);
-      (0x2b820, 0x2cea1);
-      (0x2ceb0, 0x2ebe0);
-      (0x30000, 0x3134a);
-      (0x2f800, 0x2fa1d);
-    ]
+    [0x41, 0x5a; 0x61, 0x7a; 0xaa, 0xaa; 0xb5, 0xb5; 0xba, 0xba;
+     0xc0, 0xd6; 0xd8, 0xf6; 0xf8, 0x1ba; 0x1bb, 0x1bb; 0x1bc, 0x1bf;
+     0x1c0, 0x1c3; 0x1c4, 0x293; 0x294, 0x294; 0x295, 0x2af; 0x2b0, 0x2c1;
+     0x2c6, 0x2d1; 0x2e0, 0x2e4; 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x370, 0x373;
+     0x374, 0x374; 0x376, 0x377; 0x37a, 0x37a; 0x37b, 0x37d; 0x37f, 0x37f;
+     0x386, 0x386; 0x388, 0x38a; 0x38c, 0x38c; 0x38e, 0x3a1; 0x3a3, 0x3f5;
+     0x3f7, 0x481; 0x48a, 0x52f; 0x531, 0x556; 0x559, 0x559; 0x560, 0x588;
+     0x5d0, 0x5ea; 0x5ef, 0x5f2; 0x620, 0x63f; 0x640, 0x640; 0x641, 0x64a;
+     0x66e, 0x66f; 0x671, 0x6d3; 0x6d5, 0x6d5; 0x6e5, 0x6e6; 0x6ee, 0x6ef;
+     0x6fa, 0x6fc; 0x6ff, 0x6ff; 0x710, 0x710; 0x712, 0x72f; 0x74d, 0x7a5;
+     0x7b1, 0x7b1; 0x7ca, 0x7ea; 0x7f4, 0x7f5; 0x7fa, 0x7fa; 0x800, 0x815;
+     0x81a, 0x81a; 0x824, 0x824; 0x828, 0x828; 0x840, 0x858; 0x860, 0x86a;
+     0x870, 0x887; 0x889, 0x88e; 0x8a0, 0x8c8; 0x8c9, 0x8c9; 0x904, 0x939;
+     0x93d, 0x93d; 0x950, 0x950; 0x958, 0x961; 0x971, 0x971; 0x972, 0x980;
+     0x985, 0x98c; 0x98f, 0x990; 0x993, 0x9a8; 0x9aa, 0x9b0; 0x9b2, 0x9b2;
+     0x9b6, 0x9b9; 0x9bd, 0x9bd; 0x9ce, 0x9ce; 0x9dc, 0x9dd; 0x9df, 0x9e1;
+     0x9f0, 0x9f1; 0x9fc, 0x9fc; 0xa05, 0xa0a; 0xa0f, 0xa10; 0xa13, 0xa28;
+     0xa2a, 0xa30; 0xa32, 0xa33; 0xa35, 0xa36; 0xa38, 0xa39; 0xa59, 0xa5c;
+     0xa5e, 0xa5e; 0xa72, 0xa74; 0xa85, 0xa8d; 0xa8f, 0xa91; 0xa93, 0xaa8;
+     0xaaa, 0xab0; 0xab2, 0xab3; 0xab5, 0xab9; 0xabd, 0xabd; 0xad0, 0xad0;
+     0xae0, 0xae1; 0xaf9, 0xaf9; 0xb05, 0xb0c; 0xb0f, 0xb10; 0xb13, 0xb28;
+     0xb2a, 0xb30; 0xb32, 0xb33; 0xb35, 0xb39; 0xb3d, 0xb3d; 0xb5c, 0xb5d;
+     0xb5f, 0xb61; 0xb71, 0xb71; 0xb83, 0xb83; 0xb85, 0xb8a; 0xb8e, 0xb90;
+     0xb92, 0xb95; 0xb99, 0xb9a; 0xb9c, 0xb9c; 0xb9e, 0xb9f; 0xba3, 0xba4;
+     0xba8, 0xbaa; 0xbae, 0xbb9; 0xbd0, 0xbd0; 0xc05, 0xc0c; 0xc0e, 0xc10;
+     0xc12, 0xc28; 0xc2a, 0xc39; 0xc3d, 0xc3d; 0xc58, 0xc5a; 0xc5d, 0xc5d;
+     0xc60, 0xc61; 0xc80, 0xc80; 0xc85, 0xc8c; 0xc8e, 0xc90; 0xc92, 0xca8;
+     0xcaa, 0xcb3; 0xcb5, 0xcb9; 0xcbd, 0xcbd; 0xcdd, 0xcde; 0xce0, 0xce1;
+     0xcf1, 0xcf2; 0xd04, 0xd0c; 0xd0e, 0xd10; 0xd12, 0xd3a; 0xd3d, 0xd3d;
+     0xd4e, 0xd4e; 0xd54, 0xd56; 0xd5f, 0xd61; 0xd7a, 0xd7f; 0xd85, 0xd96;
+     0xd9a, 0xdb1; 0xdb3, 0xdbb; 0xdbd, 0xdbd; 0xdc0, 0xdc6; 0xe01, 0xe30;
+     0xe32, 0xe33; 0xe40, 0xe45; 0xe46, 0xe46; 0xe81, 0xe82; 0xe84, 0xe84;
+     0xe86, 0xe8a; 0xe8c, 0xea3; 0xea5, 0xea5; 0xea7, 0xeb0; 0xeb2, 0xeb3;
+     0xebd, 0xebd; 0xec0, 0xec4; 0xec6, 0xec6; 0xedc, 0xedf; 0xf00, 0xf00;
+     0xf40, 0xf47; 0xf49, 0xf6c; 0xf88, 0xf8c; 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, 0x10fc; 0x10fd, 0x10ff; 0x1100, 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, 0x16f0; 0x16f1, 0x16f8; 0x1700, 0x1711; 0x171f, 0x1731;
+     0x1740, 0x1751; 0x1760, 0x176c; 0x176e, 0x1770; 0x1780, 0x17b3; 0x17d7, 0x17d7;
+     0x17dc, 0x17dc; 0x1820, 0x1842; 0x1843, 0x1843; 0x1844, 0x1878; 0x1880, 0x1884;
+     0x1885, 0x1886; 0x1887, 0x18a8; 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e;
+     0x1950, 0x196d; 0x1970, 0x1974; 0x1980, 0x19ab; 0x19b0, 0x19c9; 0x1a00, 0x1a16;
+     0x1a20, 0x1a54; 0x1aa7, 0x1aa7; 0x1b05, 0x1b33; 0x1b45, 0x1b4c; 0x1b83, 0x1ba0;
+     0x1bae, 0x1baf; 0x1bba, 0x1be5; 0x1c00, 0x1c23; 0x1c4d, 0x1c4f; 0x1c5a, 0x1c77;
+     0x1c78, 0x1c7d; 0x1c80, 0x1c88; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1ce9, 0x1cec;
+     0x1cee, 0x1cf3; 0x1cf5, 0x1cf6; 0x1cfa, 0x1cfa; 0x1d00, 0x1d2b; 0x1d2c, 0x1d6a;
+     0x1d6b, 0x1d77; 0x1d78, 0x1d78; 0x1d79, 0x1d9a; 0x1d9b, 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, 0x2118; 0x2119, 0x211d; 0x2124, 0x2124; 0x2126, 0x2126; 0x2128, 0x2128;
+     0x212a, 0x212d; 0x212e, 0x212e; 0x212f, 0x2134; 0x2135, 0x2138; 0x2139, 0x2139;
+     0x213c, 0x213f; 0x2145, 0x2149; 0x214e, 0x214e; 0x2160, 0x2182; 0x2183, 0x2184;
+     0x2185, 0x2188; 0x2c00, 0x2c7b; 0x2c7c, 0x2c7d; 0x2c7e, 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, 0x3005; 0x3006, 0x3006; 0x3007, 0x3007; 0x3021, 0x3029; 0x3031, 0x3035;
+     0x3038, 0x303a; 0x303b, 0x303b; 0x303c, 0x303c; 0x3041, 0x3096; 0x309b, 0x309c;
+     0x309d, 0x309e; 0x309f, 0x309f; 0x30a1, 0x30fa; 0x30fc, 0x30fe; 0x30ff, 0x30ff;
+     0x3105, 0x312f; 0x3131, 0x318e; 0x31a0, 0x31bf; 0x31f0, 0x31ff; 0x3400, 0x4dbf;
+     0x4e00, 0xa014; 0xa015, 0xa015; 0xa016, 0xa48c; 0xa4d0, 0xa4f7; 0xa4f8, 0xa4fd;
+     0xa500, 0xa60b; 0xa60c, 0xa60c; 0xa610, 0xa61f; 0xa62a, 0xa62b; 0xa640, 0xa66d;
+     0xa66e, 0xa66e; 0xa67f, 0xa67f; 0xa680, 0xa69b; 0xa69c, 0xa69d; 0xa6a0, 0xa6e5;
+     0xa6e6, 0xa6ef; 0xa717, 0xa71f; 0xa722, 0xa76f; 0xa770, 0xa770; 0xa771, 0xa787;
+     0xa788, 0xa788; 0xa78b, 0xa78e; 0xa78f, 0xa78f; 0xa790, 0xa7ca; 0xa7d0, 0xa7d1;
+     0xa7d3, 0xa7d3; 0xa7d5, 0xa7d9; 0xa7f2, 0xa7f4; 0xa7f5, 0xa7f6; 0xa7f7, 0xa7f7;
+     0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa; 0xa7fb, 0xa801; 0xa803, 0xa805; 0xa807, 0xa80a;
+     0xa80c, 0xa822; 0xa840, 0xa873; 0xa882, 0xa8b3; 0xa8f2, 0xa8f7; 0xa8fb, 0xa8fb;
+     0xa8fd, 0xa8fe; 0xa90a, 0xa925; 0xa930, 0xa946; 0xa960, 0xa97c; 0xa984, 0xa9b2;
+     0xa9cf, 0xa9cf; 0xa9e0, 0xa9e4; 0xa9e6, 0xa9e6; 0xa9e7, 0xa9ef; 0xa9fa, 0xa9fe;
+     0xaa00, 0xaa28; 0xaa40, 0xaa42; 0xaa44, 0xaa4b; 0xaa60, 0xaa6f; 0xaa70, 0xaa70;
+     0xaa71, 0xaa76; 0xaa7a, 0xaa7a; 0xaa7e, 0xaaaf; 0xaab1, 0xaab1; 0xaab5, 0xaab6;
+     0xaab9, 0xaabd; 0xaac0, 0xaac0; 0xaac2, 0xaac2; 0xaadb, 0xaadc; 0xaadd, 0xaadd;
+     0xaae0, 0xaaea; 0xaaf2, 0xaaf2; 0xaaf3, 0xaaf4; 0xab01, 0xab06; 0xab09, 0xab0e;
+     0xab11, 0xab16; 0xab20, 0xab26; 0xab28, 0xab2e; 0xab30, 0xab5a; 0xab5c, 0xab5f;
+     0xab60, 0xab68; 0xab69, 0xab69; 0xab70, 0xabbf; 0xabc0, 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, 0xff6f; 0xff70, 0xff70; 0xff71, 0xff9d;
+     0xff9e, 0xff9f; 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; 0x1032d, 0x10340; 0x10341, 0x10341; 0x10342, 0x10349;
+     0x1034a, 0x1034a; 0x10350, 0x10375; 0x10380, 0x1039d; 0x103a0, 0x103c3; 0x103c8, 0x103cf;
+     0x103d1, 0x103d5; 0x10400, 0x1044f; 0x10450, 0x1049d; 0x104b0, 0x104d3; 0x104d8, 0x104fb;
+     0x10500, 0x10527; 0x10530, 0x10563; 0x10570, 0x1057a; 0x1057c, 0x1058a; 0x1058c, 0x10592;
+     0x10594, 0x10595; 0x10597, 0x105a1; 0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc;
+     0x10600, 0x10736; 0x10740, 0x10755; 0x10760, 0x10767; 0x10780, 0x10785; 0x10787, 0x107b0;
+     0x107b2, 0x107ba; 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, 0x10a35; 0x10a60, 0x10a7c;
+     0x10a80, 0x10a9c; 0x10ac0, 0x10ac7; 0x10ac9, 0x10ae4; 0x10b00, 0x10b35; 0x10b40, 0x10b55;
+     0x10b60, 0x10b72; 0x10b80, 0x10b91; 0x10c00, 0x10c48; 0x10c80, 0x10cb2; 0x10cc0, 0x10cf2;
+     0x10d00, 0x10d23; 0x10e80, 0x10ea9; 0x10eb0, 0x10eb1; 0x10f00, 0x10f1c; 0x10f27, 0x10f27;
+     0x10f30, 0x10f45; 0x10f70, 0x10f81; 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; 0x11003, 0x11037;
+     0x11071, 0x11072; 0x11075, 0x11075; 0x11083, 0x110af; 0x110d0, 0x110e8; 0x11103, 0x11126;
+     0x11144, 0x11144; 0x11147, 0x11147; 0x11150, 0x11172; 0x11176, 0x11176; 0x11183, 0x111b2;
+     0x111c1, 0x111c4; 0x111da, 0x111da; 0x111dc, 0x111dc; 0x11200, 0x11211; 0x11213, 0x1122b;
+     0x1123f, 0x11240; 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; 0x11400, 0x11434; 0x11447, 0x1144a; 0x1145f, 0x11461; 0x11480, 0x114af;
+     0x114c4, 0x114c5; 0x114c7, 0x114c7; 0x11580, 0x115ae; 0x115d8, 0x115db; 0x11600, 0x1162f;
+     0x11644, 0x11644; 0x11680, 0x116aa; 0x116b8, 0x116b8; 0x11700, 0x1171a; 0x11740, 0x11746;
+     0x11800, 0x1182b; 0x118a0, 0x118df; 0x118ff, 0x11906; 0x11909, 0x11909; 0x1190c, 0x11913;
+     0x11915, 0x11916; 0x11918, 0x1192f; 0x1193f, 0x1193f; 0x11941, 0x11941; 0x119a0, 0x119a7;
+     0x119aa, 0x119d0; 0x119e1, 0x119e1; 0x119e3, 0x119e3; 0x11a00, 0x11a00; 0x11a0b, 0x11a32;
+     0x11a3a, 0x11a3a; 0x11a50, 0x11a50; 0x11a5c, 0x11a89; 0x11a9d, 0x11a9d; 0x11ab0, 0x11af8;
+     0x11c00, 0x11c08; 0x11c0a, 0x11c2e; 0x11c40, 0x11c40; 0x11c72, 0x11c8f; 0x11d00, 0x11d06;
+     0x11d08, 0x11d09; 0x11d0b, 0x11d30; 0x11d46, 0x11d46; 0x11d60, 0x11d65; 0x11d67, 0x11d68;
+     0x11d6a, 0x11d89; 0x11d98, 0x11d98; 0x11ee0, 0x11ef2; 0x11f02, 0x11f02; 0x11f04, 0x11f10;
+     0x11f12, 0x11f33; 0x11fb0, 0x11fb0; 0x12000, 0x12399; 0x12400, 0x1246e; 0x12480, 0x12543;
+     0x12f90, 0x12ff0; 0x13000, 0x1342f; 0x13441, 0x13446; 0x14400, 0x14646; 0x16800, 0x16a38;
+     0x16a40, 0x16a5e; 0x16a70, 0x16abe; 0x16ad0, 0x16aed; 0x16b00, 0x16b2f; 0x16b40, 0x16b43;
+     0x16b63, 0x16b77; 0x16b7d, 0x16b8f; 0x16e40, 0x16e7f; 0x16f00, 0x16f4a; 0x16f50, 0x16f50;
+     0x16f93, 0x16f9f; 0x16fe0, 0x16fe1; 0x16fe3, 0x16fe3; 0x17000, 0x187f7; 0x18800, 0x18cd5;
+     0x18d00, 0x18d08; 0x1aff0, 0x1aff3; 0x1aff5, 0x1affb; 0x1affd, 0x1affe; 0x1b000, 0x1b122;
+     0x1b132, 0x1b132; 0x1b150, 0x1b152; 0x1b155, 0x1b155; 0x1b164, 0x1b167; 0x1b170, 0x1b2fb;
+     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; 0x1df00, 0x1df09;
+     0x1df0a, 0x1df0a; 0x1df0b, 0x1df1e; 0x1df25, 0x1df2a; 0x1e030, 0x1e06d; 0x1e100, 0x1e12c;
+     0x1e137, 0x1e13d; 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; 0x1e2c0, 0x1e2eb; 0x1e4d0, 0x1e4ea;
+     0x1e4eb, 0x1e4eb; 0x1e7e0, 0x1e7e6; 0x1e7e8, 0x1e7eb; 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe;
+     0x1e800, 0x1e8c4; 0x1e900, 0x1e943; 0x1e94b, 0x1e94b; 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, 0x2a6df; 0x2a700, 0x2b739; 0x2b740, 0x2b81d; 0x2b820, 0x2cea1;
+     0x31350, 0x323af; 0x30000, 0x3134a; 0x2f800, 0x2fa1d; 0x2ceb0, 0x2ebe0]
 
   let lowercase =
-    [
-      (0x61, 0x7a);
-      (0xaa, 0xaa);
-      (0xb5, 0xb5);
-      (0xba, 0xba);
-      (0xdf, 0xf6);
-      (0xf8, 0xff);
-      (0x101, 0x101);
-      (0x103, 0x103);
-      (0x105, 0x105);
-      (0x107, 0x107);
-      (0x109, 0x109);
-      (0x10b, 0x10b);
-      (0x10d, 0x10d);
-      (0x10f, 0x10f);
-      (0x111, 0x111);
-      (0x113, 0x113);
-      (0x115, 0x115);
-      (0x117, 0x117);
-      (0x119, 0x119);
-      (0x11b, 0x11b);
-      (0x11d, 0x11d);
-      (0x11f, 0x11f);
-      (0x121, 0x121);
-      (0x123, 0x123);
-      (0x125, 0x125);
-      (0x127, 0x127);
-      (0x129, 0x129);
-      (0x12b, 0x12b);
-      (0x12d, 0x12d);
-      (0x12f, 0x12f);
-      (0x131, 0x131);
-      (0x133, 0x133);
-      (0x135, 0x135);
-      (0x137, 0x138);
-      (0x13a, 0x13a);
-      (0x13c, 0x13c);
-      (0x13e, 0x13e);
-      (0x140, 0x140);
-      (0x142, 0x142);
-      (0x144, 0x144);
-      (0x146, 0x146);
-      (0x148, 0x149);
-      (0x14b, 0x14b);
-      (0x14d, 0x14d);
-      (0x14f, 0x14f);
-      (0x151, 0x151);
-      (0x153, 0x153);
-      (0x155, 0x155);
-      (0x157, 0x157);
-      (0x159, 0x159);
-      (0x15b, 0x15b);
-      (0x15d, 0x15d);
-      (0x15f, 0x15f);
-      (0x161, 0x161);
-      (0x163, 0x163);
-      (0x165, 0x165);
-      (0x167, 0x167);
-      (0x169, 0x169);
-      (0x16b, 0x16b);
-      (0x16d, 0x16d);
-      (0x16f, 0x16f);
-      (0x171, 0x171);
-      (0x173, 0x173);
-      (0x175, 0x175);
-      (0x177, 0x177);
-      (0x17a, 0x17a);
-      (0x17c, 0x17c);
-      (0x17e, 0x180);
-      (0x183, 0x183);
-      (0x185, 0x185);
-      (0x188, 0x188);
-      (0x18c, 0x18d);
-      (0x192, 0x192);
-      (0x195, 0x195);
-      (0x199, 0x19b);
-      (0x19e, 0x19e);
-      (0x1a1, 0x1a1);
-      (0x1a3, 0x1a3);
-      (0x1a5, 0x1a5);
-      (0x1a8, 0x1a8);
-      (0x1aa, 0x1ab);
-      (0x1ad, 0x1ad);
-      (0x1b0, 0x1b0);
-      (0x1b4, 0x1b4);
-      (0x1b6, 0x1b6);
-      (0x1b9, 0x1ba);
-      (0x1bd, 0x1bf);
-      (0x1c6, 0x1c6);
-      (0x1c9, 0x1c9);
-      (0x1cc, 0x1cc);
-      (0x1ce, 0x1ce);
-      (0x1d0, 0x1d0);
-      (0x1d2, 0x1d2);
-      (0x1d4, 0x1d4);
-      (0x1d6, 0x1d6);
-      (0x1d8, 0x1d8);
-      (0x1da, 0x1da);
-      (0x1dc, 0x1dd);
-      (0x1df, 0x1df);
-      (0x1e1, 0x1e1);
-      (0x1e3, 0x1e3);
-      (0x1e5, 0x1e5);
-      (0x1e7, 0x1e7);
-      (0x1e9, 0x1e9);
-      (0x1eb, 0x1eb);
-      (0x1ed, 0x1ed);
-      (0x1ef, 0x1f0);
-      (0x1f3, 0x1f3);
-      (0x1f5, 0x1f5);
-      (0x1f9, 0x1f9);
-      (0x1fb, 0x1fb);
-      (0x1fd, 0x1fd);
-      (0x1ff, 0x1ff);
-      (0x201, 0x201);
-      (0x203, 0x203);
-      (0x205, 0x205);
-      (0x207, 0x207);
-      (0x209, 0x209);
-      (0x20b, 0x20b);
-      (0x20d, 0x20d);
-      (0x20f, 0x20f);
-      (0x211, 0x211);
-      (0x213, 0x213);
-      (0x215, 0x215);
-      (0x217, 0x217);
-      (0x219, 0x219);
-      (0x21b, 0x21b);
-      (0x21d, 0x21d);
-      (0x21f, 0x21f);
-      (0x221, 0x221);
-      (0x223, 0x223);
-      (0x225, 0x225);
-      (0x227, 0x227);
-      (0x229, 0x229);
-      (0x22b, 0x22b);
-      (0x22d, 0x22d);
-      (0x22f, 0x22f);
-      (0x231, 0x231);
-      (0x233, 0x239);
-      (0x23c, 0x23c);
-      (0x23f, 0x240);
-      (0x242, 0x242);
-      (0x247, 0x247);
-      (0x249, 0x249);
-      (0x24b, 0x24b);
-      (0x24d, 0x24d);
-      (0x24f, 0x293);
-      (0x295, 0x2af);
-      (0x2b0, 0x2b8);
-      (0x2c0, 0x2c1);
-      (0x2e0, 0x2e4);
-      (0x345, 0x345);
-      (0x371, 0x371);
-      (0x373, 0x373);
-      (0x377, 0x377);
-      (0x37a, 0x37a);
-      (0x37b, 0x37d);
-      (0x390, 0x390);
-      (0x3ac, 0x3ce);
-      (0x3d0, 0x3d1);
-      (0x3d5, 0x3d7);
-      (0x3d9, 0x3d9);
-      (0x3db, 0x3db);
-      (0x3dd, 0x3dd);
-      (0x3df, 0x3df);
-      (0x3e1, 0x3e1);
-      (0x3e3, 0x3e3);
-      (0x3e5, 0x3e5);
-      (0x3e7, 0x3e7);
-      (0x3e9, 0x3e9);
-      (0x3eb, 0x3eb);
-      (0x3ed, 0x3ed);
-      (0x3ef, 0x3f3);
-      (0x3f5, 0x3f5);
-      (0x3f8, 0x3f8);
-      (0x3fb, 0x3fc);
-      (0x430, 0x45f);
-      (0x461, 0x461);
-      (0x463, 0x463);
-      (0x465, 0x465);
-      (0x467, 0x467);
-      (0x469, 0x469);
-      (0x46b, 0x46b);
-      (0x46d, 0x46d);
-      (0x46f, 0x46f);
-      (0x471, 0x471);
-      (0x473, 0x473);
-      (0x475, 0x475);
-      (0x477, 0x477);
-      (0x479, 0x479);
-      (0x47b, 0x47b);
-      (0x47d, 0x47d);
-      (0x47f, 0x47f);
-      (0x481, 0x481);
-      (0x48b, 0x48b);
-      (0x48d, 0x48d);
-      (0x48f, 0x48f);
-      (0x491, 0x491);
-      (0x493, 0x493);
-      (0x495, 0x495);
-      (0x497, 0x497);
-      (0x499, 0x499);
-      (0x49b, 0x49b);
-      (0x49d, 0x49d);
-      (0x49f, 0x49f);
-      (0x4a1, 0x4a1);
-      (0x4a3, 0x4a3);
-      (0x4a5, 0x4a5);
-      (0x4a7, 0x4a7);
-      (0x4a9, 0x4a9);
-      (0x4ab, 0x4ab);
-      (0x4ad, 0x4ad);
-      (0x4af, 0x4af);
-      (0x4b1, 0x4b1);
-      (0x4b3, 0x4b3);
-      (0x4b5, 0x4b5);
-      (0x4b7, 0x4b7);
-      (0x4b9, 0x4b9);
-      (0x4bb, 0x4bb);
-      (0x4bd, 0x4bd);
-      (0x4bf, 0x4bf);
-      (0x4c2, 0x4c2);
-      (0x4c4, 0x4c4);
-      (0x4c6, 0x4c6);
-      (0x4c8, 0x4c8);
-      (0x4ca, 0x4ca);
-      (0x4cc, 0x4cc);
-      (0x4ce, 0x4cf);
-      (0x4d1, 0x4d1);
-      (0x4d3, 0x4d3);
-      (0x4d5, 0x4d5);
-      (0x4d7, 0x4d7);
-      (0x4d9, 0x4d9);
-      (0x4db, 0x4db);
-      (0x4dd, 0x4dd);
-      (0x4df, 0x4df);
-      (0x4e1, 0x4e1);
-      (0x4e3, 0x4e3);
-      (0x4e5, 0x4e5);
-      (0x4e7, 0x4e7);
-      (0x4e9, 0x4e9);
-      (0x4eb, 0x4eb);
-      (0x4ed, 0x4ed);
-      (0x4ef, 0x4ef);
-      (0x4f1, 0x4f1);
-      (0x4f3, 0x4f3);
-      (0x4f5, 0x4f5);
-      (0x4f7, 0x4f7);
-      (0x4f9, 0x4f9);
-      (0x4fb, 0x4fb);
-      (0x4fd, 0x4fd);
-      (0x4ff, 0x4ff);
-      (0x501, 0x501);
-      (0x503, 0x503);
-      (0x505, 0x505);
-      (0x507, 0x507);
-      (0x509, 0x509);
-      (0x50b, 0x50b);
-      (0x50d, 0x50d);
-      (0x50f, 0x50f);
-      (0x511, 0x511);
-      (0x513, 0x513);
-      (0x515, 0x515);
-      (0x517, 0x517);
-      (0x519, 0x519);
-      (0x51b, 0x51b);
-      (0x51d, 0x51d);
-      (0x51f, 0x51f);
-      (0x521, 0x521);
-      (0x523, 0x523);
-      (0x525, 0x525);
-      (0x527, 0x527);
-      (0x529, 0x529);
-      (0x52b, 0x52b);
-      (0x52d, 0x52d);
-      (0x52f, 0x52f);
-      (0x560, 0x588);
-      (0x10d0, 0x10fa);
-      (0x10fd, 0x10ff);
-      (0x13f8, 0x13fd);
-      (0x1c80, 0x1c88);
-      (0x1d00, 0x1d2b);
-      (0x1d2c, 0x1d6a);
-      (0x1d6b, 0x1d77);
-      (0x1d78, 0x1d78);
-      (0x1d79, 0x1d9a);
-      (0x1d9b, 0x1dbf);
-      (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);
-      (0x2071, 0x2071);
-      (0x207f, 0x207f);
-      (0x2090, 0x209c);
-      (0x210a, 0x210a);
-      (0x210e, 0x210f);
-      (0x2113, 0x2113);
-      (0x212f, 0x212f);
-      (0x2134, 0x2134);
-      (0x2139, 0x2139);
-      (0x213c, 0x213d);
-      (0x2146, 0x2149);
-      (0x214e, 0x214e);
-      (0x2170, 0x217f);
-      (0x2184, 0x2184);
-      (0x24d0, 0x24e9);
-      (0x2c30, 0x2c5f);
-      (0x2c61, 0x2c61);
-      (0x2c65, 0x2c66);
-      (0x2c68, 0x2c68);
-      (0x2c6a, 0x2c6a);
-      (0x2c6c, 0x2c6c);
-      (0x2c71, 0x2c71);
-      (0x2c73, 0x2c74);
-      (0x2c76, 0x2c7b);
-      (0x2c7c, 0x2c7d);
-      (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);
-      (0xa69c, 0xa69d);
-      (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);
-      (0xa770, 0xa770);
-      (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);
-      (0xa7af, 0xa7af);
-      (0xa7b5, 0xa7b5);
-      (0xa7b7, 0xa7b7);
-      (0xa7b9, 0xa7b9);
-      (0xa7bb, 0xa7bb);
-      (0xa7bd, 0xa7bd);
-      (0xa7bf, 0xa7bf);
-      (0xa7c1, 0xa7c1);
-      (0xa7c3, 0xa7c3);
-      (0xa7c8, 0xa7c8);
-      (0xa7ca, 0xa7ca);
-      (0xa7d1, 0xa7d1);
-      (0xa7d3, 0xa7d3);
-      (0xa7d5, 0xa7d5);
-      (0xa7d7, 0xa7d7);
-      (0xa7d9, 0xa7d9);
-      (0xa7f6, 0xa7f6);
-      (0xa7f8, 0xa7f9);
-      (0xa7fa, 0xa7fa);
-      (0xab30, 0xab5a);
-      (0xab5c, 0xab5f);
-      (0xab60, 0xab68);
-      (0xab70, 0xabbf);
-      (0xfb00, 0xfb06);
-      (0xfb13, 0xfb17);
-      (0xff41, 0xff5a);
-      (0x10428, 0x1044f);
-      (0x104d8, 0x104fb);
-      (0x10597, 0x105a1);
-      (0x105a3, 0x105b1);
-      (0x105b3, 0x105b9);
-      (0x105bb, 0x105bc);
-      (0x10780, 0x10780);
-      (0x10783, 0x10785);
-      (0x10787, 0x107b0);
-      (0x107b2, 0x107ba);
-      (0x10cc0, 0x10cf2);
-      (0x118c0, 0x118df);
-      (0x16e60, 0x16e7f);
-      (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);
-      (0x1df00, 0x1df09);
-      (0x1df0b, 0x1df1e);
-      (0x1e922, 0x1e943);
-    ]
+    [0x61, 0x7a; 0xaa, 0xaa; 0xb5, 0xb5; 0xba, 0xba; 0xdf, 0xf6;
+     0xf8, 0xff; 0x101, 0x101; 0x103, 0x103; 0x105, 0x105; 0x107, 0x107;
+     0x109, 0x109; 0x10b, 0x10b; 0x10d, 0x10d; 0x10f, 0x10f; 0x111, 0x111;
+     0x113, 0x113; 0x115, 0x115; 0x117, 0x117; 0x119, 0x119; 0x11b, 0x11b;
+     0x11d, 0x11d; 0x11f, 0x11f; 0x121, 0x121; 0x123, 0x123; 0x125, 0x125;
+     0x127, 0x127; 0x129, 0x129; 0x12b, 0x12b; 0x12d, 0x12d; 0x12f, 0x12f;
+     0x131, 0x131; 0x133, 0x133; 0x135, 0x135; 0x137, 0x138; 0x13a, 0x13a;
+     0x13c, 0x13c; 0x13e, 0x13e; 0x140, 0x140; 0x142, 0x142; 0x144, 0x144;
+     0x146, 0x146; 0x148, 0x149; 0x14b, 0x14b; 0x14d, 0x14d; 0x14f, 0x14f;
+     0x151, 0x151; 0x153, 0x153; 0x155, 0x155; 0x157, 0x157; 0x159, 0x159;
+     0x15b, 0x15b; 0x15d, 0x15d; 0x15f, 0x15f; 0x161, 0x161; 0x163, 0x163;
+     0x165, 0x165; 0x167, 0x167; 0x169, 0x169; 0x16b, 0x16b; 0x16d, 0x16d;
+     0x16f, 0x16f; 0x171, 0x171; 0x173, 0x173; 0x175, 0x175; 0x177, 0x177;
+     0x17a, 0x17a; 0x17c, 0x17c; 0x17e, 0x180; 0x183, 0x183; 0x185, 0x185;
+     0x188, 0x188; 0x18c, 0x18d; 0x192, 0x192; 0x195, 0x195; 0x199, 0x19b;
+     0x19e, 0x19e; 0x1a1, 0x1a1; 0x1a3, 0x1a3; 0x1a5, 0x1a5; 0x1a8, 0x1a8;
+     0x1aa, 0x1ab; 0x1ad, 0x1ad; 0x1b0, 0x1b0; 0x1b4, 0x1b4; 0x1b6, 0x1b6;
+     0x1b9, 0x1ba; 0x1bd, 0x1bf; 0x1c6, 0x1c6; 0x1c9, 0x1c9; 0x1cc, 0x1cc;
+     0x1ce, 0x1ce; 0x1d0, 0x1d0; 0x1d2, 0x1d2; 0x1d4, 0x1d4; 0x1d6, 0x1d6;
+     0x1d8, 0x1d8; 0x1da, 0x1da; 0x1dc, 0x1dd; 0x1df, 0x1df; 0x1e1, 0x1e1;
+     0x1e3, 0x1e3; 0x1e5, 0x1e5; 0x1e7, 0x1e7; 0x1e9, 0x1e9; 0x1eb, 0x1eb;
+     0x1ed, 0x1ed; 0x1ef, 0x1f0; 0x1f3, 0x1f3; 0x1f5, 0x1f5; 0x1f9, 0x1f9;
+     0x1fb, 0x1fb; 0x1fd, 0x1fd; 0x1ff, 0x1ff; 0x201, 0x201; 0x203, 0x203;
+     0x205, 0x205; 0x207, 0x207; 0x209, 0x209; 0x20b, 0x20b; 0x20d, 0x20d;
+     0x20f, 0x20f; 0x211, 0x211; 0x213, 0x213; 0x215, 0x215; 0x217, 0x217;
+     0x219, 0x219; 0x21b, 0x21b; 0x21d, 0x21d; 0x21f, 0x21f; 0x221, 0x221;
+     0x223, 0x223; 0x225, 0x225; 0x227, 0x227; 0x229, 0x229; 0x22b, 0x22b;
+     0x22d, 0x22d; 0x22f, 0x22f; 0x231, 0x231; 0x233, 0x239; 0x23c, 0x23c;
+     0x23f, 0x240; 0x242, 0x242; 0x247, 0x247; 0x249, 0x249; 0x24b, 0x24b;
+     0x24d, 0x24d; 0x24f, 0x293; 0x295, 0x2af; 0x2b0, 0x2b8; 0x2c0, 0x2c1;
+     0x2e0, 0x2e4; 0x345, 0x345; 0x371, 0x371; 0x373, 0x373; 0x377, 0x377;
+     0x37a, 0x37a; 0x37b, 0x37d; 0x390, 0x390; 0x3ac, 0x3ce; 0x3d0, 0x3d1;
+     0x3d5, 0x3d7; 0x3d9, 0x3d9; 0x3db, 0x3db; 0x3dd, 0x3dd; 0x3df, 0x3df;
+     0x3e1, 0x3e1; 0x3e3, 0x3e3; 0x3e5, 0x3e5; 0x3e7, 0x3e7; 0x3e9, 0x3e9;
+     0x3eb, 0x3eb; 0x3ed, 0x3ed; 0x3ef, 0x3f3; 0x3f5, 0x3f5; 0x3f8, 0x3f8;
+     0x3fb, 0x3fc; 0x430, 0x45f; 0x461, 0x461; 0x463, 0x463; 0x465, 0x465;
+     0x467, 0x467; 0x469, 0x469; 0x46b, 0x46b; 0x46d, 0x46d; 0x46f, 0x46f;
+     0x471, 0x471; 0x473, 0x473; 0x475, 0x475; 0x477, 0x477; 0x479, 0x479;
+     0x47b, 0x47b; 0x47d, 0x47d; 0x47f, 0x47f; 0x481, 0x481; 0x48b, 0x48b;
+     0x48d, 0x48d; 0x48f, 0x48f; 0x491, 0x491; 0x493, 0x493; 0x495, 0x495;
+     0x497, 0x497; 0x499, 0x499; 0x49b, 0x49b; 0x49d, 0x49d; 0x49f, 0x49f;
+     0x4a1, 0x4a1; 0x4a3, 0x4a3; 0x4a5, 0x4a5; 0x4a7, 0x4a7; 0x4a9, 0x4a9;
+     0x4ab, 0x4ab; 0x4ad, 0x4ad; 0x4af, 0x4af; 0x4b1, 0x4b1; 0x4b3, 0x4b3;
+     0x4b5, 0x4b5; 0x4b7, 0x4b7; 0x4b9, 0x4b9; 0x4bb, 0x4bb; 0x4bd, 0x4bd;
+     0x4bf, 0x4bf; 0x4c2, 0x4c2; 0x4c4, 0x4c4; 0x4c6, 0x4c6; 0x4c8, 0x4c8;
+     0x4ca, 0x4ca; 0x4cc, 0x4cc; 0x4ce, 0x4cf; 0x4d1, 0x4d1; 0x4d3, 0x4d3;
+     0x4d5, 0x4d5; 0x4d7, 0x4d7; 0x4d9, 0x4d9; 0x4db, 0x4db; 0x4dd, 0x4dd;
+     0x4df, 0x4df; 0x4e1, 0x4e1; 0x4e3, 0x4e3; 0x4e5, 0x4e5; 0x4e7, 0x4e7;
+     0x4e9, 0x4e9; 0x4eb, 0x4eb; 0x4ed, 0x4ed; 0x4ef, 0x4ef; 0x4f1, 0x4f1;
+     0x4f3, 0x4f3; 0x4f5, 0x4f5; 0x4f7, 0x4f7; 0x4f9, 0x4f9; 0x4fb, 0x4fb;
+     0x4fd, 0x4fd; 0x4ff, 0x4ff; 0x501, 0x501; 0x503, 0x503; 0x505, 0x505;
+     0x507, 0x507; 0x509, 0x509; 0x50b, 0x50b; 0x50d, 0x50d; 0x50f, 0x50f;
+     0x511, 0x511; 0x513, 0x513; 0x515, 0x515; 0x517, 0x517; 0x519, 0x519;
+     0x51b, 0x51b; 0x51d, 0x51d; 0x51f, 0x51f; 0x521, 0x521; 0x523, 0x523;
+     0x525, 0x525; 0x527, 0x527; 0x529, 0x529; 0x52b, 0x52b; 0x52d, 0x52d;
+     0x52f, 0x52f; 0x560, 0x588; 0x10d0, 0x10fa; 0x10fc, 0x10fc; 0x10fd, 0x10ff;
+     0x13f8, 0x13fd; 0x1c80, 0x1c88; 0x1d00, 0x1d2b; 0x1d2c, 0x1d6a; 0x1d6b, 0x1d77;
+     0x1d78, 0x1d78; 0x1d79, 0x1d9a; 0x1d9b, 0x1dbf; 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; 0x2071, 0x2071; 0x207f, 0x207f; 0x2090, 0x209c;
+     0x210a, 0x210a; 0x210e, 0x210f; 0x2113, 0x2113; 0x212f, 0x212f; 0x2134, 0x2134;
+     0x2139, 0x2139; 0x213c, 0x213d; 0x2146, 0x2149; 0x214e, 0x214e; 0x2170, 0x217f;
+     0x2184, 0x2184; 0x24d0, 0x24e9; 0x2c30, 0x2c5f; 0x2c61, 0x2c61; 0x2c65, 0x2c66;
+     0x2c68, 0x2c68; 0x2c6a, 0x2c6a; 0x2c6c, 0x2c6c; 0x2c71, 0x2c71; 0x2c73, 0x2c74;
+     0x2c76, 0x2c7b; 0x2c7c, 0x2c7d; 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;
+     0xa69c, 0xa69d; 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; 0xa770, 0xa770;
+     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; 0xa7af, 0xa7af; 0xa7b5, 0xa7b5; 0xa7b7, 0xa7b7;
+     0xa7b9, 0xa7b9; 0xa7bb, 0xa7bb; 0xa7bd, 0xa7bd; 0xa7bf, 0xa7bf; 0xa7c1, 0xa7c1;
+     0xa7c3, 0xa7c3; 0xa7c8, 0xa7c8; 0xa7ca, 0xa7ca; 0xa7d1, 0xa7d1; 0xa7d3, 0xa7d3;
+     0xa7d5, 0xa7d5; 0xa7d7, 0xa7d7; 0xa7d9, 0xa7d9; 0xa7f2, 0xa7f4; 0xa7f6, 0xa7f6;
+     0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa; 0xab30, 0xab5a; 0xab5c, 0xab5f; 0xab60, 0xab68;
+     0xab69, 0xab69; 0xab70, 0xabbf; 0xfb00, 0xfb06; 0xfb13, 0xfb17; 0xff41, 0xff5a;
+     0x10428, 0x1044f; 0x104d8, 0x104fb; 0x10597, 0x105a1; 0x105a3, 0x105b1; 0x105b3, 0x105b9;
+     0x105bb, 0x105bc; 0x10780, 0x10780; 0x10783, 0x10785; 0x10787, 0x107b0; 0x107b2, 0x107ba;
+     0x10cc0, 0x10cf2; 0x118c0, 0x118df; 0x16e60, 0x16e7f; 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; 0x1df00, 0x1df09; 0x1df0b, 0x1df1e; 0x1df25, 0x1df2a; 0x1e030, 0x1e06d;
+     0x1e922, 0x1e943]
 
   let math =
-    [
-      (0x2b, 0x2b);
-      (0x3c, 0x3e);
-      (0x5e, 0x5e);
-      (0x7c, 0x7c);
-      (0x7e, 0x7e);
-      (0xac, 0xac);
-      (0xb1, 0xb1);
-      (0xd7, 0xd7);
-      (0xf7, 0xf7);
-      (0x3d0, 0x3d2);
-      (0x3d5, 0x3d5);
-      (0x3f0, 0x3f1);
-      (0x3f4, 0x3f5);
-      (0x3f6, 0x3f6);
-      (0x606, 0x608);
-      (0x2016, 0x2016);
-      (0x2032, 0x2034);
-      (0x2040, 0x2040);
-      (0x2044, 0x2044);
-      (0x2052, 0x2052);
-      (0x2061, 0x2064);
-      (0x207a, 0x207c);
-      (0x207d, 0x207d);
-      (0x207e, 0x207e);
-      (0x208a, 0x208c);
-      (0x208d, 0x208d);
-      (0x208e, 0x208e);
-      (0x20d0, 0x20dc);
-      (0x20e1, 0x20e1);
-      (0x20e5, 0x20e6);
-      (0x20eb, 0x20ef);
-      (0x2102, 0x2102);
-      (0x2107, 0x2107);
-      (0x210a, 0x2113);
-      (0x2115, 0x2115);
-      (0x2118, 0x2118);
-      (0x2119, 0x211d);
-      (0x2124, 0x2124);
-      (0x2128, 0x2128);
-      (0x2129, 0x2129);
-      (0x212c, 0x212d);
-      (0x212f, 0x2131);
-      (0x2133, 0x2134);
-      (0x2135, 0x2138);
-      (0x213c, 0x213f);
-      (0x2140, 0x2144);
-      (0x2145, 0x2149);
-      (0x214b, 0x214b);
-      (0x2190, 0x2194);
-      (0x2195, 0x2199);
-      (0x219a, 0x219b);
-      (0x219c, 0x219f);
-      (0x21a0, 0x21a0);
-      (0x21a1, 0x21a2);
-      (0x21a3, 0x21a3);
-      (0x21a4, 0x21a5);
-      (0x21a6, 0x21a6);
-      (0x21a7, 0x21a7);
-      (0x21a9, 0x21ad);
-      (0x21ae, 0x21ae);
-      (0x21b0, 0x21b1);
-      (0x21b6, 0x21b7);
-      (0x21bc, 0x21cd);
-      (0x21ce, 0x21cf);
-      (0x21d0, 0x21d1);
-      (0x21d2, 0x21d2);
-      (0x21d3, 0x21d3);
-      (0x21d4, 0x21d4);
-      (0x21d5, 0x21db);
-      (0x21dd, 0x21dd);
-      (0x21e4, 0x21e5);
-      (0x21f4, 0x22ff);
-      (0x2308, 0x2308);
-      (0x2309, 0x2309);
-      (0x230a, 0x230a);
-      (0x230b, 0x230b);
-      (0x2320, 0x2321);
-      (0x237c, 0x237c);
-      (0x239b, 0x23b3);
-      (0x23b4, 0x23b5);
-      (0x23b7, 0x23b7);
-      (0x23d0, 0x23d0);
-      (0x23dc, 0x23e1);
-      (0x23e2, 0x23e2);
-      (0x25a0, 0x25a1);
-      (0x25ae, 0x25b6);
-      (0x25b7, 0x25b7);
-      (0x25bc, 0x25c0);
-      (0x25c1, 0x25c1);
-      (0x25c6, 0x25c7);
-      (0x25ca, 0x25cb);
-      (0x25cf, 0x25d3);
-      (0x25e2, 0x25e2);
-      (0x25e4, 0x25e4);
-      (0x25e7, 0x25ec);
-      (0x25f8, 0x25ff);
-      (0x2605, 0x2606);
-      (0x2640, 0x2640);
-      (0x2642, 0x2642);
-      (0x2660, 0x2663);
-      (0x266d, 0x266e);
-      (0x266f, 0x266f);
-      (0x27c0, 0x27c4);
-      (0x27c5, 0x27c5);
-      (0x27c6, 0x27c6);
-      (0x27c7, 0x27e5);
-      (0x27e6, 0x27e6);
-      (0x27e7, 0x27e7);
-      (0x27e8, 0x27e8);
-      (0x27e9, 0x27e9);
-      (0x27ea, 0x27ea);
-      (0x27eb, 0x27eb);
-      (0x27ec, 0x27ec);
-      (0x27ed, 0x27ed);
-      (0x27ee, 0x27ee);
-      (0x27ef, 0x27ef);
-      (0x27f0, 0x27ff);
-      (0x2900, 0x2982);
-      (0x2983, 0x2983);
-      (0x2984, 0x2984);
-      (0x2985, 0x2985);
-      (0x2986, 0x2986);
-      (0x2987, 0x2987);
-      (0x2988, 0x2988);
-      (0x2989, 0x2989);
-      (0x298a, 0x298a);
-      (0x298b, 0x298b);
-      (0x298c, 0x298c);
-      (0x298d, 0x298d);
-      (0x298e, 0x298e);
-      (0x298f, 0x298f);
-      (0x2990, 0x2990);
-      (0x2991, 0x2991);
-      (0x2992, 0x2992);
-      (0x2993, 0x2993);
-      (0x2994, 0x2994);
-      (0x2995, 0x2995);
-      (0x2996, 0x2996);
-      (0x2997, 0x2997);
-      (0x2998, 0x2998);
-      (0x2999, 0x29d7);
-      (0x29d8, 0x29d8);
-      (0x29d9, 0x29d9);
-      (0x29da, 0x29da);
-      (0x29db, 0x29db);
-      (0x29dc, 0x29fb);
-      (0x29fc, 0x29fc);
-      (0x29fd, 0x29fd);
-      (0x29fe, 0x2aff);
-      (0x2b30, 0x2b44);
-      (0x2b47, 0x2b4c);
-      (0xfb29, 0xfb29);
-      (0xfe61, 0xfe61);
-      (0xfe62, 0xfe62);
-      (0xfe63, 0xfe63);
-      (0xfe64, 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, 0x1d6c0);
-      (0x1d6c1, 0x1d6c1);
-      (0x1d6c2, 0x1d6da);
-      (0x1d6db, 0x1d6db);
-      (0x1d6dc, 0x1d6fa);
-      (0x1d6fb, 0x1d6fb);
-      (0x1d6fc, 0x1d714);
-      (0x1d715, 0x1d715);
-      (0x1d716, 0x1d734);
-      (0x1d735, 0x1d735);
-      (0x1d736, 0x1d74e);
-      (0x1d74f, 0x1d74f);
-      (0x1d750, 0x1d76e);
-      (0x1d76f, 0x1d76f);
-      (0x1d770, 0x1d788);
-      (0x1d789, 0x1d789);
-      (0x1d78a, 0x1d7a8);
-      (0x1d7a9, 0x1d7a9);
-      (0x1d7aa, 0x1d7c2);
-      (0x1d7c3, 0x1d7c3);
-      (0x1d7c4, 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);
-      (0x1eef0, 0x1eef1);
-      (0x1eeab, 0x1eebb);
-      (0x1eea5, 0x1eea9);
-      (0x1eea1, 0x1eea3);
-      (0x1ee8b, 0x1ee9b);
-    ]
+    [0x2b, 0x2b; 0x3c, 0x3e; 0x5e, 0x5e; 0x7c, 0x7c; 0x7e, 0x7e;
+     0xac, 0xac; 0xb1, 0xb1; 0xd7, 0xd7; 0xf7, 0xf7; 0x3d0, 0x3d2;
+     0x3d5, 0x3d5; 0x3f0, 0x3f1; 0x3f4, 0x3f5; 0x3f6, 0x3f6; 0x606, 0x608;
+     0x2016, 0x2016; 0x2032, 0x2034; 0x2040, 0x2040; 0x2044, 0x2044; 0x2052, 0x2052;
+     0x2061, 0x2064; 0x207a, 0x207c; 0x207d, 0x207d; 0x207e, 0x207e; 0x208a, 0x208c;
+     0x208d, 0x208d; 0x208e, 0x208e; 0x20d0, 0x20dc; 0x20e1, 0x20e1; 0x20e5, 0x20e6;
+     0x20eb, 0x20ef; 0x2102, 0x2102; 0x2107, 0x2107; 0x210a, 0x2113; 0x2115, 0x2115;
+     0x2118, 0x2118; 0x2119, 0x211d; 0x2124, 0x2124; 0x2128, 0x2128; 0x2129, 0x2129;
+     0x212c, 0x212d; 0x212f, 0x2131; 0x2133, 0x2134; 0x2135, 0x2138; 0x213c, 0x213f;
+     0x2140, 0x2144; 0x2145, 0x2149; 0x214b, 0x214b; 0x2190, 0x2194; 0x2195, 0x2199;
+     0x219a, 0x219b; 0x219c, 0x219f; 0x21a0, 0x21a0; 0x21a1, 0x21a2; 0x21a3, 0x21a3;
+     0x21a4, 0x21a5; 0x21a6, 0x21a6; 0x21a7, 0x21a7; 0x21a9, 0x21ad; 0x21ae, 0x21ae;
+     0x21b0, 0x21b1; 0x21b6, 0x21b7; 0x21bc, 0x21cd; 0x21ce, 0x21cf; 0x21d0, 0x21d1;
+     0x21d2, 0x21d2; 0x21d3, 0x21d3; 0x21d4, 0x21d4; 0x21d5, 0x21db; 0x21dd, 0x21dd;
+     0x21e4, 0x21e5; 0x21f4, 0x22ff; 0x2308, 0x2308; 0x2309, 0x2309; 0x230a, 0x230a;
+     0x230b, 0x230b; 0x2320, 0x2321; 0x237c, 0x237c; 0x239b, 0x23b3; 0x23b4, 0x23b5;
+     0x23b7, 0x23b7; 0x23d0, 0x23d0; 0x23dc, 0x23e1; 0x23e2, 0x23e2; 0x25a0, 0x25a1;
+     0x25ae, 0x25b6; 0x25b7, 0x25b7; 0x25bc, 0x25c0; 0x25c1, 0x25c1; 0x25c6, 0x25c7;
+     0x25ca, 0x25cb; 0x25cf, 0x25d3; 0x25e2, 0x25e2; 0x25e4, 0x25e4; 0x25e7, 0x25ec;
+     0x25f8, 0x25ff; 0x2605, 0x2606; 0x2640, 0x2640; 0x2642, 0x2642; 0x2660, 0x2663;
+     0x266d, 0x266e; 0x266f, 0x266f; 0x27c0, 0x27c4; 0x27c5, 0x27c5; 0x27c6, 0x27c6;
+     0x27c7, 0x27e5; 0x27e6, 0x27e6; 0x27e7, 0x27e7; 0x27e8, 0x27e8; 0x27e9, 0x27e9;
+     0x27ea, 0x27ea; 0x27eb, 0x27eb; 0x27ec, 0x27ec; 0x27ed, 0x27ed; 0x27ee, 0x27ee;
+     0x27ef, 0x27ef; 0x27f0, 0x27ff; 0x2900, 0x2982; 0x2983, 0x2983; 0x2984, 0x2984;
+     0x2985, 0x2985; 0x2986, 0x2986; 0x2987, 0x2987; 0x2988, 0x2988; 0x2989, 0x2989;
+     0x298a, 0x298a; 0x298b, 0x298b; 0x298c, 0x298c; 0x298d, 0x298d; 0x298e, 0x298e;
+     0x298f, 0x298f; 0x2990, 0x2990; 0x2991, 0x2991; 0x2992, 0x2992; 0x2993, 0x2993;
+     0x2994, 0x2994; 0x2995, 0x2995; 0x2996, 0x2996; 0x2997, 0x2997; 0x2998, 0x2998;
+     0x2999, 0x29d7; 0x29d8, 0x29d8; 0x29d9, 0x29d9; 0x29da, 0x29da; 0x29db, 0x29db;
+     0x29dc, 0x29fb; 0x29fc, 0x29fc; 0x29fd, 0x29fd; 0x29fe, 0x2aff; 0x2b30, 0x2b44;
+     0x2b47, 0x2b4c; 0xfb29, 0xfb29; 0xfe61, 0xfe61; 0xfe62, 0xfe62; 0xfe63, 0xfe63;
+     0xfe64, 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, 0x1d6c0;
+     0x1d6c1, 0x1d6c1; 0x1d6c2, 0x1d6da; 0x1d6db, 0x1d6db; 0x1d6dc, 0x1d6fa; 0x1d6fb, 0x1d6fb;
+     0x1d6fc, 0x1d714; 0x1d715, 0x1d715; 0x1d716, 0x1d734; 0x1d735, 0x1d735; 0x1d736, 0x1d74e;
+     0x1d74f, 0x1d74f; 0x1d750, 0x1d76e; 0x1d76f, 0x1d76f; 0x1d770, 0x1d788; 0x1d789, 0x1d789;
+     0x1d78a, 0x1d7a8; 0x1d7a9, 0x1d7a9; 0x1d7aa, 0x1d7c2; 0x1d7c3, 0x1d7c3; 0x1d7c4, 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;
+     0x1eef0, 0x1eef1; 0x1eeab, 0x1eebb; 0x1eea5, 0x1eea9; 0x1eea1, 0x1eea3; 0x1ee8b, 0x1ee9b]
 
   let other_alphabetic =
-    [
-      (0x345, 0x345);
-      (0x5b0, 0x5bd);
-      (0x5bf, 0x5bf);
-      (0x5c1, 0x5c2);
-      (0x5c4, 0x5c5);
-      (0x5c7, 0x5c7);
-      (0x610, 0x61a);
-      (0x64b, 0x657);
-      (0x659, 0x65f);
-      (0x670, 0x670);
-      (0x6d6, 0x6dc);
-      (0x6e1, 0x6e4);
-      (0x6e7, 0x6e8);
-      (0x6ed, 0x6ed);
-      (0x711, 0x711);
-      (0x730, 0x73f);
-      (0x7a6, 0x7b0);
-      (0x816, 0x817);
-      (0x81b, 0x823);
-      (0x825, 0x827);
-      (0x829, 0x82c);
-      (0x8d4, 0x8df);
-      (0x8e3, 0x8e9);
-      (0x8f0, 0x902);
-      (0x903, 0x903);
-      (0x93a, 0x93a);
-      (0x93b, 0x93b);
-      (0x93e, 0x940);
-      (0x941, 0x948);
-      (0x949, 0x94c);
-      (0x94e, 0x94f);
-      (0x955, 0x957);
-      (0x962, 0x963);
-      (0x981, 0x981);
-      (0x982, 0x983);
-      (0x9be, 0x9c0);
-      (0x9c1, 0x9c4);
-      (0x9c7, 0x9c8);
-      (0x9cb, 0x9cc);
-      (0x9d7, 0x9d7);
-      (0x9e2, 0x9e3);
-      (0xa01, 0xa02);
-      (0xa03, 0xa03);
-      (0xa3e, 0xa40);
-      (0xa41, 0xa42);
-      (0xa47, 0xa48);
-      (0xa4b, 0xa4c);
-      (0xa51, 0xa51);
-      (0xa70, 0xa71);
-      (0xa75, 0xa75);
-      (0xa81, 0xa82);
-      (0xa83, 0xa83);
-      (0xabe, 0xac0);
-      (0xac1, 0xac5);
-      (0xac7, 0xac8);
-      (0xac9, 0xac9);
-      (0xacb, 0xacc);
-      (0xae2, 0xae3);
-      (0xafa, 0xafc);
-      (0xb01, 0xb01);
-      (0xb02, 0xb03);
-      (0xb3e, 0xb3e);
-      (0xb3f, 0xb3f);
-      (0xb40, 0xb40);
-      (0xb41, 0xb44);
-      (0xb47, 0xb48);
-      (0xb4b, 0xb4c);
-      (0xb56, 0xb56);
-      (0xb57, 0xb57);
-      (0xb62, 0xb63);
-      (0xb82, 0xb82);
-      (0xbbe, 0xbbf);
-      (0xbc0, 0xbc0);
-      (0xbc1, 0xbc2);
-      (0xbc6, 0xbc8);
-      (0xbca, 0xbcc);
-      (0xbd7, 0xbd7);
-      (0xc00, 0xc00);
-      (0xc01, 0xc03);
-      (0xc3e, 0xc40);
-      (0xc41, 0xc44);
-      (0xc46, 0xc48);
-      (0xc4a, 0xc4c);
-      (0xc55, 0xc56);
-      (0xc62, 0xc63);
-      (0xc81, 0xc81);
-      (0xc82, 0xc83);
-      (0xcbe, 0xcbe);
-      (0xcbf, 0xcbf);
-      (0xcc0, 0xcc4);
-      (0xcc6, 0xcc6);
-      (0xcc7, 0xcc8);
-      (0xcca, 0xccb);
-      (0xccc, 0xccc);
-      (0xcd5, 0xcd6);
-      (0xce2, 0xce3);
-      (0xd00, 0xd01);
-      (0xd02, 0xd03);
-      (0xd3e, 0xd40);
-      (0xd41, 0xd44);
-      (0xd46, 0xd48);
-      (0xd4a, 0xd4c);
-      (0xd57, 0xd57);
-      (0xd62, 0xd63);
-      (0xd81, 0xd81);
-      (0xd82, 0xd83);
-      (0xdcf, 0xdd1);
-      (0xdd2, 0xdd4);
-      (0xdd6, 0xdd6);
-      (0xdd8, 0xddf);
-      (0xdf2, 0xdf3);
-      (0xe31, 0xe31);
-      (0xe34, 0xe3a);
-      (0xe4d, 0xe4d);
-      (0xeb1, 0xeb1);
-      (0xeb4, 0xeb9);
-      (0xebb, 0xebc);
-      (0xecd, 0xecd);
-      (0xf71, 0xf7e);
-      (0xf7f, 0xf7f);
-      (0xf80, 0xf81);
-      (0xf8d, 0xf97);
-      (0xf99, 0xfbc);
-      (0x102b, 0x102c);
-      (0x102d, 0x1030);
-      (0x1031, 0x1031);
-      (0x1032, 0x1036);
-      (0x1038, 0x1038);
-      (0x103b, 0x103c);
-      (0x103d, 0x103e);
-      (0x1056, 0x1057);
-      (0x1058, 0x1059);
-      (0x105e, 0x1060);
-      (0x1062, 0x1064);
-      (0x1067, 0x106d);
-      (0x1071, 0x1074);
-      (0x1082, 0x1082);
-      (0x1083, 0x1084);
-      (0x1085, 0x1086);
-      (0x1087, 0x108c);
-      (0x108d, 0x108d);
-      (0x108f, 0x108f);
-      (0x109a, 0x109c);
-      (0x109d, 0x109d);
-      (0x1712, 0x1713);
-      (0x1732, 0x1733);
-      (0x1752, 0x1753);
-      (0x1772, 0x1773);
-      (0x17b6, 0x17b6);
-      (0x17b7, 0x17bd);
-      (0x17be, 0x17c5);
-      (0x17c6, 0x17c6);
-      (0x17c7, 0x17c8);
-      (0x1885, 0x1886);
-      (0x18a9, 0x18a9);
-      (0x1920, 0x1922);
-      (0x1923, 0x1926);
-      (0x1927, 0x1928);
-      (0x1929, 0x192b);
-      (0x1930, 0x1931);
-      (0x1932, 0x1932);
-      (0x1933, 0x1938);
-      (0x1a17, 0x1a18);
-      (0x1a19, 0x1a1a);
-      (0x1a1b, 0x1a1b);
-      (0x1a55, 0x1a55);
-      (0x1a56, 0x1a56);
-      (0x1a57, 0x1a57);
-      (0x1a58, 0x1a5e);
-      (0x1a61, 0x1a61);
-      (0x1a62, 0x1a62);
-      (0x1a63, 0x1a64);
-      (0x1a65, 0x1a6c);
-      (0x1a6d, 0x1a72);
-      (0x1a73, 0x1a74);
-      (0x1abf, 0x1ac0);
-      (0x1acc, 0x1ace);
-      (0x1b00, 0x1b03);
-      (0x1b04, 0x1b04);
-      (0x1b35, 0x1b35);
-      (0x1b36, 0x1b3a);
-      (0x1b3b, 0x1b3b);
-      (0x1b3c, 0x1b3c);
-      (0x1b3d, 0x1b41);
-      (0x1b42, 0x1b42);
-      (0x1b43, 0x1b43);
-      (0x1b80, 0x1b81);
-      (0x1b82, 0x1b82);
-      (0x1ba1, 0x1ba1);
-      (0x1ba2, 0x1ba5);
-      (0x1ba6, 0x1ba7);
-      (0x1ba8, 0x1ba9);
-      (0x1bac, 0x1bad);
-      (0x1be7, 0x1be7);
-      (0x1be8, 0x1be9);
-      (0x1bea, 0x1bec);
-      (0x1bed, 0x1bed);
-      (0x1bee, 0x1bee);
-      (0x1bef, 0x1bf1);
-      (0x1c24, 0x1c2b);
-      (0x1c2c, 0x1c33);
-      (0x1c34, 0x1c35);
-      (0x1c36, 0x1c36);
-      (0x1de7, 0x1df4);
-      (0x24b6, 0x24e9);
-      (0x2de0, 0x2dff);
-      (0xa674, 0xa67b);
-      (0xa69e, 0xa69f);
-      (0xa802, 0xa802);
-      (0xa80b, 0xa80b);
-      (0xa823, 0xa824);
-      (0xa825, 0xa826);
-      (0xa827, 0xa827);
-      (0xa880, 0xa881);
-      (0xa8b4, 0xa8c3);
-      (0xa8c5, 0xa8c5);
-      (0xa8ff, 0xa8ff);
-      (0xa926, 0xa92a);
-      (0xa947, 0xa951);
-      (0xa952, 0xa952);
-      (0xa980, 0xa982);
-      (0xa983, 0xa983);
-      (0xa9b4, 0xa9b5);
-      (0xa9b6, 0xa9b9);
-      (0xa9ba, 0xa9bb);
-      (0xa9bc, 0xa9bd);
-      (0xa9be, 0xa9bf);
-      (0xa9e5, 0xa9e5);
-      (0xaa29, 0xaa2e);
-      (0xaa2f, 0xaa30);
-      (0xaa31, 0xaa32);
-      (0xaa33, 0xaa34);
-      (0xaa35, 0xaa36);
-      (0xaa43, 0xaa43);
-      (0xaa4c, 0xaa4c);
-      (0xaa4d, 0xaa4d);
-      (0xaa7b, 0xaa7b);
-      (0xaa7c, 0xaa7c);
-      (0xaa7d, 0xaa7d);
-      (0xaab0, 0xaab0);
-      (0xaab2, 0xaab4);
-      (0xaab7, 0xaab8);
-      (0xaabe, 0xaabe);
-      (0xaaeb, 0xaaeb);
-      (0xaaec, 0xaaed);
-      (0xaaee, 0xaaef);
-      (0xaaf5, 0xaaf5);
-      (0xabe3, 0xabe4);
-      (0xabe5, 0xabe5);
-      (0xabe6, 0xabe7);
-      (0xabe8, 0xabe8);
-      (0xabe9, 0xabea);
-      (0xfb1e, 0xfb1e);
-      (0x10376, 0x1037a);
-      (0x10a01, 0x10a03);
-      (0x10a05, 0x10a06);
-      (0x10a0c, 0x10a0f);
-      (0x10d24, 0x10d27);
-      (0x10eab, 0x10eac);
-      (0x11000, 0x11000);
-      (0x11001, 0x11001);
-      (0x11002, 0x11002);
-      (0x11038, 0x11045);
-      (0x11073, 0x11074);
-      (0x11082, 0x11082);
-      (0x110b0, 0x110b2);
-      (0x110b3, 0x110b6);
-      (0x110b7, 0x110b8);
-      (0x110c2, 0x110c2);
-      (0x11100, 0x11102);
-      (0x11127, 0x1112b);
-      (0x1112c, 0x1112c);
-      (0x1112d, 0x11132);
-      (0x11145, 0x11146);
-      (0x11180, 0x11181);
-      (0x11182, 0x11182);
-      (0x111b3, 0x111b5);
-      (0x111b6, 0x111be);
-      (0x111bf, 0x111bf);
-      (0x111ce, 0x111ce);
-      (0x111cf, 0x111cf);
-      (0x1122c, 0x1122e);
-      (0x1122f, 0x11231);
-      (0x11232, 0x11233);
-      (0x11234, 0x11234);
-      (0x11237, 0x11237);
-      (0x1123e, 0x1123e);
-      (0x112df, 0x112df);
-      (0x112e0, 0x112e2);
-      (0x112e3, 0x112e8);
-      (0x11300, 0x11301);
-      (0x11302, 0x11303);
-      (0x1133e, 0x1133f);
-      (0x11340, 0x11340);
-      (0x11341, 0x11344);
-      (0x11347, 0x11348);
-      (0x1134b, 0x1134c);
-      (0x11357, 0x11357);
-      (0x11362, 0x11363);
-      (0x11435, 0x11437);
-      (0x11438, 0x1143f);
-      (0x11440, 0x11441);
-      (0x11443, 0x11444);
-      (0x11445, 0x11445);
-      (0x114b0, 0x114b2);
-      (0x114b3, 0x114b8);
-      (0x114b9, 0x114b9);
-      (0x114ba, 0x114ba);
-      (0x114bb, 0x114be);
-      (0x114bf, 0x114c0);
-      (0x114c1, 0x114c1);
-      (0x115af, 0x115b1);
-      (0x115b2, 0x115b5);
-      (0x115b8, 0x115bb);
-      (0x115bc, 0x115bd);
-      (0x115be, 0x115be);
-      (0x115dc, 0x115dd);
-      (0x11630, 0x11632);
-      (0x11633, 0x1163a);
-      (0x1163b, 0x1163c);
-      (0x1163d, 0x1163d);
-      (0x1163e, 0x1163e);
-      (0x11640, 0x11640);
-      (0x116ab, 0x116ab);
-      (0x116ac, 0x116ac);
-      (0x116ad, 0x116ad);
-      (0x116ae, 0x116af);
-      (0x116b0, 0x116b5);
-      (0x1171d, 0x1171f);
-      (0x11720, 0x11721);
-      (0x11722, 0x11725);
-      (0x11726, 0x11726);
-      (0x11727, 0x1172a);
-      (0x1182c, 0x1182e);
-      (0x1182f, 0x11837);
-      (0x11838, 0x11838);
-      (0x11930, 0x11935);
-      (0x11937, 0x11938);
-      (0x1193b, 0x1193c);
-      (0x11940, 0x11940);
-      (0x11942, 0x11942);
-      (0x119d1, 0x119d3);
-      (0x119d4, 0x119d7);
-      (0x119da, 0x119db);
-      (0x119dc, 0x119df);
-      (0x119e4, 0x119e4);
-      (0x11a01, 0x11a0a);
-      (0x11a35, 0x11a38);
-      (0x11a39, 0x11a39);
-      (0x11a3b, 0x11a3e);
-      (0x11a51, 0x11a56);
-      (0x11a57, 0x11a58);
-      (0x11a59, 0x11a5b);
-      (0x11a8a, 0x11a96);
-      (0x11a97, 0x11a97);
-      (0x11c2f, 0x11c2f);
-      (0x11c30, 0x11c36);
-      (0x11c38, 0x11c3d);
-      (0x11c3e, 0x11c3e);
-      (0x11c92, 0x11ca7);
-      (0x11ca9, 0x11ca9);
-      (0x11caa, 0x11cb0);
-      (0x11cb1, 0x11cb1);
-      (0x11cb2, 0x11cb3);
-      (0x11cb4, 0x11cb4);
-      (0x11cb5, 0x11cb6);
-      (0x11d31, 0x11d36);
-      (0x11d3a, 0x11d3a);
-      (0x11d3c, 0x11d3d);
-      (0x11d3f, 0x11d41);
-      (0x11d43, 0x11d43);
-      (0x11d47, 0x11d47);
-      (0x11d8a, 0x11d8e);
-      (0x11d90, 0x11d91);
-      (0x11d93, 0x11d94);
-      (0x11d95, 0x11d95);
-      (0x11d96, 0x11d96);
-      (0x11ef3, 0x11ef4);
-      (0x11ef5, 0x11ef6);
-      (0x16f4f, 0x16f4f);
-      (0x16f51, 0x16f87);
-      (0x16f8f, 0x16f92);
-      (0x16ff0, 0x16ff1);
-      (0x1bc9e, 0x1bc9e);
-      (0x1e000, 0x1e006);
-      (0x1e008, 0x1e018);
-      (0x1e01b, 0x1e021);
-      (0x1e023, 0x1e024);
-      (0x1e026, 0x1e02a);
-      (0x1e947, 0x1e947);
-      (0x1f170, 0x1f189);
-      (0x1f150, 0x1f169);
-      (0x1f130, 0x1f149);
-    ]
+    [0x345, 0x345; 0x5b0, 0x5bd; 0x5bf, 0x5bf; 0x5c1, 0x5c2; 0x5c4, 0x5c5;
+     0x5c7, 0x5c7; 0x610, 0x61a; 0x64b, 0x657; 0x659, 0x65f; 0x670, 0x670;
+     0x6d6, 0x6dc; 0x6e1, 0x6e4; 0x6e7, 0x6e8; 0x6ed, 0x6ed; 0x711, 0x711;
+     0x730, 0x73f; 0x7a6, 0x7b0; 0x816, 0x817; 0x81b, 0x823; 0x825, 0x827;
+     0x829, 0x82c; 0x8d4, 0x8df; 0x8e3, 0x8e9; 0x8f0, 0x902; 0x903, 0x903;
+     0x93a, 0x93a; 0x93b, 0x93b; 0x93e, 0x940; 0x941, 0x948; 0x949, 0x94c;
+     0x94e, 0x94f; 0x955, 0x957; 0x962, 0x963; 0x981, 0x981; 0x982, 0x983;
+     0x9be, 0x9c0; 0x9c1, 0x9c4; 0x9c7, 0x9c8; 0x9cb, 0x9cc; 0x9d7, 0x9d7;
+     0x9e2, 0x9e3; 0xa01, 0xa02; 0xa03, 0xa03; 0xa3e, 0xa40; 0xa41, 0xa42;
+     0xa47, 0xa48; 0xa4b, 0xa4c; 0xa51, 0xa51; 0xa70, 0xa71; 0xa75, 0xa75;
+     0xa81, 0xa82; 0xa83, 0xa83; 0xabe, 0xac0; 0xac1, 0xac5; 0xac7, 0xac8;
+     0xac9, 0xac9; 0xacb, 0xacc; 0xae2, 0xae3; 0xafa, 0xafc; 0xb01, 0xb01;
+     0xb02, 0xb03; 0xb3e, 0xb3e; 0xb3f, 0xb3f; 0xb40, 0xb40; 0xb41, 0xb44;
+     0xb47, 0xb48; 0xb4b, 0xb4c; 0xb56, 0xb56; 0xb57, 0xb57; 0xb62, 0xb63;
+     0xb82, 0xb82; 0xbbe, 0xbbf; 0xbc0, 0xbc0; 0xbc1, 0xbc2; 0xbc6, 0xbc8;
+     0xbca, 0xbcc; 0xbd7, 0xbd7; 0xc00, 0xc00; 0xc01, 0xc03; 0xc04, 0xc04;
+     0xc3e, 0xc40; 0xc41, 0xc44; 0xc46, 0xc48; 0xc4a, 0xc4c; 0xc55, 0xc56;
+     0xc62, 0xc63; 0xc81, 0xc81; 0xc82, 0xc83; 0xcbe, 0xcbe; 0xcbf, 0xcbf;
+     0xcc0, 0xcc4; 0xcc6, 0xcc6; 0xcc7, 0xcc8; 0xcca, 0xccb; 0xccc, 0xccc;
+     0xcd5, 0xcd6; 0xce2, 0xce3; 0xcf3, 0xcf3; 0xd00, 0xd01; 0xd02, 0xd03;
+     0xd3e, 0xd40; 0xd41, 0xd44; 0xd46, 0xd48; 0xd4a, 0xd4c; 0xd57, 0xd57;
+     0xd62, 0xd63; 0xd81, 0xd81; 0xd82, 0xd83; 0xdcf, 0xdd1; 0xdd2, 0xdd4;
+     0xdd6, 0xdd6; 0xdd8, 0xddf; 0xdf2, 0xdf3; 0xe31, 0xe31; 0xe34, 0xe3a;
+     0xe4d, 0xe4d; 0xeb1, 0xeb1; 0xeb4, 0xeb9; 0xebb, 0xebc; 0xecd, 0xecd;
+     0xf71, 0xf7e; 0xf7f, 0xf7f; 0xf80, 0xf83; 0xf8d, 0xf97; 0xf99, 0xfbc;
+     0x102b, 0x102c; 0x102d, 0x1030; 0x1031, 0x1031; 0x1032, 0x1036; 0x1038, 0x1038;
+     0x103b, 0x103c; 0x103d, 0x103e; 0x1056, 0x1057; 0x1058, 0x1059; 0x105e, 0x1060;
+     0x1062, 0x1064; 0x1067, 0x106d; 0x1071, 0x1074; 0x1082, 0x1082; 0x1083, 0x1084;
+     0x1085, 0x1086; 0x1087, 0x108c; 0x108d, 0x108d; 0x108f, 0x108f; 0x109a, 0x109c;
+     0x109d, 0x109d; 0x1712, 0x1713; 0x1732, 0x1733; 0x1752, 0x1753; 0x1772, 0x1773;
+     0x17b6, 0x17b6; 0x17b7, 0x17bd; 0x17be, 0x17c5; 0x17c6, 0x17c6; 0x17c7, 0x17c8;
+     0x1885, 0x1886; 0x18a9, 0x18a9; 0x1920, 0x1922; 0x1923, 0x1926; 0x1927, 0x1928;
+     0x1929, 0x192b; 0x1930, 0x1931; 0x1932, 0x1932; 0x1933, 0x1938; 0x1a17, 0x1a18;
+     0x1a19, 0x1a1a; 0x1a1b, 0x1a1b; 0x1a55, 0x1a55; 0x1a56, 0x1a56; 0x1a57, 0x1a57;
+     0x1a58, 0x1a5e; 0x1a61, 0x1a61; 0x1a62, 0x1a62; 0x1a63, 0x1a64; 0x1a65, 0x1a6c;
+     0x1a6d, 0x1a72; 0x1a73, 0x1a74; 0x1abf, 0x1ac0; 0x1acc, 0x1ace; 0x1b00, 0x1b03;
+     0x1b04, 0x1b04; 0x1b35, 0x1b35; 0x1b36, 0x1b3a; 0x1b3b, 0x1b3b; 0x1b3c, 0x1b3c;
+     0x1b3d, 0x1b41; 0x1b42, 0x1b42; 0x1b43, 0x1b43; 0x1b80, 0x1b81; 0x1b82, 0x1b82;
+     0x1ba1, 0x1ba1; 0x1ba2, 0x1ba5; 0x1ba6, 0x1ba7; 0x1ba8, 0x1ba9; 0x1bac, 0x1bad;
+     0x1be7, 0x1be7; 0x1be8, 0x1be9; 0x1bea, 0x1bec; 0x1bed, 0x1bed; 0x1bee, 0x1bee;
+     0x1bef, 0x1bf1; 0x1c24, 0x1c2b; 0x1c2c, 0x1c33; 0x1c34, 0x1c35; 0x1c36, 0x1c36;
+     0x1de7, 0x1df4; 0x24b6, 0x24e9; 0x2de0, 0x2dff; 0xa674, 0xa67b; 0xa69e, 0xa69f;
+     0xa802, 0xa802; 0xa80b, 0xa80b; 0xa823, 0xa824; 0xa825, 0xa826; 0xa827, 0xa827;
+     0xa880, 0xa881; 0xa8b4, 0xa8c3; 0xa8c5, 0xa8c5; 0xa8ff, 0xa8ff; 0xa926, 0xa92a;
+     0xa947, 0xa951; 0xa952, 0xa952; 0xa980, 0xa982; 0xa983, 0xa983; 0xa9b4, 0xa9b5;
+     0xa9b6, 0xa9b9; 0xa9ba, 0xa9bb; 0xa9bc, 0xa9bd; 0xa9be, 0xa9bf; 0xa9e5, 0xa9e5;
+     0xaa29, 0xaa2e; 0xaa2f, 0xaa30; 0xaa31, 0xaa32; 0xaa33, 0xaa34; 0xaa35, 0xaa36;
+     0xaa43, 0xaa43; 0xaa4c, 0xaa4c; 0xaa4d, 0xaa4d; 0xaa7b, 0xaa7b; 0xaa7c, 0xaa7c;
+     0xaa7d, 0xaa7d; 0xaab0, 0xaab0; 0xaab2, 0xaab4; 0xaab7, 0xaab8; 0xaabe, 0xaabe;
+     0xaaeb, 0xaaeb; 0xaaec, 0xaaed; 0xaaee, 0xaaef; 0xaaf5, 0xaaf5; 0xabe3, 0xabe4;
+     0xabe5, 0xabe5; 0xabe6, 0xabe7; 0xabe8, 0xabe8; 0xabe9, 0xabea; 0xfb1e, 0xfb1e;
+     0x10376, 0x1037a; 0x10a01, 0x10a03; 0x10a05, 0x10a06; 0x10a0c, 0x10a0f; 0x10d24, 0x10d27;
+     0x10eab, 0x10eac; 0x11000, 0x11000; 0x11001, 0x11001; 0x11002, 0x11002; 0x11038, 0x11045;
+     0x11073, 0x11074; 0x11080, 0x11081; 0x11082, 0x11082; 0x110b0, 0x110b2; 0x110b3, 0x110b6;
+     0x110b7, 0x110b8; 0x110c2, 0x110c2; 0x11100, 0x11102; 0x11127, 0x1112b; 0x1112c, 0x1112c;
+     0x1112d, 0x11132; 0x11145, 0x11146; 0x11180, 0x11181; 0x11182, 0x11182; 0x111b3, 0x111b5;
+     0x111b6, 0x111be; 0x111bf, 0x111bf; 0x111ce, 0x111ce; 0x111cf, 0x111cf; 0x1122c, 0x1122e;
+     0x1122f, 0x11231; 0x11232, 0x11233; 0x11234, 0x11234; 0x11237, 0x11237; 0x1123e, 0x1123e;
+     0x11241, 0x11241; 0x112df, 0x112df; 0x112e0, 0x112e2; 0x112e3, 0x112e8; 0x11300, 0x11301;
+     0x11302, 0x11303; 0x1133e, 0x1133f; 0x11340, 0x11340; 0x11341, 0x11344; 0x11347, 0x11348;
+     0x1134b, 0x1134c; 0x11357, 0x11357; 0x11362, 0x11363; 0x11435, 0x11437; 0x11438, 0x1143f;
+     0x11440, 0x11441; 0x11443, 0x11444; 0x11445, 0x11445; 0x114b0, 0x114b2; 0x114b3, 0x114b8;
+     0x114b9, 0x114b9; 0x114ba, 0x114ba; 0x114bb, 0x114be; 0x114bf, 0x114c0; 0x114c1, 0x114c1;
+     0x115af, 0x115b1; 0x115b2, 0x115b5; 0x115b8, 0x115bb; 0x115bc, 0x115bd; 0x115be, 0x115be;
+     0x115dc, 0x115dd; 0x11630, 0x11632; 0x11633, 0x1163a; 0x1163b, 0x1163c; 0x1163d, 0x1163d;
+     0x1163e, 0x1163e; 0x11640, 0x11640; 0x116ab, 0x116ab; 0x116ac, 0x116ac; 0x116ad, 0x116ad;
+     0x116ae, 0x116af; 0x116b0, 0x116b5; 0x1171d, 0x1171f; 0x11720, 0x11721; 0x11722, 0x11725;
+     0x11726, 0x11726; 0x11727, 0x1172a; 0x1182c, 0x1182e; 0x1182f, 0x11837; 0x11838, 0x11838;
+     0x11930, 0x11935; 0x11937, 0x11938; 0x1193b, 0x1193c; 0x11940, 0x11940; 0x11942, 0x11942;
+     0x119d1, 0x119d3; 0x119d4, 0x119d7; 0x119da, 0x119db; 0x119dc, 0x119df; 0x119e4, 0x119e4;
+     0x11a01, 0x11a0a; 0x11a35, 0x11a38; 0x11a39, 0x11a39; 0x11a3b, 0x11a3e; 0x11a51, 0x11a56;
+     0x11a57, 0x11a58; 0x11a59, 0x11a5b; 0x11a8a, 0x11a96; 0x11a97, 0x11a97; 0x11c2f, 0x11c2f;
+     0x11c30, 0x11c36; 0x11c38, 0x11c3d; 0x11c3e, 0x11c3e; 0x11c92, 0x11ca7; 0x11ca9, 0x11ca9;
+     0x11caa, 0x11cb0; 0x11cb1, 0x11cb1; 0x11cb2, 0x11cb3; 0x11cb4, 0x11cb4; 0x11cb5, 0x11cb6;
+     0x11d31, 0x11d36; 0x11d3a, 0x11d3a; 0x11d3c, 0x11d3d; 0x11d3f, 0x11d41; 0x11d43, 0x11d43;
+     0x11d47, 0x11d47; 0x11d8a, 0x11d8e; 0x11d90, 0x11d91; 0x11d93, 0x11d94; 0x11d95, 0x11d95;
+     0x11d96, 0x11d96; 0x11ef3, 0x11ef4; 0x11ef5, 0x11ef6; 0x11f00, 0x11f01; 0x11f03, 0x11f03;
+     0x11f34, 0x11f35; 0x11f36, 0x11f3a; 0x11f3e, 0x11f3f; 0x11f40, 0x11f40; 0x16f4f, 0x16f4f;
+     0x16f51, 0x16f87; 0x16f8f, 0x16f92; 0x16ff0, 0x16ff1; 0x1bc9e, 0x1bc9e; 0x1e000, 0x1e006;
+     0x1e008, 0x1e018; 0x1e01b, 0x1e021; 0x1e023, 0x1e024; 0x1e026, 0x1e02a; 0x1e08f, 0x1e08f;
+     0x1f170, 0x1f189; 0x1f150, 0x1f169; 0x1f130, 0x1f149; 0x1e947, 0x1e947]
 
   let other_lowercase =
-    [
-      (0xaa, 0xaa);
-      (0xba, 0xba);
-      (0x2b0, 0x2b8);
-      (0x2c0, 0x2c1);
-      (0x2e0, 0x2e4);
-      (0x345, 0x345);
-      (0x37a, 0x37a);
-      (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);
-      (0x107b2, 0x107ba);
-      (0x10787, 0x107b0);
-      (0x10783, 0x10785);
-      (0x10780, 0x10780);
-    ]
+    [0xaa, 0xaa; 0xba, 0xba; 0x2b0, 0x2b8; 0x2c0, 0x2c1; 0x2e0, 0x2e4;
+     0x345, 0x345; 0x37a, 0x37a; 0x10fc, 0x10fc; 0x1d2c, 0x1d6a; 0x1d78, 0x1d78;
+     0x1d9b, 0x1dbf; 0x2071, 0x2071; 0x207f, 0x207f; 0x2090, 0x209c; 0x2170, 0x217f;
+     0x24d0, 0x24e9; 0x2c7c, 0x2c7d; 0xa69c, 0xa69d; 0xa770, 0xa770; 0xa7f2, 0xa7f4;
+     0xa7f8, 0xa7f9; 0xab5c, 0xab5f; 0xab69, 0xab69; 0x10780, 0x10780; 0x10783, 0x10785;
+     0x1e030, 0x1e06d; 0x107b2, 0x107ba; 0x10787, 0x107b0]
 
   let other_math =
-    [
-      (0x5e, 0x5e);
-      (0x3d0, 0x3d2);
-      (0x3d5, 0x3d5);
-      (0x3f0, 0x3f1);
-      (0x3f4, 0x3f5);
-      (0x2016, 0x2016);
-      (0x2032, 0x2034);
-      (0x2040, 0x2040);
-      (0x2061, 0x2064);
-      (0x207d, 0x207d);
-      (0x207e, 0x207e);
-      (0x208d, 0x208d);
-      (0x208e, 0x208e);
-      (0x20d0, 0x20dc);
-      (0x20e1, 0x20e1);
-      (0x20e5, 0x20e6);
-      (0x20eb, 0x20ef);
-      (0x2102, 0x2102);
-      (0x2107, 0x2107);
-      (0x210a, 0x2113);
-      (0x2115, 0x2115);
-      (0x2119, 0x211d);
-      (0x2124, 0x2124);
-      (0x2128, 0x2128);
-      (0x2129, 0x2129);
-      (0x212c, 0x212d);
-      (0x212f, 0x2131);
-      (0x2133, 0x2134);
-      (0x2135, 0x2138);
-      (0x213c, 0x213f);
-      (0x2145, 0x2149);
-      (0x2195, 0x2199);
-      (0x219c, 0x219f);
-      (0x21a1, 0x21a2);
-      (0x21a4, 0x21a5);
-      (0x21a7, 0x21a7);
-      (0x21a9, 0x21ad);
-      (0x21b0, 0x21b1);
-      (0x21b6, 0x21b7);
-      (0x21bc, 0x21cd);
-      (0x21d0, 0x21d1);
-      (0x21d3, 0x21d3);
-      (0x21d5, 0x21db);
-      (0x21dd, 0x21dd);
-      (0x21e4, 0x21e5);
-      (0x2308, 0x2308);
-      (0x2309, 0x2309);
-      (0x230a, 0x230a);
-      (0x230b, 0x230b);
-      (0x23b4, 0x23b5);
-      (0x23b7, 0x23b7);
-      (0x23d0, 0x23d0);
-      (0x23e2, 0x23e2);
-      (0x25a0, 0x25a1);
-      (0x25ae, 0x25b6);
-      (0x25bc, 0x25c0);
-      (0x25c6, 0x25c7);
-      (0x25ca, 0x25cb);
-      (0x25cf, 0x25d3);
-      (0x25e2, 0x25e2);
-      (0x25e4, 0x25e4);
-      (0x25e7, 0x25ec);
-      (0x2605, 0x2606);
-      (0x2640, 0x2640);
-      (0x2642, 0x2642);
-      (0x2660, 0x2663);
-      (0x266d, 0x266e);
-      (0x27c5, 0x27c5);
-      (0x27c6, 0x27c6);
-      (0x27e6, 0x27e6);
-      (0x27e7, 0x27e7);
-      (0x27e8, 0x27e8);
-      (0x27e9, 0x27e9);
-      (0x27ea, 0x27ea);
-      (0x27eb, 0x27eb);
-      (0x27ec, 0x27ec);
-      (0x27ed, 0x27ed);
-      (0x27ee, 0x27ee);
-      (0x27ef, 0x27ef);
-      (0x2983, 0x2983);
-      (0x2984, 0x2984);
-      (0x2985, 0x2985);
-      (0x2986, 0x2986);
-      (0x2987, 0x2987);
-      (0x2988, 0x2988);
-      (0x2989, 0x2989);
-      (0x298a, 0x298a);
-      (0x298b, 0x298b);
-      (0x298c, 0x298c);
-      (0x298d, 0x298d);
-      (0x298e, 0x298e);
-      (0x298f, 0x298f);
-      (0x2990, 0x2990);
-      (0x2991, 0x2991);
-      (0x2992, 0x2992);
-      (0x2993, 0x2993);
-      (0x2994, 0x2994);
-      (0x2995, 0x2995);
-      (0x2996, 0x2996);
-      (0x2997, 0x2997);
-      (0x2998, 0x2998);
-      (0x29d8, 0x29d8);
-      (0x29d9, 0x29d9);
-      (0x29da, 0x29da);
-      (0x29db, 0x29db);
-      (0x29fc, 0x29fc);
-      (0x29fd, 0x29fd);
-      (0xfe61, 0xfe61);
-      (0xfe63, 0xfe63);
-      (0xfe68, 0xfe68);
-      (0xff3c, 0xff3c);
-      (0xff3e, 0xff3e);
-      (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);
-      (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);
-    ]
+    [0x5e, 0x5e; 0x3d0, 0x3d2; 0x3d5, 0x3d5; 0x3f0, 0x3f1; 0x3f4, 0x3f5;
+     0x2016, 0x2016; 0x2032, 0x2034; 0x2040, 0x2040; 0x2061, 0x2064; 0x207d, 0x207d;
+     0x207e, 0x207e; 0x208d, 0x208d; 0x208e, 0x208e; 0x20d0, 0x20dc; 0x20e1, 0x20e1;
+     0x20e5, 0x20e6; 0x20eb, 0x20ef; 0x2102, 0x2102; 0x2107, 0x2107; 0x210a, 0x2113;
+     0x2115, 0x2115; 0x2119, 0x211d; 0x2124, 0x2124; 0x2128, 0x2128; 0x2129, 0x2129;
+     0x212c, 0x212d; 0x212f, 0x2131; 0x2133, 0x2134; 0x2135, 0x2138; 0x213c, 0x213f;
+     0x2145, 0x2149; 0x2195, 0x2199; 0x219c, 0x219f; 0x21a1, 0x21a2; 0x21a4, 0x21a5;
+     0x21a7, 0x21a7; 0x21a9, 0x21ad; 0x21b0, 0x21b1; 0x21b6, 0x21b7; 0x21bc, 0x21cd;
+     0x21d0, 0x21d1; 0x21d3, 0x21d3; 0x21d5, 0x21db; 0x21dd, 0x21dd; 0x21e4, 0x21e5;
+     0x2308, 0x2308; 0x2309, 0x2309; 0x230a, 0x230a; 0x230b, 0x230b; 0x23b4, 0x23b5;
+     0x23b7, 0x23b7; 0x23d0, 0x23d0; 0x23e2, 0x23e2; 0x25a0, 0x25a1; 0x25ae, 0x25b6;
+     0x25bc, 0x25c0; 0x25c6, 0x25c7; 0x25ca, 0x25cb; 0x25cf, 0x25d3; 0x25e2, 0x25e2;
+     0x25e4, 0x25e4; 0x25e7, 0x25ec; 0x2605, 0x2606; 0x2640, 0x2640; 0x2642, 0x2642;
+     0x2660, 0x2663; 0x266d, 0x266e; 0x27c5, 0x27c5; 0x27c6, 0x27c6; 0x27e6, 0x27e6;
+     0x27e7, 0x27e7; 0x27e8, 0x27e8; 0x27e9, 0x27e9; 0x27ea, 0x27ea; 0x27eb, 0x27eb;
+     0x27ec, 0x27ec; 0x27ed, 0x27ed; 0x27ee, 0x27ee; 0x27ef, 0x27ef; 0x2983, 0x2983;
+     0x2984, 0x2984; 0x2985, 0x2985; 0x2986, 0x2986; 0x2987, 0x2987; 0x2988, 0x2988;
+     0x2989, 0x2989; 0x298a, 0x298a; 0x298b, 0x298b; 0x298c, 0x298c; 0x298d, 0x298d;
+     0x298e, 0x298e; 0x298f, 0x298f; 0x2990, 0x2990; 0x2991, 0x2991; 0x2992, 0x2992;
+     0x2993, 0x2993; 0x2994, 0x2994; 0x2995, 0x2995; 0x2996, 0x2996; 0x2997, 0x2997;
+     0x2998, 0x2998; 0x29d8, 0x29d8; 0x29d9, 0x29d9; 0x29da, 0x29da; 0x29db, 0x29db;
+     0x29fc, 0x29fc; 0x29fd, 0x29fd; 0xfe61, 0xfe61; 0xfe63, 0xfe63; 0xfe68, 0xfe68;
+     0xff3c, 0xff3c; 0xff3e, 0xff3e; 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; 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]
 
   let other_uppercase =
-    [
-      (0x1f170, 0x1f189);
-      (0x1f150, 0x1f169);
-      (0x1f130, 0x1f149);
-      (0x24b6, 0x24cf);
-      (0x2160, 0x216f);
-    ]
+    [0x1f170, 0x1f189; 0x1f150, 0x1f169; 0x1f130, 0x1f149; 0x24b6, 0x24cf; 0x2160, 0x216f]
 
   let uppercase =
-    [
-      (0x41, 0x5a);
-      (0xc0, 0xd6);
-      (0xd8, 0xde);
-      (0x100, 0x100);
-      (0x102, 0x102);
-      (0x104, 0x104);
-      (0x106, 0x106);
-      (0x108, 0x108);
-      (0x10a, 0x10a);
-      (0x10c, 0x10c);
-      (0x10e, 0x10e);
-      (0x110, 0x110);
-      (0x112, 0x112);
-      (0x114, 0x114);
-      (0x116, 0x116);
-      (0x118, 0x118);
-      (0x11a, 0x11a);
-      (0x11c, 0x11c);
-      (0x11e, 0x11e);
-      (0x120, 0x120);
-      (0x122, 0x122);
-      (0x124, 0x124);
-      (0x126, 0x126);
-      (0x128, 0x128);
-      (0x12a, 0x12a);
-      (0x12c, 0x12c);
-      (0x12e, 0x12e);
-      (0x130, 0x130);
-      (0x132, 0x132);
-      (0x134, 0x134);
-      (0x136, 0x136);
-      (0x139, 0x139);
-      (0x13b, 0x13b);
-      (0x13d, 0x13d);
-      (0x13f, 0x13f);
-      (0x141, 0x141);
-      (0x143, 0x143);
-      (0x145, 0x145);
-      (0x147, 0x147);
-      (0x14a, 0x14a);
-      (0x14c, 0x14c);
-      (0x14e, 0x14e);
-      (0x150, 0x150);
-      (0x152, 0x152);
-      (0x154, 0x154);
-      (0x156, 0x156);
-      (0x158, 0x158);
-      (0x15a, 0x15a);
-      (0x15c, 0x15c);
-      (0x15e, 0x15e);
-      (0x160, 0x160);
-      (0x162, 0x162);
-      (0x164, 0x164);
-      (0x166, 0x166);
-      (0x168, 0x168);
-      (0x16a, 0x16a);
-      (0x16c, 0x16c);
-      (0x16e, 0x16e);
-      (0x170, 0x170);
-      (0x172, 0x172);
-      (0x174, 0x174);
-      (0x176, 0x176);
-      (0x178, 0x179);
-      (0x17b, 0x17b);
-      (0x17d, 0x17d);
-      (0x181, 0x182);
-      (0x184, 0x184);
-      (0x186, 0x187);
-      (0x189, 0x18b);
-      (0x18e, 0x191);
-      (0x193, 0x194);
-      (0x196, 0x198);
-      (0x19c, 0x19d);
-      (0x19f, 0x1a0);
-      (0x1a2, 0x1a2);
-      (0x1a4, 0x1a4);
-      (0x1a6, 0x1a7);
-      (0x1a9, 0x1a9);
-      (0x1ac, 0x1ac);
-      (0x1ae, 0x1af);
-      (0x1b1, 0x1b3);
-      (0x1b5, 0x1b5);
-      (0x1b7, 0x1b8);
-      (0x1bc, 0x1bc);
-      (0x1c4, 0x1c4);
-      (0x1c7, 0x1c7);
-      (0x1ca, 0x1ca);
-      (0x1cd, 0x1cd);
-      (0x1cf, 0x1cf);
-      (0x1d1, 0x1d1);
-      (0x1d3, 0x1d3);
-      (0x1d5, 0x1d5);
-      (0x1d7, 0x1d7);
-      (0x1d9, 0x1d9);
-      (0x1db, 0x1db);
-      (0x1de, 0x1de);
-      (0x1e0, 0x1e0);
-      (0x1e2, 0x1e2);
-      (0x1e4, 0x1e4);
-      (0x1e6, 0x1e6);
-      (0x1e8, 0x1e8);
-      (0x1ea, 0x1ea);
-      (0x1ec, 0x1ec);
-      (0x1ee, 0x1ee);
-      (0x1f1, 0x1f1);
-      (0x1f4, 0x1f4);
-      (0x1f6, 0x1f8);
-      (0x1fa, 0x1fa);
-      (0x1fc, 0x1fc);
-      (0x1fe, 0x1fe);
-      (0x200, 0x200);
-      (0x202, 0x202);
-      (0x204, 0x204);
-      (0x206, 0x206);
-      (0x208, 0x208);
-      (0x20a, 0x20a);
-      (0x20c, 0x20c);
-      (0x20e, 0x20e);
-      (0x210, 0x210);
-      (0x212, 0x212);
-      (0x214, 0x214);
-      (0x216, 0x216);
-      (0x218, 0x218);
-      (0x21a, 0x21a);
-      (0x21c, 0x21c);
-      (0x21e, 0x21e);
-      (0x220, 0x220);
-      (0x222, 0x222);
-      (0x224, 0x224);
-      (0x226, 0x226);
-      (0x228, 0x228);
-      (0x22a, 0x22a);
-      (0x22c, 0x22c);
-      (0x22e, 0x22e);
-      (0x230, 0x230);
-      (0x232, 0x232);
-      (0x23a, 0x23b);
-      (0x23d, 0x23e);
-      (0x241, 0x241);
-      (0x243, 0x246);
-      (0x248, 0x248);
-      (0x24a, 0x24a);
-      (0x24c, 0x24c);
-      (0x24e, 0x24e);
-      (0x370, 0x370);
-      (0x372, 0x372);
-      (0x376, 0x376);
-      (0x37f, 0x37f);
-      (0x386, 0x386);
-      (0x388, 0x38a);
-      (0x38c, 0x38c);
-      (0x38e, 0x38f);
-      (0x391, 0x3a1);
-      (0x3a3, 0x3ab);
-      (0x3cf, 0x3cf);
-      (0x3d2, 0x3d4);
-      (0x3d8, 0x3d8);
-      (0x3da, 0x3da);
-      (0x3dc, 0x3dc);
-      (0x3de, 0x3de);
-      (0x3e0, 0x3e0);
-      (0x3e2, 0x3e2);
-      (0x3e4, 0x3e4);
-      (0x3e6, 0x3e6);
-      (0x3e8, 0x3e8);
-      (0x3ea, 0x3ea);
-      (0x3ec, 0x3ec);
-      (0x3ee, 0x3ee);
-      (0x3f4, 0x3f4);
-      (0x3f7, 0x3f7);
-      (0x3f9, 0x3fa);
-      (0x3fd, 0x42f);
-      (0x460, 0x460);
-      (0x462, 0x462);
-      (0x464, 0x464);
-      (0x466, 0x466);
-      (0x468, 0x468);
-      (0x46a, 0x46a);
-      (0x46c, 0x46c);
-      (0x46e, 0x46e);
-      (0x470, 0x470);
-      (0x472, 0x472);
-      (0x474, 0x474);
-      (0x476, 0x476);
-      (0x478, 0x478);
-      (0x47a, 0x47a);
-      (0x47c, 0x47c);
-      (0x47e, 0x47e);
-      (0x480, 0x480);
-      (0x48a, 0x48a);
-      (0x48c, 0x48c);
-      (0x48e, 0x48e);
-      (0x490, 0x490);
-      (0x492, 0x492);
-      (0x494, 0x494);
-      (0x496, 0x496);
-      (0x498, 0x498);
-      (0x49a, 0x49a);
-      (0x49c, 0x49c);
-      (0x49e, 0x49e);
-      (0x4a0, 0x4a0);
-      (0x4a2, 0x4a2);
-      (0x4a4, 0x4a4);
-      (0x4a6, 0x4a6);
-      (0x4a8, 0x4a8);
-      (0x4aa, 0x4aa);
-      (0x4ac, 0x4ac);
-      (0x4ae, 0x4ae);
-      (0x4b0, 0x4b0);
-      (0x4b2, 0x4b2);
-      (0x4b4, 0x4b4);
-      (0x4b6, 0x4b6);
-      (0x4b8, 0x4b8);
-      (0x4ba, 0x4ba);
-      (0x4bc, 0x4bc);
-      (0x4be, 0x4be);
-      (0x4c0, 0x4c1);
-      (0x4c3, 0x4c3);
-      (0x4c5, 0x4c5);
-      (0x4c7, 0x4c7);
-      (0x4c9, 0x4c9);
-      (0x4cb, 0x4cb);
-      (0x4cd, 0x4cd);
-      (0x4d0, 0x4d0);
-      (0x4d2, 0x4d2);
-      (0x4d4, 0x4d4);
-      (0x4d6, 0x4d6);
-      (0x4d8, 0x4d8);
-      (0x4da, 0x4da);
-      (0x4dc, 0x4dc);
-      (0x4de, 0x4de);
-      (0x4e0, 0x4e0);
-      (0x4e2, 0x4e2);
-      (0x4e4, 0x4e4);
-      (0x4e6, 0x4e6);
-      (0x4e8, 0x4e8);
-      (0x4ea, 0x4ea);
-      (0x4ec, 0x4ec);
-      (0x4ee, 0x4ee);
-      (0x4f0, 0x4f0);
-      (0x4f2, 0x4f2);
-      (0x4f4, 0x4f4);
-      (0x4f6, 0x4f6);
-      (0x4f8, 0x4f8);
-      (0x4fa, 0x4fa);
-      (0x4fc, 0x4fc);
-      (0x4fe, 0x4fe);
-      (0x500, 0x500);
-      (0x502, 0x502);
-      (0x504, 0x504);
-      (0x506, 0x506);
-      (0x508, 0x508);
-      (0x50a, 0x50a);
-      (0x50c, 0x50c);
-      (0x50e, 0x50e);
-      (0x510, 0x510);
-      (0x512, 0x512);
-      (0x514, 0x514);
-      (0x516, 0x516);
-      (0x518, 0x518);
-      (0x51a, 0x51a);
-      (0x51c, 0x51c);
-      (0x51e, 0x51e);
-      (0x520, 0x520);
-      (0x522, 0x522);
-      (0x524, 0x524);
-      (0x526, 0x526);
-      (0x528, 0x528);
-      (0x52a, 0x52a);
-      (0x52c, 0x52c);
-      (0x52e, 0x52e);
-      (0x531, 0x556);
-      (0x10a0, 0x10c5);
-      (0x10c7, 0x10c7);
-      (0x10cd, 0x10cd);
-      (0x13a0, 0x13f5);
-      (0x1c90, 0x1cba);
-      (0x1cbd, 0x1cbf);
-      (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);
-      (0x2160, 0x216f);
-      (0x2183, 0x2183);
-      (0x24b6, 0x24cf);
-      (0x2c00, 0x2c2f);
-      (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, 0xa7ae);
-      (0xa7b0, 0xa7b4);
-      (0xa7b6, 0xa7b6);
-      (0xa7b8, 0xa7b8);
-      (0xa7ba, 0xa7ba);
-      (0xa7bc, 0xa7bc);
-      (0xa7be, 0xa7be);
-      (0xa7c0, 0xa7c0);
-      (0xa7c2, 0xa7c2);
-      (0xa7c4, 0xa7c7);
-      (0xa7c9, 0xa7c9);
-      (0xa7d0, 0xa7d0);
-      (0xa7d6, 0xa7d6);
-      (0xa7d8, 0xa7d8);
-      (0xa7f5, 0xa7f5);
-      (0xff21, 0xff3a);
-      (0x10400, 0x10427);
-      (0x104b0, 0x104d3);
-      (0x10570, 0x1057a);
-      (0x1057c, 0x1058a);
-      (0x1058c, 0x10592);
-      (0x10594, 0x10595);
-      (0x10c80, 0x10cb2);
-      (0x118a0, 0x118bf);
-      (0x16e40, 0x16e5f);
-      (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);
-      (0x1e900, 0x1e921);
-      (0x1f130, 0x1f149);
-      (0x1f150, 0x1f169);
-      (0x1f170, 0x1f189);
-    ]
+    [0x41, 0x5a; 0xc0, 0xd6; 0xd8, 0xde; 0x100, 0x100; 0x102, 0x102;
+     0x104, 0x104; 0x106, 0x106; 0x108, 0x108; 0x10a, 0x10a; 0x10c, 0x10c;
+     0x10e, 0x10e; 0x110, 0x110; 0x112, 0x112; 0x114, 0x114; 0x116, 0x116;
+     0x118, 0x118; 0x11a, 0x11a; 0x11c, 0x11c; 0x11e, 0x11e; 0x120, 0x120;
+     0x122, 0x122; 0x124, 0x124; 0x126, 0x126; 0x128, 0x128; 0x12a, 0x12a;
+     0x12c, 0x12c; 0x12e, 0x12e; 0x130, 0x130; 0x132, 0x132; 0x134, 0x134;
+     0x136, 0x136; 0x139, 0x139; 0x13b, 0x13b; 0x13d, 0x13d; 0x13f, 0x13f;
+     0x141, 0x141; 0x143, 0x143; 0x145, 0x145; 0x147, 0x147; 0x14a, 0x14a;
+     0x14c, 0x14c; 0x14e, 0x14e; 0x150, 0x150; 0x152, 0x152; 0x154, 0x154;
+     0x156, 0x156; 0x158, 0x158; 0x15a, 0x15a; 0x15c, 0x15c; 0x15e, 0x15e;
+     0x160, 0x160; 0x162, 0x162; 0x164, 0x164; 0x166, 0x166; 0x168, 0x168;
+     0x16a, 0x16a; 0x16c, 0x16c; 0x16e, 0x16e; 0x170, 0x170; 0x172, 0x172;
+     0x174, 0x174; 0x176, 0x176; 0x178, 0x179; 0x17b, 0x17b; 0x17d, 0x17d;
+     0x181, 0x182; 0x184, 0x184; 0x186, 0x187; 0x189, 0x18b; 0x18e, 0x191;
+     0x193, 0x194; 0x196, 0x198; 0x19c, 0x19d; 0x19f, 0x1a0; 0x1a2, 0x1a2;
+     0x1a4, 0x1a4; 0x1a6, 0x1a7; 0x1a9, 0x1a9; 0x1ac, 0x1ac; 0x1ae, 0x1af;
+     0x1b1, 0x1b3; 0x1b5, 0x1b5; 0x1b7, 0x1b8; 0x1bc, 0x1bc; 0x1c4, 0x1c4;
+     0x1c7, 0x1c7; 0x1ca, 0x1ca; 0x1cd, 0x1cd; 0x1cf, 0x1cf; 0x1d1, 0x1d1;
+     0x1d3, 0x1d3; 0x1d5, 0x1d5; 0x1d7, 0x1d7; 0x1d9, 0x1d9; 0x1db, 0x1db;
+     0x1de, 0x1de; 0x1e0, 0x1e0; 0x1e2, 0x1e2; 0x1e4, 0x1e4; 0x1e6, 0x1e6;
+     0x1e8, 0x1e8; 0x1ea, 0x1ea; 0x1ec, 0x1ec; 0x1ee, 0x1ee; 0x1f1, 0x1f1;
+     0x1f4, 0x1f4; 0x1f6, 0x1f8; 0x1fa, 0x1fa; 0x1fc, 0x1fc; 0x1fe, 0x1fe;
+     0x200, 0x200; 0x202, 0x202; 0x204, 0x204; 0x206, 0x206; 0x208, 0x208;
+     0x20a, 0x20a; 0x20c, 0x20c; 0x20e, 0x20e; 0x210, 0x210; 0x212, 0x212;
+     0x214, 0x214; 0x216, 0x216; 0x218, 0x218; 0x21a, 0x21a; 0x21c, 0x21c;
+     0x21e, 0x21e; 0x220, 0x220; 0x222, 0x222; 0x224, 0x224; 0x226, 0x226;
+     0x228, 0x228; 0x22a, 0x22a; 0x22c, 0x22c; 0x22e, 0x22e; 0x230, 0x230;
+     0x232, 0x232; 0x23a, 0x23b; 0x23d, 0x23e; 0x241, 0x241; 0x243, 0x246;
+     0x248, 0x248; 0x24a, 0x24a; 0x24c, 0x24c; 0x24e, 0x24e; 0x370, 0x370;
+     0x372, 0x372; 0x376, 0x376; 0x37f, 0x37f; 0x386, 0x386; 0x388, 0x38a;
+     0x38c, 0x38c; 0x38e, 0x38f; 0x391, 0x3a1; 0x3a3, 0x3ab; 0x3cf, 0x3cf;
+     0x3d2, 0x3d4; 0x3d8, 0x3d8; 0x3da, 0x3da; 0x3dc, 0x3dc; 0x3de, 0x3de;
+     0x3e0, 0x3e0; 0x3e2, 0x3e2; 0x3e4, 0x3e4; 0x3e6, 0x3e6; 0x3e8, 0x3e8;
+     0x3ea, 0x3ea; 0x3ec, 0x3ec; 0x3ee, 0x3ee; 0x3f4, 0x3f4; 0x3f7, 0x3f7;
+     0x3f9, 0x3fa; 0x3fd, 0x42f; 0x460, 0x460; 0x462, 0x462; 0x464, 0x464;
+     0x466, 0x466; 0x468, 0x468; 0x46a, 0x46a; 0x46c, 0x46c; 0x46e, 0x46e;
+     0x470, 0x470; 0x472, 0x472; 0x474, 0x474; 0x476, 0x476; 0x478, 0x478;
+     0x47a, 0x47a; 0x47c, 0x47c; 0x47e, 0x47e; 0x480, 0x480; 0x48a, 0x48a;
+     0x48c, 0x48c; 0x48e, 0x48e; 0x490, 0x490; 0x492, 0x492; 0x494, 0x494;
+     0x496, 0x496; 0x498, 0x498; 0x49a, 0x49a; 0x49c, 0x49c; 0x49e, 0x49e;
+     0x4a0, 0x4a0; 0x4a2, 0x4a2; 0x4a4, 0x4a4; 0x4a6, 0x4a6; 0x4a8, 0x4a8;
+     0x4aa, 0x4aa; 0x4ac, 0x4ac; 0x4ae, 0x4ae; 0x4b0, 0x4b0; 0x4b2, 0x4b2;
+     0x4b4, 0x4b4; 0x4b6, 0x4b6; 0x4b8, 0x4b8; 0x4ba, 0x4ba; 0x4bc, 0x4bc;
+     0x4be, 0x4be; 0x4c0, 0x4c1; 0x4c3, 0x4c3; 0x4c5, 0x4c5; 0x4c7, 0x4c7;
+     0x4c9, 0x4c9; 0x4cb, 0x4cb; 0x4cd, 0x4cd; 0x4d0, 0x4d0; 0x4d2, 0x4d2;
+     0x4d4, 0x4d4; 0x4d6, 0x4d6; 0x4d8, 0x4d8; 0x4da, 0x4da; 0x4dc, 0x4dc;
+     0x4de, 0x4de; 0x4e0, 0x4e0; 0x4e2, 0x4e2; 0x4e4, 0x4e4; 0x4e6, 0x4e6;
+     0x4e8, 0x4e8; 0x4ea, 0x4ea; 0x4ec, 0x4ec; 0x4ee, 0x4ee; 0x4f0, 0x4f0;
+     0x4f2, 0x4f2; 0x4f4, 0x4f4; 0x4f6, 0x4f6; 0x4f8, 0x4f8; 0x4fa, 0x4fa;
+     0x4fc, 0x4fc; 0x4fe, 0x4fe; 0x500, 0x500; 0x502, 0x502; 0x504, 0x504;
+     0x506, 0x506; 0x508, 0x508; 0x50a, 0x50a; 0x50c, 0x50c; 0x50e, 0x50e;
+     0x510, 0x510; 0x512, 0x512; 0x514, 0x514; 0x516, 0x516; 0x518, 0x518;
+     0x51a, 0x51a; 0x51c, 0x51c; 0x51e, 0x51e; 0x520, 0x520; 0x522, 0x522;
+     0x524, 0x524; 0x526, 0x526; 0x528, 0x528; 0x52a, 0x52a; 0x52c, 0x52c;
+     0x52e, 0x52e; 0x531, 0x556; 0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd;
+     0x13a0, 0x13f5; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 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;
+     0x2160, 0x216f; 0x2183, 0x2183; 0x24b6, 0x24cf; 0x2c00, 0x2c2f; 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, 0xa7ae; 0xa7b0, 0xa7b4; 0xa7b6, 0xa7b6; 0xa7b8, 0xa7b8;
+     0xa7ba, 0xa7ba; 0xa7bc, 0xa7bc; 0xa7be, 0xa7be; 0xa7c0, 0xa7c0; 0xa7c2, 0xa7c2;
+     0xa7c4, 0xa7c7; 0xa7c9, 0xa7c9; 0xa7d0, 0xa7d0; 0xa7d6, 0xa7d6; 0xa7d8, 0xa7d8;
+     0xa7f5, 0xa7f5; 0xff21, 0xff3a; 0x10400, 0x10427; 0x104b0, 0x104d3; 0x10570, 0x1057a;
+     0x1057c, 0x1058a; 0x1058c, 0x10592; 0x10594, 0x10595; 0x10c80, 0x10cb2; 0x118a0, 0x118bf;
+     0x16e40, 0x16e5f; 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; 0x1e900, 0x1e921; 0x1f130, 0x1f149; 0x1f150, 0x1f169;
+     0x1f170, 0x1f189]
 
   let white_space =
-    [
-      (0x9, 0xd);
-      (0x20, 0x20);
-      (0x85, 0x85);
-      (0xa0, 0xa0);
-      (0x1680, 0x1680);
-      (0x2000, 0x200a);
-      (0x2028, 0x2028);
-      (0x2029, 0x2029);
-      (0x202f, 0x202f);
-      (0x205f, 0x205f);
-      (0x3000, 0x3000);
-    ]
+    [0x9, 0xd; 0x20, 0x20; 0x85, 0x85; 0xa0, 0xa0; 0x1680, 0x1680;
+     0x2000, 0x200a; 0x2028, 0x2028; 0x2029, 0x2029; 0x202f, 0x202f; 0x205f, 0x205f;
+     0x3000, 0x3000]
 
   let xid_continue =
-    [
-      (0x30, 0x39);
-      (0x41, 0x5a);
-      (0x5f, 0x5f);
-      (0x61, 0x7a);
-      (0xaa, 0xaa);
-      (0xb5, 0xb5);
-      (0xb7, 0xb7);
-      (0xba, 0xba);
-      (0xc0, 0xd6);
-      (0xd8, 0xf6);
-      (0xf8, 0x1ba);
-      (0x1bb, 0x1bb);
-      (0x1bc, 0x1bf);
-      (0x1c0, 0x1c3);
-      (0x1c4, 0x293);
-      (0x294, 0x294);
-      (0x295, 0x2af);
-      (0x2b0, 0x2c1);
-      (0x2c6, 0x2d1);
-      (0x2e0, 0x2e4);
-      (0x2ec, 0x2ec);
-      (0x2ee, 0x2ee);
-      (0x300, 0x36f);
-      (0x370, 0x373);
-      (0x374, 0x374);
-      (0x376, 0x377);
-      (0x37b, 0x37d);
-      (0x37f, 0x37f);
-      (0x386, 0x386);
-      (0x387, 0x387);
-      (0x388, 0x38a);
-      (0x38c, 0x38c);
-      (0x38e, 0x3a1);
-      (0x3a3, 0x3f5);
-      (0x3f7, 0x481);
-      (0x483, 0x487);
-      (0x48a, 0x52f);
-      (0x531, 0x556);
-      (0x559, 0x559);
-      (0x560, 0x588);
-      (0x591, 0x5bd);
-      (0x5bf, 0x5bf);
-      (0x5c1, 0x5c2);
-      (0x5c4, 0x5c5);
-      (0x5c7, 0x5c7);
-      (0x5d0, 0x5ea);
-      (0x5ef, 0x5f2);
-      (0x610, 0x61a);
-      (0x620, 0x63f);
-      (0x640, 0x640);
-      (0x641, 0x64a);
-      (0x64b, 0x65f);
-      (0x660, 0x669);
-      (0x66e, 0x66f);
-      (0x670, 0x670);
-      (0x671, 0x6d3);
-      (0x6d5, 0x6d5);
-      (0x6d6, 0x6dc);
-      (0x6df, 0x6e4);
-      (0x6e5, 0x6e6);
-      (0x6e7, 0x6e8);
-      (0x6ea, 0x6ed);
-      (0x6ee, 0x6ef);
-      (0x6f0, 0x6f9);
-      (0x6fa, 0x6fc);
-      (0x6ff, 0x6ff);
-      (0x710, 0x710);
-      (0x711, 0x711);
-      (0x712, 0x72f);
-      (0x730, 0x74a);
-      (0x74d, 0x7a5);
-      (0x7a6, 0x7b0);
-      (0x7b1, 0x7b1);
-      (0x7c0, 0x7c9);
-      (0x7ca, 0x7ea);
-      (0x7eb, 0x7f3);
-      (0x7f4, 0x7f5);
-      (0x7fa, 0x7fa);
-      (0x7fd, 0x7fd);
-      (0x800, 0x815);
-      (0x816, 0x819);
-      (0x81a, 0x81a);
-      (0x81b, 0x823);
-      (0x824, 0x824);
-      (0x825, 0x827);
-      (0x828, 0x828);
-      (0x829, 0x82d);
-      (0x840, 0x858);
-      (0x859, 0x85b);
-      (0x860, 0x86a);
-      (0x870, 0x887);
-      (0x889, 0x88e);
-      (0x898, 0x89f);
-      (0x8a0, 0x8c8);
-      (0x8c9, 0x8c9);
-      (0x8ca, 0x8e1);
-      (0x8e3, 0x902);
-      (0x903, 0x903);
-      (0x904, 0x939);
-      (0x93a, 0x93a);
-      (0x93b, 0x93b);
-      (0x93c, 0x93c);
-      (0x93d, 0x93d);
-      (0x93e, 0x940);
-      (0x941, 0x948);
-      (0x949, 0x94c);
-      (0x94d, 0x94d);
-      (0x94e, 0x94f);
-      (0x950, 0x950);
-      (0x951, 0x957);
-      (0x958, 0x961);
-      (0x962, 0x963);
-      (0x966, 0x96f);
-      (0x971, 0x971);
-      (0x972, 0x980);
-      (0x981, 0x981);
-      (0x982, 0x983);
-      (0x985, 0x98c);
-      (0x98f, 0x990);
-      (0x993, 0x9a8);
-      (0x9aa, 0x9b0);
-      (0x9b2, 0x9b2);
-      (0x9b6, 0x9b9);
-      (0x9bc, 0x9bc);
-      (0x9bd, 0x9bd);
-      (0x9be, 0x9c0);
-      (0x9c1, 0x9c4);
-      (0x9c7, 0x9c8);
-      (0x9cb, 0x9cc);
-      (0x9cd, 0x9cd);
-      (0x9ce, 0x9ce);
-      (0x9d7, 0x9d7);
-      (0x9dc, 0x9dd);
-      (0x9df, 0x9e1);
-      (0x9e2, 0x9e3);
-      (0x9e6, 0x9ef);
-      (0x9f0, 0x9f1);
-      (0x9fc, 0x9fc);
-      (0x9fe, 0x9fe);
-      (0xa01, 0xa02);
-      (0xa03, 0xa03);
-      (0xa05, 0xa0a);
-      (0xa0f, 0xa10);
-      (0xa13, 0xa28);
-      (0xa2a, 0xa30);
-      (0xa32, 0xa33);
-      (0xa35, 0xa36);
-      (0xa38, 0xa39);
-      (0xa3c, 0xa3c);
-      (0xa3e, 0xa40);
-      (0xa41, 0xa42);
-      (0xa47, 0xa48);
-      (0xa4b, 0xa4d);
-      (0xa51, 0xa51);
-      (0xa59, 0xa5c);
-      (0xa5e, 0xa5e);
-      (0xa66, 0xa6f);
-      (0xa70, 0xa71);
-      (0xa72, 0xa74);
-      (0xa75, 0xa75);
-      (0xa81, 0xa82);
-      (0xa83, 0xa83);
-      (0xa85, 0xa8d);
-      (0xa8f, 0xa91);
-      (0xa93, 0xaa8);
-      (0xaaa, 0xab0);
-      (0xab2, 0xab3);
-      (0xab5, 0xab9);
-      (0xabc, 0xabc);
-      (0xabd, 0xabd);
-      (0xabe, 0xac0);
-      (0xac1, 0xac5);
-      (0xac7, 0xac8);
-      (0xac9, 0xac9);
-      (0xacb, 0xacc);
-      (0xacd, 0xacd);
-      (0xad0, 0xad0);
-      (0xae0, 0xae1);
-      (0xae2, 0xae3);
-      (0xae6, 0xaef);
-      (0xaf9, 0xaf9);
-      (0xafa, 0xaff);
-      (0xb01, 0xb01);
-      (0xb02, 0xb03);
-      (0xb05, 0xb0c);
-      (0xb0f, 0xb10);
-      (0xb13, 0xb28);
-      (0xb2a, 0xb30);
-      (0xb32, 0xb33);
-      (0xb35, 0xb39);
-      (0xb3c, 0xb3c);
-      (0xb3d, 0xb3d);
-      (0xb3e, 0xb3e);
-      (0xb3f, 0xb3f);
-      (0xb40, 0xb40);
-      (0xb41, 0xb44);
-      (0xb47, 0xb48);
-      (0xb4b, 0xb4c);
-      (0xb4d, 0xb4d);
-      (0xb55, 0xb56);
-      (0xb57, 0xb57);
-      (0xb5c, 0xb5d);
-      (0xb5f, 0xb61);
-      (0xb62, 0xb63);
-      (0xb66, 0xb6f);
-      (0xb71, 0xb71);
-      (0xb82, 0xb82);
-      (0xb83, 0xb83);
-      (0xb85, 0xb8a);
-      (0xb8e, 0xb90);
-      (0xb92, 0xb95);
-      (0xb99, 0xb9a);
-      (0xb9c, 0xb9c);
-      (0xb9e, 0xb9f);
-      (0xba3, 0xba4);
-      (0xba8, 0xbaa);
-      (0xbae, 0xbb9);
-      (0xbbe, 0xbbf);
-      (0xbc0, 0xbc0);
-      (0xbc1, 0xbc2);
-      (0xbc6, 0xbc8);
-      (0xbca, 0xbcc);
-      (0xbcd, 0xbcd);
-      (0xbd0, 0xbd0);
-      (0xbd7, 0xbd7);
-      (0xbe6, 0xbef);
-      (0xc00, 0xc00);
-      (0xc01, 0xc03);
-      (0xc04, 0xc04);
-      (0xc05, 0xc0c);
-      (0xc0e, 0xc10);
-      (0xc12, 0xc28);
-      (0xc2a, 0xc39);
-      (0xc3c, 0xc3c);
-      (0xc3d, 0xc3d);
-      (0xc3e, 0xc40);
-      (0xc41, 0xc44);
-      (0xc46, 0xc48);
-      (0xc4a, 0xc4d);
-      (0xc55, 0xc56);
-      (0xc58, 0xc5a);
-      (0xc5d, 0xc5d);
-      (0xc60, 0xc61);
-      (0xc62, 0xc63);
-      (0xc66, 0xc6f);
-      (0xc80, 0xc80);
-      (0xc81, 0xc81);
-      (0xc82, 0xc83);
-      (0xc85, 0xc8c);
-      (0xc8e, 0xc90);
-      (0xc92, 0xca8);
-      (0xcaa, 0xcb3);
-      (0xcb5, 0xcb9);
-      (0xcbc, 0xcbc);
-      (0xcbd, 0xcbd);
-      (0xcbe, 0xcbe);
-      (0xcbf, 0xcbf);
-      (0xcc0, 0xcc4);
-      (0xcc6, 0xcc6);
-      (0xcc7, 0xcc8);
-      (0xcca, 0xccb);
-      (0xccc, 0xccd);
-      (0xcd5, 0xcd6);
-      (0xcdd, 0xcde);
-      (0xce0, 0xce1);
-      (0xce2, 0xce3);
-      (0xce6, 0xcef);
-      (0xcf1, 0xcf2);
-      (0xd00, 0xd01);
-      (0xd02, 0xd03);
-      (0xd04, 0xd0c);
-      (0xd0e, 0xd10);
-      (0xd12, 0xd3a);
-      (0xd3b, 0xd3c);
-      (0xd3d, 0xd3d);
-      (0xd3e, 0xd40);
-      (0xd41, 0xd44);
-      (0xd46, 0xd48);
-      (0xd4a, 0xd4c);
-      (0xd4d, 0xd4d);
-      (0xd4e, 0xd4e);
-      (0xd54, 0xd56);
-      (0xd57, 0xd57);
-      (0xd5f, 0xd61);
-      (0xd62, 0xd63);
-      (0xd66, 0xd6f);
-      (0xd7a, 0xd7f);
-      (0xd81, 0xd81);
-      (0xd82, 0xd83);
-      (0xd85, 0xd96);
-      (0xd9a, 0xdb1);
-      (0xdb3, 0xdbb);
-      (0xdbd, 0xdbd);
-      (0xdc0, 0xdc6);
-      (0xdca, 0xdca);
-      (0xdcf, 0xdd1);
-      (0xdd2, 0xdd4);
-      (0xdd6, 0xdd6);
-      (0xdd8, 0xddf);
-      (0xde6, 0xdef);
-      (0xdf2, 0xdf3);
-      (0xe01, 0xe30);
-      (0xe31, 0xe31);
-      (0xe32, 0xe33);
-      (0xe34, 0xe3a);
-      (0xe40, 0xe45);
-      (0xe46, 0xe46);
-      (0xe47, 0xe4e);
-      (0xe50, 0xe59);
-      (0xe81, 0xe82);
-      (0xe84, 0xe84);
-      (0xe86, 0xe8a);
-      (0xe8c, 0xea3);
-      (0xea5, 0xea5);
-      (0xea7, 0xeb0);
-      (0xeb1, 0xeb1);
-      (0xeb2, 0xeb3);
-      (0xeb4, 0xebc);
-      (0xebd, 0xebd);
-      (0xec0, 0xec4);
-      (0xec6, 0xec6);
-      (0xec8, 0xecd);
-      (0xed0, 0xed9);
-      (0xedc, 0xedf);
-      (0xf00, 0xf00);
-      (0xf18, 0xf19);
-      (0xf20, 0xf29);
-      (0xf35, 0xf35);
-      (0xf37, 0xf37);
-      (0xf39, 0xf39);
-      (0xf3e, 0xf3f);
-      (0xf40, 0xf47);
-      (0xf49, 0xf6c);
-      (0xf71, 0xf7e);
-      (0xf7f, 0xf7f);
-      (0xf80, 0xf84);
-      (0xf86, 0xf87);
-      (0xf88, 0xf8c);
-      (0xf8d, 0xf97);
-      (0xf99, 0xfbc);
-      (0xfc6, 0xfc6);
-      (0x1000, 0x102a);
-      (0x102b, 0x102c);
-      (0x102d, 0x1030);
-      (0x1031, 0x1031);
-      (0x1032, 0x1037);
-      (0x1038, 0x1038);
-      (0x1039, 0x103a);
-      (0x103b, 0x103c);
-      (0x103d, 0x103e);
-      (0x103f, 0x103f);
-      (0x1040, 0x1049);
-      (0x1050, 0x1055);
-      (0x1056, 0x1057);
-      (0x1058, 0x1059);
-      (0x105a, 0x105d);
-      (0x105e, 0x1060);
-      (0x1061, 0x1061);
-      (0x1062, 0x1064);
-      (0x1065, 0x1066);
-      (0x1067, 0x106d);
-      (0x106e, 0x1070);
-      (0x1071, 0x1074);
-      (0x1075, 0x1081);
-      (0x1082, 0x1082);
-      (0x1083, 0x1084);
-      (0x1085, 0x1086);
-      (0x1087, 0x108c);
-      (0x108d, 0x108d);
-      (0x108e, 0x108e);
-      (0x108f, 0x108f);
-      (0x1090, 0x1099);
-      (0x109a, 0x109c);
-      (0x109d, 0x109d);
-      (0x10a0, 0x10c5);
-      (0x10c7, 0x10c7);
-      (0x10cd, 0x10cd);
-      (0x10d0, 0x10fa);
-      (0x10fc, 0x10fc);
-      (0x10fd, 0x10ff);
-      (0x1100, 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, 0x16f0);
-      (0x16f1, 0x16f8);
-      (0x1700, 0x1711);
-      (0x1712, 0x1714);
-      (0x1715, 0x1715);
-      (0x171f, 0x1731);
-      (0x1732, 0x1733);
-      (0x1734, 0x1734);
-      (0x1740, 0x1751);
-      (0x1752, 0x1753);
-      (0x1760, 0x176c);
-      (0x176e, 0x1770);
-      (0x1772, 0x1773);
-      (0x1780, 0x17b3);
-      (0x17b4, 0x17b5);
-      (0x17b6, 0x17b6);
-      (0x17b7, 0x17bd);
-      (0x17be, 0x17c5);
-      (0x17c6, 0x17c6);
-      (0x17c7, 0x17c8);
-      (0x17c9, 0x17d3);
-      (0x17d7, 0x17d7);
-      (0x17dc, 0x17dc);
-      (0x17dd, 0x17dd);
-      (0x17e0, 0x17e9);
-      (0x180b, 0x180d);
-      (0x180f, 0x180f);
-      (0x1810, 0x1819);
-      (0x1820, 0x1842);
-      (0x1843, 0x1843);
-      (0x1844, 0x1878);
-      (0x1880, 0x1884);
-      (0x1885, 0x1886);
-      (0x1887, 0x18a8);
-      (0x18a9, 0x18a9);
-      (0x18aa, 0x18aa);
-      (0x18b0, 0x18f5);
-      (0x1900, 0x191e);
-      (0x1920, 0x1922);
-      (0x1923, 0x1926);
-      (0x1927, 0x1928);
-      (0x1929, 0x192b);
-      (0x1930, 0x1931);
-      (0x1932, 0x1932);
-      (0x1933, 0x1938);
-      (0x1939, 0x193b);
-      (0x1946, 0x194f);
-      (0x1950, 0x196d);
-      (0x1970, 0x1974);
-      (0x1980, 0x19ab);
-      (0x19b0, 0x19c9);
-      (0x19d0, 0x19d9);
-      (0x19da, 0x19da);
-      (0x1a00, 0x1a16);
-      (0x1a17, 0x1a18);
-      (0x1a19, 0x1a1a);
-      (0x1a1b, 0x1a1b);
-      (0x1a20, 0x1a54);
-      (0x1a55, 0x1a55);
-      (0x1a56, 0x1a56);
-      (0x1a57, 0x1a57);
-      (0x1a58, 0x1a5e);
-      (0x1a60, 0x1a60);
-      (0x1a61, 0x1a61);
-      (0x1a62, 0x1a62);
-      (0x1a63, 0x1a64);
-      (0x1a65, 0x1a6c);
-      (0x1a6d, 0x1a72);
-      (0x1a73, 0x1a7c);
-      (0x1a7f, 0x1a7f);
-      (0x1a80, 0x1a89);
-      (0x1a90, 0x1a99);
-      (0x1aa7, 0x1aa7);
-      (0x1ab0, 0x1abd);
-      (0x1abf, 0x1ace);
-      (0x1b00, 0x1b03);
-      (0x1b04, 0x1b04);
-      (0x1b05, 0x1b33);
-      (0x1b34, 0x1b34);
-      (0x1b35, 0x1b35);
-      (0x1b36, 0x1b3a);
-      (0x1b3b, 0x1b3b);
-      (0x1b3c, 0x1b3c);
-      (0x1b3d, 0x1b41);
-      (0x1b42, 0x1b42);
-      (0x1b43, 0x1b44);
-      (0x1b45, 0x1b4c);
-      (0x1b50, 0x1b59);
-      (0x1b6b, 0x1b73);
-      (0x1b80, 0x1b81);
-      (0x1b82, 0x1b82);
-      (0x1b83, 0x1ba0);
-      (0x1ba1, 0x1ba1);
-      (0x1ba2, 0x1ba5);
-      (0x1ba6, 0x1ba7);
-      (0x1ba8, 0x1ba9);
-      (0x1baa, 0x1baa);
-      (0x1bab, 0x1bad);
-      (0x1bae, 0x1baf);
-      (0x1bb0, 0x1bb9);
-      (0x1bba, 0x1be5);
-      (0x1be6, 0x1be6);
-      (0x1be7, 0x1be7);
-      (0x1be8, 0x1be9);
-      (0x1bea, 0x1bec);
-      (0x1bed, 0x1bed);
-      (0x1bee, 0x1bee);
-      (0x1bef, 0x1bf1);
-      (0x1bf2, 0x1bf3);
-      (0x1c00, 0x1c23);
-      (0x1c24, 0x1c2b);
-      (0x1c2c, 0x1c33);
-      (0x1c34, 0x1c35);
-      (0x1c36, 0x1c37);
-      (0x1c40, 0x1c49);
-      (0x1c4d, 0x1c4f);
-      (0x1c50, 0x1c59);
-      (0x1c5a, 0x1c77);
-      (0x1c78, 0x1c7d);
-      (0x1c80, 0x1c88);
-      (0x1c90, 0x1cba);
-      (0x1cbd, 0x1cbf);
-      (0x1cd0, 0x1cd2);
-      (0x1cd4, 0x1ce0);
-      (0x1ce1, 0x1ce1);
-      (0x1ce2, 0x1ce8);
-      (0x1ce9, 0x1cec);
-      (0x1ced, 0x1ced);
-      (0x1cee, 0x1cf3);
-      (0x1cf4, 0x1cf4);
-      (0x1cf5, 0x1cf6);
-      (0x1cf7, 0x1cf7);
-      (0x1cf8, 0x1cf9);
-      (0x1cfa, 0x1cfa);
-      (0x1d00, 0x1d2b);
-      (0x1d2c, 0x1d6a);
-      (0x1d6b, 0x1d77);
-      (0x1d78, 0x1d78);
-      (0x1d79, 0x1d9a);
-      (0x1d9b, 0x1dbf);
-      (0x1dc0, 0x1dff);
-      (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);
-      (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, 0x2118);
-      (0x2119, 0x211d);
-      (0x2124, 0x2124);
-      (0x2126, 0x2126);
-      (0x2128, 0x2128);
-      (0x212a, 0x212d);
-      (0x212e, 0x212e);
-      (0x212f, 0x2134);
-      (0x2135, 0x2138);
-      (0x2139, 0x2139);
-      (0x213c, 0x213f);
-      (0x2145, 0x2149);
-      (0x214e, 0x214e);
-      (0x2160, 0x2182);
-      (0x2183, 0x2184);
-      (0x2185, 0x2188);
-      (0x2c00, 0x2c7b);
-      (0x2c7c, 0x2c7d);
-      (0x2c7e, 0x2ce4);
-      (0x2ceb, 0x2cee);
-      (0x2cef, 0x2cf1);
-      (0x2cf2, 0x2cf3);
-      (0x2d00, 0x2d25);
-      (0x2d27, 0x2d27);
-      (0x2d2d, 0x2d2d);
-      (0x2d30, 0x2d67);
-      (0x2d6f, 0x2d6f);
-      (0x2d7f, 0x2d7f);
-      (0x2d80, 0x2d96);
-      (0x2da0, 0x2da6);
-      (0x2da8, 0x2dae);
-      (0x2db0, 0x2db6);
-      (0x2db8, 0x2dbe);
-      (0x2dc0, 0x2dc6);
-      (0x2dc8, 0x2dce);
-      (0x2dd0, 0x2dd6);
-      (0x2dd8, 0x2dde);
-      (0x2de0, 0x2dff);
-      (0x3005, 0x3005);
-      (0x3006, 0x3006);
-      (0x3007, 0x3007);
-      (0x3021, 0x3029);
-      (0x302a, 0x302d);
-      (0x302e, 0x302f);
-      (0x3031, 0x3035);
-      (0x3038, 0x303a);
-      (0x303b, 0x303b);
-      (0x303c, 0x303c);
-      (0x3041, 0x3096);
-      (0x3099, 0x309a);
-      (0x309d, 0x309e);
-      (0x309f, 0x309f);
-      (0x30a1, 0x30fa);
-      (0x30fc, 0x30fe);
-      (0x30ff, 0x30ff);
-      (0x3105, 0x312f);
-      (0x3131, 0x318e);
-      (0x31a0, 0x31bf);
-      (0x31f0, 0x31ff);
-      (0x3400, 0x4dbf);
-      (0x4e00, 0xa014);
-      (0xa015, 0xa015);
-      (0xa016, 0xa48c);
-      (0xa4d0, 0xa4f7);
-      (0xa4f8, 0xa4fd);
-      (0xa500, 0xa60b);
-      (0xa60c, 0xa60c);
-      (0xa610, 0xa61f);
-      (0xa620, 0xa629);
-      (0xa62a, 0xa62b);
-      (0xa640, 0xa66d);
-      (0xa66e, 0xa66e);
-      (0xa66f, 0xa66f);
-      (0xa674, 0xa67d);
-      (0xa67f, 0xa67f);
-      (0xa680, 0xa69b);
-      (0xa69c, 0xa69d);
-      (0xa69e, 0xa69f);
-      (0xa6a0, 0xa6e5);
-      (0xa6e6, 0xa6ef);
-      (0xa6f0, 0xa6f1);
-      (0xa717, 0xa71f);
-      (0xa722, 0xa76f);
-      (0xa770, 0xa770);
-      (0xa771, 0xa787);
-      (0xa788, 0xa788);
-      (0xa78b, 0xa78e);
-      (0xa78f, 0xa78f);
-      (0xa790, 0xa7ca);
-      (0xa7d0, 0xa7d1);
-      (0xa7d3, 0xa7d3);
-      (0xa7d5, 0xa7d9);
-      (0xa7f2, 0xa7f4);
-      (0xa7f5, 0xa7f6);
-      (0xa7f7, 0xa7f7);
-      (0xa7f8, 0xa7f9);
-      (0xa7fa, 0xa7fa);
-      (0xa7fb, 0xa801);
-      (0xa802, 0xa802);
-      (0xa803, 0xa805);
-      (0xa806, 0xa806);
-      (0xa807, 0xa80a);
-      (0xa80b, 0xa80b);
-      (0xa80c, 0xa822);
-      (0xa823, 0xa824);
-      (0xa825, 0xa826);
-      (0xa827, 0xa827);
-      (0xa82c, 0xa82c);
-      (0xa840, 0xa873);
-      (0xa880, 0xa881);
-      (0xa882, 0xa8b3);
-      (0xa8b4, 0xa8c3);
-      (0xa8c4, 0xa8c5);
-      (0xa8d0, 0xa8d9);
-      (0xa8e0, 0xa8f1);
-      (0xa8f2, 0xa8f7);
-      (0xa8fb, 0xa8fb);
-      (0xa8fd, 0xa8fe);
-      (0xa8ff, 0xa8ff);
-      (0xa900, 0xa909);
-      (0xa90a, 0xa925);
-      (0xa926, 0xa92d);
-      (0xa930, 0xa946);
-      (0xa947, 0xa951);
-      (0xa952, 0xa953);
-      (0xa960, 0xa97c);
-      (0xa980, 0xa982);
-      (0xa983, 0xa983);
-      (0xa984, 0xa9b2);
-      (0xa9b3, 0xa9b3);
-      (0xa9b4, 0xa9b5);
-      (0xa9b6, 0xa9b9);
-      (0xa9ba, 0xa9bb);
-      (0xa9bc, 0xa9bd);
-      (0xa9be, 0xa9c0);
-      (0xa9cf, 0xa9cf);
-      (0xa9d0, 0xa9d9);
-      (0xa9e0, 0xa9e4);
-      (0xa9e5, 0xa9e5);
-      (0xa9e6, 0xa9e6);
-      (0xa9e7, 0xa9ef);
-      (0xa9f0, 0xa9f9);
-      (0xa9fa, 0xa9fe);
-      (0xaa00, 0xaa28);
-      (0xaa29, 0xaa2e);
-      (0xaa2f, 0xaa30);
-      (0xaa31, 0xaa32);
-      (0xaa33, 0xaa34);
-      (0xaa35, 0xaa36);
-      (0xaa40, 0xaa42);
-      (0xaa43, 0xaa43);
-      (0xaa44, 0xaa4b);
-      (0xaa4c, 0xaa4c);
-      (0xaa4d, 0xaa4d);
-      (0xaa50, 0xaa59);
-      (0xaa60, 0xaa6f);
-      (0xaa70, 0xaa70);
-      (0xaa71, 0xaa76);
-      (0xaa7a, 0xaa7a);
-      (0xaa7b, 0xaa7b);
-      (0xaa7c, 0xaa7c);
-      (0xaa7d, 0xaa7d);
-      (0xaa7e, 0xaaaf);
-      (0xaab0, 0xaab0);
-      (0xaab1, 0xaab1);
-      (0xaab2, 0xaab4);
-      (0xaab5, 0xaab6);
-      (0xaab7, 0xaab8);
-      (0xaab9, 0xaabd);
-      (0xaabe, 0xaabf);
-      (0xaac0, 0xaac0);
-      (0xaac1, 0xaac1);
-      (0xaac2, 0xaac2);
-      (0xaadb, 0xaadc);
-      (0xaadd, 0xaadd);
-      (0xaae0, 0xaaea);
-      (0xaaeb, 0xaaeb);
-      (0xaaec, 0xaaed);
-      (0xaaee, 0xaaef);
-      (0xaaf2, 0xaaf2);
-      (0xaaf3, 0xaaf4);
-      (0xaaf5, 0xaaf5);
-      (0xaaf6, 0xaaf6);
-      (0xab01, 0xab06);
-      (0xab09, 0xab0e);
-      (0xab11, 0xab16);
-      (0xab20, 0xab26);
-      (0xab28, 0xab2e);
-      (0xab30, 0xab5a);
-      (0xab5c, 0xab5f);
-      (0xab60, 0xab68);
-      (0xab69, 0xab69);
-      (0xab70, 0xabbf);
-      (0xabc0, 0xabe2);
-      (0xabe3, 0xabe4);
-      (0xabe5, 0xabe5);
-      (0xabe6, 0xabe7);
-      (0xabe8, 0xabe8);
-      (0xabe9, 0xabea);
-      (0xabec, 0xabec);
-      (0xabed, 0xabed);
-      (0xabf0, 0xabf9);
-      (0xac00, 0xd7a3);
-      (0xd7b0, 0xd7c6);
-      (0xd7cb, 0xd7fb);
-      (0xf900, 0xfa6d);
-      (0xfa70, 0xfad9);
-      (0xfb00, 0xfb06);
-      (0xfb13, 0xfb17);
-      (0xfb1d, 0xfb1d);
-      (0xfb1e, 0xfb1e);
-      (0xfb1f, 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, 0xff6f);
-      (0xff70, 0xff70);
-      (0xff71, 0xff9d);
-      (0xff9e, 0xff9f);
-      (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);
-      (0x101fd, 0x101fd);
-      (0x10280, 0x1029c);
-      (0x102a0, 0x102d0);
-      (0x102e0, 0x102e0);
-      (0x10300, 0x1031f);
-      (0x1032d, 0x10340);
-      (0x10341, 0x10341);
-      (0x10342, 0x10349);
-      (0x1034a, 0x1034a);
-      (0x10350, 0x10375);
-      (0x10376, 0x1037a);
-      (0x10380, 0x1039d);
-      (0x103a0, 0x103c3);
-      (0x103c8, 0x103cf);
-      (0x103d1, 0x103d5);
-      (0x10400, 0x1044f);
-      (0x10450, 0x1049d);
-      (0x104a0, 0x104a9);
-      (0x104b0, 0x104d3);
-      (0x104d8, 0x104fb);
-      (0x10500, 0x10527);
-      (0x10530, 0x10563);
-      (0x10570, 0x1057a);
-      (0x1057c, 0x1058a);
-      (0x1058c, 0x10592);
-      (0x10594, 0x10595);
-      (0x10597, 0x105a1);
-      (0x105a3, 0x105b1);
-      (0x105b3, 0x105b9);
-      (0x105bb, 0x105bc);
-      (0x10600, 0x10736);
-      (0x10740, 0x10755);
-      (0x10760, 0x10767);
-      (0x10780, 0x10785);
-      (0x10787, 0x107b0);
-      (0x107b2, 0x107ba);
-      (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);
-      (0x10a01, 0x10a03);
-      (0x10a05, 0x10a06);
-      (0x10a0c, 0x10a0f);
-      (0x10a10, 0x10a13);
-      (0x10a15, 0x10a17);
-      (0x10a19, 0x10a35);
-      (0x10a38, 0x10a3a);
-      (0x10a3f, 0x10a3f);
-      (0x10a60, 0x10a7c);
-      (0x10a80, 0x10a9c);
-      (0x10ac0, 0x10ac7);
-      (0x10ac9, 0x10ae4);
-      (0x10ae5, 0x10ae6);
-      (0x10b00, 0x10b35);
-      (0x10b40, 0x10b55);
-      (0x10b60, 0x10b72);
-      (0x10b80, 0x10b91);
-      (0x10c00, 0x10c48);
-      (0x10c80, 0x10cb2);
-      (0x10cc0, 0x10cf2);
-      (0x10d00, 0x10d23);
-      (0x10d24, 0x10d27);
-      (0x10d30, 0x10d39);
-      (0x10e80, 0x10ea9);
-      (0x10eab, 0x10eac);
-      (0x10eb0, 0x10eb1);
-      (0x10f00, 0x10f1c);
-      (0x10f27, 0x10f27);
-      (0x10f30, 0x10f45);
-      (0x10f46, 0x10f50);
-      (0x10f70, 0x10f81);
-      (0x10f82, 0x10f85);
-      (0x10fb0, 0x10fc4);
-      (0x10fe0, 0x10ff6);
-      (0x11000, 0x11000);
-      (0x11001, 0x11001);
-      (0x11002, 0x11002);
-      (0x11003, 0x11037);
-      (0x11038, 0x11046);
-      (0x11066, 0x1106f);
-      (0x11070, 0x11070);
-      (0x11071, 0x11072);
-      (0x11073, 0x11074);
-      (0x11075, 0x11075);
-      (0x1107f, 0x11081);
-      (0x11082, 0x11082);
-      (0x11083, 0x110af);
-      (0x110b0, 0x110b2);
-      (0x110b3, 0x110b6);
-      (0x110b7, 0x110b8);
-      (0x110b9, 0x110ba);
-      (0x110c2, 0x110c2);
-      (0x110d0, 0x110e8);
-      (0x110f0, 0x110f9);
-      (0x11100, 0x11102);
-      (0x11103, 0x11126);
-      (0x11127, 0x1112b);
-      (0x1112c, 0x1112c);
-      (0x1112d, 0x11134);
-      (0x11136, 0x1113f);
-      (0x11144, 0x11144);
-      (0x11145, 0x11146);
-      (0x11147, 0x11147);
-      (0x11150, 0x11172);
-      (0x11173, 0x11173);
-      (0x11176, 0x11176);
-      (0x11180, 0x11181);
-      (0x11182, 0x11182);
-      (0x11183, 0x111b2);
-      (0x111b3, 0x111b5);
-      (0x111b6, 0x111be);
-      (0x111bf, 0x111c0);
-      (0x111c1, 0x111c4);
-      (0x111c9, 0x111cc);
-      (0x111ce, 0x111ce);
-      (0x111cf, 0x111cf);
-      (0x111d0, 0x111d9);
-      (0x111da, 0x111da);
-      (0x111dc, 0x111dc);
-      (0x11200, 0x11211);
-      (0x11213, 0x1122b);
-      (0x1122c, 0x1122e);
-      (0x1122f, 0x11231);
-      (0x11232, 0x11233);
-      (0x11234, 0x11234);
-      (0x11235, 0x11235);
-      (0x11236, 0x11237);
-      (0x1123e, 0x1123e);
-      (0x11280, 0x11286);
-      (0x11288, 0x11288);
-      (0x1128a, 0x1128d);
-      (0x1128f, 0x1129d);
-      (0x1129f, 0x112a8);
-      (0x112b0, 0x112de);
-      (0x112df, 0x112df);
-      (0x112e0, 0x112e2);
-      (0x112e3, 0x112ea);
-      (0x112f0, 0x112f9);
-      (0x11300, 0x11301);
-      (0x11302, 0x11303);
-      (0x11305, 0x1130c);
-      (0x1130f, 0x11310);
-      (0x11313, 0x11328);
-      (0x1132a, 0x11330);
-      (0x11332, 0x11333);
-      (0x11335, 0x11339);
-      (0x1133b, 0x1133c);
-      (0x1133d, 0x1133d);
-      (0x1133e, 0x1133f);
-      (0x11340, 0x11340);
-      (0x11341, 0x11344);
-      (0x11347, 0x11348);
-      (0x1134b, 0x1134d);
-      (0x11350, 0x11350);
-      (0x11357, 0x11357);
-      (0x1135d, 0x11361);
-      (0x11362, 0x11363);
-      (0x11366, 0x1136c);
-      (0x11370, 0x11374);
-      (0x11400, 0x11434);
-      (0x11435, 0x11437);
-      (0x11438, 0x1143f);
-      (0x11440, 0x11441);
-      (0x11442, 0x11444);
-      (0x11445, 0x11445);
-      (0x11446, 0x11446);
-      (0x11447, 0x1144a);
-      (0x11450, 0x11459);
-      (0x1145e, 0x1145e);
-      (0x1145f, 0x11461);
-      (0x11480, 0x114af);
-      (0x114b0, 0x114b2);
-      (0x114b3, 0x114b8);
-      (0x114b9, 0x114b9);
-      (0x114ba, 0x114ba);
-      (0x114bb, 0x114be);
-      (0x114bf, 0x114c0);
-      (0x114c1, 0x114c1);
-      (0x114c2, 0x114c3);
-      (0x114c4, 0x114c5);
-      (0x114c7, 0x114c7);
-      (0x114d0, 0x114d9);
-      (0x11580, 0x115ae);
-      (0x115af, 0x115b1);
-      (0x115b2, 0x115b5);
-      (0x115b8, 0x115bb);
-      (0x115bc, 0x115bd);
-      (0x115be, 0x115be);
-      (0x115bf, 0x115c0);
-      (0x115d8, 0x115db);
-      (0x115dc, 0x115dd);
-      (0x11600, 0x1162f);
-      (0x11630, 0x11632);
-      (0x11633, 0x1163a);
-      (0x1163b, 0x1163c);
-      (0x1163d, 0x1163d);
-      (0x1163e, 0x1163e);
-      (0x1163f, 0x11640);
-      (0x11644, 0x11644);
-      (0x11650, 0x11659);
-      (0x11680, 0x116aa);
-      (0x116ab, 0x116ab);
-      (0x116ac, 0x116ac);
-      (0x116ad, 0x116ad);
-      (0x116ae, 0x116af);
-      (0x116b0, 0x116b5);
-      (0x116b6, 0x116b6);
-      (0x116b7, 0x116b7);
-      (0x116b8, 0x116b8);
-      (0x116c0, 0x116c9);
-      (0x11700, 0x1171a);
-      (0x1171d, 0x1171f);
-      (0x11720, 0x11721);
-      (0x11722, 0x11725);
-      (0x11726, 0x11726);
-      (0x11727, 0x1172b);
-      (0x11730, 0x11739);
-      (0x11740, 0x11746);
-      (0x11800, 0x1182b);
-      (0x1182c, 0x1182e);
-      (0x1182f, 0x11837);
-      (0x11838, 0x11838);
-      (0x11839, 0x1183a);
-      (0x118a0, 0x118df);
-      (0x118e0, 0x118e9);
-      (0x118ff, 0x11906);
-      (0x11909, 0x11909);
-      (0x1190c, 0x11913);
-      (0x11915, 0x11916);
-      (0x11918, 0x1192f);
-      (0x11930, 0x11935);
-      (0x11937, 0x11938);
-      (0x1193b, 0x1193c);
-      (0x1193d, 0x1193d);
-      (0x1193e, 0x1193e);
-      (0x1193f, 0x1193f);
-      (0x11940, 0x11940);
-      (0x11941, 0x11941);
-      (0x11942, 0x11942);
-      (0x11943, 0x11943);
-      (0x11950, 0x11959);
-      (0x119a0, 0x119a7);
-      (0x119aa, 0x119d0);
-      (0x119d1, 0x119d3);
-      (0x119d4, 0x119d7);
-      (0x119da, 0x119db);
-      (0x119dc, 0x119df);
-      (0x119e0, 0x119e0);
-      (0x119e1, 0x119e1);
-      (0x119e3, 0x119e3);
-      (0x119e4, 0x119e4);
-      (0x11a00, 0x11a00);
-      (0x11a01, 0x11a0a);
-      (0x11a0b, 0x11a32);
-      (0x11a33, 0x11a38);
-      (0x11a39, 0x11a39);
-      (0x11a3a, 0x11a3a);
-      (0x11a3b, 0x11a3e);
-      (0x11a47, 0x11a47);
-      (0x11a50, 0x11a50);
-      (0x11a51, 0x11a56);
-      (0x11a57, 0x11a58);
-      (0x11a59, 0x11a5b);
-      (0x11a5c, 0x11a89);
-      (0x11a8a, 0x11a96);
-      (0x11a97, 0x11a97);
-      (0x11a98, 0x11a99);
-      (0x11a9d, 0x11a9d);
-      (0x11ab0, 0x11af8);
-      (0x11c00, 0x11c08);
-      (0x11c0a, 0x11c2e);
-      (0x11c2f, 0x11c2f);
-      (0x11c30, 0x11c36);
-      (0x11c38, 0x11c3d);
-      (0x11c3e, 0x11c3e);
-      (0x11c3f, 0x11c3f);
-      (0x11c40, 0x11c40);
-      (0x11c50, 0x11c59);
-      (0x11c72, 0x11c8f);
-      (0x11c92, 0x11ca7);
-      (0x11ca9, 0x11ca9);
-      (0x11caa, 0x11cb0);
-      (0x11cb1, 0x11cb1);
-      (0x11cb2, 0x11cb3);
-      (0x11cb4, 0x11cb4);
-      (0x11cb5, 0x11cb6);
-      (0x11d00, 0x11d06);
-      (0x11d08, 0x11d09);
-      (0x11d0b, 0x11d30);
-      (0x11d31, 0x11d36);
-      (0x11d3a, 0x11d3a);
-      (0x11d3c, 0x11d3d);
-      (0x11d3f, 0x11d45);
-      (0x11d46, 0x11d46);
-      (0x11d47, 0x11d47);
-      (0x11d50, 0x11d59);
-      (0x11d60, 0x11d65);
-      (0x11d67, 0x11d68);
-      (0x11d6a, 0x11d89);
-      (0x11d8a, 0x11d8e);
-      (0x11d90, 0x11d91);
-      (0x11d93, 0x11d94);
-      (0x11d95, 0x11d95);
-      (0x11d96, 0x11d96);
-      (0x11d97, 0x11d97);
-      (0x11d98, 0x11d98);
-      (0x11da0, 0x11da9);
-      (0x11ee0, 0x11ef2);
-      (0x11ef3, 0x11ef4);
-      (0x11ef5, 0x11ef6);
-      (0x11fb0, 0x11fb0);
-      (0x12000, 0x12399);
-      (0x12400, 0x1246e);
-      (0x12480, 0x12543);
-      (0x12f90, 0x12ff0);
-      (0x13000, 0x1342e);
-      (0x14400, 0x14646);
-      (0x16800, 0x16a38);
-      (0x16a40, 0x16a5e);
-      (0x16a60, 0x16a69);
-      (0x16a70, 0x16abe);
-      (0x16ac0, 0x16ac9);
-      (0x16ad0, 0x16aed);
-      (0x16af0, 0x16af4);
-      (0x16b00, 0x16b2f);
-      (0x16b30, 0x16b36);
-      (0x16b40, 0x16b43);
-      (0x16b50, 0x16b59);
-      (0x16b63, 0x16b77);
-      (0x16b7d, 0x16b8f);
-      (0x16e40, 0x16e7f);
-      (0x16f00, 0x16f4a);
-      (0x16f4f, 0x16f4f);
-      (0x16f50, 0x16f50);
-      (0x16f51, 0x16f87);
-      (0x16f8f, 0x16f92);
-      (0x16f93, 0x16f9f);
-      (0x16fe0, 0x16fe1);
-      (0x16fe3, 0x16fe3);
-      (0x16fe4, 0x16fe4);
-      (0x16ff0, 0x16ff1);
-      (0x17000, 0x187f7);
-      (0x18800, 0x18cd5);
-      (0x18d00, 0x18d08);
-      (0x1aff0, 0x1aff3);
-      (0x1aff5, 0x1affb);
-      (0x1affd, 0x1affe);
-      (0x1b000, 0x1b122);
-      (0x1b150, 0x1b152);
-      (0x1b164, 0x1b167);
-      (0x1b170, 0x1b2fb);
-      (0x1bc00, 0x1bc6a);
-      (0x1bc70, 0x1bc7c);
-      (0x1bc80, 0x1bc88);
-      (0x1bc90, 0x1bc99);
-      (0x1bc9d, 0x1bc9e);
-      (0x1cf00, 0x1cf2d);
-      (0x1cf30, 0x1cf46);
-      (0x1d165, 0x1d166);
-      (0x1d167, 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);
-      (0x1df00, 0x1df09);
-      (0x1df0a, 0x1df0a);
-      (0x1df0b, 0x1df1e);
-      (0x1e000, 0x1e006);
-      (0x1e008, 0x1e018);
-      (0x1e01b, 0x1e021);
-      (0x1e023, 0x1e024);
-      (0x1e026, 0x1e02a);
-      (0x1e100, 0x1e12c);
-      (0x1e130, 0x1e136);
-      (0x1e137, 0x1e13d);
-      (0x1e140, 0x1e149);
-      (0x1e14e, 0x1e14e);
-      (0x1e290, 0x1e2ad);
-      (0x1e2ae, 0x1e2ae);
-      (0x1e2c0, 0x1e2eb);
-      (0x1e2ec, 0x1e2ef);
-      (0x1e2f0, 0x1e2f9);
-      (0x1e7e0, 0x1e7e6);
-      (0x1e7e8, 0x1e7eb);
-      (0x1e7ed, 0x1e7ee);
-      (0x1e7f0, 0x1e7fe);
-      (0x1e800, 0x1e8c4);
-      (0x1e8d0, 0x1e8d6);
-      (0x1e900, 0x1e943);
-      (0x1e944, 0x1e94a);
-      (0x1e94b, 0x1e94b);
-      (0x1e950, 0x1e959);
-      (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);
-      (0x1fbf0, 0x1fbf9);
-      (0x20000, 0x2a6df);
-      (0x2a700, 0x2b738);
-      (0x2b740, 0x2b81d);
-      (0xe0100, 0xe01ef);
-      (0x30000, 0x3134a);
-      (0x2f800, 0x2fa1d);
-      (0x2ceb0, 0x2ebe0);
-      (0x2b820, 0x2cea1);
-    ]
+    [0x30, 0x39; 0x41, 0x5a; 0x5f, 0x5f; 0x61, 0x7a; 0xaa, 0xaa;
+     0xb5, 0xb5; 0xb7, 0xb7; 0xba, 0xba; 0xc0, 0xd6; 0xd8, 0xf6;
+     0xf8, 0x1ba; 0x1bb, 0x1bb; 0x1bc, 0x1bf; 0x1c0, 0x1c3; 0x1c4, 0x293;
+     0x294, 0x294; 0x295, 0x2af; 0x2b0, 0x2c1; 0x2c6, 0x2d1; 0x2e0, 0x2e4;
+     0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x300, 0x36f; 0x370, 0x373; 0x374, 0x374;
+     0x376, 0x377; 0x37b, 0x37d; 0x37f, 0x37f; 0x386, 0x386; 0x387, 0x387;
+     0x388, 0x38a; 0x38c, 0x38c; 0x38e, 0x3a1; 0x3a3, 0x3f5; 0x3f7, 0x481;
+     0x483, 0x487; 0x48a, 0x52f; 0x531, 0x556; 0x559, 0x559; 0x560, 0x588;
+     0x591, 0x5bd; 0x5bf, 0x5bf; 0x5c1, 0x5c2; 0x5c4, 0x5c5; 0x5c7, 0x5c7;
+     0x5d0, 0x5ea; 0x5ef, 0x5f2; 0x610, 0x61a; 0x620, 0x63f; 0x640, 0x640;
+     0x641, 0x64a; 0x64b, 0x65f; 0x660, 0x669; 0x66e, 0x66f; 0x670, 0x670;
+     0x671, 0x6d3; 0x6d5, 0x6d5; 0x6d6, 0x6dc; 0x6df, 0x6e4; 0x6e5, 0x6e6;
+     0x6e7, 0x6e8; 0x6ea, 0x6ed; 0x6ee, 0x6ef; 0x6f0, 0x6f9; 0x6fa, 0x6fc;
+     0x6ff, 0x6ff; 0x710, 0x710; 0x711, 0x711; 0x712, 0x72f; 0x730, 0x74a;
+     0x74d, 0x7a5; 0x7a6, 0x7b0; 0x7b1, 0x7b1; 0x7c0, 0x7c9; 0x7ca, 0x7ea;
+     0x7eb, 0x7f3; 0x7f4, 0x7f5; 0x7fa, 0x7fa; 0x7fd, 0x7fd; 0x800, 0x815;
+     0x816, 0x819; 0x81a, 0x81a; 0x81b, 0x823; 0x824, 0x824; 0x825, 0x827;
+     0x828, 0x828; 0x829, 0x82d; 0x840, 0x858; 0x859, 0x85b; 0x860, 0x86a;
+     0x870, 0x887; 0x889, 0x88e; 0x898, 0x89f; 0x8a0, 0x8c8; 0x8c9, 0x8c9;
+     0x8ca, 0x8e1; 0x8e3, 0x902; 0x903, 0x903; 0x904, 0x939; 0x93a, 0x93a;
+     0x93b, 0x93b; 0x93c, 0x93c; 0x93d, 0x93d; 0x93e, 0x940; 0x941, 0x948;
+     0x949, 0x94c; 0x94d, 0x94d; 0x94e, 0x94f; 0x950, 0x950; 0x951, 0x957;
+     0x958, 0x961; 0x962, 0x963; 0x966, 0x96f; 0x971, 0x971; 0x972, 0x980;
+     0x981, 0x981; 0x982, 0x983; 0x985, 0x98c; 0x98f, 0x990; 0x993, 0x9a8;
+     0x9aa, 0x9b0; 0x9b2, 0x9b2; 0x9b6, 0x9b9; 0x9bc, 0x9bc; 0x9bd, 0x9bd;
+     0x9be, 0x9c0; 0x9c1, 0x9c4; 0x9c7, 0x9c8; 0x9cb, 0x9cc; 0x9cd, 0x9cd;
+     0x9ce, 0x9ce; 0x9d7, 0x9d7; 0x9dc, 0x9dd; 0x9df, 0x9e1; 0x9e2, 0x9e3;
+     0x9e6, 0x9ef; 0x9f0, 0x9f1; 0x9fc, 0x9fc; 0x9fe, 0x9fe; 0xa01, 0xa02;
+     0xa03, 0xa03; 0xa05, 0xa0a; 0xa0f, 0xa10; 0xa13, 0xa28; 0xa2a, 0xa30;
+     0xa32, 0xa33; 0xa35, 0xa36; 0xa38, 0xa39; 0xa3c, 0xa3c; 0xa3e, 0xa40;
+     0xa41, 0xa42; 0xa47, 0xa48; 0xa4b, 0xa4d; 0xa51, 0xa51; 0xa59, 0xa5c;
+     0xa5e, 0xa5e; 0xa66, 0xa6f; 0xa70, 0xa71; 0xa72, 0xa74; 0xa75, 0xa75;
+     0xa81, 0xa82; 0xa83, 0xa83; 0xa85, 0xa8d; 0xa8f, 0xa91; 0xa93, 0xaa8;
+     0xaaa, 0xab0; 0xab2, 0xab3; 0xab5, 0xab9; 0xabc, 0xabc; 0xabd, 0xabd;
+     0xabe, 0xac0; 0xac1, 0xac5; 0xac7, 0xac8; 0xac9, 0xac9; 0xacb, 0xacc;
+     0xacd, 0xacd; 0xad0, 0xad0; 0xae0, 0xae1; 0xae2, 0xae3; 0xae6, 0xaef;
+     0xaf9, 0xaf9; 0xafa, 0xaff; 0xb01, 0xb01; 0xb02, 0xb03; 0xb05, 0xb0c;
+     0xb0f, 0xb10; 0xb13, 0xb28; 0xb2a, 0xb30; 0xb32, 0xb33; 0xb35, 0xb39;
+     0xb3c, 0xb3c; 0xb3d, 0xb3d; 0xb3e, 0xb3e; 0xb3f, 0xb3f; 0xb40, 0xb40;
+     0xb41, 0xb44; 0xb47, 0xb48; 0xb4b, 0xb4c; 0xb4d, 0xb4d; 0xb55, 0xb56;
+     0xb57, 0xb57; 0xb5c, 0xb5d; 0xb5f, 0xb61; 0xb62, 0xb63; 0xb66, 0xb6f;
+     0xb71, 0xb71; 0xb82, 0xb82; 0xb83, 0xb83; 0xb85, 0xb8a; 0xb8e, 0xb90;
+     0xb92, 0xb95; 0xb99, 0xb9a; 0xb9c, 0xb9c; 0xb9e, 0xb9f; 0xba3, 0xba4;
+     0xba8, 0xbaa; 0xbae, 0xbb9; 0xbbe, 0xbbf; 0xbc0, 0xbc0; 0xbc1, 0xbc2;
+     0xbc6, 0xbc8; 0xbca, 0xbcc; 0xbcd, 0xbcd; 0xbd0, 0xbd0; 0xbd7, 0xbd7;
+     0xbe6, 0xbef; 0xc00, 0xc00; 0xc01, 0xc03; 0xc04, 0xc04; 0xc05, 0xc0c;
+     0xc0e, 0xc10; 0xc12, 0xc28; 0xc2a, 0xc39; 0xc3c, 0xc3c; 0xc3d, 0xc3d;
+     0xc3e, 0xc40; 0xc41, 0xc44; 0xc46, 0xc48; 0xc4a, 0xc4d; 0xc55, 0xc56;
+     0xc58, 0xc5a; 0xc5d, 0xc5d; 0xc60, 0xc61; 0xc62, 0xc63; 0xc66, 0xc6f;
+     0xc80, 0xc80; 0xc81, 0xc81; 0xc82, 0xc83; 0xc85, 0xc8c; 0xc8e, 0xc90;
+     0xc92, 0xca8; 0xcaa, 0xcb3; 0xcb5, 0xcb9; 0xcbc, 0xcbc; 0xcbd, 0xcbd;
+     0xcbe, 0xcbe; 0xcbf, 0xcbf; 0xcc0, 0xcc4; 0xcc6, 0xcc6; 0xcc7, 0xcc8;
+     0xcca, 0xccb; 0xccc, 0xccd; 0xcd5, 0xcd6; 0xcdd, 0xcde; 0xce0, 0xce1;
+     0xce2, 0xce3; 0xce6, 0xcef; 0xcf1, 0xcf2; 0xcf3, 0xcf3; 0xd00, 0xd01;
+     0xd02, 0xd03; 0xd04, 0xd0c; 0xd0e, 0xd10; 0xd12, 0xd3a; 0xd3b, 0xd3c;
+     0xd3d, 0xd3d; 0xd3e, 0xd40; 0xd41, 0xd44; 0xd46, 0xd48; 0xd4a, 0xd4c;
+     0xd4d, 0xd4d; 0xd4e, 0xd4e; 0xd54, 0xd56; 0xd57, 0xd57; 0xd5f, 0xd61;
+     0xd62, 0xd63; 0xd66, 0xd6f; 0xd7a, 0xd7f; 0xd81, 0xd81; 0xd82, 0xd83;
+     0xd85, 0xd96; 0xd9a, 0xdb1; 0xdb3, 0xdbb; 0xdbd, 0xdbd; 0xdc0, 0xdc6;
+     0xdca, 0xdca; 0xdcf, 0xdd1; 0xdd2, 0xdd4; 0xdd6, 0xdd6; 0xdd8, 0xddf;
+     0xde6, 0xdef; 0xdf2, 0xdf3; 0xe01, 0xe30; 0xe31, 0xe31; 0xe32, 0xe33;
+     0xe34, 0xe3a; 0xe40, 0xe45; 0xe46, 0xe46; 0xe47, 0xe4e; 0xe50, 0xe59;
+     0xe81, 0xe82; 0xe84, 0xe84; 0xe86, 0xe8a; 0xe8c, 0xea3; 0xea5, 0xea5;
+     0xea7, 0xeb0; 0xeb1, 0xeb1; 0xeb2, 0xeb3; 0xeb4, 0xebc; 0xebd, 0xebd;
+     0xec0, 0xec4; 0xec6, 0xec6; 0xec8, 0xece; 0xed0, 0xed9; 0xedc, 0xedf;
+     0xf00, 0xf00; 0xf18, 0xf19; 0xf20, 0xf29; 0xf35, 0xf35; 0xf37, 0xf37;
+     0xf39, 0xf39; 0xf3e, 0xf3f; 0xf40, 0xf47; 0xf49, 0xf6c; 0xf71, 0xf7e;
+     0xf7f, 0xf7f; 0xf80, 0xf84; 0xf86, 0xf87; 0xf88, 0xf8c; 0xf8d, 0xf97;
+     0xf99, 0xfbc; 0xfc6, 0xfc6; 0x1000, 0x102a; 0x102b, 0x102c; 0x102d, 0x1030;
+     0x1031, 0x1031; 0x1032, 0x1037; 0x1038, 0x1038; 0x1039, 0x103a; 0x103b, 0x103c;
+     0x103d, 0x103e; 0x103f, 0x103f; 0x1040, 0x1049; 0x1050, 0x1055; 0x1056, 0x1057;
+     0x1058, 0x1059; 0x105a, 0x105d; 0x105e, 0x1060; 0x1061, 0x1061; 0x1062, 0x1064;
+     0x1065, 0x1066; 0x1067, 0x106d; 0x106e, 0x1070; 0x1071, 0x1074; 0x1075, 0x1081;
+     0x1082, 0x1082; 0x1083, 0x1084; 0x1085, 0x1086; 0x1087, 0x108c; 0x108d, 0x108d;
+     0x108e, 0x108e; 0x108f, 0x108f; 0x1090, 0x1099; 0x109a, 0x109c; 0x109d, 0x109d;
+     0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd; 0x10d0, 0x10fa; 0x10fc, 0x10fc;
+     0x10fd, 0x10ff; 0x1100, 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, 0x16f0; 0x16f1, 0x16f8; 0x1700, 0x1711; 0x1712, 0x1714;
+     0x1715, 0x1715; 0x171f, 0x1731; 0x1732, 0x1733; 0x1734, 0x1734; 0x1740, 0x1751;
+     0x1752, 0x1753; 0x1760, 0x176c; 0x176e, 0x1770; 0x1772, 0x1773; 0x1780, 0x17b3;
+     0x17b4, 0x17b5; 0x17b6, 0x17b6; 0x17b7, 0x17bd; 0x17be, 0x17c5; 0x17c6, 0x17c6;
+     0x17c7, 0x17c8; 0x17c9, 0x17d3; 0x17d7, 0x17d7; 0x17dc, 0x17dc; 0x17dd, 0x17dd;
+     0x17e0, 0x17e9; 0x180b, 0x180d; 0x180f, 0x180f; 0x1810, 0x1819; 0x1820, 0x1842;
+     0x1843, 0x1843; 0x1844, 0x1878; 0x1880, 0x1884; 0x1885, 0x1886; 0x1887, 0x18a8;
+     0x18a9, 0x18a9; 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e; 0x1920, 0x1922;
+     0x1923, 0x1926; 0x1927, 0x1928; 0x1929, 0x192b; 0x1930, 0x1931; 0x1932, 0x1932;
+     0x1933, 0x1938; 0x1939, 0x193b; 0x1946, 0x194f; 0x1950, 0x196d; 0x1970, 0x1974;
+     0x1980, 0x19ab; 0x19b0, 0x19c9; 0x19d0, 0x19d9; 0x19da, 0x19da; 0x1a00, 0x1a16;
+     0x1a17, 0x1a18; 0x1a19, 0x1a1a; 0x1a1b, 0x1a1b; 0x1a20, 0x1a54; 0x1a55, 0x1a55;
+     0x1a56, 0x1a56; 0x1a57, 0x1a57; 0x1a58, 0x1a5e; 0x1a60, 0x1a60; 0x1a61, 0x1a61;
+     0x1a62, 0x1a62; 0x1a63, 0x1a64; 0x1a65, 0x1a6c; 0x1a6d, 0x1a72; 0x1a73, 0x1a7c;
+     0x1a7f, 0x1a7f; 0x1a80, 0x1a89; 0x1a90, 0x1a99; 0x1aa7, 0x1aa7; 0x1ab0, 0x1abd;
+     0x1abf, 0x1ace; 0x1b00, 0x1b03; 0x1b04, 0x1b04; 0x1b05, 0x1b33; 0x1b34, 0x1b34;
+     0x1b35, 0x1b35; 0x1b36, 0x1b3a; 0x1b3b, 0x1b3b; 0x1b3c, 0x1b3c; 0x1b3d, 0x1b41;
+     0x1b42, 0x1b42; 0x1b43, 0x1b44; 0x1b45, 0x1b4c; 0x1b50, 0x1b59; 0x1b6b, 0x1b73;
+     0x1b80, 0x1b81; 0x1b82, 0x1b82; 0x1b83, 0x1ba0; 0x1ba1, 0x1ba1; 0x1ba2, 0x1ba5;
+     0x1ba6, 0x1ba7; 0x1ba8, 0x1ba9; 0x1baa, 0x1baa; 0x1bab, 0x1bad; 0x1bae, 0x1baf;
+     0x1bb0, 0x1bb9; 0x1bba, 0x1be5; 0x1be6, 0x1be6; 0x1be7, 0x1be7; 0x1be8, 0x1be9;
+     0x1bea, 0x1bec; 0x1bed, 0x1bed; 0x1bee, 0x1bee; 0x1bef, 0x1bf1; 0x1bf2, 0x1bf3;
+     0x1c00, 0x1c23; 0x1c24, 0x1c2b; 0x1c2c, 0x1c33; 0x1c34, 0x1c35; 0x1c36, 0x1c37;
+     0x1c40, 0x1c49; 0x1c4d, 0x1c4f; 0x1c50, 0x1c59; 0x1c5a, 0x1c77; 0x1c78, 0x1c7d;
+     0x1c80, 0x1c88; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1cd0, 0x1cd2; 0x1cd4, 0x1ce0;
+     0x1ce1, 0x1ce1; 0x1ce2, 0x1ce8; 0x1ce9, 0x1cec; 0x1ced, 0x1ced; 0x1cee, 0x1cf3;
+     0x1cf4, 0x1cf4; 0x1cf5, 0x1cf6; 0x1cf7, 0x1cf7; 0x1cf8, 0x1cf9; 0x1cfa, 0x1cfa;
+     0x1d00, 0x1d2b; 0x1d2c, 0x1d6a; 0x1d6b, 0x1d77; 0x1d78, 0x1d78; 0x1d79, 0x1d9a;
+     0x1d9b, 0x1dbf; 0x1dc0, 0x1dff; 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; 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, 0x2118; 0x2119, 0x211d;
+     0x2124, 0x2124; 0x2126, 0x2126; 0x2128, 0x2128; 0x212a, 0x212d; 0x212e, 0x212e;
+     0x212f, 0x2134; 0x2135, 0x2138; 0x2139, 0x2139; 0x213c, 0x213f; 0x2145, 0x2149;
+     0x214e, 0x214e; 0x2160, 0x2182; 0x2183, 0x2184; 0x2185, 0x2188; 0x2c00, 0x2c7b;
+     0x2c7c, 0x2c7d; 0x2c7e, 0x2ce4; 0x2ceb, 0x2cee; 0x2cef, 0x2cf1; 0x2cf2, 0x2cf3;
+     0x2d00, 0x2d25; 0x2d27, 0x2d27; 0x2d2d, 0x2d2d; 0x2d30, 0x2d67; 0x2d6f, 0x2d6f;
+     0x2d7f, 0x2d7f; 0x2d80, 0x2d96; 0x2da0, 0x2da6; 0x2da8, 0x2dae; 0x2db0, 0x2db6;
+     0x2db8, 0x2dbe; 0x2dc0, 0x2dc6; 0x2dc8, 0x2dce; 0x2dd0, 0x2dd6; 0x2dd8, 0x2dde;
+     0x2de0, 0x2dff; 0x3005, 0x3005; 0x3006, 0x3006; 0x3007, 0x3007; 0x3021, 0x3029;
+     0x302a, 0x302d; 0x302e, 0x302f; 0x3031, 0x3035; 0x3038, 0x303a; 0x303b, 0x303b;
+     0x303c, 0x303c; 0x3041, 0x3096; 0x3099, 0x309a; 0x309d, 0x309e; 0x309f, 0x309f;
+     0x30a1, 0x30fa; 0x30fc, 0x30fe; 0x30ff, 0x30ff; 0x3105, 0x312f; 0x3131, 0x318e;
+     0x31a0, 0x31bf; 0x31f0, 0x31ff; 0x3400, 0x4dbf; 0x4e00, 0xa014; 0xa015, 0xa015;
+     0xa016, 0xa48c; 0xa4d0, 0xa4f7; 0xa4f8, 0xa4fd; 0xa500, 0xa60b; 0xa60c, 0xa60c;
+     0xa610, 0xa61f; 0xa620, 0xa629; 0xa62a, 0xa62b; 0xa640, 0xa66d; 0xa66e, 0xa66e;
+     0xa66f, 0xa66f; 0xa674, 0xa67d; 0xa67f, 0xa67f; 0xa680, 0xa69b; 0xa69c, 0xa69d;
+     0xa69e, 0xa69f; 0xa6a0, 0xa6e5; 0xa6e6, 0xa6ef; 0xa6f0, 0xa6f1; 0xa717, 0xa71f;
+     0xa722, 0xa76f; 0xa770, 0xa770; 0xa771, 0xa787; 0xa788, 0xa788; 0xa78b, 0xa78e;
+     0xa78f, 0xa78f; 0xa790, 0xa7ca; 0xa7d0, 0xa7d1; 0xa7d3, 0xa7d3; 0xa7d5, 0xa7d9;
+     0xa7f2, 0xa7f4; 0xa7f5, 0xa7f6; 0xa7f7, 0xa7f7; 0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa;
+     0xa7fb, 0xa801; 0xa802, 0xa802; 0xa803, 0xa805; 0xa806, 0xa806; 0xa807, 0xa80a;
+     0xa80b, 0xa80b; 0xa80c, 0xa822; 0xa823, 0xa824; 0xa825, 0xa826; 0xa827, 0xa827;
+     0xa82c, 0xa82c; 0xa840, 0xa873; 0xa880, 0xa881; 0xa882, 0xa8b3; 0xa8b4, 0xa8c3;
+     0xa8c4, 0xa8c5; 0xa8d0, 0xa8d9; 0xa8e0, 0xa8f1; 0xa8f2, 0xa8f7; 0xa8fb, 0xa8fb;
+     0xa8fd, 0xa8fe; 0xa8ff, 0xa8ff; 0xa900, 0xa909; 0xa90a, 0xa925; 0xa926, 0xa92d;
+     0xa930, 0xa946; 0xa947, 0xa951; 0xa952, 0xa953; 0xa960, 0xa97c; 0xa980, 0xa982;
+     0xa983, 0xa983; 0xa984, 0xa9b2; 0xa9b3, 0xa9b3; 0xa9b4, 0xa9b5; 0xa9b6, 0xa9b9;
+     0xa9ba, 0xa9bb; 0xa9bc, 0xa9bd; 0xa9be, 0xa9c0; 0xa9cf, 0xa9cf; 0xa9d0, 0xa9d9;
+     0xa9e0, 0xa9e4; 0xa9e5, 0xa9e5; 0xa9e6, 0xa9e6; 0xa9e7, 0xa9ef; 0xa9f0, 0xa9f9;
+     0xa9fa, 0xa9fe; 0xaa00, 0xaa28; 0xaa29, 0xaa2e; 0xaa2f, 0xaa30; 0xaa31, 0xaa32;
+     0xaa33, 0xaa34; 0xaa35, 0xaa36; 0xaa40, 0xaa42; 0xaa43, 0xaa43; 0xaa44, 0xaa4b;
+     0xaa4c, 0xaa4c; 0xaa4d, 0xaa4d; 0xaa50, 0xaa59; 0xaa60, 0xaa6f; 0xaa70, 0xaa70;
+     0xaa71, 0xaa76; 0xaa7a, 0xaa7a; 0xaa7b, 0xaa7b; 0xaa7c, 0xaa7c; 0xaa7d, 0xaa7d;
+     0xaa7e, 0xaaaf; 0xaab0, 0xaab0; 0xaab1, 0xaab1; 0xaab2, 0xaab4; 0xaab5, 0xaab6;
+     0xaab7, 0xaab8; 0xaab9, 0xaabd; 0xaabe, 0xaabf; 0xaac0, 0xaac0; 0xaac1, 0xaac1;
+     0xaac2, 0xaac2; 0xaadb, 0xaadc; 0xaadd, 0xaadd; 0xaae0, 0xaaea; 0xaaeb, 0xaaeb;
+     0xaaec, 0xaaed; 0xaaee, 0xaaef; 0xaaf2, 0xaaf2; 0xaaf3, 0xaaf4; 0xaaf5, 0xaaf5;
+     0xaaf6, 0xaaf6; 0xab01, 0xab06; 0xab09, 0xab0e; 0xab11, 0xab16; 0xab20, 0xab26;
+     0xab28, 0xab2e; 0xab30, 0xab5a; 0xab5c, 0xab5f; 0xab60, 0xab68; 0xab69, 0xab69;
+     0xab70, 0xabbf; 0xabc0, 0xabe2; 0xabe3, 0xabe4; 0xabe5, 0xabe5; 0xabe6, 0xabe7;
+     0xabe8, 0xabe8; 0xabe9, 0xabea; 0xabec, 0xabec; 0xabed, 0xabed; 0xabf0, 0xabf9;
+     0xac00, 0xd7a3; 0xd7b0, 0xd7c6; 0xd7cb, 0xd7fb; 0xf900, 0xfa6d; 0xfa70, 0xfad9;
+     0xfb00, 0xfb06; 0xfb13, 0xfb17; 0xfb1d, 0xfb1d; 0xfb1e, 0xfb1e; 0xfb1f, 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, 0xff6f; 0xff70, 0xff70; 0xff71, 0xff9d; 0xff9e, 0xff9f;
+     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; 0x101fd, 0x101fd; 0x10280, 0x1029c;
+     0x102a0, 0x102d0; 0x102e0, 0x102e0; 0x10300, 0x1031f; 0x1032d, 0x10340; 0x10341, 0x10341;
+     0x10342, 0x10349; 0x1034a, 0x1034a; 0x10350, 0x10375; 0x10376, 0x1037a; 0x10380, 0x1039d;
+     0x103a0, 0x103c3; 0x103c8, 0x103cf; 0x103d1, 0x103d5; 0x10400, 0x1044f; 0x10450, 0x1049d;
+     0x104a0, 0x104a9; 0x104b0, 0x104d3; 0x104d8, 0x104fb; 0x10500, 0x10527; 0x10530, 0x10563;
+     0x10570, 0x1057a; 0x1057c, 0x1058a; 0x1058c, 0x10592; 0x10594, 0x10595; 0x10597, 0x105a1;
+     0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc; 0x10600, 0x10736; 0x10740, 0x10755;
+     0x10760, 0x10767; 0x10780, 0x10785; 0x10787, 0x107b0; 0x107b2, 0x107ba; 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; 0x10a01, 0x10a03;
+     0x10a05, 0x10a06; 0x10a0c, 0x10a0f; 0x10a10, 0x10a13; 0x10a15, 0x10a17; 0x10a19, 0x10a35;
+     0x10a38, 0x10a3a; 0x10a3f, 0x10a3f; 0x10a60, 0x10a7c; 0x10a80, 0x10a9c; 0x10ac0, 0x10ac7;
+     0x10ac9, 0x10ae4; 0x10ae5, 0x10ae6; 0x10b00, 0x10b35; 0x10b40, 0x10b55; 0x10b60, 0x10b72;
+     0x10b80, 0x10b91; 0x10c00, 0x10c48; 0x10c80, 0x10cb2; 0x10cc0, 0x10cf2; 0x10d00, 0x10d23;
+     0x10d24, 0x10d27; 0x10d30, 0x10d39; 0x10e80, 0x10ea9; 0x10eab, 0x10eac; 0x10eb0, 0x10eb1;
+     0x10efd, 0x10eff; 0x10f00, 0x10f1c; 0x10f27, 0x10f27; 0x10f30, 0x10f45; 0x10f46, 0x10f50;
+     0x10f70, 0x10f81; 0x10f82, 0x10f85; 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; 0x11000, 0x11000;
+     0x11001, 0x11001; 0x11002, 0x11002; 0x11003, 0x11037; 0x11038, 0x11046; 0x11066, 0x1106f;
+     0x11070, 0x11070; 0x11071, 0x11072; 0x11073, 0x11074; 0x11075, 0x11075; 0x1107f, 0x11081;
+     0x11082, 0x11082; 0x11083, 0x110af; 0x110b0, 0x110b2; 0x110b3, 0x110b6; 0x110b7, 0x110b8;
+     0x110b9, 0x110ba; 0x110c2, 0x110c2; 0x110d0, 0x110e8; 0x110f0, 0x110f9; 0x11100, 0x11102;
+     0x11103, 0x11126; 0x11127, 0x1112b; 0x1112c, 0x1112c; 0x1112d, 0x11134; 0x11136, 0x1113f;
+     0x11144, 0x11144; 0x11145, 0x11146; 0x11147, 0x11147; 0x11150, 0x11172; 0x11173, 0x11173;
+     0x11176, 0x11176; 0x11180, 0x11181; 0x11182, 0x11182; 0x11183, 0x111b2; 0x111b3, 0x111b5;
+     0x111b6, 0x111be; 0x111bf, 0x111c0; 0x111c1, 0x111c4; 0x111c9, 0x111cc; 0x111ce, 0x111ce;
+     0x111cf, 0x111cf; 0x111d0, 0x111d9; 0x111da, 0x111da; 0x111dc, 0x111dc; 0x11200, 0x11211;
+     0x11213, 0x1122b; 0x1122c, 0x1122e; 0x1122f, 0x11231; 0x11232, 0x11233; 0x11234, 0x11234;
+     0x11235, 0x11235; 0x11236, 0x11237; 0x1123e, 0x1123e; 0x1123f, 0x11240; 0x11241, 0x11241;
+     0x11280, 0x11286; 0x11288, 0x11288; 0x1128a, 0x1128d; 0x1128f, 0x1129d; 0x1129f, 0x112a8;
+     0x112b0, 0x112de; 0x112df, 0x112df; 0x112e0, 0x112e2; 0x112e3, 0x112ea; 0x112f0, 0x112f9;
+     0x11300, 0x11301; 0x11302, 0x11303; 0x11305, 0x1130c; 0x1130f, 0x11310; 0x11313, 0x11328;
+     0x1132a, 0x11330; 0x11332, 0x11333; 0x11335, 0x11339; 0x1133b, 0x1133c; 0x1133d, 0x1133d;
+     0x1133e, 0x1133f; 0x11340, 0x11340; 0x11341, 0x11344; 0x11347, 0x11348; 0x1134b, 0x1134d;
+     0x11350, 0x11350; 0x11357, 0x11357; 0x1135d, 0x11361; 0x11362, 0x11363; 0x11366, 0x1136c;
+     0x11370, 0x11374; 0x11400, 0x11434; 0x11435, 0x11437; 0x11438, 0x1143f; 0x11440, 0x11441;
+     0x11442, 0x11444; 0x11445, 0x11445; 0x11446, 0x11446; 0x11447, 0x1144a; 0x11450, 0x11459;
+     0x1145e, 0x1145e; 0x1145f, 0x11461; 0x11480, 0x114af; 0x114b0, 0x114b2; 0x114b3, 0x114b8;
+     0x114b9, 0x114b9; 0x114ba, 0x114ba; 0x114bb, 0x114be; 0x114bf, 0x114c0; 0x114c1, 0x114c1;
+     0x114c2, 0x114c3; 0x114c4, 0x114c5; 0x114c7, 0x114c7; 0x114d0, 0x114d9; 0x11580, 0x115ae;
+     0x115af, 0x115b1; 0x115b2, 0x115b5; 0x115b8, 0x115bb; 0x115bc, 0x115bd; 0x115be, 0x115be;
+     0x115bf, 0x115c0; 0x115d8, 0x115db; 0x115dc, 0x115dd; 0x11600, 0x1162f; 0x11630, 0x11632;
+     0x11633, 0x1163a; 0x1163b, 0x1163c; 0x1163d, 0x1163d; 0x1163e, 0x1163e; 0x1163f, 0x11640;
+     0x11644, 0x11644; 0x11650, 0x11659; 0x11680, 0x116aa; 0x116ab, 0x116ab; 0x116ac, 0x116ac;
+     0x116ad, 0x116ad; 0x116ae, 0x116af; 0x116b0, 0x116b5; 0x116b6, 0x116b6; 0x116b7, 0x116b7;
+     0x116b8, 0x116b8; 0x116c0, 0x116c9; 0x11700, 0x1171a; 0x1171d, 0x1171f; 0x11720, 0x11721;
+     0x11722, 0x11725; 0x11726, 0x11726; 0x11727, 0x1172b; 0x11730, 0x11739; 0x11740, 0x11746;
+     0x11800, 0x1182b; 0x1182c, 0x1182e; 0x1182f, 0x11837; 0x11838, 0x11838; 0x11839, 0x1183a;
+     0x118a0, 0x118df; 0x118e0, 0x118e9; 0x118ff, 0x11906; 0x11909, 0x11909; 0x1190c, 0x11913;
+     0x11915, 0x11916; 0x11918, 0x1192f; 0x11930, 0x11935; 0x11937, 0x11938; 0x1193b, 0x1193c;
+     0x1193d, 0x1193d; 0x1193e, 0x1193e; 0x1193f, 0x1193f; 0x11940, 0x11940; 0x11941, 0x11941;
+     0x11942, 0x11942; 0x11943, 0x11943; 0x11950, 0x11959; 0x119a0, 0x119a7; 0x119aa, 0x119d0;
+     0x119d1, 0x119d3; 0x119d4, 0x119d7; 0x119da, 0x119db; 0x119dc, 0x119df; 0x119e0, 0x119e0;
+     0x119e1, 0x119e1; 0x119e3, 0x119e3; 0x119e4, 0x119e4; 0x11a00, 0x11a00; 0x11a01, 0x11a0a;
+     0x11a0b, 0x11a32; 0x11a33, 0x11a38; 0x11a39, 0x11a39; 0x11a3a, 0x11a3a; 0x11a3b, 0x11a3e;
+     0x11a47, 0x11a47; 0x11a50, 0x11a50; 0x11a51, 0x11a56; 0x11a57, 0x11a58; 0x11a59, 0x11a5b;
+     0x11a5c, 0x11a89; 0x11a8a, 0x11a96; 0x11a97, 0x11a97; 0x11a98, 0x11a99; 0x11a9d, 0x11a9d;
+     0x11ab0, 0x11af8; 0x11c00, 0x11c08; 0x11c0a, 0x11c2e; 0x11c2f, 0x11c2f; 0x11c30, 0x11c36;
+     0x11c38, 0x11c3d; 0x11c3e, 0x11c3e; 0x11c3f, 0x11c3f; 0x11c40, 0x11c40; 0x11c50, 0x11c59;
+     0x11c72, 0x11c8f; 0x11c92, 0x11ca7; 0x11ca9, 0x11ca9; 0x11caa, 0x11cb0; 0x11cb1, 0x11cb1;
+     0x11cb2, 0x11cb3; 0x11cb4, 0x11cb4; 0x11cb5, 0x11cb6; 0x11d00, 0x11d06; 0x11d08, 0x11d09;
+     0x11d0b, 0x11d30; 0x11d31, 0x11d36; 0x11d3a, 0x11d3a; 0x11d3c, 0x11d3d; 0x11d3f, 0x11d45;
+     0x11d46, 0x11d46; 0x11d47, 0x11d47; 0x11d50, 0x11d59; 0x11d60, 0x11d65; 0x11d67, 0x11d68;
+     0x11d6a, 0x11d89; 0x11d8a, 0x11d8e; 0x11d90, 0x11d91; 0x11d93, 0x11d94; 0x11d95, 0x11d95;
+     0x11d96, 0x11d96; 0x11d97, 0x11d97; 0x11d98, 0x11d98; 0x11da0, 0x11da9; 0x11ee0, 0x11ef2;
+     0x11ef3, 0x11ef4; 0x11ef5, 0x11ef6; 0x11f00, 0x11f01; 0x11f02, 0x11f02; 0x11f03, 0x11f03;
+     0x11f04, 0x11f10; 0x11f12, 0x11f33; 0x11f34, 0x11f35; 0x11f36, 0x11f3a; 0x11f3e, 0x11f3f;
+     0x11f40, 0x11f40; 0x11f41, 0x11f41; 0x11f42, 0x11f42; 0x11f50, 0x11f59; 0x11fb0, 0x11fb0;
+     0x12000, 0x12399; 0x12400, 0x1246e; 0x12480, 0x12543; 0x12f90, 0x12ff0; 0x13000, 0x1342f;
+     0x13440, 0x13440; 0x13441, 0x13446; 0x13447, 0x13455; 0x14400, 0x14646; 0x16800, 0x16a38;
+     0x16a40, 0x16a5e; 0x16a60, 0x16a69; 0x16a70, 0x16abe; 0x16ac0, 0x16ac9; 0x16ad0, 0x16aed;
+     0x16af0, 0x16af4; 0x16b00, 0x16b2f; 0x16b30, 0x16b36; 0x16b40, 0x16b43; 0x16b50, 0x16b59;
+     0x16b63, 0x16b77; 0x16b7d, 0x16b8f; 0x16e40, 0x16e7f; 0x16f00, 0x16f4a; 0x16f4f, 0x16f4f;
+     0x16f50, 0x16f50; 0x16f51, 0x16f87; 0x16f8f, 0x16f92; 0x16f93, 0x16f9f; 0x16fe0, 0x16fe1;
+     0x16fe3, 0x16fe3; 0x16fe4, 0x16fe4; 0x16ff0, 0x16ff1; 0x17000, 0x187f7; 0x18800, 0x18cd5;
+     0x18d00, 0x18d08; 0x1aff0, 0x1aff3; 0x1aff5, 0x1affb; 0x1affd, 0x1affe; 0x1b000, 0x1b122;
+     0x1b132, 0x1b132; 0x1b150, 0x1b152; 0x1b155, 0x1b155; 0x1b164, 0x1b167; 0x1b170, 0x1b2fb;
+     0x1bc00, 0x1bc6a; 0x1bc70, 0x1bc7c; 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99; 0x1bc9d, 0x1bc9e;
+     0x1cf00, 0x1cf2d; 0x1cf30, 0x1cf46; 0x1d165, 0x1d166; 0x1d167, 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; 0x1df00, 0x1df09; 0x1df0a, 0x1df0a; 0x1df0b, 0x1df1e; 0x1df25, 0x1df2a;
+     0x1e000, 0x1e006; 0x1e008, 0x1e018; 0x1e01b, 0x1e021; 0x1e023, 0x1e024; 0x1e026, 0x1e02a;
+     0x1e030, 0x1e06d; 0x1e08f, 0x1e08f; 0x1e100, 0x1e12c; 0x1e130, 0x1e136; 0x1e137, 0x1e13d;
+     0x1e140, 0x1e149; 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; 0x1e2ae, 0x1e2ae; 0x1e2c0, 0x1e2eb;
+     0x1e2ec, 0x1e2ef; 0x1e2f0, 0x1e2f9; 0x1e4d0, 0x1e4ea; 0x1e4eb, 0x1e4eb; 0x1e4ec, 0x1e4ef;
+     0x1e4f0, 0x1e4f9; 0x1e7e0, 0x1e7e6; 0x1e7e8, 0x1e7eb; 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe;
+     0x1e800, 0x1e8c4; 0x1e8d0, 0x1e8d6; 0x1e900, 0x1e943; 0x1e944, 0x1e94a; 0x1e94b, 0x1e94b;
+     0x1e950, 0x1e959; 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; 0x1fbf0, 0x1fbf9;
+     0x20000, 0x2a6df; 0x2a700, 0x2b739; 0x2b740, 0x2b81d; 0x2b820, 0x2cea1; 0x2ceb0, 0x2ebe0;
+     0xe0100, 0xe01ef; 0x31350, 0x323af; 0x30000, 0x3134a; 0x2f800, 0x2fa1d]
 
   let xid_start =
-    [
-      (0x41, 0x5a);
-      (0x61, 0x7a);
-      (0xaa, 0xaa);
-      (0xb5, 0xb5);
-      (0xba, 0xba);
-      (0xc0, 0xd6);
-      (0xd8, 0xf6);
-      (0xf8, 0x1ba);
-      (0x1bb, 0x1bb);
-      (0x1bc, 0x1bf);
-      (0x1c0, 0x1c3);
-      (0x1c4, 0x293);
-      (0x294, 0x294);
-      (0x295, 0x2af);
-      (0x2b0, 0x2c1);
-      (0x2c6, 0x2d1);
-      (0x2e0, 0x2e4);
-      (0x2ec, 0x2ec);
-      (0x2ee, 0x2ee);
-      (0x370, 0x373);
-      (0x374, 0x374);
-      (0x376, 0x377);
-      (0x37b, 0x37d);
-      (0x37f, 0x37f);
-      (0x386, 0x386);
-      (0x388, 0x38a);
-      (0x38c, 0x38c);
-      (0x38e, 0x3a1);
-      (0x3a3, 0x3f5);
-      (0x3f7, 0x481);
-      (0x48a, 0x52f);
-      (0x531, 0x556);
-      (0x559, 0x559);
-      (0x560, 0x588);
-      (0x5d0, 0x5ea);
-      (0x5ef, 0x5f2);
-      (0x620, 0x63f);
-      (0x640, 0x640);
-      (0x641, 0x64a);
-      (0x66e, 0x66f);
-      (0x671, 0x6d3);
-      (0x6d5, 0x6d5);
-      (0x6e5, 0x6e6);
-      (0x6ee, 0x6ef);
-      (0x6fa, 0x6fc);
-      (0x6ff, 0x6ff);
-      (0x710, 0x710);
-      (0x712, 0x72f);
-      (0x74d, 0x7a5);
-      (0x7b1, 0x7b1);
-      (0x7ca, 0x7ea);
-      (0x7f4, 0x7f5);
-      (0x7fa, 0x7fa);
-      (0x800, 0x815);
-      (0x81a, 0x81a);
-      (0x824, 0x824);
-      (0x828, 0x828);
-      (0x840, 0x858);
-      (0x860, 0x86a);
-      (0x870, 0x887);
-      (0x889, 0x88e);
-      (0x8a0, 0x8c8);
-      (0x8c9, 0x8c9);
-      (0x904, 0x939);
-      (0x93d, 0x93d);
-      (0x950, 0x950);
-      (0x958, 0x961);
-      (0x971, 0x971);
-      (0x972, 0x980);
-      (0x985, 0x98c);
-      (0x98f, 0x990);
-      (0x993, 0x9a8);
-      (0x9aa, 0x9b0);
-      (0x9b2, 0x9b2);
-      (0x9b6, 0x9b9);
-      (0x9bd, 0x9bd);
-      (0x9ce, 0x9ce);
-      (0x9dc, 0x9dd);
-      (0x9df, 0x9e1);
-      (0x9f0, 0x9f1);
-      (0x9fc, 0x9fc);
-      (0xa05, 0xa0a);
-      (0xa0f, 0xa10);
-      (0xa13, 0xa28);
-      (0xa2a, 0xa30);
-      (0xa32, 0xa33);
-      (0xa35, 0xa36);
-      (0xa38, 0xa39);
-      (0xa59, 0xa5c);
-      (0xa5e, 0xa5e);
-      (0xa72, 0xa74);
-      (0xa85, 0xa8d);
-      (0xa8f, 0xa91);
-      (0xa93, 0xaa8);
-      (0xaaa, 0xab0);
-      (0xab2, 0xab3);
-      (0xab5, 0xab9);
-      (0xabd, 0xabd);
-      (0xad0, 0xad0);
-      (0xae0, 0xae1);
-      (0xaf9, 0xaf9);
-      (0xb05, 0xb0c);
-      (0xb0f, 0xb10);
-      (0xb13, 0xb28);
-      (0xb2a, 0xb30);
-      (0xb32, 0xb33);
-      (0xb35, 0xb39);
-      (0xb3d, 0xb3d);
-      (0xb5c, 0xb5d);
-      (0xb5f, 0xb61);
-      (0xb71, 0xb71);
-      (0xb83, 0xb83);
-      (0xb85, 0xb8a);
-      (0xb8e, 0xb90);
-      (0xb92, 0xb95);
-      (0xb99, 0xb9a);
-      (0xb9c, 0xb9c);
-      (0xb9e, 0xb9f);
-      (0xba3, 0xba4);
-      (0xba8, 0xbaa);
-      (0xbae, 0xbb9);
-      (0xbd0, 0xbd0);
-      (0xc05, 0xc0c);
-      (0xc0e, 0xc10);
-      (0xc12, 0xc28);
-      (0xc2a, 0xc39);
-      (0xc3d, 0xc3d);
-      (0xc58, 0xc5a);
-      (0xc5d, 0xc5d);
-      (0xc60, 0xc61);
-      (0xc80, 0xc80);
-      (0xc85, 0xc8c);
-      (0xc8e, 0xc90);
-      (0xc92, 0xca8);
-      (0xcaa, 0xcb3);
-      (0xcb5, 0xcb9);
-      (0xcbd, 0xcbd);
-      (0xcdd, 0xcde);
-      (0xce0, 0xce1);
-      (0xcf1, 0xcf2);
-      (0xd04, 0xd0c);
-      (0xd0e, 0xd10);
-      (0xd12, 0xd3a);
-      (0xd3d, 0xd3d);
-      (0xd4e, 0xd4e);
-      (0xd54, 0xd56);
-      (0xd5f, 0xd61);
-      (0xd7a, 0xd7f);
-      (0xd85, 0xd96);
-      (0xd9a, 0xdb1);
-      (0xdb3, 0xdbb);
-      (0xdbd, 0xdbd);
-      (0xdc0, 0xdc6);
-      (0xe01, 0xe30);
-      (0xe32, 0xe32);
-      (0xe40, 0xe45);
-      (0xe46, 0xe46);
-      (0xe81, 0xe82);
-      (0xe84, 0xe84);
-      (0xe86, 0xe8a);
-      (0xe8c, 0xea3);
-      (0xea5, 0xea5);
-      (0xea7, 0xeb0);
-      (0xeb2, 0xeb2);
-      (0xebd, 0xebd);
-      (0xec0, 0xec4);
-      (0xec6, 0xec6);
-      (0xedc, 0xedf);
-      (0xf00, 0xf00);
-      (0xf40, 0xf47);
-      (0xf49, 0xf6c);
-      (0xf88, 0xf8c);
-      (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, 0x10fc);
-      (0x10fd, 0x10ff);
-      (0x1100, 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, 0x16f0);
-      (0x16f1, 0x16f8);
-      (0x1700, 0x1711);
-      (0x171f, 0x1731);
-      (0x1740, 0x1751);
-      (0x1760, 0x176c);
-      (0x176e, 0x1770);
-      (0x1780, 0x17b3);
-      (0x17d7, 0x17d7);
-      (0x17dc, 0x17dc);
-      (0x1820, 0x1842);
-      (0x1843, 0x1843);
-      (0x1844, 0x1878);
-      (0x1880, 0x1884);
-      (0x1885, 0x1886);
-      (0x1887, 0x18a8);
-      (0x18aa, 0x18aa);
-      (0x18b0, 0x18f5);
-      (0x1900, 0x191e);
-      (0x1950, 0x196d);
-      (0x1970, 0x1974);
-      (0x1980, 0x19ab);
-      (0x19b0, 0x19c9);
-      (0x1a00, 0x1a16);
-      (0x1a20, 0x1a54);
-      (0x1aa7, 0x1aa7);
-      (0x1b05, 0x1b33);
-      (0x1b45, 0x1b4c);
-      (0x1b83, 0x1ba0);
-      (0x1bae, 0x1baf);
-      (0x1bba, 0x1be5);
-      (0x1c00, 0x1c23);
-      (0x1c4d, 0x1c4f);
-      (0x1c5a, 0x1c77);
-      (0x1c78, 0x1c7d);
-      (0x1c80, 0x1c88);
-      (0x1c90, 0x1cba);
-      (0x1cbd, 0x1cbf);
-      (0x1ce9, 0x1cec);
-      (0x1cee, 0x1cf3);
-      (0x1cf5, 0x1cf6);
-      (0x1cfa, 0x1cfa);
-      (0x1d00, 0x1d2b);
-      (0x1d2c, 0x1d6a);
-      (0x1d6b, 0x1d77);
-      (0x1d78, 0x1d78);
-      (0x1d79, 0x1d9a);
-      (0x1d9b, 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, 0x2118);
-      (0x2119, 0x211d);
-      (0x2124, 0x2124);
-      (0x2126, 0x2126);
-      (0x2128, 0x2128);
-      (0x212a, 0x212d);
-      (0x212e, 0x212e);
-      (0x212f, 0x2134);
-      (0x2135, 0x2138);
-      (0x2139, 0x2139);
-      (0x213c, 0x213f);
-      (0x2145, 0x2149);
-      (0x214e, 0x214e);
-      (0x2160, 0x2182);
-      (0x2183, 0x2184);
-      (0x2185, 0x2188);
-      (0x2c00, 0x2c7b);
-      (0x2c7c, 0x2c7d);
-      (0x2c7e, 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, 0x3005);
-      (0x3006, 0x3006);
-      (0x3007, 0x3007);
-      (0x3021, 0x3029);
-      (0x3031, 0x3035);
-      (0x3038, 0x303a);
-      (0x303b, 0x303b);
-      (0x303c, 0x303c);
-      (0x3041, 0x3096);
-      (0x309d, 0x309e);
-      (0x309f, 0x309f);
-      (0x30a1, 0x30fa);
-      (0x30fc, 0x30fe);
-      (0x30ff, 0x30ff);
-      (0x3105, 0x312f);
-      (0x3131, 0x318e);
-      (0x31a0, 0x31bf);
-      (0x31f0, 0x31ff);
-      (0x3400, 0x4dbf);
-      (0x4e00, 0xa014);
-      (0xa015, 0xa015);
-      (0xa016, 0xa48c);
-      (0xa4d0, 0xa4f7);
-      (0xa4f8, 0xa4fd);
-      (0xa500, 0xa60b);
-      (0xa60c, 0xa60c);
-      (0xa610, 0xa61f);
-      (0xa62a, 0xa62b);
-      (0xa640, 0xa66d);
-      (0xa66e, 0xa66e);
-      (0xa67f, 0xa67f);
-      (0xa680, 0xa69b);
-      (0xa69c, 0xa69d);
-      (0xa6a0, 0xa6e5);
-      (0xa6e6, 0xa6ef);
-      (0xa717, 0xa71f);
-      (0xa722, 0xa76f);
-      (0xa770, 0xa770);
-      (0xa771, 0xa787);
-      (0xa788, 0xa788);
-      (0xa78b, 0xa78e);
-      (0xa78f, 0xa78f);
-      (0xa790, 0xa7ca);
-      (0xa7d0, 0xa7d1);
-      (0xa7d3, 0xa7d3);
-      (0xa7d5, 0xa7d9);
-      (0xa7f2, 0xa7f4);
-      (0xa7f5, 0xa7f6);
-      (0xa7f7, 0xa7f7);
-      (0xa7f8, 0xa7f9);
-      (0xa7fa, 0xa7fa);
-      (0xa7fb, 0xa801);
-      (0xa803, 0xa805);
-      (0xa807, 0xa80a);
-      (0xa80c, 0xa822);
-      (0xa840, 0xa873);
-      (0xa882, 0xa8b3);
-      (0xa8f2, 0xa8f7);
-      (0xa8fb, 0xa8fb);
-      (0xa8fd, 0xa8fe);
-      (0xa90a, 0xa925);
-      (0xa930, 0xa946);
-      (0xa960, 0xa97c);
-      (0xa984, 0xa9b2);
-      (0xa9cf, 0xa9cf);
-      (0xa9e0, 0xa9e4);
-      (0xa9e6, 0xa9e6);
-      (0xa9e7, 0xa9ef);
-      (0xa9fa, 0xa9fe);
-      (0xaa00, 0xaa28);
-      (0xaa40, 0xaa42);
-      (0xaa44, 0xaa4b);
-      (0xaa60, 0xaa6f);
-      (0xaa70, 0xaa70);
-      (0xaa71, 0xaa76);
-      (0xaa7a, 0xaa7a);
-      (0xaa7e, 0xaaaf);
-      (0xaab1, 0xaab1);
-      (0xaab5, 0xaab6);
-      (0xaab9, 0xaabd);
-      (0xaac0, 0xaac0);
-      (0xaac2, 0xaac2);
-      (0xaadb, 0xaadc);
-      (0xaadd, 0xaadd);
-      (0xaae0, 0xaaea);
-      (0xaaf2, 0xaaf2);
-      (0xaaf3, 0xaaf4);
-      (0xab01, 0xab06);
-      (0xab09, 0xab0e);
-      (0xab11, 0xab16);
-      (0xab20, 0xab26);
-      (0xab28, 0xab2e);
-      (0xab30, 0xab5a);
-      (0xab5c, 0xab5f);
-      (0xab60, 0xab68);
-      (0xab69, 0xab69);
-      (0xab70, 0xabbf);
-      (0xabc0, 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, 0xff6f);
-      (0xff70, 0xff70);
-      (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);
-      (0x10140, 0x10174);
-      (0x10280, 0x1029c);
-      (0x102a0, 0x102d0);
-      (0x10300, 0x1031f);
-      (0x1032d, 0x10340);
-      (0x10341, 0x10341);
-      (0x10342, 0x10349);
-      (0x1034a, 0x1034a);
-      (0x10350, 0x10375);
-      (0x10380, 0x1039d);
-      (0x103a0, 0x103c3);
-      (0x103c8, 0x103cf);
-      (0x103d1, 0x103d5);
-      (0x10400, 0x1044f);
-      (0x10450, 0x1049d);
-      (0x104b0, 0x104d3);
-      (0x104d8, 0x104fb);
-      (0x10500, 0x10527);
-      (0x10530, 0x10563);
-      (0x10570, 0x1057a);
-      (0x1057c, 0x1058a);
-      (0x1058c, 0x10592);
-      (0x10594, 0x10595);
-      (0x10597, 0x105a1);
-      (0x105a3, 0x105b1);
-      (0x105b3, 0x105b9);
-      (0x105bb, 0x105bc);
-      (0x10600, 0x10736);
-      (0x10740, 0x10755);
-      (0x10760, 0x10767);
-      (0x10780, 0x10785);
-      (0x10787, 0x107b0);
-      (0x107b2, 0x107ba);
-      (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, 0x10a35);
-      (0x10a60, 0x10a7c);
-      (0x10a80, 0x10a9c);
-      (0x10ac0, 0x10ac7);
-      (0x10ac9, 0x10ae4);
-      (0x10b00, 0x10b35);
-      (0x10b40, 0x10b55);
-      (0x10b60, 0x10b72);
-      (0x10b80, 0x10b91);
-      (0x10c00, 0x10c48);
-      (0x10c80, 0x10cb2);
-      (0x10cc0, 0x10cf2);
-      (0x10d00, 0x10d23);
-      (0x10e80, 0x10ea9);
-      (0x10eb0, 0x10eb1);
-      (0x10f00, 0x10f1c);
-      (0x10f27, 0x10f27);
-      (0x10f30, 0x10f45);
-      (0x10f70, 0x10f81);
-      (0x10fb0, 0x10fc4);
-      (0x10fe0, 0x10ff6);
-      (0x11003, 0x11037);
-      (0x11071, 0x11072);
-      (0x11075, 0x11075);
-      (0x11083, 0x110af);
-      (0x110d0, 0x110e8);
-      (0x11103, 0x11126);
-      (0x11144, 0x11144);
-      (0x11147, 0x11147);
-      (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);
-      (0x11400, 0x11434);
-      (0x11447, 0x1144a);
-      (0x1145f, 0x11461);
-      (0x11480, 0x114af);
-      (0x114c4, 0x114c5);
-      (0x114c7, 0x114c7);
-      (0x11580, 0x115ae);
-      (0x115d8, 0x115db);
-      (0x11600, 0x1162f);
-      (0x11644, 0x11644);
-      (0x11680, 0x116aa);
-      (0x116b8, 0x116b8);
-      (0x11700, 0x1171a);
-      (0x11740, 0x11746);
-      (0x11800, 0x1182b);
-      (0x118a0, 0x118df);
-      (0x118ff, 0x11906);
-      (0x11909, 0x11909);
-      (0x1190c, 0x11913);
-      (0x11915, 0x11916);
-      (0x11918, 0x1192f);
-      (0x1193f, 0x1193f);
-      (0x11941, 0x11941);
-      (0x119a0, 0x119a7);
-      (0x119aa, 0x119d0);
-      (0x119e1, 0x119e1);
-      (0x119e3, 0x119e3);
-      (0x11a00, 0x11a00);
-      (0x11a0b, 0x11a32);
-      (0x11a3a, 0x11a3a);
-      (0x11a50, 0x11a50);
-      (0x11a5c, 0x11a89);
-      (0x11a9d, 0x11a9d);
-      (0x11ab0, 0x11af8);
-      (0x11c00, 0x11c08);
-      (0x11c0a, 0x11c2e);
-      (0x11c40, 0x11c40);
-      (0x11c72, 0x11c8f);
-      (0x11d00, 0x11d06);
-      (0x11d08, 0x11d09);
-      (0x11d0b, 0x11d30);
-      (0x11d46, 0x11d46);
-      (0x11d60, 0x11d65);
-      (0x11d67, 0x11d68);
-      (0x11d6a, 0x11d89);
-      (0x11d98, 0x11d98);
-      (0x11ee0, 0x11ef2);
-      (0x11fb0, 0x11fb0);
-      (0x12000, 0x12399);
-      (0x12400, 0x1246e);
-      (0x12480, 0x12543);
-      (0x12f90, 0x12ff0);
-      (0x13000, 0x1342e);
-      (0x14400, 0x14646);
-      (0x16800, 0x16a38);
-      (0x16a40, 0x16a5e);
-      (0x16a70, 0x16abe);
-      (0x16ad0, 0x16aed);
-      (0x16b00, 0x16b2f);
-      (0x16b40, 0x16b43);
-      (0x16b63, 0x16b77);
-      (0x16b7d, 0x16b8f);
-      (0x16e40, 0x16e7f);
-      (0x16f00, 0x16f4a);
-      (0x16f50, 0x16f50);
-      (0x16f93, 0x16f9f);
-      (0x16fe0, 0x16fe1);
-      (0x16fe3, 0x16fe3);
-      (0x17000, 0x187f7);
-      (0x18800, 0x18cd5);
-      (0x18d00, 0x18d08);
-      (0x1aff0, 0x1aff3);
-      (0x1aff5, 0x1affb);
-      (0x1affd, 0x1affe);
-      (0x1b000, 0x1b122);
-      (0x1b150, 0x1b152);
-      (0x1b164, 0x1b167);
-      (0x1b170, 0x1b2fb);
-      (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);
-      (0x1df00, 0x1df09);
-      (0x1df0a, 0x1df0a);
-      (0x1df0b, 0x1df1e);
-      (0x1e100, 0x1e12c);
-      (0x1e137, 0x1e13d);
-      (0x1e14e, 0x1e14e);
-      (0x1e290, 0x1e2ad);
-      (0x1e2c0, 0x1e2eb);
-      (0x1e7e0, 0x1e7e6);
-      (0x1e7e8, 0x1e7eb);
-      (0x1e7ed, 0x1e7ee);
-      (0x1e7f0, 0x1e7fe);
-      (0x1e800, 0x1e8c4);
-      (0x1e900, 0x1e943);
-      (0x1e94b, 0x1e94b);
-      (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, 0x2a6df);
-      (0x2a700, 0x2b738);
-      (0x30000, 0x3134a);
-      (0x2f800, 0x2fa1d);
-      (0x2ceb0, 0x2ebe0);
-      (0x2b820, 0x2cea1);
-      (0x2b740, 0x2b81d);
-    ]
+    [0x41, 0x5a; 0x61, 0x7a; 0xaa, 0xaa; 0xb5, 0xb5; 0xba, 0xba;
+     0xc0, 0xd6; 0xd8, 0xf6; 0xf8, 0x1ba; 0x1bb, 0x1bb; 0x1bc, 0x1bf;
+     0x1c0, 0x1c3; 0x1c4, 0x293; 0x294, 0x294; 0x295, 0x2af; 0x2b0, 0x2c1;
+     0x2c6, 0x2d1; 0x2e0, 0x2e4; 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x370, 0x373;
+     0x374, 0x374; 0x376, 0x377; 0x37b, 0x37d; 0x37f, 0x37f; 0x386, 0x386;
+     0x388, 0x38a; 0x38c, 0x38c; 0x38e, 0x3a1; 0x3a3, 0x3f5; 0x3f7, 0x481;
+     0x48a, 0x52f; 0x531, 0x556; 0x559, 0x559; 0x560, 0x588; 0x5d0, 0x5ea;
+     0x5ef, 0x5f2; 0x620, 0x63f; 0x640, 0x640; 0x641, 0x64a; 0x66e, 0x66f;
+     0x671, 0x6d3; 0x6d5, 0x6d5; 0x6e5, 0x6e6; 0x6ee, 0x6ef; 0x6fa, 0x6fc;
+     0x6ff, 0x6ff; 0x710, 0x710; 0x712, 0x72f; 0x74d, 0x7a5; 0x7b1, 0x7b1;
+     0x7ca, 0x7ea; 0x7f4, 0x7f5; 0x7fa, 0x7fa; 0x800, 0x815; 0x81a, 0x81a;
+     0x824, 0x824; 0x828, 0x828; 0x840, 0x858; 0x860, 0x86a; 0x870, 0x887;
+     0x889, 0x88e; 0x8a0, 0x8c8; 0x8c9, 0x8c9; 0x904, 0x939; 0x93d, 0x93d;
+     0x950, 0x950; 0x958, 0x961; 0x971, 0x971; 0x972, 0x980; 0x985, 0x98c;
+     0x98f, 0x990; 0x993, 0x9a8; 0x9aa, 0x9b0; 0x9b2, 0x9b2; 0x9b6, 0x9b9;
+     0x9bd, 0x9bd; 0x9ce, 0x9ce; 0x9dc, 0x9dd; 0x9df, 0x9e1; 0x9f0, 0x9f1;
+     0x9fc, 0x9fc; 0xa05, 0xa0a; 0xa0f, 0xa10; 0xa13, 0xa28; 0xa2a, 0xa30;
+     0xa32, 0xa33; 0xa35, 0xa36; 0xa38, 0xa39; 0xa59, 0xa5c; 0xa5e, 0xa5e;
+     0xa72, 0xa74; 0xa85, 0xa8d; 0xa8f, 0xa91; 0xa93, 0xaa8; 0xaaa, 0xab0;
+     0xab2, 0xab3; 0xab5, 0xab9; 0xabd, 0xabd; 0xad0, 0xad0; 0xae0, 0xae1;
+     0xaf9, 0xaf9; 0xb05, 0xb0c; 0xb0f, 0xb10; 0xb13, 0xb28; 0xb2a, 0xb30;
+     0xb32, 0xb33; 0xb35, 0xb39; 0xb3d, 0xb3d; 0xb5c, 0xb5d; 0xb5f, 0xb61;
+     0xb71, 0xb71; 0xb83, 0xb83; 0xb85, 0xb8a; 0xb8e, 0xb90; 0xb92, 0xb95;
+     0xb99, 0xb9a; 0xb9c, 0xb9c; 0xb9e, 0xb9f; 0xba3, 0xba4; 0xba8, 0xbaa;
+     0xbae, 0xbb9; 0xbd0, 0xbd0; 0xc05, 0xc0c; 0xc0e, 0xc10; 0xc12, 0xc28;
+     0xc2a, 0xc39; 0xc3d, 0xc3d; 0xc58, 0xc5a; 0xc5d, 0xc5d; 0xc60, 0xc61;
+     0xc80, 0xc80; 0xc85, 0xc8c; 0xc8e, 0xc90; 0xc92, 0xca8; 0xcaa, 0xcb3;
+     0xcb5, 0xcb9; 0xcbd, 0xcbd; 0xcdd, 0xcde; 0xce0, 0xce1; 0xcf1, 0xcf2;
+     0xd04, 0xd0c; 0xd0e, 0xd10; 0xd12, 0xd3a; 0xd3d, 0xd3d; 0xd4e, 0xd4e;
+     0xd54, 0xd56; 0xd5f, 0xd61; 0xd7a, 0xd7f; 0xd85, 0xd96; 0xd9a, 0xdb1;
+     0xdb3, 0xdbb; 0xdbd, 0xdbd; 0xdc0, 0xdc6; 0xe01, 0xe30; 0xe32, 0xe32;
+     0xe40, 0xe45; 0xe46, 0xe46; 0xe81, 0xe82; 0xe84, 0xe84; 0xe86, 0xe8a;
+     0xe8c, 0xea3; 0xea5, 0xea5; 0xea7, 0xeb0; 0xeb2, 0xeb2; 0xebd, 0xebd;
+     0xec0, 0xec4; 0xec6, 0xec6; 0xedc, 0xedf; 0xf00, 0xf00; 0xf40, 0xf47;
+     0xf49, 0xf6c; 0xf88, 0xf8c; 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, 0x10fc; 0x10fd, 0x10ff; 0x1100, 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, 0x16f0; 0x16f1, 0x16f8; 0x1700, 0x1711; 0x171f, 0x1731; 0x1740, 0x1751;
+     0x1760, 0x176c; 0x176e, 0x1770; 0x1780, 0x17b3; 0x17d7, 0x17d7; 0x17dc, 0x17dc;
+     0x1820, 0x1842; 0x1843, 0x1843; 0x1844, 0x1878; 0x1880, 0x1884; 0x1885, 0x1886;
+     0x1887, 0x18a8; 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e; 0x1950, 0x196d;
+     0x1970, 0x1974; 0x1980, 0x19ab; 0x19b0, 0x19c9; 0x1a00, 0x1a16; 0x1a20, 0x1a54;
+     0x1aa7, 0x1aa7; 0x1b05, 0x1b33; 0x1b45, 0x1b4c; 0x1b83, 0x1ba0; 0x1bae, 0x1baf;
+     0x1bba, 0x1be5; 0x1c00, 0x1c23; 0x1c4d, 0x1c4f; 0x1c5a, 0x1c77; 0x1c78, 0x1c7d;
+     0x1c80, 0x1c88; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1ce9, 0x1cec; 0x1cee, 0x1cf3;
+     0x1cf5, 0x1cf6; 0x1cfa, 0x1cfa; 0x1d00, 0x1d2b; 0x1d2c, 0x1d6a; 0x1d6b, 0x1d77;
+     0x1d78, 0x1d78; 0x1d79, 0x1d9a; 0x1d9b, 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, 0x2118;
+     0x2119, 0x211d; 0x2124, 0x2124; 0x2126, 0x2126; 0x2128, 0x2128; 0x212a, 0x212d;
+     0x212e, 0x212e; 0x212f, 0x2134; 0x2135, 0x2138; 0x2139, 0x2139; 0x213c, 0x213f;
+     0x2145, 0x2149; 0x214e, 0x214e; 0x2160, 0x2182; 0x2183, 0x2184; 0x2185, 0x2188;
+     0x2c00, 0x2c7b; 0x2c7c, 0x2c7d; 0x2c7e, 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, 0x3005;
+     0x3006, 0x3006; 0x3007, 0x3007; 0x3021, 0x3029; 0x3031, 0x3035; 0x3038, 0x303a;
+     0x303b, 0x303b; 0x303c, 0x303c; 0x3041, 0x3096; 0x309d, 0x309e; 0x309f, 0x309f;
+     0x30a1, 0x30fa; 0x30fc, 0x30fe; 0x30ff, 0x30ff; 0x3105, 0x312f; 0x3131, 0x318e;
+     0x31a0, 0x31bf; 0x31f0, 0x31ff; 0x3400, 0x4dbf; 0x4e00, 0xa014; 0xa015, 0xa015;
+     0xa016, 0xa48c; 0xa4d0, 0xa4f7; 0xa4f8, 0xa4fd; 0xa500, 0xa60b; 0xa60c, 0xa60c;
+     0xa610, 0xa61f; 0xa62a, 0xa62b; 0xa640, 0xa66d; 0xa66e, 0xa66e; 0xa67f, 0xa67f;
+     0xa680, 0xa69b; 0xa69c, 0xa69d; 0xa6a0, 0xa6e5; 0xa6e6, 0xa6ef; 0xa717, 0xa71f;
+     0xa722, 0xa76f; 0xa770, 0xa770; 0xa771, 0xa787; 0xa788, 0xa788; 0xa78b, 0xa78e;
+     0xa78f, 0xa78f; 0xa790, 0xa7ca; 0xa7d0, 0xa7d1; 0xa7d3, 0xa7d3; 0xa7d5, 0xa7d9;
+     0xa7f2, 0xa7f4; 0xa7f5, 0xa7f6; 0xa7f7, 0xa7f7; 0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa;
+     0xa7fb, 0xa801; 0xa803, 0xa805; 0xa807, 0xa80a; 0xa80c, 0xa822; 0xa840, 0xa873;
+     0xa882, 0xa8b3; 0xa8f2, 0xa8f7; 0xa8fb, 0xa8fb; 0xa8fd, 0xa8fe; 0xa90a, 0xa925;
+     0xa930, 0xa946; 0xa960, 0xa97c; 0xa984, 0xa9b2; 0xa9cf, 0xa9cf; 0xa9e0, 0xa9e4;
+     0xa9e6, 0xa9e6; 0xa9e7, 0xa9ef; 0xa9fa, 0xa9fe; 0xaa00, 0xaa28; 0xaa40, 0xaa42;
+     0xaa44, 0xaa4b; 0xaa60, 0xaa6f; 0xaa70, 0xaa70; 0xaa71, 0xaa76; 0xaa7a, 0xaa7a;
+     0xaa7e, 0xaaaf; 0xaab1, 0xaab1; 0xaab5, 0xaab6; 0xaab9, 0xaabd; 0xaac0, 0xaac0;
+     0xaac2, 0xaac2; 0xaadb, 0xaadc; 0xaadd, 0xaadd; 0xaae0, 0xaaea; 0xaaf2, 0xaaf2;
+     0xaaf3, 0xaaf4; 0xab01, 0xab06; 0xab09, 0xab0e; 0xab11, 0xab16; 0xab20, 0xab26;
+     0xab28, 0xab2e; 0xab30, 0xab5a; 0xab5c, 0xab5f; 0xab60, 0xab68; 0xab69, 0xab69;
+     0xab70, 0xabbf; 0xabc0, 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, 0xff6f; 0xff70, 0xff70; 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; 0x10140, 0x10174; 0x10280, 0x1029c; 0x102a0, 0x102d0; 0x10300, 0x1031f;
+     0x1032d, 0x10340; 0x10341, 0x10341; 0x10342, 0x10349; 0x1034a, 0x1034a; 0x10350, 0x10375;
+     0x10380, 0x1039d; 0x103a0, 0x103c3; 0x103c8, 0x103cf; 0x103d1, 0x103d5; 0x10400, 0x1044f;
+     0x10450, 0x1049d; 0x104b0, 0x104d3; 0x104d8, 0x104fb; 0x10500, 0x10527; 0x10530, 0x10563;
+     0x10570, 0x1057a; 0x1057c, 0x1058a; 0x1058c, 0x10592; 0x10594, 0x10595; 0x10597, 0x105a1;
+     0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc; 0x10600, 0x10736; 0x10740, 0x10755;
+     0x10760, 0x10767; 0x10780, 0x10785; 0x10787, 0x107b0; 0x107b2, 0x107ba; 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, 0x10a35; 0x10a60, 0x10a7c; 0x10a80, 0x10a9c; 0x10ac0, 0x10ac7;
+     0x10ac9, 0x10ae4; 0x10b00, 0x10b35; 0x10b40, 0x10b55; 0x10b60, 0x10b72; 0x10b80, 0x10b91;
+     0x10c00, 0x10c48; 0x10c80, 0x10cb2; 0x10cc0, 0x10cf2; 0x10d00, 0x10d23; 0x10e80, 0x10ea9;
+     0x10eb0, 0x10eb1; 0x10f00, 0x10f1c; 0x10f27, 0x10f27; 0x10f30, 0x10f45; 0x10f70, 0x10f81;
+     0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; 0x11003, 0x11037; 0x11071, 0x11072; 0x11075, 0x11075;
+     0x11083, 0x110af; 0x110d0, 0x110e8; 0x11103, 0x11126; 0x11144, 0x11144; 0x11147, 0x11147;
+     0x11150, 0x11172; 0x11176, 0x11176; 0x11183, 0x111b2; 0x111c1, 0x111c4; 0x111da, 0x111da;
+     0x111dc, 0x111dc; 0x11200, 0x11211; 0x11213, 0x1122b; 0x1123f, 0x11240; 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; 0x11400, 0x11434;
+     0x11447, 0x1144a; 0x1145f, 0x11461; 0x11480, 0x114af; 0x114c4, 0x114c5; 0x114c7, 0x114c7;
+     0x11580, 0x115ae; 0x115d8, 0x115db; 0x11600, 0x1162f; 0x11644, 0x11644; 0x11680, 0x116aa;
+     0x116b8, 0x116b8; 0x11700, 0x1171a; 0x11740, 0x11746; 0x11800, 0x1182b; 0x118a0, 0x118df;
+     0x118ff, 0x11906; 0x11909, 0x11909; 0x1190c, 0x11913; 0x11915, 0x11916; 0x11918, 0x1192f;
+     0x1193f, 0x1193f; 0x11941, 0x11941; 0x119a0, 0x119a7; 0x119aa, 0x119d0; 0x119e1, 0x119e1;
+     0x119e3, 0x119e3; 0x11a00, 0x11a00; 0x11a0b, 0x11a32; 0x11a3a, 0x11a3a; 0x11a50, 0x11a50;
+     0x11a5c, 0x11a89; 0x11a9d, 0x11a9d; 0x11ab0, 0x11af8; 0x11c00, 0x11c08; 0x11c0a, 0x11c2e;
+     0x11c40, 0x11c40; 0x11c72, 0x11c8f; 0x11d00, 0x11d06; 0x11d08, 0x11d09; 0x11d0b, 0x11d30;
+     0x11d46, 0x11d46; 0x11d60, 0x11d65; 0x11d67, 0x11d68; 0x11d6a, 0x11d89; 0x11d98, 0x11d98;
+     0x11ee0, 0x11ef2; 0x11f02, 0x11f02; 0x11f04, 0x11f10; 0x11f12, 0x11f33; 0x11fb0, 0x11fb0;
+     0x12000, 0x12399; 0x12400, 0x1246e; 0x12480, 0x12543; 0x12f90, 0x12ff0; 0x13000, 0x1342f;
+     0x13441, 0x13446; 0x14400, 0x14646; 0x16800, 0x16a38; 0x16a40, 0x16a5e; 0x16a70, 0x16abe;
+     0x16ad0, 0x16aed; 0x16b00, 0x16b2f; 0x16b40, 0x16b43; 0x16b63, 0x16b77; 0x16b7d, 0x16b8f;
+     0x16e40, 0x16e7f; 0x16f00, 0x16f4a; 0x16f50, 0x16f50; 0x16f93, 0x16f9f; 0x16fe0, 0x16fe1;
+     0x16fe3, 0x16fe3; 0x17000, 0x187f7; 0x18800, 0x18cd5; 0x18d00, 0x18d08; 0x1aff0, 0x1aff3;
+     0x1aff5, 0x1affb; 0x1affd, 0x1affe; 0x1b000, 0x1b122; 0x1b132, 0x1b132; 0x1b150, 0x1b152;
+     0x1b155, 0x1b155; 0x1b164, 0x1b167; 0x1b170, 0x1b2fb; 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; 0x1df00, 0x1df09; 0x1df0a, 0x1df0a; 0x1df0b, 0x1df1e;
+     0x1df25, 0x1df2a; 0x1e030, 0x1e06d; 0x1e100, 0x1e12c; 0x1e137, 0x1e13d; 0x1e14e, 0x1e14e;
+     0x1e290, 0x1e2ad; 0x1e2c0, 0x1e2eb; 0x1e4d0, 0x1e4ea; 0x1e4eb, 0x1e4eb; 0x1e7e0, 0x1e7e6;
+     0x1e7e8, 0x1e7eb; 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe; 0x1e800, 0x1e8c4; 0x1e900, 0x1e943;
+     0x1e94b, 0x1e94b; 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, 0x2a6df;
+     0x2a700, 0x2b739; 0x2b740, 0x2b81d; 0x2b820, 0x2cea1; 0x2ceb0, 0x2ebe0; 0x2f800, 0x2fa1d;
+     0x31350, 0x323af; 0x30000, 0x3134a]
+
+  let list = [
+    ("alphabetic", alphabetic);
+    ("ascii_hex_digit", ascii_hex_digit);
+    ("hex_digit", hex_digit);
+    ("id_continue", id_continue);
+    ("id_start", id_start);
+    ("lowercase", lowercase);
+    ("math", math);
+    ("other_alphabetic", other_alphabetic);
+    ("other_lowercase", other_lowercase);
+    ("other_math", other_math);
+    ("other_uppercase", other_uppercase);
+    ("uppercase", uppercase);
+    ("white_space", white_space);
+    ("xid_continue", xid_continue);
+    ("xid_start", xid_start)
+  ]
 
-  let list =
-    [
-      ("alphabetic", alphabetic);
-      ("ascii_hex_digit", ascii_hex_digit);
-      ("hex_digit", hex_digit);
-      ("id_continue", id_continue);
-      ("id_start", id_start);
-      ("lowercase", lowercase);
-      ("math", math);
-      ("other_alphabetic", other_alphabetic);
-      ("other_lowercase", other_lowercase);
-      ("other_math", other_math);
-      ("other_uppercase", other_uppercase);
-      ("uppercase", uppercase);
-      ("white_space", white_space);
-      ("xid_continue", xid_continue);
-      ("xid_start", xid_start);
-    ]
 end
diff --git a/test/basic.ml b/test/basic.ml
new file mode 100644
index 0000000..d1a49d4
--- /dev/null
+++ b/test/basic.ml
@@ -0,0 +1,496 @@
+let digit = [%sedlex.regexp? '0' .. '9']
+let number = [%sedlex.regexp? Plus digit]
+
+let rec token buf =
+  match%sedlex buf with
+    | number ->
+        Printf.printf "Number %s\n" (Sedlexing.Utf8.lexeme buf);
+        token buf
+    | id_start, Star id_continue ->
+        Printf.printf "Ident %s\n" (Sedlexing.Utf8.lexeme buf);
+        token buf
+    | Plus xml_blank -> token buf
+    | Plus (Chars "+*-/") ->
+        Printf.printf "Op %s\n" (Sedlexing.Utf8.lexeme buf);
+        token buf
+    | eof -> print_endline "EOF"
+    | any ->
+        Printf.printf "Any %s\n" (Sedlexing.Utf8.lexeme buf);
+        token buf
+    | _ -> assert false
+
+let utf16_of_utf8 ?(endian = Sedlexing.Utf16.Big_endian) s =
+  let b = Buffer.create (String.length s * 4) in
+  let rec loop pos =
+    if pos >= String.length s then ()
+    else (
+      let c = String.get_utf_8_uchar s pos in
+      let u = Uchar.utf_decode_uchar c in
+      (match endian with
+        | Big_endian -> Buffer.add_utf_16be_uchar b u
+        | Little_endian -> Buffer.add_utf_16le_uchar b u);
+      loop (pos + Uchar.utf_decode_length c))
+  in
+  loop 0;
+  Buffer.contents b
+
+let remove_last s n = String.sub s 0 (String.length s - n)
+
+let gen_from_string s =
+  let i = ref 0 in
+  fun () ->
+    if !i >= String.length s then None
+    else (
+      let c = String.get s !i in
+      incr i;
+      Some c)
+
+let channel_from_string s =
+  let name, oc = Filename.open_temp_file "" "" in
+  output_string oc s;
+  close_out oc;
+  open_in_bin name
+
+let test_latin s f =
+  print_endline "== from_string ==";
+  (try f (Sedlexing.Latin1.from_string s)
+   with Sedlexing.MalFormed -> print_endline "MalFormed");
+  print_endline "== from_gen ==";
+  (try f (Sedlexing.Latin1.from_gen (gen_from_string s))
+   with Sedlexing.MalFormed -> print_endline "MalFormed");
+  print_endline "== from_channel ==";
+  try f (Sedlexing.Latin1.from_channel (channel_from_string s))
+  with Sedlexing.MalFormed -> print_endline "MalFormed"
+
+let test_utf8 s f =
+  print_endline "== from_string ==";
+  (try f (Sedlexing.Utf8.from_string s)
+   with Sedlexing.MalFormed -> print_endline "MalFormed");
+  print_endline "== from_gen ==";
+  (try f (Sedlexing.Utf8.from_gen (gen_from_string s))
+   with Sedlexing.MalFormed -> print_endline "MalFormed");
+  print_endline "== from_channel ==";
+  try f (Sedlexing.Utf8.from_channel (channel_from_string s))
+  with Sedlexing.MalFormed -> print_endline "MalFormed"
+
+let test_utf16 s bo f =
+  print_endline "== from_string ==";
+  (try f (Sedlexing.Utf16.from_string s bo)
+   with Sedlexing.MalFormed -> print_endline "MalFormed");
+  print_endline "== from_gen ==";
+  (try f (Sedlexing.Utf16.from_gen (gen_from_string s) bo)
+   with Sedlexing.MalFormed -> print_endline "MalFormed");
+  print_endline "== from_channel ==";
+  try f (Sedlexing.Utf16.from_channel (channel_from_string s) bo)
+  with Sedlexing.MalFormed -> print_endline "MalFormed"
+
+let%expect_test "latin1" =
+  let s = "asas 123 + 2asd" in
+  test_latin s (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Ident asd
+    EOF
+    == from_gen ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Ident asd
+    EOF
+    == from_channel ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Ident asd
+    EOF |}];
+  let s = "asas 123 + 2\129" in
+  test_latin s (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Any 
+    EOF
+    == from_gen ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Any 
+    EOF
+    == from_channel ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Any 
+    EOF |}]
+
+let%expect_test "utf8" =
+  let s = "asas 123 + 2asd" in
+  test_utf8 s (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Ident asd
+    EOF
+    == from_gen ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Ident asd
+    EOF
+    == from_channel ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Ident asd
+    EOF |}];
+  let s = "asas 123 + 2\129" in
+  test_utf8 s (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    MalFormed
+    == from_gen ==
+    MalFormed
+    == from_channel ==
+    MalFormed |}]
+
+let%expect_test "utf16" =
+  let bo = None in
+  let s = utf16_of_utf8 "asas 123 + 2asd" in
+  test_utf16 s bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Ident asd
+    EOF
+    == from_gen ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Ident asd
+    EOF
+    == from_channel ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Ident asd
+    EOF |}];
+  let s = utf16_of_utf8 "asas 123 + 2" ^ "a" in
+  test_utf16 s bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    MalFormed
+    == from_gen ==
+    MalFormed
+    == from_channel ==
+    Ident asas
+    Number 123
+    Op +
+    MalFormed |}];
+  let s1 = "12asd12\u{1F6F3}" in
+  let s = utf16_of_utf8 s1 in
+  test_utf16 s bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    Number 12
+    Ident asd12
+    Any πŸ›³
+    EOF
+    == from_gen ==
+    Number 12
+    Ident asd12
+    Any πŸ›³
+    EOF
+    == from_channel ==
+    Number 12
+    Ident asd12
+    Any πŸ›³
+    EOF |}];
+  test_utf16 (remove_last s 1) bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    MalFormed
+    == from_gen ==
+    MalFormed
+    == from_channel ==
+    Number 12
+    MalFormed |}];
+  test_utf16 (remove_last s 2) bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    MalFormed
+    == from_gen ==
+    MalFormed
+    == from_channel ==
+    Number 12
+    MalFormed |}];
+  test_utf16 (remove_last s 3) bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    MalFormed
+    == from_gen ==
+    MalFormed
+    == from_channel ==
+    Number 12
+    MalFormed |}];
+  test_utf16 (remove_last s 4) bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    Number 12
+    Ident asd12
+    EOF
+    == from_gen ==
+    Number 12
+    Ident asd12
+    EOF
+    == from_channel ==
+    Number 12
+    Ident asd12
+    EOF |}]
+
+let%expect_test "utf16-be" =
+  let endian = Sedlexing.Utf16.Big_endian in
+  let utf16_of_utf8 = utf16_of_utf8 ~endian in
+  let bo = Some endian in
+  let s = utf16_of_utf8 "asas 123 + 2asd" in
+  test_utf16 s bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Ident asd
+    EOF
+    == from_gen ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Ident asd
+    EOF
+    == from_channel ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Ident asd
+    EOF |}];
+  let s = utf16_of_utf8 "asas 123 + 2" ^ "a" in
+  test_utf16 s bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    MalFormed
+    == from_gen ==
+    MalFormed
+    == from_channel ==
+    Ident asas
+    Number 123
+    Op +
+    MalFormed |}];
+  let s1 = "12asd12\u{1F6F3}" in
+  let s = utf16_of_utf8 s1 in
+  test_utf16 s bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    Number 12
+    Ident asd12
+    Any πŸ›³
+    EOF
+    == from_gen ==
+    Number 12
+    Ident asd12
+    Any πŸ›³
+    EOF
+    == from_channel ==
+    Number 12
+    Ident asd12
+    Any πŸ›³
+    EOF |}];
+  test_utf16 (remove_last s 1) bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    MalFormed
+    == from_gen ==
+    MalFormed
+    == from_channel ==
+    Number 12
+    MalFormed |}];
+  test_utf16 (remove_last s 2) bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    MalFormed
+    == from_gen ==
+    MalFormed
+    == from_channel ==
+    Number 12
+    MalFormed |}];
+  test_utf16 (remove_last s 3) bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    MalFormed
+    == from_gen ==
+    MalFormed
+    == from_channel ==
+    Number 12
+    MalFormed |}];
+  test_utf16 (remove_last s 4) bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    Number 12
+    Ident asd12
+    EOF
+    == from_gen ==
+    Number 12
+    Ident asd12
+    EOF
+    == from_channel ==
+    Number 12
+    Ident asd12
+    EOF |}]
+
+let%expect_test "utf16-le" =
+  let endian = Sedlexing.Utf16.Little_endian in
+  let utf16_of_utf8 = utf16_of_utf8 ~endian in
+  let bo = Some endian in
+  let s = utf16_of_utf8 "asas 123 + 2asd" in
+  test_utf16 s bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Ident asd
+    EOF
+    == from_gen ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Ident asd
+    EOF
+    == from_channel ==
+    Ident asas
+    Number 123
+    Op +
+    Number 2
+    Ident asd
+    EOF |}];
+  let s = utf16_of_utf8 "asas 123 + 2" ^ "a" in
+  test_utf16 s bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    MalFormed
+    == from_gen ==
+    MalFormed
+    == from_channel ==
+    Ident asas
+    Number 123
+    Op +
+    MalFormed |}];
+  let s1 = "12asd12\u{1F6F3}" in
+  let s = utf16_of_utf8 s1 in
+  test_utf16 s bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    Number 12
+    Ident asd12
+    Any πŸ›³
+    EOF
+    == from_gen ==
+    Number 12
+    Ident asd12
+    Any πŸ›³
+    EOF
+    == from_channel ==
+    Number 12
+    Ident asd12
+    Any πŸ›³
+    EOF |}];
+  test_utf16 (remove_last s 1) bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    MalFormed
+    == from_gen ==
+    MalFormed
+    == from_channel ==
+    Number 12
+    MalFormed |}];
+  test_utf16 (remove_last s 2) bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    MalFormed
+    == from_gen ==
+    MalFormed
+    == from_channel ==
+    Number 12
+    MalFormed |}];
+  test_utf16 (remove_last s 3) bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    MalFormed
+    == from_gen ==
+    MalFormed
+    == from_channel ==
+    Number 12
+    MalFormed |}];
+  test_utf16 (remove_last s 4) bo (fun lb -> token lb);
+  [%expect
+    {|
+    == from_string ==
+    Number 12
+    Ident asd12
+    EOF
+    == from_gen ==
+    Number 12
+    Ident asd12
+    EOF
+    == from_channel ==
+    Number 12
+    Ident asd12
+    EOF |}]
diff --git a/test/dune b/test/dune
new file mode 100644
index 0000000..6286c30
--- /dev/null
+++ b/test/dune
@@ -0,0 +1,6 @@
+(library
+ (name sedlex_test)
+ (libraries sedlex)
+ (inline_tests)
+ (preprocess
+  (pps sedlex.ppx ppx_expect)))
diff --git a/test/nested.ml b/test/nested.ml
new file mode 100644
index 0000000..4441288
--- /dev/null
+++ b/test/nested.ml
@@ -0,0 +1,9 @@
+let%expect_test _ =
+  let lb = Sedlexing.Utf8.from_string "ab" in
+  let res =
+    match%sedlex lb with
+      | 'a' -> ( match%sedlex lb with 'b' -> "ok" | _ -> "error")
+      | _ -> "error"
+  in
+  print_endline res;
+  [%expect {| ok |}]

More details

Full run details

Historical runs