diff --git a/README.markdown b/README.markdown
deleted file mode 100644
--- a/README.markdown
+++ /dev/null
@@ -1,30 +0,0 @@
-# text [![Hackage](http://img.shields.io/hackage/v/text.svg)](https://hackage.haskell.org/package/text) [![Stackage LTS](http://stackage.org/package/text/badge/lts)](http://stackage.org/lts/package/text) [![Stackage Nightly](http://stackage.org/package/text/badge/nightly)](http://stackage.org/nightly/package/text)
-
-Haskell library for space- and time-efficient operations over Unicode text.
-
-# Get involved!
-
-Please report bugs via the
-[github issue tracker](https://github.com/haskell/text/issues).
-
-The main repo:
-
-```bash
-git clone https://github.com/haskell/text
-```
-
-To run benchmarks please clone and unpack test files:
-
-```bash
-git clone https://github.com/haskell/text-test-data benchmarks/text-test-data
-make -Cbenchmarks/text-test-data
-```
-
-# Authors
-
-The base code for this library was originally written by Tom Harper,
-based on the stream fusion framework developed by Roman Leshchinskiy,
-Duncan Coutts, and Don Stewart.
-
-The core library was fleshed out, debugged, and tested by Bryan
-O'Sullivan. Transition from UTF-16 to UTF-8 is by Andrew Lelechenko.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,31 @@
+# text [![Hackage](http://img.shields.io/hackage/v/text.svg)](https://hackage.haskell.org/package/text) [![Stackage LTS](http://stackage.org/package/text/badge/lts)](http://stackage.org/lts/package/text) [![Stackage Nightly](http://stackage.org/package/text/badge/nightly)](http://stackage.org/nightly/package/text)
+
+Haskell library for space- and time-efficient operations over Unicode text.
+
+# Get involved!
+
+Please report bugs via the
+[github issue tracker](https://github.com/haskell/text/issues).
+
+The main repo:
+
+```bash
+git clone https://github.com/haskell/text
+```
+
+To run benchmarks please clone and unpack test files:
+
+```bash
+cd text
+git clone https://github.com/haskell/text-test-data benchmarks/text-test-data
+make -Cbenchmarks/text-test-data
+```
+
+# Authors
+
+The base code for this library was originally written by Tom Harper,
+based on the stream fusion framework developed by Roman Leshchinskiy,
+Duncan Coutts, and Don Stewart.
+
+The core library was fleshed out, debugged, and tested by Bryan
+O'Sullivan. Transition from UTF-16 to UTF-8 is by Andrew Lelechenko.
diff --git a/benchmarks/haskell/Benchmarks/Pure.hs b/benchmarks/haskell/Benchmarks/Pure.hs
--- a/benchmarks/haskell/Benchmarks/Pure.hs
+++ b/benchmarks/haskell/Benchmarks/Pure.hs
@@ -330,7 +330,7 @@
       | i < n     = TB.singleton c `mappend` go (i+1)
       | otherwise = mempty
 
--- | Gives more opportunity for inlining and elimination of unnecesary
+-- | Gives more opportunity for inlining and elimination of unnecessary
 -- bounds checks.
 --
 mappend8Char :: Char -> TB.Builder
diff --git a/benchmarks/haskell/Benchmarks/Search.hs b/benchmarks/haskell/Benchmarks/Search.hs
--- a/benchmarks/haskell/Benchmarks/Search.hs
+++ b/benchmarks/haskell/Benchmarks/Search.hs
@@ -1,8 +1,8 @@
--- | Search for a pattern in a file, find the number of occurences
+-- | Search for a pattern in a file, find the number of occurrences
 --
 -- Tested in this benchmark:
 --
--- * Searching all occurences of a pattern using library routines
+-- * Searching all occurrences of a pattern using library routines
 --
 module Benchmarks.Search
     ( initEnv
diff --git a/cbits/measure_off.c b/cbits/measure_off.c
--- a/cbits/measure_off.c
+++ b/cbits/measure_off.c
@@ -13,12 +13,36 @@
 #endif
 #include <stdbool.h>
 
+// stdatomic.h has been introduces in gcc 4.9
+#if !(__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 9 || defined(__clang_major__))
+#define __STDC_NO_ATOMICS__
+#endif
+
 #ifndef __STDC_NO_ATOMICS__
 #include <stdatomic.h>
 #endif
 
+/*
+  Clang-6 does not enable proper -march flags for assembly modules
+  which leads to "error: instruction requires: AVX-512 ISA"
+  at the assembler phase.
+
+  Apple LLVM version 10.0.0 (clang-1000.11.45.5) is based on clang-6
+  https://en.wikipedia.org/wiki/Xcode#Toolchain_versions
+  and it's the latest available version on macOS 10.13.
+
+  Disable AVX-512 instructions as they are most likely not supported
+  on the hardware running clang-6.
+*/
+#if !((defined(__apple_build_version__) && __apple_build_version__ <= 10001145) \
+      || (defined(__clang_major__) && __clang_major__ <= 6)) && !defined(__STDC_NO_ATOMICS__)
+#define COMPILER_SUPPORTS_AVX512
+#endif
+
+
+#if defined(__x86_64__) && defined(COMPILER_SUPPORTS_AVX512)
 bool has_avx512_vl_bw() {
-#ifdef __x86_64__
+#if (__GNUC__ >= 7 || __GNUC__ == 6 && __GNUC_MINOR__ >= 3) || defined(__clang_major__)
   uint32_t eax = 0, ebx = 0, ecx = 0, edx = 0;
   __get_cpuid_count(7, 0, &eax, &ebx, &ecx, &edx);
   // https://en.wikipedia.org/wiki/CPUID#EAX=7,_ECX=0:_Extended_Features
@@ -30,6 +54,7 @@
   return false;
 #endif
 }
+#endif
 
 /*
   measure_off_naive / measure_off_avx / measure_off_sse
@@ -45,7 +70,16 @@
   while (src < srcend - 7){
     uint64_t w64;
     memcpy(&w64, src, sizeof(uint64_t));
-    size_t leads = __builtin_popcountll(((w64 << 1) | ~w64) & 0x8080808080808080ULL);
+    w64 =  ((w64 << 1) | ~w64) & 0x8080808080808080ULL;
+    // compute the popcount of w64 with two bit shifts and a multiplication
+    size_t leads = (  (w64 >> 7)              // w64 >> 7           = Sum{0<= i <= 7} x_i * 256^i    (x_i \in {0,1})
+                    * (0x0101010101010101ULL) // 0x0101010101010101 = Sum{0<= i <= 7} 256^i
+                                              //              (Sum{0<= i <= 7} x_i * 256^i) * (Sum{0<= j <= 7} 256^j) 
+                                              // =(mod 256^8) (Sum{0<= k <= 7} (256^k) * (Sum {0 <= l < 7} x_l) 
+                                              // as the coefficients of 256^k in the result are the x_i such that i+j =(mod 8) k
+                                              // and each i satisfies this equation for exactly one such j
+                                              // So each byte of the result contains the sum we want.
+                   ) >> 56; // bit shift to get a single byte which contains Sum {0 <= j < 7} x_j
     if (cnt < leads) break;
     cnt-= leads;
     src+= 8;
@@ -68,7 +102,7 @@
   return cnt == 0 ? (ssize_t)(srcend - src) : (ssize_t)(- cnt);
 }
 
-#ifdef __x86_64__
+#if defined(__x86_64__) && defined(COMPILER_SUPPORTS_AVX512)
 __attribute__((target("avx512vl,avx512bw")))
 static const ssize_t measure_off_avx(const uint8_t *src, const uint8_t *srcend, size_t cnt)
 {
@@ -109,6 +143,36 @@
 }
 #endif
 
+/* Count the number of bits set in the argument 
+ * 
+   This is a temporary workaround for the fact that
+   the GHC RTS linker does not recognize the `__builtin_popcountll`
+   symbol.
+ 
+   See https://gitlab.haskell.org/ghc/ghc/-/issues/21787
+       https://gitlab.haskell.org/ghc/ghc/-/issues/19900
+       https://github.com/haskell/text/issues/450
+ 
+   It can be removed and the usages of popcount64 replaced with
+   `__builtin_popcountll` once affected versions of the compiler
+   are no longer in widespread use.
+ 
+   Once GHC learns to recognize the symbol, this can be gated
+   by CPP to call __builtin_popcountll when using the appropriate
+   version of GHC.
+*/
+static inline const size_t popcount16(uint16_t x) {
+
+  // Taken from https://en.wikipedia.org/wiki/Hamming_weight
+  const uint16_t m1  = 0x5555; //binary: 0101...
+  const uint16_t m2  = 0x3333; //binary: 00110011..
+  const uint16_t m4  = 0x0f0f; //binary:  4 zeros,  4 ones ...
+  x -= (x >> 1) & m1;             //put count of each 2 bits into those 2 bits
+  x = (x & m2) + ((x >> 2) & m2); //put count of each 4 bits into those 4 bits 
+  x = (x + (x >> 4)) & m4;        //put count of each 8 bits into those 8 bits 
+  return (x >> 8) + (x & 0x00FF);
+}
+
 static const ssize_t measure_off_sse(const uint8_t *src, const uint8_t *srcend, size_t cnt)
 {
 #ifdef __x86_64__
@@ -116,7 +180,7 @@
     __m128i w128 = _mm_loadu_si128((__m128i *)src);
     // Which bytes are either < 128 or >= 192?
     uint16_t mask = _mm_movemask_epi8(_mm_cmpgt_epi8(w128, _mm_set1_epi8(0xBF)));
-    size_t leads = __builtin_popcount(mask);
+    size_t leads = popcount16(mask);
     if (cnt < leads) break;
     cnt-= leads;
     src+= 16;
@@ -143,16 +207,20 @@
   this condition is not checked.
 */
 ssize_t _hs_text_measure_off(const uint8_t *src, size_t off, size_t len, size_t cnt) {
+#ifndef __STDC_NO_ATOMICS__
   static _Atomic measure_off_t s_impl = (measure_off_t)NULL;
   measure_off_t impl = atomic_load_explicit(&s_impl, memory_order_relaxed);
   if (!impl) {
-#ifdef __x86_64__
+#if defined(__x86_64__) && defined(COMPILER_SUPPORTS_AVX512)
     impl = has_avx512_vl_bw() ? measure_off_avx : measure_off_sse;
 #else
     impl = measure_off_sse;
 #endif
     atomic_store_explicit(&s_impl, impl, memory_order_relaxed);
   }
+#else
+  measure_off_t impl = measure_off_sse;
+#endif
   ssize_t ret = (*impl)(src + off, src + off + len, cnt);
   return ret >= 0 ? ((ssize_t)len - ret) : (- (cnt + ret));
 }
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,13 @@
+### 2.0.1
+
+* Improve portability of C and C++ code.
+* [Make `Lift` instance more efficient](https://github.com/haskell/text/pull/413)
+* [Make `toCaseFold` idempotent](https://github.com/haskell/text/pull/402)
+* [Add `fromPtr0`](https://github.com/haskell/text/pull/423)
+* [Add `Data.Text.foldr'`](https://github.com/haskell/text/pull/436)
+* [Add `withCString`](https://github.com/haskell/text/pull/431)
+* [Add `spanM` and `spanEndM`](https://github.com/haskell/text/pull/437)
+
 ### 2.0
 
 * [Switch internal representation of text from UTF-16 to UTF-8](https://github.com/haskell/text/pull/365):
@@ -51,7 +61,9 @@
 * Update Haddock documentation to better reflect fusion eligibility; improve fusion
   rules for `takeWhileEnd` and `length` (gh-241, ghc-202)
 
-* Optimise `Data.Text.replicate` from `O(n)` to `O(log n)` (gh-209)
+* Optimise `Data.Text.replicate`. Rather than calling `memcpy` `n` times,
+  call it only `O(log n)` times on chunks of increasing size. The total
+  asymptotic complexity remains `O(nm)`. (gh-209)
 
 * Support `base-4.13.0.0`
 
@@ -261,7 +273,7 @@
 * New function toTitle converts words in a string to title case
 
 * New functions peekCStringLen and withCStringLen simplify
-  interoperability with C functionns
+  interoperability with C functions
 
 * Added support for decoding UTF-8 in stream-friendly fashion
 
diff --git a/scripts/CaseFolding.hs b/scripts/CaseFolding.hs
--- a/scripts/CaseFolding.hs
+++ b/scripts/CaseFolding.hs
@@ -35,14 +35,8 @@
 parseCF name = parse entries name <$> readFile name
 
 mapCF :: CaseFolding -> [String]
-mapCF (CF _ ms) = typ ++ map printUnusual ms' ++ map printUsual usual ++ [last]
+mapCF (CF _ ms) = typ ++ map printUnusual (filter (\f -> status f `elem` "CF") ms) ++ [last]
   where
-    ms' = filter p ms
-    p f = status f `elem` "CF" &&
-          mapping f /= [toLower (code f)]
-    unusual = map code ms'
-    usual = filter (\c -> toLower c /= c && c `notElem` unusual) [minBound..maxBound]
-
     typ = ["foldMapping :: Char# -> _ {- unboxed Int64 -}"
            ,"{-# NOINLINE foldMapping #-}"
            ,"foldMapping = \\case"]
@@ -50,4 +44,3 @@
     printUnusual c = "  -- " ++ name c ++ "\n" ++
              "  " ++ showC (code c) ++ "# -> unI64 "  ++ show (ord x + (ord y `shiftL` 21) + (ord z `shiftL` 42))
        where x:y:z:_ = mapping c ++ repeat '\0'
-    printUsual c = "  " ++ showC c ++ "# -> unI64 " ++ show (ord (toLower c))
diff --git a/simdutf/simdutf.cpp b/simdutf/simdutf.cpp
--- a/simdutf/simdutf.cpp
+++ b/simdutf/simdutf.cpp
@@ -1,4 +1,4 @@
-/* auto-generated on 2021-07-29 10:43:28 -0400. Do not edit! */
+/* auto-generated on 2022-03-21 23:28:26 -0400. Do not edit! */
 // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf.cpp
 /* begin file src/simdutf.cpp */
 #include "simdutf.h"
@@ -115,93 +115,17 @@
 namespace arm64 {
 namespace {
 
-// We sometimes call trailing_zero on inputs that are zero,
-// but the algorithms do not end up using the returned value.
-// Sadly, sanitizers are not smart enough to figure it out.
-NO_SANITIZE_UNDEFINED
-simdutf_really_inline int trailing_zeroes(uint64_t input_num) {
-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
-  unsigned long ret;
-  // Search the mask data from least significant bit (LSB)
-  // to the most significant bit (MSB) for a set bit (1).
-  _BitScanForward64(&ret, input_num);
-  return (int)ret;
-#else // SIMDUTF_REGULAR_VISUAL_STUDIO
-  return __builtin_ctzll(input_num);
-#endif // SIMDUTF_REGULAR_VISUAL_STUDIO
-}
-
 /* result might be undefined when input_num is zero */
-simdutf_really_inline uint64_t clear_lowest_bit(uint64_t input_num) {
-  return input_num & (input_num-1);
-}
-
-/* result might be undefined when input_num is zero */
-simdutf_really_inline int leading_zeroes(uint64_t input_num) {
-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
-  unsigned long leading_zero = 0;
-  // Search the mask data from most significant bit (MSB)
-  // to least significant bit (LSB) for a set bit (1).
-  if (_BitScanReverse64(&leading_zero, input_num))
-    return (int)(63 - leading_zero);
-  else
-    return 64;
-#else
-  return __builtin_clzll(input_num);
-#endif// SIMDUTF_REGULAR_VISUAL_STUDIO
-}
-
-/* result might be undefined when input_num is zero */
 simdutf_really_inline int count_ones(uint64_t input_num) {
    return vaddv_u8(vcnt_u8(vcreate_u8(input_num)));
 }
 
-simdutf_really_inline bool add_overflow(uint64_t value1, uint64_t value2, uint64_t *result) {
-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
-  *result = value1 + value2;
-  return *result < value1;
-#else
-  return __builtin_uaddll_overflow(value1, value2,
-                                   reinterpret_cast<unsigned long long *>(result));
-#endif
-}
-
 } // unnamed namespace
 } // namespace arm64
 } // namespace simdutf
 
 #endif // SIMDUTF_ARM64_BITMANIPULATION_H
 /* end file src/simdutf/arm64/bitmanipulation.h */
-// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/arm64/bitmask.h
-/* begin file src/simdutf/arm64/bitmask.h */
-#ifndef SIMDUTF_ARM64_BITMASK_H
-#define SIMDUTF_ARM64_BITMASK_H
-
-namespace simdutf {
-namespace arm64 {
-namespace {
-
-//
-// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.
-//
-// For example, prefix_xor(00100100) == 00011100
-//
-simdutf_really_inline uint64_t prefix_xor(uint64_t bitmask) {
-  bitmask ^= bitmask << 1;
-  bitmask ^= bitmask << 2;
-  bitmask ^= bitmask << 4;
-  bitmask ^= bitmask << 8;
-  bitmask ^= bitmask << 16;
-  bitmask ^= bitmask << 32;
-  return bitmask;
-}
-
-} // unnamed namespace
-} // namespace arm64
-} // namespace simdutf
-
-#endif
-/* end file src/simdutf/arm64/bitmask.h */
 // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/arm64/simd.h
 /* begin file src/simdutf/arm64/simd.h */
 #ifndef SIMDUTF_ARM64_SIMD_H
@@ -1215,34 +1139,7 @@
 namespace haswell {
 namespace {
 
-// We sometimes call trailing_zero on inputs that are zero,
-// but the algorithms do not end up using the returned value.
-// Sadly, sanitizers are not smart enough to figure it out.
-NO_SANITIZE_UNDEFINED
-simdutf_really_inline int trailing_zeroes(uint64_t input_num) {
 #ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
-  return (int)_tzcnt_u64(input_num);
-#else // SIMDUTF_REGULAR_VISUAL_STUDIO
-  ////////
-  // You might expect the next line to be equivalent to
-  // return (int)_tzcnt_u64(input_num);
-  // but the generated code differs and might be less efficient?
-  ////////
-  return __builtin_ctzll(input_num);
-#endif // SIMDUTF_REGULAR_VISUAL_STUDIO
-}
-
-/* result might be undefined when input_num is zero */
-simdutf_really_inline uint64_t clear_lowest_bit(uint64_t input_num) {
-  return _blsr_u64(input_num);
-}
-
-/* result might be undefined when input_num is zero */
-simdutf_really_inline int leading_zeroes(uint64_t input_num) {
-  return int(_lzcnt_u64(input_num));
-}
-
-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
 simdutf_really_inline unsigned __int64 count_ones(uint64_t input_num) {
   // note: we do not support legacy 32-bit Windows
   return __popcnt64(input_num);// Visual Studio wants two underscores
@@ -1253,51 +1150,12 @@
 }
 #endif
 
-simdutf_really_inline bool add_overflow(uint64_t value1, uint64_t value2,
-                                uint64_t *result) {
-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
-  return _addcarry_u64(0, value1, value2,
-                       reinterpret_cast<unsigned __int64 *>(result));
-#else
-  return __builtin_uaddll_overflow(value1, value2,
-                                   reinterpret_cast<unsigned long long *>(result));
-#endif
-}
-
 } // unnamed namespace
 } // namespace haswell
 } // namespace simdutf
 
 #endif // SIMDUTF_HASWELL_BITMANIPULATION_H
 /* end file src/simdutf/haswell/bitmanipulation.h */
-// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/haswell/bitmask.h
-/* begin file src/simdutf/haswell/bitmask.h */
-#ifndef SIMDUTF_HASWELL_BITMASK_H
-#define SIMDUTF_HASWELL_BITMASK_H
-
-namespace simdutf {
-namespace haswell {
-namespace {
-
-//
-// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.
-//
-// For example, prefix_xor(00100100) == 00011100
-//
-simdutf_really_inline uint64_t prefix_xor(const uint64_t bitmask) {
-  // There should be no such thing with a processor supporting avx2
-  // but not clmul.
-  __m128i all_ones = _mm_set1_epi8('\xFF');
-  __m128i result = _mm_clmulepi64_si128(_mm_set_epi64x(0ULL, bitmask), all_ones, 0);
-  return _mm_cvtsi128_si64(result);
-}
-
-} // unnamed namespace
-} // namespace haswell
-} // namespace simdutf
-
-#endif // SIMDUTF_HASWELL_BITMASK_H
-/* end file src/simdutf/haswell/bitmask.h */
 // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/haswell/simd.h
 /* begin file src/simdutf/haswell/simd.h */
 #ifndef SIMDUTF_HASWELL_SIMD_H
@@ -2063,43 +1921,7 @@
 namespace westmere {
 namespace {
 
-// We sometimes call trailing_zero on inputs that are zero,
-// but the algorithms do not end up using the returned value.
-// Sadly, sanitizers are not smart enough to figure it out.
-NO_SANITIZE_UNDEFINED
-simdutf_really_inline int trailing_zeroes(uint64_t input_num) {
 #ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
-  unsigned long ret;
-  // Search the mask data from least significant bit (LSB)
-  // to the most significant bit (MSB) for a set bit (1).
-  _BitScanForward64(&ret, input_num);
-  return (int)ret;
-#else // SIMDUTF_REGULAR_VISUAL_STUDIO
-  return __builtin_ctzll(input_num);
-#endif // SIMDUTF_REGULAR_VISUAL_STUDIO
-}
-
-/* result might be undefined when input_num is zero */
-simdutf_really_inline uint64_t clear_lowest_bit(uint64_t input_num) {
-  return input_num & (input_num-1);
-}
-
-/* result might be undefined when input_num is zero */
-simdutf_really_inline int leading_zeroes(uint64_t input_num) {
-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
-  unsigned long leading_zero = 0;
-  // Search the mask data from most significant bit (MSB)
-  // to least significant bit (LSB) for a set bit (1).
-  if (_BitScanReverse64(&leading_zero, input_num))
-    return (int)(63 - leading_zero);
-  else
-    return 64;
-#else
-  return __builtin_clzll(input_num);
-#endif// SIMDUTF_REGULAR_VISUAL_STUDIO
-}
-
-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
 simdutf_really_inline unsigned __int64 count_ones(uint64_t input_num) {
   // note: we do not support legacy 32-bit Windows
   return __popcnt64(input_num);// Visual Studio wants two underscores
@@ -2110,51 +1932,12 @@
 }
 #endif
 
-simdutf_really_inline bool add_overflow(uint64_t value1, uint64_t value2,
-                                uint64_t *result) {
-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
-  return _addcarry_u64(0, value1, value2,
-                       reinterpret_cast<unsigned __int64 *>(result));
-#else
-  return __builtin_uaddll_overflow(value1, value2,
-                                   reinterpret_cast<unsigned long long *>(result));
-#endif
-}
-
 } // unnamed namespace
 } // namespace westmere
 } // namespace simdutf
 
 #endif // SIMDUTF_WESTMERE_BITMANIPULATION_H
 /* end file src/simdutf/westmere/bitmanipulation.h */
-// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/westmere/bitmask.h
-/* begin file src/simdutf/westmere/bitmask.h */
-#ifndef SIMDUTF_WESTMERE_BITMASK_H
-#define SIMDUTF_WESTMERE_BITMASK_H
-
-namespace simdutf {
-namespace westmere {
-namespace {
-
-//
-// Perform a "cumulative bitwise xor," flipping bits each time a 1 is encountered.
-//
-// For example, prefix_xor(00100100) == 00011100
-//
-simdutf_really_inline uint64_t prefix_xor(const uint64_t bitmask) {
-  // There should be no such thing with a processing supporting avx2
-  // but not clmul.
-  __m128i all_ones = _mm_set1_epi8('\xFF');
-  __m128i result = _mm_clmulepi64_si128(_mm_set_epi64x(0ULL, bitmask), all_ones, 0);
-  return _mm_cvtsi128_si64(result);
-}
-
-} // unnamed namespace
-} // namespace westmere
-} // namespace simdutf
-
-#endif // SIMDUTF_WESTMERE_BITMASK_H
-/* end file src/simdutf/westmere/bitmask.h */
 // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/westmere/simd.h
 /* begin file src/simdutf/westmere/simd.h */
 #ifndef SIMDUTF_WESTMERE_SIMD_H
@@ -2941,43 +2724,7 @@
 namespace ppc64 {
 namespace {
 
-// We sometimes call trailing_zero on inputs that are zero,
-// but the algorithms do not end up using the returned value.
-// Sadly, sanitizers are not smart enough to figure it out.
-NO_SANITIZE_UNDEFINED
-simdutf_really_inline int trailing_zeroes(uint64_t input_num) {
 #ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
-  unsigned long ret;
-  // Search the mask data from least significant bit (LSB)
-  // to the most significant bit (MSB) for a set bit (1).
-  _BitScanForward64(&ret, input_num);
-  return (int)ret;
-#else  // SIMDUTF_REGULAR_VISUAL_STUDIO
-  return __builtin_ctzll(input_num);
-#endif // SIMDUTF_REGULAR_VISUAL_STUDIO
-}
-
-/* result might be undefined when input_num is zero */
-simdutf_really_inline uint64_t clear_lowest_bit(uint64_t input_num) {
-  return input_num & (input_num - 1);
-}
-
-/* result might be undefined when input_num is zero */
-simdutf_really_inline int leading_zeroes(uint64_t input_num) {
-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
-  unsigned long leading_zero = 0;
-  // Search the mask data from most significant bit (MSB)
-  // to least significant bit (LSB) for a set bit (1).
-  if (_BitScanReverse64(&leading_zero, input_num))
-    return (int)(63 - leading_zero);
-  else
-    return 64;
-#else
-  return __builtin_clzll(input_num);
-#endif // SIMDUTF_REGULAR_VISUAL_STUDIO
-}
-
-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
 simdutf_really_inline int count_ones(uint64_t input_num) {
   // note: we do not support legacy 32-bit Windows
   return __popcnt64(input_num); // Visual Studio wants two underscores
@@ -2988,68 +2735,12 @@
 }
 #endif
 
-simdutf_really_inline bool add_overflow(uint64_t value1, uint64_t value2,
-                                         uint64_t *result) {
-#ifdef SIMDUTF_REGULAR_VISUAL_STUDIO
-  *result = value1 + value2;
-  return *result < value1;
-#else
-  return __builtin_uaddll_overflow(value1, value2,
-                                   reinterpret_cast<unsigned long long *>(result));
-#endif
-}
-
 } // unnamed namespace
 } // namespace ppc64
 } // namespace simdutf
 
 #endif // SIMDUTF_PPC64_BITMANIPULATION_H
 /* end file src/simdutf/ppc64/bitmanipulation.h */
-// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/ppc64/bitmask.h
-/* begin file src/simdutf/ppc64/bitmask.h */
-#ifndef SIMDUTF_PPC64_BITMASK_H
-#define SIMDUTF_PPC64_BITMASK_H
-
-namespace simdutf {
-namespace ppc64 {
-namespace {
-
-//
-// Perform a "cumulative bitwise xor," flipping bits each time a 1 is
-// encountered.
-//
-// For example, prefix_xor(00100100) == 00011100
-//
-simdutf_really_inline uint64_t prefix_xor(uint64_t bitmask) {
-  // You can use the version below, however gcc sometimes miscompiles
-  // vec_pmsum_be, it happens somewhere around between 8 and 9th version.
-  // The performance boost was not noticeable, falling back to a usual
-  // implementation.
-  //   __vector unsigned long long all_ones = {~0ull, ~0ull};
-  //   __vector unsigned long long mask = {bitmask, 0};
-  //   // Clang and GCC return different values for pmsum for ull so cast it to one.
-  //   // Generally it is not specified by ALTIVEC ISA what is returned by
-  //   // vec_pmsum_be.
-  // #if defined(__LITTLE_ENDIAN__)
-  //   return (uint64_t)(((__vector unsigned long long)vec_pmsum_be(all_ones, mask))[0]);
-  // #else
-  //   return (uint64_t)(((__vector unsigned long long)vec_pmsum_be(all_ones, mask))[1]);
-  // #endif
-  bitmask ^= bitmask << 1;
-  bitmask ^= bitmask << 2;
-  bitmask ^= bitmask << 4;
-  bitmask ^= bitmask << 8;
-  bitmask ^= bitmask << 16;
-  bitmask ^= bitmask << 32;
-  return bitmask;
-}
-
-} // unnamed namespace
-} // namespace ppc64
-} // namespace simdutf
-
-#endif
-/* end file src/simdutf/ppc64/bitmask.h */
 // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, filename=simdutf/ppc64/simd.h
 /* begin file src/simdutf/ppc64/simd.h */
 #ifndef SIMDUTF_PPC64_SIMD_H
@@ -9204,10 +8895,13 @@
       }
     }
     unsigned char byte = data[pos];
-    if (byte < 0b10000000) {
-      pos++;
-      continue;
-    } else if ((byte & 0b11100000) == 0b11000000) {
+
+    while (byte < 0b10000000) {
+      if (++pos == len) { return true; }
+      byte = data[pos];
+    }
+
+    if ((byte & 0b11100000) == 0b11000000) {
       next_pos = pos + 2;
       if (next_pos > len) { return false; }
       if ((data[pos + 1] & 0b11000000) != 0b10000000) { return false; }
@@ -11077,7 +10771,7 @@
   const __m256i v_f800 = _mm256_set1_epi16((int16_t)0xf800);
   const __m256i v_d800 = _mm256_set1_epi16((int16_t)0xd800);
   const __m256i v_c080 = _mm256_set1_epi16((int16_t)0xc080);
-  const size_t safety_margin = 8; // to avoid overruns
+  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
 
   while (buf + 16 + safety_margin <= end) {
     __m256i in = _mm256_loadu_si256((__m256i*)buf);
diff --git a/simdutf/simdutf.h b/simdutf/simdutf.h
--- a/simdutf/simdutf.h
+++ b/simdutf/simdutf.h
@@ -1,11 +1,10 @@
-/* auto-generated on 2021-07-29 10:43:28 -0400. Do not edit! */
+/* auto-generated on 2022-03-21 23:28:26 -0400. Do not edit! */
 // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, filename=simdutf.h
 /* begin file include/simdutf.h */
 #ifndef SIMDUTF_H
 #define SIMDUTF_H
 #include <string>
 #include <cstring>
-#include <atomic>
 #include <vector>
 
 // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, filename=simdutf/compiler_check.h
@@ -412,18 +411,18 @@
 #define SIMDUTF_SIMDUTF_VERSION_H
 
 /** The version of simdutf being used (major.minor.revision) */
-#define SIMDUTF_VERSION 0.1.0
+#define SIMDUTF_VERSION 1.0.1
 
 namespace simdutf {
 enum {
   /**
    * The major version (MAJOR.minor.revision) of simdutf being used.
    */
-  SIMDUTF_VERSION_MAJOR = 0,
+  SIMDUTF_VERSION_MAJOR = 1,
   /**
    * The minor version (major.MINOR.revision) of simdutf being used.
    */
-  SIMDUTF_VERSION_MINOR = 1,
+  SIMDUTF_VERSION_MINOR = 0,
   /**
    * The revision (major.minor.REVISION) of simdutf being used.
    */
@@ -438,7 +437,9 @@
 #ifndef SIMDUTF_IMPLEMENTATION_H
 #define SIMDUTF_IMPLEMENTATION_H
 #include <string>
+#if !defined(SIMDUTF_NO_THREADS)
 #include <atomic>
+#endif
 #include <vector>
 // dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, filename=simdutf/internal/isadetection.h
 /* begin file include/simdutf/internal/isadetection.h */
@@ -510,7 +511,10 @@
   PCLMULQDQ = 0x10,
   BMI1 = 0x20,
   BMI2 = 0x40,
-  ALTIVEC = 0x80
+  ALTIVEC = 0x80,
+  AVX512F = 0x100,
+  AVX512BW = 0x200,
+  AVX512DQ = 0x400
 };
 
 #if defined(__PPC64__)
@@ -539,12 +543,38 @@
 
 
 namespace {
-// Can be found on Intel ISA Reference for CPUID
-constexpr uint32_t cpuid_avx2_bit = 1 << 5;      ///< @private Bit 5 of EBX for EAX=0x7
-constexpr uint32_t cpuid_bmi1_bit = 1 << 3;      ///< @private bit 3 of EBX for EAX=0x7
-constexpr uint32_t cpuid_bmi2_bit = 1 << 8;      ///< @private bit 8 of EBX for EAX=0x7
-constexpr uint32_t cpuid_sse42_bit = 1 << 20;    ///< @private bit 20 of ECX for EAX=0x1
-constexpr uint32_t cpuid_pclmulqdq_bit = 1 << 1; ///< @private bit  1 of ECX for EAX=0x1
+namespace cpuid_bit {
+    // Can be found on Intel ISA Reference for CPUID
+
+    // EAX = 0x01
+    constexpr uint32_t pclmulqdq = uint32_t(1) << 1; ///< @private bit  1 of ECX for EAX=0x1
+    constexpr uint32_t sse42 = uint32_t(1) << 20;    ///< @private bit 20 of ECX for EAX=0x1
+
+    // EAX = 0x7f (Structured Extended Feature Flags), ECX = 0x00 (Sub-leaf)
+    // See: "Table 3-8. Information Returned by CPUID Instruction"
+    namespace ebx {
+      constexpr uint32_t bmi1 = uint32_t(1) << 3;
+      constexpr uint32_t avx2 = uint32_t(1) << 5;
+      constexpr uint32_t bmi2 = uint32_t(1) << 8;
+      constexpr uint32_t avx512f = uint32_t(1) << 16;
+      constexpr uint32_t avx512dq = uint32_t(1) << 17;
+      constexpr uint32_t avx512ifma = uint32_t(1) << 21;
+      constexpr uint32_t avx512cd = uint32_t(1) << 28;
+      constexpr uint32_t avx512bw = uint32_t(1) << 30;
+      constexpr uint32_t avx512vl = uint32_t(1) << 31;
+    }
+
+    namespace ecx {
+      constexpr uint32_t avx512vbmi = uint32_t(1) << 1;
+      constexpr uint32_t avx512vbmi2 = uint32_t(1) << 6;
+      constexpr uint32_t avx512vnni = uint32_t(1) << 11;
+      constexpr uint32_t avx512bitalg = uint32_t(1) << 12;
+      constexpr uint32_t avx512vpopcnt = uint32_t(1) << 14;
+    }
+    namespace edx {
+      constexpr uint32_t avx512vp2intersect = uint32_t(1) << 8;
+    }
+  }
 }
 
 
@@ -572,35 +602,46 @@
 }
 
 static inline uint32_t detect_supported_architectures() {
-  uint32_t eax, ebx, ecx, edx;
+  uint32_t eax;
+  uint32_t ebx = 0;
+  uint32_t ecx = 0;
+  uint32_t edx = 0;
   uint32_t host_isa = 0x0;
 
+  // EBX for EAX=0x1
+  eax = 0x1;
+  cpuid(&eax, &ebx, &ecx, &edx);
+
+  if (ecx & cpuid_bit::sse42) {
+    host_isa |= instruction_set::SSE42;
+  }
+
+  if (ecx & cpuid_bit::pclmulqdq) {
+    host_isa |= instruction_set::PCLMULQDQ;
+  }
+
   // ECX for EAX=0x7
   eax = 0x7;
-  ecx = 0x0;
+  ecx = 0x0; // Sub-leaf = 0
   cpuid(&eax, &ebx, &ecx, &edx);
-  if (ebx & cpuid_avx2_bit) {
+  if (ebx & cpuid_bit::ebx::avx2) {
     host_isa |= instruction_set::AVX2;
   }
-  if (ebx & cpuid_bmi1_bit) {
+  if (ebx & cpuid_bit::ebx::bmi1) {
     host_isa |= instruction_set::BMI1;
   }
-
-  if (ebx & cpuid_bmi2_bit) {
+  if (ebx & cpuid_bit::ebx::bmi2) {
     host_isa |= instruction_set::BMI2;
   }
-
-  // EBX for EAX=0x1
-  eax = 0x1;
-  cpuid(&eax, &ebx, &ecx, &edx);
-
-  if (ecx & cpuid_sse42_bit) {
-    host_isa |= instruction_set::SSE42;
+  if (ebx & cpuid_bit::ebx::avx512f) {
+    host_isa |= instruction_set::AVX512F;
   }
-
-  if (ecx & cpuid_pclmulqdq_bit) {
-    host_isa |= instruction_set::PCLMULQDQ;
+  if (ebx & cpuid_bit::ebx::avx512bw) {
+    host_isa |= instruction_set::AVX512BW;
   }
+  if (ebx & cpuid_bit::ebx::avx512dq) {
+    host_isa |= instruction_set::AVX512DQ;
+  }
 
   return host_isa;
 }
@@ -1039,6 +1080,17 @@
 public:
   atomic_ptr(T *_ptr) : ptr{_ptr} {}
 
+#if defined(SIMDUTF_NO_THREADS)
+  operator const T*() const { return ptr; }
+  const T& operator*() const { return *ptr; }
+  const T* operator->() const { return ptr; }
+
+  operator T*() { return ptr; }
+  T& operator*() { return *ptr; }
+  T* operator->() { return ptr; }
+  atomic_ptr& operator=(T *_ptr) { ptr = _ptr; return *this; }
+
+#else
   operator const T*() const { return ptr.load(); }
   const T& operator*() const { return *ptr; }
   const T* operator->() const { return ptr.load(); }
@@ -1048,8 +1100,14 @@
   T* operator->() { return ptr.load(); }
   atomic_ptr& operator=(T *_ptr) { ptr = _ptr; return *this; }
 
+#endif
+
 private:
+#if defined(SIMDUTF_NO_THREADS)
+  T* ptr;
+#else
   std::atomic<T*> ptr;
+#endif
 };
 
 } // namespace internal
diff --git a/src/Data/Text.hs b/src/Data/Text.hs
--- a/src/Data/Text.hs
+++ b/src/Data/Text.hs
@@ -98,6 +98,7 @@
     , foldl1
     , foldl1'
     , foldr
+    , foldr'
     , foldr1
 
     -- ** Special folds
@@ -145,6 +146,8 @@
     , breakOnEnd
     , break
     , span
+    , spanM
+    , spanEndM
     , group
     , groupBy
     , inits
@@ -205,7 +208,7 @@
 
 import Prelude (Char, Bool(..), Int, Maybe(..), String,
                 Eq, (==), (/=), Ord(..), Ordering(..), (++),
-                Read(..),
+                Monad(..), pure, Read(..),
                 (&&), (||), (+), (-), (.), ($), ($!), (>>),
                 not, return, otherwise, quot, IO)
 import Control.DeepSeq (NFData(rnf))
@@ -238,6 +241,7 @@
 import qualified Prelude as P
 import Data.Text.Unsafe (Iter(..), iter, iter_, lengthWord8, reverseIter,
                          reverseIter_, unsafeHead, unsafeTail, unsafeDupablePerformIO, iterArray, reverseIterArray)
+import Data.Text.Foreign (asForeignPtr)
 import Data.Text.Internal.Search (indices)
 #if defined(__HADDOCK__)
 import Data.ByteString (ByteString)
@@ -253,8 +257,11 @@
 import qualified Language.Haskell.TH.Syntax as TH
 import Text.Printf (PrintfArg, formatArg, formatString)
 import System.Posix.Types (CSsize(..))
+import System.IO.Unsafe (unsafePerformIO)
 
 -- $setup
+-- >>> :set -package transformers
+-- >>> import Control.Monad.Trans.State
 -- >>> import Data.Text
 -- >>> import qualified Data.Text as T
 -- >>> :seti -XOverloadedStrings
@@ -320,7 +327,7 @@
 -- $fusion
 --
 -- Starting from @text-1.3@ fusion is no longer implicit,
--- and pipelines of transormations usually allocate intermediate 'Text' values.
+-- and pipelines of transformations usually allocate intermediate 'Text' values.
 -- Users, who observe significant changes to performances,
 -- are encouraged to use fusion framework explicitly, employing
 -- "Data.Text.Internal.Fusion" and "Data.Text.Internal.Fusion.Common".
@@ -346,10 +353,21 @@
     mappend = (<>)
     mconcat = concat
 
+-- | Performs replacement on invalid scalar values:
+--
+-- >>> :set -XOverloadedStrings
+-- >>> "\55555" :: Text
+-- "\65533"
 instance IsString Text where
     fromString = pack
 
--- | @since 1.2.0.0
+-- | Performs replacement on invalid scalar values:
+--
+-- >>> :set -XOverloadedLists
+-- >>> ['\55555'] :: Text
+-- "\65533"
+--
+-- @since 1.2.0.0
 instance Exts.IsList Text where
     type Item Text = Char
     fromList       = pack
@@ -379,7 +397,7 @@
 --
 -- The followup discussion that changed the behavior of 'Data.Set.Set'
 -- and 'Data.Map.Map' is archived here:
--- <http://markmail.org/message/trovdc6zkphyi3cr#query:+page:1+mid:a46der3iacwjcf6n+state:results Proposal: Allow gunfold for Data.Map, ... >
+-- <https://mail.haskell.org/pipermail/libraries/2012-August/018366.html Proposal: Allow gunfold for Data.Map, ... >
 
 instance Data Text where
   gfoldl f z txt = z pack `f` (unpack txt)
@@ -389,18 +407,31 @@
     _ -> P.error "gunfold"
   dataTypeOf _ = textDataType
 
--- | This instance has similar considerations to the 'Data' instance:
--- it preserves abstraction at the cost of inefficiency.
---
--- @since 1.2.4.0
+-- | @since 1.2.4.0
 instance TH.Lift Text where
+#if MIN_VERSION_template_haskell(2,16,0)
+  lift txt = do
+    let (ptr, len) = unsafePerformIO $ asForeignPtr txt 
+    let lenInt = P.fromIntegral len
+    TH.appE (TH.appE (TH.varE 'unpackCStringLen#) (TH.litE . TH.bytesPrimL $ TH.mkBytes ptr 0 lenInt)) (TH.lift lenInt)
+#else
   lift = TH.appE (TH.varE 'pack) . TH.stringE . unpack
+#endif
 #if MIN_VERSION_template_haskell(2,17,0)
   liftTyped = TH.unsafeCodeCoerce . TH.lift
 #elif MIN_VERSION_template_haskell(2,16,0)
   liftTyped = TH.unsafeTExpCoerce . TH.lift
 #endif
 
+unpackCStringLen# :: Exts.Addr# -> Int -> Text
+unpackCStringLen# addr# l = Text ba 0 l
+  where
+    ba = runST $ do
+      marr <- A.new l
+      A.copyFromPointer marr 0 (Exts.Ptr addr#) l
+      A.unsafeFreeze marr
+{-# NOINLINE unpackCStringLen# #-} -- set as NOINLINE to avoid generated code bloat
+
 -- | @since 1.2.2.0
 instance PrintfArg Text where
   formatArg txt = formatString $ unpack txt
@@ -423,7 +454,10 @@
 -- * Conversion to/from 'Text'
 
 -- | /O(n)/ Convert a 'String' into a 'Text'.
--- Performs replacement on invalid scalar values.
+-- Performs replacement on invalid scalar values, so @'unpack' . 'pack'@ is not 'id':
+--
+-- >>> unpack (pack "\55555")
+-- "\65533"
 pack :: String -> Text
 pack = unstream . S.map safe . S.streamList
 {-# INLINE [1] pack #-}
@@ -546,13 +580,17 @@
     length (intercalate s ts) = let lenS = length s in max 0 (P.sum (P.map (\t -> length t + lenS) ts) - lenS)
   #-}
 
--- | /O(n)/ Compare the count of characters in a 'Text' to a number.
+-- | /O(min(n,c))/ Compare the count of characters in a 'Text' to a number.
 --
+-- @
+-- 'compareLength' t c = 'P.compare' ('length' t) c
+-- @
+--
 -- This function gives the same answer as comparing against the result
 -- of 'length', but can short circuit if the count of characters is
 -- greater than the number, and hence be more efficient.
 compareLength :: Text -> Int -> Ordering
-compareLength t n = S.compareLengthI (stream t) n
+compareLength t c = S.compareLengthI (stream t) c
 {-# INLINE [1] compareLength #-}
 
 {-# RULES
@@ -973,6 +1011,22 @@
 -- | /O(n)/ 'foldr', applied to a binary operator, a starting value
 -- (typically the right-identity of the operator), and a 'Text',
 -- reduces the 'Text' using the binary operator, from right to left.
+--
+-- If the binary operator is strict in its second argument, use 'foldr''
+-- instead.
+--
+-- 'foldr' is lazy like 'Data.List.foldr' for lists: evaluation actually
+-- traverses the 'Text' from left to right, only as far as it needs to.
+--
+-- For example, 'head' can be defined with /O(1)/ complexity using 'foldr':
+--
+-- @
+-- head :: Text -> Char
+-- head = foldr const (error "head empty")
+-- @
+--
+-- Searches from left to right with short-circuiting behavior can
+-- also be defined using 'foldr' (/e.g./, 'any', 'all', 'find', 'elem').
 foldr :: (Char -> a -> a) -> a -> Text -> a
 foldr f z t = S.foldr f z (stream t)
 {-# INLINE foldr #-}
@@ -983,6 +1037,15 @@
 foldr1 f t = S.foldr1 f (stream t)
 {-# INLINE foldr1 #-}
 
+-- | /O(n)/ A strict version of 'foldr'.
+--
+-- 'foldr'' evaluates as a right-to-left traversal using constant stack space.
+--
+-- @since 2.0.1
+foldr' :: (Char -> a -> a) -> a -> Text -> a
+foldr' f z t = S.foldl' (P.flip f) z (reverseStream t)
+{-# INLINE foldr' #-}
+
 -- -----------------------------------------------------------------------------
 -- ** Special folds
 
@@ -1042,7 +1105,7 @@
 -- __Properties__
 --
 -- @'head' ('scanl' f z xs) = z@
--- 
+--
 -- @'last' ('scanl' f z xs) = 'foldl' f z xs@
 scanl :: (Char -> Char -> Char) -> Char -> Text -> Text
 scanl f z t = unstream (S.scanl g z (stream t))
@@ -1385,7 +1448,7 @@
 -- | /O(n)/ 'span', applied to a predicate @p@ and text @t@, returns
 -- a pair whose first element is the longest prefix (possibly empty)
 -- of @t@ of elements that satisfy @p@, and whose second is the
--- remainder of the list.
+-- remainder of the text.
 --
 -- >>> T.span (=='0') "000AB"
 -- ("000","AB")
@@ -1403,6 +1466,55 @@
 break p = span (not . p)
 {-# INLINE break #-}
 
+-- | /O(length of prefix)/ 'spanM', applied to a monadic predicate @p@,
+-- a text @t@, returns a pair @(t1, t2)@ where @t1@ is the longest prefix of
+-- @t@ whose elements satisfy @p@, and @t2@ is the remainder of the text.
+--
+-- >>> T.spanM (\c -> state $ \i -> (fromEnum c == i, i+1)) "abcefg" `runState` 97
+-- (("abc","efg"),101)
+--
+-- 'span' is 'spanM' specialized to 'Data.Functor.Identity.Identity':
+--
+-- @
+-- -- for all p :: Char -> Bool
+-- 'span' p = 'Data.Functor.Identity.runIdentity' . 'spanM' ('pure' . p)
+-- @
+--
+-- @since 2.0.1
+spanM :: Monad m => (Char -> m Bool) -> Text -> m (Text, Text)
+spanM p t@(Text arr off len) = go 0
+  where
+    go !i | i < len = case iterArray arr (off+i) of
+        Iter c l -> do
+            continue <- p c
+            if continue then go (i+l)
+            else pure (text arr off i, text arr (off+i) (len-i))
+    go _ = pure (t, empty)
+{-# INLINE spanM #-}
+
+-- | /O(length of suffix)/ 'spanEndM', applied to a monadic predicate @p@,
+-- a text @t@, returns a pair @(t1, t2)@ where @t2@ is the longest suffix of
+-- @t@ whose elements satisfy @p@, and @t1@ is the remainder of the text.
+--
+-- >>> T.spanEndM (\c -> state $ \i -> (fromEnum c == i, i-1)) "tuvxyz" `runState` 122
+-- (("tuv","xyz"),118)
+--
+-- @
+-- 'spanEndM' p . 'reverse' = fmap ('Data.Bifunctor.bimap' 'reverse' 'reverse') . 'spanM' p
+-- @
+--
+-- @since 2.0.1
+spanEndM :: Monad m => (Char -> m Bool) -> Text -> m (Text, Text)
+spanEndM p t@(Text arr off len) = go (len-1)
+  where
+    go !i | 0 <= i = case reverseIterArray arr (off+i) of
+        Iter c l -> do
+            continue <- p c
+            if continue then go (i+l)
+            else pure (text arr off (i+1), text arr (off+i+1) (len-i-1))
+    go _ = pure (empty, t)
+{-# INLINE spanEndM #-}
+
 -- | /O(n)/ Group characters in a string according to a predicate.
 groupBy :: (Char -> Char -> Bool) -> Text -> [Text]
 groupBy p = loop
@@ -1848,14 +1960,14 @@
 {-# INLINE unwords #-}
 
 -- | /O(n)/ The 'isPrefixOf' function takes two 'Text's and returns
--- 'True' iff the first is a prefix of the second.
+-- 'True' if and only if the first is a prefix of the second.
 isPrefixOf :: Text -> Text -> Bool
 isPrefixOf a@(Text _ _ alen) b@(Text _ _ blen) =
     alen <= blen && S.isPrefixOf (stream a) (stream b)
 {-# INLINE [1] isPrefixOf #-}
 
 -- | /O(n)/ The 'isSuffixOf' function takes two 'Text's and returns
--- 'True' iff the first is a suffix of the second.
+-- 'True' if and only if the first is a suffix of the second.
 isSuffixOf :: Text -> Text -> Bool
 isSuffixOf a@(Text _aarr _aoff alen) b@(Text barr boff blen) =
     d >= 0 && a == b'
@@ -1865,7 +1977,7 @@
 {-# INLINE isSuffixOf #-}
 
 -- | /O(n+m)/ The 'isInfixOf' function takes two 'Text's and returns
--- 'True' iff the first is contained, wholly and intact, anywhere
+-- 'True' if and only if the first is contained, wholly and intact, anywhere
 -- within the second.
 --
 -- In (unlikely) bad cases, this function's time complexity degrades
diff --git a/src/Data/Text/Encoding.hs b/src/Data/Text/Encoding.hs
--- a/src/Data/Text/Encoding.hs
+++ b/src/Data/Text/Encoding.hs
@@ -25,31 +25,39 @@
     (
     -- * Decoding ByteStrings to Text
     -- $strict
-      decodeASCII
-    , decodeLatin1
-    , decodeUtf8
-    , decodeUtf16LE
-    , decodeUtf16BE
-    , decodeUtf32LE
-    , decodeUtf32BE
 
-    -- ** Catchable failure
+    -- ** Total Functions #total#
+    -- $total
+      decodeLatin1
+    , decodeUtf8Lenient
+
+    -- *** Catchable failure
     , decodeUtf8'
 
-    -- ** Controllable error handling
+    -- *** Controllable error handling
     , decodeUtf8With
-    , decodeUtf8Lenient
     , decodeUtf16LEWith
     , decodeUtf16BEWith
     , decodeUtf32LEWith
     , decodeUtf32BEWith
 
-    -- ** Stream oriented decoding
+    -- *** Stream oriented decoding
     -- $stream
-    , streamDecodeUtf8
     , streamDecodeUtf8With
     , Decoding(..)
 
+    -- ** Partial Functions
+    -- $partial
+    , decodeASCII
+    , decodeUtf8
+    , decodeUtf16LE
+    , decodeUtf16BE
+    , decodeUtf32LE
+    , decodeUtf32BE
+
+    -- *** Stream oriented decoding
+    , streamDecodeUtf8
+
     -- * Encoding Text to ByteStrings
     , encodeUtf8
     , encodeUtf16LE
@@ -98,7 +106,7 @@
 
 #ifdef SIMDUTF
 import Foreign.C.Types (CInt(..))
-#else
+#elif !MIN_VERSION_bytestring(0,11,2)
 import qualified Data.ByteString.Unsafe as B
 import Data.Text.Internal.Encoding.Utf8 (CodePoint(..))
 #endif
@@ -115,6 +123,17 @@
 -- For instance, 'decodeUtf8' will throw an exception, but
 -- 'decodeUtf8With' allows the programmer to determine what to do on a
 -- decoding error.
+
+-- $total
+--
+-- These functions facilitate total decoding and should be preferred
+-- over their partial counterparts.
+
+-- $partial
+--
+-- These functions are partial and should only be used with great caution
+-- (preferably not at all). See "Data.Text.Encoding#g:total" for better
+-- solutions.
 
 -- | Decode a 'ByteString' containing 7-bit ASCII
 -- encoded text.
diff --git a/src/Data/Text/Foreign.hs b/src/Data/Text/Foreign.hs
--- a/src/Data/Text/Foreign.hs
+++ b/src/Data/Text/Foreign.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE BangPatterns, CPP, GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE CPP, GeneralizedNewtypeDeriving, MagicHash #-}
 -- |
 -- Module      : Data.Text.Foreign
 -- Copyright   : (c) 2009, 2010 Bryan O'Sullivan
@@ -17,9 +17,11 @@
       I8
     -- * Safe conversion functions
     , fromPtr
+    , fromPtr0
     , useAsPtr
     , asForeignPtr
     -- ** Encoding as UTF-8
+    , withCString
     , peekCStringLen
     , withCStringLen
     -- * Unsafe conversion code
@@ -36,12 +38,15 @@
 import Data.Text.Encoding (decodeUtf8, encodeUtf8)
 import Data.Text.Internal (Text(..), empty)
 import Data.Text.Internal.Unsafe (unsafeWithForeignPtr)
+import Data.Text.Show (addrLen)
 import Data.Text.Unsafe (lengthWord8)
 import Data.Word (Word8)
-import Foreign.C.String (CStringLen)
+import Foreign.C.String (CString, CStringLen)
 import Foreign.ForeignPtr (ForeignPtr, mallocForeignPtrArray)
 import Foreign.Marshal.Alloc (allocaBytes)
 import Foreign.Ptr (Ptr, castPtr)
+import Foreign.Storable (pokeByteOff)
+import GHC.Exts (Ptr(..))
 import qualified Data.Text.Array as A
 
 -- $interop
@@ -72,6 +77,14 @@
   arr <- A.unsafeFreeze dst
   return $! Text arr 0 len
 
+-- | /O(n)/ Create a new 'Text' from a 'Ptr' 'Word8' by copying the
+-- contents of the NUL-terminated array.
+--
+-- @since 2.0.1
+fromPtr0 :: Ptr Word8           -- ^ source array
+         -> IO Text
+fromPtr0 ptr@(Ptr addr#) = fromPtr ptr (fromIntegral (addrLen addr#))
+
 -- $lowlevel
 --
 -- Foreign functions that use UTF-8 internally may return indices in
@@ -139,6 +152,21 @@
   fp <- mallocForeignPtrArray len
   unsafeWithForeignPtr fp $ unsafeCopyToPtr t
   return (fp, I8 len)
+
+-- | Marshal a 'Text' into a C string with a trailing NUL byte,
+-- encoded as UTF-8 in temporary storage.
+--
+-- The temporary storage is freed when the subcomputation terminates
+-- (either normally or via an exception), so the pointer to the
+-- temporary storage must /not/ be used after this function returns.
+--
+-- @since 2.0.1
+withCString :: Text -> (CString -> IO a) -> IO a
+withCString t@(Text _arr _off len) action =
+  allocaBytes (len + 1) $ \buf -> do
+    unsafeCopyToPtr t buf
+    pokeByteOff buf len (0 :: Word8)
+    action (castPtr buf)
 
 -- | /O(n)/ Decode a C string with explicit length, which is assumed
 -- to have been encoded as UTF-8. If decoding fails, a
diff --git a/src/Data/Text/Internal/Builder.hs b/src/Data/Text/Internal/Builder.hs
--- a/src/Data/Text/Internal/Builder.hs
+++ b/src/Data/Text/Internal/Builder.hs
@@ -108,6 +108,11 @@
    mconcat = foldr mappend Data.Monoid.mempty
    {-# INLINE mconcat #-}
 
+-- | Performs replacement on invalid scalar values:
+--
+-- >>> :set -XOverloadedStrings
+-- >>> "\55555" :: Builder
+-- "\65533"
 instance String.IsString Builder where
     fromString = fromString
     {-# INLINE fromString #-}
@@ -181,6 +186,12 @@
 --
 --  * @'toLazyText' ('fromString' s) = 'L.fromChunks' [S.pack s]@
 --
+-- Performs replacement on invalid scalar values:
+--
+-- >>> fromString "\55555"
+-- "\65533"
+--
+-- @since 1.2.0.0
 fromString :: String -> Builder
 fromString str = Builder $ \k (Buffer p0 o0 u0 l0) ->
     let loop !marr !o !u !l [] = k (Buffer marr o u l)
diff --git a/src/Data/Text/Internal/Fusion/CaseMapping.hs b/src/Data/Text/Internal/Fusion/CaseMapping.hs
--- a/src/Data/Text/Internal/Fusion/CaseMapping.hs
+++ b/src/Data/Text/Internal/Fusion/CaseMapping.hs
@@ -4589,1832 +4589,3064 @@
 foldMapping :: Char# -> _ {- unboxed Int64 -}
 {-# NOINLINE foldMapping #-}
 foldMapping = \case
-  -- MICRO SIGN
-  '\x00b5'# -> unI64 956
-  -- LATIN SMALL LETTER SHARP S
-  '\x00df'# -> unI64 241172595
-  -- LATIN CAPITAL LETTER I WITH DOT ABOVE
-  '\x0130'# -> unI64 1625292905
-  -- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-  '\x0149'# -> unI64 230687420
-  -- LATIN SMALL LETTER LONG S
-  '\x017f'# -> unI64 115
-  -- LATIN SMALL LETTER J WITH CARON
-  '\x01f0'# -> unI64 1635778666
-  -- COMBINING GREEK YPOGEGRAMMENI
-  '\x0345'# -> unI64 953
-  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-  '\x0390'# -> unI64 3382099394429881
-  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-  '\x03b0'# -> unI64 3382099394429893
-  -- GREEK SMALL LETTER FINAL SIGMA
-  '\x03c2'# -> unI64 963
-  -- GREEK BETA SYMBOL
-  '\x03d0'# -> unI64 946
-  -- GREEK THETA SYMBOL
-  '\x03d1'# -> unI64 952
-  -- GREEK PHI SYMBOL
-  '\x03d5'# -> unI64 966
-  -- GREEK PI SYMBOL
-  '\x03d6'# -> unI64 960
-  -- GREEK KAPPA SYMBOL
-  '\x03f0'# -> unI64 954
-  -- GREEK RHO SYMBOL
-  '\x03f1'# -> unI64 961
-  -- GREEK LUNATE EPSILON SYMBOL
-  '\x03f5'# -> unI64 949
-  -- ARMENIAN SMALL LIGATURE ECH YIWN
-  '\x0587'# -> unI64 2956985701
-  -- CHEROKEE SMALL LETTER YE
-  '\x13f8'# -> unI64 5104
-  -- CHEROKEE SMALL LETTER YI
-  '\x13f9'# -> unI64 5105
-  -- CHEROKEE SMALL LETTER YO
-  '\x13fa'# -> unI64 5106
-  -- CHEROKEE SMALL LETTER YU
-  '\x13fb'# -> unI64 5107
-  -- CHEROKEE SMALL LETTER YV
-  '\x13fc'# -> unI64 5108
-  -- CHEROKEE SMALL LETTER MV
-  '\x13fd'# -> unI64 5109
-  -- CYRILLIC SMALL LETTER ROUNDED VE
-  '\x1c80'# -> unI64 1074
-  -- CYRILLIC SMALL LETTER LONG-LEGGED DE
-  '\x1c81'# -> unI64 1076
-  -- CYRILLIC SMALL LETTER NARROW O
-  '\x1c82'# -> unI64 1086
-  -- CYRILLIC SMALL LETTER WIDE ES
-  '\x1c83'# -> unI64 1089
-  -- CYRILLIC SMALL LETTER TALL TE
-  '\x1c84'# -> unI64 1090
-  -- CYRILLIC SMALL LETTER THREE-LEGGED TE
-  '\x1c85'# -> unI64 1090
-  -- CYRILLIC SMALL LETTER TALL HARD SIGN
-  '\x1c86'# -> unI64 1098
-  -- CYRILLIC SMALL LETTER TALL YAT
-  '\x1c87'# -> unI64 1123
-  -- CYRILLIC SMALL LETTER UNBLENDED UK
-  '\x1c88'# -> unI64 42571
-  -- LATIN SMALL LETTER H WITH LINE BELOW
-  '\x1e96'# -> unI64 1713373288
-  -- LATIN SMALL LETTER T WITH DIAERESIS
-  '\x1e97'# -> unI64 1627390068
-  -- LATIN SMALL LETTER W WITH RING ABOVE
-  '\x1e98'# -> unI64 1631584375
-  -- LATIN SMALL LETTER Y WITH RING ABOVE
-  '\x1e99'# -> unI64 1631584377
-  -- LATIN SMALL LETTER A WITH RIGHT HALF RING
-  '\x1e9a'# -> unI64 1472200801
-  -- LATIN SMALL LETTER LONG S WITH DOT ABOVE
-  '\x1e9b'# -> unI64 7777
-  -- LATIN CAPITAL LETTER SHARP S
-  '\x1e9e'# -> unI64 241172595
-  -- GREEK SMALL LETTER UPSILON WITH PSILI
-  '\x1f50'# -> unI64 1650459589
-  -- GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
-  '\x1f52'# -> unI64 3377701370987461
-  -- GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
-  '\x1f54'# -> unI64 3382099417498565
-  -- GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
-  '\x1f56'# -> unI64 3667972440720325
-  -- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
-  '\x1f80'# -> unI64 1998593792
-  -- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
-  '\x1f81'# -> unI64 1998593793
-  -- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-  '\x1f82'# -> unI64 1998593794
-  -- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-  '\x1f83'# -> unI64 1998593795
-  -- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-  '\x1f84'# -> unI64 1998593796
-  -- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-  '\x1f85'# -> unI64 1998593797
-  -- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-  '\x1f86'# -> unI64 1998593798
-  -- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-  '\x1f87'# -> unI64 1998593799
-  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
-  '\x1f88'# -> unI64 1998593792
-  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
-  '\x1f89'# -> unI64 1998593793
-  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-  '\x1f8a'# -> unI64 1998593794
-  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-  '\x1f8b'# -> unI64 1998593795
-  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-  '\x1f8c'# -> unI64 1998593796
-  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-  '\x1f8d'# -> unI64 1998593797
-  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-  '\x1f8e'# -> unI64 1998593798
-  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-  '\x1f8f'# -> unI64 1998593799
-  -- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
-  '\x1f90'# -> unI64 1998593824
-  -- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
-  '\x1f91'# -> unI64 1998593825
-  -- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-  '\x1f92'# -> unI64 1998593826
-  -- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-  '\x1f93'# -> unI64 1998593827
-  -- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-  '\x1f94'# -> unI64 1998593828
-  -- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-  '\x1f95'# -> unI64 1998593829
-  -- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-  '\x1f96'# -> unI64 1998593830
-  -- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-  '\x1f97'# -> unI64 1998593831
-  -- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
-  '\x1f98'# -> unI64 1998593824
-  -- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
-  '\x1f99'# -> unI64 1998593825
-  -- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-  '\x1f9a'# -> unI64 1998593826
-  -- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-  '\x1f9b'# -> unI64 1998593827
-  -- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-  '\x1f9c'# -> unI64 1998593828
-  -- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-  '\x1f9d'# -> unI64 1998593829
-  -- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-  '\x1f9e'# -> unI64 1998593830
-  -- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-  '\x1f9f'# -> unI64 1998593831
-  -- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
-  '\x1fa0'# -> unI64 1998593888
-  -- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
-  '\x1fa1'# -> unI64 1998593889
-  -- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-  '\x1fa2'# -> unI64 1998593890
-  -- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-  '\x1fa3'# -> unI64 1998593891
-  -- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-  '\x1fa4'# -> unI64 1998593892
-  -- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-  '\x1fa5'# -> unI64 1998593893
-  -- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-  '\x1fa6'# -> unI64 1998593894
-  -- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-  '\x1fa7'# -> unI64 1998593895
-  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
-  '\x1fa8'# -> unI64 1998593888
-  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
-  '\x1fa9'# -> unI64 1998593889
-  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-  '\x1faa'# -> unI64 1998593890
-  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-  '\x1fab'# -> unI64 1998593891
-  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-  '\x1fac'# -> unI64 1998593892
-  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-  '\x1fad'# -> unI64 1998593893
-  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-  '\x1fae'# -> unI64 1998593894
-  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-  '\x1faf'# -> unI64 1998593895
-  -- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
-  '\x1fb2'# -> unI64 1998593904
-  -- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
-  '\x1fb3'# -> unI64 1998586801
-  -- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
-  '\x1fb4'# -> unI64 1998586796
-  -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI
-  '\x1fb6'# -> unI64 1749025713
-  -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
-  '\x1fb7'# -> unI64 4191340074107825
-  -- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-  '\x1fbc'# -> unI64 1998586801
-  -- GREEK PROSGEGRAMMENI
-  '\x1fbe'# -> unI64 953
-  -- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
-  '\x1fc2'# -> unI64 1998593908
-  -- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
-  '\x1fc3'# -> unI64 1998586807
-  -- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
-  '\x1fc4'# -> unI64 1998586798
-  -- GREEK SMALL LETTER ETA WITH PERISPOMENI
-  '\x1fc6'# -> unI64 1749025719
-  -- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
-  '\x1fc7'# -> unI64 4191340074107831
-  -- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-  '\x1fcc'# -> unI64 1998586807
-  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
-  '\x1fd2'# -> unI64 3377701347918777
-  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-  '\x1fd3'# -> unI64 3382099394429881
-  -- GREEK SMALL LETTER IOTA WITH PERISPOMENI
-  '\x1fd6'# -> unI64 1749025721
-  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
-  '\x1fd7'# -> unI64 3667972417651641
-  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
-  '\x1fe2'# -> unI64 3377701347918789
-  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
-  '\x1fe3'# -> unI64 3382099394429893
-  -- GREEK SMALL LETTER RHO WITH PSILI
-  '\x1fe4'# -> unI64 1650459585
-  -- GREEK SMALL LETTER UPSILON WITH PERISPOMENI
-  '\x1fe6'# -> unI64 1749025733
-  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
-  '\x1fe7'# -> unI64 3667972417651653
-  -- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
-  '\x1ff2'# -> unI64 1998593916
-  -- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
-  '\x1ff3'# -> unI64 1998586825
-  -- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
-  '\x1ff4'# -> unI64 1998586830
-  -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI
-  '\x1ff6'# -> unI64 1749025737
-  -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
-  '\x1ff7'# -> unI64 4191340074107849
-  -- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-  '\x1ffc'# -> unI64 1998586825
-  -- CHEROKEE SMALL LETTER A
-  '\xab70'# -> unI64 5024
-  -- CHEROKEE SMALL LETTER E
-  '\xab71'# -> unI64 5025
-  -- CHEROKEE SMALL LETTER I
-  '\xab72'# -> unI64 5026
-  -- CHEROKEE SMALL LETTER O
-  '\xab73'# -> unI64 5027
-  -- CHEROKEE SMALL LETTER U
-  '\xab74'# -> unI64 5028
-  -- CHEROKEE SMALL LETTER V
-  '\xab75'# -> unI64 5029
-  -- CHEROKEE SMALL LETTER GA
-  '\xab76'# -> unI64 5030
-  -- CHEROKEE SMALL LETTER KA
-  '\xab77'# -> unI64 5031
-  -- CHEROKEE SMALL LETTER GE
-  '\xab78'# -> unI64 5032
-  -- CHEROKEE SMALL LETTER GI
-  '\xab79'# -> unI64 5033
-  -- CHEROKEE SMALL LETTER GO
-  '\xab7a'# -> unI64 5034
-  -- CHEROKEE SMALL LETTER GU
-  '\xab7b'# -> unI64 5035
-  -- CHEROKEE SMALL LETTER GV
-  '\xab7c'# -> unI64 5036
-  -- CHEROKEE SMALL LETTER HA
-  '\xab7d'# -> unI64 5037
-  -- CHEROKEE SMALL LETTER HE
-  '\xab7e'# -> unI64 5038
-  -- CHEROKEE SMALL LETTER HI
-  '\xab7f'# -> unI64 5039
-  -- CHEROKEE SMALL LETTER HO
-  '\xab80'# -> unI64 5040
-  -- CHEROKEE SMALL LETTER HU
-  '\xab81'# -> unI64 5041
-  -- CHEROKEE SMALL LETTER HV
-  '\xab82'# -> unI64 5042
-  -- CHEROKEE SMALL LETTER LA
-  '\xab83'# -> unI64 5043
-  -- CHEROKEE SMALL LETTER LE
-  '\xab84'# -> unI64 5044
-  -- CHEROKEE SMALL LETTER LI
-  '\xab85'# -> unI64 5045
-  -- CHEROKEE SMALL LETTER LO
-  '\xab86'# -> unI64 5046
-  -- CHEROKEE SMALL LETTER LU
-  '\xab87'# -> unI64 5047
-  -- CHEROKEE SMALL LETTER LV
-  '\xab88'# -> unI64 5048
-  -- CHEROKEE SMALL LETTER MA
-  '\xab89'# -> unI64 5049
-  -- CHEROKEE SMALL LETTER ME
-  '\xab8a'# -> unI64 5050
-  -- CHEROKEE SMALL LETTER MI
-  '\xab8b'# -> unI64 5051
-  -- CHEROKEE SMALL LETTER MO
-  '\xab8c'# -> unI64 5052
-  -- CHEROKEE SMALL LETTER MU
-  '\xab8d'# -> unI64 5053
-  -- CHEROKEE SMALL LETTER NA
-  '\xab8e'# -> unI64 5054
-  -- CHEROKEE SMALL LETTER HNA
-  '\xab8f'# -> unI64 5055
-  -- CHEROKEE SMALL LETTER NAH
-  '\xab90'# -> unI64 5056
-  -- CHEROKEE SMALL LETTER NE
-  '\xab91'# -> unI64 5057
-  -- CHEROKEE SMALL LETTER NI
-  '\xab92'# -> unI64 5058
-  -- CHEROKEE SMALL LETTER NO
-  '\xab93'# -> unI64 5059
-  -- CHEROKEE SMALL LETTER NU
-  '\xab94'# -> unI64 5060
-  -- CHEROKEE SMALL LETTER NV
-  '\xab95'# -> unI64 5061
-  -- CHEROKEE SMALL LETTER QUA
-  '\xab96'# -> unI64 5062
-  -- CHEROKEE SMALL LETTER QUE
-  '\xab97'# -> unI64 5063
-  -- CHEROKEE SMALL LETTER QUI
-  '\xab98'# -> unI64 5064
-  -- CHEROKEE SMALL LETTER QUO
-  '\xab99'# -> unI64 5065
-  -- CHEROKEE SMALL LETTER QUU
-  '\xab9a'# -> unI64 5066
-  -- CHEROKEE SMALL LETTER QUV
-  '\xab9b'# -> unI64 5067
-  -- CHEROKEE SMALL LETTER SA
-  '\xab9c'# -> unI64 5068
-  -- CHEROKEE SMALL LETTER S
-  '\xab9d'# -> unI64 5069
-  -- CHEROKEE SMALL LETTER SE
-  '\xab9e'# -> unI64 5070
-  -- CHEROKEE SMALL LETTER SI
-  '\xab9f'# -> unI64 5071
-  -- CHEROKEE SMALL LETTER SO
-  '\xaba0'# -> unI64 5072
-  -- CHEROKEE SMALL LETTER SU
-  '\xaba1'# -> unI64 5073
-  -- CHEROKEE SMALL LETTER SV
-  '\xaba2'# -> unI64 5074
-  -- CHEROKEE SMALL LETTER DA
-  '\xaba3'# -> unI64 5075
-  -- CHEROKEE SMALL LETTER TA
-  '\xaba4'# -> unI64 5076
-  -- CHEROKEE SMALL LETTER DE
-  '\xaba5'# -> unI64 5077
-  -- CHEROKEE SMALL LETTER TE
-  '\xaba6'# -> unI64 5078
-  -- CHEROKEE SMALL LETTER DI
-  '\xaba7'# -> unI64 5079
-  -- CHEROKEE SMALL LETTER TI
-  '\xaba8'# -> unI64 5080
-  -- CHEROKEE SMALL LETTER DO
-  '\xaba9'# -> unI64 5081
-  -- CHEROKEE SMALL LETTER DU
-  '\xabaa'# -> unI64 5082
-  -- CHEROKEE SMALL LETTER DV
-  '\xabab'# -> unI64 5083
-  -- CHEROKEE SMALL LETTER DLA
-  '\xabac'# -> unI64 5084
-  -- CHEROKEE SMALL LETTER TLA
-  '\xabad'# -> unI64 5085
-  -- CHEROKEE SMALL LETTER TLE
-  '\xabae'# -> unI64 5086
-  -- CHEROKEE SMALL LETTER TLI
-  '\xabaf'# -> unI64 5087
-  -- CHEROKEE SMALL LETTER TLO
-  '\xabb0'# -> unI64 5088
-  -- CHEROKEE SMALL LETTER TLU
-  '\xabb1'# -> unI64 5089
-  -- CHEROKEE SMALL LETTER TLV
-  '\xabb2'# -> unI64 5090
-  -- CHEROKEE SMALL LETTER TSA
-  '\xabb3'# -> unI64 5091
-  -- CHEROKEE SMALL LETTER TSE
-  '\xabb4'# -> unI64 5092
-  -- CHEROKEE SMALL LETTER TSI
-  '\xabb5'# -> unI64 5093
-  -- CHEROKEE SMALL LETTER TSO
-  '\xabb6'# -> unI64 5094
-  -- CHEROKEE SMALL LETTER TSU
-  '\xabb7'# -> unI64 5095
-  -- CHEROKEE SMALL LETTER TSV
-  '\xabb8'# -> unI64 5096
-  -- CHEROKEE SMALL LETTER WA
-  '\xabb9'# -> unI64 5097
-  -- CHEROKEE SMALL LETTER WE
-  '\xabba'# -> unI64 5098
-  -- CHEROKEE SMALL LETTER WI
-  '\xabbb'# -> unI64 5099
-  -- CHEROKEE SMALL LETTER WO
-  '\xabbc'# -> unI64 5100
-  -- CHEROKEE SMALL LETTER WU
-  '\xabbd'# -> unI64 5101
-  -- CHEROKEE SMALL LETTER WV
-  '\xabbe'# -> unI64 5102
-  -- CHEROKEE SMALL LETTER YA
-  '\xabbf'# -> unI64 5103
-  -- LATIN SMALL LIGATURE FF
-  '\xfb00'# -> unI64 213909606
-  -- LATIN SMALL LIGATURE FI
-  '\xfb01'# -> unI64 220201062
-  -- LATIN SMALL LIGATURE FL
-  '\xfb02'# -> unI64 226492518
-  -- LATIN SMALL LIGATURE FFI
-  '\xfb03'# -> unI64 461795097575526
-  -- LATIN SMALL LIGATURE FFL
-  '\xfb04'# -> unI64 474989237108838
-  -- LATIN SMALL LIGATURE LONG S T
-  '\xfb05'# -> unI64 243269747
-  -- LATIN SMALL LIGATURE ST
-  '\xfb06'# -> unI64 243269747
-  -- ARMENIAN SMALL LIGATURE MEN NOW
-  '\xfb13'# -> unI64 2931819892
-  -- ARMENIAN SMALL LIGATURE MEN ECH
-  '\xfb14'# -> unI64 2896168308
-  -- ARMENIAN SMALL LIGATURE MEN INI
-  '\xfb15'# -> unI64 2908751220
-  -- ARMENIAN SMALL LIGATURE VEW NOW
-  '\xfb16'# -> unI64 2931819902
-  -- ARMENIAN SMALL LIGATURE MEN XEH
-  '\xfb17'# -> unI64 2912945524
-  '\x0041'# -> unI64 97
-  '\x0042'# -> unI64 98
-  '\x0043'# -> unI64 99
-  '\x0044'# -> unI64 100
-  '\x0045'# -> unI64 101
-  '\x0046'# -> unI64 102
-  '\x0047'# -> unI64 103
-  '\x0048'# -> unI64 104
-  '\x0049'# -> unI64 105
-  '\x004a'# -> unI64 106
-  '\x004b'# -> unI64 107
-  '\x004c'# -> unI64 108
-  '\x004d'# -> unI64 109
-  '\x004e'# -> unI64 110
-  '\x004f'# -> unI64 111
-  '\x0050'# -> unI64 112
-  '\x0051'# -> unI64 113
-  '\x0052'# -> unI64 114
-  '\x0053'# -> unI64 115
-  '\x0054'# -> unI64 116
-  '\x0055'# -> unI64 117
-  '\x0056'# -> unI64 118
-  '\x0057'# -> unI64 119
-  '\x0058'# -> unI64 120
-  '\x0059'# -> unI64 121
-  '\x005a'# -> unI64 122
-  '\x00c0'# -> unI64 224
-  '\x00c1'# -> unI64 225
-  '\x00c2'# -> unI64 226
-  '\x00c3'# -> unI64 227
-  '\x00c4'# -> unI64 228
-  '\x00c5'# -> unI64 229
-  '\x00c6'# -> unI64 230
-  '\x00c7'# -> unI64 231
-  '\x00c8'# -> unI64 232
-  '\x00c9'# -> unI64 233
-  '\x00ca'# -> unI64 234
-  '\x00cb'# -> unI64 235
-  '\x00cc'# -> unI64 236
-  '\x00cd'# -> unI64 237
-  '\x00ce'# -> unI64 238
-  '\x00cf'# -> unI64 239
-  '\x00d0'# -> unI64 240
-  '\x00d1'# -> unI64 241
-  '\x00d2'# -> unI64 242
-  '\x00d3'# -> unI64 243
-  '\x00d4'# -> unI64 244
-  '\x00d5'# -> unI64 245
-  '\x00d6'# -> unI64 246
-  '\x00d8'# -> unI64 248
-  '\x00d9'# -> unI64 249
-  '\x00da'# -> unI64 250
-  '\x00db'# -> unI64 251
-  '\x00dc'# -> unI64 252
-  '\x00dd'# -> unI64 253
-  '\x00de'# -> unI64 254
-  '\x0100'# -> unI64 257
-  '\x0102'# -> unI64 259
-  '\x0104'# -> unI64 261
-  '\x0106'# -> unI64 263
-  '\x0108'# -> unI64 265
-  '\x010a'# -> unI64 267
-  '\x010c'# -> unI64 269
-  '\x010e'# -> unI64 271
-  '\x0110'# -> unI64 273
-  '\x0112'# -> unI64 275
-  '\x0114'# -> unI64 277
-  '\x0116'# -> unI64 279
-  '\x0118'# -> unI64 281
-  '\x011a'# -> unI64 283
-  '\x011c'# -> unI64 285
-  '\x011e'# -> unI64 287
-  '\x0120'# -> unI64 289
-  '\x0122'# -> unI64 291
-  '\x0124'# -> unI64 293
-  '\x0126'# -> unI64 295
-  '\x0128'# -> unI64 297
-  '\x012a'# -> unI64 299
-  '\x012c'# -> unI64 301
-  '\x012e'# -> unI64 303
-  '\x0132'# -> unI64 307
-  '\x0134'# -> unI64 309
-  '\x0136'# -> unI64 311
-  '\x0139'# -> unI64 314
-  '\x013b'# -> unI64 316
-  '\x013d'# -> unI64 318
-  '\x013f'# -> unI64 320
-  '\x0141'# -> unI64 322
-  '\x0143'# -> unI64 324
-  '\x0145'# -> unI64 326
-  '\x0147'# -> unI64 328
-  '\x014a'# -> unI64 331
-  '\x014c'# -> unI64 333
-  '\x014e'# -> unI64 335
-  '\x0150'# -> unI64 337
-  '\x0152'# -> unI64 339
-  '\x0154'# -> unI64 341
-  '\x0156'# -> unI64 343
-  '\x0158'# -> unI64 345
-  '\x015a'# -> unI64 347
-  '\x015c'# -> unI64 349
-  '\x015e'# -> unI64 351
-  '\x0160'# -> unI64 353
-  '\x0162'# -> unI64 355
-  '\x0164'# -> unI64 357
-  '\x0166'# -> unI64 359
-  '\x0168'# -> unI64 361
-  '\x016a'# -> unI64 363
-  '\x016c'# -> unI64 365
-  '\x016e'# -> unI64 367
-  '\x0170'# -> unI64 369
-  '\x0172'# -> unI64 371
-  '\x0174'# -> unI64 373
-  '\x0176'# -> unI64 375
-  '\x0178'# -> unI64 255
-  '\x0179'# -> unI64 378
-  '\x017b'# -> unI64 380
-  '\x017d'# -> unI64 382
-  '\x0181'# -> unI64 595
-  '\x0182'# -> unI64 387
-  '\x0184'# -> unI64 389
-  '\x0186'# -> unI64 596
-  '\x0187'# -> unI64 392
-  '\x0189'# -> unI64 598
-  '\x018a'# -> unI64 599
-  '\x018b'# -> unI64 396
-  '\x018e'# -> unI64 477
-  '\x018f'# -> unI64 601
-  '\x0190'# -> unI64 603
-  '\x0191'# -> unI64 402
-  '\x0193'# -> unI64 608
-  '\x0194'# -> unI64 611
-  '\x0196'# -> unI64 617
-  '\x0197'# -> unI64 616
-  '\x0198'# -> unI64 409
-  '\x019c'# -> unI64 623
-  '\x019d'# -> unI64 626
-  '\x019f'# -> unI64 629
-  '\x01a0'# -> unI64 417
-  '\x01a2'# -> unI64 419
-  '\x01a4'# -> unI64 421
-  '\x01a6'# -> unI64 640
-  '\x01a7'# -> unI64 424
-  '\x01a9'# -> unI64 643
-  '\x01ac'# -> unI64 429
-  '\x01ae'# -> unI64 648
-  '\x01af'# -> unI64 432
-  '\x01b1'# -> unI64 650
-  '\x01b2'# -> unI64 651
-  '\x01b3'# -> unI64 436
-  '\x01b5'# -> unI64 438
-  '\x01b7'# -> unI64 658
-  '\x01b8'# -> unI64 441
-  '\x01bc'# -> unI64 445
-  '\x01c4'# -> unI64 454
-  '\x01c5'# -> unI64 454
-  '\x01c7'# -> unI64 457
-  '\x01c8'# -> unI64 457
-  '\x01ca'# -> unI64 460
-  '\x01cb'# -> unI64 460
-  '\x01cd'# -> unI64 462
-  '\x01cf'# -> unI64 464
-  '\x01d1'# -> unI64 466
-  '\x01d3'# -> unI64 468
-  '\x01d5'# -> unI64 470
-  '\x01d7'# -> unI64 472
-  '\x01d9'# -> unI64 474
-  '\x01db'# -> unI64 476
-  '\x01de'# -> unI64 479
-  '\x01e0'# -> unI64 481
-  '\x01e2'# -> unI64 483
-  '\x01e4'# -> unI64 485
-  '\x01e6'# -> unI64 487
-  '\x01e8'# -> unI64 489
-  '\x01ea'# -> unI64 491
-  '\x01ec'# -> unI64 493
-  '\x01ee'# -> unI64 495
-  '\x01f1'# -> unI64 499
-  '\x01f2'# -> unI64 499
-  '\x01f4'# -> unI64 501
-  '\x01f6'# -> unI64 405
-  '\x01f7'# -> unI64 447
-  '\x01f8'# -> unI64 505
-  '\x01fa'# -> unI64 507
-  '\x01fc'# -> unI64 509
-  '\x01fe'# -> unI64 511
-  '\x0200'# -> unI64 513
-  '\x0202'# -> unI64 515
-  '\x0204'# -> unI64 517
-  '\x0206'# -> unI64 519
-  '\x0208'# -> unI64 521
-  '\x020a'# -> unI64 523
-  '\x020c'# -> unI64 525
-  '\x020e'# -> unI64 527
-  '\x0210'# -> unI64 529
-  '\x0212'# -> unI64 531
-  '\x0214'# -> unI64 533
-  '\x0216'# -> unI64 535
-  '\x0218'# -> unI64 537
-  '\x021a'# -> unI64 539
-  '\x021c'# -> unI64 541
-  '\x021e'# -> unI64 543
-  '\x0220'# -> unI64 414
-  '\x0222'# -> unI64 547
-  '\x0224'# -> unI64 549
-  '\x0226'# -> unI64 551
-  '\x0228'# -> unI64 553
-  '\x022a'# -> unI64 555
-  '\x022c'# -> unI64 557
-  '\x022e'# -> unI64 559
-  '\x0230'# -> unI64 561
-  '\x0232'# -> unI64 563
-  '\x023a'# -> unI64 11365
-  '\x023b'# -> unI64 572
-  '\x023d'# -> unI64 410
-  '\x023e'# -> unI64 11366
-  '\x0241'# -> unI64 578
-  '\x0243'# -> unI64 384
-  '\x0244'# -> unI64 649
-  '\x0245'# -> unI64 652
-  '\x0246'# -> unI64 583
-  '\x0248'# -> unI64 585
-  '\x024a'# -> unI64 587
-  '\x024c'# -> unI64 589
-  '\x024e'# -> unI64 591
-  '\x0370'# -> unI64 881
-  '\x0372'# -> unI64 883
-  '\x0376'# -> unI64 887
-  '\x037f'# -> unI64 1011
-  '\x0386'# -> unI64 940
-  '\x0388'# -> unI64 941
-  '\x0389'# -> unI64 942
-  '\x038a'# -> unI64 943
-  '\x038c'# -> unI64 972
-  '\x038e'# -> unI64 973
-  '\x038f'# -> unI64 974
-  '\x0391'# -> unI64 945
-  '\x0392'# -> unI64 946
-  '\x0393'# -> unI64 947
-  '\x0394'# -> unI64 948
-  '\x0395'# -> unI64 949
-  '\x0396'# -> unI64 950
-  '\x0397'# -> unI64 951
-  '\x0398'# -> unI64 952
-  '\x0399'# -> unI64 953
-  '\x039a'# -> unI64 954
-  '\x039b'# -> unI64 955
-  '\x039c'# -> unI64 956
-  '\x039d'# -> unI64 957
-  '\x039e'# -> unI64 958
-  '\x039f'# -> unI64 959
-  '\x03a0'# -> unI64 960
-  '\x03a1'# -> unI64 961
-  '\x03a3'# -> unI64 963
-  '\x03a4'# -> unI64 964
-  '\x03a5'# -> unI64 965
-  '\x03a6'# -> unI64 966
-  '\x03a7'# -> unI64 967
-  '\x03a8'# -> unI64 968
-  '\x03a9'# -> unI64 969
-  '\x03aa'# -> unI64 970
-  '\x03ab'# -> unI64 971
-  '\x03cf'# -> unI64 983
-  '\x03d8'# -> unI64 985
-  '\x03da'# -> unI64 987
-  '\x03dc'# -> unI64 989
-  '\x03de'# -> unI64 991
-  '\x03e0'# -> unI64 993
-  '\x03e2'# -> unI64 995
-  '\x03e4'# -> unI64 997
-  '\x03e6'# -> unI64 999
-  '\x03e8'# -> unI64 1001
-  '\x03ea'# -> unI64 1003
-  '\x03ec'# -> unI64 1005
-  '\x03ee'# -> unI64 1007
-  '\x03f4'# -> unI64 952
-  '\x03f7'# -> unI64 1016
-  '\x03f9'# -> unI64 1010
-  '\x03fa'# -> unI64 1019
-  '\x03fd'# -> unI64 891
-  '\x03fe'# -> unI64 892
-  '\x03ff'# -> unI64 893
-  '\x0400'# -> unI64 1104
-  '\x0401'# -> unI64 1105
-  '\x0402'# -> unI64 1106
-  '\x0403'# -> unI64 1107
-  '\x0404'# -> unI64 1108
-  '\x0405'# -> unI64 1109
-  '\x0406'# -> unI64 1110
-  '\x0407'# -> unI64 1111
-  '\x0408'# -> unI64 1112
-  '\x0409'# -> unI64 1113
-  '\x040a'# -> unI64 1114
-  '\x040b'# -> unI64 1115
-  '\x040c'# -> unI64 1116
-  '\x040d'# -> unI64 1117
-  '\x040e'# -> unI64 1118
-  '\x040f'# -> unI64 1119
-  '\x0410'# -> unI64 1072
-  '\x0411'# -> unI64 1073
-  '\x0412'# -> unI64 1074
-  '\x0413'# -> unI64 1075
-  '\x0414'# -> unI64 1076
-  '\x0415'# -> unI64 1077
-  '\x0416'# -> unI64 1078
-  '\x0417'# -> unI64 1079
-  '\x0418'# -> unI64 1080
-  '\x0419'# -> unI64 1081
-  '\x041a'# -> unI64 1082
-  '\x041b'# -> unI64 1083
-  '\x041c'# -> unI64 1084
-  '\x041d'# -> unI64 1085
-  '\x041e'# -> unI64 1086
-  '\x041f'# -> unI64 1087
-  '\x0420'# -> unI64 1088
-  '\x0421'# -> unI64 1089
-  '\x0422'# -> unI64 1090
-  '\x0423'# -> unI64 1091
-  '\x0424'# -> unI64 1092
-  '\x0425'# -> unI64 1093
-  '\x0426'# -> unI64 1094
-  '\x0427'# -> unI64 1095
-  '\x0428'# -> unI64 1096
-  '\x0429'# -> unI64 1097
-  '\x042a'# -> unI64 1098
-  '\x042b'# -> unI64 1099
-  '\x042c'# -> unI64 1100
-  '\x042d'# -> unI64 1101
-  '\x042e'# -> unI64 1102
-  '\x042f'# -> unI64 1103
-  '\x0460'# -> unI64 1121
-  '\x0462'# -> unI64 1123
-  '\x0464'# -> unI64 1125
-  '\x0466'# -> unI64 1127
-  '\x0468'# -> unI64 1129
-  '\x046a'# -> unI64 1131
-  '\x046c'# -> unI64 1133
-  '\x046e'# -> unI64 1135
-  '\x0470'# -> unI64 1137
-  '\x0472'# -> unI64 1139
-  '\x0474'# -> unI64 1141
-  '\x0476'# -> unI64 1143
-  '\x0478'# -> unI64 1145
-  '\x047a'# -> unI64 1147
-  '\x047c'# -> unI64 1149
-  '\x047e'# -> unI64 1151
-  '\x0480'# -> unI64 1153
-  '\x048a'# -> unI64 1163
-  '\x048c'# -> unI64 1165
-  '\x048e'# -> unI64 1167
-  '\x0490'# -> unI64 1169
-  '\x0492'# -> unI64 1171
-  '\x0494'# -> unI64 1173
-  '\x0496'# -> unI64 1175
-  '\x0498'# -> unI64 1177
-  '\x049a'# -> unI64 1179
-  '\x049c'# -> unI64 1181
-  '\x049e'# -> unI64 1183
-  '\x04a0'# -> unI64 1185
-  '\x04a2'# -> unI64 1187
-  '\x04a4'# -> unI64 1189
-  '\x04a6'# -> unI64 1191
-  '\x04a8'# -> unI64 1193
-  '\x04aa'# -> unI64 1195
-  '\x04ac'# -> unI64 1197
-  '\x04ae'# -> unI64 1199
-  '\x04b0'# -> unI64 1201
-  '\x04b2'# -> unI64 1203
-  '\x04b4'# -> unI64 1205
-  '\x04b6'# -> unI64 1207
-  '\x04b8'# -> unI64 1209
-  '\x04ba'# -> unI64 1211
-  '\x04bc'# -> unI64 1213
-  '\x04be'# -> unI64 1215
-  '\x04c0'# -> unI64 1231
-  '\x04c1'# -> unI64 1218
-  '\x04c3'# -> unI64 1220
-  '\x04c5'# -> unI64 1222
-  '\x04c7'# -> unI64 1224
-  '\x04c9'# -> unI64 1226
-  '\x04cb'# -> unI64 1228
-  '\x04cd'# -> unI64 1230
-  '\x04d0'# -> unI64 1233
-  '\x04d2'# -> unI64 1235
-  '\x04d4'# -> unI64 1237
-  '\x04d6'# -> unI64 1239
-  '\x04d8'# -> unI64 1241
-  '\x04da'# -> unI64 1243
-  '\x04dc'# -> unI64 1245
-  '\x04de'# -> unI64 1247
-  '\x04e0'# -> unI64 1249
-  '\x04e2'# -> unI64 1251
-  '\x04e4'# -> unI64 1253
-  '\x04e6'# -> unI64 1255
-  '\x04e8'# -> unI64 1257
-  '\x04ea'# -> unI64 1259
-  '\x04ec'# -> unI64 1261
-  '\x04ee'# -> unI64 1263
-  '\x04f0'# -> unI64 1265
-  '\x04f2'# -> unI64 1267
-  '\x04f4'# -> unI64 1269
-  '\x04f6'# -> unI64 1271
-  '\x04f8'# -> unI64 1273
-  '\x04fa'# -> unI64 1275
-  '\x04fc'# -> unI64 1277
-  '\x04fe'# -> unI64 1279
-  '\x0500'# -> unI64 1281
-  '\x0502'# -> unI64 1283
-  '\x0504'# -> unI64 1285
-  '\x0506'# -> unI64 1287
-  '\x0508'# -> unI64 1289
-  '\x050a'# -> unI64 1291
-  '\x050c'# -> unI64 1293
-  '\x050e'# -> unI64 1295
-  '\x0510'# -> unI64 1297
-  '\x0512'# -> unI64 1299
-  '\x0514'# -> unI64 1301
-  '\x0516'# -> unI64 1303
-  '\x0518'# -> unI64 1305
-  '\x051a'# -> unI64 1307
-  '\x051c'# -> unI64 1309
-  '\x051e'# -> unI64 1311
-  '\x0520'# -> unI64 1313
-  '\x0522'# -> unI64 1315
-  '\x0524'# -> unI64 1317
-  '\x0526'# -> unI64 1319
-  '\x0528'# -> unI64 1321
-  '\x052a'# -> unI64 1323
-  '\x052c'# -> unI64 1325
-  '\x052e'# -> unI64 1327
-  '\x0531'# -> unI64 1377
-  '\x0532'# -> unI64 1378
-  '\x0533'# -> unI64 1379
-  '\x0534'# -> unI64 1380
-  '\x0535'# -> unI64 1381
-  '\x0536'# -> unI64 1382
-  '\x0537'# -> unI64 1383
-  '\x0538'# -> unI64 1384
-  '\x0539'# -> unI64 1385
-  '\x053a'# -> unI64 1386
-  '\x053b'# -> unI64 1387
-  '\x053c'# -> unI64 1388
-  '\x053d'# -> unI64 1389
-  '\x053e'# -> unI64 1390
-  '\x053f'# -> unI64 1391
-  '\x0540'# -> unI64 1392
-  '\x0541'# -> unI64 1393
-  '\x0542'# -> unI64 1394
-  '\x0543'# -> unI64 1395
-  '\x0544'# -> unI64 1396
-  '\x0545'# -> unI64 1397
-  '\x0546'# -> unI64 1398
-  '\x0547'# -> unI64 1399
-  '\x0548'# -> unI64 1400
-  '\x0549'# -> unI64 1401
-  '\x054a'# -> unI64 1402
-  '\x054b'# -> unI64 1403
-  '\x054c'# -> unI64 1404
-  '\x054d'# -> unI64 1405
-  '\x054e'# -> unI64 1406
-  '\x054f'# -> unI64 1407
-  '\x0550'# -> unI64 1408
-  '\x0551'# -> unI64 1409
-  '\x0552'# -> unI64 1410
-  '\x0553'# -> unI64 1411
-  '\x0554'# -> unI64 1412
-  '\x0555'# -> unI64 1413
-  '\x0556'# -> unI64 1414
-  '\x10a0'# -> unI64 11520
-  '\x10a1'# -> unI64 11521
-  '\x10a2'# -> unI64 11522
-  '\x10a3'# -> unI64 11523
-  '\x10a4'# -> unI64 11524
-  '\x10a5'# -> unI64 11525
-  '\x10a6'# -> unI64 11526
-  '\x10a7'# -> unI64 11527
-  '\x10a8'# -> unI64 11528
-  '\x10a9'# -> unI64 11529
-  '\x10aa'# -> unI64 11530
-  '\x10ab'# -> unI64 11531
-  '\x10ac'# -> unI64 11532
-  '\x10ad'# -> unI64 11533
-  '\x10ae'# -> unI64 11534
-  '\x10af'# -> unI64 11535
-  '\x10b0'# -> unI64 11536
-  '\x10b1'# -> unI64 11537
-  '\x10b2'# -> unI64 11538
-  '\x10b3'# -> unI64 11539
-  '\x10b4'# -> unI64 11540
-  '\x10b5'# -> unI64 11541
-  '\x10b6'# -> unI64 11542
-  '\x10b7'# -> unI64 11543
-  '\x10b8'# -> unI64 11544
-  '\x10b9'# -> unI64 11545
-  '\x10ba'# -> unI64 11546
-  '\x10bb'# -> unI64 11547
-  '\x10bc'# -> unI64 11548
-  '\x10bd'# -> unI64 11549
-  '\x10be'# -> unI64 11550
-  '\x10bf'# -> unI64 11551
-  '\x10c0'# -> unI64 11552
-  '\x10c1'# -> unI64 11553
-  '\x10c2'# -> unI64 11554
-  '\x10c3'# -> unI64 11555
-  '\x10c4'# -> unI64 11556
-  '\x10c5'# -> unI64 11557
-  '\x10c7'# -> unI64 11559
-  '\x10cd'# -> unI64 11565
-  '\x13a0'# -> unI64 43888
-  '\x13a1'# -> unI64 43889
-  '\x13a2'# -> unI64 43890
-  '\x13a3'# -> unI64 43891
-  '\x13a4'# -> unI64 43892
-  '\x13a5'# -> unI64 43893
-  '\x13a6'# -> unI64 43894
-  '\x13a7'# -> unI64 43895
-  '\x13a8'# -> unI64 43896
-  '\x13a9'# -> unI64 43897
-  '\x13aa'# -> unI64 43898
-  '\x13ab'# -> unI64 43899
-  '\x13ac'# -> unI64 43900
-  '\x13ad'# -> unI64 43901
-  '\x13ae'# -> unI64 43902
-  '\x13af'# -> unI64 43903
-  '\x13b0'# -> unI64 43904
-  '\x13b1'# -> unI64 43905
-  '\x13b2'# -> unI64 43906
-  '\x13b3'# -> unI64 43907
-  '\x13b4'# -> unI64 43908
-  '\x13b5'# -> unI64 43909
-  '\x13b6'# -> unI64 43910
-  '\x13b7'# -> unI64 43911
-  '\x13b8'# -> unI64 43912
-  '\x13b9'# -> unI64 43913
-  '\x13ba'# -> unI64 43914
-  '\x13bb'# -> unI64 43915
-  '\x13bc'# -> unI64 43916
-  '\x13bd'# -> unI64 43917
-  '\x13be'# -> unI64 43918
-  '\x13bf'# -> unI64 43919
-  '\x13c0'# -> unI64 43920
-  '\x13c1'# -> unI64 43921
-  '\x13c2'# -> unI64 43922
-  '\x13c3'# -> unI64 43923
-  '\x13c4'# -> unI64 43924
-  '\x13c5'# -> unI64 43925
-  '\x13c6'# -> unI64 43926
-  '\x13c7'# -> unI64 43927
-  '\x13c8'# -> unI64 43928
-  '\x13c9'# -> unI64 43929
-  '\x13ca'# -> unI64 43930
-  '\x13cb'# -> unI64 43931
-  '\x13cc'# -> unI64 43932
-  '\x13cd'# -> unI64 43933
-  '\x13ce'# -> unI64 43934
-  '\x13cf'# -> unI64 43935
-  '\x13d0'# -> unI64 43936
-  '\x13d1'# -> unI64 43937
-  '\x13d2'# -> unI64 43938
-  '\x13d3'# -> unI64 43939
-  '\x13d4'# -> unI64 43940
-  '\x13d5'# -> unI64 43941
-  '\x13d6'# -> unI64 43942
-  '\x13d7'# -> unI64 43943
-  '\x13d8'# -> unI64 43944
-  '\x13d9'# -> unI64 43945
-  '\x13da'# -> unI64 43946
-  '\x13db'# -> unI64 43947
-  '\x13dc'# -> unI64 43948
-  '\x13dd'# -> unI64 43949
-  '\x13de'# -> unI64 43950
-  '\x13df'# -> unI64 43951
-  '\x13e0'# -> unI64 43952
-  '\x13e1'# -> unI64 43953
-  '\x13e2'# -> unI64 43954
-  '\x13e3'# -> unI64 43955
-  '\x13e4'# -> unI64 43956
-  '\x13e5'# -> unI64 43957
-  '\x13e6'# -> unI64 43958
-  '\x13e7'# -> unI64 43959
-  '\x13e8'# -> unI64 43960
-  '\x13e9'# -> unI64 43961
-  '\x13ea'# -> unI64 43962
-  '\x13eb'# -> unI64 43963
-  '\x13ec'# -> unI64 43964
-  '\x13ed'# -> unI64 43965
-  '\x13ee'# -> unI64 43966
-  '\x13ef'# -> unI64 43967
-  '\x13f0'# -> unI64 5112
-  '\x13f1'# -> unI64 5113
-  '\x13f2'# -> unI64 5114
-  '\x13f3'# -> unI64 5115
-  '\x13f4'# -> unI64 5116
-  '\x13f5'# -> unI64 5117
-  '\x1c90'# -> unI64 4304
-  '\x1c91'# -> unI64 4305
-  '\x1c92'# -> unI64 4306
-  '\x1c93'# -> unI64 4307
-  '\x1c94'# -> unI64 4308
-  '\x1c95'# -> unI64 4309
-  '\x1c96'# -> unI64 4310
-  '\x1c97'# -> unI64 4311
-  '\x1c98'# -> unI64 4312
-  '\x1c99'# -> unI64 4313
-  '\x1c9a'# -> unI64 4314
-  '\x1c9b'# -> unI64 4315
-  '\x1c9c'# -> unI64 4316
-  '\x1c9d'# -> unI64 4317
-  '\x1c9e'# -> unI64 4318
-  '\x1c9f'# -> unI64 4319
-  '\x1ca0'# -> unI64 4320
-  '\x1ca1'# -> unI64 4321
-  '\x1ca2'# -> unI64 4322
-  '\x1ca3'# -> unI64 4323
-  '\x1ca4'# -> unI64 4324
-  '\x1ca5'# -> unI64 4325
-  '\x1ca6'# -> unI64 4326
-  '\x1ca7'# -> unI64 4327
-  '\x1ca8'# -> unI64 4328
-  '\x1ca9'# -> unI64 4329
-  '\x1caa'# -> unI64 4330
-  '\x1cab'# -> unI64 4331
-  '\x1cac'# -> unI64 4332
-  '\x1cad'# -> unI64 4333
-  '\x1cae'# -> unI64 4334
-  '\x1caf'# -> unI64 4335
-  '\x1cb0'# -> unI64 4336
-  '\x1cb1'# -> unI64 4337
-  '\x1cb2'# -> unI64 4338
-  '\x1cb3'# -> unI64 4339
-  '\x1cb4'# -> unI64 4340
-  '\x1cb5'# -> unI64 4341
-  '\x1cb6'# -> unI64 4342
-  '\x1cb7'# -> unI64 4343
-  '\x1cb8'# -> unI64 4344
-  '\x1cb9'# -> unI64 4345
-  '\x1cba'# -> unI64 4346
-  '\x1cbd'# -> unI64 4349
-  '\x1cbe'# -> unI64 4350
-  '\x1cbf'# -> unI64 4351
-  '\x1e00'# -> unI64 7681
-  '\x1e02'# -> unI64 7683
-  '\x1e04'# -> unI64 7685
-  '\x1e06'# -> unI64 7687
-  '\x1e08'# -> unI64 7689
-  '\x1e0a'# -> unI64 7691
-  '\x1e0c'# -> unI64 7693
-  '\x1e0e'# -> unI64 7695
-  '\x1e10'# -> unI64 7697
-  '\x1e12'# -> unI64 7699
-  '\x1e14'# -> unI64 7701
-  '\x1e16'# -> unI64 7703
-  '\x1e18'# -> unI64 7705
-  '\x1e1a'# -> unI64 7707
-  '\x1e1c'# -> unI64 7709
-  '\x1e1e'# -> unI64 7711
-  '\x1e20'# -> unI64 7713
-  '\x1e22'# -> unI64 7715
-  '\x1e24'# -> unI64 7717
-  '\x1e26'# -> unI64 7719
-  '\x1e28'# -> unI64 7721
-  '\x1e2a'# -> unI64 7723
-  '\x1e2c'# -> unI64 7725
-  '\x1e2e'# -> unI64 7727
-  '\x1e30'# -> unI64 7729
-  '\x1e32'# -> unI64 7731
-  '\x1e34'# -> unI64 7733
-  '\x1e36'# -> unI64 7735
-  '\x1e38'# -> unI64 7737
-  '\x1e3a'# -> unI64 7739
-  '\x1e3c'# -> unI64 7741
-  '\x1e3e'# -> unI64 7743
-  '\x1e40'# -> unI64 7745
-  '\x1e42'# -> unI64 7747
-  '\x1e44'# -> unI64 7749
-  '\x1e46'# -> unI64 7751
-  '\x1e48'# -> unI64 7753
-  '\x1e4a'# -> unI64 7755
-  '\x1e4c'# -> unI64 7757
-  '\x1e4e'# -> unI64 7759
-  '\x1e50'# -> unI64 7761
-  '\x1e52'# -> unI64 7763
-  '\x1e54'# -> unI64 7765
-  '\x1e56'# -> unI64 7767
-  '\x1e58'# -> unI64 7769
-  '\x1e5a'# -> unI64 7771
-  '\x1e5c'# -> unI64 7773
-  '\x1e5e'# -> unI64 7775
-  '\x1e60'# -> unI64 7777
-  '\x1e62'# -> unI64 7779
-  '\x1e64'# -> unI64 7781
-  '\x1e66'# -> unI64 7783
-  '\x1e68'# -> unI64 7785
-  '\x1e6a'# -> unI64 7787
-  '\x1e6c'# -> unI64 7789
-  '\x1e6e'# -> unI64 7791
-  '\x1e70'# -> unI64 7793
-  '\x1e72'# -> unI64 7795
-  '\x1e74'# -> unI64 7797
-  '\x1e76'# -> unI64 7799
-  '\x1e78'# -> unI64 7801
-  '\x1e7a'# -> unI64 7803
-  '\x1e7c'# -> unI64 7805
-  '\x1e7e'# -> unI64 7807
-  '\x1e80'# -> unI64 7809
-  '\x1e82'# -> unI64 7811
-  '\x1e84'# -> unI64 7813
-  '\x1e86'# -> unI64 7815
-  '\x1e88'# -> unI64 7817
-  '\x1e8a'# -> unI64 7819
-  '\x1e8c'# -> unI64 7821
-  '\x1e8e'# -> unI64 7823
-  '\x1e90'# -> unI64 7825
-  '\x1e92'# -> unI64 7827
-  '\x1e94'# -> unI64 7829
-  '\x1ea0'# -> unI64 7841
-  '\x1ea2'# -> unI64 7843
-  '\x1ea4'# -> unI64 7845
-  '\x1ea6'# -> unI64 7847
-  '\x1ea8'# -> unI64 7849
-  '\x1eaa'# -> unI64 7851
-  '\x1eac'# -> unI64 7853
-  '\x1eae'# -> unI64 7855
-  '\x1eb0'# -> unI64 7857
-  '\x1eb2'# -> unI64 7859
-  '\x1eb4'# -> unI64 7861
-  '\x1eb6'# -> unI64 7863
-  '\x1eb8'# -> unI64 7865
-  '\x1eba'# -> unI64 7867
-  '\x1ebc'# -> unI64 7869
-  '\x1ebe'# -> unI64 7871
-  '\x1ec0'# -> unI64 7873
-  '\x1ec2'# -> unI64 7875
-  '\x1ec4'# -> unI64 7877
-  '\x1ec6'# -> unI64 7879
-  '\x1ec8'# -> unI64 7881
-  '\x1eca'# -> unI64 7883
-  '\x1ecc'# -> unI64 7885
-  '\x1ece'# -> unI64 7887
-  '\x1ed0'# -> unI64 7889
-  '\x1ed2'# -> unI64 7891
-  '\x1ed4'# -> unI64 7893
-  '\x1ed6'# -> unI64 7895
-  '\x1ed8'# -> unI64 7897
-  '\x1eda'# -> unI64 7899
-  '\x1edc'# -> unI64 7901
-  '\x1ede'# -> unI64 7903
-  '\x1ee0'# -> unI64 7905
-  '\x1ee2'# -> unI64 7907
-  '\x1ee4'# -> unI64 7909
-  '\x1ee6'# -> unI64 7911
-  '\x1ee8'# -> unI64 7913
-  '\x1eea'# -> unI64 7915
-  '\x1eec'# -> unI64 7917
-  '\x1eee'# -> unI64 7919
-  '\x1ef0'# -> unI64 7921
-  '\x1ef2'# -> unI64 7923
-  '\x1ef4'# -> unI64 7925
-  '\x1ef6'# -> unI64 7927
-  '\x1ef8'# -> unI64 7929
-  '\x1efa'# -> unI64 7931
-  '\x1efc'# -> unI64 7933
-  '\x1efe'# -> unI64 7935
-  '\x1f08'# -> unI64 7936
-  '\x1f09'# -> unI64 7937
-  '\x1f0a'# -> unI64 7938
-  '\x1f0b'# -> unI64 7939
-  '\x1f0c'# -> unI64 7940
-  '\x1f0d'# -> unI64 7941
-  '\x1f0e'# -> unI64 7942
-  '\x1f0f'# -> unI64 7943
-  '\x1f18'# -> unI64 7952
-  '\x1f19'# -> unI64 7953
-  '\x1f1a'# -> unI64 7954
-  '\x1f1b'# -> unI64 7955
-  '\x1f1c'# -> unI64 7956
-  '\x1f1d'# -> unI64 7957
-  '\x1f28'# -> unI64 7968
-  '\x1f29'# -> unI64 7969
-  '\x1f2a'# -> unI64 7970
-  '\x1f2b'# -> unI64 7971
-  '\x1f2c'# -> unI64 7972
-  '\x1f2d'# -> unI64 7973
-  '\x1f2e'# -> unI64 7974
-  '\x1f2f'# -> unI64 7975
-  '\x1f38'# -> unI64 7984
-  '\x1f39'# -> unI64 7985
-  '\x1f3a'# -> unI64 7986
-  '\x1f3b'# -> unI64 7987
-  '\x1f3c'# -> unI64 7988
-  '\x1f3d'# -> unI64 7989
-  '\x1f3e'# -> unI64 7990
-  '\x1f3f'# -> unI64 7991
-  '\x1f48'# -> unI64 8000
-  '\x1f49'# -> unI64 8001
-  '\x1f4a'# -> unI64 8002
-  '\x1f4b'# -> unI64 8003
-  '\x1f4c'# -> unI64 8004
-  '\x1f4d'# -> unI64 8005
-  '\x1f59'# -> unI64 8017
-  '\x1f5b'# -> unI64 8019
-  '\x1f5d'# -> unI64 8021
-  '\x1f5f'# -> unI64 8023
-  '\x1f68'# -> unI64 8032
-  '\x1f69'# -> unI64 8033
-  '\x1f6a'# -> unI64 8034
-  '\x1f6b'# -> unI64 8035
-  '\x1f6c'# -> unI64 8036
-  '\x1f6d'# -> unI64 8037
-  '\x1f6e'# -> unI64 8038
-  '\x1f6f'# -> unI64 8039
-  '\x1fb8'# -> unI64 8112
-  '\x1fb9'# -> unI64 8113
-  '\x1fba'# -> unI64 8048
-  '\x1fbb'# -> unI64 8049
-  '\x1fc8'# -> unI64 8050
-  '\x1fc9'# -> unI64 8051
-  '\x1fca'# -> unI64 8052
-  '\x1fcb'# -> unI64 8053
-  '\x1fd8'# -> unI64 8144
-  '\x1fd9'# -> unI64 8145
-  '\x1fda'# -> unI64 8054
-  '\x1fdb'# -> unI64 8055
-  '\x1fe8'# -> unI64 8160
-  '\x1fe9'# -> unI64 8161
-  '\x1fea'# -> unI64 8058
-  '\x1feb'# -> unI64 8059
-  '\x1fec'# -> unI64 8165
-  '\x1ff8'# -> unI64 8056
-  '\x1ff9'# -> unI64 8057
-  '\x1ffa'# -> unI64 8060
-  '\x1ffb'# -> unI64 8061
-  '\x2126'# -> unI64 969
-  '\x212a'# -> unI64 107
-  '\x212b'# -> unI64 229
-  '\x2132'# -> unI64 8526
-  '\x2160'# -> unI64 8560
-  '\x2161'# -> unI64 8561
-  '\x2162'# -> unI64 8562
-  '\x2163'# -> unI64 8563
-  '\x2164'# -> unI64 8564
-  '\x2165'# -> unI64 8565
-  '\x2166'# -> unI64 8566
-  '\x2167'# -> unI64 8567
-  '\x2168'# -> unI64 8568
-  '\x2169'# -> unI64 8569
-  '\x216a'# -> unI64 8570
-  '\x216b'# -> unI64 8571
-  '\x216c'# -> unI64 8572
-  '\x216d'# -> unI64 8573
-  '\x216e'# -> unI64 8574
-  '\x216f'# -> unI64 8575
-  '\x2183'# -> unI64 8580
-  '\x24b6'# -> unI64 9424
-  '\x24b7'# -> unI64 9425
-  '\x24b8'# -> unI64 9426
-  '\x24b9'# -> unI64 9427
-  '\x24ba'# -> unI64 9428
-  '\x24bb'# -> unI64 9429
-  '\x24bc'# -> unI64 9430
-  '\x24bd'# -> unI64 9431
-  '\x24be'# -> unI64 9432
-  '\x24bf'# -> unI64 9433
-  '\x24c0'# -> unI64 9434
-  '\x24c1'# -> unI64 9435
-  '\x24c2'# -> unI64 9436
-  '\x24c3'# -> unI64 9437
-  '\x24c4'# -> unI64 9438
-  '\x24c5'# -> unI64 9439
-  '\x24c6'# -> unI64 9440
-  '\x24c7'# -> unI64 9441
-  '\x24c8'# -> unI64 9442
-  '\x24c9'# -> unI64 9443
-  '\x24ca'# -> unI64 9444
-  '\x24cb'# -> unI64 9445
-  '\x24cc'# -> unI64 9446
-  '\x24cd'# -> unI64 9447
-  '\x24ce'# -> unI64 9448
-  '\x24cf'# -> unI64 9449
-  '\x2c00'# -> unI64 11312
-  '\x2c01'# -> unI64 11313
-  '\x2c02'# -> unI64 11314
-  '\x2c03'# -> unI64 11315
-  '\x2c04'# -> unI64 11316
-  '\x2c05'# -> unI64 11317
-  '\x2c06'# -> unI64 11318
-  '\x2c07'# -> unI64 11319
-  '\x2c08'# -> unI64 11320
-  '\x2c09'# -> unI64 11321
-  '\x2c0a'# -> unI64 11322
-  '\x2c0b'# -> unI64 11323
-  '\x2c0c'# -> unI64 11324
-  '\x2c0d'# -> unI64 11325
-  '\x2c0e'# -> unI64 11326
-  '\x2c0f'# -> unI64 11327
-  '\x2c10'# -> unI64 11328
-  '\x2c11'# -> unI64 11329
-  '\x2c12'# -> unI64 11330
-  '\x2c13'# -> unI64 11331
-  '\x2c14'# -> unI64 11332
-  '\x2c15'# -> unI64 11333
-  '\x2c16'# -> unI64 11334
-  '\x2c17'# -> unI64 11335
-  '\x2c18'# -> unI64 11336
-  '\x2c19'# -> unI64 11337
-  '\x2c1a'# -> unI64 11338
-  '\x2c1b'# -> unI64 11339
-  '\x2c1c'# -> unI64 11340
-  '\x2c1d'# -> unI64 11341
-  '\x2c1e'# -> unI64 11342
-  '\x2c1f'# -> unI64 11343
-  '\x2c20'# -> unI64 11344
-  '\x2c21'# -> unI64 11345
-  '\x2c22'# -> unI64 11346
-  '\x2c23'# -> unI64 11347
-  '\x2c24'# -> unI64 11348
-  '\x2c25'# -> unI64 11349
-  '\x2c26'# -> unI64 11350
-  '\x2c27'# -> unI64 11351
-  '\x2c28'# -> unI64 11352
-  '\x2c29'# -> unI64 11353
-  '\x2c2a'# -> unI64 11354
-  '\x2c2b'# -> unI64 11355
-  '\x2c2c'# -> unI64 11356
-  '\x2c2d'# -> unI64 11357
-  '\x2c2e'# -> unI64 11358
-  '\x2c2f'# -> unI64 11359
-  '\x2c60'# -> unI64 11361
-  '\x2c62'# -> unI64 619
-  '\x2c63'# -> unI64 7549
-  '\x2c64'# -> unI64 637
-  '\x2c67'# -> unI64 11368
-  '\x2c69'# -> unI64 11370
-  '\x2c6b'# -> unI64 11372
-  '\x2c6d'# -> unI64 593
-  '\x2c6e'# -> unI64 625
-  '\x2c6f'# -> unI64 592
-  '\x2c70'# -> unI64 594
-  '\x2c72'# -> unI64 11379
-  '\x2c75'# -> unI64 11382
-  '\x2c7e'# -> unI64 575
-  '\x2c7f'# -> unI64 576
-  '\x2c80'# -> unI64 11393
-  '\x2c82'# -> unI64 11395
-  '\x2c84'# -> unI64 11397
-  '\x2c86'# -> unI64 11399
-  '\x2c88'# -> unI64 11401
-  '\x2c8a'# -> unI64 11403
-  '\x2c8c'# -> unI64 11405
-  '\x2c8e'# -> unI64 11407
-  '\x2c90'# -> unI64 11409
-  '\x2c92'# -> unI64 11411
-  '\x2c94'# -> unI64 11413
-  '\x2c96'# -> unI64 11415
-  '\x2c98'# -> unI64 11417
-  '\x2c9a'# -> unI64 11419
-  '\x2c9c'# -> unI64 11421
-  '\x2c9e'# -> unI64 11423
-  '\x2ca0'# -> unI64 11425
-  '\x2ca2'# -> unI64 11427
-  '\x2ca4'# -> unI64 11429
-  '\x2ca6'# -> unI64 11431
-  '\x2ca8'# -> unI64 11433
-  '\x2caa'# -> unI64 11435
-  '\x2cac'# -> unI64 11437
-  '\x2cae'# -> unI64 11439
-  '\x2cb0'# -> unI64 11441
-  '\x2cb2'# -> unI64 11443
-  '\x2cb4'# -> unI64 11445
-  '\x2cb6'# -> unI64 11447
-  '\x2cb8'# -> unI64 11449
-  '\x2cba'# -> unI64 11451
-  '\x2cbc'# -> unI64 11453
-  '\x2cbe'# -> unI64 11455
-  '\x2cc0'# -> unI64 11457
-  '\x2cc2'# -> unI64 11459
-  '\x2cc4'# -> unI64 11461
-  '\x2cc6'# -> unI64 11463
-  '\x2cc8'# -> unI64 11465
-  '\x2cca'# -> unI64 11467
-  '\x2ccc'# -> unI64 11469
-  '\x2cce'# -> unI64 11471
-  '\x2cd0'# -> unI64 11473
-  '\x2cd2'# -> unI64 11475
-  '\x2cd4'# -> unI64 11477
-  '\x2cd6'# -> unI64 11479
-  '\x2cd8'# -> unI64 11481
-  '\x2cda'# -> unI64 11483
-  '\x2cdc'# -> unI64 11485
-  '\x2cde'# -> unI64 11487
-  '\x2ce0'# -> unI64 11489
-  '\x2ce2'# -> unI64 11491
-  '\x2ceb'# -> unI64 11500
-  '\x2ced'# -> unI64 11502
-  '\x2cf2'# -> unI64 11507
-  '\xa640'# -> unI64 42561
-  '\xa642'# -> unI64 42563
-  '\xa644'# -> unI64 42565
-  '\xa646'# -> unI64 42567
-  '\xa648'# -> unI64 42569
-  '\xa64a'# -> unI64 42571
-  '\xa64c'# -> unI64 42573
-  '\xa64e'# -> unI64 42575
-  '\xa650'# -> unI64 42577
-  '\xa652'# -> unI64 42579
-  '\xa654'# -> unI64 42581
-  '\xa656'# -> unI64 42583
-  '\xa658'# -> unI64 42585
-  '\xa65a'# -> unI64 42587
-  '\xa65c'# -> unI64 42589
-  '\xa65e'# -> unI64 42591
-  '\xa660'# -> unI64 42593
-  '\xa662'# -> unI64 42595
-  '\xa664'# -> unI64 42597
-  '\xa666'# -> unI64 42599
-  '\xa668'# -> unI64 42601
-  '\xa66a'# -> unI64 42603
-  '\xa66c'# -> unI64 42605
-  '\xa680'# -> unI64 42625
-  '\xa682'# -> unI64 42627
-  '\xa684'# -> unI64 42629
-  '\xa686'# -> unI64 42631
-  '\xa688'# -> unI64 42633
-  '\xa68a'# -> unI64 42635
-  '\xa68c'# -> unI64 42637
-  '\xa68e'# -> unI64 42639
-  '\xa690'# -> unI64 42641
-  '\xa692'# -> unI64 42643
-  '\xa694'# -> unI64 42645
-  '\xa696'# -> unI64 42647
-  '\xa698'# -> unI64 42649
-  '\xa69a'# -> unI64 42651
-  '\xa722'# -> unI64 42787
-  '\xa724'# -> unI64 42789
-  '\xa726'# -> unI64 42791
-  '\xa728'# -> unI64 42793
-  '\xa72a'# -> unI64 42795
-  '\xa72c'# -> unI64 42797
-  '\xa72e'# -> unI64 42799
-  '\xa732'# -> unI64 42803
-  '\xa734'# -> unI64 42805
-  '\xa736'# -> unI64 42807
-  '\xa738'# -> unI64 42809
-  '\xa73a'# -> unI64 42811
-  '\xa73c'# -> unI64 42813
-  '\xa73e'# -> unI64 42815
-  '\xa740'# -> unI64 42817
-  '\xa742'# -> unI64 42819
-  '\xa744'# -> unI64 42821
-  '\xa746'# -> unI64 42823
-  '\xa748'# -> unI64 42825
-  '\xa74a'# -> unI64 42827
-  '\xa74c'# -> unI64 42829
-  '\xa74e'# -> unI64 42831
-  '\xa750'# -> unI64 42833
-  '\xa752'# -> unI64 42835
-  '\xa754'# -> unI64 42837
-  '\xa756'# -> unI64 42839
-  '\xa758'# -> unI64 42841
-  '\xa75a'# -> unI64 42843
-  '\xa75c'# -> unI64 42845
-  '\xa75e'# -> unI64 42847
-  '\xa760'# -> unI64 42849
-  '\xa762'# -> unI64 42851
-  '\xa764'# -> unI64 42853
-  '\xa766'# -> unI64 42855
-  '\xa768'# -> unI64 42857
-  '\xa76a'# -> unI64 42859
-  '\xa76c'# -> unI64 42861
-  '\xa76e'# -> unI64 42863
-  '\xa779'# -> unI64 42874
-  '\xa77b'# -> unI64 42876
-  '\xa77d'# -> unI64 7545
-  '\xa77e'# -> unI64 42879
-  '\xa780'# -> unI64 42881
-  '\xa782'# -> unI64 42883
-  '\xa784'# -> unI64 42885
-  '\xa786'# -> unI64 42887
-  '\xa78b'# -> unI64 42892
-  '\xa78d'# -> unI64 613
-  '\xa790'# -> unI64 42897
-  '\xa792'# -> unI64 42899
-  '\xa796'# -> unI64 42903
-  '\xa798'# -> unI64 42905
-  '\xa79a'# -> unI64 42907
-  '\xa79c'# -> unI64 42909
-  '\xa79e'# -> unI64 42911
-  '\xa7a0'# -> unI64 42913
-  '\xa7a2'# -> unI64 42915
-  '\xa7a4'# -> unI64 42917
-  '\xa7a6'# -> unI64 42919
-  '\xa7a8'# -> unI64 42921
-  '\xa7aa'# -> unI64 614
-  '\xa7ab'# -> unI64 604
-  '\xa7ac'# -> unI64 609
-  '\xa7ad'# -> unI64 620
-  '\xa7ae'# -> unI64 618
-  '\xa7b0'# -> unI64 670
-  '\xa7b1'# -> unI64 647
-  '\xa7b2'# -> unI64 669
-  '\xa7b3'# -> unI64 43859
-  '\xa7b4'# -> unI64 42933
-  '\xa7b6'# -> unI64 42935
-  '\xa7b8'# -> unI64 42937
-  '\xa7ba'# -> unI64 42939
-  '\xa7bc'# -> unI64 42941
-  '\xa7be'# -> unI64 42943
-  '\xa7c0'# -> unI64 42945
-  '\xa7c2'# -> unI64 42947
-  '\xa7c4'# -> unI64 42900
-  '\xa7c5'# -> unI64 642
-  '\xa7c6'# -> unI64 7566
-  '\xa7c7'# -> unI64 42952
-  '\xa7c9'# -> unI64 42954
-  '\xa7d0'# -> unI64 42961
-  '\xa7d6'# -> unI64 42967
-  '\xa7d8'# -> unI64 42969
-  '\xa7f5'# -> unI64 42998
-  '\xff21'# -> unI64 65345
-  '\xff22'# -> unI64 65346
-  '\xff23'# -> unI64 65347
-  '\xff24'# -> unI64 65348
-  '\xff25'# -> unI64 65349
-  '\xff26'# -> unI64 65350
-  '\xff27'# -> unI64 65351
-  '\xff28'# -> unI64 65352
-  '\xff29'# -> unI64 65353
-  '\xff2a'# -> unI64 65354
-  '\xff2b'# -> unI64 65355
-  '\xff2c'# -> unI64 65356
-  '\xff2d'# -> unI64 65357
-  '\xff2e'# -> unI64 65358
-  '\xff2f'# -> unI64 65359
-  '\xff30'# -> unI64 65360
-  '\xff31'# -> unI64 65361
-  '\xff32'# -> unI64 65362
-  '\xff33'# -> unI64 65363
-  '\xff34'# -> unI64 65364
-  '\xff35'# -> unI64 65365
-  '\xff36'# -> unI64 65366
-  '\xff37'# -> unI64 65367
-  '\xff38'# -> unI64 65368
-  '\xff39'# -> unI64 65369
-  '\xff3a'# -> unI64 65370
-  '\x10400'# -> unI64 66600
-  '\x10401'# -> unI64 66601
-  '\x10402'# -> unI64 66602
-  '\x10403'# -> unI64 66603
-  '\x10404'# -> unI64 66604
-  '\x10405'# -> unI64 66605
-  '\x10406'# -> unI64 66606
-  '\x10407'# -> unI64 66607
-  '\x10408'# -> unI64 66608
-  '\x10409'# -> unI64 66609
-  '\x1040a'# -> unI64 66610
-  '\x1040b'# -> unI64 66611
-  '\x1040c'# -> unI64 66612
-  '\x1040d'# -> unI64 66613
-  '\x1040e'# -> unI64 66614
-  '\x1040f'# -> unI64 66615
-  '\x10410'# -> unI64 66616
-  '\x10411'# -> unI64 66617
-  '\x10412'# -> unI64 66618
-  '\x10413'# -> unI64 66619
-  '\x10414'# -> unI64 66620
-  '\x10415'# -> unI64 66621
-  '\x10416'# -> unI64 66622
-  '\x10417'# -> unI64 66623
-  '\x10418'# -> unI64 66624
-  '\x10419'# -> unI64 66625
-  '\x1041a'# -> unI64 66626
-  '\x1041b'# -> unI64 66627
-  '\x1041c'# -> unI64 66628
-  '\x1041d'# -> unI64 66629
-  '\x1041e'# -> unI64 66630
-  '\x1041f'# -> unI64 66631
-  '\x10420'# -> unI64 66632
-  '\x10421'# -> unI64 66633
-  '\x10422'# -> unI64 66634
-  '\x10423'# -> unI64 66635
-  '\x10424'# -> unI64 66636
-  '\x10425'# -> unI64 66637
-  '\x10426'# -> unI64 66638
-  '\x10427'# -> unI64 66639
-  '\x104b0'# -> unI64 66776
-  '\x104b1'# -> unI64 66777
-  '\x104b2'# -> unI64 66778
-  '\x104b3'# -> unI64 66779
-  '\x104b4'# -> unI64 66780
-  '\x104b5'# -> unI64 66781
-  '\x104b6'# -> unI64 66782
-  '\x104b7'# -> unI64 66783
-  '\x104b8'# -> unI64 66784
-  '\x104b9'# -> unI64 66785
-  '\x104ba'# -> unI64 66786
-  '\x104bb'# -> unI64 66787
-  '\x104bc'# -> unI64 66788
-  '\x104bd'# -> unI64 66789
-  '\x104be'# -> unI64 66790
-  '\x104bf'# -> unI64 66791
-  '\x104c0'# -> unI64 66792
-  '\x104c1'# -> unI64 66793
-  '\x104c2'# -> unI64 66794
-  '\x104c3'# -> unI64 66795
-  '\x104c4'# -> unI64 66796
-  '\x104c5'# -> unI64 66797
-  '\x104c6'# -> unI64 66798
-  '\x104c7'# -> unI64 66799
-  '\x104c8'# -> unI64 66800
-  '\x104c9'# -> unI64 66801
-  '\x104ca'# -> unI64 66802
-  '\x104cb'# -> unI64 66803
-  '\x104cc'# -> unI64 66804
-  '\x104cd'# -> unI64 66805
-  '\x104ce'# -> unI64 66806
-  '\x104cf'# -> unI64 66807
-  '\x104d0'# -> unI64 66808
-  '\x104d1'# -> unI64 66809
-  '\x104d2'# -> unI64 66810
-  '\x104d3'# -> unI64 66811
-  '\x10570'# -> unI64 66967
-  '\x10571'# -> unI64 66968
-  '\x10572'# -> unI64 66969
-  '\x10573'# -> unI64 66970
-  '\x10574'# -> unI64 66971
-  '\x10575'# -> unI64 66972
-  '\x10576'# -> unI64 66973
-  '\x10577'# -> unI64 66974
-  '\x10578'# -> unI64 66975
-  '\x10579'# -> unI64 66976
-  '\x1057a'# -> unI64 66977
-  '\x1057c'# -> unI64 66979
-  '\x1057d'# -> unI64 66980
-  '\x1057e'# -> unI64 66981
-  '\x1057f'# -> unI64 66982
-  '\x10580'# -> unI64 66983
-  '\x10581'# -> unI64 66984
-  '\x10582'# -> unI64 66985
-  '\x10583'# -> unI64 66986
-  '\x10584'# -> unI64 66987
-  '\x10585'# -> unI64 66988
-  '\x10586'# -> unI64 66989
-  '\x10587'# -> unI64 66990
-  '\x10588'# -> unI64 66991
-  '\x10589'# -> unI64 66992
-  '\x1058a'# -> unI64 66993
-  '\x1058c'# -> unI64 66995
-  '\x1058d'# -> unI64 66996
-  '\x1058e'# -> unI64 66997
-  '\x1058f'# -> unI64 66998
-  '\x10590'# -> unI64 66999
-  '\x10591'# -> unI64 67000
-  '\x10592'# -> unI64 67001
-  '\x10594'# -> unI64 67003
-  '\x10595'# -> unI64 67004
-  '\x10c80'# -> unI64 68800
-  '\x10c81'# -> unI64 68801
-  '\x10c82'# -> unI64 68802
-  '\x10c83'# -> unI64 68803
-  '\x10c84'# -> unI64 68804
-  '\x10c85'# -> unI64 68805
-  '\x10c86'# -> unI64 68806
-  '\x10c87'# -> unI64 68807
-  '\x10c88'# -> unI64 68808
-  '\x10c89'# -> unI64 68809
-  '\x10c8a'# -> unI64 68810
-  '\x10c8b'# -> unI64 68811
-  '\x10c8c'# -> unI64 68812
-  '\x10c8d'# -> unI64 68813
-  '\x10c8e'# -> unI64 68814
-  '\x10c8f'# -> unI64 68815
-  '\x10c90'# -> unI64 68816
-  '\x10c91'# -> unI64 68817
-  '\x10c92'# -> unI64 68818
-  '\x10c93'# -> unI64 68819
-  '\x10c94'# -> unI64 68820
-  '\x10c95'# -> unI64 68821
-  '\x10c96'# -> unI64 68822
-  '\x10c97'# -> unI64 68823
-  '\x10c98'# -> unI64 68824
-  '\x10c99'# -> unI64 68825
-  '\x10c9a'# -> unI64 68826
-  '\x10c9b'# -> unI64 68827
-  '\x10c9c'# -> unI64 68828
-  '\x10c9d'# -> unI64 68829
-  '\x10c9e'# -> unI64 68830
-  '\x10c9f'# -> unI64 68831
-  '\x10ca0'# -> unI64 68832
-  '\x10ca1'# -> unI64 68833
-  '\x10ca2'# -> unI64 68834
-  '\x10ca3'# -> unI64 68835
-  '\x10ca4'# -> unI64 68836
-  '\x10ca5'# -> unI64 68837
-  '\x10ca6'# -> unI64 68838
-  '\x10ca7'# -> unI64 68839
-  '\x10ca8'# -> unI64 68840
-  '\x10ca9'# -> unI64 68841
-  '\x10caa'# -> unI64 68842
-  '\x10cab'# -> unI64 68843
-  '\x10cac'# -> unI64 68844
-  '\x10cad'# -> unI64 68845
-  '\x10cae'# -> unI64 68846
-  '\x10caf'# -> unI64 68847
-  '\x10cb0'# -> unI64 68848
-  '\x10cb1'# -> unI64 68849
-  '\x10cb2'# -> unI64 68850
-  '\x118a0'# -> unI64 71872
-  '\x118a1'# -> unI64 71873
-  '\x118a2'# -> unI64 71874
-  '\x118a3'# -> unI64 71875
-  '\x118a4'# -> unI64 71876
-  '\x118a5'# -> unI64 71877
-  '\x118a6'# -> unI64 71878
-  '\x118a7'# -> unI64 71879
-  '\x118a8'# -> unI64 71880
-  '\x118a9'# -> unI64 71881
-  '\x118aa'# -> unI64 71882
-  '\x118ab'# -> unI64 71883
-  '\x118ac'# -> unI64 71884
-  '\x118ad'# -> unI64 71885
-  '\x118ae'# -> unI64 71886
-  '\x118af'# -> unI64 71887
-  '\x118b0'# -> unI64 71888
-  '\x118b1'# -> unI64 71889
-  '\x118b2'# -> unI64 71890
-  '\x118b3'# -> unI64 71891
-  '\x118b4'# -> unI64 71892
-  '\x118b5'# -> unI64 71893
-  '\x118b6'# -> unI64 71894
-  '\x118b7'# -> unI64 71895
-  '\x118b8'# -> unI64 71896
-  '\x118b9'# -> unI64 71897
-  '\x118ba'# -> unI64 71898
-  '\x118bb'# -> unI64 71899
-  '\x118bc'# -> unI64 71900
-  '\x118bd'# -> unI64 71901
-  '\x118be'# -> unI64 71902
-  '\x118bf'# -> unI64 71903
-  '\x16e40'# -> unI64 93792
-  '\x16e41'# -> unI64 93793
-  '\x16e42'# -> unI64 93794
-  '\x16e43'# -> unI64 93795
-  '\x16e44'# -> unI64 93796
-  '\x16e45'# -> unI64 93797
-  '\x16e46'# -> unI64 93798
-  '\x16e47'# -> unI64 93799
-  '\x16e48'# -> unI64 93800
-  '\x16e49'# -> unI64 93801
-  '\x16e4a'# -> unI64 93802
-  '\x16e4b'# -> unI64 93803
-  '\x16e4c'# -> unI64 93804
-  '\x16e4d'# -> unI64 93805
-  '\x16e4e'# -> unI64 93806
-  '\x16e4f'# -> unI64 93807
-  '\x16e50'# -> unI64 93808
-  '\x16e51'# -> unI64 93809
-  '\x16e52'# -> unI64 93810
-  '\x16e53'# -> unI64 93811
-  '\x16e54'# -> unI64 93812
-  '\x16e55'# -> unI64 93813
-  '\x16e56'# -> unI64 93814
-  '\x16e57'# -> unI64 93815
-  '\x16e58'# -> unI64 93816
-  '\x16e59'# -> unI64 93817
-  '\x16e5a'# -> unI64 93818
-  '\x16e5b'# -> unI64 93819
-  '\x16e5c'# -> unI64 93820
-  '\x16e5d'# -> unI64 93821
-  '\x16e5e'# -> unI64 93822
-  '\x16e5f'# -> unI64 93823
-  '\x1e900'# -> unI64 125218
-  '\x1e901'# -> unI64 125219
-  '\x1e902'# -> unI64 125220
-  '\x1e903'# -> unI64 125221
-  '\x1e904'# -> unI64 125222
-  '\x1e905'# -> unI64 125223
-  '\x1e906'# -> unI64 125224
-  '\x1e907'# -> unI64 125225
-  '\x1e908'# -> unI64 125226
-  '\x1e909'# -> unI64 125227
-  '\x1e90a'# -> unI64 125228
-  '\x1e90b'# -> unI64 125229
-  '\x1e90c'# -> unI64 125230
-  '\x1e90d'# -> unI64 125231
-  '\x1e90e'# -> unI64 125232
-  '\x1e90f'# -> unI64 125233
-  '\x1e910'# -> unI64 125234
-  '\x1e911'# -> unI64 125235
-  '\x1e912'# -> unI64 125236
-  '\x1e913'# -> unI64 125237
-  '\x1e914'# -> unI64 125238
-  '\x1e915'# -> unI64 125239
-  '\x1e916'# -> unI64 125240
-  '\x1e917'# -> unI64 125241
-  '\x1e918'# -> unI64 125242
-  '\x1e919'# -> unI64 125243
-  '\x1e91a'# -> unI64 125244
-  '\x1e91b'# -> unI64 125245
-  '\x1e91c'# -> unI64 125246
-  '\x1e91d'# -> unI64 125247
-  '\x1e91e'# -> unI64 125248
-  '\x1e91f'# -> unI64 125249
-  '\x1e920'# -> unI64 125250
+  -- LATIN CAPITAL LETTER A
+  '\x0041'# -> unI64 97
+  -- LATIN CAPITAL LETTER B
+  '\x0042'# -> unI64 98
+  -- LATIN CAPITAL LETTER C
+  '\x0043'# -> unI64 99
+  -- LATIN CAPITAL LETTER D
+  '\x0044'# -> unI64 100
+  -- LATIN CAPITAL LETTER E
+  '\x0045'# -> unI64 101
+  -- LATIN CAPITAL LETTER F
+  '\x0046'# -> unI64 102
+  -- LATIN CAPITAL LETTER G
+  '\x0047'# -> unI64 103
+  -- LATIN CAPITAL LETTER H
+  '\x0048'# -> unI64 104
+  -- LATIN CAPITAL LETTER I
+  '\x0049'# -> unI64 105
+  -- LATIN CAPITAL LETTER J
+  '\x004a'# -> unI64 106
+  -- LATIN CAPITAL LETTER K
+  '\x004b'# -> unI64 107
+  -- LATIN CAPITAL LETTER L
+  '\x004c'# -> unI64 108
+  -- LATIN CAPITAL LETTER M
+  '\x004d'# -> unI64 109
+  -- LATIN CAPITAL LETTER N
+  '\x004e'# -> unI64 110
+  -- LATIN CAPITAL LETTER O
+  '\x004f'# -> unI64 111
+  -- LATIN CAPITAL LETTER P
+  '\x0050'# -> unI64 112
+  -- LATIN CAPITAL LETTER Q
+  '\x0051'# -> unI64 113
+  -- LATIN CAPITAL LETTER R
+  '\x0052'# -> unI64 114
+  -- LATIN CAPITAL LETTER S
+  '\x0053'# -> unI64 115
+  -- LATIN CAPITAL LETTER T
+  '\x0054'# -> unI64 116
+  -- LATIN CAPITAL LETTER U
+  '\x0055'# -> unI64 117
+  -- LATIN CAPITAL LETTER V
+  '\x0056'# -> unI64 118
+  -- LATIN CAPITAL LETTER W
+  '\x0057'# -> unI64 119
+  -- LATIN CAPITAL LETTER X
+  '\x0058'# -> unI64 120
+  -- LATIN CAPITAL LETTER Y
+  '\x0059'# -> unI64 121
+  -- LATIN CAPITAL LETTER Z
+  '\x005a'# -> unI64 122
+  -- MICRO SIGN
+  '\x00b5'# -> unI64 956
+  -- LATIN CAPITAL LETTER A WITH GRAVE
+  '\x00c0'# -> unI64 224
+  -- LATIN CAPITAL LETTER A WITH ACUTE
+  '\x00c1'# -> unI64 225
+  -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+  '\x00c2'# -> unI64 226
+  -- LATIN CAPITAL LETTER A WITH TILDE
+  '\x00c3'# -> unI64 227
+  -- LATIN CAPITAL LETTER A WITH DIAERESIS
+  '\x00c4'# -> unI64 228
+  -- LATIN CAPITAL LETTER A WITH RING ABOVE
+  '\x00c5'# -> unI64 229
+  -- LATIN CAPITAL LETTER AE
+  '\x00c6'# -> unI64 230
+  -- LATIN CAPITAL LETTER C WITH CEDILLA
+  '\x00c7'# -> unI64 231
+  -- LATIN CAPITAL LETTER E WITH GRAVE
+  '\x00c8'# -> unI64 232
+  -- LATIN CAPITAL LETTER E WITH ACUTE
+  '\x00c9'# -> unI64 233
+  -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+  '\x00ca'# -> unI64 234
+  -- LATIN CAPITAL LETTER E WITH DIAERESIS
+  '\x00cb'# -> unI64 235
+  -- LATIN CAPITAL LETTER I WITH GRAVE
+  '\x00cc'# -> unI64 236
+  -- LATIN CAPITAL LETTER I WITH ACUTE
+  '\x00cd'# -> unI64 237
+  -- LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+  '\x00ce'# -> unI64 238
+  -- LATIN CAPITAL LETTER I WITH DIAERESIS
+  '\x00cf'# -> unI64 239
+  -- LATIN CAPITAL LETTER ETH
+  '\x00d0'# -> unI64 240
+  -- LATIN CAPITAL LETTER N WITH TILDE
+  '\x00d1'# -> unI64 241
+  -- LATIN CAPITAL LETTER O WITH GRAVE
+  '\x00d2'# -> unI64 242
+  -- LATIN CAPITAL LETTER O WITH ACUTE
+  '\x00d3'# -> unI64 243
+  -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+  '\x00d4'# -> unI64 244
+  -- LATIN CAPITAL LETTER O WITH TILDE
+  '\x00d5'# -> unI64 245
+  -- LATIN CAPITAL LETTER O WITH DIAERESIS
+  '\x00d6'# -> unI64 246
+  -- LATIN CAPITAL LETTER O WITH STROKE
+  '\x00d8'# -> unI64 248
+  -- LATIN CAPITAL LETTER U WITH GRAVE
+  '\x00d9'# -> unI64 249
+  -- LATIN CAPITAL LETTER U WITH ACUTE
+  '\x00da'# -> unI64 250
+  -- LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+  '\x00db'# -> unI64 251
+  -- LATIN CAPITAL LETTER U WITH DIAERESIS
+  '\x00dc'# -> unI64 252
+  -- LATIN CAPITAL LETTER Y WITH ACUTE
+  '\x00dd'# -> unI64 253
+  -- LATIN CAPITAL LETTER THORN
+  '\x00de'# -> unI64 254
+  -- LATIN SMALL LETTER SHARP S
+  '\x00df'# -> unI64 241172595
+  -- LATIN CAPITAL LETTER A WITH MACRON
+  '\x0100'# -> unI64 257
+  -- LATIN CAPITAL LETTER A WITH BREVE
+  '\x0102'# -> unI64 259
+  -- LATIN CAPITAL LETTER A WITH OGONEK
+  '\x0104'# -> unI64 261
+  -- LATIN CAPITAL LETTER C WITH ACUTE
+  '\x0106'# -> unI64 263
+  -- LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+  '\x0108'# -> unI64 265
+  -- LATIN CAPITAL LETTER C WITH DOT ABOVE
+  '\x010a'# -> unI64 267
+  -- LATIN CAPITAL LETTER C WITH CARON
+  '\x010c'# -> unI64 269
+  -- LATIN CAPITAL LETTER D WITH CARON
+  '\x010e'# -> unI64 271
+  -- LATIN CAPITAL LETTER D WITH STROKE
+  '\x0110'# -> unI64 273
+  -- LATIN CAPITAL LETTER E WITH MACRON
+  '\x0112'# -> unI64 275
+  -- LATIN CAPITAL LETTER E WITH BREVE
+  '\x0114'# -> unI64 277
+  -- LATIN CAPITAL LETTER E WITH DOT ABOVE
+  '\x0116'# -> unI64 279
+  -- LATIN CAPITAL LETTER E WITH OGONEK
+  '\x0118'# -> unI64 281
+  -- LATIN CAPITAL LETTER E WITH CARON
+  '\x011a'# -> unI64 283
+  -- LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+  '\x011c'# -> unI64 285
+  -- LATIN CAPITAL LETTER G WITH BREVE
+  '\x011e'# -> unI64 287
+  -- LATIN CAPITAL LETTER G WITH DOT ABOVE
+  '\x0120'# -> unI64 289
+  -- LATIN CAPITAL LETTER G WITH CEDILLA
+  '\x0122'# -> unI64 291
+  -- LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+  '\x0124'# -> unI64 293
+  -- LATIN CAPITAL LETTER H WITH STROKE
+  '\x0126'# -> unI64 295
+  -- LATIN CAPITAL LETTER I WITH TILDE
+  '\x0128'# -> unI64 297
+  -- LATIN CAPITAL LETTER I WITH MACRON
+  '\x012a'# -> unI64 299
+  -- LATIN CAPITAL LETTER I WITH BREVE
+  '\x012c'# -> unI64 301
+  -- LATIN CAPITAL LETTER I WITH OGONEK
+  '\x012e'# -> unI64 303
+  -- LATIN CAPITAL LETTER I WITH DOT ABOVE
+  '\x0130'# -> unI64 1625292905
+  -- LATIN CAPITAL LIGATURE IJ
+  '\x0132'# -> unI64 307
+  -- LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+  '\x0134'# -> unI64 309
+  -- LATIN CAPITAL LETTER K WITH CEDILLA
+  '\x0136'# -> unI64 311
+  -- LATIN CAPITAL LETTER L WITH ACUTE
+  '\x0139'# -> unI64 314
+  -- LATIN CAPITAL LETTER L WITH CEDILLA
+  '\x013b'# -> unI64 316
+  -- LATIN CAPITAL LETTER L WITH CARON
+  '\x013d'# -> unI64 318
+  -- LATIN CAPITAL LETTER L WITH MIDDLE DOT
+  '\x013f'# -> unI64 320
+  -- LATIN CAPITAL LETTER L WITH STROKE
+  '\x0141'# -> unI64 322
+  -- LATIN CAPITAL LETTER N WITH ACUTE
+  '\x0143'# -> unI64 324
+  -- LATIN CAPITAL LETTER N WITH CEDILLA
+  '\x0145'# -> unI64 326
+  -- LATIN CAPITAL LETTER N WITH CARON
+  '\x0147'# -> unI64 328
+  -- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+  '\x0149'# -> unI64 230687420
+  -- LATIN CAPITAL LETTER ENG
+  '\x014a'# -> unI64 331
+  -- LATIN CAPITAL LETTER O WITH MACRON
+  '\x014c'# -> unI64 333
+  -- LATIN CAPITAL LETTER O WITH BREVE
+  '\x014e'# -> unI64 335
+  -- LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+  '\x0150'# -> unI64 337
+  -- LATIN CAPITAL LIGATURE OE
+  '\x0152'# -> unI64 339
+  -- LATIN CAPITAL LETTER R WITH ACUTE
+  '\x0154'# -> unI64 341
+  -- LATIN CAPITAL LETTER R WITH CEDILLA
+  '\x0156'# -> unI64 343
+  -- LATIN CAPITAL LETTER R WITH CARON
+  '\x0158'# -> unI64 345
+  -- LATIN CAPITAL LETTER S WITH ACUTE
+  '\x015a'# -> unI64 347
+  -- LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+  '\x015c'# -> unI64 349
+  -- LATIN CAPITAL LETTER S WITH CEDILLA
+  '\x015e'# -> unI64 351
+  -- LATIN CAPITAL LETTER S WITH CARON
+  '\x0160'# -> unI64 353
+  -- LATIN CAPITAL LETTER T WITH CEDILLA
+  '\x0162'# -> unI64 355
+  -- LATIN CAPITAL LETTER T WITH CARON
+  '\x0164'# -> unI64 357
+  -- LATIN CAPITAL LETTER T WITH STROKE
+  '\x0166'# -> unI64 359
+  -- LATIN CAPITAL LETTER U WITH TILDE
+  '\x0168'# -> unI64 361
+  -- LATIN CAPITAL LETTER U WITH MACRON
+  '\x016a'# -> unI64 363
+  -- LATIN CAPITAL LETTER U WITH BREVE
+  '\x016c'# -> unI64 365
+  -- LATIN CAPITAL LETTER U WITH RING ABOVE
+  '\x016e'# -> unI64 367
+  -- LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+  '\x0170'# -> unI64 369
+  -- LATIN CAPITAL LETTER U WITH OGONEK
+  '\x0172'# -> unI64 371
+  -- LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+  '\x0174'# -> unI64 373
+  -- LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+  '\x0176'# -> unI64 375
+  -- LATIN CAPITAL LETTER Y WITH DIAERESIS
+  '\x0178'# -> unI64 255
+  -- LATIN CAPITAL LETTER Z WITH ACUTE
+  '\x0179'# -> unI64 378
+  -- LATIN CAPITAL LETTER Z WITH DOT ABOVE
+  '\x017b'# -> unI64 380
+  -- LATIN CAPITAL LETTER Z WITH CARON
+  '\x017d'# -> unI64 382
+  -- LATIN SMALL LETTER LONG S
+  '\x017f'# -> unI64 115
+  -- LATIN CAPITAL LETTER B WITH HOOK
+  '\x0181'# -> unI64 595
+  -- LATIN CAPITAL LETTER B WITH TOPBAR
+  '\x0182'# -> unI64 387
+  -- LATIN CAPITAL LETTER TONE SIX
+  '\x0184'# -> unI64 389
+  -- LATIN CAPITAL LETTER OPEN O
+  '\x0186'# -> unI64 596
+  -- LATIN CAPITAL LETTER C WITH HOOK
+  '\x0187'# -> unI64 392
+  -- LATIN CAPITAL LETTER AFRICAN D
+  '\x0189'# -> unI64 598
+  -- LATIN CAPITAL LETTER D WITH HOOK
+  '\x018a'# -> unI64 599
+  -- LATIN CAPITAL LETTER D WITH TOPBAR
+  '\x018b'# -> unI64 396
+  -- LATIN CAPITAL LETTER REVERSED E
+  '\x018e'# -> unI64 477
+  -- LATIN CAPITAL LETTER SCHWA
+  '\x018f'# -> unI64 601
+  -- LATIN CAPITAL LETTER OPEN E
+  '\x0190'# -> unI64 603
+  -- LATIN CAPITAL LETTER F WITH HOOK
+  '\x0191'# -> unI64 402
+  -- LATIN CAPITAL LETTER G WITH HOOK
+  '\x0193'# -> unI64 608
+  -- LATIN CAPITAL LETTER GAMMA
+  '\x0194'# -> unI64 611
+  -- LATIN CAPITAL LETTER IOTA
+  '\x0196'# -> unI64 617
+  -- LATIN CAPITAL LETTER I WITH STROKE
+  '\x0197'# -> unI64 616
+  -- LATIN CAPITAL LETTER K WITH HOOK
+  '\x0198'# -> unI64 409
+  -- LATIN CAPITAL LETTER TURNED M
+  '\x019c'# -> unI64 623
+  -- LATIN CAPITAL LETTER N WITH LEFT HOOK
+  '\x019d'# -> unI64 626
+  -- LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+  '\x019f'# -> unI64 629
+  -- LATIN CAPITAL LETTER O WITH HORN
+  '\x01a0'# -> unI64 417
+  -- LATIN CAPITAL LETTER OI
+  '\x01a2'# -> unI64 419
+  -- LATIN CAPITAL LETTER P WITH HOOK
+  '\x01a4'# -> unI64 421
+  -- LATIN LETTER YR
+  '\x01a6'# -> unI64 640
+  -- LATIN CAPITAL LETTER TONE TWO
+  '\x01a7'# -> unI64 424
+  -- LATIN CAPITAL LETTER ESH
+  '\x01a9'# -> unI64 643
+  -- LATIN CAPITAL LETTER T WITH HOOK
+  '\x01ac'# -> unI64 429
+  -- LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+  '\x01ae'# -> unI64 648
+  -- LATIN CAPITAL LETTER U WITH HORN
+  '\x01af'# -> unI64 432
+  -- LATIN CAPITAL LETTER UPSILON
+  '\x01b1'# -> unI64 650
+  -- LATIN CAPITAL LETTER V WITH HOOK
+  '\x01b2'# -> unI64 651
+  -- LATIN CAPITAL LETTER Y WITH HOOK
+  '\x01b3'# -> unI64 436
+  -- LATIN CAPITAL LETTER Z WITH STROKE
+  '\x01b5'# -> unI64 438
+  -- LATIN CAPITAL LETTER EZH
+  '\x01b7'# -> unI64 658
+  -- LATIN CAPITAL LETTER EZH REVERSED
+  '\x01b8'# -> unI64 441
+  -- LATIN CAPITAL LETTER TONE FIVE
+  '\x01bc'# -> unI64 445
+  -- LATIN CAPITAL LETTER DZ WITH CARON
+  '\x01c4'# -> unI64 454
+  -- LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+  '\x01c5'# -> unI64 454
+  -- LATIN CAPITAL LETTER LJ
+  '\x01c7'# -> unI64 457
+  -- LATIN CAPITAL LETTER L WITH SMALL LETTER J
+  '\x01c8'# -> unI64 457
+  -- LATIN CAPITAL LETTER NJ
+  '\x01ca'# -> unI64 460
+  -- LATIN CAPITAL LETTER N WITH SMALL LETTER J
+  '\x01cb'# -> unI64 460
+  -- LATIN CAPITAL LETTER A WITH CARON
+  '\x01cd'# -> unI64 462
+  -- LATIN CAPITAL LETTER I WITH CARON
+  '\x01cf'# -> unI64 464
+  -- LATIN CAPITAL LETTER O WITH CARON
+  '\x01d1'# -> unI64 466
+  -- LATIN CAPITAL LETTER U WITH CARON
+  '\x01d3'# -> unI64 468
+  -- LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+  '\x01d5'# -> unI64 470
+  -- LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+  '\x01d7'# -> unI64 472
+  -- LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+  '\x01d9'# -> unI64 474
+  -- LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+  '\x01db'# -> unI64 476
+  -- LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+  '\x01de'# -> unI64 479
+  -- LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+  '\x01e0'# -> unI64 481
+  -- LATIN CAPITAL LETTER AE WITH MACRON
+  '\x01e2'# -> unI64 483
+  -- LATIN CAPITAL LETTER G WITH STROKE
+  '\x01e4'# -> unI64 485
+  -- LATIN CAPITAL LETTER G WITH CARON
+  '\x01e6'# -> unI64 487
+  -- LATIN CAPITAL LETTER K WITH CARON
+  '\x01e8'# -> unI64 489
+  -- LATIN CAPITAL LETTER O WITH OGONEK
+  '\x01ea'# -> unI64 491
+  -- LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+  '\x01ec'# -> unI64 493
+  -- LATIN CAPITAL LETTER EZH WITH CARON
+  '\x01ee'# -> unI64 495
+  -- LATIN SMALL LETTER J WITH CARON
+  '\x01f0'# -> unI64 1635778666
+  -- LATIN CAPITAL LETTER DZ
+  '\x01f1'# -> unI64 499
+  -- LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+  '\x01f2'# -> unI64 499
+  -- LATIN CAPITAL LETTER G WITH ACUTE
+  '\x01f4'# -> unI64 501
+  -- LATIN CAPITAL LETTER HWAIR
+  '\x01f6'# -> unI64 405
+  -- LATIN CAPITAL LETTER WYNN
+  '\x01f7'# -> unI64 447
+  -- LATIN CAPITAL LETTER N WITH GRAVE
+  '\x01f8'# -> unI64 505
+  -- LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+  '\x01fa'# -> unI64 507
+  -- LATIN CAPITAL LETTER AE WITH ACUTE
+  '\x01fc'# -> unI64 509
+  -- LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+  '\x01fe'# -> unI64 511
+  -- LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+  '\x0200'# -> unI64 513
+  -- LATIN CAPITAL LETTER A WITH INVERTED BREVE
+  '\x0202'# -> unI64 515
+  -- LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+  '\x0204'# -> unI64 517
+  -- LATIN CAPITAL LETTER E WITH INVERTED BREVE
+  '\x0206'# -> unI64 519
+  -- LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+  '\x0208'# -> unI64 521
+  -- LATIN CAPITAL LETTER I WITH INVERTED BREVE
+  '\x020a'# -> unI64 523
+  -- LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+  '\x020c'# -> unI64 525
+  -- LATIN CAPITAL LETTER O WITH INVERTED BREVE
+  '\x020e'# -> unI64 527
+  -- LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+  '\x0210'# -> unI64 529
+  -- LATIN CAPITAL LETTER R WITH INVERTED BREVE
+  '\x0212'# -> unI64 531
+  -- LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+  '\x0214'# -> unI64 533
+  -- LATIN CAPITAL LETTER U WITH INVERTED BREVE
+  '\x0216'# -> unI64 535
+  -- LATIN CAPITAL LETTER S WITH COMMA BELOW
+  '\x0218'# -> unI64 537
+  -- LATIN CAPITAL LETTER T WITH COMMA BELOW
+  '\x021a'# -> unI64 539
+  -- LATIN CAPITAL LETTER YOGH
+  '\x021c'# -> unI64 541
+  -- LATIN CAPITAL LETTER H WITH CARON
+  '\x021e'# -> unI64 543
+  -- LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+  '\x0220'# -> unI64 414
+  -- LATIN CAPITAL LETTER OU
+  '\x0222'# -> unI64 547
+  -- LATIN CAPITAL LETTER Z WITH HOOK
+  '\x0224'# -> unI64 549
+  -- LATIN CAPITAL LETTER A WITH DOT ABOVE
+  '\x0226'# -> unI64 551
+  -- LATIN CAPITAL LETTER E WITH CEDILLA
+  '\x0228'# -> unI64 553
+  -- LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+  '\x022a'# -> unI64 555
+  -- LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+  '\x022c'# -> unI64 557
+  -- LATIN CAPITAL LETTER O WITH DOT ABOVE
+  '\x022e'# -> unI64 559
+  -- LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+  '\x0230'# -> unI64 561
+  -- LATIN CAPITAL LETTER Y WITH MACRON
+  '\x0232'# -> unI64 563
+  -- LATIN CAPITAL LETTER A WITH STROKE
+  '\x023a'# -> unI64 11365
+  -- LATIN CAPITAL LETTER C WITH STROKE
+  '\x023b'# -> unI64 572
+  -- LATIN CAPITAL LETTER L WITH BAR
+  '\x023d'# -> unI64 410
+  -- LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
+  '\x023e'# -> unI64 11366
+  -- LATIN CAPITAL LETTER GLOTTAL STOP
+  '\x0241'# -> unI64 578
+  -- LATIN CAPITAL LETTER B WITH STROKE
+  '\x0243'# -> unI64 384
+  -- LATIN CAPITAL LETTER U BAR
+  '\x0244'# -> unI64 649
+  -- LATIN CAPITAL LETTER TURNED V
+  '\x0245'# -> unI64 652
+  -- LATIN CAPITAL LETTER E WITH STROKE
+  '\x0246'# -> unI64 583
+  -- LATIN CAPITAL LETTER J WITH STROKE
+  '\x0248'# -> unI64 585
+  -- LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
+  '\x024a'# -> unI64 587
+  -- LATIN CAPITAL LETTER R WITH STROKE
+  '\x024c'# -> unI64 589
+  -- LATIN CAPITAL LETTER Y WITH STROKE
+  '\x024e'# -> unI64 591
+  -- COMBINING GREEK YPOGEGRAMMENI
+  '\x0345'# -> unI64 953
+  -- GREEK CAPITAL LETTER HETA
+  '\x0370'# -> unI64 881
+  -- GREEK CAPITAL LETTER ARCHAIC SAMPI
+  '\x0372'# -> unI64 883
+  -- GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
+  '\x0376'# -> unI64 887
+  -- GREEK CAPITAL LETTER YOT
+  '\x037f'# -> unI64 1011
+  -- GREEK CAPITAL LETTER ALPHA WITH TONOS
+  '\x0386'# -> unI64 940
+  -- GREEK CAPITAL LETTER EPSILON WITH TONOS
+  '\x0388'# -> unI64 941
+  -- GREEK CAPITAL LETTER ETA WITH TONOS
+  '\x0389'# -> unI64 942
+  -- GREEK CAPITAL LETTER IOTA WITH TONOS
+  '\x038a'# -> unI64 943
+  -- GREEK CAPITAL LETTER OMICRON WITH TONOS
+  '\x038c'# -> unI64 972
+  -- GREEK CAPITAL LETTER UPSILON WITH TONOS
+  '\x038e'# -> unI64 973
+  -- GREEK CAPITAL LETTER OMEGA WITH TONOS
+  '\x038f'# -> unI64 974
+  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+  '\x0390'# -> unI64 3382099394429881
+  -- GREEK CAPITAL LETTER ALPHA
+  '\x0391'# -> unI64 945
+  -- GREEK CAPITAL LETTER BETA
+  '\x0392'# -> unI64 946
+  -- GREEK CAPITAL LETTER GAMMA
+  '\x0393'# -> unI64 947
+  -- GREEK CAPITAL LETTER DELTA
+  '\x0394'# -> unI64 948
+  -- GREEK CAPITAL LETTER EPSILON
+  '\x0395'# -> unI64 949
+  -- GREEK CAPITAL LETTER ZETA
+  '\x0396'# -> unI64 950
+  -- GREEK CAPITAL LETTER ETA
+  '\x0397'# -> unI64 951
+  -- GREEK CAPITAL LETTER THETA
+  '\x0398'# -> unI64 952
+  -- GREEK CAPITAL LETTER IOTA
+  '\x0399'# -> unI64 953
+  -- GREEK CAPITAL LETTER KAPPA
+  '\x039a'# -> unI64 954
+  -- GREEK CAPITAL LETTER LAMDA
+  '\x039b'# -> unI64 955
+  -- GREEK CAPITAL LETTER MU
+  '\x039c'# -> unI64 956
+  -- GREEK CAPITAL LETTER NU
+  '\x039d'# -> unI64 957
+  -- GREEK CAPITAL LETTER XI
+  '\x039e'# -> unI64 958
+  -- GREEK CAPITAL LETTER OMICRON
+  '\x039f'# -> unI64 959
+  -- GREEK CAPITAL LETTER PI
+  '\x03a0'# -> unI64 960
+  -- GREEK CAPITAL LETTER RHO
+  '\x03a1'# -> unI64 961
+  -- GREEK CAPITAL LETTER SIGMA
+  '\x03a3'# -> unI64 963
+  -- GREEK CAPITAL LETTER TAU
+  '\x03a4'# -> unI64 964
+  -- GREEK CAPITAL LETTER UPSILON
+  '\x03a5'# -> unI64 965
+  -- GREEK CAPITAL LETTER PHI
+  '\x03a6'# -> unI64 966
+  -- GREEK CAPITAL LETTER CHI
+  '\x03a7'# -> unI64 967
+  -- GREEK CAPITAL LETTER PSI
+  '\x03a8'# -> unI64 968
+  -- GREEK CAPITAL LETTER OMEGA
+  '\x03a9'# -> unI64 969
+  -- GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+  '\x03aa'# -> unI64 970
+  -- GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+  '\x03ab'# -> unI64 971
+  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+  '\x03b0'# -> unI64 3382099394429893
+  -- GREEK SMALL LETTER FINAL SIGMA
+  '\x03c2'# -> unI64 963
+  -- GREEK CAPITAL KAI SYMBOL
+  '\x03cf'# -> unI64 983
+  -- GREEK BETA SYMBOL
+  '\x03d0'# -> unI64 946
+  -- GREEK THETA SYMBOL
+  '\x03d1'# -> unI64 952
+  -- GREEK PHI SYMBOL
+  '\x03d5'# -> unI64 966
+  -- GREEK PI SYMBOL
+  '\x03d6'# -> unI64 960
+  -- GREEK LETTER ARCHAIC KOPPA
+  '\x03d8'# -> unI64 985
+  -- GREEK LETTER STIGMA
+  '\x03da'# -> unI64 987
+  -- GREEK LETTER DIGAMMA
+  '\x03dc'# -> unI64 989
+  -- GREEK LETTER KOPPA
+  '\x03de'# -> unI64 991
+  -- GREEK LETTER SAMPI
+  '\x03e0'# -> unI64 993
+  -- COPTIC CAPITAL LETTER SHEI
+  '\x03e2'# -> unI64 995
+  -- COPTIC CAPITAL LETTER FEI
+  '\x03e4'# -> unI64 997
+  -- COPTIC CAPITAL LETTER KHEI
+  '\x03e6'# -> unI64 999
+  -- COPTIC CAPITAL LETTER HORI
+  '\x03e8'# -> unI64 1001
+  -- COPTIC CAPITAL LETTER GANGIA
+  '\x03ea'# -> unI64 1003
+  -- COPTIC CAPITAL LETTER SHIMA
+  '\x03ec'# -> unI64 1005
+  -- COPTIC CAPITAL LETTER DEI
+  '\x03ee'# -> unI64 1007
+  -- GREEK KAPPA SYMBOL
+  '\x03f0'# -> unI64 954
+  -- GREEK RHO SYMBOL
+  '\x03f1'# -> unI64 961
+  -- GREEK CAPITAL THETA SYMBOL
+  '\x03f4'# -> unI64 952
+  -- GREEK LUNATE EPSILON SYMBOL
+  '\x03f5'# -> unI64 949
+  -- GREEK CAPITAL LETTER SHO
+  '\x03f7'# -> unI64 1016
+  -- GREEK CAPITAL LUNATE SIGMA SYMBOL
+  '\x03f9'# -> unI64 1010
+  -- GREEK CAPITAL LETTER SAN
+  '\x03fa'# -> unI64 1019
+  -- GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL
+  '\x03fd'# -> unI64 891
+  -- GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL
+  '\x03fe'# -> unI64 892
+  -- GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
+  '\x03ff'# -> unI64 893
+  -- CYRILLIC CAPITAL LETTER IE WITH GRAVE
+  '\x0400'# -> unI64 1104
+  -- CYRILLIC CAPITAL LETTER IO
+  '\x0401'# -> unI64 1105
+  -- CYRILLIC CAPITAL LETTER DJE
+  '\x0402'# -> unI64 1106
+  -- CYRILLIC CAPITAL LETTER GJE
+  '\x0403'# -> unI64 1107
+  -- CYRILLIC CAPITAL LETTER UKRAINIAN IE
+  '\x0404'# -> unI64 1108
+  -- CYRILLIC CAPITAL LETTER DZE
+  '\x0405'# -> unI64 1109
+  -- CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+  '\x0406'# -> unI64 1110
+  -- CYRILLIC CAPITAL LETTER YI
+  '\x0407'# -> unI64 1111
+  -- CYRILLIC CAPITAL LETTER JE
+  '\x0408'# -> unI64 1112
+  -- CYRILLIC CAPITAL LETTER LJE
+  '\x0409'# -> unI64 1113
+  -- CYRILLIC CAPITAL LETTER NJE
+  '\x040a'# -> unI64 1114
+  -- CYRILLIC CAPITAL LETTER TSHE
+  '\x040b'# -> unI64 1115
+  -- CYRILLIC CAPITAL LETTER KJE
+  '\x040c'# -> unI64 1116
+  -- CYRILLIC CAPITAL LETTER I WITH GRAVE
+  '\x040d'# -> unI64 1117
+  -- CYRILLIC CAPITAL LETTER SHORT U
+  '\x040e'# -> unI64 1118
+  -- CYRILLIC CAPITAL LETTER DZHE
+  '\x040f'# -> unI64 1119
+  -- CYRILLIC CAPITAL LETTER A
+  '\x0410'# -> unI64 1072
+  -- CYRILLIC CAPITAL LETTER BE
+  '\x0411'# -> unI64 1073
+  -- CYRILLIC CAPITAL LETTER VE
+  '\x0412'# -> unI64 1074
+  -- CYRILLIC CAPITAL LETTER GHE
+  '\x0413'# -> unI64 1075
+  -- CYRILLIC CAPITAL LETTER DE
+  '\x0414'# -> unI64 1076
+  -- CYRILLIC CAPITAL LETTER IE
+  '\x0415'# -> unI64 1077
+  -- CYRILLIC CAPITAL LETTER ZHE
+  '\x0416'# -> unI64 1078
+  -- CYRILLIC CAPITAL LETTER ZE
+  '\x0417'# -> unI64 1079
+  -- CYRILLIC CAPITAL LETTER I
+  '\x0418'# -> unI64 1080
+  -- CYRILLIC CAPITAL LETTER SHORT I
+  '\x0419'# -> unI64 1081
+  -- CYRILLIC CAPITAL LETTER KA
+  '\x041a'# -> unI64 1082
+  -- CYRILLIC CAPITAL LETTER EL
+  '\x041b'# -> unI64 1083
+  -- CYRILLIC CAPITAL LETTER EM
+  '\x041c'# -> unI64 1084
+  -- CYRILLIC CAPITAL LETTER EN
+  '\x041d'# -> unI64 1085
+  -- CYRILLIC CAPITAL LETTER O
+  '\x041e'# -> unI64 1086
+  -- CYRILLIC CAPITAL LETTER PE
+  '\x041f'# -> unI64 1087
+  -- CYRILLIC CAPITAL LETTER ER
+  '\x0420'# -> unI64 1088
+  -- CYRILLIC CAPITAL LETTER ES
+  '\x0421'# -> unI64 1089
+  -- CYRILLIC CAPITAL LETTER TE
+  '\x0422'# -> unI64 1090
+  -- CYRILLIC CAPITAL LETTER U
+  '\x0423'# -> unI64 1091
+  -- CYRILLIC CAPITAL LETTER EF
+  '\x0424'# -> unI64 1092
+  -- CYRILLIC CAPITAL LETTER HA
+  '\x0425'# -> unI64 1093
+  -- CYRILLIC CAPITAL LETTER TSE
+  '\x0426'# -> unI64 1094
+  -- CYRILLIC CAPITAL LETTER CHE
+  '\x0427'# -> unI64 1095
+  -- CYRILLIC CAPITAL LETTER SHA
+  '\x0428'# -> unI64 1096
+  -- CYRILLIC CAPITAL LETTER SHCHA
+  '\x0429'# -> unI64 1097
+  -- CYRILLIC CAPITAL LETTER HARD SIGN
+  '\x042a'# -> unI64 1098
+  -- CYRILLIC CAPITAL LETTER YERU
+  '\x042b'# -> unI64 1099
+  -- CYRILLIC CAPITAL LETTER SOFT SIGN
+  '\x042c'# -> unI64 1100
+  -- CYRILLIC CAPITAL LETTER E
+  '\x042d'# -> unI64 1101
+  -- CYRILLIC CAPITAL LETTER YU
+  '\x042e'# -> unI64 1102
+  -- CYRILLIC CAPITAL LETTER YA
+  '\x042f'# -> unI64 1103
+  -- CYRILLIC CAPITAL LETTER OMEGA
+  '\x0460'# -> unI64 1121
+  -- CYRILLIC CAPITAL LETTER YAT
+  '\x0462'# -> unI64 1123
+  -- CYRILLIC CAPITAL LETTER IOTIFIED E
+  '\x0464'# -> unI64 1125
+  -- CYRILLIC CAPITAL LETTER LITTLE YUS
+  '\x0466'# -> unI64 1127
+  -- CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+  '\x0468'# -> unI64 1129
+  -- CYRILLIC CAPITAL LETTER BIG YUS
+  '\x046a'# -> unI64 1131
+  -- CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+  '\x046c'# -> unI64 1133
+  -- CYRILLIC CAPITAL LETTER KSI
+  '\x046e'# -> unI64 1135
+  -- CYRILLIC CAPITAL LETTER PSI
+  '\x0470'# -> unI64 1137
+  -- CYRILLIC CAPITAL LETTER FITA
+  '\x0472'# -> unI64 1139
+  -- CYRILLIC CAPITAL LETTER IZHITSA
+  '\x0474'# -> unI64 1141
+  -- CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+  '\x0476'# -> unI64 1143
+  -- CYRILLIC CAPITAL LETTER UK
+  '\x0478'# -> unI64 1145
+  -- CYRILLIC CAPITAL LETTER ROUND OMEGA
+  '\x047a'# -> unI64 1147
+  -- CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+  '\x047c'# -> unI64 1149
+  -- CYRILLIC CAPITAL LETTER OT
+  '\x047e'# -> unI64 1151
+  -- CYRILLIC CAPITAL LETTER KOPPA
+  '\x0480'# -> unI64 1153
+  -- CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+  '\x048a'# -> unI64 1163
+  -- CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+  '\x048c'# -> unI64 1165
+  -- CYRILLIC CAPITAL LETTER ER WITH TICK
+  '\x048e'# -> unI64 1167
+  -- CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+  '\x0490'# -> unI64 1169
+  -- CYRILLIC CAPITAL LETTER GHE WITH STROKE
+  '\x0492'# -> unI64 1171
+  -- CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+  '\x0494'# -> unI64 1173
+  -- CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+  '\x0496'# -> unI64 1175
+  -- CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+  '\x0498'# -> unI64 1177
+  -- CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+  '\x049a'# -> unI64 1179
+  -- CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+  '\x049c'# -> unI64 1181
+  -- CYRILLIC CAPITAL LETTER KA WITH STROKE
+  '\x049e'# -> unI64 1183
+  -- CYRILLIC CAPITAL LETTER BASHKIR KA
+  '\x04a0'# -> unI64 1185
+  -- CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+  '\x04a2'# -> unI64 1187
+  -- CYRILLIC CAPITAL LIGATURE EN GHE
+  '\x04a4'# -> unI64 1189
+  -- CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+  '\x04a6'# -> unI64 1191
+  -- CYRILLIC CAPITAL LETTER ABKHASIAN HA
+  '\x04a8'# -> unI64 1193
+  -- CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+  '\x04aa'# -> unI64 1195
+  -- CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+  '\x04ac'# -> unI64 1197
+  -- CYRILLIC CAPITAL LETTER STRAIGHT U
+  '\x04ae'# -> unI64 1199
+  -- CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+  '\x04b0'# -> unI64 1201
+  -- CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+  '\x04b2'# -> unI64 1203
+  -- CYRILLIC CAPITAL LIGATURE TE TSE
+  '\x04b4'# -> unI64 1205
+  -- CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+  '\x04b6'# -> unI64 1207
+  -- CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+  '\x04b8'# -> unI64 1209
+  -- CYRILLIC CAPITAL LETTER SHHA
+  '\x04ba'# -> unI64 1211
+  -- CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+  '\x04bc'# -> unI64 1213
+  -- CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+  '\x04be'# -> unI64 1215
+  -- CYRILLIC LETTER PALOCHKA
+  '\x04c0'# -> unI64 1231
+  -- CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+  '\x04c1'# -> unI64 1218
+  -- CYRILLIC CAPITAL LETTER KA WITH HOOK
+  '\x04c3'# -> unI64 1220
+  -- CYRILLIC CAPITAL LETTER EL WITH TAIL
+  '\x04c5'# -> unI64 1222
+  -- CYRILLIC CAPITAL LETTER EN WITH HOOK
+  '\x04c7'# -> unI64 1224
+  -- CYRILLIC CAPITAL LETTER EN WITH TAIL
+  '\x04c9'# -> unI64 1226
+  -- CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+  '\x04cb'# -> unI64 1228
+  -- CYRILLIC CAPITAL LETTER EM WITH TAIL
+  '\x04cd'# -> unI64 1230
+  -- CYRILLIC CAPITAL LETTER A WITH BREVE
+  '\x04d0'# -> unI64 1233
+  -- CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+  '\x04d2'# -> unI64 1235
+  -- CYRILLIC CAPITAL LIGATURE A IE
+  '\x04d4'# -> unI64 1237
+  -- CYRILLIC CAPITAL LETTER IE WITH BREVE
+  '\x04d6'# -> unI64 1239
+  -- CYRILLIC CAPITAL LETTER SCHWA
+  '\x04d8'# -> unI64 1241
+  -- CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+  '\x04da'# -> unI64 1243
+  -- CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+  '\x04dc'# -> unI64 1245
+  -- CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+  '\x04de'# -> unI64 1247
+  -- CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+  '\x04e0'# -> unI64 1249
+  -- CYRILLIC CAPITAL LETTER I WITH MACRON
+  '\x04e2'# -> unI64 1251
+  -- CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+  '\x04e4'# -> unI64 1253
+  -- CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+  '\x04e6'# -> unI64 1255
+  -- CYRILLIC CAPITAL LETTER BARRED O
+  '\x04e8'# -> unI64 1257
+  -- CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+  '\x04ea'# -> unI64 1259
+  -- CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+  '\x04ec'# -> unI64 1261
+  -- CYRILLIC CAPITAL LETTER U WITH MACRON
+  '\x04ee'# -> unI64 1263
+  -- CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+  '\x04f0'# -> unI64 1265
+  -- CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+  '\x04f2'# -> unI64 1267
+  -- CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+  '\x04f4'# -> unI64 1269
+  -- CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+  '\x04f6'# -> unI64 1271
+  -- CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+  '\x04f8'# -> unI64 1273
+  -- CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
+  '\x04fa'# -> unI64 1275
+  -- CYRILLIC CAPITAL LETTER HA WITH HOOK
+  '\x04fc'# -> unI64 1277
+  -- CYRILLIC CAPITAL LETTER HA WITH STROKE
+  '\x04fe'# -> unI64 1279
+  -- CYRILLIC CAPITAL LETTER KOMI DE
+  '\x0500'# -> unI64 1281
+  -- CYRILLIC CAPITAL LETTER KOMI DJE
+  '\x0502'# -> unI64 1283
+  -- CYRILLIC CAPITAL LETTER KOMI ZJE
+  '\x0504'# -> unI64 1285
+  -- CYRILLIC CAPITAL LETTER KOMI DZJE
+  '\x0506'# -> unI64 1287
+  -- CYRILLIC CAPITAL LETTER KOMI LJE
+  '\x0508'# -> unI64 1289
+  -- CYRILLIC CAPITAL LETTER KOMI NJE
+  '\x050a'# -> unI64 1291
+  -- CYRILLIC CAPITAL LETTER KOMI SJE
+  '\x050c'# -> unI64 1293
+  -- CYRILLIC CAPITAL LETTER KOMI TJE
+  '\x050e'# -> unI64 1295
+  -- CYRILLIC CAPITAL LETTER REVERSED ZE
+  '\x0510'# -> unI64 1297
+  -- CYRILLIC CAPITAL LETTER EL WITH HOOK
+  '\x0512'# -> unI64 1299
+  -- CYRILLIC CAPITAL LETTER LHA
+  '\x0514'# -> unI64 1301
+  -- CYRILLIC CAPITAL LETTER RHA
+  '\x0516'# -> unI64 1303
+  -- CYRILLIC CAPITAL LETTER YAE
+  '\x0518'# -> unI64 1305
+  -- CYRILLIC CAPITAL LETTER QA
+  '\x051a'# -> unI64 1307
+  -- CYRILLIC CAPITAL LETTER WE
+  '\x051c'# -> unI64 1309
+  -- CYRILLIC CAPITAL LETTER ALEUT KA
+  '\x051e'# -> unI64 1311
+  -- CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
+  '\x0520'# -> unI64 1313
+  -- CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
+  '\x0522'# -> unI64 1315
+  -- CYRILLIC CAPITAL LETTER PE WITH DESCENDER
+  '\x0524'# -> unI64 1317
+  -- CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
+  '\x0526'# -> unI64 1319
+  -- CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK
+  '\x0528'# -> unI64 1321
+  -- CYRILLIC CAPITAL LETTER DZZHE
+  '\x052a'# -> unI64 1323
+  -- CYRILLIC CAPITAL LETTER DCHE
+  '\x052c'# -> unI64 1325
+  -- CYRILLIC CAPITAL LETTER EL WITH DESCENDER
+  '\x052e'# -> unI64 1327
+  -- ARMENIAN CAPITAL LETTER AYB
+  '\x0531'# -> unI64 1377
+  -- ARMENIAN CAPITAL LETTER BEN
+  '\x0532'# -> unI64 1378
+  -- ARMENIAN CAPITAL LETTER GIM
+  '\x0533'# -> unI64 1379
+  -- ARMENIAN CAPITAL LETTER DA
+  '\x0534'# -> unI64 1380
+  -- ARMENIAN CAPITAL LETTER ECH
+  '\x0535'# -> unI64 1381
+  -- ARMENIAN CAPITAL LETTER ZA
+  '\x0536'# -> unI64 1382
+  -- ARMENIAN CAPITAL LETTER EH
+  '\x0537'# -> unI64 1383
+  -- ARMENIAN CAPITAL LETTER ET
+  '\x0538'# -> unI64 1384
+  -- ARMENIAN CAPITAL LETTER TO
+  '\x0539'# -> unI64 1385
+  -- ARMENIAN CAPITAL LETTER ZHE
+  '\x053a'# -> unI64 1386
+  -- ARMENIAN CAPITAL LETTER INI
+  '\x053b'# -> unI64 1387
+  -- ARMENIAN CAPITAL LETTER LIWN
+  '\x053c'# -> unI64 1388
+  -- ARMENIAN CAPITAL LETTER XEH
+  '\x053d'# -> unI64 1389
+  -- ARMENIAN CAPITAL LETTER CA
+  '\x053e'# -> unI64 1390
+  -- ARMENIAN CAPITAL LETTER KEN
+  '\x053f'# -> unI64 1391
+  -- ARMENIAN CAPITAL LETTER HO
+  '\x0540'# -> unI64 1392
+  -- ARMENIAN CAPITAL LETTER JA
+  '\x0541'# -> unI64 1393
+  -- ARMENIAN CAPITAL LETTER GHAD
+  '\x0542'# -> unI64 1394
+  -- ARMENIAN CAPITAL LETTER CHEH
+  '\x0543'# -> unI64 1395
+  -- ARMENIAN CAPITAL LETTER MEN
+  '\x0544'# -> unI64 1396
+  -- ARMENIAN CAPITAL LETTER YI
+  '\x0545'# -> unI64 1397
+  -- ARMENIAN CAPITAL LETTER NOW
+  '\x0546'# -> unI64 1398
+  -- ARMENIAN CAPITAL LETTER SHA
+  '\x0547'# -> unI64 1399
+  -- ARMENIAN CAPITAL LETTER VO
+  '\x0548'# -> unI64 1400
+  -- ARMENIAN CAPITAL LETTER CHA
+  '\x0549'# -> unI64 1401
+  -- ARMENIAN CAPITAL LETTER PEH
+  '\x054a'# -> unI64 1402
+  -- ARMENIAN CAPITAL LETTER JHEH
+  '\x054b'# -> unI64 1403
+  -- ARMENIAN CAPITAL LETTER RA
+  '\x054c'# -> unI64 1404
+  -- ARMENIAN CAPITAL LETTER SEH
+  '\x054d'# -> unI64 1405
+  -- ARMENIAN CAPITAL LETTER VEW
+  '\x054e'# -> unI64 1406
+  -- ARMENIAN CAPITAL LETTER TIWN
+  '\x054f'# -> unI64 1407
+  -- ARMENIAN CAPITAL LETTER REH
+  '\x0550'# -> unI64 1408
+  -- ARMENIAN CAPITAL LETTER CO
+  '\x0551'# -> unI64 1409
+  -- ARMENIAN CAPITAL LETTER YIWN
+  '\x0552'# -> unI64 1410
+  -- ARMENIAN CAPITAL LETTER PIWR
+  '\x0553'# -> unI64 1411
+  -- ARMENIAN CAPITAL LETTER KEH
+  '\x0554'# -> unI64 1412
+  -- ARMENIAN CAPITAL LETTER OH
+  '\x0555'# -> unI64 1413
+  -- ARMENIAN CAPITAL LETTER FEH
+  '\x0556'# -> unI64 1414
+  -- ARMENIAN SMALL LIGATURE ECH YIWN
+  '\x0587'# -> unI64 2956985701
+  -- GEORGIAN CAPITAL LETTER AN
+  '\x10a0'# -> unI64 11520
+  -- GEORGIAN CAPITAL LETTER BAN
+  '\x10a1'# -> unI64 11521
+  -- GEORGIAN CAPITAL LETTER GAN
+  '\x10a2'# -> unI64 11522
+  -- GEORGIAN CAPITAL LETTER DON
+  '\x10a3'# -> unI64 11523
+  -- GEORGIAN CAPITAL LETTER EN
+  '\x10a4'# -> unI64 11524
+  -- GEORGIAN CAPITAL LETTER VIN
+  '\x10a5'# -> unI64 11525
+  -- GEORGIAN CAPITAL LETTER ZEN
+  '\x10a6'# -> unI64 11526
+  -- GEORGIAN CAPITAL LETTER TAN
+  '\x10a7'# -> unI64 11527
+  -- GEORGIAN CAPITAL LETTER IN
+  '\x10a8'# -> unI64 11528
+  -- GEORGIAN CAPITAL LETTER KAN
+  '\x10a9'# -> unI64 11529
+  -- GEORGIAN CAPITAL LETTER LAS
+  '\x10aa'# -> unI64 11530
+  -- GEORGIAN CAPITAL LETTER MAN
+  '\x10ab'# -> unI64 11531
+  -- GEORGIAN CAPITAL LETTER NAR
+  '\x10ac'# -> unI64 11532
+  -- GEORGIAN CAPITAL LETTER ON
+  '\x10ad'# -> unI64 11533
+  -- GEORGIAN CAPITAL LETTER PAR
+  '\x10ae'# -> unI64 11534
+  -- GEORGIAN CAPITAL LETTER ZHAR
+  '\x10af'# -> unI64 11535
+  -- GEORGIAN CAPITAL LETTER RAE
+  '\x10b0'# -> unI64 11536
+  -- GEORGIAN CAPITAL LETTER SAN
+  '\x10b1'# -> unI64 11537
+  -- GEORGIAN CAPITAL LETTER TAR
+  '\x10b2'# -> unI64 11538
+  -- GEORGIAN CAPITAL LETTER UN
+  '\x10b3'# -> unI64 11539
+  -- GEORGIAN CAPITAL LETTER PHAR
+  '\x10b4'# -> unI64 11540
+  -- GEORGIAN CAPITAL LETTER KHAR
+  '\x10b5'# -> unI64 11541
+  -- GEORGIAN CAPITAL LETTER GHAN
+  '\x10b6'# -> unI64 11542
+  -- GEORGIAN CAPITAL LETTER QAR
+  '\x10b7'# -> unI64 11543
+  -- GEORGIAN CAPITAL LETTER SHIN
+  '\x10b8'# -> unI64 11544
+  -- GEORGIAN CAPITAL LETTER CHIN
+  '\x10b9'# -> unI64 11545
+  -- GEORGIAN CAPITAL LETTER CAN
+  '\x10ba'# -> unI64 11546
+  -- GEORGIAN CAPITAL LETTER JIL
+  '\x10bb'# -> unI64 11547
+  -- GEORGIAN CAPITAL LETTER CIL
+  '\x10bc'# -> unI64 11548
+  -- GEORGIAN CAPITAL LETTER CHAR
+  '\x10bd'# -> unI64 11549
+  -- GEORGIAN CAPITAL LETTER XAN
+  '\x10be'# -> unI64 11550
+  -- GEORGIAN CAPITAL LETTER JHAN
+  '\x10bf'# -> unI64 11551
+  -- GEORGIAN CAPITAL LETTER HAE
+  '\x10c0'# -> unI64 11552
+  -- GEORGIAN CAPITAL LETTER HE
+  '\x10c1'# -> unI64 11553
+  -- GEORGIAN CAPITAL LETTER HIE
+  '\x10c2'# -> unI64 11554
+  -- GEORGIAN CAPITAL LETTER WE
+  '\x10c3'# -> unI64 11555
+  -- GEORGIAN CAPITAL LETTER HAR
+  '\x10c4'# -> unI64 11556
+  -- GEORGIAN CAPITAL LETTER HOE
+  '\x10c5'# -> unI64 11557
+  -- GEORGIAN CAPITAL LETTER YN
+  '\x10c7'# -> unI64 11559
+  -- GEORGIAN CAPITAL LETTER AEN
+  '\x10cd'# -> unI64 11565
+  -- CHEROKEE SMALL LETTER YE
+  '\x13f8'# -> unI64 5104
+  -- CHEROKEE SMALL LETTER YI
+  '\x13f9'# -> unI64 5105
+  -- CHEROKEE SMALL LETTER YO
+  '\x13fa'# -> unI64 5106
+  -- CHEROKEE SMALL LETTER YU
+  '\x13fb'# -> unI64 5107
+  -- CHEROKEE SMALL LETTER YV
+  '\x13fc'# -> unI64 5108
+  -- CHEROKEE SMALL LETTER MV
+  '\x13fd'# -> unI64 5109
+  -- CYRILLIC SMALL LETTER ROUNDED VE
+  '\x1c80'# -> unI64 1074
+  -- CYRILLIC SMALL LETTER LONG-LEGGED DE
+  '\x1c81'# -> unI64 1076
+  -- CYRILLIC SMALL LETTER NARROW O
+  '\x1c82'# -> unI64 1086
+  -- CYRILLIC SMALL LETTER WIDE ES
+  '\x1c83'# -> unI64 1089
+  -- CYRILLIC SMALL LETTER TALL TE
+  '\x1c84'# -> unI64 1090
+  -- CYRILLIC SMALL LETTER THREE-LEGGED TE
+  '\x1c85'# -> unI64 1090
+  -- CYRILLIC SMALL LETTER TALL HARD SIGN
+  '\x1c86'# -> unI64 1098
+  -- CYRILLIC SMALL LETTER TALL YAT
+  '\x1c87'# -> unI64 1123
+  -- CYRILLIC SMALL LETTER UNBLENDED UK
+  '\x1c88'# -> unI64 42571
+  -- GEORGIAN MTAVRULI CAPITAL LETTER AN
+  '\x1c90'# -> unI64 4304
+  -- GEORGIAN MTAVRULI CAPITAL LETTER BAN
+  '\x1c91'# -> unI64 4305
+  -- GEORGIAN MTAVRULI CAPITAL LETTER GAN
+  '\x1c92'# -> unI64 4306
+  -- GEORGIAN MTAVRULI CAPITAL LETTER DON
+  '\x1c93'# -> unI64 4307
+  -- GEORGIAN MTAVRULI CAPITAL LETTER EN
+  '\x1c94'# -> unI64 4308
+  -- GEORGIAN MTAVRULI CAPITAL LETTER VIN
+  '\x1c95'# -> unI64 4309
+  -- GEORGIAN MTAVRULI CAPITAL LETTER ZEN
+  '\x1c96'# -> unI64 4310
+  -- GEORGIAN MTAVRULI CAPITAL LETTER TAN
+  '\x1c97'# -> unI64 4311
+  -- GEORGIAN MTAVRULI CAPITAL LETTER IN
+  '\x1c98'# -> unI64 4312
+  -- GEORGIAN MTAVRULI CAPITAL LETTER KAN
+  '\x1c99'# -> unI64 4313
+  -- GEORGIAN MTAVRULI CAPITAL LETTER LAS
+  '\x1c9a'# -> unI64 4314
+  -- GEORGIAN MTAVRULI CAPITAL LETTER MAN
+  '\x1c9b'# -> unI64 4315
+  -- GEORGIAN MTAVRULI CAPITAL LETTER NAR
+  '\x1c9c'# -> unI64 4316
+  -- GEORGIAN MTAVRULI CAPITAL LETTER ON
+  '\x1c9d'# -> unI64 4317
+  -- GEORGIAN MTAVRULI CAPITAL LETTER PAR
+  '\x1c9e'# -> unI64 4318
+  -- GEORGIAN MTAVRULI CAPITAL LETTER ZHAR
+  '\x1c9f'# -> unI64 4319
+  -- GEORGIAN MTAVRULI CAPITAL LETTER RAE
+  '\x1ca0'# -> unI64 4320
+  -- GEORGIAN MTAVRULI CAPITAL LETTER SAN
+  '\x1ca1'# -> unI64 4321
+  -- GEORGIAN MTAVRULI CAPITAL LETTER TAR
+  '\x1ca2'# -> unI64 4322
+  -- GEORGIAN MTAVRULI CAPITAL LETTER UN
+  '\x1ca3'# -> unI64 4323
+  -- GEORGIAN MTAVRULI CAPITAL LETTER PHAR
+  '\x1ca4'# -> unI64 4324
+  -- GEORGIAN MTAVRULI CAPITAL LETTER KHAR
+  '\x1ca5'# -> unI64 4325
+  -- GEORGIAN MTAVRULI CAPITAL LETTER GHAN
+  '\x1ca6'# -> unI64 4326
+  -- GEORGIAN MTAVRULI CAPITAL LETTER QAR
+  '\x1ca7'# -> unI64 4327
+  -- GEORGIAN MTAVRULI CAPITAL LETTER SHIN
+  '\x1ca8'# -> unI64 4328
+  -- GEORGIAN MTAVRULI CAPITAL LETTER CHIN
+  '\x1ca9'# -> unI64 4329
+  -- GEORGIAN MTAVRULI CAPITAL LETTER CAN
+  '\x1caa'# -> unI64 4330
+  -- GEORGIAN MTAVRULI CAPITAL LETTER JIL
+  '\x1cab'# -> unI64 4331
+  -- GEORGIAN MTAVRULI CAPITAL LETTER CIL
+  '\x1cac'# -> unI64 4332
+  -- GEORGIAN MTAVRULI CAPITAL LETTER CHAR
+  '\x1cad'# -> unI64 4333
+  -- GEORGIAN MTAVRULI CAPITAL LETTER XAN
+  '\x1cae'# -> unI64 4334
+  -- GEORGIAN MTAVRULI CAPITAL LETTER JHAN
+  '\x1caf'# -> unI64 4335
+  -- GEORGIAN MTAVRULI CAPITAL LETTER HAE
+  '\x1cb0'# -> unI64 4336
+  -- GEORGIAN MTAVRULI CAPITAL LETTER HE
+  '\x1cb1'# -> unI64 4337
+  -- GEORGIAN MTAVRULI CAPITAL LETTER HIE
+  '\x1cb2'# -> unI64 4338
+  -- GEORGIAN MTAVRULI CAPITAL LETTER WE
+  '\x1cb3'# -> unI64 4339
+  -- GEORGIAN MTAVRULI CAPITAL LETTER HAR
+  '\x1cb4'# -> unI64 4340
+  -- GEORGIAN MTAVRULI CAPITAL LETTER HOE
+  '\x1cb5'# -> unI64 4341
+  -- GEORGIAN MTAVRULI CAPITAL LETTER FI
+  '\x1cb6'# -> unI64 4342
+  -- GEORGIAN MTAVRULI CAPITAL LETTER YN
+  '\x1cb7'# -> unI64 4343
+  -- GEORGIAN MTAVRULI CAPITAL LETTER ELIFI
+  '\x1cb8'# -> unI64 4344
+  -- GEORGIAN MTAVRULI CAPITAL LETTER TURNED GAN
+  '\x1cb9'# -> unI64 4345
+  -- GEORGIAN MTAVRULI CAPITAL LETTER AIN
+  '\x1cba'# -> unI64 4346
+  -- GEORGIAN MTAVRULI CAPITAL LETTER AEN
+  '\x1cbd'# -> unI64 4349
+  -- GEORGIAN MTAVRULI CAPITAL LETTER HARD SIGN
+  '\x1cbe'# -> unI64 4350
+  -- GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+  '\x1cbf'# -> unI64 4351
+  -- LATIN CAPITAL LETTER A WITH RING BELOW
+  '\x1e00'# -> unI64 7681
+  -- LATIN CAPITAL LETTER B WITH DOT ABOVE
+  '\x1e02'# -> unI64 7683
+  -- LATIN CAPITAL LETTER B WITH DOT BELOW
+  '\x1e04'# -> unI64 7685
+  -- LATIN CAPITAL LETTER B WITH LINE BELOW
+  '\x1e06'# -> unI64 7687
+  -- LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+  '\x1e08'# -> unI64 7689
+  -- LATIN CAPITAL LETTER D WITH DOT ABOVE
+  '\x1e0a'# -> unI64 7691
+  -- LATIN CAPITAL LETTER D WITH DOT BELOW
+  '\x1e0c'# -> unI64 7693
+  -- LATIN CAPITAL LETTER D WITH LINE BELOW
+  '\x1e0e'# -> unI64 7695
+  -- LATIN CAPITAL LETTER D WITH CEDILLA
+  '\x1e10'# -> unI64 7697
+  -- LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+  '\x1e12'# -> unI64 7699
+  -- LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+  '\x1e14'# -> unI64 7701
+  -- LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+  '\x1e16'# -> unI64 7703
+  -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+  '\x1e18'# -> unI64 7705
+  -- LATIN CAPITAL LETTER E WITH TILDE BELOW
+  '\x1e1a'# -> unI64 7707
+  -- LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+  '\x1e1c'# -> unI64 7709
+  -- LATIN CAPITAL LETTER F WITH DOT ABOVE
+  '\x1e1e'# -> unI64 7711
+  -- LATIN CAPITAL LETTER G WITH MACRON
+  '\x1e20'# -> unI64 7713
+  -- LATIN CAPITAL LETTER H WITH DOT ABOVE
+  '\x1e22'# -> unI64 7715
+  -- LATIN CAPITAL LETTER H WITH DOT BELOW
+  '\x1e24'# -> unI64 7717
+  -- LATIN CAPITAL LETTER H WITH DIAERESIS
+  '\x1e26'# -> unI64 7719
+  -- LATIN CAPITAL LETTER H WITH CEDILLA
+  '\x1e28'# -> unI64 7721
+  -- LATIN CAPITAL LETTER H WITH BREVE BELOW
+  '\x1e2a'# -> unI64 7723
+  -- LATIN CAPITAL LETTER I WITH TILDE BELOW
+  '\x1e2c'# -> unI64 7725
+  -- LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+  '\x1e2e'# -> unI64 7727
+  -- LATIN CAPITAL LETTER K WITH ACUTE
+  '\x1e30'# -> unI64 7729
+  -- LATIN CAPITAL LETTER K WITH DOT BELOW
+  '\x1e32'# -> unI64 7731
+  -- LATIN CAPITAL LETTER K WITH LINE BELOW
+  '\x1e34'# -> unI64 7733
+  -- LATIN CAPITAL LETTER L WITH DOT BELOW
+  '\x1e36'# -> unI64 7735
+  -- LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+  '\x1e38'# -> unI64 7737
+  -- LATIN CAPITAL LETTER L WITH LINE BELOW
+  '\x1e3a'# -> unI64 7739
+  -- LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+  '\x1e3c'# -> unI64 7741
+  -- LATIN CAPITAL LETTER M WITH ACUTE
+  '\x1e3e'# -> unI64 7743
+  -- LATIN CAPITAL LETTER M WITH DOT ABOVE
+  '\x1e40'# -> unI64 7745
+  -- LATIN CAPITAL LETTER M WITH DOT BELOW
+  '\x1e42'# -> unI64 7747
+  -- LATIN CAPITAL LETTER N WITH DOT ABOVE
+  '\x1e44'# -> unI64 7749
+  -- LATIN CAPITAL LETTER N WITH DOT BELOW
+  '\x1e46'# -> unI64 7751
+  -- LATIN CAPITAL LETTER N WITH LINE BELOW
+  '\x1e48'# -> unI64 7753
+  -- LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+  '\x1e4a'# -> unI64 7755
+  -- LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+  '\x1e4c'# -> unI64 7757
+  -- LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+  '\x1e4e'# -> unI64 7759
+  -- LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+  '\x1e50'# -> unI64 7761
+  -- LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+  '\x1e52'# -> unI64 7763
+  -- LATIN CAPITAL LETTER P WITH ACUTE
+  '\x1e54'# -> unI64 7765
+  -- LATIN CAPITAL LETTER P WITH DOT ABOVE
+  '\x1e56'# -> unI64 7767
+  -- LATIN CAPITAL LETTER R WITH DOT ABOVE
+  '\x1e58'# -> unI64 7769
+  -- LATIN CAPITAL LETTER R WITH DOT BELOW
+  '\x1e5a'# -> unI64 7771
+  -- LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+  '\x1e5c'# -> unI64 7773
+  -- LATIN CAPITAL LETTER R WITH LINE BELOW
+  '\x1e5e'# -> unI64 7775
+  -- LATIN CAPITAL LETTER S WITH DOT ABOVE
+  '\x1e60'# -> unI64 7777
+  -- LATIN CAPITAL LETTER S WITH DOT BELOW
+  '\x1e62'# -> unI64 7779
+  -- LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+  '\x1e64'# -> unI64 7781
+  -- LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+  '\x1e66'# -> unI64 7783
+  -- LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+  '\x1e68'# -> unI64 7785
+  -- LATIN CAPITAL LETTER T WITH DOT ABOVE
+  '\x1e6a'# -> unI64 7787
+  -- LATIN CAPITAL LETTER T WITH DOT BELOW
+  '\x1e6c'# -> unI64 7789
+  -- LATIN CAPITAL LETTER T WITH LINE BELOW
+  '\x1e6e'# -> unI64 7791
+  -- LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+  '\x1e70'# -> unI64 7793
+  -- LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+  '\x1e72'# -> unI64 7795
+  -- LATIN CAPITAL LETTER U WITH TILDE BELOW
+  '\x1e74'# -> unI64 7797
+  -- LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+  '\x1e76'# -> unI64 7799
+  -- LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+  '\x1e78'# -> unI64 7801
+  -- LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+  '\x1e7a'# -> unI64 7803
+  -- LATIN CAPITAL LETTER V WITH TILDE
+  '\x1e7c'# -> unI64 7805
+  -- LATIN CAPITAL LETTER V WITH DOT BELOW
+  '\x1e7e'# -> unI64 7807
+  -- LATIN CAPITAL LETTER W WITH GRAVE
+  '\x1e80'# -> unI64 7809
+  -- LATIN CAPITAL LETTER W WITH ACUTE
+  '\x1e82'# -> unI64 7811
+  -- LATIN CAPITAL LETTER W WITH DIAERESIS
+  '\x1e84'# -> unI64 7813
+  -- LATIN CAPITAL LETTER W WITH DOT ABOVE
+  '\x1e86'# -> unI64 7815
+  -- LATIN CAPITAL LETTER W WITH DOT BELOW
+  '\x1e88'# -> unI64 7817
+  -- LATIN CAPITAL LETTER X WITH DOT ABOVE
+  '\x1e8a'# -> unI64 7819
+  -- LATIN CAPITAL LETTER X WITH DIAERESIS
+  '\x1e8c'# -> unI64 7821
+  -- LATIN CAPITAL LETTER Y WITH DOT ABOVE
+  '\x1e8e'# -> unI64 7823
+  -- LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+  '\x1e90'# -> unI64 7825
+  -- LATIN CAPITAL LETTER Z WITH DOT BELOW
+  '\x1e92'# -> unI64 7827
+  -- LATIN CAPITAL LETTER Z WITH LINE BELOW
+  '\x1e94'# -> unI64 7829
+  -- LATIN SMALL LETTER H WITH LINE BELOW
+  '\x1e96'# -> unI64 1713373288
+  -- LATIN SMALL LETTER T WITH DIAERESIS
+  '\x1e97'# -> unI64 1627390068
+  -- LATIN SMALL LETTER W WITH RING ABOVE
+  '\x1e98'# -> unI64 1631584375
+  -- LATIN SMALL LETTER Y WITH RING ABOVE
+  '\x1e99'# -> unI64 1631584377
+  -- LATIN SMALL LETTER A WITH RIGHT HALF RING
+  '\x1e9a'# -> unI64 1472200801
+  -- LATIN SMALL LETTER LONG S WITH DOT ABOVE
+  '\x1e9b'# -> unI64 7777
+  -- LATIN CAPITAL LETTER SHARP S
+  '\x1e9e'# -> unI64 241172595
+  -- LATIN CAPITAL LETTER A WITH DOT BELOW
+  '\x1ea0'# -> unI64 7841
+  -- LATIN CAPITAL LETTER A WITH HOOK ABOVE
+  '\x1ea2'# -> unI64 7843
+  -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+  '\x1ea4'# -> unI64 7845
+  -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+  '\x1ea6'# -> unI64 7847
+  -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+  '\x1ea8'# -> unI64 7849
+  -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+  '\x1eaa'# -> unI64 7851
+  -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+  '\x1eac'# -> unI64 7853
+  -- LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+  '\x1eae'# -> unI64 7855
+  -- LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+  '\x1eb0'# -> unI64 7857
+  -- LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+  '\x1eb2'# -> unI64 7859
+  -- LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+  '\x1eb4'# -> unI64 7861
+  -- LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+  '\x1eb6'# -> unI64 7863
+  -- LATIN CAPITAL LETTER E WITH DOT BELOW
+  '\x1eb8'# -> unI64 7865
+  -- LATIN CAPITAL LETTER E WITH HOOK ABOVE
+  '\x1eba'# -> unI64 7867
+  -- LATIN CAPITAL LETTER E WITH TILDE
+  '\x1ebc'# -> unI64 7869
+  -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+  '\x1ebe'# -> unI64 7871
+  -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+  '\x1ec0'# -> unI64 7873
+  -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+  '\x1ec2'# -> unI64 7875
+  -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+  '\x1ec4'# -> unI64 7877
+  -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+  '\x1ec6'# -> unI64 7879
+  -- LATIN CAPITAL LETTER I WITH HOOK ABOVE
+  '\x1ec8'# -> unI64 7881
+  -- LATIN CAPITAL LETTER I WITH DOT BELOW
+  '\x1eca'# -> unI64 7883
+  -- LATIN CAPITAL LETTER O WITH DOT BELOW
+  '\x1ecc'# -> unI64 7885
+  -- LATIN CAPITAL LETTER O WITH HOOK ABOVE
+  '\x1ece'# -> unI64 7887
+  -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+  '\x1ed0'# -> unI64 7889
+  -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+  '\x1ed2'# -> unI64 7891
+  -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+  '\x1ed4'# -> unI64 7893
+  -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+  '\x1ed6'# -> unI64 7895
+  -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+  '\x1ed8'# -> unI64 7897
+  -- LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+  '\x1eda'# -> unI64 7899
+  -- LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+  '\x1edc'# -> unI64 7901
+  -- LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+  '\x1ede'# -> unI64 7903
+  -- LATIN CAPITAL LETTER O WITH HORN AND TILDE
+  '\x1ee0'# -> unI64 7905
+  -- LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+  '\x1ee2'# -> unI64 7907
+  -- LATIN CAPITAL LETTER U WITH DOT BELOW
+  '\x1ee4'# -> unI64 7909
+  -- LATIN CAPITAL LETTER U WITH HOOK ABOVE
+  '\x1ee6'# -> unI64 7911
+  -- LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+  '\x1ee8'# -> unI64 7913
+  -- LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+  '\x1eea'# -> unI64 7915
+  -- LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+  '\x1eec'# -> unI64 7917
+  -- LATIN CAPITAL LETTER U WITH HORN AND TILDE
+  '\x1eee'# -> unI64 7919
+  -- LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+  '\x1ef0'# -> unI64 7921
+  -- LATIN CAPITAL LETTER Y WITH GRAVE
+  '\x1ef2'# -> unI64 7923
+  -- LATIN CAPITAL LETTER Y WITH DOT BELOW
+  '\x1ef4'# -> unI64 7925
+  -- LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+  '\x1ef6'# -> unI64 7927
+  -- LATIN CAPITAL LETTER Y WITH TILDE
+  '\x1ef8'# -> unI64 7929
+  -- LATIN CAPITAL LETTER MIDDLE-WELSH LL
+  '\x1efa'# -> unI64 7931
+  -- LATIN CAPITAL LETTER MIDDLE-WELSH V
+  '\x1efc'# -> unI64 7933
+  -- LATIN CAPITAL LETTER Y WITH LOOP
+  '\x1efe'# -> unI64 7935
+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI
+  '\x1f08'# -> unI64 7936
+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA
+  '\x1f09'# -> unI64 7937
+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+  '\x1f0a'# -> unI64 7938
+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+  '\x1f0b'# -> unI64 7939
+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+  '\x1f0c'# -> unI64 7940
+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+  '\x1f0d'# -> unI64 7941
+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+  '\x1f0e'# -> unI64 7942
+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+  '\x1f0f'# -> unI64 7943
+  -- GREEK CAPITAL LETTER EPSILON WITH PSILI
+  '\x1f18'# -> unI64 7952
+  -- GREEK CAPITAL LETTER EPSILON WITH DASIA
+  '\x1f19'# -> unI64 7953
+  -- GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+  '\x1f1a'# -> unI64 7954
+  -- GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+  '\x1f1b'# -> unI64 7955
+  -- GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+  '\x1f1c'# -> unI64 7956
+  -- GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+  '\x1f1d'# -> unI64 7957
+  -- GREEK CAPITAL LETTER ETA WITH PSILI
+  '\x1f28'# -> unI64 7968
+  -- GREEK CAPITAL LETTER ETA WITH DASIA
+  '\x1f29'# -> unI64 7969
+  -- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+  '\x1f2a'# -> unI64 7970
+  -- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+  '\x1f2b'# -> unI64 7971
+  -- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+  '\x1f2c'# -> unI64 7972
+  -- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+  '\x1f2d'# -> unI64 7973
+  -- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+  '\x1f2e'# -> unI64 7974
+  -- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+  '\x1f2f'# -> unI64 7975
+  -- GREEK CAPITAL LETTER IOTA WITH PSILI
+  '\x1f38'# -> unI64 7984
+  -- GREEK CAPITAL LETTER IOTA WITH DASIA
+  '\x1f39'# -> unI64 7985
+  -- GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+  '\x1f3a'# -> unI64 7986
+  -- GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+  '\x1f3b'# -> unI64 7987
+  -- GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+  '\x1f3c'# -> unI64 7988
+  -- GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+  '\x1f3d'# -> unI64 7989
+  -- GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+  '\x1f3e'# -> unI64 7990
+  -- GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+  '\x1f3f'# -> unI64 7991
+  -- GREEK CAPITAL LETTER OMICRON WITH PSILI
+  '\x1f48'# -> unI64 8000
+  -- GREEK CAPITAL LETTER OMICRON WITH DASIA
+  '\x1f49'# -> unI64 8001
+  -- GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+  '\x1f4a'# -> unI64 8002
+  -- GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+  '\x1f4b'# -> unI64 8003
+  -- GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+  '\x1f4c'# -> unI64 8004
+  -- GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+  '\x1f4d'# -> unI64 8005
+  -- GREEK SMALL LETTER UPSILON WITH PSILI
+  '\x1f50'# -> unI64 1650459589
+  -- GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+  '\x1f52'# -> unI64 3377701370987461
+  -- GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+  '\x1f54'# -> unI64 3382099417498565
+  -- GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+  '\x1f56'# -> unI64 3667972440720325
+  -- GREEK CAPITAL LETTER UPSILON WITH DASIA
+  '\x1f59'# -> unI64 8017
+  -- GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+  '\x1f5b'# -> unI64 8019
+  -- GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+  '\x1f5d'# -> unI64 8021
+  -- GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+  '\x1f5f'# -> unI64 8023
+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI
+  '\x1f68'# -> unI64 8032
+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA
+  '\x1f69'# -> unI64 8033
+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+  '\x1f6a'# -> unI64 8034
+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+  '\x1f6b'# -> unI64 8035
+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+  '\x1f6c'# -> unI64 8036
+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+  '\x1f6d'# -> unI64 8037
+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+  '\x1f6e'# -> unI64 8038
+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+  '\x1f6f'# -> unI64 8039
+  -- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+  '\x1f80'# -> unI64 1998593792
+  -- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+  '\x1f81'# -> unI64 1998593793
+  -- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+  '\x1f82'# -> unI64 1998593794
+  -- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+  '\x1f83'# -> unI64 1998593795
+  -- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+  '\x1f84'# -> unI64 1998593796
+  -- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+  '\x1f85'# -> unI64 1998593797
+  -- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+  '\x1f86'# -> unI64 1998593798
+  -- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+  '\x1f87'# -> unI64 1998593799
+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+  '\x1f88'# -> unI64 1998593792
+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+  '\x1f89'# -> unI64 1998593793
+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+  '\x1f8a'# -> unI64 1998593794
+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+  '\x1f8b'# -> unI64 1998593795
+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+  '\x1f8c'# -> unI64 1998593796
+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+  '\x1f8d'# -> unI64 1998593797
+  -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+  '\x1f8e'# -> unI64 1998593798
+  -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+  '\x1f8f'# -> unI64 1998593799
+  -- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+  '\x1f90'# -> unI64 1998593824
+  -- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+  '\x1f91'# -> unI64 1998593825
+  -- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+  '\x1f92'# -> unI64 1998593826
+  -- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+  '\x1f93'# -> unI64 1998593827
+  -- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+  '\x1f94'# -> unI64 1998593828
+  -- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+  '\x1f95'# -> unI64 1998593829
+  -- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+  '\x1f96'# -> unI64 1998593830
+  -- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+  '\x1f97'# -> unI64 1998593831
+  -- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+  '\x1f98'# -> unI64 1998593824
+  -- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+  '\x1f99'# -> unI64 1998593825
+  -- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+  '\x1f9a'# -> unI64 1998593826
+  -- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+  '\x1f9b'# -> unI64 1998593827
+  -- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+  '\x1f9c'# -> unI64 1998593828
+  -- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+  '\x1f9d'# -> unI64 1998593829
+  -- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+  '\x1f9e'# -> unI64 1998593830
+  -- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+  '\x1f9f'# -> unI64 1998593831
+  -- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+  '\x1fa0'# -> unI64 1998593888
+  -- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+  '\x1fa1'# -> unI64 1998593889
+  -- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+  '\x1fa2'# -> unI64 1998593890
+  -- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+  '\x1fa3'# -> unI64 1998593891
+  -- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+  '\x1fa4'# -> unI64 1998593892
+  -- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+  '\x1fa5'# -> unI64 1998593893
+  -- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+  '\x1fa6'# -> unI64 1998593894
+  -- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+  '\x1fa7'# -> unI64 1998593895
+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+  '\x1fa8'# -> unI64 1998593888
+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+  '\x1fa9'# -> unI64 1998593889
+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+  '\x1faa'# -> unI64 1998593890
+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+  '\x1fab'# -> unI64 1998593891
+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+  '\x1fac'# -> unI64 1998593892
+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+  '\x1fad'# -> unI64 1998593893
+  -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+  '\x1fae'# -> unI64 1998593894
+  -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+  '\x1faf'# -> unI64 1998593895
+  -- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+  '\x1fb2'# -> unI64 1998593904
+  -- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+  '\x1fb3'# -> unI64 1998586801
+  -- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+  '\x1fb4'# -> unI64 1998586796
+  -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+  '\x1fb6'# -> unI64 1749025713
+  -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+  '\x1fb7'# -> unI64 4191340074107825
+  -- GREEK CAPITAL LETTER ALPHA WITH VRACHY
+  '\x1fb8'# -> unI64 8112
+  -- GREEK CAPITAL LETTER ALPHA WITH MACRON
+  '\x1fb9'# -> unI64 8113
+  -- GREEK CAPITAL LETTER ALPHA WITH VARIA
+  '\x1fba'# -> unI64 8048
+  -- GREEK CAPITAL LETTER ALPHA WITH OXIA
+  '\x1fbb'# -> unI64 8049
+  -- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+  '\x1fbc'# -> unI64 1998586801
+  -- GREEK PROSGEGRAMMENI
+  '\x1fbe'# -> unI64 953
+  -- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+  '\x1fc2'# -> unI64 1998593908
+  -- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+  '\x1fc3'# -> unI64 1998586807
+  -- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+  '\x1fc4'# -> unI64 1998586798
+  -- GREEK SMALL LETTER ETA WITH PERISPOMENI
+  '\x1fc6'# -> unI64 1749025719
+  -- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+  '\x1fc7'# -> unI64 4191340074107831
+  -- GREEK CAPITAL LETTER EPSILON WITH VARIA
+  '\x1fc8'# -> unI64 8050
+  -- GREEK CAPITAL LETTER EPSILON WITH OXIA
+  '\x1fc9'# -> unI64 8051
+  -- GREEK CAPITAL LETTER ETA WITH VARIA
+  '\x1fca'# -> unI64 8052
+  -- GREEK CAPITAL LETTER ETA WITH OXIA
+  '\x1fcb'# -> unI64 8053
+  -- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+  '\x1fcc'# -> unI64 1998586807
+  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+  '\x1fd2'# -> unI64 3377701347918777
+  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+  '\x1fd3'# -> unI64 3382099394429881
+  -- GREEK SMALL LETTER IOTA WITH PERISPOMENI
+  '\x1fd6'# -> unI64 1749025721
+  -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+  '\x1fd7'# -> unI64 3667972417651641
+  -- GREEK CAPITAL LETTER IOTA WITH VRACHY
+  '\x1fd8'# -> unI64 8144
+  -- GREEK CAPITAL LETTER IOTA WITH MACRON
+  '\x1fd9'# -> unI64 8145
+  -- GREEK CAPITAL LETTER IOTA WITH VARIA
+  '\x1fda'# -> unI64 8054
+  -- GREEK CAPITAL LETTER IOTA WITH OXIA
+  '\x1fdb'# -> unI64 8055
+  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+  '\x1fe2'# -> unI64 3377701347918789
+  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+  '\x1fe3'# -> unI64 3382099394429893
+  -- GREEK SMALL LETTER RHO WITH PSILI
+  '\x1fe4'# -> unI64 1650459585
+  -- GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+  '\x1fe6'# -> unI64 1749025733
+  -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+  '\x1fe7'# -> unI64 3667972417651653
+  -- GREEK CAPITAL LETTER UPSILON WITH VRACHY
+  '\x1fe8'# -> unI64 8160
+  -- GREEK CAPITAL LETTER UPSILON WITH MACRON
+  '\x1fe9'# -> unI64 8161
+  -- GREEK CAPITAL LETTER UPSILON WITH VARIA
+  '\x1fea'# -> unI64 8058
+  -- GREEK CAPITAL LETTER UPSILON WITH OXIA
+  '\x1feb'# -> unI64 8059
+  -- GREEK CAPITAL LETTER RHO WITH DASIA
+  '\x1fec'# -> unI64 8165
+  -- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+  '\x1ff2'# -> unI64 1998593916
+  -- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+  '\x1ff3'# -> unI64 1998586825
+  -- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+  '\x1ff4'# -> unI64 1998586830
+  -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+  '\x1ff6'# -> unI64 1749025737
+  -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+  '\x1ff7'# -> unI64 4191340074107849
+  -- GREEK CAPITAL LETTER OMICRON WITH VARIA
+  '\x1ff8'# -> unI64 8056
+  -- GREEK CAPITAL LETTER OMICRON WITH OXIA
+  '\x1ff9'# -> unI64 8057
+  -- GREEK CAPITAL LETTER OMEGA WITH VARIA
+  '\x1ffa'# -> unI64 8060
+  -- GREEK CAPITAL LETTER OMEGA WITH OXIA
+  '\x1ffb'# -> unI64 8061
+  -- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+  '\x1ffc'# -> unI64 1998586825
+  -- OHM SIGN
+  '\x2126'# -> unI64 969
+  -- KELVIN SIGN
+  '\x212a'# -> unI64 107
+  -- ANGSTROM SIGN
+  '\x212b'# -> unI64 229
+  -- TURNED CAPITAL F
+  '\x2132'# -> unI64 8526
+  -- ROMAN NUMERAL ONE
+  '\x2160'# -> unI64 8560
+  -- ROMAN NUMERAL TWO
+  '\x2161'# -> unI64 8561
+  -- ROMAN NUMERAL THREE
+  '\x2162'# -> unI64 8562
+  -- ROMAN NUMERAL FOUR
+  '\x2163'# -> unI64 8563
+  -- ROMAN NUMERAL FIVE
+  '\x2164'# -> unI64 8564
+  -- ROMAN NUMERAL SIX
+  '\x2165'# -> unI64 8565
+  -- ROMAN NUMERAL SEVEN
+  '\x2166'# -> unI64 8566
+  -- ROMAN NUMERAL EIGHT
+  '\x2167'# -> unI64 8567
+  -- ROMAN NUMERAL NINE
+  '\x2168'# -> unI64 8568
+  -- ROMAN NUMERAL TEN
+  '\x2169'# -> unI64 8569
+  -- ROMAN NUMERAL ELEVEN
+  '\x216a'# -> unI64 8570
+  -- ROMAN NUMERAL TWELVE
+  '\x216b'# -> unI64 8571
+  -- ROMAN NUMERAL FIFTY
+  '\x216c'# -> unI64 8572
+  -- ROMAN NUMERAL ONE HUNDRED
+  '\x216d'# -> unI64 8573
+  -- ROMAN NUMERAL FIVE HUNDRED
+  '\x216e'# -> unI64 8574
+  -- ROMAN NUMERAL ONE THOUSAND
+  '\x216f'# -> unI64 8575
+  -- ROMAN NUMERAL REVERSED ONE HUNDRED
+  '\x2183'# -> unI64 8580
+  -- CIRCLED LATIN CAPITAL LETTER A
+  '\x24b6'# -> unI64 9424
+  -- CIRCLED LATIN CAPITAL LETTER B
+  '\x24b7'# -> unI64 9425
+  -- CIRCLED LATIN CAPITAL LETTER C
+  '\x24b8'# -> unI64 9426
+  -- CIRCLED LATIN CAPITAL LETTER D
+  '\x24b9'# -> unI64 9427
+  -- CIRCLED LATIN CAPITAL LETTER E
+  '\x24ba'# -> unI64 9428
+  -- CIRCLED LATIN CAPITAL LETTER F
+  '\x24bb'# -> unI64 9429
+  -- CIRCLED LATIN CAPITAL LETTER G
+  '\x24bc'# -> unI64 9430
+  -- CIRCLED LATIN CAPITAL LETTER H
+  '\x24bd'# -> unI64 9431
+  -- CIRCLED LATIN CAPITAL LETTER I
+  '\x24be'# -> unI64 9432
+  -- CIRCLED LATIN CAPITAL LETTER J
+  '\x24bf'# -> unI64 9433
+  -- CIRCLED LATIN CAPITAL LETTER K
+  '\x24c0'# -> unI64 9434
+  -- CIRCLED LATIN CAPITAL LETTER L
+  '\x24c1'# -> unI64 9435
+  -- CIRCLED LATIN CAPITAL LETTER M
+  '\x24c2'# -> unI64 9436
+  -- CIRCLED LATIN CAPITAL LETTER N
+  '\x24c3'# -> unI64 9437
+  -- CIRCLED LATIN CAPITAL LETTER O
+  '\x24c4'# -> unI64 9438
+  -- CIRCLED LATIN CAPITAL LETTER P
+  '\x24c5'# -> unI64 9439
+  -- CIRCLED LATIN CAPITAL LETTER Q
+  '\x24c6'# -> unI64 9440
+  -- CIRCLED LATIN CAPITAL LETTER R
+  '\x24c7'# -> unI64 9441
+  -- CIRCLED LATIN CAPITAL LETTER S
+  '\x24c8'# -> unI64 9442
+  -- CIRCLED LATIN CAPITAL LETTER T
+  '\x24c9'# -> unI64 9443
+  -- CIRCLED LATIN CAPITAL LETTER U
+  '\x24ca'# -> unI64 9444
+  -- CIRCLED LATIN CAPITAL LETTER V
+  '\x24cb'# -> unI64 9445
+  -- CIRCLED LATIN CAPITAL LETTER W
+  '\x24cc'# -> unI64 9446
+  -- CIRCLED LATIN CAPITAL LETTER X
+  '\x24cd'# -> unI64 9447
+  -- CIRCLED LATIN CAPITAL LETTER Y
+  '\x24ce'# -> unI64 9448
+  -- CIRCLED LATIN CAPITAL LETTER Z
+  '\x24cf'# -> unI64 9449
+  -- GLAGOLITIC CAPITAL LETTER AZU
+  '\x2c00'# -> unI64 11312
+  -- GLAGOLITIC CAPITAL LETTER BUKY
+  '\x2c01'# -> unI64 11313
+  -- GLAGOLITIC CAPITAL LETTER VEDE
+  '\x2c02'# -> unI64 11314
+  -- GLAGOLITIC CAPITAL LETTER GLAGOLI
+  '\x2c03'# -> unI64 11315
+  -- GLAGOLITIC CAPITAL LETTER DOBRO
+  '\x2c04'# -> unI64 11316
+  -- GLAGOLITIC CAPITAL LETTER YESTU
+  '\x2c05'# -> unI64 11317
+  -- GLAGOLITIC CAPITAL LETTER ZHIVETE
+  '\x2c06'# -> unI64 11318
+  -- GLAGOLITIC CAPITAL LETTER DZELO
+  '\x2c07'# -> unI64 11319
+  -- GLAGOLITIC CAPITAL LETTER ZEMLJA
+  '\x2c08'# -> unI64 11320
+  -- GLAGOLITIC CAPITAL LETTER IZHE
+  '\x2c09'# -> unI64 11321
+  -- GLAGOLITIC CAPITAL LETTER INITIAL IZHE
+  '\x2c0a'# -> unI64 11322
+  -- GLAGOLITIC CAPITAL LETTER I
+  '\x2c0b'# -> unI64 11323
+  -- GLAGOLITIC CAPITAL LETTER DJERVI
+  '\x2c0c'# -> unI64 11324
+  -- GLAGOLITIC CAPITAL LETTER KAKO
+  '\x2c0d'# -> unI64 11325
+  -- GLAGOLITIC CAPITAL LETTER LJUDIJE
+  '\x2c0e'# -> unI64 11326
+  -- GLAGOLITIC CAPITAL LETTER MYSLITE
+  '\x2c0f'# -> unI64 11327
+  -- GLAGOLITIC CAPITAL LETTER NASHI
+  '\x2c10'# -> unI64 11328
+  -- GLAGOLITIC CAPITAL LETTER ONU
+  '\x2c11'# -> unI64 11329
+  -- GLAGOLITIC CAPITAL LETTER POKOJI
+  '\x2c12'# -> unI64 11330
+  -- GLAGOLITIC CAPITAL LETTER RITSI
+  '\x2c13'# -> unI64 11331
+  -- GLAGOLITIC CAPITAL LETTER SLOVO
+  '\x2c14'# -> unI64 11332
+  -- GLAGOLITIC CAPITAL LETTER TVRIDO
+  '\x2c15'# -> unI64 11333
+  -- GLAGOLITIC CAPITAL LETTER UKU
+  '\x2c16'# -> unI64 11334
+  -- GLAGOLITIC CAPITAL LETTER FRITU
+  '\x2c17'# -> unI64 11335
+  -- GLAGOLITIC CAPITAL LETTER HERU
+  '\x2c18'# -> unI64 11336
+  -- GLAGOLITIC CAPITAL LETTER OTU
+  '\x2c19'# -> unI64 11337
+  -- GLAGOLITIC CAPITAL LETTER PE
+  '\x2c1a'# -> unI64 11338
+  -- GLAGOLITIC CAPITAL LETTER SHTA
+  '\x2c1b'# -> unI64 11339
+  -- GLAGOLITIC CAPITAL LETTER TSI
+  '\x2c1c'# -> unI64 11340
+  -- GLAGOLITIC CAPITAL LETTER CHRIVI
+  '\x2c1d'# -> unI64 11341
+  -- GLAGOLITIC CAPITAL LETTER SHA
+  '\x2c1e'# -> unI64 11342
+  -- GLAGOLITIC CAPITAL LETTER YERU
+  '\x2c1f'# -> unI64 11343
+  -- GLAGOLITIC CAPITAL LETTER YERI
+  '\x2c20'# -> unI64 11344
+  -- GLAGOLITIC CAPITAL LETTER YATI
+  '\x2c21'# -> unI64 11345
+  -- GLAGOLITIC CAPITAL LETTER SPIDERY HA
+  '\x2c22'# -> unI64 11346
+  -- GLAGOLITIC CAPITAL LETTER YU
+  '\x2c23'# -> unI64 11347
+  -- GLAGOLITIC CAPITAL LETTER SMALL YUS
+  '\x2c24'# -> unI64 11348
+  -- GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
+  '\x2c25'# -> unI64 11349
+  -- GLAGOLITIC CAPITAL LETTER YO
+  '\x2c26'# -> unI64 11350
+  -- GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
+  '\x2c27'# -> unI64 11351
+  -- GLAGOLITIC CAPITAL LETTER BIG YUS
+  '\x2c28'# -> unI64 11352
+  -- GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
+  '\x2c29'# -> unI64 11353
+  -- GLAGOLITIC CAPITAL LETTER FITA
+  '\x2c2a'# -> unI64 11354
+  -- GLAGOLITIC CAPITAL LETTER IZHITSA
+  '\x2c2b'# -> unI64 11355
+  -- GLAGOLITIC CAPITAL LETTER SHTAPIC
+  '\x2c2c'# -> unI64 11356
+  -- GLAGOLITIC CAPITAL LETTER TROKUTASTI A
+  '\x2c2d'# -> unI64 11357
+  -- GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+  '\x2c2e'# -> unI64 11358
+  -- GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI
+  '\x2c2f'# -> unI64 11359
+  -- LATIN CAPITAL LETTER L WITH DOUBLE BAR
+  '\x2c60'# -> unI64 11361
+  -- LATIN CAPITAL LETTER L WITH MIDDLE TILDE
+  '\x2c62'# -> unI64 619
+  -- LATIN CAPITAL LETTER P WITH STROKE
+  '\x2c63'# -> unI64 7549
+  -- LATIN CAPITAL LETTER R WITH TAIL
+  '\x2c64'# -> unI64 637
+  -- LATIN CAPITAL LETTER H WITH DESCENDER
+  '\x2c67'# -> unI64 11368
+  -- LATIN CAPITAL LETTER K WITH DESCENDER
+  '\x2c69'# -> unI64 11370
+  -- LATIN CAPITAL LETTER Z WITH DESCENDER
+  '\x2c6b'# -> unI64 11372
+  -- LATIN CAPITAL LETTER ALPHA
+  '\x2c6d'# -> unI64 593
+  -- LATIN CAPITAL LETTER M WITH HOOK
+  '\x2c6e'# -> unI64 625
+  -- LATIN CAPITAL LETTER TURNED A
+  '\x2c6f'# -> unI64 592
+  -- LATIN CAPITAL LETTER TURNED ALPHA
+  '\x2c70'# -> unI64 594
+  -- LATIN CAPITAL LETTER W WITH HOOK
+  '\x2c72'# -> unI64 11379
+  -- LATIN CAPITAL LETTER HALF H
+  '\x2c75'# -> unI64 11382
+  -- LATIN CAPITAL LETTER S WITH SWASH TAIL
+  '\x2c7e'# -> unI64 575
+  -- LATIN CAPITAL LETTER Z WITH SWASH TAIL
+  '\x2c7f'# -> unI64 576
+  -- COPTIC CAPITAL LETTER ALFA
+  '\x2c80'# -> unI64 11393
+  -- COPTIC CAPITAL LETTER VIDA
+  '\x2c82'# -> unI64 11395
+  -- COPTIC CAPITAL LETTER GAMMA
+  '\x2c84'# -> unI64 11397
+  -- COPTIC CAPITAL LETTER DALDA
+  '\x2c86'# -> unI64 11399
+  -- COPTIC CAPITAL LETTER EIE
+  '\x2c88'# -> unI64 11401
+  -- COPTIC CAPITAL LETTER SOU
+  '\x2c8a'# -> unI64 11403
+  -- COPTIC CAPITAL LETTER ZATA
+  '\x2c8c'# -> unI64 11405
+  -- COPTIC CAPITAL LETTER HATE
+  '\x2c8e'# -> unI64 11407
+  -- COPTIC CAPITAL LETTER THETHE
+  '\x2c90'# -> unI64 11409
+  -- COPTIC CAPITAL LETTER IAUDA
+  '\x2c92'# -> unI64 11411
+  -- COPTIC CAPITAL LETTER KAPA
+  '\x2c94'# -> unI64 11413
+  -- COPTIC CAPITAL LETTER LAULA
+  '\x2c96'# -> unI64 11415
+  -- COPTIC CAPITAL LETTER MI
+  '\x2c98'# -> unI64 11417
+  -- COPTIC CAPITAL LETTER NI
+  '\x2c9a'# -> unI64 11419
+  -- COPTIC CAPITAL LETTER KSI
+  '\x2c9c'# -> unI64 11421
+  -- COPTIC CAPITAL LETTER O
+  '\x2c9e'# -> unI64 11423
+  -- COPTIC CAPITAL LETTER PI
+  '\x2ca0'# -> unI64 11425
+  -- COPTIC CAPITAL LETTER RO
+  '\x2ca2'# -> unI64 11427
+  -- COPTIC CAPITAL LETTER SIMA
+  '\x2ca4'# -> unI64 11429
+  -- COPTIC CAPITAL LETTER TAU
+  '\x2ca6'# -> unI64 11431
+  -- COPTIC CAPITAL LETTER UA
+  '\x2ca8'# -> unI64 11433
+  -- COPTIC CAPITAL LETTER FI
+  '\x2caa'# -> unI64 11435
+  -- COPTIC CAPITAL LETTER KHI
+  '\x2cac'# -> unI64 11437
+  -- COPTIC CAPITAL LETTER PSI
+  '\x2cae'# -> unI64 11439
+  -- COPTIC CAPITAL LETTER OOU
+  '\x2cb0'# -> unI64 11441
+  -- COPTIC CAPITAL LETTER DIALECT-P ALEF
+  '\x2cb2'# -> unI64 11443
+  -- COPTIC CAPITAL LETTER OLD COPTIC AIN
+  '\x2cb4'# -> unI64 11445
+  -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
+  '\x2cb6'# -> unI64 11447
+  -- COPTIC CAPITAL LETTER DIALECT-P KAPA
+  '\x2cb8'# -> unI64 11449
+  -- COPTIC CAPITAL LETTER DIALECT-P NI
+  '\x2cba'# -> unI64 11451
+  -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
+  '\x2cbc'# -> unI64 11453
+  -- COPTIC CAPITAL LETTER OLD COPTIC OOU
+  '\x2cbe'# -> unI64 11455
+  -- COPTIC CAPITAL LETTER SAMPI
+  '\x2cc0'# -> unI64 11457
+  -- COPTIC CAPITAL LETTER CROSSED SHEI
+  '\x2cc2'# -> unI64 11459
+  -- COPTIC CAPITAL LETTER OLD COPTIC SHEI
+  '\x2cc4'# -> unI64 11461
+  -- COPTIC CAPITAL LETTER OLD COPTIC ESH
+  '\x2cc6'# -> unI64 11463
+  -- COPTIC CAPITAL LETTER AKHMIMIC KHEI
+  '\x2cc8'# -> unI64 11465
+  -- COPTIC CAPITAL LETTER DIALECT-P HORI
+  '\x2cca'# -> unI64 11467
+  -- COPTIC CAPITAL LETTER OLD COPTIC HORI
+  '\x2ccc'# -> unI64 11469
+  -- COPTIC CAPITAL LETTER OLD COPTIC HA
+  '\x2cce'# -> unI64 11471
+  -- COPTIC CAPITAL LETTER L-SHAPED HA
+  '\x2cd0'# -> unI64 11473
+  -- COPTIC CAPITAL LETTER OLD COPTIC HEI
+  '\x2cd2'# -> unI64 11475
+  -- COPTIC CAPITAL LETTER OLD COPTIC HAT
+  '\x2cd4'# -> unI64 11477
+  -- COPTIC CAPITAL LETTER OLD COPTIC GANGIA
+  '\x2cd6'# -> unI64 11479
+  -- COPTIC CAPITAL LETTER OLD COPTIC DJA
+  '\x2cd8'# -> unI64 11481
+  -- COPTIC CAPITAL LETTER OLD COPTIC SHIMA
+  '\x2cda'# -> unI64 11483
+  -- COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
+  '\x2cdc'# -> unI64 11485
+  -- COPTIC CAPITAL LETTER OLD NUBIAN NGI
+  '\x2cde'# -> unI64 11487
+  -- COPTIC CAPITAL LETTER OLD NUBIAN NYI
+  '\x2ce0'# -> unI64 11489
+  -- COPTIC CAPITAL LETTER OLD NUBIAN WAU
+  '\x2ce2'# -> unI64 11491
+  -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
+  '\x2ceb'# -> unI64 11500
+  -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
+  '\x2ced'# -> unI64 11502
+  -- COPTIC CAPITAL LETTER BOHAIRIC KHEI
+  '\x2cf2'# -> unI64 11507
+  -- CYRILLIC CAPITAL LETTER ZEMLYA
+  '\xa640'# -> unI64 42561
+  -- CYRILLIC CAPITAL LETTER DZELO
+  '\xa642'# -> unI64 42563
+  -- CYRILLIC CAPITAL LETTER REVERSED DZE
+  '\xa644'# -> unI64 42565
+  -- CYRILLIC CAPITAL LETTER IOTA
+  '\xa646'# -> unI64 42567
+  -- CYRILLIC CAPITAL LETTER DJERV
+  '\xa648'# -> unI64 42569
+  -- CYRILLIC CAPITAL LETTER MONOGRAPH UK
+  '\xa64a'# -> unI64 42571
+  -- CYRILLIC CAPITAL LETTER BROAD OMEGA
+  '\xa64c'# -> unI64 42573
+  -- CYRILLIC CAPITAL LETTER NEUTRAL YER
+  '\xa64e'# -> unI64 42575
+  -- CYRILLIC CAPITAL LETTER YERU WITH BACK YER
+  '\xa650'# -> unI64 42577
+  -- CYRILLIC CAPITAL LETTER IOTIFIED YAT
+  '\xa652'# -> unI64 42579
+  -- CYRILLIC CAPITAL LETTER REVERSED YU
+  '\xa654'# -> unI64 42581
+  -- CYRILLIC CAPITAL LETTER IOTIFIED A
+  '\xa656'# -> unI64 42583
+  -- CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
+  '\xa658'# -> unI64 42585
+  -- CYRILLIC CAPITAL LETTER BLENDED YUS
+  '\xa65a'# -> unI64 42587
+  -- CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
+  '\xa65c'# -> unI64 42589
+  -- CYRILLIC CAPITAL LETTER YN
+  '\xa65e'# -> unI64 42591
+  -- CYRILLIC CAPITAL LETTER REVERSED TSE
+  '\xa660'# -> unI64 42593
+  -- CYRILLIC CAPITAL LETTER SOFT DE
+  '\xa662'# -> unI64 42595
+  -- CYRILLIC CAPITAL LETTER SOFT EL
+  '\xa664'# -> unI64 42597
+  -- CYRILLIC CAPITAL LETTER SOFT EM
+  '\xa666'# -> unI64 42599
+  -- CYRILLIC CAPITAL LETTER MONOCULAR O
+  '\xa668'# -> unI64 42601
+  -- CYRILLIC CAPITAL LETTER BINOCULAR O
+  '\xa66a'# -> unI64 42603
+  -- CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
+  '\xa66c'# -> unI64 42605
+  -- CYRILLIC CAPITAL LETTER DWE
+  '\xa680'# -> unI64 42625
+  -- CYRILLIC CAPITAL LETTER DZWE
+  '\xa682'# -> unI64 42627
+  -- CYRILLIC CAPITAL LETTER ZHWE
+  '\xa684'# -> unI64 42629
+  -- CYRILLIC CAPITAL LETTER CCHE
+  '\xa686'# -> unI64 42631
+  -- CYRILLIC CAPITAL LETTER DZZE
+  '\xa688'# -> unI64 42633
+  -- CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
+  '\xa68a'# -> unI64 42635
+  -- CYRILLIC CAPITAL LETTER TWE
+  '\xa68c'# -> unI64 42637
+  -- CYRILLIC CAPITAL LETTER TSWE
+  '\xa68e'# -> unI64 42639
+  -- CYRILLIC CAPITAL LETTER TSSE
+  '\xa690'# -> unI64 42641
+  -- CYRILLIC CAPITAL LETTER TCHE
+  '\xa692'# -> unI64 42643
+  -- CYRILLIC CAPITAL LETTER HWE
+  '\xa694'# -> unI64 42645
+  -- CYRILLIC CAPITAL LETTER SHWE
+  '\xa696'# -> unI64 42647
+  -- CYRILLIC CAPITAL LETTER DOUBLE O
+  '\xa698'# -> unI64 42649
+  -- CYRILLIC CAPITAL LETTER CROSSED O
+  '\xa69a'# -> unI64 42651
+  -- LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
+  '\xa722'# -> unI64 42787
+  -- LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
+  '\xa724'# -> unI64 42789
+  -- LATIN CAPITAL LETTER HENG
+  '\xa726'# -> unI64 42791
+  -- LATIN CAPITAL LETTER TZ
+  '\xa728'# -> unI64 42793
+  -- LATIN CAPITAL LETTER TRESILLO
+  '\xa72a'# -> unI64 42795
+  -- LATIN CAPITAL LETTER CUATRILLO
+  '\xa72c'# -> unI64 42797
+  -- LATIN CAPITAL LETTER CUATRILLO WITH COMMA
+  '\xa72e'# -> unI64 42799
+  -- LATIN CAPITAL LETTER AA
+  '\xa732'# -> unI64 42803
+  -- LATIN CAPITAL LETTER AO
+  '\xa734'# -> unI64 42805
+  -- LATIN CAPITAL LETTER AU
+  '\xa736'# -> unI64 42807
+  -- LATIN CAPITAL LETTER AV
+  '\xa738'# -> unI64 42809
+  -- LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
+  '\xa73a'# -> unI64 42811
+  -- LATIN CAPITAL LETTER AY
+  '\xa73c'# -> unI64 42813
+  -- LATIN CAPITAL LETTER REVERSED C WITH DOT
+  '\xa73e'# -> unI64 42815
+  -- LATIN CAPITAL LETTER K WITH STROKE
+  '\xa740'# -> unI64 42817
+  -- LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
+  '\xa742'# -> unI64 42819
+  -- LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
+  '\xa744'# -> unI64 42821
+  -- LATIN CAPITAL LETTER BROKEN L
+  '\xa746'# -> unI64 42823
+  -- LATIN CAPITAL LETTER L WITH HIGH STROKE
+  '\xa748'# -> unI64 42825
+  -- LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
+  '\xa74a'# -> unI64 42827
+  -- LATIN CAPITAL LETTER O WITH LOOP
+  '\xa74c'# -> unI64 42829
+  -- LATIN CAPITAL LETTER OO
+  '\xa74e'# -> unI64 42831
+  -- LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
+  '\xa750'# -> unI64 42833
+  -- LATIN CAPITAL LETTER P WITH FLOURISH
+  '\xa752'# -> unI64 42835
+  -- LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
+  '\xa754'# -> unI64 42837
+  -- LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
+  '\xa756'# -> unI64 42839
+  -- LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
+  '\xa758'# -> unI64 42841
+  -- LATIN CAPITAL LETTER R ROTUNDA
+  '\xa75a'# -> unI64 42843
+  -- LATIN CAPITAL LETTER RUM ROTUNDA
+  '\xa75c'# -> unI64 42845
+  -- LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
+  '\xa75e'# -> unI64 42847
+  -- LATIN CAPITAL LETTER VY
+  '\xa760'# -> unI64 42849
+  -- LATIN CAPITAL LETTER VISIGOTHIC Z
+  '\xa762'# -> unI64 42851
+  -- LATIN CAPITAL LETTER THORN WITH STROKE
+  '\xa764'# -> unI64 42853
+  -- LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
+  '\xa766'# -> unI64 42855
+  -- LATIN CAPITAL LETTER VEND
+  '\xa768'# -> unI64 42857
+  -- LATIN CAPITAL LETTER ET
+  '\xa76a'# -> unI64 42859
+  -- LATIN CAPITAL LETTER IS
+  '\xa76c'# -> unI64 42861
+  -- LATIN CAPITAL LETTER CON
+  '\xa76e'# -> unI64 42863
+  -- LATIN CAPITAL LETTER INSULAR D
+  '\xa779'# -> unI64 42874
+  -- LATIN CAPITAL LETTER INSULAR F
+  '\xa77b'# -> unI64 42876
+  -- LATIN CAPITAL LETTER INSULAR G
+  '\xa77d'# -> unI64 7545
+  -- LATIN CAPITAL LETTER TURNED INSULAR G
+  '\xa77e'# -> unI64 42879
+  -- LATIN CAPITAL LETTER TURNED L
+  '\xa780'# -> unI64 42881
+  -- LATIN CAPITAL LETTER INSULAR R
+  '\xa782'# -> unI64 42883
+  -- LATIN CAPITAL LETTER INSULAR S
+  '\xa784'# -> unI64 42885
+  -- LATIN CAPITAL LETTER INSULAR T
+  '\xa786'# -> unI64 42887
+  -- LATIN CAPITAL LETTER SALTILLO
+  '\xa78b'# -> unI64 42892
+  -- LATIN CAPITAL LETTER TURNED H
+  '\xa78d'# -> unI64 613
+  -- LATIN CAPITAL LETTER N WITH DESCENDER
+  '\xa790'# -> unI64 42897
+  -- LATIN CAPITAL LETTER C WITH BAR
+  '\xa792'# -> unI64 42899
+  -- LATIN CAPITAL LETTER B WITH FLOURISH
+  '\xa796'# -> unI64 42903
+  -- LATIN CAPITAL LETTER F WITH STROKE
+  '\xa798'# -> unI64 42905
+  -- LATIN CAPITAL LETTER VOLAPUK AE
+  '\xa79a'# -> unI64 42907
+  -- LATIN CAPITAL LETTER VOLAPUK OE
+  '\xa79c'# -> unI64 42909
+  -- LATIN CAPITAL LETTER VOLAPUK UE
+  '\xa79e'# -> unI64 42911
+  -- LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
+  '\xa7a0'# -> unI64 42913
+  -- LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
+  '\xa7a2'# -> unI64 42915
+  -- LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
+  '\xa7a4'# -> unI64 42917
+  -- LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
+  '\xa7a6'# -> unI64 42919
+  -- LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
+  '\xa7a8'# -> unI64 42921
+  -- LATIN CAPITAL LETTER H WITH HOOK
+  '\xa7aa'# -> unI64 614
+  -- LATIN CAPITAL LETTER REVERSED OPEN E
+  '\xa7ab'# -> unI64 604
+  -- LATIN CAPITAL LETTER SCRIPT G
+  '\xa7ac'# -> unI64 609
+  -- LATIN CAPITAL LETTER L WITH BELT
+  '\xa7ad'# -> unI64 620
+  -- LATIN CAPITAL LETTER SMALL CAPITAL I
+  '\xa7ae'# -> unI64 618
+  -- LATIN CAPITAL LETTER TURNED K
+  '\xa7b0'# -> unI64 670
+  -- LATIN CAPITAL LETTER TURNED T
+  '\xa7b1'# -> unI64 647
+  -- LATIN CAPITAL LETTER J WITH CROSSED-TAIL
+  '\xa7b2'# -> unI64 669
+  -- LATIN CAPITAL LETTER CHI
+  '\xa7b3'# -> unI64 43859
+  -- LATIN CAPITAL LETTER BETA
+  '\xa7b4'# -> unI64 42933
+  -- LATIN CAPITAL LETTER OMEGA
+  '\xa7b6'# -> unI64 42935
+  -- LATIN CAPITAL LETTER U WITH STROKE
+  '\xa7b8'# -> unI64 42937
+  -- LATIN CAPITAL LETTER GLOTTAL A
+  '\xa7ba'# -> unI64 42939
+  -- LATIN CAPITAL LETTER GLOTTAL I
+  '\xa7bc'# -> unI64 42941
+  -- LATIN CAPITAL LETTER GLOTTAL U
+  '\xa7be'# -> unI64 42943
+  -- LATIN CAPITAL LETTER OLD POLISH O
+  '\xa7c0'# -> unI64 42945
+  -- LATIN CAPITAL LETTER ANGLICANA W
+  '\xa7c2'# -> unI64 42947
+  -- LATIN CAPITAL LETTER C WITH PALATAL HOOK
+  '\xa7c4'# -> unI64 42900
+  -- LATIN CAPITAL LETTER S WITH HOOK
+  '\xa7c5'# -> unI64 642
+  -- LATIN CAPITAL LETTER Z WITH PALATAL HOOK
+  '\xa7c6'# -> unI64 7566
+  -- LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY
+  '\xa7c7'# -> unI64 42952
+  -- LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
+  '\xa7c9'# -> unI64 42954
+  -- LATIN CAPITAL LETTER CLOSED INSULAR G
+  '\xa7d0'# -> unI64 42961
+  -- LATIN CAPITAL LETTER MIDDLE SCOTS S
+  '\xa7d6'# -> unI64 42967
+  -- LATIN CAPITAL LETTER SIGMOID S
+  '\xa7d8'# -> unI64 42969
+  -- LATIN CAPITAL LETTER REVERSED HALF H
+  '\xa7f5'# -> unI64 42998
+  -- CHEROKEE SMALL LETTER A
+  '\xab70'# -> unI64 5024
+  -- CHEROKEE SMALL LETTER E
+  '\xab71'# -> unI64 5025
+  -- CHEROKEE SMALL LETTER I
+  '\xab72'# -> unI64 5026
+  -- CHEROKEE SMALL LETTER O
+  '\xab73'# -> unI64 5027
+  -- CHEROKEE SMALL LETTER U
+  '\xab74'# -> unI64 5028
+  -- CHEROKEE SMALL LETTER V
+  '\xab75'# -> unI64 5029
+  -- CHEROKEE SMALL LETTER GA
+  '\xab76'# -> unI64 5030
+  -- CHEROKEE SMALL LETTER KA
+  '\xab77'# -> unI64 5031
+  -- CHEROKEE SMALL LETTER GE
+  '\xab78'# -> unI64 5032
+  -- CHEROKEE SMALL LETTER GI
+  '\xab79'# -> unI64 5033
+  -- CHEROKEE SMALL LETTER GO
+  '\xab7a'# -> unI64 5034
+  -- CHEROKEE SMALL LETTER GU
+  '\xab7b'# -> unI64 5035
+  -- CHEROKEE SMALL LETTER GV
+  '\xab7c'# -> unI64 5036
+  -- CHEROKEE SMALL LETTER HA
+  '\xab7d'# -> unI64 5037
+  -- CHEROKEE SMALL LETTER HE
+  '\xab7e'# -> unI64 5038
+  -- CHEROKEE SMALL LETTER HI
+  '\xab7f'# -> unI64 5039
+  -- CHEROKEE SMALL LETTER HO
+  '\xab80'# -> unI64 5040
+  -- CHEROKEE SMALL LETTER HU
+  '\xab81'# -> unI64 5041
+  -- CHEROKEE SMALL LETTER HV
+  '\xab82'# -> unI64 5042
+  -- CHEROKEE SMALL LETTER LA
+  '\xab83'# -> unI64 5043
+  -- CHEROKEE SMALL LETTER LE
+  '\xab84'# -> unI64 5044
+  -- CHEROKEE SMALL LETTER LI
+  '\xab85'# -> unI64 5045
+  -- CHEROKEE SMALL LETTER LO
+  '\xab86'# -> unI64 5046
+  -- CHEROKEE SMALL LETTER LU
+  '\xab87'# -> unI64 5047
+  -- CHEROKEE SMALL LETTER LV
+  '\xab88'# -> unI64 5048
+  -- CHEROKEE SMALL LETTER MA
+  '\xab89'# -> unI64 5049
+  -- CHEROKEE SMALL LETTER ME
+  '\xab8a'# -> unI64 5050
+  -- CHEROKEE SMALL LETTER MI
+  '\xab8b'# -> unI64 5051
+  -- CHEROKEE SMALL LETTER MO
+  '\xab8c'# -> unI64 5052
+  -- CHEROKEE SMALL LETTER MU
+  '\xab8d'# -> unI64 5053
+  -- CHEROKEE SMALL LETTER NA
+  '\xab8e'# -> unI64 5054
+  -- CHEROKEE SMALL LETTER HNA
+  '\xab8f'# -> unI64 5055
+  -- CHEROKEE SMALL LETTER NAH
+  '\xab90'# -> unI64 5056
+  -- CHEROKEE SMALL LETTER NE
+  '\xab91'# -> unI64 5057
+  -- CHEROKEE SMALL LETTER NI
+  '\xab92'# -> unI64 5058
+  -- CHEROKEE SMALL LETTER NO
+  '\xab93'# -> unI64 5059
+  -- CHEROKEE SMALL LETTER NU
+  '\xab94'# -> unI64 5060
+  -- CHEROKEE SMALL LETTER NV
+  '\xab95'# -> unI64 5061
+  -- CHEROKEE SMALL LETTER QUA
+  '\xab96'# -> unI64 5062
+  -- CHEROKEE SMALL LETTER QUE
+  '\xab97'# -> unI64 5063
+  -- CHEROKEE SMALL LETTER QUI
+  '\xab98'# -> unI64 5064
+  -- CHEROKEE SMALL LETTER QUO
+  '\xab99'# -> unI64 5065
+  -- CHEROKEE SMALL LETTER QUU
+  '\xab9a'# -> unI64 5066
+  -- CHEROKEE SMALL LETTER QUV
+  '\xab9b'# -> unI64 5067
+  -- CHEROKEE SMALL LETTER SA
+  '\xab9c'# -> unI64 5068
+  -- CHEROKEE SMALL LETTER S
+  '\xab9d'# -> unI64 5069
+  -- CHEROKEE SMALL LETTER SE
+  '\xab9e'# -> unI64 5070
+  -- CHEROKEE SMALL LETTER SI
+  '\xab9f'# -> unI64 5071
+  -- CHEROKEE SMALL LETTER SO
+  '\xaba0'# -> unI64 5072
+  -- CHEROKEE SMALL LETTER SU
+  '\xaba1'# -> unI64 5073
+  -- CHEROKEE SMALL LETTER SV
+  '\xaba2'# -> unI64 5074
+  -- CHEROKEE SMALL LETTER DA
+  '\xaba3'# -> unI64 5075
+  -- CHEROKEE SMALL LETTER TA
+  '\xaba4'# -> unI64 5076
+  -- CHEROKEE SMALL LETTER DE
+  '\xaba5'# -> unI64 5077
+  -- CHEROKEE SMALL LETTER TE
+  '\xaba6'# -> unI64 5078
+  -- CHEROKEE SMALL LETTER DI
+  '\xaba7'# -> unI64 5079
+  -- CHEROKEE SMALL LETTER TI
+  '\xaba8'# -> unI64 5080
+  -- CHEROKEE SMALL LETTER DO
+  '\xaba9'# -> unI64 5081
+  -- CHEROKEE SMALL LETTER DU
+  '\xabaa'# -> unI64 5082
+  -- CHEROKEE SMALL LETTER DV
+  '\xabab'# -> unI64 5083
+  -- CHEROKEE SMALL LETTER DLA
+  '\xabac'# -> unI64 5084
+  -- CHEROKEE SMALL LETTER TLA
+  '\xabad'# -> unI64 5085
+  -- CHEROKEE SMALL LETTER TLE
+  '\xabae'# -> unI64 5086
+  -- CHEROKEE SMALL LETTER TLI
+  '\xabaf'# -> unI64 5087
+  -- CHEROKEE SMALL LETTER TLO
+  '\xabb0'# -> unI64 5088
+  -- CHEROKEE SMALL LETTER TLU
+  '\xabb1'# -> unI64 5089
+  -- CHEROKEE SMALL LETTER TLV
+  '\xabb2'# -> unI64 5090
+  -- CHEROKEE SMALL LETTER TSA
+  '\xabb3'# -> unI64 5091
+  -- CHEROKEE SMALL LETTER TSE
+  '\xabb4'# -> unI64 5092
+  -- CHEROKEE SMALL LETTER TSI
+  '\xabb5'# -> unI64 5093
+  -- CHEROKEE SMALL LETTER TSO
+  '\xabb6'# -> unI64 5094
+  -- CHEROKEE SMALL LETTER TSU
+  '\xabb7'# -> unI64 5095
+  -- CHEROKEE SMALL LETTER TSV
+  '\xabb8'# -> unI64 5096
+  -- CHEROKEE SMALL LETTER WA
+  '\xabb9'# -> unI64 5097
+  -- CHEROKEE SMALL LETTER WE
+  '\xabba'# -> unI64 5098
+  -- CHEROKEE SMALL LETTER WI
+  '\xabbb'# -> unI64 5099
+  -- CHEROKEE SMALL LETTER WO
+  '\xabbc'# -> unI64 5100
+  -- CHEROKEE SMALL LETTER WU
+  '\xabbd'# -> unI64 5101
+  -- CHEROKEE SMALL LETTER WV
+  '\xabbe'# -> unI64 5102
+  -- CHEROKEE SMALL LETTER YA
+  '\xabbf'# -> unI64 5103
+  -- LATIN SMALL LIGATURE FF
+  '\xfb00'# -> unI64 213909606
+  -- LATIN SMALL LIGATURE FI
+  '\xfb01'# -> unI64 220201062
+  -- LATIN SMALL LIGATURE FL
+  '\xfb02'# -> unI64 226492518
+  -- LATIN SMALL LIGATURE FFI
+  '\xfb03'# -> unI64 461795097575526
+  -- LATIN SMALL LIGATURE FFL
+  '\xfb04'# -> unI64 474989237108838
+  -- LATIN SMALL LIGATURE LONG S T
+  '\xfb05'# -> unI64 243269747
+  -- LATIN SMALL LIGATURE ST
+  '\xfb06'# -> unI64 243269747
+  -- ARMENIAN SMALL LIGATURE MEN NOW
+  '\xfb13'# -> unI64 2931819892
+  -- ARMENIAN SMALL LIGATURE MEN ECH
+  '\xfb14'# -> unI64 2896168308
+  -- ARMENIAN SMALL LIGATURE MEN INI
+  '\xfb15'# -> unI64 2908751220
+  -- ARMENIAN SMALL LIGATURE VEW NOW
+  '\xfb16'# -> unI64 2931819902
+  -- ARMENIAN SMALL LIGATURE MEN XEH
+  '\xfb17'# -> unI64 2912945524
+  -- FULLWIDTH LATIN CAPITAL LETTER A
+  '\xff21'# -> unI64 65345
+  -- FULLWIDTH LATIN CAPITAL LETTER B
+  '\xff22'# -> unI64 65346
+  -- FULLWIDTH LATIN CAPITAL LETTER C
+  '\xff23'# -> unI64 65347
+  -- FULLWIDTH LATIN CAPITAL LETTER D
+  '\xff24'# -> unI64 65348
+  -- FULLWIDTH LATIN CAPITAL LETTER E
+  '\xff25'# -> unI64 65349
+  -- FULLWIDTH LATIN CAPITAL LETTER F
+  '\xff26'# -> unI64 65350
+  -- FULLWIDTH LATIN CAPITAL LETTER G
+  '\xff27'# -> unI64 65351
+  -- FULLWIDTH LATIN CAPITAL LETTER H
+  '\xff28'# -> unI64 65352
+  -- FULLWIDTH LATIN CAPITAL LETTER I
+  '\xff29'# -> unI64 65353
+  -- FULLWIDTH LATIN CAPITAL LETTER J
+  '\xff2a'# -> unI64 65354
+  -- FULLWIDTH LATIN CAPITAL LETTER K
+  '\xff2b'# -> unI64 65355
+  -- FULLWIDTH LATIN CAPITAL LETTER L
+  '\xff2c'# -> unI64 65356
+  -- FULLWIDTH LATIN CAPITAL LETTER M
+  '\xff2d'# -> unI64 65357
+  -- FULLWIDTH LATIN CAPITAL LETTER N
+  '\xff2e'# -> unI64 65358
+  -- FULLWIDTH LATIN CAPITAL LETTER O
+  '\xff2f'# -> unI64 65359
+  -- FULLWIDTH LATIN CAPITAL LETTER P
+  '\xff30'# -> unI64 65360
+  -- FULLWIDTH LATIN CAPITAL LETTER Q
+  '\xff31'# -> unI64 65361
+  -- FULLWIDTH LATIN CAPITAL LETTER R
+  '\xff32'# -> unI64 65362
+  -- FULLWIDTH LATIN CAPITAL LETTER S
+  '\xff33'# -> unI64 65363
+  -- FULLWIDTH LATIN CAPITAL LETTER T
+  '\xff34'# -> unI64 65364
+  -- FULLWIDTH LATIN CAPITAL LETTER U
+  '\xff35'# -> unI64 65365
+  -- FULLWIDTH LATIN CAPITAL LETTER V
+  '\xff36'# -> unI64 65366
+  -- FULLWIDTH LATIN CAPITAL LETTER W
+  '\xff37'# -> unI64 65367
+  -- FULLWIDTH LATIN CAPITAL LETTER X
+  '\xff38'# -> unI64 65368
+  -- FULLWIDTH LATIN CAPITAL LETTER Y
+  '\xff39'# -> unI64 65369
+  -- FULLWIDTH LATIN CAPITAL LETTER Z
+  '\xff3a'# -> unI64 65370
+  -- DESERET CAPITAL LETTER LONG I
+  '\x10400'# -> unI64 66600
+  -- DESERET CAPITAL LETTER LONG E
+  '\x10401'# -> unI64 66601
+  -- DESERET CAPITAL LETTER LONG A
+  '\x10402'# -> unI64 66602
+  -- DESERET CAPITAL LETTER LONG AH
+  '\x10403'# -> unI64 66603
+  -- DESERET CAPITAL LETTER LONG O
+  '\x10404'# -> unI64 66604
+  -- DESERET CAPITAL LETTER LONG OO
+  '\x10405'# -> unI64 66605
+  -- DESERET CAPITAL LETTER SHORT I
+  '\x10406'# -> unI64 66606
+  -- DESERET CAPITAL LETTER SHORT E
+  '\x10407'# -> unI64 66607
+  -- DESERET CAPITAL LETTER SHORT A
+  '\x10408'# -> unI64 66608
+  -- DESERET CAPITAL LETTER SHORT AH
+  '\x10409'# -> unI64 66609
+  -- DESERET CAPITAL LETTER SHORT O
+  '\x1040a'# -> unI64 66610
+  -- DESERET CAPITAL LETTER SHORT OO
+  '\x1040b'# -> unI64 66611
+  -- DESERET CAPITAL LETTER AY
+  '\x1040c'# -> unI64 66612
+  -- DESERET CAPITAL LETTER OW
+  '\x1040d'# -> unI64 66613
+  -- DESERET CAPITAL LETTER WU
+  '\x1040e'# -> unI64 66614
+  -- DESERET CAPITAL LETTER YEE
+  '\x1040f'# -> unI64 66615
+  -- DESERET CAPITAL LETTER H
+  '\x10410'# -> unI64 66616
+  -- DESERET CAPITAL LETTER PEE
+  '\x10411'# -> unI64 66617
+  -- DESERET CAPITAL LETTER BEE
+  '\x10412'# -> unI64 66618
+  -- DESERET CAPITAL LETTER TEE
+  '\x10413'# -> unI64 66619
+  -- DESERET CAPITAL LETTER DEE
+  '\x10414'# -> unI64 66620
+  -- DESERET CAPITAL LETTER CHEE
+  '\x10415'# -> unI64 66621
+  -- DESERET CAPITAL LETTER JEE
+  '\x10416'# -> unI64 66622
+  -- DESERET CAPITAL LETTER KAY
+  '\x10417'# -> unI64 66623
+  -- DESERET CAPITAL LETTER GAY
+  '\x10418'# -> unI64 66624
+  -- DESERET CAPITAL LETTER EF
+  '\x10419'# -> unI64 66625
+  -- DESERET CAPITAL LETTER VEE
+  '\x1041a'# -> unI64 66626
+  -- DESERET CAPITAL LETTER ETH
+  '\x1041b'# -> unI64 66627
+  -- DESERET CAPITAL LETTER THEE
+  '\x1041c'# -> unI64 66628
+  -- DESERET CAPITAL LETTER ES
+  '\x1041d'# -> unI64 66629
+  -- DESERET CAPITAL LETTER ZEE
+  '\x1041e'# -> unI64 66630
+  -- DESERET CAPITAL LETTER ESH
+  '\x1041f'# -> unI64 66631
+  -- DESERET CAPITAL LETTER ZHEE
+  '\x10420'# -> unI64 66632
+  -- DESERET CAPITAL LETTER ER
+  '\x10421'# -> unI64 66633
+  -- DESERET CAPITAL LETTER EL
+  '\x10422'# -> unI64 66634
+  -- DESERET CAPITAL LETTER EM
+  '\x10423'# -> unI64 66635
+  -- DESERET CAPITAL LETTER EN
+  '\x10424'# -> unI64 66636
+  -- DESERET CAPITAL LETTER ENG
+  '\x10425'# -> unI64 66637
+  -- DESERET CAPITAL LETTER OI
+  '\x10426'# -> unI64 66638
+  -- DESERET CAPITAL LETTER EW
+  '\x10427'# -> unI64 66639
+  -- OSAGE CAPITAL LETTER A
+  '\x104b0'# -> unI64 66776
+  -- OSAGE CAPITAL LETTER AI
+  '\x104b1'# -> unI64 66777
+  -- OSAGE CAPITAL LETTER AIN
+  '\x104b2'# -> unI64 66778
+  -- OSAGE CAPITAL LETTER AH
+  '\x104b3'# -> unI64 66779
+  -- OSAGE CAPITAL LETTER BRA
+  '\x104b4'# -> unI64 66780
+  -- OSAGE CAPITAL LETTER CHA
+  '\x104b5'# -> unI64 66781
+  -- OSAGE CAPITAL LETTER EHCHA
+  '\x104b6'# -> unI64 66782
+  -- OSAGE CAPITAL LETTER E
+  '\x104b7'# -> unI64 66783
+  -- OSAGE CAPITAL LETTER EIN
+  '\x104b8'# -> unI64 66784
+  -- OSAGE CAPITAL LETTER HA
+  '\x104b9'# -> unI64 66785
+  -- OSAGE CAPITAL LETTER HYA
+  '\x104ba'# -> unI64 66786
+  -- OSAGE CAPITAL LETTER I
+  '\x104bb'# -> unI64 66787
+  -- OSAGE CAPITAL LETTER KA
+  '\x104bc'# -> unI64 66788
+  -- OSAGE CAPITAL LETTER EHKA
+  '\x104bd'# -> unI64 66789
+  -- OSAGE CAPITAL LETTER KYA
+  '\x104be'# -> unI64 66790
+  -- OSAGE CAPITAL LETTER LA
+  '\x104bf'# -> unI64 66791
+  -- OSAGE CAPITAL LETTER MA
+  '\x104c0'# -> unI64 66792
+  -- OSAGE CAPITAL LETTER NA
+  '\x104c1'# -> unI64 66793
+  -- OSAGE CAPITAL LETTER O
+  '\x104c2'# -> unI64 66794
+  -- OSAGE CAPITAL LETTER OIN
+  '\x104c3'# -> unI64 66795
+  -- OSAGE CAPITAL LETTER PA
+  '\x104c4'# -> unI64 66796
+  -- OSAGE CAPITAL LETTER EHPA
+  '\x104c5'# -> unI64 66797
+  -- OSAGE CAPITAL LETTER SA
+  '\x104c6'# -> unI64 66798
+  -- OSAGE CAPITAL LETTER SHA
+  '\x104c7'# -> unI64 66799
+  -- OSAGE CAPITAL LETTER TA
+  '\x104c8'# -> unI64 66800
+  -- OSAGE CAPITAL LETTER EHTA
+  '\x104c9'# -> unI64 66801
+  -- OSAGE CAPITAL LETTER TSA
+  '\x104ca'# -> unI64 66802
+  -- OSAGE CAPITAL LETTER EHTSA
+  '\x104cb'# -> unI64 66803
+  -- OSAGE CAPITAL LETTER TSHA
+  '\x104cc'# -> unI64 66804
+  -- OSAGE CAPITAL LETTER DHA
+  '\x104cd'# -> unI64 66805
+  -- OSAGE CAPITAL LETTER U
+  '\x104ce'# -> unI64 66806
+  -- OSAGE CAPITAL LETTER WA
+  '\x104cf'# -> unI64 66807
+  -- OSAGE CAPITAL LETTER KHA
+  '\x104d0'# -> unI64 66808
+  -- OSAGE CAPITAL LETTER GHA
+  '\x104d1'# -> unI64 66809
+  -- OSAGE CAPITAL LETTER ZA
+  '\x104d2'# -> unI64 66810
+  -- OSAGE CAPITAL LETTER ZHA
+  '\x104d3'# -> unI64 66811
+  -- VITHKUQI CAPITAL LETTER A
+  '\x10570'# -> unI64 66967
+  -- VITHKUQI CAPITAL LETTER BBE
+  '\x10571'# -> unI64 66968
+  -- VITHKUQI CAPITAL LETTER BE
+  '\x10572'# -> unI64 66969
+  -- VITHKUQI CAPITAL LETTER CE
+  '\x10573'# -> unI64 66970
+  -- VITHKUQI CAPITAL LETTER CHE
+  '\x10574'# -> unI64 66971
+  -- VITHKUQI CAPITAL LETTER DE
+  '\x10575'# -> unI64 66972
+  -- VITHKUQI CAPITAL LETTER DHE
+  '\x10576'# -> unI64 66973
+  -- VITHKUQI CAPITAL LETTER EI
+  '\x10577'# -> unI64 66974
+  -- VITHKUQI CAPITAL LETTER E
+  '\x10578'# -> unI64 66975
+  -- VITHKUQI CAPITAL LETTER FE
+  '\x10579'# -> unI64 66976
+  -- VITHKUQI CAPITAL LETTER GA
+  '\x1057a'# -> unI64 66977
+  -- VITHKUQI CAPITAL LETTER HA
+  '\x1057c'# -> unI64 66979
+  -- VITHKUQI CAPITAL LETTER HHA
+  '\x1057d'# -> unI64 66980
+  -- VITHKUQI CAPITAL LETTER I
+  '\x1057e'# -> unI64 66981
+  -- VITHKUQI CAPITAL LETTER IJE
+  '\x1057f'# -> unI64 66982
+  -- VITHKUQI CAPITAL LETTER JE
+  '\x10580'# -> unI64 66983
+  -- VITHKUQI CAPITAL LETTER KA
+  '\x10581'# -> unI64 66984
+  -- VITHKUQI CAPITAL LETTER LA
+  '\x10582'# -> unI64 66985
+  -- VITHKUQI CAPITAL LETTER LLA
+  '\x10583'# -> unI64 66986
+  -- VITHKUQI CAPITAL LETTER ME
+  '\x10584'# -> unI64 66987
+  -- VITHKUQI CAPITAL LETTER NE
+  '\x10585'# -> unI64 66988
+  -- VITHKUQI CAPITAL LETTER NJE
+  '\x10586'# -> unI64 66989
+  -- VITHKUQI CAPITAL LETTER O
+  '\x10587'# -> unI64 66990
+  -- VITHKUQI CAPITAL LETTER PE
+  '\x10588'# -> unI64 66991
+  -- VITHKUQI CAPITAL LETTER QA
+  '\x10589'# -> unI64 66992
+  -- VITHKUQI CAPITAL LETTER RE
+  '\x1058a'# -> unI64 66993
+  -- VITHKUQI CAPITAL LETTER SE
+  '\x1058c'# -> unI64 66995
+  -- VITHKUQI CAPITAL LETTER SHE
+  '\x1058d'# -> unI64 66996
+  -- VITHKUQI CAPITAL LETTER TE
+  '\x1058e'# -> unI64 66997
+  -- VITHKUQI CAPITAL LETTER THE
+  '\x1058f'# -> unI64 66998
+  -- VITHKUQI CAPITAL LETTER U
+  '\x10590'# -> unI64 66999
+  -- VITHKUQI CAPITAL LETTER VE
+  '\x10591'# -> unI64 67000
+  -- VITHKUQI CAPITAL LETTER XE
+  '\x10592'# -> unI64 67001
+  -- VITHKUQI CAPITAL LETTER Y
+  '\x10594'# -> unI64 67003
+  -- VITHKUQI CAPITAL LETTER ZE
+  '\x10595'# -> unI64 67004
+  -- OLD HUNGARIAN CAPITAL LETTER A
+  '\x10c80'# -> unI64 68800
+  -- OLD HUNGARIAN CAPITAL LETTER AA
+  '\x10c81'# -> unI64 68801
+  -- OLD HUNGARIAN CAPITAL LETTER EB
+  '\x10c82'# -> unI64 68802
+  -- OLD HUNGARIAN CAPITAL LETTER AMB
+  '\x10c83'# -> unI64 68803
+  -- OLD HUNGARIAN CAPITAL LETTER EC
+  '\x10c84'# -> unI64 68804
+  -- OLD HUNGARIAN CAPITAL LETTER ENC
+  '\x10c85'# -> unI64 68805
+  -- OLD HUNGARIAN CAPITAL LETTER ECS
+  '\x10c86'# -> unI64 68806
+  -- OLD HUNGARIAN CAPITAL LETTER ED
+  '\x10c87'# -> unI64 68807
+  -- OLD HUNGARIAN CAPITAL LETTER AND
+  '\x10c88'# -> unI64 68808
+  -- OLD HUNGARIAN CAPITAL LETTER E
+  '\x10c89'# -> unI64 68809
+  -- OLD HUNGARIAN CAPITAL LETTER CLOSE E
+  '\x10c8a'# -> unI64 68810
+  -- OLD HUNGARIAN CAPITAL LETTER EE
+  '\x10c8b'# -> unI64 68811
+  -- OLD HUNGARIAN CAPITAL LETTER EF
+  '\x10c8c'# -> unI64 68812
+  -- OLD HUNGARIAN CAPITAL LETTER EG
+  '\x10c8d'# -> unI64 68813
+  -- OLD HUNGARIAN CAPITAL LETTER EGY
+  '\x10c8e'# -> unI64 68814
+  -- OLD HUNGARIAN CAPITAL LETTER EH
+  '\x10c8f'# -> unI64 68815
+  -- OLD HUNGARIAN CAPITAL LETTER I
+  '\x10c90'# -> unI64 68816
+  -- OLD HUNGARIAN CAPITAL LETTER II
+  '\x10c91'# -> unI64 68817
+  -- OLD HUNGARIAN CAPITAL LETTER EJ
+  '\x10c92'# -> unI64 68818
+  -- OLD HUNGARIAN CAPITAL LETTER EK
+  '\x10c93'# -> unI64 68819
+  -- OLD HUNGARIAN CAPITAL LETTER AK
+  '\x10c94'# -> unI64 68820
+  -- OLD HUNGARIAN CAPITAL LETTER UNK
+  '\x10c95'# -> unI64 68821
+  -- OLD HUNGARIAN CAPITAL LETTER EL
+  '\x10c96'# -> unI64 68822
+  -- OLD HUNGARIAN CAPITAL LETTER ELY
+  '\x10c97'# -> unI64 68823
+  -- OLD HUNGARIAN CAPITAL LETTER EM
+  '\x10c98'# -> unI64 68824
+  -- OLD HUNGARIAN CAPITAL LETTER EN
+  '\x10c99'# -> unI64 68825
+  -- OLD HUNGARIAN CAPITAL LETTER ENY
+  '\x10c9a'# -> unI64 68826
+  -- OLD HUNGARIAN CAPITAL LETTER O
+  '\x10c9b'# -> unI64 68827
+  -- OLD HUNGARIAN CAPITAL LETTER OO
+  '\x10c9c'# -> unI64 68828
+  -- OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE
+  '\x10c9d'# -> unI64 68829
+  -- OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE
+  '\x10c9e'# -> unI64 68830
+  -- OLD HUNGARIAN CAPITAL LETTER OEE
+  '\x10c9f'# -> unI64 68831
+  -- OLD HUNGARIAN CAPITAL LETTER EP
+  '\x10ca0'# -> unI64 68832
+  -- OLD HUNGARIAN CAPITAL LETTER EMP
+  '\x10ca1'# -> unI64 68833
+  -- OLD HUNGARIAN CAPITAL LETTER ER
+  '\x10ca2'# -> unI64 68834
+  -- OLD HUNGARIAN CAPITAL LETTER SHORT ER
+  '\x10ca3'# -> unI64 68835
+  -- OLD HUNGARIAN CAPITAL LETTER ES
+  '\x10ca4'# -> unI64 68836
+  -- OLD HUNGARIAN CAPITAL LETTER ESZ
+  '\x10ca5'# -> unI64 68837
+  -- OLD HUNGARIAN CAPITAL LETTER ET
+  '\x10ca6'# -> unI64 68838
+  -- OLD HUNGARIAN CAPITAL LETTER ENT
+  '\x10ca7'# -> unI64 68839
+  -- OLD HUNGARIAN CAPITAL LETTER ETY
+  '\x10ca8'# -> unI64 68840
+  -- OLD HUNGARIAN CAPITAL LETTER ECH
+  '\x10ca9'# -> unI64 68841
+  -- OLD HUNGARIAN CAPITAL LETTER U
+  '\x10caa'# -> unI64 68842
+  -- OLD HUNGARIAN CAPITAL LETTER UU
+  '\x10cab'# -> unI64 68843
+  -- OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE
+  '\x10cac'# -> unI64 68844
+  -- OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE
+  '\x10cad'# -> unI64 68845
+  -- OLD HUNGARIAN CAPITAL LETTER EV
+  '\x10cae'# -> unI64 68846
+  -- OLD HUNGARIAN CAPITAL LETTER EZ
+  '\x10caf'# -> unI64 68847
+  -- OLD HUNGARIAN CAPITAL LETTER EZS
+  '\x10cb0'# -> unI64 68848
+  -- OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN
+  '\x10cb1'# -> unI64 68849
+  -- OLD HUNGARIAN CAPITAL LETTER US
+  '\x10cb2'# -> unI64 68850
+  -- WARANG CITI CAPITAL LETTER NGAA
+  '\x118a0'# -> unI64 71872
+  -- WARANG CITI CAPITAL LETTER A
+  '\x118a1'# -> unI64 71873
+  -- WARANG CITI CAPITAL LETTER WI
+  '\x118a2'# -> unI64 71874
+  -- WARANG CITI CAPITAL LETTER YU
+  '\x118a3'# -> unI64 71875
+  -- WARANG CITI CAPITAL LETTER YA
+  '\x118a4'# -> unI64 71876
+  -- WARANG CITI CAPITAL LETTER YO
+  '\x118a5'# -> unI64 71877
+  -- WARANG CITI CAPITAL LETTER II
+  '\x118a6'# -> unI64 71878
+  -- WARANG CITI CAPITAL LETTER UU
+  '\x118a7'# -> unI64 71879
+  -- WARANG CITI CAPITAL LETTER E
+  '\x118a8'# -> unI64 71880
+  -- WARANG CITI CAPITAL LETTER O
+  '\x118a9'# -> unI64 71881
+  -- WARANG CITI CAPITAL LETTER ANG
+  '\x118aa'# -> unI64 71882
+  -- WARANG CITI CAPITAL LETTER GA
+  '\x118ab'# -> unI64 71883
+  -- WARANG CITI CAPITAL LETTER KO
+  '\x118ac'# -> unI64 71884
+  -- WARANG CITI CAPITAL LETTER ENY
+  '\x118ad'# -> unI64 71885
+  -- WARANG CITI CAPITAL LETTER YUJ
+  '\x118ae'# -> unI64 71886
+  -- WARANG CITI CAPITAL LETTER UC
+  '\x118af'# -> unI64 71887
+  -- WARANG CITI CAPITAL LETTER ENN
+  '\x118b0'# -> unI64 71888
+  -- WARANG CITI CAPITAL LETTER ODD
+  '\x118b1'# -> unI64 71889
+  -- WARANG CITI CAPITAL LETTER TTE
+  '\x118b2'# -> unI64 71890
+  -- WARANG CITI CAPITAL LETTER NUNG
+  '\x118b3'# -> unI64 71891
+  -- WARANG CITI CAPITAL LETTER DA
+  '\x118b4'# -> unI64 71892
+  -- WARANG CITI CAPITAL LETTER AT
+  '\x118b5'# -> unI64 71893
+  -- WARANG CITI CAPITAL LETTER AM
+  '\x118b6'# -> unI64 71894
+  -- WARANG CITI CAPITAL LETTER BU
+  '\x118b7'# -> unI64 71895
+  -- WARANG CITI CAPITAL LETTER PU
+  '\x118b8'# -> unI64 71896
+  -- WARANG CITI CAPITAL LETTER HIYO
+  '\x118b9'# -> unI64 71897
+  -- WARANG CITI CAPITAL LETTER HOLO
+  '\x118ba'# -> unI64 71898
+  -- WARANG CITI CAPITAL LETTER HORR
+  '\x118bb'# -> unI64 71899
+  -- WARANG CITI CAPITAL LETTER HAR
+  '\x118bc'# -> unI64 71900
+  -- WARANG CITI CAPITAL LETTER SSUU
+  '\x118bd'# -> unI64 71901
+  -- WARANG CITI CAPITAL LETTER SII
+  '\x118be'# -> unI64 71902
+  -- WARANG CITI CAPITAL LETTER VIYO
+  '\x118bf'# -> unI64 71903
+  -- MEDEFAIDRIN CAPITAL LETTER M
+  '\x16e40'# -> unI64 93792
+  -- MEDEFAIDRIN CAPITAL LETTER S
+  '\x16e41'# -> unI64 93793
+  -- MEDEFAIDRIN CAPITAL LETTER V
+  '\x16e42'# -> unI64 93794
+  -- MEDEFAIDRIN CAPITAL LETTER W
+  '\x16e43'# -> unI64 93795
+  -- MEDEFAIDRIN CAPITAL LETTER ATIU
+  '\x16e44'# -> unI64 93796
+  -- MEDEFAIDRIN CAPITAL LETTER Z
+  '\x16e45'# -> unI64 93797
+  -- MEDEFAIDRIN CAPITAL LETTER KP
+  '\x16e46'# -> unI64 93798
+  -- MEDEFAIDRIN CAPITAL LETTER P
+  '\x16e47'# -> unI64 93799
+  -- MEDEFAIDRIN CAPITAL LETTER T
+  '\x16e48'# -> unI64 93800
+  -- MEDEFAIDRIN CAPITAL LETTER G
+  '\x16e49'# -> unI64 93801
+  -- MEDEFAIDRIN CAPITAL LETTER F
+  '\x16e4a'# -> unI64 93802
+  -- MEDEFAIDRIN CAPITAL LETTER I
+  '\x16e4b'# -> unI64 93803
+  -- MEDEFAIDRIN CAPITAL LETTER K
+  '\x16e4c'# -> unI64 93804
+  -- MEDEFAIDRIN CAPITAL LETTER A
+  '\x16e4d'# -> unI64 93805
+  -- MEDEFAIDRIN CAPITAL LETTER J
+  '\x16e4e'# -> unI64 93806
+  -- MEDEFAIDRIN CAPITAL LETTER E
+  '\x16e4f'# -> unI64 93807
+  -- MEDEFAIDRIN CAPITAL LETTER B
+  '\x16e50'# -> unI64 93808
+  -- MEDEFAIDRIN CAPITAL LETTER C
+  '\x16e51'# -> unI64 93809
+  -- MEDEFAIDRIN CAPITAL LETTER U
+  '\x16e52'# -> unI64 93810
+  -- MEDEFAIDRIN CAPITAL LETTER YU
+  '\x16e53'# -> unI64 93811
+  -- MEDEFAIDRIN CAPITAL LETTER L
+  '\x16e54'# -> unI64 93812
+  -- MEDEFAIDRIN CAPITAL LETTER Q
+  '\x16e55'# -> unI64 93813
+  -- MEDEFAIDRIN CAPITAL LETTER HP
+  '\x16e56'# -> unI64 93814
+  -- MEDEFAIDRIN CAPITAL LETTER NY
+  '\x16e57'# -> unI64 93815
+  -- MEDEFAIDRIN CAPITAL LETTER X
+  '\x16e58'# -> unI64 93816
+  -- MEDEFAIDRIN CAPITAL LETTER D
+  '\x16e59'# -> unI64 93817
+  -- MEDEFAIDRIN CAPITAL LETTER OE
+  '\x16e5a'# -> unI64 93818
+  -- MEDEFAIDRIN CAPITAL LETTER N
+  '\x16e5b'# -> unI64 93819
+  -- MEDEFAIDRIN CAPITAL LETTER R
+  '\x16e5c'# -> unI64 93820
+  -- MEDEFAIDRIN CAPITAL LETTER O
+  '\x16e5d'# -> unI64 93821
+  -- MEDEFAIDRIN CAPITAL LETTER AI
+  '\x16e5e'# -> unI64 93822
+  -- MEDEFAIDRIN CAPITAL LETTER Y
+  '\x16e5f'# -> unI64 93823
+  -- ADLAM CAPITAL LETTER ALIF
+  '\x1e900'# -> unI64 125218
+  -- ADLAM CAPITAL LETTER DAALI
+  '\x1e901'# -> unI64 125219
+  -- ADLAM CAPITAL LETTER LAAM
+  '\x1e902'# -> unI64 125220
+  -- ADLAM CAPITAL LETTER MIIM
+  '\x1e903'# -> unI64 125221
+  -- ADLAM CAPITAL LETTER BA
+  '\x1e904'# -> unI64 125222
+  -- ADLAM CAPITAL LETTER SINNYIIYHE
+  '\x1e905'# -> unI64 125223
+  -- ADLAM CAPITAL LETTER PE
+  '\x1e906'# -> unI64 125224
+  -- ADLAM CAPITAL LETTER BHE
+  '\x1e907'# -> unI64 125225
+  -- ADLAM CAPITAL LETTER RA
+  '\x1e908'# -> unI64 125226
+  -- ADLAM CAPITAL LETTER E
+  '\x1e909'# -> unI64 125227
+  -- ADLAM CAPITAL LETTER FA
+  '\x1e90a'# -> unI64 125228
+  -- ADLAM CAPITAL LETTER I
+  '\x1e90b'# -> unI64 125229
+  -- ADLAM CAPITAL LETTER O
+  '\x1e90c'# -> unI64 125230
+  -- ADLAM CAPITAL LETTER DHA
+  '\x1e90d'# -> unI64 125231
+  -- ADLAM CAPITAL LETTER YHE
+  '\x1e90e'# -> unI64 125232
+  -- ADLAM CAPITAL LETTER WAW
+  '\x1e90f'# -> unI64 125233
+  -- ADLAM CAPITAL LETTER NUN
+  '\x1e910'# -> unI64 125234
+  -- ADLAM CAPITAL LETTER KAF
+  '\x1e911'# -> unI64 125235
+  -- ADLAM CAPITAL LETTER YA
+  '\x1e912'# -> unI64 125236
+  -- ADLAM CAPITAL LETTER U
+  '\x1e913'# -> unI64 125237
+  -- ADLAM CAPITAL LETTER JIIM
+  '\x1e914'# -> unI64 125238
+  -- ADLAM CAPITAL LETTER CHI
+  '\x1e915'# -> unI64 125239
+  -- ADLAM CAPITAL LETTER HA
+  '\x1e916'# -> unI64 125240
+  -- ADLAM CAPITAL LETTER QAAF
+  '\x1e917'# -> unI64 125241
+  -- ADLAM CAPITAL LETTER GA
+  '\x1e918'# -> unI64 125242
+  -- ADLAM CAPITAL LETTER NYA
+  '\x1e919'# -> unI64 125243
+  -- ADLAM CAPITAL LETTER TU
+  '\x1e91a'# -> unI64 125244
+  -- ADLAM CAPITAL LETTER NHA
+  '\x1e91b'# -> unI64 125245
+  -- ADLAM CAPITAL LETTER VA
+  '\x1e91c'# -> unI64 125246
+  -- ADLAM CAPITAL LETTER KHA
+  '\x1e91d'# -> unI64 125247
+  -- ADLAM CAPITAL LETTER GBE
+  '\x1e91e'# -> unI64 125248
+  -- ADLAM CAPITAL LETTER ZAL
+  '\x1e91f'# -> unI64 125249
+  -- ADLAM CAPITAL LETTER KPO
+  '\x1e920'# -> unI64 125250
+  -- ADLAM CAPITAL LETTER SHA
   '\x1e921'# -> unI64 125251
   _ -> unI64 0
diff --git a/src/Data/Text/Internal/Fusion/Common.hs b/src/Data/Text/Internal/Fusion/Common.hs
--- a/src/Data/Text/Internal/Fusion/Common.hs
+++ b/src/Data/Text/Internal/Fusion/Common.hs
@@ -716,7 +716,7 @@
       Yield x' s' -> f x (loop_foldr1 x' s')
 {-# INLINE [0] foldr1 #-}
 
--- | intercalate str strs interts the stream str in between the streams strs and
+-- | intercalate str strs inserts the stream str in between the streams strs and
 -- concatenates the result.
 --
 -- __Properties__
@@ -834,7 +834,7 @@
 -- __Properties__
 --
 -- @'head' ('scanl' f z xs) = z@
--- 
+--
 -- @'last' ('scanl' f z xs) = 'foldl' f z xs@
 scanl :: (Char -> Char -> Char) -> Char -> Stream Char -> Stream Char
 scanl f z0 (Stream next0 s0 len) = Stream next (Scan1 z0 s0) (len+1) -- HINT maybe too low
@@ -1008,7 +1008,7 @@
 {-# INLINE [0] dropWhile #-}
 
 -- | /O(n)/ The 'isPrefixOf' function takes two 'Stream's and returns
--- 'True' iff the first is a prefix of the second.
+-- 'True' if and only if the first is a prefix of the second.
 --
 -- __Properties__
 --
diff --git a/src/Data/Text/Internal/Search.hs b/src/Data/Text/Internal/Search.hs
--- a/src/Data/Text/Internal/Search.hs
+++ b/src/Data/Text/Internal/Search.hs
@@ -25,8 +25,8 @@
 -- * D. M. Sunday: A Very Fast Substring Search Algorithm.
 --   Communications of the ACM, 33, 8, 132-142 (1990)
 --
--- * F. Lundh: The Fast Search Algorithm.
---   <http://effbot.org/zone/stringlib.htm> (2006)
+-- * F. Lundh:
+--   <http://web.archive.org/web/20201107074620/http://effbot.org/zone/stringlib.htm The Fast Search Algorithm>. (2006)
 
 module Data.Text.Internal.Search
     (
diff --git a/src/Data/Text/Lazy.hs b/src/Data/Text/Lazy.hs
--- a/src/Data/Text/Lazy.hs
+++ b/src/Data/Text/Lazy.hs
@@ -146,6 +146,8 @@
     , stripEnd
     , splitAt
     , span
+    , spanM
+    , spanEndM
     , breakOn
     , breakOnEnd
     , break
@@ -200,6 +202,7 @@
 
 import Prelude (Char, Bool(..), Maybe(..), String,
                 Eq, (==), Ord(..), Ordering(..), Read(..), Show(..),
+                Monad(..), pure, (<$>),
                 (&&), (+), (-), (.), ($), (++),
                 error, flip, fmap, fromIntegral, not, otherwise, quot)
 import qualified Prelude as P
@@ -241,7 +244,7 @@
 -- $fusion
 --
 -- Starting from @text-1.3@ fusion is no longer implicit,
--- and pipelines of transormations usually allocate intermediate 'Text' values.
+-- and pipelines of transformations usually allocate intermediate 'Text' values.
 -- Users, who observe significant changes to performances,
 -- are encouraged to use fusion framework explicitly, employing
 -- "Data.Text.Internal.Fusion" and "Data.Text.Internal.Fusion.Common".
@@ -272,6 +275,8 @@
 -- <http://unicode.org/reports/tr36/#Deletion_of_Noncharacters Unicode Technical Report 36, §3.5 >.)
 
 -- $setup
+-- >>> :set -package transformers
+-- >>> import Control.Monad.Trans.State
 -- >>> import Data.Text
 -- >>> import qualified Data.Text as T
 -- >>> :seti -XOverloadedStrings
@@ -311,10 +316,21 @@
     mappend = (<>)
     mconcat = concat
 
+-- | Performs replacement on invalid scalar values:
+--
+-- >>> :set -XOverloadedStrings
+-- >>> "\55555" :: Data.Text.Lazy.Text
+-- "\65533"
 instance IsString Text where
     fromString = pack
 
--- | @since 1.2.0.0
+-- | Performs replacement on invalid scalar values:
+--
+-- >>> :set -XOverloadedLists
+-- >>> ['\55555'] :: Data.Text.Lazy.Text
+-- "\65533"
+--
+-- @since 1.2.0.0
 instance Exts.IsList Text where
     type Item Text = Char
     fromList       = pack
@@ -346,12 +362,9 @@
     _ -> error "Data.Text.Lazy.Text.gunfold"
   dataTypeOf _   = textDataType
 
--- | This instance has similar considerations to the 'Data' instance:
--- it preserves abstraction at the cost of inefficiency.
---
--- @since 1.2.4.0
+-- | @since 1.2.4.0
 instance TH.Lift Text where
-  lift = TH.appE (TH.varE 'pack) . TH.stringE . unpack
+  lift = TH.appE (TH.varE 'fromStrict) . TH.lift . toStrict
 #if MIN_VERSION_template_haskell(2,17,0)
   liftTyped = TH.unsafeCodeCoerce . TH.lift
 #elif MIN_VERSION_template_haskell(2,16,0)
@@ -370,7 +383,10 @@
 
 -- | /O(n)/ Convert a 'String' into a 'Text'.
 --
--- Performs replacement on invalid scalar values.
+-- Performs replacement on invalid scalar values, so @'unpack' . 'pack'@ is not 'id':
+--
+-- >>> Data.Text.Lazy.unpack (Data.Text.Lazy.pack "\55555")
+-- "\65533"
 pack ::
 #if defined(ASSERTS)
   HasCallStack =>
@@ -539,13 +555,17 @@
     length (intercalate s ts) = let lenS = length s in max 0 (P.sum (P.map (\t -> length t + lenS) ts) - lenS)
   #-}
 
--- | /O(n)/ Compare the count of characters in a 'Text' to a number.
+-- | /O(min(n,c))/ Compare the count of characters in a 'Text' to a number.
 --
+-- @
+-- 'compareLength' t c = 'P.compare' ('length' t) c
+-- @
+--
 -- This function gives the same answer as comparing against the result
 -- of 'length', but can short circuit if the count of characters is
 -- greater than the number, and hence be more efficient.
 compareLength :: Text -> Int64 -> Ordering
-compareLength t n = S.compareLengthI (stream t) n
+compareLength t c = S.compareLengthI (stream t) c
 {-# INLINE [1] compareLength #-}
 
 -- We don't apply those otherwise appealing length-to-compareLength
@@ -783,6 +803,16 @@
 -- | /O(n)/ 'foldr', applied to a binary operator, a starting value
 -- (typically the right-identity of the operator), and a 'Text',
 -- reduces the 'Text' using the binary operator, from right to left.
+--
+-- 'foldr' is lazy like 'Data.List.foldr' for lists: evaluation actually
+-- traverses the 'Text' from left to right, only as far as it needs to.
+--
+-- For example, 'head' can be defined with /O(1)/ complexity using 'foldr':
+--
+-- @
+-- head :: Text -> Char
+-- head = foldr const (error "head empty")
+-- @
 foldr :: (Char -> a -> a) -> a -> Text -> a
 foldr f z t = S.foldr f z (stream t)
 {-# INLINE foldr #-}
@@ -1285,7 +1315,7 @@
 -- | /O(n)/ 'span', applied to a predicate @p@ and text @t@, returns
 -- a pair whose first element is the longest prefix (possibly empty)
 -- of @t@ of elements that satisfy @p@, and whose second is the
--- remainder of the list.
+-- remainder of the text.
 --
 -- >>> T.span (=='0') "000AB"
 -- ("000","AB")
@@ -1293,6 +1323,53 @@
 span p = break (not . p)
 {-# INLINE span #-}
 
+-- | /O(length of prefix)/ 'spanM', applied to a monadic predicate @p@,
+-- a text @t@, returns a pair @(t1, t2)@ where @t1@ is the longest prefix of
+-- @t@ whose elements satisfy @p@, and @t2@ is the remainder of the text.
+--
+-- >>> T.spanM (\c -> state $ \i -> (fromEnum c == i, i+1)) "abcefg" `runState` 97
+-- (("abc","efg"),101)
+--
+-- 'span' is 'spanM' specialized to 'Data.Functor.Identity.Identity':
+--
+-- @
+-- -- for all p :: Char -> Bool
+-- 'span' p = 'Data.Functor.Identity.runIdentity' . 'spanM' ('pure' . p)
+-- @
+--
+-- @since 2.0.1
+spanM :: Monad m => (Char -> m Bool) -> Text -> m (Text, Text)
+spanM p t0 = go t0
+  where
+    go Empty = pure (empty, empty)
+    go (Chunk t ts) = do
+        (t1, t2) <- T.spanM p t
+        if T.null t2 then first (chunk t) <$> go ts
+        else pure (chunk t1 empty, Chunk t2 ts)
+{-# INLINE spanM #-}
+
+-- | /O(length of suffix)/ 'spanEndM', applied to a monadic predicate @p@,
+-- a text @t@, returns a pair @(t1, t2)@ where @t2@ is the longest suffix of
+-- @t@ whose elements satisfy @p@, and @t1@ is the remainder of the text.
+--
+-- >>> T.spanEndM (\c -> state $ \i -> (fromEnum c == i, i-1)) "tuvxyz" `runState` 122
+-- (("tuv","xyz"),118)
+--
+-- @
+-- 'spanEndM' p . 'reverse' = fmap ('Data.Bifunctor.bimap' 'reverse' 'reverse') . 'spanM' p
+-- @
+--
+-- @since 2.0.1
+spanEndM :: Monad m => (Char -> m Bool) -> Text -> m (Text, Text)
+spanEndM p t0 = go t0
+  where
+    go Empty = pure (empty, empty)
+    go (Chunk t ts) = do
+        (t3, t4) <- go ts
+        if null t3 then (\(t1, t2) -> (chunk t1 empty, chunk t2 ts)) <$> T.spanEndM p t
+        else pure (Chunk t t3, t4)
+{-# INLINE spanEndM #-}
+
 -- | The 'group' function takes a 'Text' and returns a list of 'Text's
 -- such that the concatenation of the result is equal to the argument.
 -- Moreover, each sublist in the result contains only equal elements.
@@ -1460,7 +1537,7 @@
 {-# INLINE unwords #-}
 
 -- | /O(n)/ The 'isPrefixOf' function takes two 'Text's and returns
--- 'True' iff the first is a prefix of the second.
+-- 'True' if and only if the first is a prefix of the second.
 isPrefixOf :: Text -> Text -> Bool
 isPrefixOf Empty _  = True
 isPrefixOf _ Empty  = False
@@ -1472,17 +1549,16 @@
         (yh,yt) = T.splitAt lx y
         lx = T.length x
         ly = T.length y
-{-# INLINE [1] isPrefixOf #-}
 
 -- | /O(n)/ The 'isSuffixOf' function takes two 'Text's and returns
--- 'True' iff the first is a suffix of the second.
+-- 'True' if and only if the first is a suffix of the second.
 isSuffixOf :: Text -> Text -> Bool
 isSuffixOf x y = reverse x `isPrefixOf` reverse y
 {-# INLINE isSuffixOf #-}
 -- TODO: a better implementation
 
 -- | /O(n+m)/ The 'isInfixOf' function takes two 'Text's and returns
--- 'True' iff the first is contained, wholly and intact, anywhere
+-- 'True' if and only if the first is contained, wholly and intact, anywhere
 -- within the second.
 --
 -- This function is strict in its first argument, and lazy in its
diff --git a/src/Data/Text/Lazy/Encoding.hs b/src/Data/Text/Lazy/Encoding.hs
--- a/src/Data/Text/Lazy/Encoding.hs
+++ b/src/Data/Text/Lazy/Encoding.hs
@@ -19,24 +19,30 @@
     (
     -- * Decoding ByteStrings to Text
     -- $strict
-      decodeASCII
-    , decodeLatin1
-    , decodeUtf8
-    , decodeUtf16LE
-    , decodeUtf16BE
-    , decodeUtf32LE
-    , decodeUtf32BE
 
-    -- ** Catchable failure
+    -- ** Total Functions #total#
+    -- $total
+      decodeLatin1
+
+    -- *** Catchable failure
     , decodeUtf8'
 
-    -- ** Controllable error handling
+    -- *** Controllable error handling
     , decodeUtf8With
     , decodeUtf16LEWith
     , decodeUtf16BEWith
     , decodeUtf32LEWith
     , decodeUtf32BEWith
 
+    -- ** Partial Functions
+    -- $partial
+    , decodeASCII
+    , decodeUtf8
+    , decodeUtf16LE
+    , decodeUtf16BE
+    , decodeUtf32LE
+    , decodeUtf32BE
+
     -- * Encoding Text to ByteStrings
     , encodeUtf8
     , encodeUtf16LE
@@ -77,6 +83,17 @@
 -- For instance, 'decodeUtf8' will throw an exception, but
 -- 'decodeUtf8With' allows the programmer to determine what to do on a
 -- decoding error.
+
+-- $total
+--
+-- These functions facilitate total decoding and should be preferred
+-- over their partial counterparts.
+
+-- $partial
+--
+-- These functions are partial and should only be used with great caution
+-- (preferably not at all). See "Data.Text.Lazy.Encoding#g:total" for better
+-- solutions.
 
 -- | Decode a 'ByteString' containing 7-bit ASCII
 -- encoded text.
diff --git a/src/Data/Text/Lazy/Read.hs b/src/Data/Text/Lazy/Read.hs
--- a/src/Data/Text/Lazy/Read.hs
+++ b/src/Data/Text/Lazy/Read.hs
@@ -36,7 +36,7 @@
 
 -- | Read some text.  If the read succeeds, return its value and the
 -- remaining text, otherwise an error message.
-type Reader a = IReader Text a
+type Reader a = Text -> Either String (a, Text)
 type Parser = IParser Text
 
 -- | Read a decimal integer.  The input must begin with at least one
diff --git a/src/Data/Text/Read.hs b/src/Data/Text/Read.hs
--- a/src/Data/Text/Read.hs
+++ b/src/Data/Text/Read.hs
@@ -33,7 +33,7 @@
 
 -- | Read some text.  If the read succeeds, return its value and the
 -- remaining text, otherwise an error message.
-type Reader a = IReader Text a
+type Reader a = Text -> Either String (a, Text)
 type Parser a = IParser Text a
 
 -- | Read a decimal integer.  The input must begin with at least one
diff --git a/src/Data/Text/Show.hs b/src/Data/Text/Show.hs
--- a/src/Data/Text/Show.hs
+++ b/src/Data/Text/Show.hs
@@ -16,7 +16,8 @@
 
 module Data.Text.Show
     (
-      singleton
+      addrLen
+    , singleton
     , unpack
     , unpackCString#
     , unpackCStringAscii#
diff --git a/tests/Tests/Lift.hs b/tests/Tests/Lift.hs
--- a/tests/Tests/Lift.hs
+++ b/tests/Tests/Lift.hs
@@ -19,10 +19,16 @@
   , testCase "strict0" $ assertEqual "strict0"
       $(lift ("f\0o\1o\2" :: S.Text))
       ("f\0o\1o\2" :: S.Text)
+  , testCase "strict-nihao" $ assertEqual "strict-nihao"
+      $(lift ("\20320\22909" :: S.Text))
+      ("\20320\22909" :: S.Text)
   , testCase "lazy" $ assertEqual "lazy"
       $(lift ("foo" :: L.Text))
       ("foo" :: L.Text)
   , testCase "lazy0" $ assertEqual "lazy0"
       $(lift ("f\0o\1o\2" :: L.Text))
       ("f\0o\1o\2" :: L.Text)
+  , testCase "lazy-nihao" $ assertEqual "lazy-nihao"
+      $(lift ("\20320\22909" :: L.Text))
+      ("\20320\22909" :: L.Text)
   ]
diff --git a/tests/Tests/Properties/Folds.hs b/tests/Tests/Properties/Folds.hs
--- a/tests/Tests/Properties/Folds.hs
+++ b/tests/Tests/Properties/Folds.hs
@@ -8,8 +8,10 @@
     ) where
 
 import Control.Arrow (second)
+import Control.Exception (ErrorCall, evaluate, try)
 import Data.Word (Word8, Word16)
 import Test.Tasty (TestTree, testGroup)
+import Test.Tasty.HUnit (testCase, assertFailure)
 import Test.Tasty.QuickCheck (testProperty, Small(..), (===), applyFun, applyFun2)
 import Tests.QuickCheckUtils
 import qualified Data.List as L
@@ -47,6 +49,8 @@
     where _types  = f :: Char -> Char -> Char
 t_foldr (applyFun2 -> f) z       = L.foldr f z  `eqP` T.foldr f z
     where _types  = f :: Char -> Char -> Char
+t_foldr' (applyFun2 -> f) z       = L.foldr f z  `eqP` T.foldr' f z
+    where _types  = f :: Char -> Char -> Char
 tl_foldr (applyFun2 -> f) z      = L.foldr f z  `eqPSqrt` TL.foldr f z
     where _types  = f :: Char -> Char -> Char
 sf_foldr1 (applyFun -> p) (applyFun2 -> f) =
@@ -54,6 +58,23 @@
 t_foldr1 (applyFun2 -> f)        = L.foldr1 f   `eqP` T.foldr1 f
 tl_foldr1 (applyFun2 -> f)       = L.foldr1 f   `eqPSqrt` TL.foldr1 f
 
+-- Distinguish foldl/foldr from foldl'/foldr'
+
+fold_apart :: IO ()
+fold_apart = do
+    ok (T.foldr  f () (T.pack "az"))
+    ko (T.foldr' f () (T.pack "az"))
+    ok (T.foldl  (flip f) () (T.pack "za"))
+    ko (T.foldl' (flip f) () (T.pack "za"))
+  where
+    f c _ = if c == 'z' then error "catchme" else ()
+    ok = evaluate
+    ko t = do
+        x <- try (evaluate t)
+        case x :: Either ErrorCall () of
+            Left _ -> pure ()
+            Right _ -> assertFailure "test should have failed but didn't"
+
 -- Special folds
 
 s_concat_s        = (L.concat . unSqrt) `eq` (unpackS . S.unstream . S.concat . map packS . unSqrt)
@@ -187,10 +208,12 @@
       testProperty "tl_foldl1'" tl_foldl1',
       testProperty "sf_foldr" sf_foldr,
       testProperty "t_foldr" t_foldr,
+      testProperty "t_foldr'" t_foldr',
       testProperty "tl_foldr" tl_foldr,
       testProperty "sf_foldr1" sf_foldr1,
       testProperty "t_foldr1" t_foldr1,
       testProperty "tl_foldr1" tl_foldr1,
+      testCase "fold_apart" fold_apart,
 
       testGroup "special" [
         testProperty "s_concat_s" s_concat_s,
diff --git a/tests/Tests/Properties/LowLevel.hs b/tests/Tests/Properties/LowLevel.hs
--- a/tests/Tests/Properties/LowLevel.hs
+++ b/tests/Tests/Properties/LowLevel.hs
@@ -66,6 +66,9 @@
 t_takeWord8 m t = takeWord8 m t `T.isPrefixOf` t
 t_take_drop_8 (Small n) t = T.append (takeWord8 n t) (dropWord8 n t) === t
 t_use_from t = ioProperty $ (==t) <$> useAsPtr t fromPtr
+t_use_from0 t = ioProperty $ do
+  let t' = t `T.snoc` '\0'
+  (== T.takeWhile (/= '\0') t') <$> useAsPtr t' (const . fromPtr0)
 
 t_copy t = T.copy t === t
 
@@ -118,6 +121,7 @@
       testProperty "t_takeWord8" t_takeWord8,
       testProperty "t_take_drop_8" t_take_drop_8,
       testProperty "t_use_from" t_use_from,
+      testProperty "t_use_from0" t_use_from0,
       testProperty "t_copy" t_copy,
       testCase "t_literal_length1" t_literal_length1,
       testCase "t_literal_length2" t_literal_length2,
diff --git a/tests/Tests/Properties/Substrings.hs b/tests/Tests/Properties/Substrings.hs
--- a/tests/Tests/Properties/Substrings.hs
+++ b/tests/Tests/Properties/Substrings.hs
@@ -7,6 +7,7 @@
     ( testSubstrings
     ) where
 
+import Control.Monad.Trans.State (State, state, runState)
 import Data.Char (isSpace)
 import Test.QuickCheck
 import Test.Tasty (TestTree, testGroup)
@@ -157,6 +158,37 @@
 tl_inits          = L.inits       `eqP` (map unpackS . TL.inits)
 t_tails           = L.tails       `eqP` (map unpackS . T.tails)
 tl_tails          = L.tails       `eqPSqrt` (map unpackS . TL.tails)
+
+spanML :: Monad m => (b -> m Bool) -> [b] -> m ([b], [b])
+spanML p s = go [] s
+  where
+    go acc [] = pure (reverse acc, [])
+    go acc ccs@(c : cs) = do
+      continue <- p c
+      if continue then go (c : acc) cs else pure (reverse acc, ccs)
+
+spanEndML :: Monad m => (b -> m Bool) -> [b] -> m ([b], [b])
+spanEndML p s = (\(s1, s2) -> (reverse s2, reverse s1)) <$> spanML p (reverse s)
+
+eqSP :: Stringy s => (String -> State Int (String, String)) -> (s -> State Int (s, s)) -> Property
+eqSP a b = property $ ((`runState` 0) . a) `eqP` ((`runState` 0) . (fmap unpack2 . b))
+
+t_spanM (applyFun2 -> f')
+  = let f c = state $ \i -> (getSkewed (f' i c), i+1) in
+    spanML f `eqSP` T.spanM f
+
+t_spanEndM (applyFun2 -> f')
+  = let f c = state $ \i -> (getSkewed (f' i c), i+1) in
+        spanEndML f `eqSP` T.spanEndM f
+
+tl_spanM (applyFun2 -> f')
+  = let f c = state $ \i -> (getSkewed (f' i c), i+1) in
+    spanML f `eqSP` TL.spanM f
+
+tl_spanEndM (applyFun2 -> f')
+  = let f c = state $ \i -> (getSkewed (f' i c), i+1) in
+    spanEndML f `eqSP` TL.spanEndM f
+
 t_findAppendId = \(Sqrt (NotEmpty s)) ts ->
     let t = T.intercalate s ts
     in conjoin $ map (=== t) $ map (uncurry T.append) (T.breakOnAll s t)
@@ -327,7 +359,11 @@
       testProperty "t_inits" t_inits,
       testProperty "tl_inits" tl_inits,
       testProperty "t_tails" t_tails,
-      testProperty "tl_tails" tl_tails
+      testProperty "tl_tails" tl_tails,
+      testProperty "t_spanM" t_spanM,
+      testProperty "t_spanEndM" t_spanEndM,
+      testProperty "tl_spanM" tl_spanM,
+      testProperty "tl_spanEndM" tl_spanEndM
     ],
 
     testGroup "breaking many" [
diff --git a/tests/Tests/Properties/Text.hs b/tests/Tests/Properties/Text.hs
--- a/tests/Tests/Properties/Text.hs
+++ b/tests/Tests/Properties/Text.hs
@@ -128,6 +128,11 @@
           -- https://en.wikipedia.org/wiki/Georgian_Extended
           isGeorgian c = c >= '\4256' && c < '\4352'
 
+t_toUpper_idempotent t = T.toUpper (T.toUpper t) === T.toUpper t
+t_toLower_idempotent t = T.toLower (T.toLower t) === T.toLower t
+t_toTitle_idempotent t = T.toTitle (T.toTitle t) === T.toTitle t
+t_toCaseFold_idempotent t = T.toCaseFold (T.toCaseFold t) === T.toCaseFold t
+
 ascii_toLower (ASCIIString xs) = map C.toLower xs === T.unpack (T.toLower (T.pack xs))
 ascii_toUpper (ASCIIString xs) = map C.toUpper xs === T.unpack (T.toUpper (T.pack xs))
 ascii_toCaseFold (ASCIIString xs) = map C.toLower xs === T.unpack (T.toCaseFold (T.pack xs))
@@ -331,6 +336,10 @@
         testProperty "tl_toUpper_upper" tl_toUpper_upper,
         testProperty "t_toTitle_title" t_toTitle_title,
         testProperty "t_toTitle_1stNotLower" t_toTitle_1stNotLower,
+        testProperty "t_toUpper_idempotent" t_toUpper_idempotent,
+        testProperty "t_toLower_idempotent" t_toLower_idempotent,
+        testProperty "t_toTitle_idempotent" t_toTitle_idempotent,
+        testProperty "t_toCaseFold_idempotent" t_toCaseFold_idempotent,
         testProperty "ascii_toLower" ascii_toLower,
         testProperty "ascii_toUpper" ascii_toUpper,
         testProperty "ascii_toTitle" ascii_toTitle,
diff --git a/tests/Tests/Properties/Transcoding.hs b/tests/Tests/Properties/Transcoding.hs
--- a/tests/Tests/Properties/Transcoding.hs
+++ b/tests/Tests/Properties/Transcoding.hs
@@ -160,7 +160,7 @@
     upTo n gen = do
       k <- choose (0,n)
       vectorOf k gen
-    -- Data.Text.Internal.Encoding.Utf8.ord{2,3,4} withous sanity checks
+    -- Data.Text.Internal.Encoding.Utf8.ord{2,3,4} without sanity checks
     ord2_ n = map fromIntegral [(n `shiftR` 6) + 0xC0, (n .&. 0x3F) + 0x80]
     ord3_ n = map fromIntegral [(n `shiftR` 12) + 0xE0, ((n `shiftR` 6) .&. 0x3F) + 0x80, (n .&. 0x3F) + 0x80]
     ord4_ n = map fromIntegral [(n `shiftR` 18) + 0xF0, ((n `shiftR` 12) .&. 0x3F) + 0x80, ((n `shiftR` 6) .&. 0x3F) + 0x80, (n .&. 0x3F) + 0x80]
diff --git a/tests/Tests/QuickCheckUtils.hs b/tests/Tests/QuickCheckUtils.hs
--- a/tests/Tests/QuickCheckUtils.hs
+++ b/tests/Tests/QuickCheckUtils.hs
@@ -12,6 +12,7 @@
     , NotEmpty(..)
     , Sqrt(..)
     , SpacyString(..)
+    , SkewedBool(..)
 
     , Precision(..)
     , precision
@@ -277,3 +278,9 @@
 instance Arbitrary SpacyString where
   arbitrary = SpacyString `fmap` listOf arbitrarySpacyChar
   shrink (SpacyString xs) = SpacyString `fmap` shrink xs
+
+newtype SkewedBool = Skewed { getSkewed :: Bool }
+  deriving Show
+
+instance Arbitrary SkewedBool where
+  arbitrary = Skewed <$> frequency [(1, pure False), (5, pure True)]
diff --git a/text.cabal b/text.cabal
--- a/text.cabal
+++ b/text.cabal
@@ -1,6 +1,6 @@
 cabal-version:  2.2
 name:           text
-version:        2.0
+version:        2.0.1
 
 homepage:       https://github.com/haskell/text
 bug-reports:    https://github.com/haskell/text/issues
@@ -58,7 +58,7 @@
 extra-source-files:
     -- scripts/CaseFolding.txt
     -- scripts/SpecialCasing.txt
-    README.markdown
+    README.md
     changelog.md
     scripts/*.hs
     simdutf/LICENSE-APACHE
@@ -90,17 +90,47 @@
                  cbits/validate_utf8.cpp
     cxx-options: -std=c++17
     cpp-options: -DSIMDUTF
-    if os(windows)
-      if arch(x86_64)
-        extra-libraries: stdc++-6 gcc_s_seh-1
+    if impl(ghc >= 9.4)
+      build-depends: system-cxx-std-lib == 1.0
+    elif os(darwin) || os(freebsd)
+      extra-libraries: c++
+    elif os(openbsd)
+      extra-libraries: c++ c++abi pthread
+    elif os(windows)
+      -- GHC's Windows toolchain is based on clang/libc++ in GHC 9.4 and later
+      if impl(ghc < 9.3)
+        extra-libraries: stdc++
       else
-        extra-libraries: stdc++-6 gcc_s_dw2-1
+        extra-libraries: c++ c++abi
+    elif os(linux)
+      extra-libraries: stdc++
     else
-      if os(darwin)
-        extra-libraries: c++
-      else
-        extra-libraries: stdc++
+      -- This is supposed to be under arch(wasm32), but we can't do that yet
+      -- since cabal check would fail with unrecognized arch, see
+      -- https://github.com/haskell/cabal/pull/8096 for the fix.
+      -- TODO: when a new cabal release is out with that fix, bump cabal in CI
+      -- and add proper arch(wasm32) declaration here.
+      cpp-options: -DSIMDUTF_NO_THREADS
+      cxx-options: -fno-exceptions
+      extra-libraries: c++ c++abi
 
+  -- Certain version of GHC crash on Windows, when TemplateHaskell encounters C++.
+  -- https://gitlab.haskell.org/ghc/ghc/-/issues/19417
+  if flag(simdutf) && os(windows) && impl(ghc == 8.0.1 || >= 8.8 && < 8.10.5 || == 9.0.1)
+    build-depends: base < 0
+
+  -- For GHC 8.2, 8.6.3 and 8.10.1 even TH + C crash Windows linker.
+  if os(windows) && impl(ghc >= 8.2 && < 8.4 || == 8.6.3 || == 8.10.1)
+    build-depends: base < 0
+
+  -- GHC 8.10 has linking issues (probably TH-related) on ARM.
+  if (arch(aarch64) || arch(arm)) && impl(ghc == 8.10.*)
+    build-depends: base < 0
+
+  -- Subword primitives in GHC 9.2.1 are broken on ARM platforms.
+  if (arch(aarch64) || arch(arm)) && impl(ghc == 9.2.1)
+    build-depends: base < 0
+
   exposed-modules:
     Data.Text
     Data.Text.Array
@@ -155,17 +185,15 @@
     binary           >= 0.5 && < 0.9,
     bytestring       >= 0.10.4 && < 0.12,
     deepseq          >= 1.1 && < 1.5,
-    ghc-prim         >= 0.2 && < 0.9,
-    template-haskell >= 2.5 && < 2.19
+    ghc-prim         >= 0.2 && < 0.10,
+    template-haskell >= 2.5 && < 2.20
 
   ghc-options: -Wall -fwarn-tabs -funbox-strict-fields -O2
   if flag(developer)
     ghc-options: -fno-ignore-asserts
     cpp-options: -DASSERTS
-
-  -- https://gitlab.haskell.org/ghc/ghc/-/issues/19900
-  if os(windows)
-    extra-libraries: gcc_s
+    if impl(ghc >= 9.2.2)
+      ghc-options: -fcheck-prim-bounds
 
   default-language: Haskell2010
   default-extensions:
@@ -229,11 +257,12 @@
     tasty-hunit,
     tasty-quickcheck,
     template-haskell,
+    transformers,
     text
 
-  -- Starting from 9.2 ghc library depends on parsec,
-  -- which causes circular dependency.
-  if impl(ghc < 9.2)
+  -- Plugin infrastructure does not work properly in 8.0.1 and 8.6.1, and
+  -- ghc-9.2.1 library depends on parsec, which causes a circular dependency.
+  if impl(ghc >= 8.0.2 && < 8.6 || >= 8.6.2 && < 9.2 || >= 9.2.2)
     build-depends: tasty-inspection-testing
 
   default-language: Haskell2010
