// Code generated by tools/gen_unicode_tables.py; DO NOT EDIT.
// Python 3.13.5, Unicode 15.1.0.

///|
pub let unicode_version : String = "15.1.0"

///|
/// Ranges for `str.isalpha()`.
let uc_alpha : FixedArray[Int] = [
  65, 90, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214,
  216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750,
  880, 884, 886, 887, 890, 893, 895, 895, 902, 902, 904, 906,
  908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366,
  1369, 1369, 1376, 1416, 1488, 1514, 1519, 1522, 1568, 1610, 1646, 1647,
  1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791,
  1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037,
  2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136,
  2144, 2154, 2160, 2183, 2185, 2190, 2208, 2249, 2308, 2361, 2365, 2365,
  2384, 2384, 2392, 2401, 2417, 2432, 2437, 2444, 2447, 2448, 2451, 2472,
  2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525,
  2527, 2529, 2544, 2545, 2556, 2556, 2565, 2570, 2575, 2576, 2579, 2600,
  2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654,
  2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739,
  2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2809, 2809, 2821, 2828,
  2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877,
  2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960,
  2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986,
  2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3129,
  3133, 3133, 3160, 3162, 3165, 3165, 3168, 3169, 3200, 3200, 3205, 3212,
  3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3293, 3294,
  3296, 3297, 3313, 3314, 3332, 3340, 3342, 3344, 3346, 3386, 3389, 3389,
  3406, 3406, 3412, 3414, 3423, 3425, 3450, 3455, 3461, 3478, 3482, 3505,
  3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654,
  3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3760,
  3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840,
  3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181,
  4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238,
  4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685,
  4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784,
  4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880,
  4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740,
  5743, 5759, 5761, 5786, 5792, 5866, 5873, 5880, 5888, 5905, 5919, 5937,
  5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108,
  6176, 6264, 6272, 6276, 6279, 6312, 6314, 6314, 6320, 6389, 6400, 6430,
  6480, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6656, 6678, 6688, 6740,
  6823, 6823, 6917, 6963, 6981, 6988, 7043, 7072, 7086, 7087, 7098, 7141,
  7168, 7203, 7245, 7247, 7258, 7293, 7296, 7304, 7312, 7354, 7357, 7359,
  7401, 7404, 7406, 7411, 7413, 7414, 7418, 7418, 7424, 7615, 7680, 7957,
  7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027,
  8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132,
  8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188,
  8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467,
  8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493,
  8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8579, 8580, 11264, 11492,
  11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623,
  11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710,
  11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12294,
  12337, 12341, 12347, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, 12543,
  12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124,
  42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42653,
  42656, 42725, 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963,
  42965, 42969, 42994, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123,
  43138, 43187, 43250, 43255, 43259, 43259, 43261, 43262, 43274, 43301, 43312, 43334,
  43360, 43388, 43396, 43442, 43471, 43471, 43488, 43492, 43494, 43503, 43514, 43518,
  43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43646, 43695,
  43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741,
  43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814,
  43816, 43822, 43824, 43866, 43868, 43881, 43888, 44002, 44032, 55203, 55216, 55238,
  55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285,
  64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324,
  64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140,
  65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487,
  65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597,
  65599, 65613, 65616, 65629, 65664, 65786, 66176, 66204, 66208, 66256, 66304, 66335,
  66349, 66368, 66370, 66377, 66384, 66421, 66432, 66461, 66464, 66499, 66504, 66511,
  66560, 66717, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938,
  66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001,
  67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504,
  67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644,
  67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861,
  67872, 67897, 67968, 68023, 68030, 68031, 68096, 68096, 68112, 68115, 68117, 68119,
  68121, 68149, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68324, 68352, 68405,
  68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850,
  68864, 68899, 69248, 69289, 69296, 69297, 69376, 69404, 69415, 69415, 69424, 69445,
  69488, 69505, 69552, 69572, 69600, 69622, 69635, 69687, 69745, 69746, 69749, 69749,
  69763, 69807, 69840, 69864, 69891, 69926, 69956, 69956, 69959, 69959, 69968, 70002,
  70006, 70006, 70019, 70066, 70081, 70084, 70106, 70106, 70108, 70108, 70144, 70161,
  70163, 70187, 70207, 70208, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301,
  70303, 70312, 70320, 70366, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448,
  70450, 70451, 70453, 70457, 70461, 70461, 70480, 70480, 70493, 70497, 70656, 70708,
  70727, 70730, 70751, 70753, 70784, 70831, 70852, 70853, 70855, 70855, 71040, 71086,
  71128, 71131, 71168, 71215, 71236, 71236, 71296, 71338, 71352, 71352, 71424, 71450,
  71488, 71494, 71680, 71723, 71840, 71903, 71935, 71942, 71945, 71945, 71948, 71955,
  71957, 71958, 71960, 71983, 71999, 71999, 72001, 72001, 72096, 72103, 72106, 72144,
  72161, 72161, 72163, 72163, 72192, 72192, 72203, 72242, 72250, 72250, 72272, 72272,
  72284, 72329, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72750, 72768, 72768,
  72818, 72847, 72960, 72966, 72968, 72969, 72971, 73008, 73030, 73030, 73056, 73061,
  73063, 73064, 73066, 73097, 73112, 73112, 73440, 73458, 73474, 73474, 73476, 73488,
  73490, 73523, 73648, 73648, 73728, 74649, 74880, 75075, 77712, 77808, 77824, 78895,
  78913, 78918, 82944, 83526, 92160, 92728, 92736, 92766, 92784, 92862, 92880, 92909,
  92928, 92975, 92992, 92995, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026,
  94032, 94032, 94099, 94111, 94176, 94177, 94179, 94179, 94208, 100343, 100352, 101589,
  101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898,
  110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788,
  113792, 113800, 113808, 113817, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970,
  119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069,
  120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132,
  120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570,
  120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744,
  120746, 120770, 120772, 120779, 122624, 122654, 122661, 122666, 122928, 122989, 123136, 123180,
  123191, 123197, 123214, 123214, 123536, 123565, 123584, 123627, 124112, 124139, 124896, 124902,
  124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125184, 125251, 125259, 125259,
  126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514,
  126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537,
  126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553,
  126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570,
  126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619,
  126625, 126627, 126629, 126633, 126635, 126651, 131072, 173791, 173824, 177977, 177984, 178205,
  178208, 183969, 183984, 191456, 191472, 192093, 194560, 195101, 196608, 201546, 201552, 205743,
]

///|
/// Ranges for `str.isdecimal()` (also `re`'s `\d`).
let uc_decimal : FixedArray[Int] = [
  48, 57, 1632, 1641, 1776, 1785, 1984, 1993, 2406, 2415, 2534, 2543,
  2662, 2671, 2790, 2799, 2918, 2927, 3046, 3055, 3174, 3183, 3302, 3311,
  3430, 3439, 3558, 3567, 3664, 3673, 3792, 3801, 3872, 3881, 4160, 4169,
  4240, 4249, 6112, 6121, 6160, 6169, 6470, 6479, 6608, 6617, 6784, 6793,
  6800, 6809, 6992, 7001, 7088, 7097, 7232, 7241, 7248, 7257, 42528, 42537,
  43216, 43225, 43264, 43273, 43472, 43481, 43504, 43513, 43600, 43609, 44016, 44025,
  65296, 65305, 66720, 66729, 68912, 68921, 69734, 69743, 69872, 69881, 69942, 69951,
  70096, 70105, 70384, 70393, 70736, 70745, 70864, 70873, 71248, 71257, 71360, 71369,
  71472, 71481, 71904, 71913, 72016, 72025, 72784, 72793, 73040, 73049, 73120, 73129,
  73552, 73561, 92768, 92777, 92864, 92873, 93008, 93017, 120782, 120831, 123200, 123209,
  123632, 123641, 124144, 124153, 125264, 125273, 130032, 130041,
]

///|
/// Ranges for `str.isdigit()`.
let uc_digit : FixedArray[Int] = [
  48, 57, 178, 179, 185, 185, 1632, 1641, 1776, 1785, 1984, 1993,
  2406, 2415, 2534, 2543, 2662, 2671, 2790, 2799, 2918, 2927, 3046, 3055,
  3174, 3183, 3302, 3311, 3430, 3439, 3558, 3567, 3664, 3673, 3792, 3801,
  3872, 3881, 4160, 4169, 4240, 4249, 4969, 4977, 6112, 6121, 6160, 6169,
  6470, 6479, 6608, 6618, 6784, 6793, 6800, 6809, 6992, 7001, 7088, 7097,
  7232, 7241, 7248, 7257, 8304, 8304, 8308, 8313, 8320, 8329, 9312, 9320,
  9332, 9340, 9352, 9360, 9450, 9450, 9461, 9469, 9471, 9471, 10102, 10110,
  10112, 10120, 10122, 10130, 42528, 42537, 43216, 43225, 43264, 43273, 43472, 43481,
  43504, 43513, 43600, 43609, 44016, 44025, 65296, 65305, 66720, 66729, 68160, 68163,
  68912, 68921, 69216, 69224, 69714, 69722, 69734, 69743, 69872, 69881, 69942, 69951,
  70096, 70105, 70384, 70393, 70736, 70745, 70864, 70873, 71248, 71257, 71360, 71369,
  71472, 71481, 71904, 71913, 72016, 72025, 72784, 72793, 73040, 73049, 73120, 73129,
  73552, 73561, 92768, 92777, 92864, 92873, 93008, 93017, 120782, 120831, 123200, 123209,
  123632, 123641, 124144, 124153, 125264, 125273, 127232, 127242, 130032, 130041,
]

///|
/// Ranges for `str.isnumeric()`.
let uc_numeric : FixedArray[Int] = [
  48, 57, 178, 179, 185, 185, 188, 190, 1632, 1641, 1776, 1785,
  1984, 1993, 2406, 2415, 2534, 2543, 2548, 2553, 2662, 2671, 2790, 2799,
  2918, 2927, 2930, 2935, 3046, 3058, 3174, 3183, 3192, 3198, 3302, 3311,
  3416, 3422, 3430, 3448, 3558, 3567, 3664, 3673, 3792, 3801, 3872, 3891,
  4160, 4169, 4240, 4249, 4969, 4988, 5870, 5872, 6112, 6121, 6128, 6137,
  6160, 6169, 6470, 6479, 6608, 6618, 6784, 6793, 6800, 6809, 6992, 7001,
  7088, 7097, 7232, 7241, 7248, 7257, 8304, 8304, 8308, 8313, 8320, 8329,
  8528, 8578, 8581, 8585, 9312, 9371, 9450, 9471, 10102, 10131, 11517, 11517,
  12295, 12295, 12321, 12329, 12344, 12346, 12690, 12693, 12832, 12841, 12872, 12879,
  12881, 12895, 12928, 12937, 12977, 12991, 13317, 13317, 13443, 13443, 14378, 14378,
  15181, 15181, 19968, 19968, 19971, 19971, 19975, 19975, 19977, 19977, 20004, 20004,
  20061, 20061, 20108, 20108, 20116, 20116, 20118, 20118, 20140, 20140, 20159, 20160,
  20191, 20191, 20200, 20200, 20237, 20237, 20336, 20336, 20457, 20457, 20486, 20486,
  20740, 20740, 20806, 20806, 20841, 20841, 20843, 20843, 20845, 20845, 21313, 21313,
  21315, 21317, 21324, 21324, 21441, 21444, 22235, 22235, 22769, 22769, 22777, 22777,
  24186, 24186, 24318, 24319, 24332, 24334, 24336, 24336, 25296, 25296, 25342, 25342,
  25420, 25420, 26578, 26578, 27934, 27934, 28422, 28422, 29590, 29590, 30334, 30334,
  30357, 30357, 31213, 31213, 32902, 32902, 33836, 33836, 36014, 36014, 36019, 36019,
  36144, 36144, 37390, 37390, 38057, 38057, 38433, 38433, 38470, 38470, 38476, 38476,
  38520, 38520, 38646, 38646, 42528, 42537, 42726, 42735, 43056, 43061, 43216, 43225,
  43264, 43273, 43472, 43481, 43504, 43513, 43600, 43609, 44016, 44025, 63851, 63851,
  63859, 63859, 63864, 63864, 63922, 63922, 63953, 63953, 63955, 63955, 63997, 63997,
  65296, 65305, 65799, 65843, 65856, 65912, 65930, 65931, 66273, 66299, 66336, 66339,
  66369, 66369, 66378, 66378, 66513, 66517, 66720, 66729, 67672, 67679, 67705, 67711,
  67751, 67759, 67835, 67839, 67862, 67867, 68028, 68029, 68032, 68047, 68050, 68095,
  68160, 68168, 68221, 68222, 68253, 68255, 68331, 68335, 68440, 68447, 68472, 68479,
  68521, 68527, 68858, 68863, 68912, 68921, 69216, 69246, 69405, 69414, 69457, 69460,
  69573, 69579, 69714, 69743, 69872, 69881, 69942, 69951, 70096, 70105, 70113, 70132,
  70384, 70393, 70736, 70745, 70864, 70873, 71248, 71257, 71360, 71369, 71472, 71483,
  71904, 71922, 72016, 72025, 72784, 72812, 73040, 73049, 73120, 73129, 73552, 73561,
  73664, 73684, 74752, 74862, 92768, 92777, 92864, 92873, 93008, 93017, 93019, 93025,
  93824, 93846, 119488, 119507, 119520, 119539, 119648, 119672, 120782, 120831, 123200, 123209,
  123632, 123641, 124144, 124153, 125127, 125135, 125264, 125273, 126065, 126123, 126125, 126127,
  126129, 126132, 126209, 126253, 126255, 126269, 127232, 127244, 130032, 130041, 131073, 131073,
  131172, 131172, 131298, 131298, 131361, 131361, 133418, 133418, 133507, 133507, 133516, 133516,
  133532, 133532, 133866, 133866, 133885, 133885, 133913, 133913, 140176, 140176, 141720, 141720,
  146203, 146203, 156269, 156269, 194704, 194704,
]

///|
/// Ranges for `str.isspace()` (also `re`'s `\s`).
let uc_space : FixedArray[Int] = [
  9, 13, 28, 32, 133, 133, 160, 160, 5760, 5760, 8192, 8202,
  8232, 8233, 8239, 8239, 8287, 8287, 12288, 12288,
]

///|
/// Ranges for `str.islower()` of one character.
let uc_lower : FixedArray[Int] = [
  97, 122, 170, 170, 181, 181, 186, 186, 223, 246, 248, 255,
  257, 257, 259, 259, 261, 261, 263, 263, 265, 265, 267, 267,
  269, 269, 271, 271, 273, 273, 275, 275, 277, 277, 279, 279,
  281, 281, 283, 283, 285, 285, 287, 287, 289, 289, 291, 291,
  293, 293, 295, 295, 297, 297, 299, 299, 301, 301, 303, 303,
  305, 305, 307, 307, 309, 309, 311, 312, 314, 314, 316, 316,
  318, 318, 320, 320, 322, 322, 324, 324, 326, 326, 328, 329,
  331, 331, 333, 333, 335, 335, 337, 337, 339, 339, 341, 341,
  343, 343, 345, 345, 347, 347, 349, 349, 351, 351, 353, 353,
  355, 355, 357, 357, 359, 359, 361, 361, 363, 363, 365, 365,
  367, 367, 369, 369, 371, 371, 373, 373, 375, 375, 378, 378,
  380, 380, 382, 384, 387, 387, 389, 389, 392, 392, 396, 397,
  402, 402, 405, 405, 409, 411, 414, 414, 417, 417, 419, 419,
  421, 421, 424, 424, 426, 427, 429, 429, 432, 432, 436, 436,
  438, 438, 441, 442, 445, 447, 454, 454, 457, 457, 460, 460,
  462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472,
  474, 474, 476, 477, 479, 479, 481, 481, 483, 483, 485, 485,
  487, 487, 489, 489, 491, 491, 493, 493, 495, 496, 499, 499,
  501, 501, 505, 505, 507, 507, 509, 509, 511, 511, 513, 513,
  515, 515, 517, 517, 519, 519, 521, 521, 523, 523, 525, 525,
  527, 527, 529, 529, 531, 531, 533, 533, 535, 535, 537, 537,
  539, 539, 541, 541, 543, 543, 545, 545, 547, 547, 549, 549,
  551, 551, 553, 553, 555, 555, 557, 557, 559, 559, 561, 561,
  563, 569, 572, 572, 575, 576, 578, 578, 583, 583, 585, 585,
  587, 587, 589, 589, 591, 659, 661, 696, 704, 705, 736, 740,
  837, 837, 881, 881, 883, 883, 887, 887, 890, 893, 912, 912,
  940, 974, 976, 977, 981, 983, 985, 985, 987, 987, 989, 989,
  991, 991, 993, 993, 995, 995, 997, 997, 999, 999, 1001, 1001,
  1003, 1003, 1005, 1005, 1007, 1011, 1013, 1013, 1016, 1016, 1019, 1020,
  1072, 1119, 1121, 1121, 1123, 1123, 1125, 1125, 1127, 1127, 1129, 1129,
  1131, 1131, 1133, 1133, 1135, 1135, 1137, 1137, 1139, 1139, 1141, 1141,
  1143, 1143, 1145, 1145, 1147, 1147, 1149, 1149, 1151, 1151, 1153, 1153,
  1163, 1163, 1165, 1165, 1167, 1167, 1169, 1169, 1171, 1171, 1173, 1173,
  1175, 1175, 1177, 1177, 1179, 1179, 1181, 1181, 1183, 1183, 1185, 1185,
  1187, 1187, 1189, 1189, 1191, 1191, 1193, 1193, 1195, 1195, 1197, 1197,
  1199, 1199, 1201, 1201, 1203, 1203, 1205, 1205, 1207, 1207, 1209, 1209,
  1211, 1211, 1213, 1213, 1215, 1215, 1218, 1218, 1220, 1220, 1222, 1222,
  1224, 1224, 1226, 1226, 1228, 1228, 1230, 1231, 1233, 1233, 1235, 1235,
  1237, 1237, 1239, 1239, 1241, 1241, 1243, 1243, 1245, 1245, 1247, 1247,
  1249, 1249, 1251, 1251, 1253, 1253, 1255, 1255, 1257, 1257, 1259, 1259,
  1261, 1261, 1263, 1263, 1265, 1265, 1267, 1267, 1269, 1269, 1271, 1271,
  1273, 1273, 1275, 1275, 1277, 1277, 1279, 1279, 1281, 1281, 1283, 1283,
  1285, 1285, 1287, 1287, 1289, 1289, 1291, 1291, 1293, 1293, 1295, 1295,
  1297, 1297, 1299, 1299, 1301, 1301, 1303, 1303, 1305, 1305, 1307, 1307,
  1309, 1309, 1311, 1311, 1313, 1313, 1315, 1315, 1317, 1317, 1319, 1319,
  1321, 1321, 1323, 1323, 1325, 1325, 1327, 1327, 1376, 1416, 4304, 4346,
  4348, 4351, 5112, 5117, 7296, 7304, 7424, 7615, 7681, 7681, 7683, 7683,
  7685, 7685, 7687, 7687, 7689, 7689, 7691, 7691, 7693, 7693, 7695, 7695,
  7697, 7697, 7699, 7699, 7701, 7701, 7703, 7703, 7705, 7705, 7707, 7707,
  7709, 7709, 7711, 7711, 7713, 7713, 7715, 7715, 7717, 7717, 7719, 7719,
  7721, 7721, 7723, 7723, 7725, 7725, 7727, 7727, 7729, 7729, 7731, 7731,
  7733, 7733, 7735, 7735, 7737, 7737, 7739, 7739, 7741, 7741, 7743, 7743,
  7745, 7745, 7747, 7747, 7749, 7749, 7751, 7751, 7753, 7753, 7755, 7755,
  7757, 7757, 7759, 7759, 7761, 7761, 7763, 7763, 7765, 7765, 7767, 7767,
  7769, 7769, 7771, 7771, 7773, 7773, 7775, 7775, 7777, 7777, 7779, 7779,
  7781, 7781, 7783, 7783, 7785, 7785, 7787, 7787, 7789, 7789, 7791, 7791,
  7793, 7793, 7795, 7795, 7797, 7797, 7799, 7799, 7801, 7801, 7803, 7803,
  7805, 7805, 7807, 7807, 7809, 7809, 7811, 7811, 7813, 7813, 7815, 7815,
  7817, 7817, 7819, 7819, 7821, 7821, 7823, 7823, 7825, 7825, 7827, 7827,
  7829, 7837, 7839, 7839, 7841, 7841, 7843, 7843, 7845, 7845, 7847, 7847,
  7849, 7849, 7851, 7851, 7853, 7853, 7855, 7855, 7857, 7857, 7859, 7859,
  7861, 7861, 7863, 7863, 7865, 7865, 7867, 7867, 7869, 7869, 7871, 7871,
  7873, 7873, 7875, 7875, 7877, 7877, 7879, 7879, 7881, 7881, 7883, 7883,
  7885, 7885, 7887, 7887, 7889, 7889, 7891, 7891, 7893, 7893, 7895, 7895,
  7897, 7897, 7899, 7899, 7901, 7901, 7903, 7903, 7905, 7905, 7907, 7907,
  7909, 7909, 7911, 7911, 7913, 7913, 7915, 7915, 7917, 7917, 7919, 7919,
  7921, 7921, 7923, 7923, 7925, 7925, 7927, 7927, 7929, 7929, 7931, 7931,
  7933, 7933, 7935, 7943, 7952, 7957, 7968, 7975, 7984, 7991, 8000, 8005,
  8016, 8023, 8032, 8039, 8048, 8061, 8064, 8071, 8080, 8087, 8096, 8103,
  8112, 8116, 8118, 8119, 8126, 8126, 8130, 8132, 8134, 8135, 8144, 8147,
  8150, 8151, 8160, 8167, 8178, 8180, 8182, 8183, 8305, 8305, 8319, 8319,
  8336, 8348, 8458, 8458, 8462, 8463, 8467, 8467, 8495, 8495, 8500, 8500,
  8505, 8505, 8508, 8509, 8518, 8521, 8526, 8526, 8560, 8575, 8580, 8580,
  9424, 9449, 11312, 11359, 11361, 11361, 11365, 11366, 11368, 11368, 11370, 11370,
  11372, 11372, 11377, 11377, 11379, 11380, 11382, 11389, 11393, 11393, 11395, 11395,
  11397, 11397, 11399, 11399, 11401, 11401, 11403, 11403, 11405, 11405, 11407, 11407,
  11409, 11409, 11411, 11411, 11413, 11413, 11415, 11415, 11417, 11417, 11419, 11419,
  11421, 11421, 11423, 11423, 11425, 11425, 11427, 11427, 11429, 11429, 11431, 11431,
  11433, 11433, 11435, 11435, 11437, 11437, 11439, 11439, 11441, 11441, 11443, 11443,
  11445, 11445, 11447, 11447, 11449, 11449, 11451, 11451, 11453, 11453, 11455, 11455,
  11457, 11457, 11459, 11459, 11461, 11461, 11463, 11463, 11465, 11465, 11467, 11467,
  11469, 11469, 11471, 11471, 11473, 11473, 11475, 11475, 11477, 11477, 11479, 11479,
  11481, 11481, 11483, 11483, 11485, 11485, 11487, 11487, 11489, 11489, 11491, 11492,
  11500, 11500, 11502, 11502, 11507, 11507, 11520, 11557, 11559, 11559, 11565, 11565,
  42561, 42561, 42563, 42563, 42565, 42565, 42567, 42567, 42569, 42569, 42571, 42571,
  42573, 42573, 42575, 42575, 42577, 42577, 42579, 42579, 42581, 42581, 42583, 42583,
  42585, 42585, 42587, 42587, 42589, 42589, 42591, 42591, 42593, 42593, 42595, 42595,
  42597, 42597, 42599, 42599, 42601, 42601, 42603, 42603, 42605, 42605, 42625, 42625,
  42627, 42627, 42629, 42629, 42631, 42631, 42633, 42633, 42635, 42635, 42637, 42637,
  42639, 42639, 42641, 42641, 42643, 42643, 42645, 42645, 42647, 42647, 42649, 42649,
  42651, 42653, 42787, 42787, 42789, 42789, 42791, 42791, 42793, 42793, 42795, 42795,
  42797, 42797, 42799, 42801, 42803, 42803, 42805, 42805, 42807, 42807, 42809, 42809,
  42811, 42811, 42813, 42813, 42815, 42815, 42817, 42817, 42819, 42819, 42821, 42821,
  42823, 42823, 42825, 42825, 42827, 42827, 42829, 42829, 42831, 42831, 42833, 42833,
  42835, 42835, 42837, 42837, 42839, 42839, 42841, 42841, 42843, 42843, 42845, 42845,
  42847, 42847, 42849, 42849, 42851, 42851, 42853, 42853, 42855, 42855, 42857, 42857,
  42859, 42859, 42861, 42861, 42863, 42872, 42874, 42874, 42876, 42876, 42879, 42879,
  42881, 42881, 42883, 42883, 42885, 42885, 42887, 42887, 42892, 42892, 42894, 42894,
  42897, 42897, 42899, 42901, 42903, 42903, 42905, 42905, 42907, 42907, 42909, 42909,
  42911, 42911, 42913, 42913, 42915, 42915, 42917, 42917, 42919, 42919, 42921, 42921,
  42927, 42927, 42933, 42933, 42935, 42935, 42937, 42937, 42939, 42939, 42941, 42941,
  42943, 42943, 42945, 42945, 42947, 42947, 42952, 42952, 42954, 42954, 42961, 42961,
  42963, 42963, 42965, 42965, 42967, 42967, 42969, 42969, 42994, 42996, 42998, 42998,
  43000, 43002, 43824, 43866, 43868, 43881, 43888, 43967, 64256, 64262, 64275, 64279,
  65345, 65370, 66600, 66639, 66776, 66811, 66967, 66977, 66979, 66993, 66995, 67001,
  67003, 67004, 67456, 67456, 67459, 67461, 67463, 67504, 67506, 67514, 68800, 68850,
  71872, 71903, 93792, 93823, 119834, 119859, 119886, 119892, 119894, 119911, 119938, 119963,
  119990, 119993, 119995, 119995, 119997, 120003, 120005, 120015, 120042, 120067, 120094, 120119,
  120146, 120171, 120198, 120223, 120250, 120275, 120302, 120327, 120354, 120379, 120406, 120431,
  120458, 120485, 120514, 120538, 120540, 120545, 120572, 120596, 120598, 120603, 120630, 120654,
  120656, 120661, 120688, 120712, 120714, 120719, 120746, 120770, 120772, 120777, 120779, 120779,
  122624, 122633, 122635, 122654, 122661, 122666, 122928, 122989, 125218, 125251,
]

///|
/// Ranges for `str.isupper()` of one character.
let uc_upper : FixedArray[Int] = [
  65, 90, 192, 214, 216, 222, 256, 256, 258, 258, 260, 260,
  262, 262, 264, 264, 266, 266, 268, 268, 270, 270, 272, 272,
  274, 274, 276, 276, 278, 278, 280, 280, 282, 282, 284, 284,
  286, 286, 288, 288, 290, 290, 292, 292, 294, 294, 296, 296,
  298, 298, 300, 300, 302, 302, 304, 304, 306, 306, 308, 308,
  310, 310, 313, 313, 315, 315, 317, 317, 319, 319, 321, 321,
  323, 323, 325, 325, 327, 327, 330, 330, 332, 332, 334, 334,
  336, 336, 338, 338, 340, 340, 342, 342, 344, 344, 346, 346,
  348, 348, 350, 350, 352, 352, 354, 354, 356, 356, 358, 358,
  360, 360, 362, 362, 364, 364, 366, 366, 368, 368, 370, 370,
  372, 372, 374, 374, 376, 377, 379, 379, 381, 381, 385, 386,
  388, 388, 390, 391, 393, 395, 398, 401, 403, 404, 406, 408,
  412, 413, 415, 416, 418, 418, 420, 420, 422, 423, 425, 425,
  428, 428, 430, 431, 433, 435, 437, 437, 439, 440, 444, 444,
  452, 452, 455, 455, 458, 458, 461, 461, 463, 463, 465, 465,
  467, 467, 469, 469, 471, 471, 473, 473, 475, 475, 478, 478,
  480, 480, 482, 482, 484, 484, 486, 486, 488, 488, 490, 490,
  492, 492, 494, 494, 497, 497, 500, 500, 502, 504, 506, 506,
  508, 508, 510, 510, 512, 512, 514, 514, 516, 516, 518, 518,
  520, 520, 522, 522, 524, 524, 526, 526, 528, 528, 530, 530,
  532, 532, 534, 534, 536, 536, 538, 538, 540, 540, 542, 542,
  544, 544, 546, 546, 548, 548, 550, 550, 552, 552, 554, 554,
  556, 556, 558, 558, 560, 560, 562, 562, 570, 571, 573, 574,
  577, 577, 579, 582, 584, 584, 586, 586, 588, 588, 590, 590,
  880, 880, 882, 882, 886, 886, 895, 895, 902, 902, 904, 906,
  908, 908, 910, 911, 913, 929, 931, 939, 975, 975, 978, 980,
  984, 984, 986, 986, 988, 988, 990, 990, 992, 992, 994, 994,
  996, 996, 998, 998, 1000, 1000, 1002, 1002, 1004, 1004, 1006, 1006,
  1012, 1012, 1015, 1015, 1017, 1018, 1021, 1071, 1120, 1120, 1122, 1122,
  1124, 1124, 1126, 1126, 1128, 1128, 1130, 1130, 1132, 1132, 1134, 1134,
  1136, 1136, 1138, 1138, 1140, 1140, 1142, 1142, 1144, 1144, 1146, 1146,
  1148, 1148, 1150, 1150, 1152, 1152, 1162, 1162, 1164, 1164, 1166, 1166,
  1168, 1168, 1170, 1170, 1172, 1172, 1174, 1174, 1176, 1176, 1178, 1178,
  1180, 1180, 1182, 1182, 1184, 1184, 1186, 1186, 1188, 1188, 1190, 1190,
  1192, 1192, 1194, 1194, 1196, 1196, 1198, 1198, 1200, 1200, 1202, 1202,
  1204, 1204, 1206, 1206, 1208, 1208, 1210, 1210, 1212, 1212, 1214, 1214,
  1216, 1217, 1219, 1219, 1221, 1221, 1223, 1223, 1225, 1225, 1227, 1227,
  1229, 1229, 1232, 1232, 1234, 1234, 1236, 1236, 1238, 1238, 1240, 1240,
  1242, 1242, 1244, 1244, 1246, 1246, 1248, 1248, 1250, 1250, 1252, 1252,
  1254, 1254, 1256, 1256, 1258, 1258, 1260, 1260, 1262, 1262, 1264, 1264,
  1266, 1266, 1268, 1268, 1270, 1270, 1272, 1272, 1274, 1274, 1276, 1276,
  1278, 1278, 1280, 1280, 1282, 1282, 1284, 1284, 1286, 1286, 1288, 1288,
  1290, 1290, 1292, 1292, 1294, 1294, 1296, 1296, 1298, 1298, 1300, 1300,
  1302, 1302, 1304, 1304, 1306, 1306, 1308, 1308, 1310, 1310, 1312, 1312,
  1314, 1314, 1316, 1316, 1318, 1318, 1320, 1320, 1322, 1322, 1324, 1324,
  1326, 1326, 1329, 1366, 4256, 4293, 4295, 4295, 4301, 4301, 5024, 5109,
  7312, 7354, 7357, 7359, 7680, 7680, 7682, 7682, 7684, 7684, 7686, 7686,
  7688, 7688, 7690, 7690, 7692, 7692, 7694, 7694, 7696, 7696, 7698, 7698,
  7700, 7700, 7702, 7702, 7704, 7704, 7706, 7706, 7708, 7708, 7710, 7710,
  7712, 7712, 7714, 7714, 7716, 7716, 7718, 7718, 7720, 7720, 7722, 7722,
  7724, 7724, 7726, 7726, 7728, 7728, 7730, 7730, 7732, 7732, 7734, 7734,
  7736, 7736, 7738, 7738, 7740, 7740, 7742, 7742, 7744, 7744, 7746, 7746,
  7748, 7748, 7750, 7750, 7752, 7752, 7754, 7754, 7756, 7756, 7758, 7758,
  7760, 7760, 7762, 7762, 7764, 7764, 7766, 7766, 7768, 7768, 7770, 7770,
  7772, 7772, 7774, 7774, 7776, 7776, 7778, 7778, 7780, 7780, 7782, 7782,
  7784, 7784, 7786, 7786, 7788, 7788, 7790, 7790, 7792, 7792, 7794, 7794,
  7796, 7796, 7798, 7798, 7800, 7800, 7802, 7802, 7804, 7804, 7806, 7806,
  7808, 7808, 7810, 7810, 7812, 7812, 7814, 7814, 7816, 7816, 7818, 7818,
  7820, 7820, 7822, 7822, 7824, 7824, 7826, 7826, 7828, 7828, 7838, 7838,
  7840, 7840, 7842, 7842, 7844, 7844, 7846, 7846, 7848, 7848, 7850, 7850,
  7852, 7852, 7854, 7854, 7856, 7856, 7858, 7858, 7860, 7860, 7862, 7862,
  7864, 7864, 7866, 7866, 7868, 7868, 7870, 7870, 7872, 7872, 7874, 7874,
  7876, 7876, 7878, 7878, 7880, 7880, 7882, 7882, 7884, 7884, 7886, 7886,
  7888, 7888, 7890, 7890, 7892, 7892, 7894, 7894, 7896, 7896, 7898, 7898,
  7900, 7900, 7902, 7902, 7904, 7904, 7906, 7906, 7908, 7908, 7910, 7910,
  7912, 7912, 7914, 7914, 7916, 7916, 7918, 7918, 7920, 7920, 7922, 7922,
  7924, 7924, 7926, 7926, 7928, 7928, 7930, 7930, 7932, 7932, 7934, 7934,
  7944, 7951, 7960, 7965, 7976, 7983, 7992, 7999, 8008, 8013, 8025, 8025,
  8027, 8027, 8029, 8029, 8031, 8031, 8040, 8047, 8120, 8123, 8136, 8139,
  8152, 8155, 8168, 8172, 8184, 8187, 8450, 8450, 8455, 8455, 8459, 8461,
  8464, 8466, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488,
  8490, 8493, 8496, 8499, 8510, 8511, 8517, 8517, 8544, 8559, 8579, 8579,
  9398, 9423, 11264, 11311, 11360, 11360, 11362, 11364, 11367, 11367, 11369, 11369,
  11371, 11371, 11373, 11376, 11378, 11378, 11381, 11381, 11390, 11392, 11394, 11394,
  11396, 11396, 11398, 11398, 11400, 11400, 11402, 11402, 11404, 11404, 11406, 11406,
  11408, 11408, 11410, 11410, 11412, 11412, 11414, 11414, 11416, 11416, 11418, 11418,
  11420, 11420, 11422, 11422, 11424, 11424, 11426, 11426, 11428, 11428, 11430, 11430,
  11432, 11432, 11434, 11434, 11436, 11436, 11438, 11438, 11440, 11440, 11442, 11442,
  11444, 11444, 11446, 11446, 11448, 11448, 11450, 11450, 11452, 11452, 11454, 11454,
  11456, 11456, 11458, 11458, 11460, 11460, 11462, 11462, 11464, 11464, 11466, 11466,
  11468, 11468, 11470, 11470, 11472, 11472, 11474, 11474, 11476, 11476, 11478, 11478,
  11480, 11480, 11482, 11482, 11484, 11484, 11486, 11486, 11488, 11488, 11490, 11490,
  11499, 11499, 11501, 11501, 11506, 11506, 42560, 42560, 42562, 42562, 42564, 42564,
  42566, 42566, 42568, 42568, 42570, 42570, 42572, 42572, 42574, 42574, 42576, 42576,
  42578, 42578, 42580, 42580, 42582, 42582, 42584, 42584, 42586, 42586, 42588, 42588,
  42590, 42590, 42592, 42592, 42594, 42594, 42596, 42596, 42598, 42598, 42600, 42600,
  42602, 42602, 42604, 42604, 42624, 42624, 42626, 42626, 42628, 42628, 42630, 42630,
  42632, 42632, 42634, 42634, 42636, 42636, 42638, 42638, 42640, 42640, 42642, 42642,
  42644, 42644, 42646, 42646, 42648, 42648, 42650, 42650, 42786, 42786, 42788, 42788,
  42790, 42790, 42792, 42792, 42794, 42794, 42796, 42796, 42798, 42798, 42802, 42802,
  42804, 42804, 42806, 42806, 42808, 42808, 42810, 42810, 42812, 42812, 42814, 42814,
  42816, 42816, 42818, 42818, 42820, 42820, 42822, 42822, 42824, 42824, 42826, 42826,
  42828, 42828, 42830, 42830, 42832, 42832, 42834, 42834, 42836, 42836, 42838, 42838,
  42840, 42840, 42842, 42842, 42844, 42844, 42846, 42846, 42848, 42848, 42850, 42850,
  42852, 42852, 42854, 42854, 42856, 42856, 42858, 42858, 42860, 42860, 42862, 42862,
  42873, 42873, 42875, 42875, 42877, 42878, 42880, 42880, 42882, 42882, 42884, 42884,
  42886, 42886, 42891, 42891, 42893, 42893, 42896, 42896, 42898, 42898, 42902, 42902,
  42904, 42904, 42906, 42906, 42908, 42908, 42910, 42910, 42912, 42912, 42914, 42914,
  42916, 42916, 42918, 42918, 42920, 42920, 42922, 42926, 42928, 42932, 42934, 42934,
  42936, 42936, 42938, 42938, 42940, 42940, 42942, 42942, 42944, 42944, 42946, 42946,
  42948, 42951, 42953, 42953, 42960, 42960, 42966, 42966, 42968, 42968, 42997, 42997,
  65313, 65338, 66560, 66599, 66736, 66771, 66928, 66938, 66940, 66954, 66956, 66962,
  66964, 66965, 68736, 68786, 71840, 71871, 93760, 93791, 119808, 119833, 119860, 119885,
  119912, 119937, 119964, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980,
  119982, 119989, 120016, 120041, 120068, 120069, 120071, 120074, 120077, 120084, 120086, 120092,
  120120, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120172, 120197,
  120224, 120249, 120276, 120301, 120328, 120353, 120380, 120405, 120432, 120457, 120488, 120512,
  120546, 120570, 120604, 120628, 120662, 120686, 120720, 120744, 120778, 120778, 125184, 125217,
  127280, 127305, 127312, 127337, 127344, 127369,
]

///|
/// Ranges for `str.isprintable()`.
let uc_printable : FixedArray[Int] = [
  32, 126, 161, 172, 174, 887, 890, 895, 900, 906, 908, 908,
  910, 929, 931, 1327, 1329, 1366, 1369, 1418, 1421, 1423, 1425, 1479,
  1488, 1514, 1519, 1524, 1542, 1563, 1565, 1756, 1758, 1805, 1808, 1866,
  1869, 1969, 1984, 2042, 2045, 2093, 2096, 2110, 2112, 2139, 2142, 2142,
  2144, 2154, 2160, 2190, 2200, 2273, 2275, 2435, 2437, 2444, 2447, 2448,
  2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504,
  2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2558, 2561, 2563,
  2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614,
  2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641,
  2649, 2652, 2654, 2654, 2662, 2678, 2689, 2691, 2693, 2701, 2703, 2705,
  2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761,
  2763, 2765, 2768, 2768, 2784, 2787, 2790, 2801, 2809, 2815, 2817, 2819,
  2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873,
  2876, 2884, 2887, 2888, 2891, 2893, 2901, 2903, 2908, 2909, 2911, 2915,
  2918, 2935, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970,
  2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010,
  3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3066, 3072, 3084,
  3086, 3088, 3090, 3112, 3114, 3129, 3132, 3140, 3142, 3144, 3146, 3149,
  3157, 3158, 3160, 3162, 3165, 3165, 3168, 3171, 3174, 3183, 3191, 3212,
  3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272,
  3274, 3277, 3285, 3286, 3293, 3294, 3296, 3299, 3302, 3311, 3313, 3315,
  3328, 3340, 3342, 3344, 3346, 3396, 3398, 3400, 3402, 3407, 3412, 3427,
  3430, 3455, 3457, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517,
  3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3558, 3567,
  3570, 3572, 3585, 3642, 3647, 3675, 3713, 3714, 3716, 3716, 3718, 3722,
  3724, 3747, 3749, 3749, 3751, 3773, 3776, 3780, 3782, 3782, 3784, 3790,
  3792, 3801, 3804, 3807, 3840, 3911, 3913, 3948, 3953, 3991, 3993, 4028,
  4030, 4044, 4046, 4058, 4096, 4293, 4295, 4295, 4301, 4301, 4304, 4680,
  4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749,
  4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822,
  4824, 4880, 4882, 4885, 4888, 4954, 4957, 4988, 4992, 5017, 5024, 5109,
  5112, 5117, 5120, 5759, 5761, 5788, 5792, 5880, 5888, 5909, 5919, 5942,
  5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6109, 6112, 6121,
  6128, 6137, 6144, 6157, 6159, 6169, 6176, 6264, 6272, 6314, 6320, 6389,
  6400, 6430, 6432, 6443, 6448, 6459, 6464, 6464, 6468, 6509, 6512, 6516,
  6528, 6571, 6576, 6601, 6608, 6618, 6622, 6683, 6686, 6750, 6752, 6780,
  6783, 6793, 6800, 6809, 6816, 6829, 6832, 6862, 6912, 6988, 6992, 7038,
  7040, 7155, 7164, 7223, 7227, 7241, 7245, 7304, 7312, 7354, 7357, 7367,
  7376, 7418, 7424, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023,
  8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8132,
  8134, 8147, 8150, 8155, 8157, 8175, 8178, 8180, 8182, 8190, 8208, 8231,
  8240, 8286, 8304, 8305, 8308, 8334, 8336, 8348, 8352, 8384, 8400, 8432,
  8448, 8587, 8592, 9254, 9280, 9290, 9312, 11123, 11126, 11157, 11159, 11507,
  11513, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11632, 11647, 11670,
  11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726,
  11728, 11734, 11736, 11742, 11744, 11869, 11904, 11929, 11931, 12019, 12032, 12245,
  12272, 12287, 12289, 12351, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686,
  12688, 12771, 12783, 12830, 12832, 42124, 42128, 42182, 42192, 42539, 42560, 42743,
  42752, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43052, 43056, 43065,
  43072, 43127, 43136, 43205, 43214, 43225, 43232, 43347, 43359, 43388, 43392, 43469,
  43471, 43481, 43486, 43518, 43520, 43574, 43584, 43597, 43600, 43609, 43612, 43714,
  43739, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822,
  43824, 43883, 43888, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291,
  63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64310, 64312, 64316,
  64318, 64318, 64320, 64321, 64323, 64324, 64326, 64450, 64467, 64911, 64914, 64967,
  64975, 64975, 65008, 65049, 65056, 65106, 65108, 65126, 65128, 65131, 65136, 65140,
  65142, 65276, 65281, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500,
  65504, 65510, 65512, 65518, 65532, 65533, 65536, 65547, 65549, 65574, 65576, 65594,
  65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65792, 65794, 65799, 65843,
  65847, 65934, 65936, 65948, 65952, 65952, 66000, 66045, 66176, 66204, 66208, 66256,
  66272, 66299, 66304, 66339, 66349, 66378, 66384, 66426, 66432, 66461, 66463, 66499,
  66504, 66517, 66560, 66717, 66720, 66729, 66736, 66771, 66776, 66811, 66816, 66855,
  66864, 66915, 66927, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977,
  66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431,
  67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637,
  67639, 67640, 67644, 67644, 67647, 67669, 67671, 67742, 67751, 67759, 67808, 67826,
  67828, 67829, 67835, 67867, 67871, 67897, 67903, 67903, 67968, 68023, 68028, 68047,
  68050, 68099, 68101, 68102, 68108, 68115, 68117, 68119, 68121, 68149, 68152, 68154,
  68159, 68168, 68176, 68184, 68192, 68255, 68288, 68326, 68331, 68342, 68352, 68405,
  68409, 68437, 68440, 68466, 68472, 68497, 68505, 68508, 68521, 68527, 68608, 68680,
  68736, 68786, 68800, 68850, 68858, 68903, 68912, 68921, 69216, 69246, 69248, 69289,
  69291, 69293, 69296, 69297, 69373, 69415, 69424, 69465, 69488, 69513, 69552, 69579,
  69600, 69622, 69632, 69709, 69714, 69749, 69759, 69820, 69822, 69826, 69840, 69864,
  69872, 69881, 69888, 69940, 69942, 69959, 69968, 70006, 70016, 70111, 70113, 70132,
  70144, 70161, 70163, 70209, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301,
  70303, 70313, 70320, 70378, 70384, 70393, 70400, 70403, 70405, 70412, 70415, 70416,
  70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70459, 70468, 70471, 70472,
  70475, 70477, 70480, 70480, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516,
  70656, 70747, 70749, 70753, 70784, 70855, 70864, 70873, 71040, 71093, 71096, 71133,
  71168, 71236, 71248, 71257, 71264, 71276, 71296, 71353, 71360, 71369, 71424, 71450,
  71453, 71467, 71472, 71494, 71680, 71739, 71840, 71922, 71935, 71942, 71945, 71945,
  71948, 71955, 71957, 71958, 71960, 71989, 71991, 71992, 71995, 72006, 72016, 72025,
  72096, 72103, 72106, 72151, 72154, 72164, 72192, 72263, 72272, 72354, 72368, 72440,
  72448, 72457, 72704, 72712, 72714, 72758, 72760, 72773, 72784, 72812, 72816, 72847,
  72850, 72871, 72873, 72886, 72960, 72966, 72968, 72969, 72971, 73014, 73018, 73018,
  73020, 73021, 73023, 73031, 73040, 73049, 73056, 73061, 73063, 73064, 73066, 73102,
  73104, 73105, 73107, 73112, 73120, 73129, 73440, 73464, 73472, 73488, 73490, 73530,
  73534, 73561, 73648, 73648, 73664, 73713, 73727, 74649, 74752, 74862, 74864, 74868,
  74880, 75075, 77712, 77810, 77824, 78895, 78912, 78933, 82944, 83526, 92160, 92728,
  92736, 92766, 92768, 92777, 92782, 92862, 92864, 92873, 92880, 92909, 92912, 92917,
  92928, 92997, 93008, 93017, 93019, 93025, 93027, 93047, 93053, 93071, 93760, 93850,
  93952, 94026, 94031, 94087, 94095, 94111, 94176, 94180, 94192, 94193, 94208, 100343,
  100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882,
  110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770,
  113776, 113788, 113792, 113800, 113808, 113817, 113820, 113823, 118528, 118573, 118576, 118598,
  118608, 118723, 118784, 119029, 119040, 119078, 119081, 119154, 119163, 119274, 119296, 119365,
  119488, 119507, 119520, 119539, 119552, 119638, 119648, 119672, 119808, 119892, 119894, 119964,
  119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995,
  119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121,
  120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120779,
  120782, 121483, 121499, 121503, 121505, 121519, 122624, 122654, 122661, 122666, 122880, 122886,
  122888, 122904, 122907, 122913, 122915, 122916, 122918, 122922, 122928, 122989, 123023, 123023,
  123136, 123180, 123184, 123197, 123200, 123209, 123214, 123215, 123536, 123566, 123584, 123641,
  123647, 123647, 124112, 124153, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926,
  124928, 125124, 125127, 125142, 125184, 125259, 125264, 125273, 125278, 125279, 126065, 126132,
  126209, 126269, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503,
  126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535,
  126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551,
  126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564,
  126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601,
  126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 126704, 126705, 126976, 127019,
  127024, 127123, 127136, 127150, 127153, 127167, 127169, 127183, 127185, 127221, 127232, 127405,
  127462, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 128727,
  128732, 128748, 128752, 128764, 128768, 128886, 128891, 128985, 128992, 129003, 129008, 129008,
  129024, 129035, 129040, 129095, 129104, 129113, 129120, 129159, 129168, 129197, 129200, 129201,
  129280, 129619, 129632, 129645, 129648, 129660, 129664, 129672, 129680, 129725, 129727, 129733,
  129742, 129755, 129760, 129768, 129776, 129784, 129792, 129938, 129940, 129994, 130032, 130041,
  131072, 173791, 173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 191472, 192093,
  194560, 195101, 196608, 201546, 201552, 205743, 917760, 917999,
]

///|
/// Ranges for `str.isidentifier()` of one character.
let uc_id_start : FixedArray[Int] = [
  65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 186, 186,
  192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748,
  750, 750, 880, 884, 886, 887, 891, 893, 895, 895, 902, 902,
  904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1327,
  1329, 1366, 1369, 1369, 1376, 1416, 1488, 1514, 1519, 1522, 1568, 1610,
  1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788,
  1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026,
  2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088,
  2112, 2136, 2144, 2154, 2160, 2183, 2185, 2190, 2208, 2249, 2308, 2361,
  2365, 2365, 2384, 2384, 2392, 2401, 2417, 2432, 2437, 2444, 2447, 2448,
  2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510,
  2524, 2525, 2527, 2529, 2544, 2545, 2556, 2556, 2565, 2570, 2575, 2576,
  2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652,
  2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736,
  2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2809, 2809,
  2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873,
  2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954,
  2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980,
  2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112,
  3114, 3129, 3133, 3133, 3160, 3162, 3165, 3165, 3168, 3169, 3200, 3200,
  3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261,
  3293, 3294, 3296, 3297, 3313, 3314, 3332, 3340, 3342, 3344, 3346, 3386,
  3389, 3389, 3406, 3406, 3412, 3414, 3423, 3425, 3450, 3455, 3461, 3478,
  3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3634,
  3648, 3654, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749,
  3751, 3760, 3762, 3762, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807,
  3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159,
  4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225,
  4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680,
  4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749,
  4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822,
  4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, 5112, 5117,
  5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5905,
  5919, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103,
  6108, 6108, 6176, 6264, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6430,
  6480, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6656, 6678, 6688, 6740,
  6823, 6823, 6917, 6963, 6981, 6988, 7043, 7072, 7086, 7087, 7098, 7141,
  7168, 7203, 7245, 7247, 7258, 7293, 7296, 7304, 7312, 7354, 7357, 7359,
  7401, 7404, 7406, 7411, 7413, 7414, 7418, 7418, 7424, 7615, 7680, 7957,
  7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027,
  8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132,
  8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188,
  8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467,
  8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505,
  8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11492, 11499, 11502,
  11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631,
  11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718,
  11720, 11726, 11728, 11734, 11736, 11742, 12293, 12295, 12321, 12329, 12337, 12341,
  12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12591,
  12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237,
  42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42653, 42656, 42735,
  42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969,
  42994, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187,
  43250, 43255, 43259, 43259, 43261, 43262, 43274, 43301, 43312, 43334, 43360, 43388,
  43396, 43442, 43471, 43471, 43488, 43492, 43494, 43503, 43514, 43518, 43520, 43560,
  43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43646, 43695, 43697, 43697,
  43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754,
  43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822,
  43824, 43866, 43868, 43881, 43888, 44002, 44032, 55203, 55216, 55238, 55243, 55291,
  63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296,
  64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433,
  64467, 64605, 64612, 64829, 64848, 64911, 64914, 64967, 65008, 65017, 65137, 65137,
  65139, 65139, 65143, 65143, 65145, 65145, 65147, 65147, 65149, 65149, 65151, 65276,
  65313, 65338, 65345, 65370, 65382, 65437, 65440, 65470, 65474, 65479, 65482, 65487,
  65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597,
  65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66176, 66204, 66208, 66256,
  66304, 66335, 66349, 66378, 66384, 66421, 66432, 66461, 66464, 66499, 66504, 66511,
  66513, 66517, 66560, 66717, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915,
  66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993,
  66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461,
  67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640,
  67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829,
  67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68096, 68112, 68115,
  68117, 68119, 68121, 68149, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68324,
  68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786,
  68800, 68850, 68864, 68899, 69248, 69289, 69296, 69297, 69376, 69404, 69415, 69415,
  69424, 69445, 69488, 69505, 69552, 69572, 69600, 69622, 69635, 69687, 69745, 69746,
  69749, 69749, 69763, 69807, 69840, 69864, 69891, 69926, 69956, 69956, 69959, 69959,
  69968, 70002, 70006, 70006, 70019, 70066, 70081, 70084, 70106, 70106, 70108, 70108,
  70144, 70161, 70163, 70187, 70207, 70208, 70272, 70278, 70280, 70280, 70282, 70285,
  70287, 70301, 70303, 70312, 70320, 70366, 70405, 70412, 70415, 70416, 70419, 70440,
  70442, 70448, 70450, 70451, 70453, 70457, 70461, 70461, 70480, 70480, 70493, 70497,
  70656, 70708, 70727, 70730, 70751, 70753, 70784, 70831, 70852, 70853, 70855, 70855,
  71040, 71086, 71128, 71131, 71168, 71215, 71236, 71236, 71296, 71338, 71352, 71352,
  71424, 71450, 71488, 71494, 71680, 71723, 71840, 71903, 71935, 71942, 71945, 71945,
  71948, 71955, 71957, 71958, 71960, 71983, 71999, 71999, 72001, 72001, 72096, 72103,
  72106, 72144, 72161, 72161, 72163, 72163, 72192, 72192, 72203, 72242, 72250, 72250,
  72272, 72272, 72284, 72329, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72750,
  72768, 72768, 72818, 72847, 72960, 72966, 72968, 72969, 72971, 73008, 73030, 73030,
  73056, 73061, 73063, 73064, 73066, 73097, 73112, 73112, 73440, 73458, 73474, 73474,
  73476, 73488, 73490, 73523, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075,
  77712, 77808, 77824, 78895, 78913, 78918, 82944, 83526, 92160, 92728, 92736, 92766,
  92784, 92862, 92880, 92909, 92928, 92975, 92992, 92995, 93027, 93047, 93053, 93071,
  93760, 93823, 93952, 94026, 94032, 94032, 94099, 94111, 94176, 94177, 94179, 94179,
  94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590,
  110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355,
  113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 119808, 119892, 119894, 119964,
  119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995,
  119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121,
  120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512,
  120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686,
  120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 122624, 122654, 122661, 122666,
  122928, 122989, 123136, 123180, 123191, 123197, 123214, 123214, 123536, 123565, 123584, 123627,
  124112, 124139, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124,
  125184, 125251, 125259, 125259, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500,
  126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530,
  126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548,
  126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562,
  126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590,
  126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173791,
  173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 191472, 192093, 194560, 195101,
  196608, 201546, 201552, 205743,
]

///|
/// Ranges for characters that may continue a Python identifier.
let uc_id_continue : FixedArray[Int] = [
  48, 57, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181,
  183, 183, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721,
  736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 891, 893,
  895, 895, 902, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153,
  1155, 1159, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1425, 1469,
  1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1519, 1522,
  1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788,
  1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2045, 2045,
  2048, 2093, 2112, 2139, 2144, 2154, 2160, 2183, 2185, 2190, 2200, 2273,
  2275, 2403, 2406, 2415, 2417, 2435, 2437, 2444, 2447, 2448, 2451, 2472,
  2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510,
  2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2556, 2556, 2558, 2558,
  2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611,
  2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637,
  2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701,
  2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757,
  2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2809, 2815,
  2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867,
  2869, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2901, 2903, 2908, 2909,
  2911, 2915, 2918, 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960,
  2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986,
  2990, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031,
  3046, 3055, 3072, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3132, 3140,
  3142, 3144, 3146, 3149, 3157, 3158, 3160, 3162, 3165, 3165, 3168, 3171,
  3174, 3183, 3200, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251,
  3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3293, 3294,
  3296, 3299, 3302, 3311, 3313, 3315, 3328, 3340, 3342, 3344, 3346, 3396,
  3398, 3400, 3402, 3406, 3412, 3415, 3423, 3427, 3430, 3439, 3450, 3455,
  3457, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526,
  3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3558, 3567, 3570, 3571,
  3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3718, 3722,
  3724, 3747, 3749, 3749, 3751, 3773, 3776, 3780, 3782, 3782, 3784, 3790,
  3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893,
  3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991,
  3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295,
  4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696,
  4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798,
  4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954,
  4957, 4959, 4969, 4977, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740,
  5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5909, 5919, 5940,
  5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, 6103, 6103,
  6108, 6109, 6112, 6121, 6155, 6157, 6159, 6169, 6176, 6264, 6272, 6314,
  6320, 6389, 6400, 6430, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516,
  6528, 6571, 6576, 6601, 6608, 6618, 6656, 6683, 6688, 6750, 6752, 6780,
  6783, 6793, 6800, 6809, 6823, 6823, 6832, 6845, 6847, 6862, 6912, 6988,
  6992, 7001, 7019, 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293,
  7296, 7304, 7312, 7354, 7357, 7359, 7376, 7378, 7380, 7418, 7424, 7957,
  7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027,
  8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132,
  8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188,
  8204, 8205, 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348,
  8400, 8412, 8417, 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467,
  8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505,
  8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11492, 11499, 11507,
  11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670,
  11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726,
  11728, 11734, 11736, 11742, 11744, 11775, 12293, 12295, 12321, 12335, 12337, 12341,
  12344, 12348, 12353, 12438, 12441, 12442, 12445, 12447, 12449, 12543, 12549, 12591,
  12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237,
  42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42737, 42775, 42783,
  42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43047,
  43052, 43052, 43072, 43123, 43136, 43205, 43216, 43225, 43232, 43255, 43259, 43259,
  43261, 43309, 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43488, 43518,
  43520, 43574, 43584, 43597, 43600, 43609, 43616, 43638, 43642, 43714, 43739, 43741,
  43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814,
  43816, 43822, 43824, 43866, 43868, 43881, 43888, 44010, 44012, 44013, 44016, 44025,
  44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262,
  64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321,
  64323, 64324, 64326, 64433, 64467, 64605, 64612, 64829, 64848, 64911, 64914, 64967,
  65008, 65017, 65024, 65039, 65056, 65071, 65075, 65076, 65101, 65103, 65137, 65137,
  65139, 65139, 65143, 65143, 65145, 65145, 65147, 65147, 65149, 65149, 65151, 65276,
  65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65381, 65470, 65474, 65479,
  65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594,
  65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66045, 66045,
  66176, 66204, 66208, 66256, 66272, 66272, 66304, 66335, 66349, 66378, 66384, 66426,
  66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66720, 66729,
  66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938, 66940, 66954,
  66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004,
  67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514,
  67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669,
  67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897,
  67968, 68023, 68030, 68031, 68096, 68099, 68101, 68102, 68108, 68115, 68117, 68119,
  68121, 68149, 68152, 68154, 68159, 68159, 68192, 68220, 68224, 68252, 68288, 68295,
  68297, 68326, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680,
  68736, 68786, 68800, 68850, 68864, 68903, 68912, 68921, 69248, 69289, 69291, 69292,
  69296, 69297, 69373, 69404, 69415, 69415, 69424, 69456, 69488, 69509, 69552, 69572,
  69600, 69622, 69632, 69702, 69734, 69749, 69759, 69818, 69826, 69826, 69840, 69864,
  69872, 69881, 69888, 69940, 69942, 69951, 69956, 69959, 69968, 70003, 70006, 70006,
  70016, 70084, 70089, 70092, 70094, 70106, 70108, 70108, 70144, 70161, 70163, 70199,
  70206, 70209, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312,
  70320, 70378, 70384, 70393, 70400, 70403, 70405, 70412, 70415, 70416, 70419, 70440,
  70442, 70448, 70450, 70451, 70453, 70457, 70459, 70468, 70471, 70472, 70475, 70477,
  70480, 70480, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70656, 70730,
  70736, 70745, 70750, 70753, 70784, 70853, 70855, 70855, 70864, 70873, 71040, 71093,
  71096, 71104, 71128, 71133, 71168, 71232, 71236, 71236, 71248, 71257, 71296, 71352,
  71360, 71369, 71424, 71450, 71453, 71467, 71472, 71481, 71488, 71494, 71680, 71738,
  71840, 71913, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71989,
  71991, 71992, 71995, 72003, 72016, 72025, 72096, 72103, 72106, 72151, 72154, 72161,
  72163, 72164, 72192, 72254, 72263, 72263, 72272, 72345, 72349, 72349, 72368, 72440,
  72704, 72712, 72714, 72758, 72760, 72768, 72784, 72793, 72818, 72847, 72850, 72871,
  72873, 72886, 72960, 72966, 72968, 72969, 72971, 73014, 73018, 73018, 73020, 73021,
  73023, 73031, 73040, 73049, 73056, 73061, 73063, 73064, 73066, 73102, 73104, 73105,
  73107, 73112, 73120, 73129, 73440, 73462, 73472, 73488, 73490, 73530, 73534, 73538,
  73552, 73561, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77712, 77808,
  77824, 78895, 78912, 78933, 82944, 83526, 92160, 92728, 92736, 92766, 92768, 92777,
  92784, 92862, 92864, 92873, 92880, 92909, 92912, 92916, 92928, 92982, 92992, 92995,
  93008, 93017, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94031, 94087,
  94095, 94111, 94176, 94177, 94179, 94180, 94192, 94193, 94208, 100343, 100352, 101589,
  101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898,
  110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788,
  113792, 113800, 113808, 113817, 113821, 113822, 118528, 118573, 118576, 118598, 119141, 119145,
  119149, 119154, 119163, 119170, 119173, 119179, 119210, 119213, 119362, 119364, 119808, 119892,
  119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993,
  119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092,
  120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485,
  120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654,
  120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 120782, 120831,
  121344, 121398, 121403, 121452, 121461, 121461, 121476, 121476, 121499, 121503, 121505, 121519,
  122624, 122654, 122661, 122666, 122880, 122886, 122888, 122904, 122907, 122913, 122915, 122916,
  122918, 122922, 122928, 122989, 123023, 123023, 123136, 123180, 123184, 123197, 123200, 123209,
  123214, 123214, 123536, 123566, 123584, 123641, 124112, 124153, 124896, 124902, 124904, 124907,
  124909, 124910, 124912, 124926, 124928, 125124, 125136, 125142, 125184, 125259, 125264, 125273,
  126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514,
  126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537,
  126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553,
  126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570,
  126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619,
  126625, 126627, 126629, 126633, 126635, 126651, 130032, 130041, 131072, 173791, 173824, 177977,
  177984, 178205, 178208, 183969, 183984, 191456, 191472, 192093, 194560, 195101, 196608, 201546,
  201552, 205743, 917760, 917999,
]

///|
/// Ranges for `_sre.unicode_iscased`.
let uc_sre_cased : FixedArray[Int] = [
  65, 90, 97, 122, 181, 181, 192, 214, 216, 246, 248, 311,
  313, 396, 398, 410, 412, 425, 428, 441, 444, 445, 447, 447,
  452, 544, 546, 563, 570, 596, 598, 599, 601, 601, 603, 604,
  608, 609, 611, 611, 613, 614, 616, 620, 623, 623, 625, 626,
  629, 629, 637, 637, 640, 640, 642, 643, 647, 652, 658, 658,
  669, 670, 837, 837, 880, 883, 886, 887, 891, 893, 895, 895,
  902, 902, 904, 906, 908, 908, 910, 929, 931, 977, 981, 1013,
  1015, 1019, 1021, 1153, 1162, 1327, 1329, 1366, 1377, 1415, 4256, 4293,
  4295, 4295, 4301, 4301, 4304, 4346, 4349, 4351, 5024, 5109, 5112, 5117,
  7296, 7304, 7312, 7354, 7357, 7359, 7545, 7545, 7549, 7549, 7566, 7566,
  7680, 7835, 7838, 7838, 7840, 7957, 7960, 7965, 7968, 8005, 8008, 8013,
  8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116,
  8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155,
  8160, 8172, 8178, 8180, 8182, 8188, 8486, 8486, 8490, 8491, 8498, 8498,
  8526, 8526, 8544, 8575, 8579, 8580, 9398, 9449, 11264, 11376, 11378, 11379,
  11381, 11382, 11390, 11491, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559,
  11565, 11565, 42560, 42605, 42624, 42651, 42786, 42799, 42802, 42863, 42873, 42887,
  42891, 42893, 42896, 42900, 42902, 42926, 42928, 42954, 42960, 42961, 42966, 42969,
  42997, 42998, 43859, 43859, 43888, 43967, 64256, 64262, 64275, 64279, 65313, 65338,
  65345, 65370, 66560, 66639, 66736, 66771, 66776, 66811, 66928, 66938, 66940, 66954,
  66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004,
  68736, 68786, 68800, 68850, 71840, 71903, 93760, 93823, 125184, 125251,
]

///|
/// Ranges for `Case_Ignorable` (Final_Sigma rule of `str.lower()`).
let uc_case_ignorable : FixedArray[Int] = [
  39, 39, 46, 46, 58, 58, 94, 94, 96, 96, 168, 168,
  173, 173, 175, 175, 180, 180, 183, 184, 688, 879, 884, 885,
  890, 890, 900, 901, 903, 903, 1155, 1161, 1369, 1369, 1375, 1375,
  1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1524, 1524,
  1536, 1541, 1552, 1562, 1564, 1564, 1600, 1600, 1611, 1631, 1648, 1648,
  1750, 1757, 1759, 1768, 1770, 1773, 1807, 1807, 1809, 1809, 1840, 1866,
  1958, 1968, 2027, 2037, 2042, 2042, 2045, 2045, 2070, 2093, 2137, 2139,
  2184, 2184, 2192, 2193, 2200, 2207, 2249, 2306, 2362, 2362, 2364, 2364,
  2369, 2376, 2381, 2381, 2385, 2391, 2402, 2403, 2417, 2417, 2433, 2433,
  2492, 2492, 2497, 2500, 2509, 2509, 2530, 2531, 2558, 2558, 2561, 2562,
  2620, 2620, 2625, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2672, 2673,
  2677, 2677, 2689, 2690, 2748, 2748, 2753, 2757, 2759, 2760, 2765, 2765,
  2786, 2787, 2810, 2815, 2817, 2817, 2876, 2876, 2879, 2879, 2881, 2884,
  2893, 2893, 2901, 2902, 2914, 2915, 2946, 2946, 3008, 3008, 3021, 3021,
  3072, 3072, 3076, 3076, 3132, 3132, 3134, 3136, 3142, 3144, 3146, 3149,
  3157, 3158, 3170, 3171, 3201, 3201, 3260, 3260, 3263, 3263, 3270, 3270,
  3276, 3277, 3298, 3299, 3328, 3329, 3387, 3388, 3393, 3396, 3405, 3405,
  3426, 3427, 3457, 3457, 3530, 3530, 3538, 3540, 3542, 3542, 3633, 3633,
  3636, 3642, 3654, 3662, 3761, 3761, 3764, 3772, 3782, 3782, 3784, 3790,
  3864, 3865, 3893, 3893, 3895, 3895, 3897, 3897, 3953, 3966, 3968, 3972,
  3974, 3975, 3981, 3991, 3993, 4028, 4038, 4038, 4141, 4144, 4146, 4151,
  4153, 4154, 4157, 4158, 4184, 4185, 4190, 4192, 4209, 4212, 4226, 4226,
  4229, 4230, 4237, 4237, 4253, 4253, 4348, 4348, 4957, 4959, 5906, 5908,
  5938, 5939, 5970, 5971, 6002, 6003, 6068, 6069, 6071, 6077, 6086, 6086,
  6089, 6099, 6103, 6103, 6109, 6109, 6155, 6159, 6211, 6211, 6277, 6278,
  6313, 6313, 6432, 6434, 6439, 6440, 6450, 6450, 6457, 6459, 6679, 6680,
  6683, 6683, 6742, 6742, 6744, 6750, 6752, 6752, 6754, 6754, 6757, 6764,
  6771, 6780, 6783, 6783, 6823, 6823, 6832, 6862, 6912, 6915, 6964, 6964,
  6966, 6970, 6972, 6972, 6978, 6978, 7019, 7027, 7040, 7041, 7074, 7077,
  7080, 7081, 7083, 7085, 7142, 7142, 7144, 7145, 7149, 7149, 7151, 7153,
  7212, 7219, 7222, 7223, 7288, 7293, 7376, 7378, 7380, 7392, 7394, 7400,
  7405, 7405, 7412, 7412, 7416, 7417, 7468, 7530, 7544, 7544, 7579, 7679,
  8125, 8125, 8127, 8129, 8141, 8143, 8157, 8159, 8173, 8175, 8189, 8190,
  8203, 8207, 8216, 8217, 8228, 8228, 8231, 8231, 8234, 8238, 8288, 8292,
  8294, 8303, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8432, 11388, 11389,
  11503, 11505, 11631, 11631, 11647, 11647, 11744, 11775, 11823, 11823, 12293, 12293,
  12330, 12333, 12337, 12341, 12347, 12347, 12441, 12446, 12540, 12542, 40981, 40981,
  42232, 42237, 42508, 42508, 42607, 42610, 42612, 42621, 42623, 42623, 42652, 42655,
  42736, 42737, 42752, 42785, 42864, 42864, 42888, 42890, 42994, 42996, 43000, 43001,
  43010, 43010, 43014, 43014, 43019, 43019, 43045, 43046, 43052, 43052, 43204, 43205,
  43232, 43249, 43263, 43263, 43302, 43309, 43335, 43345, 43392, 43394, 43443, 43443,
  43446, 43449, 43452, 43453, 43471, 43471, 43493, 43494, 43561, 43566, 43569, 43570,
  43573, 43574, 43587, 43587, 43596, 43596, 43632, 43632, 43644, 43644, 43696, 43696,
  43698, 43700, 43703, 43704, 43710, 43711, 43713, 43713, 43741, 43741, 43756, 43757,
  43763, 43764, 43766, 43766, 43867, 43871, 43881, 43883, 44005, 44005, 44008, 44008,
  44013, 44013, 64286, 64286, 64434, 64450, 65024, 65039, 65043, 65043, 65056, 65071,
  65106, 65106, 65109, 65109, 65279, 65279, 65287, 65287, 65294, 65294, 65306, 65306,
  65342, 65342, 65344, 65344, 65392, 65392, 65438, 65439, 65507, 65507, 65529, 65531,
  66045, 66045, 66272, 66272, 66422, 66426, 67456, 67461, 67463, 67504, 67506, 67514,
  68097, 68099, 68101, 68102, 68108, 68111, 68152, 68154, 68159, 68159, 68325, 68326,
  68900, 68903, 69291, 69292, 69373, 69375, 69446, 69456, 69506, 69509, 69633, 69633,
  69688, 69702, 69744, 69744, 69747, 69748, 69759, 69761, 69811, 69814, 69817, 69818,
  69821, 69821, 69826, 69826, 69837, 69837, 69888, 69890, 69927, 69931, 69933, 69940,
  70003, 70003, 70016, 70017, 70070, 70078, 70089, 70092, 70095, 70095, 70191, 70193,
  70196, 70196, 70198, 70199, 70206, 70206, 70209, 70209, 70367, 70367, 70371, 70378,
  70400, 70401, 70459, 70460, 70464, 70464, 70502, 70508, 70512, 70516, 70712, 70719,
  70722, 70724, 70726, 70726, 70750, 70750, 70835, 70840, 70842, 70842, 70847, 70848,
  70850, 70851, 71090, 71093, 71100, 71101, 71103, 71104, 71132, 71133, 71219, 71226,
  71229, 71229, 71231, 71232, 71339, 71339, 71341, 71341, 71344, 71349, 71351, 71351,
  71453, 71455, 71458, 71461, 71463, 71467, 71727, 71735, 71737, 71738, 71995, 71996,
  71998, 71998, 72003, 72003, 72148, 72151, 72154, 72155, 72160, 72160, 72193, 72202,
  72243, 72248, 72251, 72254, 72263, 72263, 72273, 72278, 72281, 72283, 72330, 72342,
  72344, 72345, 72752, 72758, 72760, 72765, 72767, 72767, 72850, 72871, 72874, 72880,
  72882, 72883, 72885, 72886, 73009, 73014, 73018, 73018, 73020, 73021, 73023, 73029,
  73031, 73031, 73104, 73105, 73109, 73109, 73111, 73111, 73459, 73460, 73472, 73473,
  73526, 73530, 73536, 73536, 73538, 73538, 78896, 78912, 78919, 78933, 92912, 92916,
  92976, 92982, 92992, 92995, 94031, 94031, 94095, 94111, 94176, 94177, 94179, 94180,
  110576, 110579, 110581, 110587, 110589, 110590, 113821, 113822, 113824, 113827, 118528, 118573,
  118576, 118598, 119143, 119145, 119155, 119170, 119173, 119179, 119210, 119213, 119362, 119364,
  121344, 121398, 121403, 121452, 121461, 121461, 121476, 121476, 121499, 121503, 121505, 121519,
  122880, 122886, 122888, 122904, 122907, 122913, 122915, 122916, 122918, 122922, 122928, 122989,
  123023, 123023, 123184, 123197, 123566, 123566, 123628, 123631, 124139, 124143, 125136, 125142,
  125252, 125259, 127995, 127999, 917505, 917505, 917536, 917631, 917760, 917999,
]

///|
/// Ranges for `Cased` (Final_Sigma rule of `str.lower()`).
let uc_cased : FixedArray[Int] = [
  65, 90, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214,
  216, 246, 248, 442, 444, 447, 452, 659, 661, 687, 880, 883,
  886, 887, 891, 893, 895, 895, 902, 902, 904, 906, 908, 908,
  910, 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366, 1376, 1416,
  4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4349, 4351, 5024, 5109,
  5112, 5117, 7296, 7304, 7312, 7354, 7357, 7359, 7424, 7467, 7531, 7543,
  7545, 7578, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023,
  8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124,
  8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172,
  8178, 8180, 8182, 8188, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469,
  8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8500,
  8505, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8575, 8579, 8580,
  9398, 9449, 11264, 11387, 11390, 11492, 11499, 11502, 11506, 11507, 11520, 11557,
  11559, 11559, 11565, 11565, 42560, 42605, 42624, 42651, 42786, 42863, 42865, 42887,
  42891, 42894, 42896, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42997, 42998,
  43002, 43002, 43824, 43866, 43872, 43880, 43888, 43967, 64256, 64262, 64275, 64279,
  65313, 65338, 65345, 65370, 66560, 66639, 66736, 66771, 66776, 66811, 66928, 66938,
  66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001,
  67003, 67004, 68736, 68786, 68800, 68850, 71840, 71903, 93760, 93823, 119808, 119892,
  119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993,
  119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092,
  120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485,
  120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654,
  120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 122624, 122633,
  122635, 122654, 122661, 122666, 125184, 125251, 127280, 127305, 127312, 127337, 127344, 127369,
]

///|
/// Single code point mappings of `str.upper()` as `[start, end, delta, stride]` runs.
let uc_upper_runs : FixedArray[Int] = [
  97, 122, -32, 1, 181, 181, 743, 1, 224, 246, -32, 1,
  248, 254, -32, 1, 255, 255, 121, 1, 257, 303, -1, 2,
  305, 305, -232, 1, 307, 311, -1, 2, 314, 328, -1, 2,
  331, 375, -1, 2, 378, 382, -1, 2, 383, 383, -300, 1,
  384, 384, 195, 1, 387, 389, -1, 2, 392, 392, -1, 1,
  396, 396, -1, 1, 402, 402, -1, 1, 405, 405, 97, 1,
  409, 409, -1, 1, 410, 410, 163, 1, 414, 414, 130, 1,
  417, 421, -1, 2, 424, 424, -1, 1, 429, 429, -1, 1,
  432, 432, -1, 1, 436, 438, -1, 2, 441, 441, -1, 1,
  445, 445, -1, 1, 447, 447, 56, 1, 453, 453, -1, 1,
  454, 454, -2, 1, 456, 456, -1, 1, 457, 457, -2, 1,
  459, 459, -1, 1, 460, 460, -2, 1, 462, 476, -1, 2,
  477, 477, -79, 1, 479, 495, -1, 2, 498, 498, -1, 1,
  499, 499, -2, 1, 501, 501, -1, 1, 505, 543, -1, 2,
  547, 563, -1, 2, 572, 572, -1, 1, 575, 576, 10815, 1,
  578, 578, -1, 1, 583, 591, -1, 2, 592, 592, 10783, 1,
  593, 593, 10780, 1, 594, 594, 10782, 1, 595, 595, -210, 1,
  596, 596, -206, 1, 598, 599, -205, 1, 601, 601, -202, 1,
  603, 603, -203, 1, 604, 604, 42319, 1, 608, 608, -205, 1,
  609, 609, 42315, 1, 611, 611, -207, 1, 613, 613, 42280, 1,
  614, 614, 42308, 1, 616, 616, -209, 1, 617, 617, -211, 1,
  618, 618, 42308, 1, 619, 619, 10743, 1, 620, 620, 42305, 1,
  623, 623, -211, 1, 625, 625, 10749, 1, 626, 626, -213, 1,
  629, 629, -214, 1, 637, 637, 10727, 1, 640, 640, -218, 1,
  642, 642, 42307, 1, 643, 643, -218, 1, 647, 647, 42282, 1,
  648, 648, -218, 1, 649, 649, -69, 1, 650, 651, -217, 1,
  652, 652, -71, 1, 658, 658, -219, 1, 669, 669, 42261, 1,
  670, 670, 42258, 1, 837, 837, 84, 1, 881, 883, -1, 2,
  887, 887, -1, 1, 891, 893, 130, 1, 940, 940, -38, 1,
  941, 943, -37, 1, 945, 961, -32, 1, 962, 962, -31, 1,
  963, 971, -32, 1, 972, 972, -64, 1, 973, 974, -63, 1,
  976, 976, -62, 1, 977, 977, -57, 1, 981, 981, -47, 1,
  982, 982, -54, 1, 983, 983, -8, 1, 985, 1007, -1, 2,
  1008, 1008, -86, 1, 1009, 1009, -80, 1, 1010, 1010, 7, 1,
  1011, 1011, -116, 1, 1013, 1013, -96, 1, 1016, 1016, -1, 1,
  1019, 1019, -1, 1, 1072, 1103, -32, 1, 1104, 1119, -80, 1,
  1121, 1153, -1, 2, 1163, 1215, -1, 2, 1218, 1230, -1, 2,
  1231, 1231, -15, 1, 1233, 1327, -1, 2, 1377, 1414, -48, 1,
  4304, 4346, 3008, 1, 4349, 4351, 3008, 1, 5112, 5117, -8, 1,
  7296, 7296, -6254, 1, 7297, 7297, -6253, 1, 7298, 7298, -6244, 1,
  7299, 7300, -6242, 1, 7301, 7301, -6243, 1, 7302, 7302, -6236, 1,
  7303, 7303, -6181, 1, 7304, 7304, 35266, 1, 7545, 7545, 35332, 1,
  7549, 7549, 3814, 1, 7566, 7566, 35384, 1, 7681, 7829, -1, 2,
  7835, 7835, -59, 1, 7841, 7935, -1, 2, 7936, 7943, 8, 1,
  7952, 7957, 8, 1, 7968, 7975, 8, 1, 7984, 7991, 8, 1,
  8000, 8005, 8, 1, 8017, 8017, 8, 1, 8019, 8019, 8, 1,
  8021, 8021, 8, 1, 8023, 8023, 8, 1, 8032, 8039, 8, 1,
  8048, 8049, 74, 1, 8050, 8053, 86, 1, 8054, 8055, 100, 1,
  8056, 8057, 128, 1, 8058, 8059, 112, 1, 8060, 8061, 126, 1,
  8112, 8113, 8, 1, 8126, 8126, -7205, 1, 8144, 8145, 8, 1,
  8160, 8161, 8, 1, 8165, 8165, 7, 1, 8526, 8526, -28, 1,
  8560, 8575, -16, 1, 8580, 8580, -1, 1, 9424, 9449, -26, 1,
  11312, 11359, -48, 1, 11361, 11361, -1, 1, 11365, 11365, -10795, 1,
  11366, 11366, -10792, 1, 11368, 11372, -1, 2, 11379, 11379, -1, 1,
  11382, 11382, -1, 1, 11393, 11491, -1, 2, 11500, 11502, -1, 2,
  11507, 11507, -1, 1, 11520, 11557, -7264, 1, 11559, 11559, -7264, 1,
  11565, 11565, -7264, 1, 42561, 42605, -1, 2, 42625, 42651, -1, 2,
  42787, 42799, -1, 2, 42803, 42863, -1, 2, 42874, 42876, -1, 2,
  42879, 42887, -1, 2, 42892, 42892, -1, 1, 42897, 42899, -1, 2,
  42900, 42900, 48, 1, 42903, 42921, -1, 2, 42933, 42947, -1, 2,
  42952, 42954, -1, 2, 42961, 42961, -1, 1, 42967, 42969, -1, 2,
  42998, 42998, -1, 1, 43859, 43859, -928, 1, 43888, 43967, -38864, 1,
  65345, 65370, -32, 1, 66600, 66639, -40, 1, 66776, 66811, -40, 1,
  66967, 66977, -39, 1, 66979, 66993, -39, 1, 66995, 67001, -39, 1,
  67003, 67004, -39, 1, 68800, 68850, -64, 1, 71872, 71903, -32, 1,
  93792, 93823, -32, 1, 125218, 125251, -34, 1,
]

///|
/// Code points whose `str.upper()` expands.
let uc_upper_multi_cps : FixedArray[Int] = [
  223, 329, 496, 912, 944, 1415, 7830, 7831, 7832, 7833, 7834, 8016,
  8018, 8020, 8022, 8064, 8065, 8066, 8067, 8068, 8069, 8070, 8071, 8072,
  8073, 8074, 8075, 8076, 8077, 8078, 8079, 8080, 8081, 8082, 8083, 8084,
  8085, 8086, 8087, 8088, 8089, 8090, 8091, 8092, 8093, 8094, 8095, 8096,
  8097, 8098, 8099, 8100, 8101, 8102, 8103, 8104, 8105, 8106, 8107, 8108,
  8109, 8110, 8111, 8114, 8115, 8116, 8118, 8119, 8124, 8130, 8131, 8132,
  8134, 8135, 8140, 8146, 8147, 8150, 8151, 8162, 8163, 8164, 8166, 8167,
  8178, 8179, 8180, 8182, 8183, 8188, 64256, 64257, 64258, 64259, 64260, 64261,
  64262, 64275, 64276, 64277, 64278, 64279,
]

///|
/// The expansions of `uc_upper_multi_cps`.
let uc_upper_multi_strs : FixedArray[String] = [
  "SS", "\u{2bc}N", "J\u{30c}", "\u{399}\u{308}\u{301}", "\u{3a5}\u{308}\u{301}", "\u{535}\u{552}", "H\u{331}", "T\u{308}",
  "W\u{30a}", "Y\u{30a}", "A\u{2be}", "\u{3a5}\u{313}", "\u{3a5}\u{313}\u{300}", "\u{3a5}\u{313}\u{301}", "\u{3a5}\u{313}\u{342}", "\u{1f08}\u{399}",
  "\u{1f09}\u{399}", "\u{1f0a}\u{399}", "\u{1f0b}\u{399}", "\u{1f0c}\u{399}", "\u{1f0d}\u{399}", "\u{1f0e}\u{399}", "\u{1f0f}\u{399}", "\u{1f08}\u{399}",
  "\u{1f09}\u{399}", "\u{1f0a}\u{399}", "\u{1f0b}\u{399}", "\u{1f0c}\u{399}", "\u{1f0d}\u{399}", "\u{1f0e}\u{399}", "\u{1f0f}\u{399}", "\u{1f28}\u{399}",
  "\u{1f29}\u{399}", "\u{1f2a}\u{399}", "\u{1f2b}\u{399}", "\u{1f2c}\u{399}", "\u{1f2d}\u{399}", "\u{1f2e}\u{399}", "\u{1f2f}\u{399}", "\u{1f28}\u{399}",
  "\u{1f29}\u{399}", "\u{1f2a}\u{399}", "\u{1f2b}\u{399}", "\u{1f2c}\u{399}", "\u{1f2d}\u{399}", "\u{1f2e}\u{399}", "\u{1f2f}\u{399}", "\u{1f68}\u{399}",
  "\u{1f69}\u{399}", "\u{1f6a}\u{399}", "\u{1f6b}\u{399}", "\u{1f6c}\u{399}", "\u{1f6d}\u{399}", "\u{1f6e}\u{399}", "\u{1f6f}\u{399}", "\u{1f68}\u{399}",
  "\u{1f69}\u{399}", "\u{1f6a}\u{399}", "\u{1f6b}\u{399}", "\u{1f6c}\u{399}", "\u{1f6d}\u{399}", "\u{1f6e}\u{399}", "\u{1f6f}\u{399}", "\u{1fba}\u{399}",
  "\u{391}\u{399}", "\u{386}\u{399}", "\u{391}\u{342}", "\u{391}\u{342}\u{399}", "\u{391}\u{399}", "\u{1fca}\u{399}", "\u{397}\u{399}", "\u{389}\u{399}",
  "\u{397}\u{342}", "\u{397}\u{342}\u{399}", "\u{397}\u{399}", "\u{399}\u{308}\u{300}", "\u{399}\u{308}\u{301}", "\u{399}\u{342}", "\u{399}\u{308}\u{342}", "\u{3a5}\u{308}\u{300}",
  "\u{3a5}\u{308}\u{301}", "\u{3a1}\u{313}", "\u{3a5}\u{342}", "\u{3a5}\u{308}\u{342}", "\u{1ffa}\u{399}", "\u{3a9}\u{399}", "\u{38f}\u{399}", "\u{3a9}\u{342}",
  "\u{3a9}\u{342}\u{399}", "\u{3a9}\u{399}", "FF", "FI", "FL", "FFI", "FFL", "ST",
  "ST", "\u{544}\u{546}", "\u{544}\u{535}", "\u{544}\u{53b}", "\u{54e}\u{546}", "\u{544}\u{53d}",
]

///|
/// Single code point mappings of `str.lower()` (without the Final_Sigma rule) as `[start, end, delta, stride]` runs.
let uc_lower_runs : FixedArray[Int] = [
  65, 90, 32, 1, 192, 214, 32, 1, 216, 222, 32, 1,
  256, 302, 1, 2, 306, 310, 1, 2, 313, 327, 1, 2,
  330, 374, 1, 2, 376, 376, -121, 1, 377, 381, 1, 2,
  385, 385, 210, 1, 386, 388, 1, 2, 390, 390, 206, 1,
  391, 391, 1, 1, 393, 394, 205, 1, 395, 395, 1, 1,
  398, 398, 79, 1, 399, 399, 202, 1, 400, 400, 203, 1,
  401, 401, 1, 1, 403, 403, 205, 1, 404, 404, 207, 1,
  406, 406, 211, 1, 407, 407, 209, 1, 408, 408, 1, 1,
  412, 412, 211, 1, 413, 413, 213, 1, 415, 415, 214, 1,
  416, 420, 1, 2, 422, 422, 218, 1, 423, 423, 1, 1,
  425, 425, 218, 1, 428, 428, 1, 1, 430, 430, 218, 1,
  431, 431, 1, 1, 433, 434, 217, 1, 435, 437, 1, 2,
  439, 439, 219, 1, 440, 440, 1, 1, 444, 444, 1, 1,
  452, 452, 2, 1, 453, 453, 1, 1, 455, 455, 2, 1,
  456, 456, 1, 1, 458, 458, 2, 1, 459, 475, 1, 2,
  478, 494, 1, 2, 497, 497, 2, 1, 498, 500, 1, 2,
  502, 502, -97, 1, 503, 503, -56, 1, 504, 542, 1, 2,
  544, 544, -130, 1, 546, 562, 1, 2, 570, 570, 10795, 1,
  571, 571, 1, 1, 573, 573, -163, 1, 574, 574, 10792, 1,
  577, 577, 1, 1, 579, 579, -195, 1, 580, 580, 69, 1,
  581, 581, 71, 1, 582, 590, 1, 2, 880, 882, 1, 2,
  886, 886, 1, 1, 895, 895, 116, 1, 902, 902, 38, 1,
  904, 906, 37, 1, 908, 908, 64, 1, 910, 911, 63, 1,
  913, 929, 32, 1, 931, 939, 32, 1, 975, 975, 8, 1,
  984, 1006, 1, 2, 1012, 1012, -60, 1, 1015, 1015, 1, 1,
  1017, 1017, -7, 1, 1018, 1018, 1, 1, 1021, 1023, -130, 1,
  1024, 1039, 80, 1, 1040, 1071, 32, 1, 1120, 1152, 1, 2,
  1162, 1214, 1, 2, 1216, 1216, 15, 1, 1217, 1229, 1, 2,
  1232, 1326, 1, 2, 1329, 1366, 48, 1, 4256, 4293, 7264, 1,
  4295, 4295, 7264, 1, 4301, 4301, 7264, 1, 5024, 5103, 38864, 1,
  5104, 5109, 8, 1, 7312, 7354, -3008, 1, 7357, 7359, -3008, 1,
  7680, 7828, 1, 2, 7838, 7838, -7615, 1, 7840, 7934, 1, 2,
  7944, 7951, -8, 1, 7960, 7965, -8, 1, 7976, 7983, -8, 1,
  7992, 7999, -8, 1, 8008, 8013, -8, 1, 8025, 8031, -8, 2,
  8040, 8047, -8, 1, 8072, 8079, -8, 1, 8088, 8095, -8, 1,
  8104, 8111, -8, 1, 8120, 8121, -8, 1, 8122, 8123, -74, 1,
  8124, 8124, -9, 1, 8136, 8139, -86, 1, 8140, 8140, -9, 1,
  8152, 8153, -8, 1, 8154, 8155, -100, 1, 8168, 8169, -8, 1,
  8170, 8171, -112, 1, 8172, 8172, -7, 1, 8184, 8185, -128, 1,
  8186, 8187, -126, 1, 8188, 8188, -9, 1, 8486, 8486, -7517, 1,
  8490, 8490, -8383, 1, 8491, 8491, -8262, 1, 8498, 8498, 28, 1,
  8544, 8559, 16, 1, 8579, 8579, 1, 1, 9398, 9423, 26, 1,
  11264, 11311, 48, 1, 11360, 11360, 1, 1, 11362, 11362, -10743, 1,
  11363, 11363, -3814, 1, 11364, 11364, -10727, 1, 11367, 11371, 1, 2,
  11373, 11373, -10780, 1, 11374, 11374, -10749, 1, 11375, 11375, -10783, 1,
  11376, 11376, -10782, 1, 11378, 11378, 1, 1, 11381, 11381, 1, 1,
  11390, 11391, -10815, 1, 11392, 11490, 1, 2, 11499, 11501, 1, 2,
  11506, 11506, 1, 1, 42560, 42604, 1, 2, 42624, 42650, 1, 2,
  42786, 42798, 1, 2, 42802, 42862, 1, 2, 42873, 42875, 1, 2,
  42877, 42877, -35332, 1, 42878, 42886, 1, 2, 42891, 42891, 1, 1,
  42893, 42893, -42280, 1, 42896, 42898, 1, 2, 42902, 42920, 1, 2,
  42922, 42922, -42308, 1, 42923, 42923, -42319, 1, 42924, 42924, -42315, 1,
  42925, 42925, -42305, 1, 42926, 42926, -42308, 1, 42928, 42928, -42258, 1,
  42929, 42929, -42282, 1, 42930, 42930, -42261, 1, 42931, 42931, 928, 1,
  42932, 42946, 1, 2, 42948, 42948, -48, 1, 42949, 42949, -42307, 1,
  42950, 42950, -35384, 1, 42951, 42953, 1, 2, 42960, 42960, 1, 1,
  42966, 42968, 1, 2, 42997, 42997, 1, 1, 65313, 65338, 32, 1,
  66560, 66599, 40, 1, 66736, 66771, 40, 1, 66928, 66938, 39, 1,
  66940, 66954, 39, 1, 66956, 66962, 39, 1, 66964, 66965, 39, 1,
  68736, 68786, 64, 1, 71840, 71871, 32, 1, 93760, 93791, 32, 1,
  125184, 125217, 34, 1,
]

///|
/// Code points whose `str.lower()` (without the Final_Sigma rule) expands.
let uc_lower_multi_cps : FixedArray[Int] = [
  304,
]

///|
/// The expansions of `uc_lower_multi_cps`.
let uc_lower_multi_strs : FixedArray[String] = [
  "i\u{307}",
]

///|
/// Single code point mappings of `str.casefold()` as `[start, end, delta, stride]` runs.
let uc_fold_runs : FixedArray[Int] = [
  65, 90, 32, 1, 181, 181, 775, 1, 192, 214, 32, 1,
  216, 222, 32, 1, 256, 302, 1, 2, 306, 310, 1, 2,
  313, 327, 1, 2, 330, 374, 1, 2, 376, 376, -121, 1,
  377, 381, 1, 2, 383, 383, -268, 1, 385, 385, 210, 1,
  386, 388, 1, 2, 390, 390, 206, 1, 391, 391, 1, 1,
  393, 394, 205, 1, 395, 395, 1, 1, 398, 398, 79, 1,
  399, 399, 202, 1, 400, 400, 203, 1, 401, 401, 1, 1,
  403, 403, 205, 1, 404, 404, 207, 1, 406, 406, 211, 1,
  407, 407, 209, 1, 408, 408, 1, 1, 412, 412, 211, 1,
  413, 413, 213, 1, 415, 415, 214, 1, 416, 420, 1, 2,
  422, 422, 218, 1, 423, 423, 1, 1, 425, 425, 218, 1,
  428, 428, 1, 1, 430, 430, 218, 1, 431, 431, 1, 1,
  433, 434, 217, 1, 435, 437, 1, 2, 439, 439, 219, 1,
  440, 440, 1, 1, 444, 444, 1, 1, 452, 452, 2, 1,
  453, 453, 1, 1, 455, 455, 2, 1, 456, 456, 1, 1,
  458, 458, 2, 1, 459, 475, 1, 2, 478, 494, 1, 2,
  497, 497, 2, 1, 498, 500, 1, 2, 502, 502, -97, 1,
  503, 503, -56, 1, 504, 542, 1, 2, 544, 544, -130, 1,
  546, 562, 1, 2, 570, 570, 10795, 1, 571, 571, 1, 1,
  573, 573, -163, 1, 574, 574, 10792, 1, 577, 577, 1, 1,
  579, 579, -195, 1, 580, 580, 69, 1, 581, 581, 71, 1,
  582, 590, 1, 2, 837, 837, 116, 1, 880, 882, 1, 2,
  886, 886, 1, 1, 895, 895, 116, 1, 902, 902, 38, 1,
  904, 906, 37, 1, 908, 908, 64, 1, 910, 911, 63, 1,
  913, 929, 32, 1, 931, 939, 32, 1, 962, 962, 1, 1,
  975, 975, 8, 1, 976, 976, -30, 1, 977, 977, -25, 1,
  981, 981, -15, 1, 982, 982, -22, 1, 984, 1006, 1, 2,
  1008, 1008, -54, 1, 1009, 1009, -48, 1, 1012, 1012, -60, 1,
  1013, 1013, -64, 1, 1015, 1015, 1, 1, 1017, 1017, -7, 1,
  1018, 1018, 1, 1, 1021, 1023, -130, 1, 1024, 1039, 80, 1,
  1040, 1071, 32, 1, 1120, 1152, 1, 2, 1162, 1214, 1, 2,
  1216, 1216, 15, 1, 1217, 1229, 1, 2, 1232, 1326, 1, 2,
  1329, 1366, 48, 1, 4256, 4293, 7264, 1, 4295, 4295, 7264, 1,
  4301, 4301, 7264, 1, 5112, 5117, -8, 1, 7296, 7296, -6222, 1,
  7297, 7297, -6221, 1, 7298, 7298, -6212, 1, 7299, 7300, -6210, 1,
  7301, 7301, -6211, 1, 7302, 7302, -6204, 1, 7303, 7303, -6180, 1,
  7304, 7304, 35267, 1, 7312, 7354, -3008, 1, 7357, 7359, -3008, 1,
  7680, 7828, 1, 2, 7835, 7835, -58, 1, 7840, 7934, 1, 2,
  7944, 7951, -8, 1, 7960, 7965, -8, 1, 7976, 7983, -8, 1,
  7992, 7999, -8, 1, 8008, 8013, -8, 1, 8025, 8031, -8, 2,
  8040, 8047, -8, 1, 8120, 8121, -8, 1, 8122, 8123, -74, 1,
  8126, 8126, -7173, 1, 8136, 8139, -86, 1, 8152, 8153, -8, 1,
  8154, 8155, -100, 1, 8168, 8169, -8, 1, 8170, 8171, -112, 1,
  8172, 8172, -7, 1, 8184, 8185, -128, 1, 8186, 8187, -126, 1,
  8486, 8486, -7517, 1, 8490, 8490, -8383, 1, 8491, 8491, -8262, 1,
  8498, 8498, 28, 1, 8544, 8559, 16, 1, 8579, 8579, 1, 1,
  9398, 9423, 26, 1, 11264, 11311, 48, 1, 11360, 11360, 1, 1,
  11362, 11362, -10743, 1, 11363, 11363, -3814, 1, 11364, 11364, -10727, 1,
  11367, 11371, 1, 2, 11373, 11373, -10780, 1, 11374, 11374, -10749, 1,
  11375, 11375, -10783, 1, 11376, 11376, -10782, 1, 11378, 11378, 1, 1,
  11381, 11381, 1, 1, 11390, 11391, -10815, 1, 11392, 11490, 1, 2,
  11499, 11501, 1, 2, 11506, 11506, 1, 1, 42560, 42604, 1, 2,
  42624, 42650, 1, 2, 42786, 42798, 1, 2, 42802, 42862, 1, 2,
  42873, 42875, 1, 2, 42877, 42877, -35332, 1, 42878, 42886, 1, 2,
  42891, 42891, 1, 1, 42893, 42893, -42280, 1, 42896, 42898, 1, 2,
  42902, 42920, 1, 2, 42922, 42922, -42308, 1, 42923, 42923, -42319, 1,
  42924, 42924, -42315, 1, 42925, 42925, -42305, 1, 42926, 42926, -42308, 1,
  42928, 42928, -42258, 1, 42929, 42929, -42282, 1, 42930, 42930, -42261, 1,
  42931, 42931, 928, 1, 42932, 42946, 1, 2, 42948, 42948, -48, 1,
  42949, 42949, -42307, 1, 42950, 42950, -35384, 1, 42951, 42953, 1, 2,
  42960, 42960, 1, 1, 42966, 42968, 1, 2, 42997, 42997, 1, 1,
  43888, 43967, -38864, 1, 65313, 65338, 32, 1, 66560, 66599, 40, 1,
  66736, 66771, 40, 1, 66928, 66938, 39, 1, 66940, 66954, 39, 1,
  66956, 66962, 39, 1, 66964, 66965, 39, 1, 68736, 68786, 64, 1,
  71840, 71871, 32, 1, 93760, 93791, 32, 1, 125184, 125217, 34, 1,
]

///|
/// Code points whose `str.casefold()` expands.
let uc_fold_multi_cps : FixedArray[Int] = [
  223, 304, 329, 496, 912, 944, 1415, 7830, 7831, 7832, 7833, 7834,
  7838, 8016, 8018, 8020, 8022, 8064, 8065, 8066, 8067, 8068, 8069, 8070,
  8071, 8072, 8073, 8074, 8075, 8076, 8077, 8078, 8079, 8080, 8081, 8082,
  8083, 8084, 8085, 8086, 8087, 8088, 8089, 8090, 8091, 8092, 8093, 8094,
  8095, 8096, 8097, 8098, 8099, 8100, 8101, 8102, 8103, 8104, 8105, 8106,
  8107, 8108, 8109, 8110, 8111, 8114, 8115, 8116, 8118, 8119, 8124, 8130,
  8131, 8132, 8134, 8135, 8140, 8146, 8147, 8150, 8151, 8162, 8163, 8164,
  8166, 8167, 8178, 8179, 8180, 8182, 8183, 8188, 64256, 64257, 64258, 64259,
  64260, 64261, 64262, 64275, 64276, 64277, 64278, 64279,
]

///|
/// The expansions of `uc_fold_multi_cps`.
let uc_fold_multi_strs : FixedArray[String] = [
  "ss", "i\u{307}", "\u{2bc}n", "j\u{30c}", "\u{3b9}\u{308}\u{301}", "\u{3c5}\u{308}\u{301}", "\u{565}\u{582}", "h\u{331}",
  "t\u{308}", "w\u{30a}", "y\u{30a}", "a\u{2be}", "ss", "\u{3c5}\u{313}", "\u{3c5}\u{313}\u{300}", "\u{3c5}\u{313}\u{301}",
  "\u{3c5}\u{313}\u{342}", "\u{1f00}\u{3b9}", "\u{1f01}\u{3b9}", "\u{1f02}\u{3b9}", "\u{1f03}\u{3b9}", "\u{1f04}\u{3b9}", "\u{1f05}\u{3b9}", "\u{1f06}\u{3b9}",
  "\u{1f07}\u{3b9}", "\u{1f00}\u{3b9}", "\u{1f01}\u{3b9}", "\u{1f02}\u{3b9}", "\u{1f03}\u{3b9}", "\u{1f04}\u{3b9}", "\u{1f05}\u{3b9}", "\u{1f06}\u{3b9}",
  "\u{1f07}\u{3b9}", "\u{1f20}\u{3b9}", "\u{1f21}\u{3b9}", "\u{1f22}\u{3b9}", "\u{1f23}\u{3b9}", "\u{1f24}\u{3b9}", "\u{1f25}\u{3b9}", "\u{1f26}\u{3b9}",
  "\u{1f27}\u{3b9}", "\u{1f20}\u{3b9}", "\u{1f21}\u{3b9}", "\u{1f22}\u{3b9}", "\u{1f23}\u{3b9}", "\u{1f24}\u{3b9}", "\u{1f25}\u{3b9}", "\u{1f26}\u{3b9}",
  "\u{1f27}\u{3b9}", "\u{1f60}\u{3b9}", "\u{1f61}\u{3b9}", "\u{1f62}\u{3b9}", "\u{1f63}\u{3b9}", "\u{1f64}\u{3b9}", "\u{1f65}\u{3b9}", "\u{1f66}\u{3b9}",
  "\u{1f67}\u{3b9}", "\u{1f60}\u{3b9}", "\u{1f61}\u{3b9}", "\u{1f62}\u{3b9}", "\u{1f63}\u{3b9}", "\u{1f64}\u{3b9}", "\u{1f65}\u{3b9}", "\u{1f66}\u{3b9}",
  "\u{1f67}\u{3b9}", "\u{1f70}\u{3b9}", "\u{3b1}\u{3b9}", "\u{3ac}\u{3b9}", "\u{3b1}\u{342}", "\u{3b1}\u{342}\u{3b9}", "\u{3b1}\u{3b9}", "\u{1f74}\u{3b9}",
  "\u{3b7}\u{3b9}", "\u{3ae}\u{3b9}", "\u{3b7}\u{342}", "\u{3b7}\u{342}\u{3b9}", "\u{3b7}\u{3b9}", "\u{3b9}\u{308}\u{300}", "\u{3b9}\u{308}\u{301}", "\u{3b9}\u{342}",
  "\u{3b9}\u{308}\u{342}", "\u{3c5}\u{308}\u{300}", "\u{3c5}\u{308}\u{301}", "\u{3c1}\u{313}", "\u{3c5}\u{342}", "\u{3c5}\u{308}\u{342}", "\u{1f7c}\u{3b9}", "\u{3c9}\u{3b9}",
  "\u{3ce}\u{3b9}", "\u{3c9}\u{342}", "\u{3c9}\u{342}\u{3b9}", "\u{3c9}\u{3b9}", "ff", "fi", "fl", "ffi",
  "ffl", "st", "st", "\u{574}\u{576}", "\u{574}\u{565}", "\u{574}\u{56b}", "\u{57e}\u{576}", "\u{574}\u{56d}",
]

///|
/// `re`'s extra case-insensitive equivalences as `[lower, n, alt_1 .. alt_n]` groups.
let uc_sre_extra_cases : FixedArray[Int] = [
  105, 1, 305, 115, 1, 383, 181, 1, 956, 305, 1, 105,
  383, 1, 115, 837, 2, 953, 8126, 912, 1, 8147, 944, 1,
  8163, 946, 1, 976, 949, 1, 1013, 952, 1, 977, 953, 2,
  837, 8126, 954, 1, 1008, 956, 1, 181, 960, 1, 982, 961,
  1, 1009, 962, 1, 963, 963, 1, 962, 966, 1, 981, 976,
  1, 946, 977, 1, 952, 981, 1, 966, 982, 1, 960, 1008,
  1, 954, 1009, 1, 961, 1013, 1, 949, 1074, 1, 7296, 1076,
  1, 7297, 1086, 1, 7298, 1089, 1, 7299, 1090, 2, 7300, 7301,
  1098, 1, 7302, 1123, 1, 7303, 7296, 1, 1074, 7297, 1, 1076,
  7298, 1, 1086, 7299, 1, 1089, 7300, 2, 1090, 7301, 7301, 2,
  1090, 7300, 7302, 1, 1098, 7303, 1, 1123, 7304, 1, 42571, 7777,
  1, 7835, 7835, 1, 7777, 8126, 2, 837, 953, 8147, 1, 912,
  8163, 1, 944, 42571, 1, 7304, 64261, 1, 64262, 64262, 1, 64261,
]