Преглед изворни кода

Merge pull request #677 from djc/optimize-tables

Optimize IDNA tables
Valentin Gosu пре 5 година
родитељ
комит
f0010be169
3 измењених фајлова са 1671 додато и 3346 уклоњено
  1. 6 14
      idna/src/make_uts46_mapping_table.py
  2. 14 28
      idna/src/uts46.rs
  3. 1651 3304
      idna/src/uts46_mapping_table.rs

+ 6 - 14
idna/src/make_uts46_mapping_table.py

@@ -148,30 +148,22 @@ def merge_single_char_ranges(ranges):
 
 optimized_ranges = list(merge_single_char_ranges(optimized_ranges))
 
-
-print("static TABLE: &[Range] = &[")
-
-for ranges in optimized_ranges:
-    first = ranges[0][0]
-    last = ranges[-1][1]
-    print("    Range { from: '%s', to: '%s', }," % (escape_char(char(first)),
-                                                            escape_char(char(last))))
-
-print("];\n")
-
-print("static INDEX_TABLE: &[u16] = &[")
-
 SINGLE_MARKER = 1 << 15
 
+print("static TABLE: &[(char, u16)] = &[")
+
 offset = 0
 for ranges in optimized_ranges:
     assert offset < SINGLE_MARKER
 
     block_len = len(ranges)
     single = SINGLE_MARKER if block_len == 1 else 0
-    print("    %s," % (offset | single))
+    index = offset | single
     offset += block_len
 
+    start = escape_char(char(ranges[0][0]))
+    print("    ('%s', %s)," % (start, index))
+
 print("];\n")
 
 print("static MAPPING_TABLE: &[Mapping] = &[")

+ 14 - 28
idna/src/uts46.rs

@@ -11,7 +11,6 @@
 
 use self::Mapping::*;
 use crate::punycode;
-use std::cmp::Ordering::{Equal, Greater, Less};
 use std::{error::Error as StdError, fmt};
 use unicode_bidi::{bidi_class, BidiClass};
 use unicode_normalization::char::is_combining_mark;
@@ -50,36 +49,23 @@ enum Mapping {
     DisallowedStd3Mapped(StringTableSlice),
 }
 
-struct Range {
-    from: char,
-    to: char,
-}
-
 fn find_char(codepoint: char) -> &'static Mapping {
-    let r = TABLE.binary_search_by(|ref range| {
-        if codepoint > range.to {
-            Less
-        } else if codepoint < range.from {
-            Greater
-        } else {
-            Equal
-        }
-    });
-    r.ok()
-        .map(|i| {
-            const SINGLE_MARKER: u16 = 1 << 15;
+    let idx = match TABLE.binary_search_by_key(&codepoint, |&val| val.0) {
+        Ok(idx) => idx,
+        Err(idx) => idx - 1,
+    };
 
-            let x = INDEX_TABLE[i];
-            let single = (x & SINGLE_MARKER) != 0;
-            let offset = !SINGLE_MARKER & x;
+    const SINGLE_MARKER: u16 = 1 << 15;
 
-            if single {
-                &MAPPING_TABLE[offset as usize]
-            } else {
-                &MAPPING_TABLE[(offset + (codepoint as u16 - TABLE[i].from as u16)) as usize]
-            }
-        })
-        .unwrap()
+    let (base, x) = TABLE[idx];
+    let single = (x & SINGLE_MARKER) != 0;
+    let offset = !SINGLE_MARKER & x;
+
+    if single {
+        &MAPPING_TABLE[offset as usize]
+    } else {
+        &MAPPING_TABLE[(offset + (codepoint as u16 - base as u16)) as usize]
+    }
 }
 
 struct Mapper<'a> {

+ 1651 - 3304
idna/src/uts46_mapping_table.rs

@@ -8,3310 +8,1657 @@
 
 // Generated by make_idna_table.py
 
-static TABLE: &[Range] = &[
-    Range { from: '\u{0}', to: '\u{2c}', },
-    Range { from: '\u{2d}', to: '\u{2e}', },
-    Range { from: '\u{2f}', to: '\u{2f}', },
-    Range { from: '\u{30}', to: '\u{39}', },
-    Range { from: '\u{3a}', to: '\u{40}', },
-    Range { from: '\u{41}', to: '\u{5a}', },
-    Range { from: '\u{5b}', to: '\u{60}', },
-    Range { from: '\u{61}', to: '\u{7a}', },
-    Range { from: '\u{7b}', to: '\u{7f}', },
-    Range { from: '\u{80}', to: '\u{9f}', },
-    Range { from: '\u{a0}', to: '\u{a0}', },
-    Range { from: '\u{a1}', to: '\u{a7}', },
-    Range { from: '\u{a8}', to: '\u{aa}', },
-    Range { from: '\u{ab}', to: '\u{ac}', },
-    Range { from: '\u{ad}', to: '\u{af}', },
-    Range { from: '\u{b0}', to: '\u{b1}', },
-    Range { from: '\u{b2}', to: '\u{b5}', },
-    Range { from: '\u{b6}', to: '\u{b7}', },
-    Range { from: '\u{b8}', to: '\u{df}', },
-    Range { from: '\u{e0}', to: '\u{ff}', },
-    Range { from: '\u{100}', to: '\u{131}', },
-    Range { from: '\u{132}', to: '\u{133}', },
-    Range { from: '\u{134}', to: '\u{136}', },
-    Range { from: '\u{137}', to: '\u{138}', },
-    Range { from: '\u{139}', to: '\u{13e}', },
-    Range { from: '\u{13f}', to: '\u{140}', },
-    Range { from: '\u{141}', to: '\u{18b}', },
-    Range { from: '\u{18c}', to: '\u{18d}', },
-    Range { from: '\u{18e}', to: '\u{198}', },
-    Range { from: '\u{199}', to: '\u{19b}', },
-    Range { from: '\u{19c}', to: '\u{1a9}', },
-    Range { from: '\u{1aa}', to: '\u{1ab}', },
-    Range { from: '\u{1ac}', to: '\u{1b8}', },
-    Range { from: '\u{1b9}', to: '\u{1bb}', },
-    Range { from: '\u{1bc}', to: '\u{1bc}', },
-    Range { from: '\u{1bd}', to: '\u{1c3}', },
-    Range { from: '\u{1c4}', to: '\u{1c6}', },
-    Range { from: '\u{1c7}', to: '\u{1c9}', },
-    Range { from: '\u{1ca}', to: '\u{1cc}', },
-    Range { from: '\u{1cd}', to: '\u{1db}', },
-    Range { from: '\u{1dc}', to: '\u{1dd}', },
-    Range { from: '\u{1de}', to: '\u{1ee}', },
-    Range { from: '\u{1ef}', to: '\u{1f0}', },
-    Range { from: '\u{1f1}', to: '\u{1f3}', },
-    Range { from: '\u{1f4}', to: '\u{232}', },
-    Range { from: '\u{233}', to: '\u{239}', },
-    Range { from: '\u{23a}', to: '\u{23e}', },
-    Range { from: '\u{23f}', to: '\u{240}', },
-    Range { from: '\u{241}', to: '\u{24e}', },
-    Range { from: '\u{24f}', to: '\u{2af}', },
-    Range { from: '\u{2b0}', to: '\u{2b8}', },
-    Range { from: '\u{2b9}', to: '\u{2d7}', },
-    Range { from: '\u{2d8}', to: '\u{2dd}', },
-    Range { from: '\u{2de}', to: '\u{2df}', },
-    Range { from: '\u{2e0}', to: '\u{2e4}', },
-    Range { from: '\u{2e5}', to: '\u{33f}', },
-    Range { from: '\u{340}', to: '\u{345}', },
-    Range { from: '\u{346}', to: '\u{34e}', },
-    Range { from: '\u{34f}', to: '\u{34f}', },
-    Range { from: '\u{350}', to: '\u{36f}', },
-    Range { from: '\u{370}', to: '\u{377}', },
-    Range { from: '\u{378}', to: '\u{379}', },
-    Range { from: '\u{37a}', to: '\u{37a}', },
-    Range { from: '\u{37b}', to: '\u{37d}', },
-    Range { from: '\u{37e}', to: '\u{37f}', },
-    Range { from: '\u{380}', to: '\u{383}', },
-    Range { from: '\u{384}', to: '\u{3ab}', },
-    Range { from: '\u{3ac}', to: '\u{3c1}', },
-    Range { from: '\u{3c2}', to: '\u{3c2}', },
-    Range { from: '\u{3c3}', to: '\u{3ce}', },
-    Range { from: '\u{3cf}', to: '\u{3fa}', },
-    Range { from: '\u{3fb}', to: '\u{3fc}', },
-    Range { from: '\u{3fd}', to: '\u{42f}', },
-    Range { from: '\u{430}', to: '\u{45f}', },
-    Range { from: '\u{460}', to: '\u{480}', },
-    Range { from: '\u{481}', to: '\u{489}', },
-    Range { from: '\u{48a}', to: '\u{4cd}', },
-    Range { from: '\u{4ce}', to: '\u{4cf}', },
-    Range { from: '\u{4d0}', to: '\u{556}', },
-    Range { from: '\u{557}', to: '\u{558}', },
-    Range { from: '\u{559}', to: '\u{586}', },
-    Range { from: '\u{587}', to: '\u{587}', },
-    Range { from: '\u{588}', to: '\u{58a}', },
-    Range { from: '\u{58b}', to: '\u{58c}', },
-    Range { from: '\u{58d}', to: '\u{58f}', },
-    Range { from: '\u{590}', to: '\u{590}', },
-    Range { from: '\u{591}', to: '\u{5c7}', },
-    Range { from: '\u{5c8}', to: '\u{5cf}', },
-    Range { from: '\u{5d0}', to: '\u{5ea}', },
-    Range { from: '\u{5eb}', to: '\u{5ee}', },
-    Range { from: '\u{5ef}', to: '\u{5f4}', },
-    Range { from: '\u{5f5}', to: '\u{605}', },
-    Range { from: '\u{606}', to: '\u{61b}', },
-    Range { from: '\u{61c}', to: '\u{61d}', },
-    Range { from: '\u{61e}', to: '\u{674}', },
-    Range { from: '\u{675}', to: '\u{678}', },
-    Range { from: '\u{679}', to: '\u{6dc}', },
-    Range { from: '\u{6dd}', to: '\u{6dd}', },
-    Range { from: '\u{6de}', to: '\u{70d}', },
-    Range { from: '\u{70e}', to: '\u{70f}', },
-    Range { from: '\u{710}', to: '\u{74a}', },
-    Range { from: '\u{74b}', to: '\u{74c}', },
-    Range { from: '\u{74d}', to: '\u{7b1}', },
-    Range { from: '\u{7b2}', to: '\u{7bf}', },
-    Range { from: '\u{7c0}', to: '\u{7fa}', },
-    Range { from: '\u{7fb}', to: '\u{7fc}', },
-    Range { from: '\u{7fd}', to: '\u{82d}', },
-    Range { from: '\u{82e}', to: '\u{82f}', },
-    Range { from: '\u{830}', to: '\u{83e}', },
-    Range { from: '\u{83f}', to: '\u{83f}', },
-    Range { from: '\u{840}', to: '\u{85b}', },
-    Range { from: '\u{85c}', to: '\u{85d}', },
-    Range { from: '\u{85e}', to: '\u{85f}', },
-    Range { from: '\u{860}', to: '\u{86a}', },
-    Range { from: '\u{86b}', to: '\u{89f}', },
-    Range { from: '\u{8a0}', to: '\u{8b4}', },
-    Range { from: '\u{8b5}', to: '\u{8b5}', },
-    Range { from: '\u{8b6}', to: '\u{8c7}', },
-    Range { from: '\u{8c8}', to: '\u{8d2}', },
-    Range { from: '\u{8d3}', to: '\u{8e1}', },
-    Range { from: '\u{8e2}', to: '\u{8e2}', },
-    Range { from: '\u{8e3}', to: '\u{957}', },
-    Range { from: '\u{958}', to: '\u{95f}', },
-    Range { from: '\u{960}', to: '\u{983}', },
-    Range { from: '\u{984}', to: '\u{984}', },
-    Range { from: '\u{985}', to: '\u{98c}', },
-    Range { from: '\u{98d}', to: '\u{98e}', },
-    Range { from: '\u{98f}', to: '\u{990}', },
-    Range { from: '\u{991}', to: '\u{992}', },
-    Range { from: '\u{993}', to: '\u{9a8}', },
-    Range { from: '\u{9a9}', to: '\u{9a9}', },
-    Range { from: '\u{9aa}', to: '\u{9b0}', },
-    Range { from: '\u{9b1}', to: '\u{9b2}', },
-    Range { from: '\u{9b3}', to: '\u{9b5}', },
-    Range { from: '\u{9b6}', to: '\u{9b9}', },
-    Range { from: '\u{9ba}', to: '\u{9bb}', },
-    Range { from: '\u{9bc}', to: '\u{9c4}', },
-    Range { from: '\u{9c5}', to: '\u{9c6}', },
-    Range { from: '\u{9c7}', to: '\u{9c8}', },
-    Range { from: '\u{9c9}', to: '\u{9ca}', },
-    Range { from: '\u{9cb}', to: '\u{9ce}', },
-    Range { from: '\u{9cf}', to: '\u{9d6}', },
-    Range { from: '\u{9d7}', to: '\u{9d7}', },
-    Range { from: '\u{9d8}', to: '\u{9db}', },
-    Range { from: '\u{9dc}', to: '\u{9df}', },
-    Range { from: '\u{9e0}', to: '\u{9e3}', },
-    Range { from: '\u{9e4}', to: '\u{9e5}', },
-    Range { from: '\u{9e6}', to: '\u{9fe}', },
-    Range { from: '\u{9ff}', to: '\u{a00}', },
-    Range { from: '\u{a01}', to: '\u{a03}', },
-    Range { from: '\u{a04}', to: '\u{a04}', },
-    Range { from: '\u{a05}', to: '\u{a0a}', },
-    Range { from: '\u{a0b}', to: '\u{a0e}', },
-    Range { from: '\u{a0f}', to: '\u{a10}', },
-    Range { from: '\u{a11}', to: '\u{a12}', },
-    Range { from: '\u{a13}', to: '\u{a28}', },
-    Range { from: '\u{a29}', to: '\u{a29}', },
-    Range { from: '\u{a2a}', to: '\u{a30}', },
-    Range { from: '\u{a31}', to: '\u{a37}', },
-    Range { from: '\u{a38}', to: '\u{a39}', },
-    Range { from: '\u{a3a}', to: '\u{a3b}', },
-    Range { from: '\u{a3c}', to: '\u{a3d}', },
-    Range { from: '\u{a3e}', to: '\u{a42}', },
-    Range { from: '\u{a43}', to: '\u{a46}', },
-    Range { from: '\u{a47}', to: '\u{a48}', },
-    Range { from: '\u{a49}', to: '\u{a4a}', },
-    Range { from: '\u{a4b}', to: '\u{a4d}', },
-    Range { from: '\u{a4e}', to: '\u{a50}', },
-    Range { from: '\u{a51}', to: '\u{a51}', },
-    Range { from: '\u{a52}', to: '\u{a58}', },
-    Range { from: '\u{a59}', to: '\u{a5e}', },
-    Range { from: '\u{a5f}', to: '\u{a65}', },
-    Range { from: '\u{a66}', to: '\u{a76}', },
-    Range { from: '\u{a77}', to: '\u{a80}', },
-    Range { from: '\u{a81}', to: '\u{a83}', },
-    Range { from: '\u{a84}', to: '\u{a84}', },
-    Range { from: '\u{a85}', to: '\u{a8d}', },
-    Range { from: '\u{a8e}', to: '\u{a8e}', },
-    Range { from: '\u{a8f}', to: '\u{a91}', },
-    Range { from: '\u{a92}', to: '\u{a92}', },
-    Range { from: '\u{a93}', to: '\u{aa8}', },
-    Range { from: '\u{aa9}', to: '\u{aa9}', },
-    Range { from: '\u{aaa}', to: '\u{ab0}', },
-    Range { from: '\u{ab1}', to: '\u{ab1}', },
-    Range { from: '\u{ab2}', to: '\u{ab3}', },
-    Range { from: '\u{ab4}', to: '\u{ab4}', },
-    Range { from: '\u{ab5}', to: '\u{ab9}', },
-    Range { from: '\u{aba}', to: '\u{abb}', },
-    Range { from: '\u{abc}', to: '\u{ac5}', },
-    Range { from: '\u{ac6}', to: '\u{ac6}', },
-    Range { from: '\u{ac7}', to: '\u{ac9}', },
-    Range { from: '\u{aca}', to: '\u{aca}', },
-    Range { from: '\u{acb}', to: '\u{acd}', },
-    Range { from: '\u{ace}', to: '\u{acf}', },
-    Range { from: '\u{ad0}', to: '\u{ad0}', },
-    Range { from: '\u{ad1}', to: '\u{adf}', },
-    Range { from: '\u{ae0}', to: '\u{ae3}', },
-    Range { from: '\u{ae4}', to: '\u{ae5}', },
-    Range { from: '\u{ae6}', to: '\u{af1}', },
-    Range { from: '\u{af2}', to: '\u{af8}', },
-    Range { from: '\u{af9}', to: '\u{aff}', },
-    Range { from: '\u{b00}', to: '\u{b00}', },
-    Range { from: '\u{b01}', to: '\u{b03}', },
-    Range { from: '\u{b04}', to: '\u{b04}', },
-    Range { from: '\u{b05}', to: '\u{b0c}', },
-    Range { from: '\u{b0d}', to: '\u{b0e}', },
-    Range { from: '\u{b0f}', to: '\u{b10}', },
-    Range { from: '\u{b11}', to: '\u{b12}', },
-    Range { from: '\u{b13}', to: '\u{b28}', },
-    Range { from: '\u{b29}', to: '\u{b29}', },
-    Range { from: '\u{b2a}', to: '\u{b30}', },
-    Range { from: '\u{b31}', to: '\u{b31}', },
-    Range { from: '\u{b32}', to: '\u{b33}', },
-    Range { from: '\u{b34}', to: '\u{b34}', },
-    Range { from: '\u{b35}', to: '\u{b39}', },
-    Range { from: '\u{b3a}', to: '\u{b3b}', },
-    Range { from: '\u{b3c}', to: '\u{b44}', },
-    Range { from: '\u{b45}', to: '\u{b46}', },
-    Range { from: '\u{b47}', to: '\u{b48}', },
-    Range { from: '\u{b49}', to: '\u{b4a}', },
-    Range { from: '\u{b4b}', to: '\u{b4d}', },
-    Range { from: '\u{b4e}', to: '\u{b54}', },
-    Range { from: '\u{b55}', to: '\u{b57}', },
-    Range { from: '\u{b58}', to: '\u{b5b}', },
-    Range { from: '\u{b5c}', to: '\u{b5e}', },
-    Range { from: '\u{b5f}', to: '\u{b63}', },
-    Range { from: '\u{b64}', to: '\u{b65}', },
-    Range { from: '\u{b66}', to: '\u{b77}', },
-    Range { from: '\u{b78}', to: '\u{b81}', },
-    Range { from: '\u{b82}', to: '\u{b83}', },
-    Range { from: '\u{b84}', to: '\u{b84}', },
-    Range { from: '\u{b85}', to: '\u{b8a}', },
-    Range { from: '\u{b8b}', to: '\u{b8d}', },
-    Range { from: '\u{b8e}', to: '\u{b90}', },
-    Range { from: '\u{b91}', to: '\u{b91}', },
-    Range { from: '\u{b92}', to: '\u{b95}', },
-    Range { from: '\u{b96}', to: '\u{b98}', },
-    Range { from: '\u{b99}', to: '\u{b9a}', },
-    Range { from: '\u{b9b}', to: '\u{b9d}', },
-    Range { from: '\u{b9e}', to: '\u{b9f}', },
-    Range { from: '\u{ba0}', to: '\u{ba2}', },
-    Range { from: '\u{ba3}', to: '\u{ba4}', },
-    Range { from: '\u{ba5}', to: '\u{ba7}', },
-    Range { from: '\u{ba8}', to: '\u{baa}', },
-    Range { from: '\u{bab}', to: '\u{bad}', },
-    Range { from: '\u{bae}', to: '\u{bb9}', },
-    Range { from: '\u{bba}', to: '\u{bbd}', },
-    Range { from: '\u{bbe}', to: '\u{bc2}', },
-    Range { from: '\u{bc3}', to: '\u{bc5}', },
-    Range { from: '\u{bc6}', to: '\u{bc8}', },
-    Range { from: '\u{bc9}', to: '\u{bc9}', },
-    Range { from: '\u{bca}', to: '\u{bcd}', },
-    Range { from: '\u{bce}', to: '\u{bcf}', },
-    Range { from: '\u{bd0}', to: '\u{bd0}', },
-    Range { from: '\u{bd1}', to: '\u{bd6}', },
-    Range { from: '\u{bd7}', to: '\u{bd7}', },
-    Range { from: '\u{bd8}', to: '\u{be5}', },
-    Range { from: '\u{be6}', to: '\u{bfa}', },
-    Range { from: '\u{bfb}', to: '\u{bff}', },
-    Range { from: '\u{c00}', to: '\u{c0c}', },
-    Range { from: '\u{c0d}', to: '\u{c0d}', },
-    Range { from: '\u{c0e}', to: '\u{c10}', },
-    Range { from: '\u{c11}', to: '\u{c11}', },
-    Range { from: '\u{c12}', to: '\u{c28}', },
-    Range { from: '\u{c29}', to: '\u{c29}', },
-    Range { from: '\u{c2a}', to: '\u{c39}', },
-    Range { from: '\u{c3a}', to: '\u{c3c}', },
-    Range { from: '\u{c3d}', to: '\u{c44}', },
-    Range { from: '\u{c45}', to: '\u{c45}', },
-    Range { from: '\u{c46}', to: '\u{c48}', },
-    Range { from: '\u{c49}', to: '\u{c49}', },
-    Range { from: '\u{c4a}', to: '\u{c4d}', },
-    Range { from: '\u{c4e}', to: '\u{c54}', },
-    Range { from: '\u{c55}', to: '\u{c56}', },
-    Range { from: '\u{c57}', to: '\u{c57}', },
-    Range { from: '\u{c58}', to: '\u{c5a}', },
-    Range { from: '\u{c5b}', to: '\u{c5f}', },
-    Range { from: '\u{c60}', to: '\u{c63}', },
-    Range { from: '\u{c64}', to: '\u{c65}', },
-    Range { from: '\u{c66}', to: '\u{c6f}', },
-    Range { from: '\u{c70}', to: '\u{c76}', },
-    Range { from: '\u{c77}', to: '\u{c8c}', },
-    Range { from: '\u{c8d}', to: '\u{c8d}', },
-    Range { from: '\u{c8e}', to: '\u{c90}', },
-    Range { from: '\u{c91}', to: '\u{c91}', },
-    Range { from: '\u{c92}', to: '\u{ca8}', },
-    Range { from: '\u{ca9}', to: '\u{ca9}', },
-    Range { from: '\u{caa}', to: '\u{cb3}', },
-    Range { from: '\u{cb4}', to: '\u{cb4}', },
-    Range { from: '\u{cb5}', to: '\u{cb9}', },
-    Range { from: '\u{cba}', to: '\u{cbb}', },
-    Range { from: '\u{cbc}', to: '\u{cc4}', },
-    Range { from: '\u{cc5}', to: '\u{cc5}', },
-    Range { from: '\u{cc6}', to: '\u{cc8}', },
-    Range { from: '\u{cc9}', to: '\u{cc9}', },
-    Range { from: '\u{cca}', to: '\u{ccd}', },
-    Range { from: '\u{cce}', to: '\u{cd4}', },
-    Range { from: '\u{cd5}', to: '\u{cd6}', },
-    Range { from: '\u{cd7}', to: '\u{cdd}', },
-    Range { from: '\u{cde}', to: '\u{cdf}', },
-    Range { from: '\u{ce0}', to: '\u{ce3}', },
-    Range { from: '\u{ce4}', to: '\u{ce5}', },
-    Range { from: '\u{ce6}', to: '\u{cef}', },
-    Range { from: '\u{cf0}', to: '\u{cf0}', },
-    Range { from: '\u{cf1}', to: '\u{cf2}', },
-    Range { from: '\u{cf3}', to: '\u{cff}', },
-    Range { from: '\u{d00}', to: '\u{d0c}', },
-    Range { from: '\u{d0d}', to: '\u{d0d}', },
-    Range { from: '\u{d0e}', to: '\u{d10}', },
-    Range { from: '\u{d11}', to: '\u{d11}', },
-    Range { from: '\u{d12}', to: '\u{d44}', },
-    Range { from: '\u{d45}', to: '\u{d45}', },
-    Range { from: '\u{d46}', to: '\u{d48}', },
-    Range { from: '\u{d49}', to: '\u{d49}', },
-    Range { from: '\u{d4a}', to: '\u{d4f}', },
-    Range { from: '\u{d50}', to: '\u{d53}', },
-    Range { from: '\u{d54}', to: '\u{d63}', },
-    Range { from: '\u{d64}', to: '\u{d65}', },
-    Range { from: '\u{d66}', to: '\u{d7f}', },
-    Range { from: '\u{d80}', to: '\u{d80}', },
-    Range { from: '\u{d81}', to: '\u{d83}', },
-    Range { from: '\u{d84}', to: '\u{d84}', },
-    Range { from: '\u{d85}', to: '\u{d96}', },
-    Range { from: '\u{d97}', to: '\u{d99}', },
-    Range { from: '\u{d9a}', to: '\u{db1}', },
-    Range { from: '\u{db2}', to: '\u{db2}', },
-    Range { from: '\u{db3}', to: '\u{dbb}', },
-    Range { from: '\u{dbc}', to: '\u{dbd}', },
-    Range { from: '\u{dbe}', to: '\u{dbf}', },
-    Range { from: '\u{dc0}', to: '\u{dc6}', },
-    Range { from: '\u{dc7}', to: '\u{dc9}', },
-    Range { from: '\u{dca}', to: '\u{dca}', },
-    Range { from: '\u{dcb}', to: '\u{dce}', },
-    Range { from: '\u{dcf}', to: '\u{dd4}', },
-    Range { from: '\u{dd5}', to: '\u{dd7}', },
-    Range { from: '\u{dd8}', to: '\u{ddf}', },
-    Range { from: '\u{de0}', to: '\u{de5}', },
-    Range { from: '\u{de6}', to: '\u{def}', },
-    Range { from: '\u{df0}', to: '\u{df1}', },
-    Range { from: '\u{df2}', to: '\u{df4}', },
-    Range { from: '\u{df5}', to: '\u{e00}', },
-    Range { from: '\u{e01}', to: '\u{e32}', },
-    Range { from: '\u{e33}', to: '\u{e33}', },
-    Range { from: '\u{e34}', to: '\u{e3a}', },
-    Range { from: '\u{e3b}', to: '\u{e3e}', },
-    Range { from: '\u{e3f}', to: '\u{e5b}', },
-    Range { from: '\u{e5c}', to: '\u{e80}', },
-    Range { from: '\u{e81}', to: '\u{e82}', },
-    Range { from: '\u{e83}', to: '\u{e85}', },
-    Range { from: '\u{e86}', to: '\u{e8a}', },
-    Range { from: '\u{e8b}', to: '\u{e8b}', },
-    Range { from: '\u{e8c}', to: '\u{ea3}', },
-    Range { from: '\u{ea4}', to: '\u{ea6}', },
-    Range { from: '\u{ea7}', to: '\u{eb2}', },
-    Range { from: '\u{eb3}', to: '\u{eb3}', },
-    Range { from: '\u{eb4}', to: '\u{ebd}', },
-    Range { from: '\u{ebe}', to: '\u{ebf}', },
-    Range { from: '\u{ec0}', to: '\u{ec4}', },
-    Range { from: '\u{ec5}', to: '\u{ec7}', },
-    Range { from: '\u{ec8}', to: '\u{ecd}', },
-    Range { from: '\u{ece}', to: '\u{ecf}', },
-    Range { from: '\u{ed0}', to: '\u{ed9}', },
-    Range { from: '\u{eda}', to: '\u{edb}', },
-    Range { from: '\u{edc}', to: '\u{edd}', },
-    Range { from: '\u{ede}', to: '\u{edf}', },
-    Range { from: '\u{ee0}', to: '\u{eff}', },
-    Range { from: '\u{f00}', to: '\u{f0b}', },
-    Range { from: '\u{f0c}', to: '\u{f0c}', },
-    Range { from: '\u{f0d}', to: '\u{f42}', },
-    Range { from: '\u{f43}', to: '\u{f43}', },
-    Range { from: '\u{f44}', to: '\u{f47}', },
-    Range { from: '\u{f48}', to: '\u{f48}', },
-    Range { from: '\u{f49}', to: '\u{f4c}', },
-    Range { from: '\u{f4d}', to: '\u{f4d}', },
-    Range { from: '\u{f4e}', to: '\u{f51}', },
-    Range { from: '\u{f52}', to: '\u{f52}', },
-    Range { from: '\u{f53}', to: '\u{f56}', },
-    Range { from: '\u{f57}', to: '\u{f57}', },
-    Range { from: '\u{f58}', to: '\u{f5b}', },
-    Range { from: '\u{f5c}', to: '\u{f5c}', },
-    Range { from: '\u{f5d}', to: '\u{f68}', },
-    Range { from: '\u{f69}', to: '\u{f69}', },
-    Range { from: '\u{f6a}', to: '\u{f6c}', },
-    Range { from: '\u{f6d}', to: '\u{f70}', },
-    Range { from: '\u{f71}', to: '\u{f72}', },
-    Range { from: '\u{f73}', to: '\u{f79}', },
-    Range { from: '\u{f7a}', to: '\u{f80}', },
-    Range { from: '\u{f81}', to: '\u{f81}', },
-    Range { from: '\u{f82}', to: '\u{f92}', },
-    Range { from: '\u{f93}', to: '\u{f93}', },
-    Range { from: '\u{f94}', to: '\u{f97}', },
-    Range { from: '\u{f98}', to: '\u{f98}', },
-    Range { from: '\u{f99}', to: '\u{f9c}', },
-    Range { from: '\u{f9d}', to: '\u{f9d}', },
-    Range { from: '\u{f9e}', to: '\u{fa1}', },
-    Range { from: '\u{fa2}', to: '\u{fa2}', },
-    Range { from: '\u{fa3}', to: '\u{fa6}', },
-    Range { from: '\u{fa7}', to: '\u{fa7}', },
-    Range { from: '\u{fa8}', to: '\u{fab}', },
-    Range { from: '\u{fac}', to: '\u{fac}', },
-    Range { from: '\u{fad}', to: '\u{fb8}', },
-    Range { from: '\u{fb9}', to: '\u{fb9}', },
-    Range { from: '\u{fba}', to: '\u{fbc}', },
-    Range { from: '\u{fbd}', to: '\u{fbd}', },
-    Range { from: '\u{fbe}', to: '\u{fcc}', },
-    Range { from: '\u{fcd}', to: '\u{fcd}', },
-    Range { from: '\u{fce}', to: '\u{fda}', },
-    Range { from: '\u{fdb}', to: '\u{fff}', },
-    Range { from: '\u{1000}', to: '\u{109f}', },
-    Range { from: '\u{10a0}', to: '\u{10c6}', },
-    Range { from: '\u{10c7}', to: '\u{10c7}', },
-    Range { from: '\u{10c8}', to: '\u{10cc}', },
-    Range { from: '\u{10cd}', to: '\u{10cd}', },
-    Range { from: '\u{10ce}', to: '\u{10cf}', },
-    Range { from: '\u{10d0}', to: '\u{10fb}', },
-    Range { from: '\u{10fc}', to: '\u{10fc}', },
-    Range { from: '\u{10fd}', to: '\u{115e}', },
-    Range { from: '\u{115f}', to: '\u{1160}', },
-    Range { from: '\u{1161}', to: '\u{1248}', },
-    Range { from: '\u{1249}', to: '\u{1249}', },
-    Range { from: '\u{124a}', to: '\u{124d}', },
-    Range { from: '\u{124e}', to: '\u{124f}', },
-    Range { from: '\u{1250}', to: '\u{1256}', },
-    Range { from: '\u{1257}', to: '\u{1259}', },
-    Range { from: '\u{125a}', to: '\u{125d}', },
-    Range { from: '\u{125e}', to: '\u{125f}', },
-    Range { from: '\u{1260}', to: '\u{1288}', },
-    Range { from: '\u{1289}', to: '\u{1289}', },
-    Range { from: '\u{128a}', to: '\u{128d}', },
-    Range { from: '\u{128e}', to: '\u{128f}', },
-    Range { from: '\u{1290}', to: '\u{12b0}', },
-    Range { from: '\u{12b1}', to: '\u{12b1}', },
-    Range { from: '\u{12b2}', to: '\u{12b5}', },
-    Range { from: '\u{12b6}', to: '\u{12b7}', },
-    Range { from: '\u{12b8}', to: '\u{12be}', },
-    Range { from: '\u{12bf}', to: '\u{12c1}', },
-    Range { from: '\u{12c2}', to: '\u{12c5}', },
-    Range { from: '\u{12c6}', to: '\u{12c7}', },
-    Range { from: '\u{12c8}', to: '\u{12d6}', },
-    Range { from: '\u{12d7}', to: '\u{12d7}', },
-    Range { from: '\u{12d8}', to: '\u{1310}', },
-    Range { from: '\u{1311}', to: '\u{1311}', },
-    Range { from: '\u{1312}', to: '\u{1315}', },
-    Range { from: '\u{1316}', to: '\u{1317}', },
-    Range { from: '\u{1318}', to: '\u{135a}', },
-    Range { from: '\u{135b}', to: '\u{135c}', },
-    Range { from: '\u{135d}', to: '\u{137c}', },
-    Range { from: '\u{137d}', to: '\u{137f}', },
-    Range { from: '\u{1380}', to: '\u{1399}', },
-    Range { from: '\u{139a}', to: '\u{139f}', },
-    Range { from: '\u{13a0}', to: '\u{13f5}', },
-    Range { from: '\u{13f6}', to: '\u{13f7}', },
-    Range { from: '\u{13f8}', to: '\u{13fd}', },
-    Range { from: '\u{13fe}', to: '\u{13ff}', },
-    Range { from: '\u{1400}', to: '\u{167f}', },
-    Range { from: '\u{1680}', to: '\u{1680}', },
-    Range { from: '\u{1681}', to: '\u{169c}', },
-    Range { from: '\u{169d}', to: '\u{169f}', },
-    Range { from: '\u{16a0}', to: '\u{16f8}', },
-    Range { from: '\u{16f9}', to: '\u{16ff}', },
-    Range { from: '\u{1700}', to: '\u{170c}', },
-    Range { from: '\u{170d}', to: '\u{170d}', },
-    Range { from: '\u{170e}', to: '\u{1714}', },
-    Range { from: '\u{1715}', to: '\u{171f}', },
-    Range { from: '\u{1720}', to: '\u{1736}', },
-    Range { from: '\u{1737}', to: '\u{173f}', },
-    Range { from: '\u{1740}', to: '\u{1753}', },
-    Range { from: '\u{1754}', to: '\u{175f}', },
-    Range { from: '\u{1760}', to: '\u{176c}', },
-    Range { from: '\u{176d}', to: '\u{176d}', },
-    Range { from: '\u{176e}', to: '\u{1770}', },
-    Range { from: '\u{1771}', to: '\u{1771}', },
-    Range { from: '\u{1772}', to: '\u{1773}', },
-    Range { from: '\u{1774}', to: '\u{177f}', },
-    Range { from: '\u{1780}', to: '\u{17b3}', },
-    Range { from: '\u{17b4}', to: '\u{17b5}', },
-    Range { from: '\u{17b6}', to: '\u{17dd}', },
-    Range { from: '\u{17de}', to: '\u{17df}', },
-    Range { from: '\u{17e0}', to: '\u{17e9}', },
-    Range { from: '\u{17ea}', to: '\u{17ef}', },
-    Range { from: '\u{17f0}', to: '\u{17f9}', },
-    Range { from: '\u{17fa}', to: '\u{17ff}', },
-    Range { from: '\u{1800}', to: '\u{1805}', },
-    Range { from: '\u{1806}', to: '\u{1806}', },
-    Range { from: '\u{1807}', to: '\u{180a}', },
-    Range { from: '\u{180b}', to: '\u{180d}', },
-    Range { from: '\u{180e}', to: '\u{180f}', },
-    Range { from: '\u{1810}', to: '\u{1819}', },
-    Range { from: '\u{181a}', to: '\u{181f}', },
-    Range { from: '\u{1820}', to: '\u{1878}', },
-    Range { from: '\u{1879}', to: '\u{187f}', },
-    Range { from: '\u{1880}', to: '\u{18aa}', },
-    Range { from: '\u{18ab}', to: '\u{18af}', },
-    Range { from: '\u{18b0}', to: '\u{18f5}', },
-    Range { from: '\u{18f6}', to: '\u{18ff}', },
-    Range { from: '\u{1900}', to: '\u{191e}', },
-    Range { from: '\u{191f}', to: '\u{191f}', },
-    Range { from: '\u{1920}', to: '\u{192b}', },
-    Range { from: '\u{192c}', to: '\u{192f}', },
-    Range { from: '\u{1930}', to: '\u{193b}', },
-    Range { from: '\u{193c}', to: '\u{193f}', },
-    Range { from: '\u{1940}', to: '\u{1940}', },
-    Range { from: '\u{1941}', to: '\u{1943}', },
-    Range { from: '\u{1944}', to: '\u{196d}', },
-    Range { from: '\u{196e}', to: '\u{196f}', },
-    Range { from: '\u{1970}', to: '\u{1974}', },
-    Range { from: '\u{1975}', to: '\u{197f}', },
-    Range { from: '\u{1980}', to: '\u{19ab}', },
-    Range { from: '\u{19ac}', to: '\u{19af}', },
-    Range { from: '\u{19b0}', to: '\u{19c9}', },
-    Range { from: '\u{19ca}', to: '\u{19cf}', },
-    Range { from: '\u{19d0}', to: '\u{19da}', },
-    Range { from: '\u{19db}', to: '\u{19dd}', },
-    Range { from: '\u{19de}', to: '\u{1a1b}', },
-    Range { from: '\u{1a1c}', to: '\u{1a1d}', },
-    Range { from: '\u{1a1e}', to: '\u{1a5e}', },
-    Range { from: '\u{1a5f}', to: '\u{1a5f}', },
-    Range { from: '\u{1a60}', to: '\u{1a7c}', },
-    Range { from: '\u{1a7d}', to: '\u{1a7e}', },
-    Range { from: '\u{1a7f}', to: '\u{1a89}', },
-    Range { from: '\u{1a8a}', to: '\u{1a8f}', },
-    Range { from: '\u{1a90}', to: '\u{1a99}', },
-    Range { from: '\u{1a9a}', to: '\u{1a9f}', },
-    Range { from: '\u{1aa0}', to: '\u{1aad}', },
-    Range { from: '\u{1aae}', to: '\u{1aaf}', },
-    Range { from: '\u{1ab0}', to: '\u{1ac0}', },
-    Range { from: '\u{1ac1}', to: '\u{1aff}', },
-    Range { from: '\u{1b00}', to: '\u{1b4b}', },
-    Range { from: '\u{1b4c}', to: '\u{1b4f}', },
-    Range { from: '\u{1b50}', to: '\u{1b7c}', },
-    Range { from: '\u{1b7d}', to: '\u{1b7f}', },
-    Range { from: '\u{1b80}', to: '\u{1bf3}', },
-    Range { from: '\u{1bf4}', to: '\u{1bfb}', },
-    Range { from: '\u{1bfc}', to: '\u{1c37}', },
-    Range { from: '\u{1c38}', to: '\u{1c3a}', },
-    Range { from: '\u{1c3b}', to: '\u{1c49}', },
-    Range { from: '\u{1c4a}', to: '\u{1c4c}', },
-    Range { from: '\u{1c4d}', to: '\u{1c7f}', },
-    Range { from: '\u{1c80}', to: '\u{1c83}', },
-    Range { from: '\u{1c84}', to: '\u{1c85}', },
-    Range { from: '\u{1c86}', to: '\u{1c88}', },
-    Range { from: '\u{1c89}', to: '\u{1c8f}', },
-    Range { from: '\u{1c90}', to: '\u{1cba}', },
-    Range { from: '\u{1cbb}', to: '\u{1cbc}', },
-    Range { from: '\u{1cbd}', to: '\u{1cbf}', },
-    Range { from: '\u{1cc0}', to: '\u{1cc7}', },
-    Range { from: '\u{1cc8}', to: '\u{1ccf}', },
-    Range { from: '\u{1cd0}', to: '\u{1cfa}', },
-    Range { from: '\u{1cfb}', to: '\u{1cff}', },
-    Range { from: '\u{1d00}', to: '\u{1d2b}', },
-    Range { from: '\u{1d2c}', to: '\u{1d6a}', },
-    Range { from: '\u{1d6b}', to: '\u{1d77}', },
-    Range { from: '\u{1d78}', to: '\u{1d78}', },
-    Range { from: '\u{1d79}', to: '\u{1d9a}', },
-    Range { from: '\u{1d9b}', to: '\u{1dbf}', },
-    Range { from: '\u{1dc0}', to: '\u{1df9}', },
-    Range { from: '\u{1dfa}', to: '\u{1dfa}', },
-    Range { from: '\u{1dfb}', to: '\u{1dff}', },
-    Range { from: '\u{1e00}', to: '\u{1e94}', },
-    Range { from: '\u{1e95}', to: '\u{1e99}', },
-    Range { from: '\u{1e9a}', to: '\u{1e9b}', },
-    Range { from: '\u{1e9c}', to: '\u{1e9d}', },
-    Range { from: '\u{1e9e}', to: '\u{1efe}', },
-    Range { from: '\u{1eff}', to: '\u{1f07}', },
-    Range { from: '\u{1f08}', to: '\u{1f0f}', },
-    Range { from: '\u{1f10}', to: '\u{1f15}', },
-    Range { from: '\u{1f16}', to: '\u{1f17}', },
-    Range { from: '\u{1f18}', to: '\u{1f1d}', },
-    Range { from: '\u{1f1e}', to: '\u{1f1f}', },
-    Range { from: '\u{1f20}', to: '\u{1f27}', },
-    Range { from: '\u{1f28}', to: '\u{1f2f}', },
-    Range { from: '\u{1f30}', to: '\u{1f37}', },
-    Range { from: '\u{1f38}', to: '\u{1f3f}', },
-    Range { from: '\u{1f40}', to: '\u{1f45}', },
-    Range { from: '\u{1f46}', to: '\u{1f47}', },
-    Range { from: '\u{1f48}', to: '\u{1f4d}', },
-    Range { from: '\u{1f4e}', to: '\u{1f4f}', },
-    Range { from: '\u{1f50}', to: '\u{1f57}', },
-    Range { from: '\u{1f58}', to: '\u{1f5f}', },
-    Range { from: '\u{1f60}', to: '\u{1f67}', },
-    Range { from: '\u{1f68}', to: '\u{1f7d}', },
-    Range { from: '\u{1f7e}', to: '\u{1f7f}', },
-    Range { from: '\u{1f80}', to: '\u{1faf}', },
-    Range { from: '\u{1fb0}', to: '\u{1fb1}', },
-    Range { from: '\u{1fb2}', to: '\u{1fcf}', },
-    Range { from: '\u{1fd0}', to: '\u{1fd2}', },
-    Range { from: '\u{1fd3}', to: '\u{1fd3}', },
-    Range { from: '\u{1fd4}', to: '\u{1fd5}', },
-    Range { from: '\u{1fd6}', to: '\u{1fd7}', },
-    Range { from: '\u{1fd8}', to: '\u{1fdf}', },
-    Range { from: '\u{1fe0}', to: '\u{1fe2}', },
-    Range { from: '\u{1fe3}', to: '\u{1fe3}', },
-    Range { from: '\u{1fe4}', to: '\u{1fe7}', },
-    Range { from: '\u{1fe8}', to: '\u{1fef}', },
-    Range { from: '\u{1ff0}', to: '\u{1ff1}', },
-    Range { from: '\u{1ff2}', to: '\u{1fff}', },
-    Range { from: '\u{2000}', to: '\u{200a}', },
-    Range { from: '\u{200b}', to: '\u{200b}', },
-    Range { from: '\u{200c}', to: '\u{200d}', },
-    Range { from: '\u{200e}', to: '\u{200f}', },
-    Range { from: '\u{2010}', to: '\u{2011}', },
-    Range { from: '\u{2012}', to: '\u{2016}', },
-    Range { from: '\u{2017}', to: '\u{2017}', },
-    Range { from: '\u{2018}', to: '\u{2023}', },
-    Range { from: '\u{2024}', to: '\u{2026}', },
-    Range { from: '\u{2027}', to: '\u{2027}', },
-    Range { from: '\u{2028}', to: '\u{202e}', },
-    Range { from: '\u{202f}', to: '\u{202f}', },
-    Range { from: '\u{2030}', to: '\u{2032}', },
-    Range { from: '\u{2033}', to: '\u{2037}', },
-    Range { from: '\u{2038}', to: '\u{203b}', },
-    Range { from: '\u{203c}', to: '\u{203e}', },
-    Range { from: '\u{203f}', to: '\u{2046}', },
-    Range { from: '\u{2047}', to: '\u{2049}', },
-    Range { from: '\u{204a}', to: '\u{2056}', },
-    Range { from: '\u{2057}', to: '\u{2057}', },
-    Range { from: '\u{2058}', to: '\u{205e}', },
-    Range { from: '\u{205f}', to: '\u{2060}', },
-    Range { from: '\u{2061}', to: '\u{2063}', },
-    Range { from: '\u{2064}', to: '\u{2064}', },
-    Range { from: '\u{2065}', to: '\u{206f}', },
-    Range { from: '\u{2070}', to: '\u{2071}', },
-    Range { from: '\u{2072}', to: '\u{2073}', },
-    Range { from: '\u{2074}', to: '\u{209c}', },
-    Range { from: '\u{209d}', to: '\u{209f}', },
-    Range { from: '\u{20a0}', to: '\u{20a7}', },
-    Range { from: '\u{20a8}', to: '\u{20a8}', },
-    Range { from: '\u{20a9}', to: '\u{20bf}', },
-    Range { from: '\u{20c0}', to: '\u{20cf}', },
-    Range { from: '\u{20d0}', to: '\u{20f0}', },
-    Range { from: '\u{20f1}', to: '\u{20ff}', },
-    Range { from: '\u{2100}', to: '\u{210a}', },
-    Range { from: '\u{210b}', to: '\u{210e}', },
-    Range { from: '\u{210f}', to: '\u{210f}', },
-    Range { from: '\u{2110}', to: '\u{2111}', },
-    Range { from: '\u{2112}', to: '\u{2113}', },
-    Range { from: '\u{2114}', to: '\u{2116}', },
-    Range { from: '\u{2117}', to: '\u{2118}', },
-    Range { from: '\u{2119}', to: '\u{211a}', },
-    Range { from: '\u{211b}', to: '\u{211d}', },
-    Range { from: '\u{211e}', to: '\u{211f}', },
-    Range { from: '\u{2120}', to: '\u{212e}', },
-    Range { from: '\u{212f}', to: '\u{2130}', },
-    Range { from: '\u{2131}', to: '\u{213c}', },
-    Range { from: '\u{213d}', to: '\u{213e}', },
-    Range { from: '\u{213f}', to: '\u{2140}', },
-    Range { from: '\u{2141}', to: '\u{2144}', },
-    Range { from: '\u{2145}', to: '\u{2146}', },
-    Range { from: '\u{2147}', to: '\u{2149}', },
-    Range { from: '\u{214a}', to: '\u{214f}', },
-    Range { from: '\u{2150}', to: '\u{217f}', },
-    Range { from: '\u{2180}', to: '\u{2182}', },
-    Range { from: '\u{2183}', to: '\u{2183}', },
-    Range { from: '\u{2184}', to: '\u{2188}', },
-    Range { from: '\u{2189}', to: '\u{2189}', },
-    Range { from: '\u{218a}', to: '\u{218b}', },
-    Range { from: '\u{218c}', to: '\u{218f}', },
-    Range { from: '\u{2190}', to: '\u{222b}', },
-    Range { from: '\u{222c}', to: '\u{2230}', },
-    Range { from: '\u{2231}', to: '\u{225f}', },
-    Range { from: '\u{2260}', to: '\u{2260}', },
-    Range { from: '\u{2261}', to: '\u{226d}', },
-    Range { from: '\u{226e}', to: '\u{226f}', },
-    Range { from: '\u{2270}', to: '\u{2328}', },
-    Range { from: '\u{2329}', to: '\u{232a}', },
-    Range { from: '\u{232b}', to: '\u{2426}', },
-    Range { from: '\u{2427}', to: '\u{243f}', },
-    Range { from: '\u{2440}', to: '\u{244a}', },
-    Range { from: '\u{244b}', to: '\u{245f}', },
-    Range { from: '\u{2460}', to: '\u{2487}', },
-    Range { from: '\u{2488}', to: '\u{249b}', },
-    Range { from: '\u{249c}', to: '\u{24ea}', },
-    Range { from: '\u{24eb}', to: '\u{2a0b}', },
-    Range { from: '\u{2a0c}', to: '\u{2a0c}', },
-    Range { from: '\u{2a0d}', to: '\u{2a73}', },
-    Range { from: '\u{2a74}', to: '\u{2a76}', },
-    Range { from: '\u{2a77}', to: '\u{2adb}', },
-    Range { from: '\u{2adc}', to: '\u{2adc}', },
-    Range { from: '\u{2add}', to: '\u{2b73}', },
-    Range { from: '\u{2b74}', to: '\u{2b75}', },
-    Range { from: '\u{2b76}', to: '\u{2b95}', },
-    Range { from: '\u{2b96}', to: '\u{2b96}', },
-    Range { from: '\u{2b97}', to: '\u{2bff}', },
-    Range { from: '\u{2c00}', to: '\u{2c2f}', },
-    Range { from: '\u{2c30}', to: '\u{2c5e}', },
-    Range { from: '\u{2c5f}', to: '\u{2c64}', },
-    Range { from: '\u{2c65}', to: '\u{2c66}', },
-    Range { from: '\u{2c67}', to: '\u{2c72}', },
-    Range { from: '\u{2c73}', to: '\u{2c74}', },
-    Range { from: '\u{2c75}', to: '\u{2c75}', },
-    Range { from: '\u{2c76}', to: '\u{2c7b}', },
-    Range { from: '\u{2c7c}', to: '\u{2ce2}', },
-    Range { from: '\u{2ce3}', to: '\u{2cea}', },
-    Range { from: '\u{2ceb}', to: '\u{2ced}', },
-    Range { from: '\u{2cee}', to: '\u{2cf1}', },
-    Range { from: '\u{2cf2}', to: '\u{2cf3}', },
-    Range { from: '\u{2cf4}', to: '\u{2cf8}', },
-    Range { from: '\u{2cf9}', to: '\u{2d25}', },
-    Range { from: '\u{2d26}', to: '\u{2d27}', },
-    Range { from: '\u{2d28}', to: '\u{2d2c}', },
-    Range { from: '\u{2d2d}', to: '\u{2d2d}', },
-    Range { from: '\u{2d2e}', to: '\u{2d2f}', },
-    Range { from: '\u{2d30}', to: '\u{2d67}', },
-    Range { from: '\u{2d68}', to: '\u{2d6e}', },
-    Range { from: '\u{2d6f}', to: '\u{2d70}', },
-    Range { from: '\u{2d71}', to: '\u{2d7e}', },
-    Range { from: '\u{2d7f}', to: '\u{2d96}', },
-    Range { from: '\u{2d97}', to: '\u{2d9f}', },
-    Range { from: '\u{2da0}', to: '\u{2da6}', },
-    Range { from: '\u{2da7}', to: '\u{2da7}', },
-    Range { from: '\u{2da8}', to: '\u{2dae}', },
-    Range { from: '\u{2daf}', to: '\u{2daf}', },
-    Range { from: '\u{2db0}', to: '\u{2db6}', },
-    Range { from: '\u{2db7}', to: '\u{2db7}', },
-    Range { from: '\u{2db8}', to: '\u{2dbe}', },
-    Range { from: '\u{2dbf}', to: '\u{2dbf}', },
-    Range { from: '\u{2dc0}', to: '\u{2dc6}', },
-    Range { from: '\u{2dc7}', to: '\u{2dc7}', },
-    Range { from: '\u{2dc8}', to: '\u{2dce}', },
-    Range { from: '\u{2dcf}', to: '\u{2dcf}', },
-    Range { from: '\u{2dd0}', to: '\u{2dd6}', },
-    Range { from: '\u{2dd7}', to: '\u{2dd7}', },
-    Range { from: '\u{2dd8}', to: '\u{2dde}', },
-    Range { from: '\u{2ddf}', to: '\u{2ddf}', },
-    Range { from: '\u{2de0}', to: '\u{2e52}', },
-    Range { from: '\u{2e53}', to: '\u{2e7f}', },
-    Range { from: '\u{2e80}', to: '\u{2e99}', },
-    Range { from: '\u{2e9a}', to: '\u{2e9a}', },
-    Range { from: '\u{2e9b}', to: '\u{2e9e}', },
-    Range { from: '\u{2e9f}', to: '\u{2e9f}', },
-    Range { from: '\u{2ea0}', to: '\u{2ef2}', },
-    Range { from: '\u{2ef3}', to: '\u{2ef3}', },
-    Range { from: '\u{2ef4}', to: '\u{2eff}', },
-    Range { from: '\u{2f00}', to: '\u{2fd5}', },
-    Range { from: '\u{2fd6}', to: '\u{2fff}', },
-    Range { from: '\u{3000}', to: '\u{3002}', },
-    Range { from: '\u{3003}', to: '\u{3035}', },
-    Range { from: '\u{3036}', to: '\u{303a}', },
-    Range { from: '\u{303b}', to: '\u{303f}', },
-    Range { from: '\u{3040}', to: '\u{3040}', },
-    Range { from: '\u{3041}', to: '\u{3096}', },
-    Range { from: '\u{3097}', to: '\u{3098}', },
-    Range { from: '\u{3099}', to: '\u{309a}', },
-    Range { from: '\u{309b}', to: '\u{309c}', },
-    Range { from: '\u{309d}', to: '\u{309e}', },
-    Range { from: '\u{309f}', to: '\u{309f}', },
-    Range { from: '\u{30a0}', to: '\u{30fe}', },
-    Range { from: '\u{30ff}', to: '\u{30ff}', },
-    Range { from: '\u{3100}', to: '\u{3104}', },
-    Range { from: '\u{3105}', to: '\u{312f}', },
-    Range { from: '\u{3130}', to: '\u{318f}', },
-    Range { from: '\u{3190}', to: '\u{3191}', },
-    Range { from: '\u{3192}', to: '\u{319f}', },
-    Range { from: '\u{31a0}', to: '\u{31e3}', },
-    Range { from: '\u{31e4}', to: '\u{31ef}', },
-    Range { from: '\u{31f0}', to: '\u{31ff}', },
-    Range { from: '\u{3200}', to: '\u{3247}', },
-    Range { from: '\u{3248}', to: '\u{324f}', },
-    Range { from: '\u{3250}', to: '\u{33ff}', },
-    Range { from: '\u{3400}', to: '\u{9ffc}', },
-    Range { from: '\u{9ffd}', to: '\u{9fff}', },
-    Range { from: '\u{a000}', to: '\u{a48c}', },
-    Range { from: '\u{a48d}', to: '\u{a48f}', },
-    Range { from: '\u{a490}', to: '\u{a4c6}', },
-    Range { from: '\u{a4c7}', to: '\u{a4cf}', },
-    Range { from: '\u{a4d0}', to: '\u{a62b}', },
-    Range { from: '\u{a62c}', to: '\u{a63f}', },
-    Range { from: '\u{a640}', to: '\u{a66c}', },
-    Range { from: '\u{a66d}', to: '\u{a67f}', },
-    Range { from: '\u{a680}', to: '\u{a69d}', },
-    Range { from: '\u{a69e}', to: '\u{a6f7}', },
-    Range { from: '\u{a6f8}', to: '\u{a6ff}', },
-    Range { from: '\u{a700}', to: '\u{a721}', },
-    Range { from: '\u{a722}', to: '\u{a72e}', },
-    Range { from: '\u{a72f}', to: '\u{a731}', },
-    Range { from: '\u{a732}', to: '\u{a770}', },
-    Range { from: '\u{a771}', to: '\u{a778}', },
-    Range { from: '\u{a779}', to: '\u{a786}', },
-    Range { from: '\u{a787}', to: '\u{a78a}', },
-    Range { from: '\u{a78b}', to: '\u{a78d}', },
-    Range { from: '\u{a78e}', to: '\u{a78f}', },
-    Range { from: '\u{a790}', to: '\u{a792}', },
-    Range { from: '\u{a793}', to: '\u{a795}', },
-    Range { from: '\u{a796}', to: '\u{a7bf}', },
-    Range { from: '\u{a7c0}', to: '\u{a7c1}', },
-    Range { from: '\u{a7c2}', to: '\u{a7ca}', },
-    Range { from: '\u{a7cb}', to: '\u{a7f4}', },
-    Range { from: '\u{a7f5}', to: '\u{a7f5}', },
-    Range { from: '\u{a7f6}', to: '\u{a7f7}', },
-    Range { from: '\u{a7f8}', to: '\u{a7f9}', },
-    Range { from: '\u{a7fa}', to: '\u{a82c}', },
-    Range { from: '\u{a82d}', to: '\u{a82f}', },
-    Range { from: '\u{a830}', to: '\u{a839}', },
-    Range { from: '\u{a83a}', to: '\u{a83f}', },
-    Range { from: '\u{a840}', to: '\u{a877}', },
-    Range { from: '\u{a878}', to: '\u{a87f}', },
-    Range { from: '\u{a880}', to: '\u{a8c5}', },
-    Range { from: '\u{a8c6}', to: '\u{a8cd}', },
-    Range { from: '\u{a8ce}', to: '\u{a8d9}', },
-    Range { from: '\u{a8da}', to: '\u{a8df}', },
-    Range { from: '\u{a8e0}', to: '\u{a953}', },
-    Range { from: '\u{a954}', to: '\u{a95e}', },
-    Range { from: '\u{a95f}', to: '\u{a97c}', },
-    Range { from: '\u{a97d}', to: '\u{a97f}', },
-    Range { from: '\u{a980}', to: '\u{a9cd}', },
-    Range { from: '\u{a9ce}', to: '\u{a9ce}', },
-    Range { from: '\u{a9cf}', to: '\u{a9d9}', },
-    Range { from: '\u{a9da}', to: '\u{a9dd}', },
-    Range { from: '\u{a9de}', to: '\u{a9fe}', },
-    Range { from: '\u{a9ff}', to: '\u{a9ff}', },
-    Range { from: '\u{aa00}', to: '\u{aa36}', },
-    Range { from: '\u{aa37}', to: '\u{aa3f}', },
-    Range { from: '\u{aa40}', to: '\u{aa4d}', },
-    Range { from: '\u{aa4e}', to: '\u{aa4f}', },
-    Range { from: '\u{aa50}', to: '\u{aa59}', },
-    Range { from: '\u{aa5a}', to: '\u{aa5b}', },
-    Range { from: '\u{aa5c}', to: '\u{aac2}', },
-    Range { from: '\u{aac3}', to: '\u{aada}', },
-    Range { from: '\u{aadb}', to: '\u{aaf6}', },
-    Range { from: '\u{aaf7}', to: '\u{ab00}', },
-    Range { from: '\u{ab01}', to: '\u{ab06}', },
-    Range { from: '\u{ab07}', to: '\u{ab08}', },
-    Range { from: '\u{ab09}', to: '\u{ab0e}', },
-    Range { from: '\u{ab0f}', to: '\u{ab10}', },
-    Range { from: '\u{ab11}', to: '\u{ab16}', },
-    Range { from: '\u{ab17}', to: '\u{ab1f}', },
-    Range { from: '\u{ab20}', to: '\u{ab26}', },
-    Range { from: '\u{ab27}', to: '\u{ab27}', },
-    Range { from: '\u{ab28}', to: '\u{ab2e}', },
-    Range { from: '\u{ab2f}', to: '\u{ab2f}', },
-    Range { from: '\u{ab30}', to: '\u{ab5b}', },
-    Range { from: '\u{ab5c}', to: '\u{ab5f}', },
-    Range { from: '\u{ab60}', to: '\u{ab68}', },
-    Range { from: '\u{ab69}', to: '\u{ab69}', },
-    Range { from: '\u{ab6a}', to: '\u{ab6b}', },
-    Range { from: '\u{ab6c}', to: '\u{ab6f}', },
-    Range { from: '\u{ab70}', to: '\u{abbf}', },
-    Range { from: '\u{abc0}', to: '\u{abed}', },
-    Range { from: '\u{abee}', to: '\u{abef}', },
-    Range { from: '\u{abf0}', to: '\u{abf9}', },
-    Range { from: '\u{abfa}', to: '\u{abff}', },
-    Range { from: '\u{ac00}', to: '\u{d7a3}', },
-    Range { from: '\u{d7a4}', to: '\u{d7af}', },
-    Range { from: '\u{d7b0}', to: '\u{d7c6}', },
-    Range { from: '\u{d7c7}', to: '\u{d7ca}', },
-    Range { from: '\u{d7cb}', to: '\u{d7fb}', },
-    Range { from: '\u{d7fc}', to: '\u{f8ff}', },
-    Range { from: '\u{f900}', to: '\u{f906}', },
-    Range { from: '\u{f907}', to: '\u{f908}', },
-    Range { from: '\u{f909}', to: '\u{fa0d}', },
-    Range { from: '\u{fa0e}', to: '\u{fa0f}', },
-    Range { from: '\u{fa10}', to: '\u{fa12}', },
-    Range { from: '\u{fa13}', to: '\u{fa14}', },
-    Range { from: '\u{fa15}', to: '\u{fa22}', },
-    Range { from: '\u{fa23}', to: '\u{fa24}', },
-    Range { from: '\u{fa25}', to: '\u{fa26}', },
-    Range { from: '\u{fa27}', to: '\u{fa29}', },
-    Range { from: '\u{fa2a}', to: '\u{fa5c}', },
-    Range { from: '\u{fa5d}', to: '\u{fa5e}', },
-    Range { from: '\u{fa5f}', to: '\u{fa6d}', },
-    Range { from: '\u{fa6e}', to: '\u{fa6f}', },
-    Range { from: '\u{fa70}', to: '\u{fad9}', },
-    Range { from: '\u{fada}', to: '\u{faff}', },
-    Range { from: '\u{fb00}', to: '\u{fb04}', },
-    Range { from: '\u{fb05}', to: '\u{fb06}', },
-    Range { from: '\u{fb07}', to: '\u{fb12}', },
-    Range { from: '\u{fb13}', to: '\u{fb17}', },
-    Range { from: '\u{fb18}', to: '\u{fb1c}', },
-    Range { from: '\u{fb1d}', to: '\u{fb4f}', },
-    Range { from: '\u{fb50}', to: '\u{fb51}', },
-    Range { from: '\u{fb52}', to: '\u{fb55}', },
-    Range { from: '\u{fb56}', to: '\u{fb59}', },
-    Range { from: '\u{fb5a}', to: '\u{fb5d}', },
-    Range { from: '\u{fb5e}', to: '\u{fb61}', },
-    Range { from: '\u{fb62}', to: '\u{fb65}', },
-    Range { from: '\u{fb66}', to: '\u{fb69}', },
-    Range { from: '\u{fb6a}', to: '\u{fb6d}', },
-    Range { from: '\u{fb6e}', to: '\u{fb71}', },
-    Range { from: '\u{fb72}', to: '\u{fb75}', },
-    Range { from: '\u{fb76}', to: '\u{fb79}', },
-    Range { from: '\u{fb7a}', to: '\u{fb7d}', },
-    Range { from: '\u{fb7e}', to: '\u{fb81}', },
-    Range { from: '\u{fb82}', to: '\u{fb83}', },
-    Range { from: '\u{fb84}', to: '\u{fb85}', },
-    Range { from: '\u{fb86}', to: '\u{fb87}', },
-    Range { from: '\u{fb88}', to: '\u{fb89}', },
-    Range { from: '\u{fb8a}', to: '\u{fb8b}', },
-    Range { from: '\u{fb8c}', to: '\u{fb8d}', },
-    Range { from: '\u{fb8e}', to: '\u{fb91}', },
-    Range { from: '\u{fb92}', to: '\u{fb95}', },
-    Range { from: '\u{fb96}', to: '\u{fb99}', },
-    Range { from: '\u{fb9a}', to: '\u{fb9d}', },
-    Range { from: '\u{fb9e}', to: '\u{fb9f}', },
-    Range { from: '\u{fba0}', to: '\u{fba3}', },
-    Range { from: '\u{fba4}', to: '\u{fba5}', },
-    Range { from: '\u{fba6}', to: '\u{fba9}', },
-    Range { from: '\u{fbaa}', to: '\u{fbad}', },
-    Range { from: '\u{fbae}', to: '\u{fbaf}', },
-    Range { from: '\u{fbb0}', to: '\u{fbb1}', },
-    Range { from: '\u{fbb2}', to: '\u{fbc1}', },
-    Range { from: '\u{fbc2}', to: '\u{fbd2}', },
-    Range { from: '\u{fbd3}', to: '\u{fbd6}', },
-    Range { from: '\u{fbd7}', to: '\u{fbd8}', },
-    Range { from: '\u{fbd9}', to: '\u{fbda}', },
-    Range { from: '\u{fbdb}', to: '\u{fbdc}', },
-    Range { from: '\u{fbdd}', to: '\u{fbdd}', },
-    Range { from: '\u{fbde}', to: '\u{fbdf}', },
-    Range { from: '\u{fbe0}', to: '\u{fbe1}', },
-    Range { from: '\u{fbe2}', to: '\u{fbe3}', },
-    Range { from: '\u{fbe4}', to: '\u{fbe7}', },
-    Range { from: '\u{fbe8}', to: '\u{fbe9}', },
-    Range { from: '\u{fbea}', to: '\u{fbeb}', },
-    Range { from: '\u{fbec}', to: '\u{fbed}', },
-    Range { from: '\u{fbee}', to: '\u{fbef}', },
-    Range { from: '\u{fbf0}', to: '\u{fbf1}', },
-    Range { from: '\u{fbf2}', to: '\u{fbf3}', },
-    Range { from: '\u{fbf4}', to: '\u{fbf5}', },
-    Range { from: '\u{fbf6}', to: '\u{fbf8}', },
-    Range { from: '\u{fbf9}', to: '\u{fbfb}', },
-    Range { from: '\u{fbfc}', to: '\u{fbff}', },
-    Range { from: '\u{fc00}', to: '\u{fd3b}', },
-    Range { from: '\u{fd3c}', to: '\u{fd3d}', },
-    Range { from: '\u{fd3e}', to: '\u{fd3f}', },
-    Range { from: '\u{fd40}', to: '\u{fd4f}', },
-    Range { from: '\u{fd50}', to: '\u{fd50}', },
-    Range { from: '\u{fd51}', to: '\u{fd52}', },
-    Range { from: '\u{fd53}', to: '\u{fd57}', },
-    Range { from: '\u{fd58}', to: '\u{fd59}', },
-    Range { from: '\u{fd5a}', to: '\u{fd5e}', },
-    Range { from: '\u{fd5f}', to: '\u{fd60}', },
-    Range { from: '\u{fd61}', to: '\u{fd61}', },
-    Range { from: '\u{fd62}', to: '\u{fd63}', },
-    Range { from: '\u{fd64}', to: '\u{fd65}', },
-    Range { from: '\u{fd66}', to: '\u{fd66}', },
-    Range { from: '\u{fd67}', to: '\u{fd68}', },
-    Range { from: '\u{fd69}', to: '\u{fd69}', },
-    Range { from: '\u{fd6a}', to: '\u{fd6b}', },
-    Range { from: '\u{fd6c}', to: '\u{fd6d}', },
-    Range { from: '\u{fd6e}', to: '\u{fd6e}', },
-    Range { from: '\u{fd6f}', to: '\u{fd70}', },
-    Range { from: '\u{fd71}', to: '\u{fd72}', },
-    Range { from: '\u{fd73}', to: '\u{fd75}', },
-    Range { from: '\u{fd76}', to: '\u{fd77}', },
-    Range { from: '\u{fd78}', to: '\u{fd7b}', },
-    Range { from: '\u{fd7c}', to: '\u{fd7d}', },
-    Range { from: '\u{fd7e}', to: '\u{fd82}', },
-    Range { from: '\u{fd83}', to: '\u{fd84}', },
-    Range { from: '\u{fd85}', to: '\u{fd86}', },
-    Range { from: '\u{fd87}', to: '\u{fd88}', },
-    Range { from: '\u{fd89}', to: '\u{fd8f}', },
-    Range { from: '\u{fd90}', to: '\u{fd91}', },
-    Range { from: '\u{fd92}', to: '\u{fd96}', },
-    Range { from: '\u{fd97}', to: '\u{fd98}', },
-    Range { from: '\u{fd99}', to: '\u{fd9b}', },
-    Range { from: '\u{fd9c}', to: '\u{fd9d}', },
-    Range { from: '\u{fd9e}', to: '\u{fdc7}', },
-    Range { from: '\u{fdc8}', to: '\u{fdef}', },
-    Range { from: '\u{fdf0}', to: '\u{fdfd}', },
-    Range { from: '\u{fdfe}', to: '\u{fdff}', },
-    Range { from: '\u{fe00}', to: '\u{fe0f}', },
-    Range { from: '\u{fe10}', to: '\u{fe18}', },
-    Range { from: '\u{fe19}', to: '\u{fe1f}', },
-    Range { from: '\u{fe20}', to: '\u{fe2f}', },
-    Range { from: '\u{fe30}', to: '\u{fe32}', },
-    Range { from: '\u{fe33}', to: '\u{fe34}', },
-    Range { from: '\u{fe35}', to: '\u{fe44}', },
-    Range { from: '\u{fe45}', to: '\u{fe46}', },
-    Range { from: '\u{fe47}', to: '\u{fe48}', },
-    Range { from: '\u{fe49}', to: '\u{fe4c}', },
-    Range { from: '\u{fe4d}', to: '\u{fe4f}', },
-    Range { from: '\u{fe50}', to: '\u{fe51}', },
-    Range { from: '\u{fe52}', to: '\u{fe53}', },
-    Range { from: '\u{fe54}', to: '\u{fe6b}', },
-    Range { from: '\u{fe6c}', to: '\u{fe6f}', },
-    Range { from: '\u{fe70}', to: '\u{fe80}', },
-    Range { from: '\u{fe81}', to: '\u{fe82}', },
-    Range { from: '\u{fe83}', to: '\u{fe84}', },
-    Range { from: '\u{fe85}', to: '\u{fe86}', },
-    Range { from: '\u{fe87}', to: '\u{fe88}', },
-    Range { from: '\u{fe89}', to: '\u{fe8c}', },
-    Range { from: '\u{fe8d}', to: '\u{fe8e}', },
-    Range { from: '\u{fe8f}', to: '\u{fe92}', },
-    Range { from: '\u{fe93}', to: '\u{fe94}', },
-    Range { from: '\u{fe95}', to: '\u{fe98}', },
-    Range { from: '\u{fe99}', to: '\u{fe9c}', },
-    Range { from: '\u{fe9d}', to: '\u{fea0}', },
-    Range { from: '\u{fea1}', to: '\u{fea4}', },
-    Range { from: '\u{fea5}', to: '\u{fea8}', },
-    Range { from: '\u{fea9}', to: '\u{feaa}', },
-    Range { from: '\u{feab}', to: '\u{feac}', },
-    Range { from: '\u{fead}', to: '\u{feae}', },
-    Range { from: '\u{feaf}', to: '\u{feb0}', },
-    Range { from: '\u{feb1}', to: '\u{feb4}', },
-    Range { from: '\u{feb5}', to: '\u{feb8}', },
-    Range { from: '\u{feb9}', to: '\u{febc}', },
-    Range { from: '\u{febd}', to: '\u{fec0}', },
-    Range { from: '\u{fec1}', to: '\u{fec4}', },
-    Range { from: '\u{fec5}', to: '\u{fec8}', },
-    Range { from: '\u{fec9}', to: '\u{fecc}', },
-    Range { from: '\u{fecd}', to: '\u{fed0}', },
-    Range { from: '\u{fed1}', to: '\u{fed4}', },
-    Range { from: '\u{fed5}', to: '\u{fed8}', },
-    Range { from: '\u{fed9}', to: '\u{fedc}', },
-    Range { from: '\u{fedd}', to: '\u{fee0}', },
-    Range { from: '\u{fee1}', to: '\u{fee4}', },
-    Range { from: '\u{fee5}', to: '\u{fee8}', },
-    Range { from: '\u{fee9}', to: '\u{feec}', },
-    Range { from: '\u{feed}', to: '\u{feee}', },
-    Range { from: '\u{feef}', to: '\u{fef0}', },
-    Range { from: '\u{fef1}', to: '\u{fef4}', },
-    Range { from: '\u{fef5}', to: '\u{fef6}', },
-    Range { from: '\u{fef7}', to: '\u{fef8}', },
-    Range { from: '\u{fef9}', to: '\u{fefa}', },
-    Range { from: '\u{fefb}', to: '\u{fefc}', },
-    Range { from: '\u{fefd}', to: '\u{fefe}', },
-    Range { from: '\u{feff}', to: '\u{ffbe}', },
-    Range { from: '\u{ffbf}', to: '\u{ffc1}', },
-    Range { from: '\u{ffc2}', to: '\u{ffc7}', },
-    Range { from: '\u{ffc8}', to: '\u{ffc9}', },
-    Range { from: '\u{ffca}', to: '\u{ffcf}', },
-    Range { from: '\u{ffd0}', to: '\u{ffd1}', },
-    Range { from: '\u{ffd2}', to: '\u{ffd7}', },
-    Range { from: '\u{ffd8}', to: '\u{ffd9}', },
-    Range { from: '\u{ffda}', to: '\u{ffdc}', },
-    Range { from: '\u{ffdd}', to: '\u{ffdf}', },
-    Range { from: '\u{ffe0}', to: '\u{ffee}', },
-    Range { from: '\u{ffef}', to: '\u{ffff}', },
-    Range { from: '\u{10000}', to: '\u{1000b}', },
-    Range { from: '\u{1000c}', to: '\u{1000c}', },
-    Range { from: '\u{1000d}', to: '\u{10026}', },
-    Range { from: '\u{10027}', to: '\u{10027}', },
-    Range { from: '\u{10028}', to: '\u{1003a}', },
-    Range { from: '\u{1003b}', to: '\u{1003b}', },
-    Range { from: '\u{1003c}', to: '\u{1003d}', },
-    Range { from: '\u{1003e}', to: '\u{1003e}', },
-    Range { from: '\u{1003f}', to: '\u{1004d}', },
-    Range { from: '\u{1004e}', to: '\u{1004f}', },
-    Range { from: '\u{10050}', to: '\u{1005d}', },
-    Range { from: '\u{1005e}', to: '\u{1007f}', },
-    Range { from: '\u{10080}', to: '\u{100fa}', },
-    Range { from: '\u{100fb}', to: '\u{100ff}', },
-    Range { from: '\u{10100}', to: '\u{10102}', },
-    Range { from: '\u{10103}', to: '\u{10106}', },
-    Range { from: '\u{10107}', to: '\u{10133}', },
-    Range { from: '\u{10134}', to: '\u{10136}', },
-    Range { from: '\u{10137}', to: '\u{1018e}', },
-    Range { from: '\u{1018f}', to: '\u{1018f}', },
-    Range { from: '\u{10190}', to: '\u{1019c}', },
-    Range { from: '\u{1019d}', to: '\u{1019f}', },
-    Range { from: '\u{101a0}', to: '\u{101a0}', },
-    Range { from: '\u{101a1}', to: '\u{101cf}', },
-    Range { from: '\u{101d0}', to: '\u{101fd}', },
-    Range { from: '\u{101fe}', to: '\u{1027f}', },
-    Range { from: '\u{10280}', to: '\u{1029c}', },
-    Range { from: '\u{1029d}', to: '\u{1029f}', },
-    Range { from: '\u{102a0}', to: '\u{102d0}', },
-    Range { from: '\u{102d1}', to: '\u{102df}', },
-    Range { from: '\u{102e0}', to: '\u{102fb}', },
-    Range { from: '\u{102fc}', to: '\u{102ff}', },
-    Range { from: '\u{10300}', to: '\u{10323}', },
-    Range { from: '\u{10324}', to: '\u{1032c}', },
-    Range { from: '\u{1032d}', to: '\u{1034a}', },
-    Range { from: '\u{1034b}', to: '\u{1034f}', },
-    Range { from: '\u{10350}', to: '\u{1037a}', },
-    Range { from: '\u{1037b}', to: '\u{1037f}', },
-    Range { from: '\u{10380}', to: '\u{1039d}', },
-    Range { from: '\u{1039e}', to: '\u{1039e}', },
-    Range { from: '\u{1039f}', to: '\u{103c3}', },
-    Range { from: '\u{103c4}', to: '\u{103c7}', },
-    Range { from: '\u{103c8}', to: '\u{103d5}', },
-    Range { from: '\u{103d6}', to: '\u{103ff}', },
-    Range { from: '\u{10400}', to: '\u{10427}', },
-    Range { from: '\u{10428}', to: '\u{1049d}', },
-    Range { from: '\u{1049e}', to: '\u{1049f}', },
-    Range { from: '\u{104a0}', to: '\u{104a9}', },
-    Range { from: '\u{104aa}', to: '\u{104af}', },
-    Range { from: '\u{104b0}', to: '\u{104d3}', },
-    Range { from: '\u{104d4}', to: '\u{104d7}', },
-    Range { from: '\u{104d8}', to: '\u{104fb}', },
-    Range { from: '\u{104fc}', to: '\u{104ff}', },
-    Range { from: '\u{10500}', to: '\u{10527}', },
-    Range { from: '\u{10528}', to: '\u{1052f}', },
-    Range { from: '\u{10530}', to: '\u{10563}', },
-    Range { from: '\u{10564}', to: '\u{1056e}', },
-    Range { from: '\u{1056f}', to: '\u{1056f}', },
-    Range { from: '\u{10570}', to: '\u{105ff}', },
-    Range { from: '\u{10600}', to: '\u{10736}', },
-    Range { from: '\u{10737}', to: '\u{1073f}', },
-    Range { from: '\u{10740}', to: '\u{10755}', },
-    Range { from: '\u{10756}', to: '\u{1075f}', },
-    Range { from: '\u{10760}', to: '\u{10767}', },
-    Range { from: '\u{10768}', to: '\u{107ff}', },
-    Range { from: '\u{10800}', to: '\u{10805}', },
-    Range { from: '\u{10806}', to: '\u{10807}', },
-    Range { from: '\u{10808}', to: '\u{10809}', },
-    Range { from: '\u{1080a}', to: '\u{10835}', },
-    Range { from: '\u{10836}', to: '\u{10836}', },
-    Range { from: '\u{10837}', to: '\u{10838}', },
-    Range { from: '\u{10839}', to: '\u{1083b}', },
-    Range { from: '\u{1083c}', to: '\u{1083c}', },
-    Range { from: '\u{1083d}', to: '\u{1083e}', },
-    Range { from: '\u{1083f}', to: '\u{10855}', },
-    Range { from: '\u{10856}', to: '\u{10856}', },
-    Range { from: '\u{10857}', to: '\u{1089e}', },
-    Range { from: '\u{1089f}', to: '\u{108a6}', },
-    Range { from: '\u{108a7}', to: '\u{108af}', },
-    Range { from: '\u{108b0}', to: '\u{108df}', },
-    Range { from: '\u{108e0}', to: '\u{108f2}', },
-    Range { from: '\u{108f3}', to: '\u{108f3}', },
-    Range { from: '\u{108f4}', to: '\u{108f5}', },
-    Range { from: '\u{108f6}', to: '\u{108fa}', },
-    Range { from: '\u{108fb}', to: '\u{1091b}', },
-    Range { from: '\u{1091c}', to: '\u{1091e}', },
-    Range { from: '\u{1091f}', to: '\u{10939}', },
-    Range { from: '\u{1093a}', to: '\u{1093e}', },
-    Range { from: '\u{1093f}', to: '\u{1093f}', },
-    Range { from: '\u{10940}', to: '\u{1097f}', },
-    Range { from: '\u{10980}', to: '\u{109b7}', },
-    Range { from: '\u{109b8}', to: '\u{109bb}', },
-    Range { from: '\u{109bc}', to: '\u{109cf}', },
-    Range { from: '\u{109d0}', to: '\u{109d1}', },
-    Range { from: '\u{109d2}', to: '\u{10a03}', },
-    Range { from: '\u{10a04}', to: '\u{10a04}', },
-    Range { from: '\u{10a05}', to: '\u{10a06}', },
-    Range { from: '\u{10a07}', to: '\u{10a0b}', },
-    Range { from: '\u{10a0c}', to: '\u{10a13}', },
-    Range { from: '\u{10a14}', to: '\u{10a14}', },
-    Range { from: '\u{10a15}', to: '\u{10a17}', },
-    Range { from: '\u{10a18}', to: '\u{10a18}', },
-    Range { from: '\u{10a19}', to: '\u{10a35}', },
-    Range { from: '\u{10a36}', to: '\u{10a37}', },
-    Range { from: '\u{10a38}', to: '\u{10a3a}', },
-    Range { from: '\u{10a3b}', to: '\u{10a3e}', },
-    Range { from: '\u{10a3f}', to: '\u{10a48}', },
-    Range { from: '\u{10a49}', to: '\u{10a4f}', },
-    Range { from: '\u{10a50}', to: '\u{10a58}', },
-    Range { from: '\u{10a59}', to: '\u{10a5f}', },
-    Range { from: '\u{10a60}', to: '\u{10a9f}', },
-    Range { from: '\u{10aa0}', to: '\u{10abf}', },
-    Range { from: '\u{10ac0}', to: '\u{10ae6}', },
-    Range { from: '\u{10ae7}', to: '\u{10aea}', },
-    Range { from: '\u{10aeb}', to: '\u{10af6}', },
-    Range { from: '\u{10af7}', to: '\u{10aff}', },
-    Range { from: '\u{10b00}', to: '\u{10b35}', },
-    Range { from: '\u{10b36}', to: '\u{10b38}', },
-    Range { from: '\u{10b39}', to: '\u{10b55}', },
-    Range { from: '\u{10b56}', to: '\u{10b57}', },
-    Range { from: '\u{10b58}', to: '\u{10b72}', },
-    Range { from: '\u{10b73}', to: '\u{10b77}', },
-    Range { from: '\u{10b78}', to: '\u{10b91}', },
-    Range { from: '\u{10b92}', to: '\u{10b98}', },
-    Range { from: '\u{10b99}', to: '\u{10b9c}', },
-    Range { from: '\u{10b9d}', to: '\u{10ba8}', },
-    Range { from: '\u{10ba9}', to: '\u{10baf}', },
-    Range { from: '\u{10bb0}', to: '\u{10bff}', },
-    Range { from: '\u{10c00}', to: '\u{10c48}', },
-    Range { from: '\u{10c49}', to: '\u{10c7f}', },
-    Range { from: '\u{10c80}', to: '\u{10cb2}', },
-    Range { from: '\u{10cb3}', to: '\u{10cbf}', },
-    Range { from: '\u{10cc0}', to: '\u{10cf2}', },
-    Range { from: '\u{10cf3}', to: '\u{10cf9}', },
-    Range { from: '\u{10cfa}', to: '\u{10d27}', },
-    Range { from: '\u{10d28}', to: '\u{10d2f}', },
-    Range { from: '\u{10d30}', to: '\u{10d39}', },
-    Range { from: '\u{10d3a}', to: '\u{10e5f}', },
-    Range { from: '\u{10e60}', to: '\u{10e7e}', },
-    Range { from: '\u{10e7f}', to: '\u{10e7f}', },
-    Range { from: '\u{10e80}', to: '\u{10ea9}', },
-    Range { from: '\u{10eaa}', to: '\u{10eaa}', },
-    Range { from: '\u{10eab}', to: '\u{10ead}', },
-    Range { from: '\u{10eae}', to: '\u{10eaf}', },
-    Range { from: '\u{10eb0}', to: '\u{10eb1}', },
-    Range { from: '\u{10eb2}', to: '\u{10eff}', },
-    Range { from: '\u{10f00}', to: '\u{10f27}', },
-    Range { from: '\u{10f28}', to: '\u{10f2f}', },
-    Range { from: '\u{10f30}', to: '\u{10f59}', },
-    Range { from: '\u{10f5a}', to: '\u{10faf}', },
-    Range { from: '\u{10fb0}', to: '\u{10fcb}', },
-    Range { from: '\u{10fcc}', to: '\u{10fdf}', },
-    Range { from: '\u{10fe0}', to: '\u{10ff6}', },
-    Range { from: '\u{10ff7}', to: '\u{10fff}', },
-    Range { from: '\u{11000}', to: '\u{1104d}', },
-    Range { from: '\u{1104e}', to: '\u{11051}', },
-    Range { from: '\u{11052}', to: '\u{1106f}', },
-    Range { from: '\u{11070}', to: '\u{1107e}', },
-    Range { from: '\u{1107f}', to: '\u{110bc}', },
-    Range { from: '\u{110bd}', to: '\u{110bd}', },
-    Range { from: '\u{110be}', to: '\u{110c1}', },
-    Range { from: '\u{110c2}', to: '\u{110cf}', },
-    Range { from: '\u{110d0}', to: '\u{110e8}', },
-    Range { from: '\u{110e9}', to: '\u{110ef}', },
-    Range { from: '\u{110f0}', to: '\u{110f9}', },
-    Range { from: '\u{110fa}', to: '\u{110ff}', },
-    Range { from: '\u{11100}', to: '\u{11134}', },
-    Range { from: '\u{11135}', to: '\u{11135}', },
-    Range { from: '\u{11136}', to: '\u{11147}', },
-    Range { from: '\u{11148}', to: '\u{1114f}', },
-    Range { from: '\u{11150}', to: '\u{11176}', },
-    Range { from: '\u{11177}', to: '\u{1117f}', },
-    Range { from: '\u{11180}', to: '\u{111df}', },
-    Range { from: '\u{111e0}', to: '\u{111e0}', },
-    Range { from: '\u{111e1}', to: '\u{111f4}', },
-    Range { from: '\u{111f5}', to: '\u{111ff}', },
-    Range { from: '\u{11200}', to: '\u{11211}', },
-    Range { from: '\u{11212}', to: '\u{11212}', },
-    Range { from: '\u{11213}', to: '\u{1123e}', },
-    Range { from: '\u{1123f}', to: '\u{1127f}', },
-    Range { from: '\u{11280}', to: '\u{11286}', },
-    Range { from: '\u{11287}', to: '\u{11289}', },
-    Range { from: '\u{1128a}', to: '\u{1128d}', },
-    Range { from: '\u{1128e}', to: '\u{1128e}', },
-    Range { from: '\u{1128f}', to: '\u{1129d}', },
-    Range { from: '\u{1129e}', to: '\u{1129e}', },
-    Range { from: '\u{1129f}', to: '\u{112a9}', },
-    Range { from: '\u{112aa}', to: '\u{112af}', },
-    Range { from: '\u{112b0}', to: '\u{112ea}', },
-    Range { from: '\u{112eb}', to: '\u{112ef}', },
-    Range { from: '\u{112f0}', to: '\u{112f9}', },
-    Range { from: '\u{112fa}', to: '\u{112ff}', },
-    Range { from: '\u{11300}', to: '\u{11303}', },
-    Range { from: '\u{11304}', to: '\u{11304}', },
-    Range { from: '\u{11305}', to: '\u{1130c}', },
-    Range { from: '\u{1130d}', to: '\u{1130e}', },
-    Range { from: '\u{1130f}', to: '\u{11310}', },
-    Range { from: '\u{11311}', to: '\u{11312}', },
-    Range { from: '\u{11313}', to: '\u{11328}', },
-    Range { from: '\u{11329}', to: '\u{11329}', },
-    Range { from: '\u{1132a}', to: '\u{11330}', },
-    Range { from: '\u{11331}', to: '\u{11331}', },
-    Range { from: '\u{11332}', to: '\u{11333}', },
-    Range { from: '\u{11334}', to: '\u{11334}', },
-    Range { from: '\u{11335}', to: '\u{11339}', },
-    Range { from: '\u{1133a}', to: '\u{1133a}', },
-    Range { from: '\u{1133b}', to: '\u{11344}', },
-    Range { from: '\u{11345}', to: '\u{11346}', },
-    Range { from: '\u{11347}', to: '\u{11348}', },
-    Range { from: '\u{11349}', to: '\u{1134a}', },
-    Range { from: '\u{1134b}', to: '\u{1134d}', },
-    Range { from: '\u{1134e}', to: '\u{1134f}', },
-    Range { from: '\u{11350}', to: '\u{11350}', },
-    Range { from: '\u{11351}', to: '\u{11356}', },
-    Range { from: '\u{11357}', to: '\u{11357}', },
-    Range { from: '\u{11358}', to: '\u{1135c}', },
-    Range { from: '\u{1135d}', to: '\u{11363}', },
-    Range { from: '\u{11364}', to: '\u{11365}', },
-    Range { from: '\u{11366}', to: '\u{1136c}', },
-    Range { from: '\u{1136d}', to: '\u{1136f}', },
-    Range { from: '\u{11370}', to: '\u{11374}', },
-    Range { from: '\u{11375}', to: '\u{113ff}', },
-    Range { from: '\u{11400}', to: '\u{1145b}', },
-    Range { from: '\u{1145c}', to: '\u{1145c}', },
-    Range { from: '\u{1145d}', to: '\u{11461}', },
-    Range { from: '\u{11462}', to: '\u{1147f}', },
-    Range { from: '\u{11480}', to: '\u{114c7}', },
-    Range { from: '\u{114c8}', to: '\u{114cf}', },
-    Range { from: '\u{114d0}', to: '\u{114d9}', },
-    Range { from: '\u{114da}', to: '\u{1157f}', },
-    Range { from: '\u{11580}', to: '\u{115b5}', },
-    Range { from: '\u{115b6}', to: '\u{115b7}', },
-    Range { from: '\u{115b8}', to: '\u{115dd}', },
-    Range { from: '\u{115de}', to: '\u{115ff}', },
-    Range { from: '\u{11600}', to: '\u{11644}', },
-    Range { from: '\u{11645}', to: '\u{1164f}', },
-    Range { from: '\u{11650}', to: '\u{11659}', },
-    Range { from: '\u{1165a}', to: '\u{1165f}', },
-    Range { from: '\u{11660}', to: '\u{1166c}', },
-    Range { from: '\u{1166d}', to: '\u{1167f}', },
-    Range { from: '\u{11680}', to: '\u{116b8}', },
-    Range { from: '\u{116b9}', to: '\u{116bf}', },
-    Range { from: '\u{116c0}', to: '\u{116c9}', },
-    Range { from: '\u{116ca}', to: '\u{116ff}', },
-    Range { from: '\u{11700}', to: '\u{1171a}', },
-    Range { from: '\u{1171b}', to: '\u{1171c}', },
-    Range { from: '\u{1171d}', to: '\u{1172b}', },
-    Range { from: '\u{1172c}', to: '\u{1172f}', },
-    Range { from: '\u{11730}', to: '\u{1173f}', },
-    Range { from: '\u{11740}', to: '\u{117ff}', },
-    Range { from: '\u{11800}', to: '\u{1183b}', },
-    Range { from: '\u{1183c}', to: '\u{1189f}', },
-    Range { from: '\u{118a0}', to: '\u{118bf}', },
-    Range { from: '\u{118c0}', to: '\u{118f2}', },
-    Range { from: '\u{118f3}', to: '\u{118fe}', },
-    Range { from: '\u{118ff}', to: '\u{11906}', },
-    Range { from: '\u{11907}', to: '\u{11908}', },
-    Range { from: '\u{11909}', to: '\u{11909}', },
-    Range { from: '\u{1190a}', to: '\u{1190b}', },
-    Range { from: '\u{1190c}', to: '\u{11913}', },
-    Range { from: '\u{11914}', to: '\u{11914}', },
-    Range { from: '\u{11915}', to: '\u{11916}', },
-    Range { from: '\u{11917}', to: '\u{11917}', },
-    Range { from: '\u{11918}', to: '\u{11935}', },
-    Range { from: '\u{11936}', to: '\u{11936}', },
-    Range { from: '\u{11937}', to: '\u{11938}', },
-    Range { from: '\u{11939}', to: '\u{1193a}', },
-    Range { from: '\u{1193b}', to: '\u{11946}', },
-    Range { from: '\u{11947}', to: '\u{1194f}', },
-    Range { from: '\u{11950}', to: '\u{11959}', },
-    Range { from: '\u{1195a}', to: '\u{1199f}', },
-    Range { from: '\u{119a0}', to: '\u{119a7}', },
-    Range { from: '\u{119a8}', to: '\u{119a9}', },
-    Range { from: '\u{119aa}', to: '\u{119d7}', },
-    Range { from: '\u{119d8}', to: '\u{119d9}', },
-    Range { from: '\u{119da}', to: '\u{119e4}', },
-    Range { from: '\u{119e5}', to: '\u{119ff}', },
-    Range { from: '\u{11a00}', to: '\u{11a47}', },
-    Range { from: '\u{11a48}', to: '\u{11a4f}', },
-    Range { from: '\u{11a50}', to: '\u{11aa2}', },
-    Range { from: '\u{11aa3}', to: '\u{11abf}', },
-    Range { from: '\u{11ac0}', to: '\u{11af8}', },
-    Range { from: '\u{11af9}', to: '\u{11bff}', },
-    Range { from: '\u{11c00}', to: '\u{11c08}', },
-    Range { from: '\u{11c09}', to: '\u{11c09}', },
-    Range { from: '\u{11c0a}', to: '\u{11c36}', },
-    Range { from: '\u{11c37}', to: '\u{11c37}', },
-    Range { from: '\u{11c38}', to: '\u{11c45}', },
-    Range { from: '\u{11c46}', to: '\u{11c4f}', },
-    Range { from: '\u{11c50}', to: '\u{11c6c}', },
-    Range { from: '\u{11c6d}', to: '\u{11c6f}', },
-    Range { from: '\u{11c70}', to: '\u{11c8f}', },
-    Range { from: '\u{11c90}', to: '\u{11c91}', },
-    Range { from: '\u{11c92}', to: '\u{11ca7}', },
-    Range { from: '\u{11ca8}', to: '\u{11ca8}', },
-    Range { from: '\u{11ca9}', to: '\u{11cb6}', },
-    Range { from: '\u{11cb7}', to: '\u{11cff}', },
-    Range { from: '\u{11d00}', to: '\u{11d06}', },
-    Range { from: '\u{11d07}', to: '\u{11d07}', },
-    Range { from: '\u{11d08}', to: '\u{11d09}', },
-    Range { from: '\u{11d0a}', to: '\u{11d0a}', },
-    Range { from: '\u{11d0b}', to: '\u{11d36}', },
-    Range { from: '\u{11d37}', to: '\u{11d39}', },
-    Range { from: '\u{11d3a}', to: '\u{11d3b}', },
-    Range { from: '\u{11d3c}', to: '\u{11d3d}', },
-    Range { from: '\u{11d3e}', to: '\u{11d3e}', },
-    Range { from: '\u{11d3f}', to: '\u{11d47}', },
-    Range { from: '\u{11d48}', to: '\u{11d4f}', },
-    Range { from: '\u{11d50}', to: '\u{11d59}', },
-    Range { from: '\u{11d5a}', to: '\u{11d5f}', },
-    Range { from: '\u{11d60}', to: '\u{11d65}', },
-    Range { from: '\u{11d66}', to: '\u{11d66}', },
-    Range { from: '\u{11d67}', to: '\u{11d68}', },
-    Range { from: '\u{11d69}', to: '\u{11d69}', },
-    Range { from: '\u{11d6a}', to: '\u{11d8e}', },
-    Range { from: '\u{11d8f}', to: '\u{11d8f}', },
-    Range { from: '\u{11d90}', to: '\u{11d91}', },
-    Range { from: '\u{11d92}', to: '\u{11d92}', },
-    Range { from: '\u{11d93}', to: '\u{11d98}', },
-    Range { from: '\u{11d99}', to: '\u{11d9f}', },
-    Range { from: '\u{11da0}', to: '\u{11da9}', },
-    Range { from: '\u{11daa}', to: '\u{11edf}', },
-    Range { from: '\u{11ee0}', to: '\u{11ef8}', },
-    Range { from: '\u{11ef9}', to: '\u{11faf}', },
-    Range { from: '\u{11fb0}', to: '\u{11fb0}', },
-    Range { from: '\u{11fb1}', to: '\u{11fbf}', },
-    Range { from: '\u{11fc0}', to: '\u{11ff1}', },
-    Range { from: '\u{11ff2}', to: '\u{11ffe}', },
-    Range { from: '\u{11fff}', to: '\u{12399}', },
-    Range { from: '\u{1239a}', to: '\u{123ff}', },
-    Range { from: '\u{12400}', to: '\u{1246e}', },
-    Range { from: '\u{1246f}', to: '\u{1246f}', },
-    Range { from: '\u{12470}', to: '\u{12474}', },
-    Range { from: '\u{12475}', to: '\u{1247f}', },
-    Range { from: '\u{12480}', to: '\u{12543}', },
-    Range { from: '\u{12544}', to: '\u{12fff}', },
-    Range { from: '\u{13000}', to: '\u{1342e}', },
-    Range { from: '\u{1342f}', to: '\u{143ff}', },
-    Range { from: '\u{14400}', to: '\u{14646}', },
-    Range { from: '\u{14647}', to: '\u{167ff}', },
-    Range { from: '\u{16800}', to: '\u{16a38}', },
-    Range { from: '\u{16a39}', to: '\u{16a3f}', },
-    Range { from: '\u{16a40}', to: '\u{16a5e}', },
-    Range { from: '\u{16a5f}', to: '\u{16a5f}', },
-    Range { from: '\u{16a60}', to: '\u{16a69}', },
-    Range { from: '\u{16a6a}', to: '\u{16a6d}', },
-    Range { from: '\u{16a6e}', to: '\u{16a6f}', },
-    Range { from: '\u{16a70}', to: '\u{16acf}', },
-    Range { from: '\u{16ad0}', to: '\u{16aed}', },
-    Range { from: '\u{16aee}', to: '\u{16aef}', },
-    Range { from: '\u{16af0}', to: '\u{16af5}', },
-    Range { from: '\u{16af6}', to: '\u{16aff}', },
-    Range { from: '\u{16b00}', to: '\u{16b45}', },
-    Range { from: '\u{16b46}', to: '\u{16b4f}', },
-    Range { from: '\u{16b50}', to: '\u{16b59}', },
-    Range { from: '\u{16b5a}', to: '\u{16b5a}', },
-    Range { from: '\u{16b5b}', to: '\u{16b61}', },
-    Range { from: '\u{16b62}', to: '\u{16b62}', },
-    Range { from: '\u{16b63}', to: '\u{16b77}', },
-    Range { from: '\u{16b78}', to: '\u{16b7c}', },
-    Range { from: '\u{16b7d}', to: '\u{16b8f}', },
-    Range { from: '\u{16b90}', to: '\u{16e3f}', },
-    Range { from: '\u{16e40}', to: '\u{16e5f}', },
-    Range { from: '\u{16e60}', to: '\u{16e9a}', },
-    Range { from: '\u{16e9b}', to: '\u{16eff}', },
-    Range { from: '\u{16f00}', to: '\u{16f4a}', },
-    Range { from: '\u{16f4b}', to: '\u{16f4e}', },
-    Range { from: '\u{16f4f}', to: '\u{16f87}', },
-    Range { from: '\u{16f88}', to: '\u{16f8e}', },
-    Range { from: '\u{16f8f}', to: '\u{16f9f}', },
-    Range { from: '\u{16fa0}', to: '\u{16fdf}', },
-    Range { from: '\u{16fe0}', to: '\u{16fe4}', },
-    Range { from: '\u{16fe5}', to: '\u{16fef}', },
-    Range { from: '\u{16ff0}', to: '\u{16ff1}', },
-    Range { from: '\u{16ff2}', to: '\u{16fff}', },
-    Range { from: '\u{17000}', to: '\u{187f7}', },
-    Range { from: '\u{187f8}', to: '\u{187ff}', },
-    Range { from: '\u{18800}', to: '\u{18cd5}', },
-    Range { from: '\u{18cd6}', to: '\u{18cff}', },
-    Range { from: '\u{18d00}', to: '\u{18d08}', },
-    Range { from: '\u{18d09}', to: '\u{1afff}', },
-    Range { from: '\u{1b000}', to: '\u{1b11e}', },
-    Range { from: '\u{1b11f}', to: '\u{1b14f}', },
-    Range { from: '\u{1b150}', to: '\u{1b152}', },
-    Range { from: '\u{1b153}', to: '\u{1b163}', },
-    Range { from: '\u{1b164}', to: '\u{1b167}', },
-    Range { from: '\u{1b168}', to: '\u{1b16f}', },
-    Range { from: '\u{1b170}', to: '\u{1b2fb}', },
-    Range { from: '\u{1b2fc}', to: '\u{1bbff}', },
-    Range { from: '\u{1bc00}', to: '\u{1bc6a}', },
-    Range { from: '\u{1bc6b}', to: '\u{1bc6f}', },
-    Range { from: '\u{1bc70}', to: '\u{1bc7c}', },
-    Range { from: '\u{1bc7d}', to: '\u{1bc7f}', },
-    Range { from: '\u{1bc80}', to: '\u{1bc88}', },
-    Range { from: '\u{1bc89}', to: '\u{1bc8f}', },
-    Range { from: '\u{1bc90}', to: '\u{1bc99}', },
-    Range { from: '\u{1bc9a}', to: '\u{1bc9b}', },
-    Range { from: '\u{1bc9c}', to: '\u{1bc9f}', },
-    Range { from: '\u{1bca0}', to: '\u{1bca3}', },
-    Range { from: '\u{1bca4}', to: '\u{1cfff}', },
-    Range { from: '\u{1d000}', to: '\u{1d0f5}', },
-    Range { from: '\u{1d0f6}', to: '\u{1d0ff}', },
-    Range { from: '\u{1d100}', to: '\u{1d126}', },
-    Range { from: '\u{1d127}', to: '\u{1d128}', },
-    Range { from: '\u{1d129}', to: '\u{1d15d}', },
-    Range { from: '\u{1d15e}', to: '\u{1d164}', },
-    Range { from: '\u{1d165}', to: '\u{1d172}', },
-    Range { from: '\u{1d173}', to: '\u{1d17a}', },
-    Range { from: '\u{1d17b}', to: '\u{1d1ba}', },
-    Range { from: '\u{1d1bb}', to: '\u{1d1c0}', },
-    Range { from: '\u{1d1c1}', to: '\u{1d1e8}', },
-    Range { from: '\u{1d1e9}', to: '\u{1d1ff}', },
-    Range { from: '\u{1d200}', to: '\u{1d245}', },
-    Range { from: '\u{1d246}', to: '\u{1d2df}', },
-    Range { from: '\u{1d2e0}', to: '\u{1d2f3}', },
-    Range { from: '\u{1d2f4}', to: '\u{1d2ff}', },
-    Range { from: '\u{1d300}', to: '\u{1d356}', },
-    Range { from: '\u{1d357}', to: '\u{1d35f}', },
-    Range { from: '\u{1d360}', to: '\u{1d378}', },
-    Range { from: '\u{1d379}', to: '\u{1d3ff}', },
-    Range { from: '\u{1d400}', to: '\u{1d49f}', },
-    Range { from: '\u{1d4a0}', to: '\u{1d4a1}', },
-    Range { from: '\u{1d4a2}', to: '\u{1d4a2}', },
-    Range { from: '\u{1d4a3}', to: '\u{1d4a4}', },
-    Range { from: '\u{1d4a5}', to: '\u{1d4a6}', },
-    Range { from: '\u{1d4a7}', to: '\u{1d4a8}', },
-    Range { from: '\u{1d4a9}', to: '\u{1d50a}', },
-    Range { from: '\u{1d50b}', to: '\u{1d50c}', },
-    Range { from: '\u{1d50d}', to: '\u{1d546}', },
-    Range { from: '\u{1d547}', to: '\u{1d549}', },
-    Range { from: '\u{1d54a}', to: '\u{1d6a5}', },
-    Range { from: '\u{1d6a6}', to: '\u{1d6a7}', },
-    Range { from: '\u{1d6a8}', to: '\u{1d6d2}', },
-    Range { from: '\u{1d6d3}', to: '\u{1d6d4}', },
-    Range { from: '\u{1d6d5}', to: '\u{1d70c}', },
-    Range { from: '\u{1d70d}', to: '\u{1d70e}', },
-    Range { from: '\u{1d70f}', to: '\u{1d746}', },
-    Range { from: '\u{1d747}', to: '\u{1d748}', },
-    Range { from: '\u{1d749}', to: '\u{1d780}', },
-    Range { from: '\u{1d781}', to: '\u{1d782}', },
-    Range { from: '\u{1d783}', to: '\u{1d7ba}', },
-    Range { from: '\u{1d7bb}', to: '\u{1d7bc}', },
-    Range { from: '\u{1d7bd}', to: '\u{1d7c9}', },
-    Range { from: '\u{1d7ca}', to: '\u{1d7cb}', },
-    Range { from: '\u{1d7cc}', to: '\u{1d7cd}', },
-    Range { from: '\u{1d7ce}', to: '\u{1d7ff}', },
-    Range { from: '\u{1d800}', to: '\u{1da8b}', },
-    Range { from: '\u{1da8c}', to: '\u{1da9a}', },
-    Range { from: '\u{1da9b}', to: '\u{1da9f}', },
-    Range { from: '\u{1daa0}', to: '\u{1daa0}', },
-    Range { from: '\u{1daa1}', to: '\u{1daaf}', },
-    Range { from: '\u{1dab0}', to: '\u{1dfff}', },
-    Range { from: '\u{1e000}', to: '\u{1e006}', },
-    Range { from: '\u{1e007}', to: '\u{1e007}', },
-    Range { from: '\u{1e008}', to: '\u{1e018}', },
-    Range { from: '\u{1e019}', to: '\u{1e01a}', },
-    Range { from: '\u{1e01b}', to: '\u{1e021}', },
-    Range { from: '\u{1e022}', to: '\u{1e022}', },
-    Range { from: '\u{1e023}', to: '\u{1e024}', },
-    Range { from: '\u{1e025}', to: '\u{1e025}', },
-    Range { from: '\u{1e026}', to: '\u{1e02a}', },
-    Range { from: '\u{1e02b}', to: '\u{1e0ff}', },
-    Range { from: '\u{1e100}', to: '\u{1e12c}', },
-    Range { from: '\u{1e12d}', to: '\u{1e12f}', },
-    Range { from: '\u{1e130}', to: '\u{1e13d}', },
-    Range { from: '\u{1e13e}', to: '\u{1e13f}', },
-    Range { from: '\u{1e140}', to: '\u{1e149}', },
-    Range { from: '\u{1e14a}', to: '\u{1e14d}', },
-    Range { from: '\u{1e14e}', to: '\u{1e14f}', },
-    Range { from: '\u{1e150}', to: '\u{1e2bf}', },
-    Range { from: '\u{1e2c0}', to: '\u{1e2f9}', },
-    Range { from: '\u{1e2fa}', to: '\u{1e2fe}', },
-    Range { from: '\u{1e2ff}', to: '\u{1e2ff}', },
-    Range { from: '\u{1e300}', to: '\u{1e7ff}', },
-    Range { from: '\u{1e800}', to: '\u{1e8c4}', },
-    Range { from: '\u{1e8c5}', to: '\u{1e8c6}', },
-    Range { from: '\u{1e8c7}', to: '\u{1e8d6}', },
-    Range { from: '\u{1e8d7}', to: '\u{1e8ff}', },
-    Range { from: '\u{1e900}', to: '\u{1e921}', },
-    Range { from: '\u{1e922}', to: '\u{1e94b}', },
-    Range { from: '\u{1e94c}', to: '\u{1e94f}', },
-    Range { from: '\u{1e950}', to: '\u{1e959}', },
-    Range { from: '\u{1e95a}', to: '\u{1e95d}', },
-    Range { from: '\u{1e95e}', to: '\u{1e95f}', },
-    Range { from: '\u{1e960}', to: '\u{1ec70}', },
-    Range { from: '\u{1ec71}', to: '\u{1ecb4}', },
-    Range { from: '\u{1ecb5}', to: '\u{1ed00}', },
-    Range { from: '\u{1ed01}', to: '\u{1ed3d}', },
-    Range { from: '\u{1ed3e}', to: '\u{1edff}', },
-    Range { from: '\u{1ee00}', to: '\u{1ee24}', },
-    Range { from: '\u{1ee25}', to: '\u{1ee26}', },
-    Range { from: '\u{1ee27}', to: '\u{1ee3b}', },
-    Range { from: '\u{1ee3c}', to: '\u{1ee41}', },
-    Range { from: '\u{1ee42}', to: '\u{1ee42}', },
-    Range { from: '\u{1ee43}', to: '\u{1ee46}', },
-    Range { from: '\u{1ee47}', to: '\u{1ee54}', },
-    Range { from: '\u{1ee55}', to: '\u{1ee56}', },
-    Range { from: '\u{1ee57}', to: '\u{1ee64}', },
-    Range { from: '\u{1ee65}', to: '\u{1ee66}', },
-    Range { from: '\u{1ee67}', to: '\u{1ee9b}', },
-    Range { from: '\u{1ee9c}', to: '\u{1eea0}', },
-    Range { from: '\u{1eea1}', to: '\u{1eebb}', },
-    Range { from: '\u{1eebc}', to: '\u{1eeef}', },
-    Range { from: '\u{1eef0}', to: '\u{1eef1}', },
-    Range { from: '\u{1eef2}', to: '\u{1efff}', },
-    Range { from: '\u{1f000}', to: '\u{1f02b}', },
-    Range { from: '\u{1f02c}', to: '\u{1f02f}', },
-    Range { from: '\u{1f030}', to: '\u{1f093}', },
-    Range { from: '\u{1f094}', to: '\u{1f09f}', },
-    Range { from: '\u{1f0a0}', to: '\u{1f0ae}', },
-    Range { from: '\u{1f0af}', to: '\u{1f0b0}', },
-    Range { from: '\u{1f0b1}', to: '\u{1f0bf}', },
-    Range { from: '\u{1f0c0}', to: '\u{1f0c0}', },
-    Range { from: '\u{1f0c1}', to: '\u{1f0cf}', },
-    Range { from: '\u{1f0d0}', to: '\u{1f0d0}', },
-    Range { from: '\u{1f0d1}', to: '\u{1f0f5}', },
-    Range { from: '\u{1f0f6}', to: '\u{1f100}', },
-    Range { from: '\u{1f101}', to: '\u{1f10a}', },
-    Range { from: '\u{1f10b}', to: '\u{1f10f}', },
-    Range { from: '\u{1f110}', to: '\u{1f14f}', },
-    Range { from: '\u{1f150}', to: '\u{1f169}', },
-    Range { from: '\u{1f16a}', to: '\u{1f16c}', },
-    Range { from: '\u{1f16d}', to: '\u{1f18f}', },
-    Range { from: '\u{1f190}', to: '\u{1f190}', },
-    Range { from: '\u{1f191}', to: '\u{1f1ad}', },
-    Range { from: '\u{1f1ae}', to: '\u{1f1e5}', },
-    Range { from: '\u{1f1e6}', to: '\u{1f1ff}', },
-    Range { from: '\u{1f200}', to: '\u{1f202}', },
-    Range { from: '\u{1f203}', to: '\u{1f20f}', },
-    Range { from: '\u{1f210}', to: '\u{1f23b}', },
-    Range { from: '\u{1f23c}', to: '\u{1f23f}', },
-    Range { from: '\u{1f240}', to: '\u{1f248}', },
-    Range { from: '\u{1f249}', to: '\u{1f24f}', },
-    Range { from: '\u{1f250}', to: '\u{1f251}', },
-    Range { from: '\u{1f252}', to: '\u{1f25f}', },
-    Range { from: '\u{1f260}', to: '\u{1f265}', },
-    Range { from: '\u{1f266}', to: '\u{1f2ff}', },
-    Range { from: '\u{1f300}', to: '\u{1f6d7}', },
-    Range { from: '\u{1f6d8}', to: '\u{1f6df}', },
-    Range { from: '\u{1f6e0}', to: '\u{1f6ec}', },
-    Range { from: '\u{1f6ed}', to: '\u{1f6ef}', },
-    Range { from: '\u{1f6f0}', to: '\u{1f6fc}', },
-    Range { from: '\u{1f6fd}', to: '\u{1f6ff}', },
-    Range { from: '\u{1f700}', to: '\u{1f773}', },
-    Range { from: '\u{1f774}', to: '\u{1f77f}', },
-    Range { from: '\u{1f780}', to: '\u{1f7d8}', },
-    Range { from: '\u{1f7d9}', to: '\u{1f7df}', },
-    Range { from: '\u{1f7e0}', to: '\u{1f7eb}', },
-    Range { from: '\u{1f7ec}', to: '\u{1f7ff}', },
-    Range { from: '\u{1f800}', to: '\u{1f80b}', },
-    Range { from: '\u{1f80c}', to: '\u{1f80f}', },
-    Range { from: '\u{1f810}', to: '\u{1f847}', },
-    Range { from: '\u{1f848}', to: '\u{1f84f}', },
-    Range { from: '\u{1f850}', to: '\u{1f859}', },
-    Range { from: '\u{1f85a}', to: '\u{1f85f}', },
-    Range { from: '\u{1f860}', to: '\u{1f887}', },
-    Range { from: '\u{1f888}', to: '\u{1f88f}', },
-    Range { from: '\u{1f890}', to: '\u{1f8ad}', },
-    Range { from: '\u{1f8ae}', to: '\u{1f8af}', },
-    Range { from: '\u{1f8b0}', to: '\u{1f8b1}', },
-    Range { from: '\u{1f8b2}', to: '\u{1f8ff}', },
-    Range { from: '\u{1f900}', to: '\u{1f978}', },
-    Range { from: '\u{1f979}', to: '\u{1f979}', },
-    Range { from: '\u{1f97a}', to: '\u{1f9cb}', },
-    Range { from: '\u{1f9cc}', to: '\u{1f9cc}', },
-    Range { from: '\u{1f9cd}', to: '\u{1fa53}', },
-    Range { from: '\u{1fa54}', to: '\u{1fa5f}', },
-    Range { from: '\u{1fa60}', to: '\u{1fa6d}', },
-    Range { from: '\u{1fa6e}', to: '\u{1fa6f}', },
-    Range { from: '\u{1fa70}', to: '\u{1fa74}', },
-    Range { from: '\u{1fa75}', to: '\u{1fa77}', },
-    Range { from: '\u{1fa78}', to: '\u{1fa7a}', },
-    Range { from: '\u{1fa7b}', to: '\u{1fa7f}', },
-    Range { from: '\u{1fa80}', to: '\u{1fa86}', },
-    Range { from: '\u{1fa87}', to: '\u{1fa8f}', },
-    Range { from: '\u{1fa90}', to: '\u{1faa8}', },
-    Range { from: '\u{1faa9}', to: '\u{1faaf}', },
-    Range { from: '\u{1fab0}', to: '\u{1fab6}', },
-    Range { from: '\u{1fab7}', to: '\u{1fabf}', },
-    Range { from: '\u{1fac0}', to: '\u{1fac2}', },
-    Range { from: '\u{1fac3}', to: '\u{1facf}', },
-    Range { from: '\u{1fad0}', to: '\u{1fad6}', },
-    Range { from: '\u{1fad7}', to: '\u{1faff}', },
-    Range { from: '\u{1fb00}', to: '\u{1fb92}', },
-    Range { from: '\u{1fb93}', to: '\u{1fb93}', },
-    Range { from: '\u{1fb94}', to: '\u{1fbca}', },
-    Range { from: '\u{1fbcb}', to: '\u{1fbef}', },
-    Range { from: '\u{1fbf0}', to: '\u{1fbf9}', },
-    Range { from: '\u{1fbfa}', to: '\u{1ffff}', },
-    Range { from: '\u{20000}', to: '\u{2a6dd}', },
-    Range { from: '\u{2a6de}', to: '\u{2a6ff}', },
-    Range { from: '\u{2a700}', to: '\u{2b734}', },
-    Range { from: '\u{2b735}', to: '\u{2b73f}', },
-    Range { from: '\u{2b740}', to: '\u{2b81d}', },
-    Range { from: '\u{2b81e}', to: '\u{2b81f}', },
-    Range { from: '\u{2b820}', to: '\u{2cea1}', },
-    Range { from: '\u{2cea2}', to: '\u{2ceaf}', },
-    Range { from: '\u{2ceb0}', to: '\u{2ebe0}', },
-    Range { from: '\u{2ebe1}', to: '\u{2f7ff}', },
-    Range { from: '\u{2f800}', to: '\u{2f830}', },
-    Range { from: '\u{2f831}', to: '\u{2f833}', },
-    Range { from: '\u{2f834}', to: '\u{2f844}', },
-    Range { from: '\u{2f845}', to: '\u{2f846}', },
-    Range { from: '\u{2f847}', to: '\u{2f869}', },
-    Range { from: '\u{2f86a}', to: '\u{2f86b}', },
-    Range { from: '\u{2f86c}', to: '\u{2f890}', },
-    Range { from: '\u{2f891}', to: '\u{2f892}', },
-    Range { from: '\u{2f893}', to: '\u{2f893}', },
-    Range { from: '\u{2f894}', to: '\u{2f895}', },
-    Range { from: '\u{2f896}', to: '\u{2f92b}', },
-    Range { from: '\u{2f92c}', to: '\u{2f92d}', },
-    Range { from: '\u{2f92e}', to: '\u{2f945}', },
-    Range { from: '\u{2f946}', to: '\u{2f947}', },
-    Range { from: '\u{2f948}', to: '\u{2f95c}', },
-    Range { from: '\u{2f95d}', to: '\u{2f95e}', },
-    Range { from: '\u{2f95f}', to: '\u{2f9fd}', },
-    Range { from: '\u{2f9fe}', to: '\u{2f9ff}', },
-    Range { from: '\u{2fa00}', to: '\u{2fa1d}', },
-    Range { from: '\u{2fa1e}', to: '\u{2ffff}', },
-    Range { from: '\u{30000}', to: '\u{3134a}', },
-    Range { from: '\u{3134b}', to: '\u{e00ff}', },
-    Range { from: '\u{e0100}', to: '\u{e01ef}', },
-    Range { from: '\u{e01f0}', to: '\u{10ffff}', },
-];
-
-static INDEX_TABLE: &[u16] = &[
-    32768,
-    32769,
-    32770,
-    32771,
-    32772,
-    5,
-    32799,
-    32800,
-    32801,
-    32802,
-    32803,
-    32804,
-    37,
-    32808,
-    41,
-    32812,
-    45,
-    32817,
-    50,
-    32858,
-    91,
-    32909,
-    142,
-    32913,
-    146,
-    32920,
-    153,
-    32996,
-    229,
-    33008,
-    241,
-    33023,
-    256,
-    33037,
-    33038,
-    33039,
-    33040,
-    33041,
-    33042,
-    275,
-    33058,
-    291,
-    33076,
-    33077,
-    310,
-    33141,
-    374,
-    33147,
-    380,
-    33162,
-    395,
-    33172,
-    405,
-    33179,
-    412,
-    33185,
-    418,
-    33192,
-    33193,
-    33194,
-    427,
-    33203,
-    33204,
-    33205,
-    438,
-    33208,
-    441,
-    33249,
-    33250,
-    33251,
-    484,
-    33296,
-    529,
-    33348,
-    581,
-    33382,
-    615,
-    33451,
-    684,
-    33587,
-    33588,
-    33589,
-    33590,
-    33591,
-    33592,
-    33593,
-    33594,
-    33595,
-    33596,
-    33597,
-    33598,
-    33599,
-    33600,
-    33601,
-    33602,
-    835,
-    33607,
-    33608,
-    33609,
-    33610,
-    33611,
-    33612,
-    33613,
-    33614,
-    33615,
-    33616,
-    33617,
-    33618,
-    33619,
-    33620,
-    33621,
-    33622,
-    855,
-    33625,
-    33626,
-    33627,
-    33628,
-    33629,
-    33630,
-    33631,
-    33632,
-    33633,
-    866,
-    33642,
-    33643,
-    33644,
-    33645,
-    33646,
-    33647,
-    33648,
-    33649,
-    33650,
-    883,
-    33653,
-    33654,
-    33655,
-    33656,
-    33657,
-    33658,
-    33659,
-    33660,
-    33661,
-    33662,
-    33663,
-    896,
-    33668,
-    33669,
-    33670,
-    33671,
-    33672,
-    33673,
-    33674,
-    33675,
-    33676,
-    33677,
-    33678,
-    33679,
-    33680,
-    913,
-    33688,
-    33689,
-    922,
-    33692,
-    33693,
-    33694,
-    33695,
-    33696,
-    33697,
-    33698,
-    33699,
-    932,
-    33706,
-    33707,
-    33708,
-    33709,
-    33710,
-    33711,
-    33712,
-    33713,
-    33714,
-    33715,
-    33716,
-    33717,
-    33718,
-    33719,
-    33720,
-    33721,
-    33722,
-    33723,
-    33724,
-    33725,
-    33726,
-    33727,
-    33728,
-    33729,
-    33730,
-    33731,
-    33732,
-    33733,
-    33734,
-    33735,
-    33736,
-    33737,
-    33738,
-    33739,
-    33740,
-    33741,
-    33742,
-    33743,
-    33744,
-    33745,
-    33746,
-    33747,
-    33748,
-    33749,
-    33750,
-    33751,
-    33752,
-    33753,
-    33754,
-    33755,
-    33756,
-    33757,
-    33758,
-    991,
-    33762,
-    33763,
-    33764,
-    33765,
-    33766,
-    33767,
-    33768,
-    33769,
-    33770,
-    33771,
-    33772,
-    33773,
-    33774,
-    1007,
-    33778,
-    33779,
-    33780,
-    33781,
-    33782,
-    33783,
-    33784,
-    33785,
-    33786,
-    33787,
-    33788,
-    33789,
-    33790,
-    33791,
-    33792,
-    33793,
-    33794,
-    33795,
-    33796,
-    33797,
-    33798,
-    33799,
-    33800,
-    33801,
-    33802,
-    33803,
-    33804,
-    33805,
-    33806,
-    33807,
-    33808,
-    33809,
-    33810,
-    33811,
-    33812,
-    33813,
-    33814,
-    33815,
-    33816,
-    33817,
-    33818,
-    33819,
-    33820,
-    33821,
-    33822,
-    33823,
-    33824,
-    33825,
-    33826,
-    33827,
-    33828,
-    33829,
-    33830,
-    33831,
-    33832,
-    33833,
-    33834,
-    33835,
-    33836,
-    33837,
-    1070,
-    33840,
-    33841,
-    33842,
-    33843,
-    33844,
-    33845,
-    33846,
-    33847,
-    33848,
-    33849,
-    33850,
-    33851,
-    33852,
-    33853,
-    33854,
-    33855,
-    33856,
-    33857,
-    33858,
-    33859,
-    33860,
-    33861,
-    33862,
-    33863,
-    33864,
-    33865,
-    33866,
-    1099,
-    33869,
-    33870,
-    33871,
-    33872,
-    33873,
-    33874,
-    1107,
-    33878,
-    33879,
-    33880,
-    33881,
-    33882,
-    33883,
-    33884,
-    33885,
-    33886,
-    33887,
-    33888,
-    33889,
-    33890,
-    1123,
-    33894,
-    33895,
-    33896,
-    1129,
-    33900,
-    33901,
-    33902,
-    33903,
-    33904,
-    1137,
-    33908,
-    33909,
-    33910,
-    33911,
-    1144,
-    33914,
-    33915,
-    33916,
-    33917,
-    33918,
-    33919,
-    33920,
-    33921,
-    33922,
-    33923,
-    33924,
-    33925,
-    33926,
-    33927,
-    33928,
-    33929,
-    33930,
-    33931,
-    33932,
-    33933,
-    33934,
-    1167,
-    33942,
-    33943,
-    33944,
-    33945,
-    33946,
-    33947,
-    33948,
-    33949,
-    33950,
-    33951,
-    33952,
-    33953,
-    33954,
-    33955,
-    33956,
-    33957,
-    33958,
-    33959,
-    33960,
-    33961,
-    33962,
-    33963,
-    33964,
-    33965,
-    33966,
-    33967,
-    33968,
-    33969,
-    33970,
-    33971,
-    33972,
-    33973,
-    33974,
-    33975,
-    33976,
-    33977,
-    33978,
-    1211,
-    33982,
-    33983,
-    33984,
-    33985,
-    33986,
-    33987,
-    33988,
-    33989,
-    33990,
-    33991,
-    33992,
-    1225,
-    33996,
-    33997,
-    33998,
-    33999,
-    34000,
-    34001,
-    34002,
-    34003,
-    34004,
-    34005,
-    34006,
-    34007,
-    34008,
-    34009,
-    34010,
-    34011,
-    1244,
-    34018,
-    34019,
-    34020,
-    34021,
-    34022,
-    34023,
-    34024,
-    34025,
-    34026,
-    34027,
-    34028,
-    34029,
-    34030,
-    34031,
-    34032,
-    34033,
-    34034,
-    34035,
-    34036,
-    34037,
-    34038,
-    34039,
-    34040,
-    34041,
-    34042,
-    34043,
-    34044,
-    34045,
-    34046,
-    34047,
-    34048,
-    34049,
-    34050,
-    34051,
-    34052,
-    34053,
-    34054,
-    34055,
-    34056,
-    34057,
-    34058,
-    34059,
-    34060,
-    34061,
-    34062,
-    34063,
-    34064,
-    34065,
-    34066,
-    34067,
-    34068,
-    34069,
-    34070,
-    34071,
-    34072,
-    34073,
-    34074,
-    34075,
-    34076,
-    34077,
-    34078,
-    34079,
-    34080,
-    34081,
-    34082,
-    34083,
-    34084,
-    34085,
-    34086,
-    34087,
-    34088,
-    34089,
-    34090,
-    34091,
-    34092,
-    34093,
-    34094,
-    34095,
-    34096,
-    34097,
-    34098,
-    34099,
-    34100,
-    34101,
-    34102,
-    1335,
-    34107,
-    1340,
-    34111,
-    1344,
-    34155,
-    1388,
-    34159,
-    34160,
-    34161,
-    34162,
-    34163,
-    1396,
-    34227,
-    34228,
-    34229,
-    1462,
-    34267,
-    34268,
-    34269,
-    1502,
-    34419,
-    1652,
-    34422,
-    1655,
-    34520,
-    1753,
-    34529,
-    34530,
-    1763,
-    34537,
-    34538,
-    1771,
-    34547,
-    1780,
-    34556,
-    34557,
-    1790,
-    34564,
-    34565,
-    1798,
-    34574,
-    1807,
-    34597,
-    1830,
-    34646,
-    1879,
-    34677,
-    34678,
-    34679,
-    34680,
-    1913,
-    34689,
-    34690,
-    34691,
-    1924,
-    34700,
-    1933,
-    34715,
-    34716,
-    34717,
-    34718,
-    1951,
-    34721,
-    34722,
-    34723,
-    34724,
-    34725,
-    34726,
-    34727,
-    34728,
-    1961,
-    34734,
-    1967,
-    34738,
-    1971,
-    34742,
-    34743,
-    34744,
-    1977,
-    34747,
-    34748,
-    34749,
-    1982,
-    34752,
-    1985,
-    34794,
-    34795,
-    34796,
-    34797,
-    34798,
-    34799,
-    34800,
-    2033,
-    34812,
-    34813,
-    34814,
-    34815,
-    2048,
-    34819,
-    2052,
-    34822,
-    34823,
-    2056,
-    34839,
-    2072,
-    34852,
-    2085,
-    34855,
-    34856,
-    2089,
-    34860,
-    2093,
-    34909,
-    34910,
-    34911,
-    34912,
-    34913,
-    34914,
-    34915,
-    2148,
-    34921,
-    34922,
-    34923,
-    34924,
-    34925,
-    2158,
-    34928,
-    34929,
-    34930,
-    34931,
-    2164,
-    34972,
-    2205,
-    35052,
-    35053,
-    35054,
-    2287,
-    35058,
-    35059,
-    35060,
-    35061,
-    35062,
-    35063,
-    35064,
-    2297,
-    35113,
-    2346,
-    35120,
-    2353,
-    35133,
-    35134,
-    35135,
-    2368,
-    35239,
-    2472,
-    35243,
-    2476,
-    35246,
-    35247,
-    2480,
-    35250,
-    35251,
-    35252,
-    35253,
-    35254,
-    2487,
-    35257,
-    35258,
-    35259,
-    35260,
-    35261,
-    35262,
-    35263,
-    35264,
-    35265,
-    35266,
-    35267,
-    35268,
-    35269,
-    35270,
-    35271,
-    35272,
-    35273,
-    35274,
-    35275,
-    35276,
-    35277,
-    35278,
-    35279,
-    35280,
-    35281,
-    35282,
-    35283,
-    35284,
-    2517,
-    35499,
-    2732,
-    35503,
-    2736,
-    35509,
-    35510,
-    35511,
-    35512,
-    35513,
-    2746,
-    35516,
-    35517,
-    35518,
-    35519,
-    35520,
-    35521,
-    2754,
-    35618,
-    2851,
-    35633,
-    35634,
-    35635,
-    2868,
-    35708,
-    2941,
-    36141,
-    36142,
-    36143,
-    36144,
-    36145,
-    36146,
-    36147,
-    36148,
-    3381,
-    36194,
-    3427,
-    36225,
-    36226,
-    36227,
-    3460,
-    36241,
-    3474,
-    36305,
-    3538,
-    36320,
-    3553,
-    36324,
-    3557,
-    36328,
-    3561,
-    36371,
-    3604,
-    36381,
-    36382,
-    36383,
-    3616,
-    36386,
-    36387,
-    36388,
-    36389,
-    36390,
-    36391,
-    36392,
-    36393,
-    36394,
-    36395,
-    36396,
-    36397,
-    36398,
-    36399,
-    36400,
-    36401,
-    36402,
-    36403,
-    36404,
-    36405,
-    36406,
-    36407,
-    36408,
-    36409,
-    36410,
-    36411,
-    36412,
-    36413,
-    36414,
-    36415,
-    36416,
-    36417,
-    36418,
-    36419,
-    36420,
-    36421,
-    36422,
-    36423,
-    36424,
-    36425,
-    36426,
-    3659,
-    36431,
-    36432,
-    36433,
-    36434,
-    3667,
-    36515,
-    36516,
-    36517,
-    36518,
-    36519,
-    36520,
-    36521,
-    36522,
-    36523,
-    36524,
-    3757,
-    36532,
-    3765,
-    36794,
-    4027,
-    36798,
-    4031,
-    36813,
-    4046,
-    36816,
-    4049,
-    36868,
-    4101,
-    36884,
-    4117,
-    36991,
-    4224,
-    36997,
-    36998,
-    4231,
-    37004,
-    4237,
-    37056,
-    37057,
-    37058,
-    37059,
-    37060,
-    37061,
-    37062,
-    37063,
-    37064,
-    37065,
-    37066,
-    37067,
-    37068,
-    37069,
-    37070,
-    37071,
-    37072,
-    37073,
-    37074,
-    37075,
-    37076,
-    37077,
-    37078,
-    37079,
-    37080,
-    37081,
-    37082,
-    37083,
-    37084,
-    37085,
-    37086,
-    37087,
-    37088,
-    37089,
-    37090,
-    37091,
-    37092,
-    37093,
-    37094,
-    37095,
-    37096,
-    37097,
-    37098,
-    37099,
-    37100,
-    37101,
-    37102,
-    37103,
-    37104,
-    37105,
-    37106,
-    4339,
-    37423,
-    37424,
-    37425,
-    37426,
-    37427,
-    4660,
-    37433,
-    4666,
-    37439,
-    37440,
-    37441,
-    37442,
-    37443,
-    37444,
-    37445,
-    37446,
-    37447,
-    37448,
-    37449,
-    37450,
-    4683,
-    37454,
-    4687,
-    37459,
-    4692,
-    37465,
-    37466,
-    37467,
-    4700,
-    37475,
-    4708,
-    37481,
-    4714,
-    37485,
-    4718,
-    37528,
-    4761,
-    37543,
-    37544,
-    4777,
-    37554,
-    37555,
-    4788,
-    37559,
-    4792,
-    37576,
-    4809,
-    37579,
-    37580,
-    4813,
-    37583,
-    4816,
-    37608,
-    4841,
-    37626,
-    37627,
-    37628,
-    37629,
-    37630,
-    37631,
-    37632,
-    37633,
-    37634,
-    37635,
-    37636,
-    37637,
-    37638,
-    37639,
-    37640,
-    37641,
-    37642,
-    37643,
-    37644,
-    37645,
-    37646,
-    37647,
-    37648,
-    37649,
-    37650,
-    37651,
-    37652,
-    37653,
-    37654,
-    37655,
-    37656,
-    37657,
-    37658,
-    37659,
-    37660,
-    37661,
-    37662,
-    37663,
-    37664,
-    37665,
-    4898,
-    37858,
-    5091,
-    37865,
-    5098,
-    37872,
-    5105,
-    37879,
-    5112,
-    37883,
-    5116,
-    37899,
-    37900,
-    37901,
-    37902,
-    37903,
-    37904,
-    37905,
-    37906,
-    37907,
-    37908,
-    37909,
-    37910,
-    37911,
-    37912,
-    37913,
-    37914,
-    37915,
-    37916,
-    37917,
-    37918,
-    37919,
-    37920,
-    37921,
-    37922,
-    37923,
-    37924,
-    37925,
-    37926,
-    37927,
-    37928,
-    37929,
-    37930,
-    37931,
-    37932,
-    37933,
-    37934,
-    37935,
-    37936,
-    37937,
-    37938,
-    37939,
-    37940,
-    37941,
-    37942,
-    37943,
-    5176,
-    37984,
-    37985,
-    37986,
-    37987,
-    5220,
-    38024,
-    38025,
-    38026,
-    38027,
-    38028,
-    38029,
-    38030,
-    38031,
-    38032,
-    38033,
-    38034,
-    38035,
-    38036,
-    38037,
-    38038,
-    38039,
-    38040,
-    5273,
-    38043,
-    38044,
-    38045,
-    38046,
-    38047,
-    38048,
-    38049,
-    38050,
-    38051,
-    38052,
-    38053,
-    38054,
-    38055,
-    38056,
-    38057,
-    38058,
-    38059,
-    38060,
-    38061,
-    38062,
-    38063,
-    38064,
-    38065,
-    38066,
-    38067,
-    38068,
-    38069,
-    38070,
-    38071,
-    38072,
-    38073,
-    38074,
-    38075,
-    38076,
-    38077,
-    38078,
-    38079,
-    38080,
-    38081,
-    38082,
-    38083,
-    38084,
-    38085,
-    38086,
-    38087,
-    38088,
-    38089,
-    38090,
-    38091,
-    38092,
-    38093,
-    38094,
-    38095,
-    38096,
-    38097,
-    38098,
-    38099,
-    38100,
-    38101,
-    38102,
-    38103,
-    38104,
-    5337,
-    38156,
-    38157,
-    38158,
-    38159,
-    38160,
-    38161,
-    38162,
-    38163,
-    38164,
-    38165,
-    38166,
-    38167,
-    38168,
-    38169,
-    38170,
-    38171,
-    38172,
-    38173,
-    38174,
-    38175,
-    38176,
-    38177,
-    38178,
-    38179,
-    38180,
-    38181,
-    38182,
-    38183,
-    38184,
-    38185,
-    38186,
-    38187,
-    38188,
-    38189,
-    38190,
-    38191,
-    38192,
-    38193,
-    38194,
-    38195,
-    38196,
-    38197,
-    38198,
-    38199,
-    38200,
-    38201,
-    38202,
-    38203,
-    38204,
-    38205,
-    5438,
-    38209,
-    38210,
-    38211,
-    38212,
-    38213,
-    38214,
-    38215,
-    38216,
-    38217,
-    38218,
-    38219,
-    38220,
-    38221,
-    38222,
-    38223,
-    38224,
-    38225,
-    38226,
-    38227,
-    38228,
-    38229,
-    38230,
-    38231,
-    38232,
-    38233,
-    38234,
-    38235,
-    38236,
-    38237,
-    38238,
-    38239,
-    38240,
-    38241,
-    38242,
-    38243,
-    38244,
-    38245,
-    38246,
-    38247,
-    38248,
-    38249,
-    38250,
-    38251,
-    38252,
-    38253,
-    38254,
-    38255,
-    38256,
-    38257,
-    38258,
-    38259,
-    38260,
-    38261,
-    38262,
-    38263,
-    38264,
-    38265,
-    38266,
-    38267,
-    38268,
-    38269,
-    38270,
-    38271,
-    38272,
-    38273,
-    38274,
-    38275,
-    38276,
-    38277,
-    38278,
-    5511,
-    38311,
-    38312,
-    38313,
-    38314,
-    38315,
-    38316,
-    38317,
-    38318,
-    38319,
-    38320,
-    38321,
-    38322,
-    38323,
-    38324,
-    38325,
-    38326,
-    38327,
-    38328,
-    38329,
-    38330,
-    38331,
-    38332,
-    38333,
-    38334,
-    38335,
-    38336,
-    38337,
-    38338,
-    38339,
-    38340,
-    38341,
-    38342,
-    38343,
-    38344,
-    38345,
-    38346,
-    38347,
-    38348,
-    38349,
-    38350,
-    38351,
-    38352,
-    38353,
-    38354,
-    38355,
-    38356,
-    38357,
-    38358,
-    38359,
-    38360,
-    5593,
-    38363,
-    38364,
-    38365,
-    38366,
-    38367,
-    38368,
-    38369,
-    38370,
-    38371,
-    38372,
-    38373,
-    38374,
-    38375,
-    38376,
-    38377,
-    38378,
-    38379,
-    38380,
-    38381,
-    38382,
-    38383,
-    38384,
-    38385,
-    38386,
-    38387,
-    38388,
-    38389,
-    38390,
-    38391,
-    38392,
-    38393,
-    38394,
-    38395,
-    38396,
-    38397,
-    38398,
-    38399,
-    38400,
-    38401,
-    38402,
-    38403,
-    38404,
-    38405,
-    38406,
-    38407,
-    38408,
-    38409,
-    38410,
-    38411,
-    38412,
-    38413,
-    38414,
-    38415,
-    38416,
-    38417,
-    38418,
-    38419,
-    38420,
-    5653,
-    38453,
-    38454,
-    38455,
-    38456,
-    38457,
-    38458,
-    38459,
-    38460,
-    38461,
-    38462,
-    38463,
-    38464,
-    38465,
-    38466,
-    38467,
-    38468,
-    38469,
-    38470,
-    38471,
-    38472,
-    38473,
-    38474,
-    38475,
-    38476,
-    38477,
-    38478,
-    38479,
-    38480,
-    38481,
-    38482,
-    38483,
-    38484,
-    38485,
-    38486,
-    38487,
-    38488,
-    38489,
-    38490,
-    38491,
-    38492,
-    38493,
-    38494,
-    5727,
-    38502,
-    38503,
-    38504,
-    5737,
-    38511,
-    38512,
-    38513,
-    38514,
-    38515,
-    38516,
-    38517,
-    38518,
-    38519,
-    38520,
-    5753,
-    38681,
-    38682,
-    38683,
-    5916,
-    38686,
-    5919,
-    38785,
-    6018,
-    38844,
-    6077,
-    39193,
-    6426,
-    39237,
-    6470,
-    39294,
-    6527,
-    39351,
-    6584,
-    39408,
-    6641,
-    39465,
-    6698,
-    39479,
-    39480,
-    6713,
-    39531,
-    39532,
-    39533,
-    39534,
-    39535,
-    39536,
-    39537,
-    39538,
-    39539,
-    39540,
-    39541,
-    39542,
-    39543,
-    39544,
-    39545,
-    39546,
-    39547,
-    39548,
-    39549,
-    39550,
-    39551,
-    39552,
-    39553,
-    39554,
-    39555,
-    39556,
-    39557,
-    39558,
-    39559,
-    39560,
-    39561,
-    39562,
-    6795,
-    39597,
-    39598,
-    39599,
-    39600,
-    39601,
-    39602,
-    39603,
-    39604,
-    39605,
-    39606,
-    6839,
-    39644,
-    6877,
-    39666,
-    39667,
-    39668,
-    6901,
-    39683,
-    6916,
-    39698,
-    6931,
-    39752,
-    6985,
-    39780,
-    39781,
-    39782,
-    39783,
-    39784,
-    39785,
-    39786,
-    39787,
-    39788,
-    39789,
-    39790,
-    39791,
-    39792,
-    39793,
-    39794,
-    7027,
-    39805,
-    7038,
-    39870,
-    7103,
-    39874,
-    39875,
-    39876,
-    39877,
-    39878,
-    7111,
-    39882,
-    7115,
-    39927,
-    7160,
-    39937,
-    7170,
-    39940,
-    39941,
-    39942,
-    39943,
-    39944,
-    39945,
-    39946,
-    39947,
-    39948,
-    39949,
-    39950,
-    39951,
-    39952,
-    39953,
-    39954,
-    39955,
-    39956,
-    39957,
-    39958,
-    39959,
-    39960,
-    39961,
-    39962,
-    39963,
-    39964,
-    39965,
-    39966,
-    39967,
-    39968,
-    39969,
-    39970,
-    39971,
-    39972,
-    39973,
-    39974,
-    39975,
-    39976,
-    39977,
-    39978,
-    39979,
-    39980,
-    39981,
-    39982,
-    39983,
-    39984,
-    39985,
-    39986,
-    39987,
-    39988,
-    39989,
-    39990,
-    39991,
-    39992,
-    7225,
-    40003,
-    40004,
-    40005,
-    40006,
-    40007,
-    40008,
-    40009,
-    40010,
-    40011,
-    40012,
-    40013,
-    7246,
-    40063,
-    7296,
-    40081,
-    7314,
-    40117,
-    7350,
-    40155,
-    40156,
-    40157,
-    7390,
-    40308,
-    7541,
-    40333,
-    7566,
-    40355,
-    7588,
-    40515,
-    7748,
-    40546,
-    40547,
-    40548,
-    40549,
-    40550,
+static TABLE: &[(char, u16)] = &[
+    ('\u{0}', 32768),
+    ('\u{2d}', 32769),
+    ('\u{2f}', 32770),
+    ('\u{30}', 32771),
+    ('\u{3a}', 32772),
+    ('\u{41}', 5),
+    ('\u{5b}', 32799),
+    ('\u{61}', 32800),
+    ('\u{7b}', 32801),
+    ('\u{80}', 32802),
+    ('\u{a0}', 32803),
+    ('\u{a1}', 32804),
+    ('\u{a8}', 37),
+    ('\u{ab}', 32808),
+    ('\u{ad}', 41),
+    ('\u{b0}', 32812),
+    ('\u{b2}', 45),
+    ('\u{b6}', 32817),
+    ('\u{b8}', 50),
+    ('\u{e0}', 32858),
+    ('\u{100}', 91),
+    ('\u{132}', 32909),
+    ('\u{134}', 142),
+    ('\u{137}', 32913),
+    ('\u{139}', 146),
+    ('\u{13f}', 32920),
+    ('\u{141}', 153),
+    ('\u{18c}', 32996),
+    ('\u{18e}', 229),
+    ('\u{199}', 33008),
+    ('\u{19c}', 241),
+    ('\u{1aa}', 33023),
+    ('\u{1ac}', 256),
+    ('\u{1b9}', 33037),
+    ('\u{1bc}', 33038),
+    ('\u{1bd}', 33039),
+    ('\u{1c4}', 33040),
+    ('\u{1c7}', 33041),
+    ('\u{1ca}', 33042),
+    ('\u{1cd}', 275),
+    ('\u{1dc}', 33058),
+    ('\u{1de}', 291),
+    ('\u{1ef}', 33076),
+    ('\u{1f1}', 33077),
+    ('\u{1f4}', 310),
+    ('\u{233}', 33141),
+    ('\u{23a}', 374),
+    ('\u{23f}', 33147),
+    ('\u{241}', 380),
+    ('\u{24f}', 33162),
+    ('\u{2b0}', 395),
+    ('\u{2b9}', 33172),
+    ('\u{2d8}', 405),
+    ('\u{2de}', 33179),
+    ('\u{2e0}', 412),
+    ('\u{2e5}', 33185),
+    ('\u{340}', 418),
+    ('\u{346}', 33192),
+    ('\u{34f}', 33193),
+    ('\u{350}', 33194),
+    ('\u{370}', 427),
+    ('\u{378}', 33203),
+    ('\u{37a}', 33204),
+    ('\u{37b}', 33205),
+    ('\u{37e}', 438),
+    ('\u{380}', 33208),
+    ('\u{384}', 441),
+    ('\u{3ac}', 33249),
+    ('\u{3c2}', 33250),
+    ('\u{3c3}', 33251),
+    ('\u{3cf}', 484),
+    ('\u{3fb}', 33296),
+    ('\u{3fd}', 529),
+    ('\u{430}', 33348),
+    ('\u{460}', 581),
+    ('\u{481}', 33382),
+    ('\u{48a}', 615),
+    ('\u{4ce}', 33451),
+    ('\u{4d0}', 684),
+    ('\u{557}', 33587),
+    ('\u{559}', 33588),
+    ('\u{587}', 33589),
+    ('\u{588}', 33590),
+    ('\u{58b}', 33591),
+    ('\u{58d}', 33592),
+    ('\u{590}', 33593),
+    ('\u{591}', 33594),
+    ('\u{5c8}', 33595),
+    ('\u{5d0}', 33596),
+    ('\u{5eb}', 33597),
+    ('\u{5ef}', 33598),
+    ('\u{5f5}', 33599),
+    ('\u{606}', 33600),
+    ('\u{61c}', 33601),
+    ('\u{61e}', 33602),
+    ('\u{675}', 835),
+    ('\u{679}', 33607),
+    ('\u{6dd}', 33608),
+    ('\u{6de}', 33609),
+    ('\u{70e}', 33610),
+    ('\u{710}', 33611),
+    ('\u{74b}', 33612),
+    ('\u{74d}', 33613),
+    ('\u{7b2}', 33614),
+    ('\u{7c0}', 33615),
+    ('\u{7fb}', 33616),
+    ('\u{7fd}', 33617),
+    ('\u{82e}', 33618),
+    ('\u{830}', 33619),
+    ('\u{83f}', 33620),
+    ('\u{840}', 33621),
+    ('\u{85c}', 33622),
+    ('\u{85e}', 855),
+    ('\u{860}', 33625),
+    ('\u{86b}', 33626),
+    ('\u{8a0}', 33627),
+    ('\u{8b5}', 33628),
+    ('\u{8b6}', 33629),
+    ('\u{8c8}', 33630),
+    ('\u{8d3}', 33631),
+    ('\u{8e2}', 33632),
+    ('\u{8e3}', 33633),
+    ('\u{958}', 866),
+    ('\u{960}', 33642),
+    ('\u{984}', 33643),
+    ('\u{985}', 33644),
+    ('\u{98d}', 33645),
+    ('\u{98f}', 33646),
+    ('\u{991}', 33647),
+    ('\u{993}', 33648),
+    ('\u{9a9}', 33649),
+    ('\u{9aa}', 33650),
+    ('\u{9b1}', 883),
+    ('\u{9b3}', 33653),
+    ('\u{9b6}', 33654),
+    ('\u{9ba}', 33655),
+    ('\u{9bc}', 33656),
+    ('\u{9c5}', 33657),
+    ('\u{9c7}', 33658),
+    ('\u{9c9}', 33659),
+    ('\u{9cb}', 33660),
+    ('\u{9cf}', 33661),
+    ('\u{9d7}', 33662),
+    ('\u{9d8}', 33663),
+    ('\u{9dc}', 896),
+    ('\u{9e0}', 33668),
+    ('\u{9e4}', 33669),
+    ('\u{9e6}', 33670),
+    ('\u{9ff}', 33671),
+    ('\u{a01}', 33672),
+    ('\u{a04}', 33673),
+    ('\u{a05}', 33674),
+    ('\u{a0b}', 33675),
+    ('\u{a0f}', 33676),
+    ('\u{a11}', 33677),
+    ('\u{a13}', 33678),
+    ('\u{a29}', 33679),
+    ('\u{a2a}', 33680),
+    ('\u{a31}', 913),
+    ('\u{a38}', 33688),
+    ('\u{a3a}', 33689),
+    ('\u{a3c}', 922),
+    ('\u{a3e}', 33692),
+    ('\u{a43}', 33693),
+    ('\u{a47}', 33694),
+    ('\u{a49}', 33695),
+    ('\u{a4b}', 33696),
+    ('\u{a4e}', 33697),
+    ('\u{a51}', 33698),
+    ('\u{a52}', 33699),
+    ('\u{a59}', 932),
+    ('\u{a5f}', 33706),
+    ('\u{a66}', 33707),
+    ('\u{a77}', 33708),
+    ('\u{a81}', 33709),
+    ('\u{a84}', 33710),
+    ('\u{a85}', 33711),
+    ('\u{a8e}', 33712),
+    ('\u{a8f}', 33713),
+    ('\u{a92}', 33714),
+    ('\u{a93}', 33715),
+    ('\u{aa9}', 33716),
+    ('\u{aaa}', 33717),
+    ('\u{ab1}', 33718),
+    ('\u{ab2}', 33719),
+    ('\u{ab4}', 33720),
+    ('\u{ab5}', 33721),
+    ('\u{aba}', 33722),
+    ('\u{abc}', 33723),
+    ('\u{ac6}', 33724),
+    ('\u{ac7}', 33725),
+    ('\u{aca}', 33726),
+    ('\u{acb}', 33727),
+    ('\u{ace}', 33728),
+    ('\u{ad0}', 33729),
+    ('\u{ad1}', 33730),
+    ('\u{ae0}', 33731),
+    ('\u{ae4}', 33732),
+    ('\u{ae6}', 33733),
+    ('\u{af2}', 33734),
+    ('\u{af9}', 33735),
+    ('\u{b00}', 33736),
+    ('\u{b01}', 33737),
+    ('\u{b04}', 33738),
+    ('\u{b05}', 33739),
+    ('\u{b0d}', 33740),
+    ('\u{b0f}', 33741),
+    ('\u{b11}', 33742),
+    ('\u{b13}', 33743),
+    ('\u{b29}', 33744),
+    ('\u{b2a}', 33745),
+    ('\u{b31}', 33746),
+    ('\u{b32}', 33747),
+    ('\u{b34}', 33748),
+    ('\u{b35}', 33749),
+    ('\u{b3a}', 33750),
+    ('\u{b3c}', 33751),
+    ('\u{b45}', 33752),
+    ('\u{b47}', 33753),
+    ('\u{b49}', 33754),
+    ('\u{b4b}', 33755),
+    ('\u{b4e}', 33756),
+    ('\u{b55}', 33757),
+    ('\u{b58}', 33758),
+    ('\u{b5c}', 991),
+    ('\u{b5f}', 33762),
+    ('\u{b64}', 33763),
+    ('\u{b66}', 33764),
+    ('\u{b78}', 33765),
+    ('\u{b82}', 33766),
+    ('\u{b84}', 33767),
+    ('\u{b85}', 33768),
+    ('\u{b8b}', 33769),
+    ('\u{b8e}', 33770),
+    ('\u{b91}', 33771),
+    ('\u{b92}', 33772),
+    ('\u{b96}', 33773),
+    ('\u{b99}', 33774),
+    ('\u{b9b}', 1007),
+    ('\u{b9e}', 33778),
+    ('\u{ba0}', 33779),
+    ('\u{ba3}', 33780),
+    ('\u{ba5}', 33781),
+    ('\u{ba8}', 33782),
+    ('\u{bab}', 33783),
+    ('\u{bae}', 33784),
+    ('\u{bba}', 33785),
+    ('\u{bbe}', 33786),
+    ('\u{bc3}', 33787),
+    ('\u{bc6}', 33788),
+    ('\u{bc9}', 33789),
+    ('\u{bca}', 33790),
+    ('\u{bce}', 33791),
+    ('\u{bd0}', 33792),
+    ('\u{bd1}', 33793),
+    ('\u{bd7}', 33794),
+    ('\u{bd8}', 33795),
+    ('\u{be6}', 33796),
+    ('\u{bfb}', 33797),
+    ('\u{c00}', 33798),
+    ('\u{c0d}', 33799),
+    ('\u{c0e}', 33800),
+    ('\u{c11}', 33801),
+    ('\u{c12}', 33802),
+    ('\u{c29}', 33803),
+    ('\u{c2a}', 33804),
+    ('\u{c3a}', 33805),
+    ('\u{c3d}', 33806),
+    ('\u{c45}', 33807),
+    ('\u{c46}', 33808),
+    ('\u{c49}', 33809),
+    ('\u{c4a}', 33810),
+    ('\u{c4e}', 33811),
+    ('\u{c55}', 33812),
+    ('\u{c57}', 33813),
+    ('\u{c58}', 33814),
+    ('\u{c5b}', 33815),
+    ('\u{c60}', 33816),
+    ('\u{c64}', 33817),
+    ('\u{c66}', 33818),
+    ('\u{c70}', 33819),
+    ('\u{c77}', 33820),
+    ('\u{c8d}', 33821),
+    ('\u{c8e}', 33822),
+    ('\u{c91}', 33823),
+    ('\u{c92}', 33824),
+    ('\u{ca9}', 33825),
+    ('\u{caa}', 33826),
+    ('\u{cb4}', 33827),
+    ('\u{cb5}', 33828),
+    ('\u{cba}', 33829),
+    ('\u{cbc}', 33830),
+    ('\u{cc5}', 33831),
+    ('\u{cc6}', 33832),
+    ('\u{cc9}', 33833),
+    ('\u{cca}', 33834),
+    ('\u{cce}', 33835),
+    ('\u{cd5}', 33836),
+    ('\u{cd7}', 33837),
+    ('\u{cde}', 1070),
+    ('\u{ce0}', 33840),
+    ('\u{ce4}', 33841),
+    ('\u{ce6}', 33842),
+    ('\u{cf0}', 33843),
+    ('\u{cf1}', 33844),
+    ('\u{cf3}', 33845),
+    ('\u{d00}', 33846),
+    ('\u{d0d}', 33847),
+    ('\u{d0e}', 33848),
+    ('\u{d11}', 33849),
+    ('\u{d12}', 33850),
+    ('\u{d45}', 33851),
+    ('\u{d46}', 33852),
+    ('\u{d49}', 33853),
+    ('\u{d4a}', 33854),
+    ('\u{d50}', 33855),
+    ('\u{d54}', 33856),
+    ('\u{d64}', 33857),
+    ('\u{d66}', 33858),
+    ('\u{d80}', 33859),
+    ('\u{d81}', 33860),
+    ('\u{d84}', 33861),
+    ('\u{d85}', 33862),
+    ('\u{d97}', 33863),
+    ('\u{d9a}', 33864),
+    ('\u{db2}', 33865),
+    ('\u{db3}', 33866),
+    ('\u{dbc}', 1099),
+    ('\u{dbe}', 33869),
+    ('\u{dc0}', 33870),
+    ('\u{dc7}', 33871),
+    ('\u{dca}', 33872),
+    ('\u{dcb}', 33873),
+    ('\u{dcf}', 33874),
+    ('\u{dd5}', 1107),
+    ('\u{dd8}', 33878),
+    ('\u{de0}', 33879),
+    ('\u{de6}', 33880),
+    ('\u{df0}', 33881),
+    ('\u{df2}', 33882),
+    ('\u{df5}', 33883),
+    ('\u{e01}', 33884),
+    ('\u{e33}', 33885),
+    ('\u{e34}', 33886),
+    ('\u{e3b}', 33887),
+    ('\u{e3f}', 33888),
+    ('\u{e5c}', 33889),
+    ('\u{e81}', 33890),
+    ('\u{e83}', 1123),
+    ('\u{e86}', 33894),
+    ('\u{e8b}', 33895),
+    ('\u{e8c}', 33896),
+    ('\u{ea4}', 1129),
+    ('\u{ea7}', 33900),
+    ('\u{eb3}', 33901),
+    ('\u{eb4}', 33902),
+    ('\u{ebe}', 33903),
+    ('\u{ec0}', 33904),
+    ('\u{ec5}', 1137),
+    ('\u{ec8}', 33908),
+    ('\u{ece}', 33909),
+    ('\u{ed0}', 33910),
+    ('\u{eda}', 33911),
+    ('\u{edc}', 1144),
+    ('\u{ede}', 33914),
+    ('\u{ee0}', 33915),
+    ('\u{f00}', 33916),
+    ('\u{f0c}', 33917),
+    ('\u{f0d}', 33918),
+    ('\u{f43}', 33919),
+    ('\u{f44}', 33920),
+    ('\u{f48}', 33921),
+    ('\u{f49}', 33922),
+    ('\u{f4d}', 33923),
+    ('\u{f4e}', 33924),
+    ('\u{f52}', 33925),
+    ('\u{f53}', 33926),
+    ('\u{f57}', 33927),
+    ('\u{f58}', 33928),
+    ('\u{f5c}', 33929),
+    ('\u{f5d}', 33930),
+    ('\u{f69}', 33931),
+    ('\u{f6a}', 33932),
+    ('\u{f6d}', 33933),
+    ('\u{f71}', 33934),
+    ('\u{f73}', 1167),
+    ('\u{f7a}', 33942),
+    ('\u{f81}', 33943),
+    ('\u{f82}', 33944),
+    ('\u{f93}', 33945),
+    ('\u{f94}', 33946),
+    ('\u{f98}', 33947),
+    ('\u{f99}', 33948),
+    ('\u{f9d}', 33949),
+    ('\u{f9e}', 33950),
+    ('\u{fa2}', 33951),
+    ('\u{fa3}', 33952),
+    ('\u{fa7}', 33953),
+    ('\u{fa8}', 33954),
+    ('\u{fac}', 33955),
+    ('\u{fad}', 33956),
+    ('\u{fb9}', 33957),
+    ('\u{fba}', 33958),
+    ('\u{fbd}', 33959),
+    ('\u{fbe}', 33960),
+    ('\u{fcd}', 33961),
+    ('\u{fce}', 33962),
+    ('\u{fdb}', 33963),
+    ('\u{1000}', 33964),
+    ('\u{10a0}', 33965),
+    ('\u{10c7}', 33966),
+    ('\u{10c8}', 33967),
+    ('\u{10cd}', 33968),
+    ('\u{10ce}', 33969),
+    ('\u{10d0}', 33970),
+    ('\u{10fc}', 33971),
+    ('\u{10fd}', 33972),
+    ('\u{115f}', 33973),
+    ('\u{1161}', 33974),
+    ('\u{1249}', 33975),
+    ('\u{124a}', 33976),
+    ('\u{124e}', 33977),
+    ('\u{1250}', 33978),
+    ('\u{1257}', 1211),
+    ('\u{125a}', 33982),
+    ('\u{125e}', 33983),
+    ('\u{1260}', 33984),
+    ('\u{1289}', 33985),
+    ('\u{128a}', 33986),
+    ('\u{128e}', 33987),
+    ('\u{1290}', 33988),
+    ('\u{12b1}', 33989),
+    ('\u{12b2}', 33990),
+    ('\u{12b6}', 33991),
+    ('\u{12b8}', 33992),
+    ('\u{12bf}', 1225),
+    ('\u{12c2}', 33996),
+    ('\u{12c6}', 33997),
+    ('\u{12c8}', 33998),
+    ('\u{12d7}', 33999),
+    ('\u{12d8}', 34000),
+    ('\u{1311}', 34001),
+    ('\u{1312}', 34002),
+    ('\u{1316}', 34003),
+    ('\u{1318}', 34004),
+    ('\u{135b}', 34005),
+    ('\u{135d}', 34006),
+    ('\u{137d}', 34007),
+    ('\u{1380}', 34008),
+    ('\u{139a}', 34009),
+    ('\u{13a0}', 34010),
+    ('\u{13f6}', 34011),
+    ('\u{13f8}', 1244),
+    ('\u{13fe}', 34018),
+    ('\u{1400}', 34019),
+    ('\u{1680}', 34020),
+    ('\u{1681}', 34021),
+    ('\u{169d}', 34022),
+    ('\u{16a0}', 34023),
+    ('\u{16f9}', 34024),
+    ('\u{1700}', 34025),
+    ('\u{170d}', 34026),
+    ('\u{170e}', 34027),
+    ('\u{1715}', 34028),
+    ('\u{1720}', 34029),
+    ('\u{1737}', 34030),
+    ('\u{1740}', 34031),
+    ('\u{1754}', 34032),
+    ('\u{1760}', 34033),
+    ('\u{176d}', 34034),
+    ('\u{176e}', 34035),
+    ('\u{1771}', 34036),
+    ('\u{1772}', 34037),
+    ('\u{1774}', 34038),
+    ('\u{1780}', 34039),
+    ('\u{17b4}', 34040),
+    ('\u{17b6}', 34041),
+    ('\u{17de}', 34042),
+    ('\u{17e0}', 34043),
+    ('\u{17ea}', 34044),
+    ('\u{17f0}', 34045),
+    ('\u{17fa}', 34046),
+    ('\u{1800}', 34047),
+    ('\u{1806}', 34048),
+    ('\u{1807}', 34049),
+    ('\u{180b}', 34050),
+    ('\u{180e}', 34051),
+    ('\u{1810}', 34052),
+    ('\u{181a}', 34053),
+    ('\u{1820}', 34054),
+    ('\u{1879}', 34055),
+    ('\u{1880}', 34056),
+    ('\u{18ab}', 34057),
+    ('\u{18b0}', 34058),
+    ('\u{18f6}', 34059),
+    ('\u{1900}', 34060),
+    ('\u{191f}', 34061),
+    ('\u{1920}', 34062),
+    ('\u{192c}', 34063),
+    ('\u{1930}', 34064),
+    ('\u{193c}', 34065),
+    ('\u{1940}', 34066),
+    ('\u{1941}', 34067),
+    ('\u{1944}', 34068),
+    ('\u{196e}', 34069),
+    ('\u{1970}', 34070),
+    ('\u{1975}', 34071),
+    ('\u{1980}', 34072),
+    ('\u{19ac}', 34073),
+    ('\u{19b0}', 34074),
+    ('\u{19ca}', 34075),
+    ('\u{19d0}', 34076),
+    ('\u{19db}', 34077),
+    ('\u{19de}', 34078),
+    ('\u{1a1c}', 34079),
+    ('\u{1a1e}', 34080),
+    ('\u{1a5f}', 34081),
+    ('\u{1a60}', 34082),
+    ('\u{1a7d}', 34083),
+    ('\u{1a7f}', 34084),
+    ('\u{1a8a}', 34085),
+    ('\u{1a90}', 34086),
+    ('\u{1a9a}', 34087),
+    ('\u{1aa0}', 34088),
+    ('\u{1aae}', 34089),
+    ('\u{1ab0}', 34090),
+    ('\u{1ac1}', 34091),
+    ('\u{1b00}', 34092),
+    ('\u{1b4c}', 34093),
+    ('\u{1b50}', 34094),
+    ('\u{1b7d}', 34095),
+    ('\u{1b80}', 34096),
+    ('\u{1bf4}', 34097),
+    ('\u{1bfc}', 34098),
+    ('\u{1c38}', 34099),
+    ('\u{1c3b}', 34100),
+    ('\u{1c4a}', 34101),
+    ('\u{1c4d}', 34102),
+    ('\u{1c80}', 1335),
+    ('\u{1c84}', 34107),
+    ('\u{1c86}', 1340),
+    ('\u{1c89}', 34111),
+    ('\u{1c90}', 1344),
+    ('\u{1cbb}', 34155),
+    ('\u{1cbd}', 1388),
+    ('\u{1cc0}', 34159),
+    ('\u{1cc8}', 34160),
+    ('\u{1cd0}', 34161),
+    ('\u{1cfb}', 34162),
+    ('\u{1d00}', 34163),
+    ('\u{1d2c}', 1396),
+    ('\u{1d6b}', 34227),
+    ('\u{1d78}', 34228),
+    ('\u{1d79}', 34229),
+    ('\u{1d9b}', 1462),
+    ('\u{1dc0}', 34267),
+    ('\u{1dfa}', 34268),
+    ('\u{1dfb}', 34269),
+    ('\u{1e00}', 1502),
+    ('\u{1e95}', 34419),
+    ('\u{1e9a}', 1652),
+    ('\u{1e9c}', 34422),
+    ('\u{1e9e}', 1655),
+    ('\u{1eff}', 34520),
+    ('\u{1f08}', 1753),
+    ('\u{1f10}', 34529),
+    ('\u{1f16}', 34530),
+    ('\u{1f18}', 1763),
+    ('\u{1f1e}', 34537),
+    ('\u{1f20}', 34538),
+    ('\u{1f28}', 1771),
+    ('\u{1f30}', 34547),
+    ('\u{1f38}', 1780),
+    ('\u{1f40}', 34556),
+    ('\u{1f46}', 34557),
+    ('\u{1f48}', 1790),
+    ('\u{1f4e}', 34564),
+    ('\u{1f50}', 34565),
+    ('\u{1f58}', 1798),
+    ('\u{1f60}', 34574),
+    ('\u{1f68}', 1807),
+    ('\u{1f7e}', 34597),
+    ('\u{1f80}', 1830),
+    ('\u{1fb0}', 34646),
+    ('\u{1fb2}', 1879),
+    ('\u{1fd0}', 34677),
+    ('\u{1fd3}', 34678),
+    ('\u{1fd4}', 34679),
+    ('\u{1fd6}', 34680),
+    ('\u{1fd8}', 1913),
+    ('\u{1fe0}', 34689),
+    ('\u{1fe3}', 34690),
+    ('\u{1fe4}', 34691),
+    ('\u{1fe8}', 1924),
+    ('\u{1ff0}', 34700),
+    ('\u{1ff2}', 1933),
+    ('\u{2000}', 34715),
+    ('\u{200b}', 34716),
+    ('\u{200c}', 34717),
+    ('\u{200e}', 34718),
+    ('\u{2010}', 1951),
+    ('\u{2012}', 34721),
+    ('\u{2017}', 34722),
+    ('\u{2018}', 34723),
+    ('\u{2024}', 34724),
+    ('\u{2027}', 34725),
+    ('\u{2028}', 34726),
+    ('\u{202f}', 34727),
+    ('\u{2030}', 34728),
+    ('\u{2033}', 1961),
+    ('\u{2038}', 34734),
+    ('\u{203c}', 1967),
+    ('\u{203f}', 34738),
+    ('\u{2047}', 1971),
+    ('\u{204a}', 34742),
+    ('\u{2057}', 34743),
+    ('\u{2058}', 34744),
+    ('\u{205f}', 1977),
+    ('\u{2061}', 34747),
+    ('\u{2064}', 34748),
+    ('\u{2065}', 34749),
+    ('\u{2070}', 1982),
+    ('\u{2072}', 34752),
+    ('\u{2074}', 1985),
+    ('\u{209d}', 34794),
+    ('\u{20a0}', 34795),
+    ('\u{20a8}', 34796),
+    ('\u{20a9}', 34797),
+    ('\u{20c0}', 34798),
+    ('\u{20d0}', 34799),
+    ('\u{20f1}', 34800),
+    ('\u{2100}', 2033),
+    ('\u{210b}', 34812),
+    ('\u{210f}', 34813),
+    ('\u{2110}', 34814),
+    ('\u{2112}', 34815),
+    ('\u{2114}', 2048),
+    ('\u{2117}', 34819),
+    ('\u{2119}', 2052),
+    ('\u{211b}', 34822),
+    ('\u{211e}', 34823),
+    ('\u{2120}', 2056),
+    ('\u{212f}', 34839),
+    ('\u{2131}', 2072),
+    ('\u{213d}', 34852),
+    ('\u{213f}', 2085),
+    ('\u{2141}', 34855),
+    ('\u{2145}', 34856),
+    ('\u{2147}', 2089),
+    ('\u{214a}', 34860),
+    ('\u{2150}', 2093),
+    ('\u{2180}', 34909),
+    ('\u{2183}', 34910),
+    ('\u{2184}', 34911),
+    ('\u{2189}', 34912),
+    ('\u{218a}', 34913),
+    ('\u{218c}', 34914),
+    ('\u{2190}', 34915),
+    ('\u{222c}', 2148),
+    ('\u{2231}', 34921),
+    ('\u{2260}', 34922),
+    ('\u{2261}', 34923),
+    ('\u{226e}', 34924),
+    ('\u{2270}', 34925),
+    ('\u{2329}', 2158),
+    ('\u{232b}', 34928),
+    ('\u{2427}', 34929),
+    ('\u{2440}', 34930),
+    ('\u{244b}', 34931),
+    ('\u{2460}', 2164),
+    ('\u{2488}', 34972),
+    ('\u{249c}', 2205),
+    ('\u{24eb}', 35052),
+    ('\u{2a0c}', 35053),
+    ('\u{2a0d}', 35054),
+    ('\u{2a74}', 2287),
+    ('\u{2a77}', 35058),
+    ('\u{2adc}', 35059),
+    ('\u{2add}', 35060),
+    ('\u{2b74}', 35061),
+    ('\u{2b76}', 35062),
+    ('\u{2b96}', 35063),
+    ('\u{2b97}', 35064),
+    ('\u{2c00}', 2297),
+    ('\u{2c30}', 35113),
+    ('\u{2c5f}', 2346),
+    ('\u{2c65}', 35120),
+    ('\u{2c67}', 2353),
+    ('\u{2c73}', 35133),
+    ('\u{2c75}', 35134),
+    ('\u{2c76}', 35135),
+    ('\u{2c7c}', 2368),
+    ('\u{2ce3}', 35239),
+    ('\u{2ceb}', 2472),
+    ('\u{2cee}', 35243),
+    ('\u{2cf2}', 2476),
+    ('\u{2cf4}', 35246),
+    ('\u{2cf9}', 35247),
+    ('\u{2d26}', 2480),
+    ('\u{2d28}', 35250),
+    ('\u{2d2d}', 35251),
+    ('\u{2d2e}', 35252),
+    ('\u{2d30}', 35253),
+    ('\u{2d68}', 35254),
+    ('\u{2d6f}', 2487),
+    ('\u{2d71}', 35257),
+    ('\u{2d7f}', 35258),
+    ('\u{2d97}', 35259),
+    ('\u{2da0}', 35260),
+    ('\u{2da7}', 35261),
+    ('\u{2da8}', 35262),
+    ('\u{2daf}', 35263),
+    ('\u{2db0}', 35264),
+    ('\u{2db7}', 35265),
+    ('\u{2db8}', 35266),
+    ('\u{2dbf}', 35267),
+    ('\u{2dc0}', 35268),
+    ('\u{2dc7}', 35269),
+    ('\u{2dc8}', 35270),
+    ('\u{2dcf}', 35271),
+    ('\u{2dd0}', 35272),
+    ('\u{2dd7}', 35273),
+    ('\u{2dd8}', 35274),
+    ('\u{2ddf}', 35275),
+    ('\u{2de0}', 35276),
+    ('\u{2e53}', 35277),
+    ('\u{2e80}', 35278),
+    ('\u{2e9a}', 35279),
+    ('\u{2e9b}', 35280),
+    ('\u{2e9f}', 35281),
+    ('\u{2ea0}', 35282),
+    ('\u{2ef3}', 35283),
+    ('\u{2ef4}', 35284),
+    ('\u{2f00}', 2517),
+    ('\u{2fd6}', 35499),
+    ('\u{3000}', 2732),
+    ('\u{3003}', 35503),
+    ('\u{3036}', 2736),
+    ('\u{303b}', 35509),
+    ('\u{3040}', 35510),
+    ('\u{3041}', 35511),
+    ('\u{3097}', 35512),
+    ('\u{3099}', 35513),
+    ('\u{309b}', 2746),
+    ('\u{309d}', 35516),
+    ('\u{309f}', 35517),
+    ('\u{30a0}', 35518),
+    ('\u{30ff}', 35519),
+    ('\u{3100}', 35520),
+    ('\u{3105}', 35521),
+    ('\u{3130}', 2754),
+    ('\u{3190}', 35618),
+    ('\u{3192}', 2851),
+    ('\u{31a0}', 35633),
+    ('\u{31e4}', 35634),
+    ('\u{31f0}', 35635),
+    ('\u{3200}', 2868),
+    ('\u{3248}', 35708),
+    ('\u{3250}', 2941),
+    ('\u{3400}', 36141),
+    ('\u{9ffd}', 36142),
+    ('\u{a000}', 36143),
+    ('\u{a48d}', 36144),
+    ('\u{a490}', 36145),
+    ('\u{a4c7}', 36146),
+    ('\u{a4d0}', 36147),
+    ('\u{a62c}', 36148),
+    ('\u{a640}', 3381),
+    ('\u{a66d}', 36194),
+    ('\u{a680}', 3427),
+    ('\u{a69e}', 36225),
+    ('\u{a6f8}', 36226),
+    ('\u{a700}', 36227),
+    ('\u{a722}', 3460),
+    ('\u{a72f}', 36241),
+    ('\u{a732}', 3474),
+    ('\u{a771}', 36305),
+    ('\u{a779}', 3538),
+    ('\u{a787}', 36320),
+    ('\u{a78b}', 3553),
+    ('\u{a78e}', 36324),
+    ('\u{a790}', 3557),
+    ('\u{a793}', 36328),
+    ('\u{a796}', 3561),
+    ('\u{a7c0}', 36371),
+    ('\u{a7c2}', 3604),
+    ('\u{a7cb}', 36381),
+    ('\u{a7f5}', 36382),
+    ('\u{a7f6}', 36383),
+    ('\u{a7f8}', 3616),
+    ('\u{a7fa}', 36386),
+    ('\u{a82d}', 36387),
+    ('\u{a830}', 36388),
+    ('\u{a83a}', 36389),
+    ('\u{a840}', 36390),
+    ('\u{a878}', 36391),
+    ('\u{a880}', 36392),
+    ('\u{a8c6}', 36393),
+    ('\u{a8ce}', 36394),
+    ('\u{a8da}', 36395),
+    ('\u{a8e0}', 36396),
+    ('\u{a954}', 36397),
+    ('\u{a95f}', 36398),
+    ('\u{a97d}', 36399),
+    ('\u{a980}', 36400),
+    ('\u{a9ce}', 36401),
+    ('\u{a9cf}', 36402),
+    ('\u{a9da}', 36403),
+    ('\u{a9de}', 36404),
+    ('\u{a9ff}', 36405),
+    ('\u{aa00}', 36406),
+    ('\u{aa37}', 36407),
+    ('\u{aa40}', 36408),
+    ('\u{aa4e}', 36409),
+    ('\u{aa50}', 36410),
+    ('\u{aa5a}', 36411),
+    ('\u{aa5c}', 36412),
+    ('\u{aac3}', 36413),
+    ('\u{aadb}', 36414),
+    ('\u{aaf7}', 36415),
+    ('\u{ab01}', 36416),
+    ('\u{ab07}', 36417),
+    ('\u{ab09}', 36418),
+    ('\u{ab0f}', 36419),
+    ('\u{ab11}', 36420),
+    ('\u{ab17}', 36421),
+    ('\u{ab20}', 36422),
+    ('\u{ab27}', 36423),
+    ('\u{ab28}', 36424),
+    ('\u{ab2f}', 36425),
+    ('\u{ab30}', 36426),
+    ('\u{ab5c}', 3659),
+    ('\u{ab60}', 36431),
+    ('\u{ab69}', 36432),
+    ('\u{ab6a}', 36433),
+    ('\u{ab6c}', 36434),
+    ('\u{ab70}', 3667),
+    ('\u{abc0}', 36515),
+    ('\u{abee}', 36516),
+    ('\u{abf0}', 36517),
+    ('\u{abfa}', 36518),
+    ('\u{ac00}', 36519),
+    ('\u{d7a4}', 36520),
+    ('\u{d7b0}', 36521),
+    ('\u{d7c7}', 36522),
+    ('\u{d7cb}', 36523),
+    ('\u{d7fc}', 36524),
+    ('\u{f900}', 3757),
+    ('\u{f907}', 36532),
+    ('\u{f909}', 3765),
+    ('\u{fa0e}', 36794),
+    ('\u{fa10}', 4027),
+    ('\u{fa13}', 36798),
+    ('\u{fa15}', 4031),
+    ('\u{fa23}', 36813),
+    ('\u{fa25}', 4046),
+    ('\u{fa27}', 36816),
+    ('\u{fa2a}', 4049),
+    ('\u{fa5d}', 36868),
+    ('\u{fa5f}', 4101),
+    ('\u{fa6e}', 36884),
+    ('\u{fa70}', 4117),
+    ('\u{fada}', 36991),
+    ('\u{fb00}', 4224),
+    ('\u{fb05}', 36997),
+    ('\u{fb07}', 36998),
+    ('\u{fb13}', 4231),
+    ('\u{fb18}', 37004),
+    ('\u{fb1d}', 4237),
+    ('\u{fb50}', 37056),
+    ('\u{fb52}', 37057),
+    ('\u{fb56}', 37058),
+    ('\u{fb5a}', 37059),
+    ('\u{fb5e}', 37060),
+    ('\u{fb62}', 37061),
+    ('\u{fb66}', 37062),
+    ('\u{fb6a}', 37063),
+    ('\u{fb6e}', 37064),
+    ('\u{fb72}', 37065),
+    ('\u{fb76}', 37066),
+    ('\u{fb7a}', 37067),
+    ('\u{fb7e}', 37068),
+    ('\u{fb82}', 37069),
+    ('\u{fb84}', 37070),
+    ('\u{fb86}', 37071),
+    ('\u{fb88}', 37072),
+    ('\u{fb8a}', 37073),
+    ('\u{fb8c}', 37074),
+    ('\u{fb8e}', 37075),
+    ('\u{fb92}', 37076),
+    ('\u{fb96}', 37077),
+    ('\u{fb9a}', 37078),
+    ('\u{fb9e}', 37079),
+    ('\u{fba0}', 37080),
+    ('\u{fba4}', 37081),
+    ('\u{fba6}', 37082),
+    ('\u{fbaa}', 37083),
+    ('\u{fbae}', 37084),
+    ('\u{fbb0}', 37085),
+    ('\u{fbb2}', 37086),
+    ('\u{fbc2}', 37087),
+    ('\u{fbd3}', 37088),
+    ('\u{fbd7}', 37089),
+    ('\u{fbd9}', 37090),
+    ('\u{fbdb}', 37091),
+    ('\u{fbdd}', 37092),
+    ('\u{fbde}', 37093),
+    ('\u{fbe0}', 37094),
+    ('\u{fbe2}', 37095),
+    ('\u{fbe4}', 37096),
+    ('\u{fbe8}', 37097),
+    ('\u{fbea}', 37098),
+    ('\u{fbec}', 37099),
+    ('\u{fbee}', 37100),
+    ('\u{fbf0}', 37101),
+    ('\u{fbf2}', 37102),
+    ('\u{fbf4}', 37103),
+    ('\u{fbf6}', 37104),
+    ('\u{fbf9}', 37105),
+    ('\u{fbfc}', 37106),
+    ('\u{fc00}', 4339),
+    ('\u{fd3c}', 37423),
+    ('\u{fd3e}', 37424),
+    ('\u{fd40}', 37425),
+    ('\u{fd50}', 37426),
+    ('\u{fd51}', 37427),
+    ('\u{fd53}', 4660),
+    ('\u{fd58}', 37433),
+    ('\u{fd5a}', 4666),
+    ('\u{fd5f}', 37439),
+    ('\u{fd61}', 37440),
+    ('\u{fd62}', 37441),
+    ('\u{fd64}', 37442),
+    ('\u{fd66}', 37443),
+    ('\u{fd67}', 37444),
+    ('\u{fd69}', 37445),
+    ('\u{fd6a}', 37446),
+    ('\u{fd6c}', 37447),
+    ('\u{fd6e}', 37448),
+    ('\u{fd6f}', 37449),
+    ('\u{fd71}', 37450),
+    ('\u{fd73}', 4683),
+    ('\u{fd76}', 37454),
+    ('\u{fd78}', 4687),
+    ('\u{fd7c}', 37459),
+    ('\u{fd7e}', 4692),
+    ('\u{fd83}', 37465),
+    ('\u{fd85}', 37466),
+    ('\u{fd87}', 37467),
+    ('\u{fd89}', 4700),
+    ('\u{fd90}', 37475),
+    ('\u{fd92}', 4708),
+    ('\u{fd97}', 37481),
+    ('\u{fd99}', 4714),
+    ('\u{fd9c}', 37485),
+    ('\u{fd9e}', 4718),
+    ('\u{fdc8}', 37528),
+    ('\u{fdf0}', 4761),
+    ('\u{fdfe}', 37543),
+    ('\u{fe00}', 37544),
+    ('\u{fe10}', 4777),
+    ('\u{fe19}', 37554),
+    ('\u{fe20}', 37555),
+    ('\u{fe30}', 4788),
+    ('\u{fe33}', 37559),
+    ('\u{fe35}', 4792),
+    ('\u{fe45}', 37576),
+    ('\u{fe47}', 4809),
+    ('\u{fe49}', 37579),
+    ('\u{fe4d}', 37580),
+    ('\u{fe50}', 4813),
+    ('\u{fe52}', 37583),
+    ('\u{fe54}', 4816),
+    ('\u{fe6c}', 37608),
+    ('\u{fe70}', 4841),
+    ('\u{fe81}', 37626),
+    ('\u{fe83}', 37627),
+    ('\u{fe85}', 37628),
+    ('\u{fe87}', 37629),
+    ('\u{fe89}', 37630),
+    ('\u{fe8d}', 37631),
+    ('\u{fe8f}', 37632),
+    ('\u{fe93}', 37633),
+    ('\u{fe95}', 37634),
+    ('\u{fe99}', 37635),
+    ('\u{fe9d}', 37636),
+    ('\u{fea1}', 37637),
+    ('\u{fea5}', 37638),
+    ('\u{fea9}', 37639),
+    ('\u{feab}', 37640),
+    ('\u{fead}', 37641),
+    ('\u{feaf}', 37642),
+    ('\u{feb1}', 37643),
+    ('\u{feb5}', 37644),
+    ('\u{feb9}', 37645),
+    ('\u{febd}', 37646),
+    ('\u{fec1}', 37647),
+    ('\u{fec5}', 37648),
+    ('\u{fec9}', 37649),
+    ('\u{fecd}', 37650),
+    ('\u{fed1}', 37651),
+    ('\u{fed5}', 37652),
+    ('\u{fed9}', 37653),
+    ('\u{fedd}', 37654),
+    ('\u{fee1}', 37655),
+    ('\u{fee5}', 37656),
+    ('\u{fee9}', 37657),
+    ('\u{feed}', 37658),
+    ('\u{feef}', 37659),
+    ('\u{fef1}', 37660),
+    ('\u{fef5}', 37661),
+    ('\u{fef7}', 37662),
+    ('\u{fef9}', 37663),
+    ('\u{fefb}', 37664),
+    ('\u{fefd}', 37665),
+    ('\u{feff}', 4898),
+    ('\u{ffbf}', 37858),
+    ('\u{ffc2}', 5091),
+    ('\u{ffc8}', 37865),
+    ('\u{ffca}', 5098),
+    ('\u{ffd0}', 37872),
+    ('\u{ffd2}', 5105),
+    ('\u{ffd8}', 37879),
+    ('\u{ffda}', 5112),
+    ('\u{ffdd}', 37883),
+    ('\u{ffe0}', 5116),
+    ('\u{ffef}', 37899),
+    ('\u{10000}', 37900),
+    ('\u{1000c}', 37901),
+    ('\u{1000d}', 37902),
+    ('\u{10027}', 37903),
+    ('\u{10028}', 37904),
+    ('\u{1003b}', 37905),
+    ('\u{1003c}', 37906),
+    ('\u{1003e}', 37907),
+    ('\u{1003f}', 37908),
+    ('\u{1004e}', 37909),
+    ('\u{10050}', 37910),
+    ('\u{1005e}', 37911),
+    ('\u{10080}', 37912),
+    ('\u{100fb}', 37913),
+    ('\u{10100}', 37914),
+    ('\u{10103}', 37915),
+    ('\u{10107}', 37916),
+    ('\u{10134}', 37917),
+    ('\u{10137}', 37918),
+    ('\u{1018f}', 37919),
+    ('\u{10190}', 37920),
+    ('\u{1019d}', 37921),
+    ('\u{101a0}', 37922),
+    ('\u{101a1}', 37923),
+    ('\u{101d0}', 37924),
+    ('\u{101fe}', 37925),
+    ('\u{10280}', 37926),
+    ('\u{1029d}', 37927),
+    ('\u{102a0}', 37928),
+    ('\u{102d1}', 37929),
+    ('\u{102e0}', 37930),
+    ('\u{102fc}', 37931),
+    ('\u{10300}', 37932),
+    ('\u{10324}', 37933),
+    ('\u{1032d}', 37934),
+    ('\u{1034b}', 37935),
+    ('\u{10350}', 37936),
+    ('\u{1037b}', 37937),
+    ('\u{10380}', 37938),
+    ('\u{1039e}', 37939),
+    ('\u{1039f}', 37940),
+    ('\u{103c4}', 37941),
+    ('\u{103c8}', 37942),
+    ('\u{103d6}', 37943),
+    ('\u{10400}', 5176),
+    ('\u{10428}', 37984),
+    ('\u{1049e}', 37985),
+    ('\u{104a0}', 37986),
+    ('\u{104aa}', 37987),
+    ('\u{104b0}', 5220),
+    ('\u{104d4}', 38024),
+    ('\u{104d8}', 38025),
+    ('\u{104fc}', 38026),
+    ('\u{10500}', 38027),
+    ('\u{10528}', 38028),
+    ('\u{10530}', 38029),
+    ('\u{10564}', 38030),
+    ('\u{1056f}', 38031),
+    ('\u{10570}', 38032),
+    ('\u{10600}', 38033),
+    ('\u{10737}', 38034),
+    ('\u{10740}', 38035),
+    ('\u{10756}', 38036),
+    ('\u{10760}', 38037),
+    ('\u{10768}', 38038),
+    ('\u{10800}', 38039),
+    ('\u{10806}', 38040),
+    ('\u{10808}', 5273),
+    ('\u{1080a}', 38043),
+    ('\u{10836}', 38044),
+    ('\u{10837}', 38045),
+    ('\u{10839}', 38046),
+    ('\u{1083c}', 38047),
+    ('\u{1083d}', 38048),
+    ('\u{1083f}', 38049),
+    ('\u{10856}', 38050),
+    ('\u{10857}', 38051),
+    ('\u{1089f}', 38052),
+    ('\u{108a7}', 38053),
+    ('\u{108b0}', 38054),
+    ('\u{108e0}', 38055),
+    ('\u{108f3}', 38056),
+    ('\u{108f4}', 38057),
+    ('\u{108f6}', 38058),
+    ('\u{108fb}', 38059),
+    ('\u{1091c}', 38060),
+    ('\u{1091f}', 38061),
+    ('\u{1093a}', 38062),
+    ('\u{1093f}', 38063),
+    ('\u{10940}', 38064),
+    ('\u{10980}', 38065),
+    ('\u{109b8}', 38066),
+    ('\u{109bc}', 38067),
+    ('\u{109d0}', 38068),
+    ('\u{109d2}', 38069),
+    ('\u{10a04}', 38070),
+    ('\u{10a05}', 38071),
+    ('\u{10a07}', 38072),
+    ('\u{10a0c}', 38073),
+    ('\u{10a14}', 38074),
+    ('\u{10a15}', 38075),
+    ('\u{10a18}', 38076),
+    ('\u{10a19}', 38077),
+    ('\u{10a36}', 38078),
+    ('\u{10a38}', 38079),
+    ('\u{10a3b}', 38080),
+    ('\u{10a3f}', 38081),
+    ('\u{10a49}', 38082),
+    ('\u{10a50}', 38083),
+    ('\u{10a59}', 38084),
+    ('\u{10a60}', 38085),
+    ('\u{10aa0}', 38086),
+    ('\u{10ac0}', 38087),
+    ('\u{10ae7}', 38088),
+    ('\u{10aeb}', 38089),
+    ('\u{10af7}', 38090),
+    ('\u{10b00}', 38091),
+    ('\u{10b36}', 38092),
+    ('\u{10b39}', 38093),
+    ('\u{10b56}', 38094),
+    ('\u{10b58}', 38095),
+    ('\u{10b73}', 38096),
+    ('\u{10b78}', 38097),
+    ('\u{10b92}', 38098),
+    ('\u{10b99}', 38099),
+    ('\u{10b9d}', 38100),
+    ('\u{10ba9}', 38101),
+    ('\u{10bb0}', 38102),
+    ('\u{10c00}', 38103),
+    ('\u{10c49}', 38104),
+    ('\u{10c80}', 5337),
+    ('\u{10cb3}', 38156),
+    ('\u{10cc0}', 38157),
+    ('\u{10cf3}', 38158),
+    ('\u{10cfa}', 38159),
+    ('\u{10d28}', 38160),
+    ('\u{10d30}', 38161),
+    ('\u{10d3a}', 38162),
+    ('\u{10e60}', 38163),
+    ('\u{10e7f}', 38164),
+    ('\u{10e80}', 38165),
+    ('\u{10eaa}', 38166),
+    ('\u{10eab}', 38167),
+    ('\u{10eae}', 38168),
+    ('\u{10eb0}', 38169),
+    ('\u{10eb2}', 38170),
+    ('\u{10f00}', 38171),
+    ('\u{10f28}', 38172),
+    ('\u{10f30}', 38173),
+    ('\u{10f5a}', 38174),
+    ('\u{10fb0}', 38175),
+    ('\u{10fcc}', 38176),
+    ('\u{10fe0}', 38177),
+    ('\u{10ff7}', 38178),
+    ('\u{11000}', 38179),
+    ('\u{1104e}', 38180),
+    ('\u{11052}', 38181),
+    ('\u{11070}', 38182),
+    ('\u{1107f}', 38183),
+    ('\u{110bd}', 38184),
+    ('\u{110be}', 38185),
+    ('\u{110c2}', 38186),
+    ('\u{110d0}', 38187),
+    ('\u{110e9}', 38188),
+    ('\u{110f0}', 38189),
+    ('\u{110fa}', 38190),
+    ('\u{11100}', 38191),
+    ('\u{11135}', 38192),
+    ('\u{11136}', 38193),
+    ('\u{11148}', 38194),
+    ('\u{11150}', 38195),
+    ('\u{11177}', 38196),
+    ('\u{11180}', 38197),
+    ('\u{111e0}', 38198),
+    ('\u{111e1}', 38199),
+    ('\u{111f5}', 38200),
+    ('\u{11200}', 38201),
+    ('\u{11212}', 38202),
+    ('\u{11213}', 38203),
+    ('\u{1123f}', 38204),
+    ('\u{11280}', 38205),
+    ('\u{11287}', 5438),
+    ('\u{1128a}', 38209),
+    ('\u{1128e}', 38210),
+    ('\u{1128f}', 38211),
+    ('\u{1129e}', 38212),
+    ('\u{1129f}', 38213),
+    ('\u{112aa}', 38214),
+    ('\u{112b0}', 38215),
+    ('\u{112eb}', 38216),
+    ('\u{112f0}', 38217),
+    ('\u{112fa}', 38218),
+    ('\u{11300}', 38219),
+    ('\u{11304}', 38220),
+    ('\u{11305}', 38221),
+    ('\u{1130d}', 38222),
+    ('\u{1130f}', 38223),
+    ('\u{11311}', 38224),
+    ('\u{11313}', 38225),
+    ('\u{11329}', 38226),
+    ('\u{1132a}', 38227),
+    ('\u{11331}', 38228),
+    ('\u{11332}', 38229),
+    ('\u{11334}', 38230),
+    ('\u{11335}', 38231),
+    ('\u{1133a}', 38232),
+    ('\u{1133b}', 38233),
+    ('\u{11345}', 38234),
+    ('\u{11347}', 38235),
+    ('\u{11349}', 38236),
+    ('\u{1134b}', 38237),
+    ('\u{1134e}', 38238),
+    ('\u{11350}', 38239),
+    ('\u{11351}', 38240),
+    ('\u{11357}', 38241),
+    ('\u{11358}', 38242),
+    ('\u{1135d}', 38243),
+    ('\u{11364}', 38244),
+    ('\u{11366}', 38245),
+    ('\u{1136d}', 38246),
+    ('\u{11370}', 38247),
+    ('\u{11375}', 38248),
+    ('\u{11400}', 38249),
+    ('\u{1145c}', 38250),
+    ('\u{1145d}', 38251),
+    ('\u{11462}', 38252),
+    ('\u{11480}', 38253),
+    ('\u{114c8}', 38254),
+    ('\u{114d0}', 38255),
+    ('\u{114da}', 38256),
+    ('\u{11580}', 38257),
+    ('\u{115b6}', 38258),
+    ('\u{115b8}', 38259),
+    ('\u{115de}', 38260),
+    ('\u{11600}', 38261),
+    ('\u{11645}', 38262),
+    ('\u{11650}', 38263),
+    ('\u{1165a}', 38264),
+    ('\u{11660}', 38265),
+    ('\u{1166d}', 38266),
+    ('\u{11680}', 38267),
+    ('\u{116b9}', 38268),
+    ('\u{116c0}', 38269),
+    ('\u{116ca}', 38270),
+    ('\u{11700}', 38271),
+    ('\u{1171b}', 38272),
+    ('\u{1171d}', 38273),
+    ('\u{1172c}', 38274),
+    ('\u{11730}', 38275),
+    ('\u{11740}', 38276),
+    ('\u{11800}', 38277),
+    ('\u{1183c}', 38278),
+    ('\u{118a0}', 5511),
+    ('\u{118c0}', 38311),
+    ('\u{118f3}', 38312),
+    ('\u{118ff}', 38313),
+    ('\u{11907}', 38314),
+    ('\u{11909}', 38315),
+    ('\u{1190a}', 38316),
+    ('\u{1190c}', 38317),
+    ('\u{11914}', 38318),
+    ('\u{11915}', 38319),
+    ('\u{11917}', 38320),
+    ('\u{11918}', 38321),
+    ('\u{11936}', 38322),
+    ('\u{11937}', 38323),
+    ('\u{11939}', 38324),
+    ('\u{1193b}', 38325),
+    ('\u{11947}', 38326),
+    ('\u{11950}', 38327),
+    ('\u{1195a}', 38328),
+    ('\u{119a0}', 38329),
+    ('\u{119a8}', 38330),
+    ('\u{119aa}', 38331),
+    ('\u{119d8}', 38332),
+    ('\u{119da}', 38333),
+    ('\u{119e5}', 38334),
+    ('\u{11a00}', 38335),
+    ('\u{11a48}', 38336),
+    ('\u{11a50}', 38337),
+    ('\u{11aa3}', 38338),
+    ('\u{11ac0}', 38339),
+    ('\u{11af9}', 38340),
+    ('\u{11c00}', 38341),
+    ('\u{11c09}', 38342),
+    ('\u{11c0a}', 38343),
+    ('\u{11c37}', 38344),
+    ('\u{11c38}', 38345),
+    ('\u{11c46}', 38346),
+    ('\u{11c50}', 38347),
+    ('\u{11c6d}', 38348),
+    ('\u{11c70}', 38349),
+    ('\u{11c90}', 38350),
+    ('\u{11c92}', 38351),
+    ('\u{11ca8}', 38352),
+    ('\u{11ca9}', 38353),
+    ('\u{11cb7}', 38354),
+    ('\u{11d00}', 38355),
+    ('\u{11d07}', 38356),
+    ('\u{11d08}', 38357),
+    ('\u{11d0a}', 38358),
+    ('\u{11d0b}', 38359),
+    ('\u{11d37}', 38360),
+    ('\u{11d3a}', 5593),
+    ('\u{11d3c}', 38363),
+    ('\u{11d3e}', 38364),
+    ('\u{11d3f}', 38365),
+    ('\u{11d48}', 38366),
+    ('\u{11d50}', 38367),
+    ('\u{11d5a}', 38368),
+    ('\u{11d60}', 38369),
+    ('\u{11d66}', 38370),
+    ('\u{11d67}', 38371),
+    ('\u{11d69}', 38372),
+    ('\u{11d6a}', 38373),
+    ('\u{11d8f}', 38374),
+    ('\u{11d90}', 38375),
+    ('\u{11d92}', 38376),
+    ('\u{11d93}', 38377),
+    ('\u{11d99}', 38378),
+    ('\u{11da0}', 38379),
+    ('\u{11daa}', 38380),
+    ('\u{11ee0}', 38381),
+    ('\u{11ef9}', 38382),
+    ('\u{11fb0}', 38383),
+    ('\u{11fb1}', 38384),
+    ('\u{11fc0}', 38385),
+    ('\u{11ff2}', 38386),
+    ('\u{11fff}', 38387),
+    ('\u{1239a}', 38388),
+    ('\u{12400}', 38389),
+    ('\u{1246f}', 38390),
+    ('\u{12470}', 38391),
+    ('\u{12475}', 38392),
+    ('\u{12480}', 38393),
+    ('\u{12544}', 38394),
+    ('\u{13000}', 38395),
+    ('\u{1342f}', 38396),
+    ('\u{14400}', 38397),
+    ('\u{14647}', 38398),
+    ('\u{16800}', 38399),
+    ('\u{16a39}', 38400),
+    ('\u{16a40}', 38401),
+    ('\u{16a5f}', 38402),
+    ('\u{16a60}', 38403),
+    ('\u{16a6a}', 38404),
+    ('\u{16a6e}', 38405),
+    ('\u{16a70}', 38406),
+    ('\u{16ad0}', 38407),
+    ('\u{16aee}', 38408),
+    ('\u{16af0}', 38409),
+    ('\u{16af6}', 38410),
+    ('\u{16b00}', 38411),
+    ('\u{16b46}', 38412),
+    ('\u{16b50}', 38413),
+    ('\u{16b5a}', 38414),
+    ('\u{16b5b}', 38415),
+    ('\u{16b62}', 38416),
+    ('\u{16b63}', 38417),
+    ('\u{16b78}', 38418),
+    ('\u{16b7d}', 38419),
+    ('\u{16b90}', 38420),
+    ('\u{16e40}', 5653),
+    ('\u{16e60}', 38453),
+    ('\u{16e9b}', 38454),
+    ('\u{16f00}', 38455),
+    ('\u{16f4b}', 38456),
+    ('\u{16f4f}', 38457),
+    ('\u{16f88}', 38458),
+    ('\u{16f8f}', 38459),
+    ('\u{16fa0}', 38460),
+    ('\u{16fe0}', 38461),
+    ('\u{16fe5}', 38462),
+    ('\u{16ff0}', 38463),
+    ('\u{16ff2}', 38464),
+    ('\u{17000}', 38465),
+    ('\u{187f8}', 38466),
+    ('\u{18800}', 38467),
+    ('\u{18cd6}', 38468),
+    ('\u{18d00}', 38469),
+    ('\u{18d09}', 38470),
+    ('\u{1b000}', 38471),
+    ('\u{1b11f}', 38472),
+    ('\u{1b150}', 38473),
+    ('\u{1b153}', 38474),
+    ('\u{1b164}', 38475),
+    ('\u{1b168}', 38476),
+    ('\u{1b170}', 38477),
+    ('\u{1b2fc}', 38478),
+    ('\u{1bc00}', 38479),
+    ('\u{1bc6b}', 38480),
+    ('\u{1bc70}', 38481),
+    ('\u{1bc7d}', 38482),
+    ('\u{1bc80}', 38483),
+    ('\u{1bc89}', 38484),
+    ('\u{1bc90}', 38485),
+    ('\u{1bc9a}', 38486),
+    ('\u{1bc9c}', 38487),
+    ('\u{1bca0}', 38488),
+    ('\u{1bca4}', 38489),
+    ('\u{1d000}', 38490),
+    ('\u{1d0f6}', 38491),
+    ('\u{1d100}', 38492),
+    ('\u{1d127}', 38493),
+    ('\u{1d129}', 38494),
+    ('\u{1d15e}', 5727),
+    ('\u{1d165}', 38502),
+    ('\u{1d173}', 38503),
+    ('\u{1d17b}', 38504),
+    ('\u{1d1bb}', 5737),
+    ('\u{1d1c1}', 38511),
+    ('\u{1d1e9}', 38512),
+    ('\u{1d200}', 38513),
+    ('\u{1d246}', 38514),
+    ('\u{1d2e0}', 38515),
+    ('\u{1d2f4}', 38516),
+    ('\u{1d300}', 38517),
+    ('\u{1d357}', 38518),
+    ('\u{1d360}', 38519),
+    ('\u{1d379}', 38520),
+    ('\u{1d400}', 5753),
+    ('\u{1d4a0}', 38681),
+    ('\u{1d4a2}', 38682),
+    ('\u{1d4a3}', 38683),
+    ('\u{1d4a5}', 5916),
+    ('\u{1d4a7}', 38686),
+    ('\u{1d4a9}', 5919),
+    ('\u{1d50b}', 38785),
+    ('\u{1d50d}', 6018),
+    ('\u{1d547}', 38844),
+    ('\u{1d54a}', 6077),
+    ('\u{1d6a6}', 39193),
+    ('\u{1d6a8}', 6426),
+    ('\u{1d6d3}', 39237),
+    ('\u{1d6d5}', 6470),
+    ('\u{1d70d}', 39294),
+    ('\u{1d70f}', 6527),
+    ('\u{1d747}', 39351),
+    ('\u{1d749}', 6584),
+    ('\u{1d781}', 39408),
+    ('\u{1d783}', 6641),
+    ('\u{1d7bb}', 39465),
+    ('\u{1d7bd}', 6698),
+    ('\u{1d7ca}', 39479),
+    ('\u{1d7cc}', 39480),
+    ('\u{1d7ce}', 6713),
+    ('\u{1d800}', 39531),
+    ('\u{1da8c}', 39532),
+    ('\u{1da9b}', 39533),
+    ('\u{1daa0}', 39534),
+    ('\u{1daa1}', 39535),
+    ('\u{1dab0}', 39536),
+    ('\u{1e000}', 39537),
+    ('\u{1e007}', 39538),
+    ('\u{1e008}', 39539),
+    ('\u{1e019}', 39540),
+    ('\u{1e01b}', 39541),
+    ('\u{1e022}', 39542),
+    ('\u{1e023}', 39543),
+    ('\u{1e025}', 39544),
+    ('\u{1e026}', 39545),
+    ('\u{1e02b}', 39546),
+    ('\u{1e100}', 39547),
+    ('\u{1e12d}', 39548),
+    ('\u{1e130}', 39549),
+    ('\u{1e13e}', 39550),
+    ('\u{1e140}', 39551),
+    ('\u{1e14a}', 39552),
+    ('\u{1e14e}', 39553),
+    ('\u{1e150}', 39554),
+    ('\u{1e2c0}', 39555),
+    ('\u{1e2fa}', 39556),
+    ('\u{1e2ff}', 39557),
+    ('\u{1e300}', 39558),
+    ('\u{1e800}', 39559),
+    ('\u{1e8c5}', 39560),
+    ('\u{1e8c7}', 39561),
+    ('\u{1e8d7}', 39562),
+    ('\u{1e900}', 6795),
+    ('\u{1e922}', 39597),
+    ('\u{1e94c}', 39598),
+    ('\u{1e950}', 39599),
+    ('\u{1e95a}', 39600),
+    ('\u{1e95e}', 39601),
+    ('\u{1e960}', 39602),
+    ('\u{1ec71}', 39603),
+    ('\u{1ecb5}', 39604),
+    ('\u{1ed01}', 39605),
+    ('\u{1ed3e}', 39606),
+    ('\u{1ee00}', 6839),
+    ('\u{1ee25}', 39644),
+    ('\u{1ee27}', 6877),
+    ('\u{1ee3c}', 39666),
+    ('\u{1ee42}', 39667),
+    ('\u{1ee43}', 39668),
+    ('\u{1ee47}', 6901),
+    ('\u{1ee55}', 39683),
+    ('\u{1ee57}', 6916),
+    ('\u{1ee65}', 39698),
+    ('\u{1ee67}', 6931),
+    ('\u{1ee9c}', 39752),
+    ('\u{1eea1}', 6985),
+    ('\u{1eebc}', 39780),
+    ('\u{1eef0}', 39781),
+    ('\u{1eef2}', 39782),
+    ('\u{1f000}', 39783),
+    ('\u{1f02c}', 39784),
+    ('\u{1f030}', 39785),
+    ('\u{1f094}', 39786),
+    ('\u{1f0a0}', 39787),
+    ('\u{1f0af}', 39788),
+    ('\u{1f0b1}', 39789),
+    ('\u{1f0c0}', 39790),
+    ('\u{1f0c1}', 39791),
+    ('\u{1f0d0}', 39792),
+    ('\u{1f0d1}', 39793),
+    ('\u{1f0f6}', 39794),
+    ('\u{1f101}', 7027),
+    ('\u{1f10b}', 39805),
+    ('\u{1f110}', 7038),
+    ('\u{1f150}', 39870),
+    ('\u{1f16a}', 7103),
+    ('\u{1f16d}', 39874),
+    ('\u{1f190}', 39875),
+    ('\u{1f191}', 39876),
+    ('\u{1f1ae}', 39877),
+    ('\u{1f1e6}', 39878),
+    ('\u{1f200}', 7111),
+    ('\u{1f203}', 39882),
+    ('\u{1f210}', 7115),
+    ('\u{1f23c}', 39927),
+    ('\u{1f240}', 7160),
+    ('\u{1f249}', 39937),
+    ('\u{1f250}', 7170),
+    ('\u{1f252}', 39940),
+    ('\u{1f260}', 39941),
+    ('\u{1f266}', 39942),
+    ('\u{1f300}', 39943),
+    ('\u{1f6d8}', 39944),
+    ('\u{1f6e0}', 39945),
+    ('\u{1f6ed}', 39946),
+    ('\u{1f6f0}', 39947),
+    ('\u{1f6fd}', 39948),
+    ('\u{1f700}', 39949),
+    ('\u{1f774}', 39950),
+    ('\u{1f780}', 39951),
+    ('\u{1f7d9}', 39952),
+    ('\u{1f7e0}', 39953),
+    ('\u{1f7ec}', 39954),
+    ('\u{1f800}', 39955),
+    ('\u{1f80c}', 39956),
+    ('\u{1f810}', 39957),
+    ('\u{1f848}', 39958),
+    ('\u{1f850}', 39959),
+    ('\u{1f85a}', 39960),
+    ('\u{1f860}', 39961),
+    ('\u{1f888}', 39962),
+    ('\u{1f890}', 39963),
+    ('\u{1f8ae}', 39964),
+    ('\u{1f8b0}', 39965),
+    ('\u{1f8b2}', 39966),
+    ('\u{1f900}', 39967),
+    ('\u{1f979}', 39968),
+    ('\u{1f97a}', 39969),
+    ('\u{1f9cc}', 39970),
+    ('\u{1f9cd}', 39971),
+    ('\u{1fa54}', 39972),
+    ('\u{1fa60}', 39973),
+    ('\u{1fa6e}', 39974),
+    ('\u{1fa70}', 39975),
+    ('\u{1fa75}', 39976),
+    ('\u{1fa78}', 39977),
+    ('\u{1fa7b}', 39978),
+    ('\u{1fa80}', 39979),
+    ('\u{1fa87}', 39980),
+    ('\u{1fa90}', 39981),
+    ('\u{1faa9}', 39982),
+    ('\u{1fab0}', 39983),
+    ('\u{1fab7}', 39984),
+    ('\u{1fac0}', 39985),
+    ('\u{1fac3}', 39986),
+    ('\u{1fad0}', 39987),
+    ('\u{1fad7}', 39988),
+    ('\u{1fb00}', 39989),
+    ('\u{1fb93}', 39990),
+    ('\u{1fb94}', 39991),
+    ('\u{1fbcb}', 39992),
+    ('\u{1fbf0}', 7225),
+    ('\u{1fbfa}', 40003),
+    ('\u{20000}', 40004),
+    ('\u{2a6de}', 40005),
+    ('\u{2a700}', 40006),
+    ('\u{2b735}', 40007),
+    ('\u{2b740}', 40008),
+    ('\u{2b81e}', 40009),
+    ('\u{2b820}', 40010),
+    ('\u{2cea2}', 40011),
+    ('\u{2ceb0}', 40012),
+    ('\u{2ebe1}', 40013),
+    ('\u{2f800}', 7246),
+    ('\u{2f831}', 40063),
+    ('\u{2f834}', 7296),
+    ('\u{2f845}', 40081),
+    ('\u{2f847}', 7314),
+    ('\u{2f86a}', 40117),
+    ('\u{2f86c}', 7350),
+    ('\u{2f891}', 40155),
+    ('\u{2f893}', 40156),
+    ('\u{2f894}', 40157),
+    ('\u{2f896}', 7390),
+    ('\u{2f92c}', 40308),
+    ('\u{2f92e}', 7541),
+    ('\u{2f946}', 40333),
+    ('\u{2f948}', 7566),
+    ('\u{2f95d}', 40355),
+    ('\u{2f95f}', 7588),
+    ('\u{2f9fe}', 40515),
+    ('\u{2fa00}', 7748),
+    ('\u{2fa1e}', 40546),
+    ('\u{30000}', 40547),
+    ('\u{3134b}', 40548),
+    ('\u{e0100}', 40549),
+    ('\u{e01f0}', 40550),
 ];
 
 static MAPPING_TABLE: &[Mapping] = &[