diff --git a/runtime/src/main/cpp/KString.cpp b/runtime/src/main/cpp/KString.cpp index 49a8ce72ef8..6fd64092258 100644 --- a/runtime/src/main/cpp/KString.cpp +++ b/runtime/src/main/cpp/KString.cpp @@ -523,27 +523,6 @@ constexpr KChar typeValues[] = { 0xffd7, 0x5, 0xffdc, 0x5, 0xffe1, 0x1a, 0xffe3, 0x1b19, 0xffe5, 0x1a1c, 0xffe6, 0x1a, 0xffe9, 0x191c, 0xffec, 0x19, 0xffee, 0x1c, 0xfffb, 0x10 }; -template -int binarySearchRange(const T* array, int arrayLength, T needle) { - int bottom = 0; - int top = arrayLength - 1; - int middle = -1; - T value = 0; - while (bottom <= top) { - middle = (bottom + top) / 2; - value = array[middle]; - if (needle > value) - bottom = middle + 1; - else if (needle == value) - return middle; - else - top = middle - 1; - } - return middle - (needle < value ? 1 : 0); -} - -#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) - KInt getType(KChar ch) { if (ch < 1000) { return typeValuesCache[ch]; diff --git a/runtime/src/main/cpp/KString.h b/runtime/src/main/cpp/KString.h index da9e54d13cb..d61e2570b02 100644 --- a/runtime/src/main/cpp/KString.h +++ b/runtime/src/main/cpp/KString.h @@ -33,4 +33,25 @@ OBJ_GETTER(CreateStringFromUtf8, const char* utf8, uint32_t size); } #endif +template +int binarySearchRange(const T* array, int arrayLength, T needle) { + int bottom = 0; + int top = arrayLength - 1; + int middle = -1; + T value = 0; + while (bottom <= top) { + middle = (bottom + top) / 2; + value = array[middle]; + if (needle > value) + bottom = middle + 1; + else if (needle == value) + return middle; + else + top = middle - 1; + } + return middle - (needle < value ? 1 : 0); +} + +#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) + #endif // RUNTIME_STRING_H diff --git a/runtime/src/main/cpp/Natives.h b/runtime/src/main/cpp/Natives.h index 42addafe0da..523b34e776e 100644 --- a/runtime/src/main/cpp/Natives.h +++ b/runtime/src/main/cpp/Natives.h @@ -36,8 +36,7 @@ inline KByte* ByteArrayAddressOfElementAt(ArrayHeader* obj, KInt index) { return reinterpret_cast(obj + 1) + index; } -inline const KByte* ByteArrayAddressOfElementAt( - const ArrayHeader* obj, KInt index) { +inline const KByte* ByteArrayAddressOfElementAt(const ArrayHeader* obj, KInt index) { return reinterpret_cast(obj + 1) + index; } @@ -45,11 +44,18 @@ inline KChar* CharArrayAddressOfElementAt(ArrayHeader* obj, KInt index) { return reinterpret_cast(obj + 1) + index; } -inline const KChar* CharArrayAddressOfElementAt( - const ArrayHeader* obj, KInt index) { +inline const KChar* CharArrayAddressOfElementAt(const ArrayHeader* obj, KInt index) { return reinterpret_cast(obj + 1) + index; } +inline KInt* IntArrayAddressOfElementAt(ArrayHeader* obj, KInt index) { + return reinterpret_cast(obj + 1) + index; +} + +inline const KInt* IntArrayAddressOfElementAt(const ArrayHeader* obj, KInt index) { + return reinterpret_cast(obj + 1) + index; +} + // Consider aligning of base to sizeof(T). template inline T* PrimitiveArrayAddressOfElementAt(ArrayHeader* obj, KInt index) { diff --git a/runtime/src/main/cpp/Regex.cpp b/runtime/src/main/cpp/Regex.cpp new file mode 100644 index 00000000000..b6e65d15bee --- /dev/null +++ b/runtime/src/main/cpp/Regex.cpp @@ -0,0 +1,589 @@ +#include "Types.h" +#include "KString.h" +#include "Natives.h" + +namespace { +/* Contains canonical classes (see http://www.unicode.org/Public/4.0-Update/UnicodeData-4.0.0.txt). */ +constexpr KInt canonicalClassesKeys[] = { + 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, + 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, + 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, + 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, + 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 1155, 1156, 1157, 1158, + 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, + 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, + 1463, 1464, 1465, 1467, 1468, 1469, 1471, 1473, 1474, 1476, 1477, 1479, 1552, 1553, 1554, 1555, 1556, 1557, 1611, + 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, + 1648, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1759, 1760, 1761, 1762, 1763, 1764, 1767, 1768, 1770, 1771, 1772, + 1773, 1809, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, + 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 2364, 2381, 2385, 2386, 2387, 2388, 2492, 2509, 2620, + 2637, 2748, 2765, 2876, 2893, 3021, 3149, 3157, 3158, 3260, 3277, 3405, 3530, 3640, 3641, 3642, 3656, 3657, 3658, + 3659, 3768, 3769, 3784, 3785, 3786, 3787, 3864, 3865, 3893, 3895, 3897, 3953, 3954, 3956, 3962, 3963, 3964, 3965, + 3968, 3970, 3971, 3972, 3974, 3975, 4038, 4151, 4153, 4959, 5908, 5940, 6098, 6109, 6313, 6457, 6458, 6459, 6679, + 6680, 7616, 7617, 7618, 7619, 8400, 8401, 8402, 8403, 8404, 8405, 8406, 8407, 8408, 8409, 8410, 8411, 8412, 8417, + 8421, 8422, 8423, 8424, 8425, 8426, 8427, 12330, 12331, 12332, 12333, 12334, 12335, 12441, 12442, 43014, 64286, 65056, + 65057, 65058, 65059, 68109, 68111, 68152, 68153, 68154, 68159, 119141, 119142, 119143, 119144, 119145, 119149, 119150, + 119151, 119152, 119153, 119154, 119163, 119164, 119165, 119166, 119167, 119168, 119169, 119170, 119173, 119174, + 119175, 119176, 119177, 119178, 119179, 119210, 119211, 119212, 119213, 119362, 119363, 119364, +}; + +constexpr KInt canonicalClassesValues[] = { + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 220, + 220, 220, 220, 232, 216, 220, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 1, 1, 1, 1, 1, 220, 220, 220, 220, 230, 230, 230, 230, 230, 230, 230, 230, 240, 230, + 220, 220, 220, 230, 230, 230, 220, 220, 230, 230, 230, 220, 220, 220, 220, 230, 232, 220, 220, 230, 233, 234, 234, + 233, 234, 234, 233, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 220, 230, + 230, 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, 230, 230, 230, 220, 220, 220, 220, 220, 220, 230, 230, + 220, 230, 230, 222, 228, 230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 230, 220, 18, 230, 230, + 230, 230, 230, 230, 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, 220, 230, 230, 230, 230, 230, 220, 230, 230, 35, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 220, 230, 230, 230, 220, 230, 230, 220, 36, 230, 220, 230, 230, + 220, 230, 230, 220, 220, 220, 230, 220, 220, 230, 220, 230, 230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, 7, + 9, 230, 220, 230, 230, 7, 9, 7, 9, 7, 9, 7, 9, 9, 9, 84, 91, 7, 9, 9, 9, 103, 103, 9, 107, 107, 107, 107, 118, 118, + 122, 122, 122, 122, 220, 220, 220, 220, 216, 129, 130, 132, 130, 130, 130, 130, 130, 230, 230, 9, 230, 230, 220, 7, 9, + 230, 9, 9, 9, 230, 228, 222, 230, 220, 230, 220, 230, 230, 220, 230, 230, 230, 1, 1, 230, 230, 230, 230, 1, 1, 1, 230, + 230, 230, 1, 1, 230, 220, 230, 1, 1, 218, 228, 232, 222, 224, 224, 8, 8, 9, 26, 230, 230, 230, 230, 220, 230, 230, 1, + 220, 9, 216, 216, 1, 1, 1, 226, 216, 216, 216, 216, 216, 220, 220, 220, 220, 220, 220, 220, 220, 230, 230, 230, 230, + 230, 220, 220, 230, 230, 230, 230, 230, 230, 230, +}; + +/* Symbols that are one symbol decompositions (see http://www.unicode.org/Public/4.0-Update/UnicodeData-4.0.0.txt). */ +constexpr KInt singleDecompositions[] = { + 59, 75, 96, 180, 183, 197, 697, 768, 769, 787, 901, 902, 904, 905, 906, 908, 910, 911, 912, 937, 940, 941, 942, 943, + 944, 953, 972, 973, 974, 8194, 8195, 12296, 12297, 13470, 13497, 13499, 13535, 13589, 14062, 14076, 14209, 14383, + 14434, 14460, 14535, 14563, 14620, 14650, 14894, 14956, 15076, 15112, 15129, 15177, 15261, 15384, 15438, 15667, 15766, + 16044, 16056, 16155, 16380, 16392, 16408, 16441, 16454, 16534, 16611, 16687, 16898, 16935, 17056, 17153, 17204, 17241, + 17365, 17369, 17419, 17515, 17707, 17757, 17761, 17771, 17879, 17913, 17973, 18110, 18119, 18837, 18918, 19054, 19062, + 19122, 19251, 19406, 19662, 19693, 19704, 19798, 19981, 20006, 20018, 20024, 20025, 20029, 20033, 20098, 20102, 20142, + 20160, 20172, 20196, 20320, 20352, 20358, 20363, 20398, 20411, 20415, 20482, 20523, 20602, 20633, 20687, 20698, 20711, + 20800, 20805, 20813, 20820, 20836, 20839, 20840, 20841, 20845, 20855, 20864, 20877, 20882, 20885, 20887, 20900, 20908, + 20917, 20919, 20937, 20940, 20956, 20958, 20981, 20995, 20999, 21015, 21033, 21050, 21051, 21062, 21106, 21111, 21129, + 21147, 21155, 21171, 21191, 21193, 21202, 21214, 21220, 21237, 21242, 21253, 21254, 21271, 21311, 21321, 21329, 21338, + 21363, 21365, 21373, 21375, 21443, 21450, 21471, 21477, 21483, 21489, 21510, 21519, 21533, 21560, 21570, 21576, 21608, + 21662, 21666, 21693, 21750, 21776, 21843, 21845, 21859, 21892, 21895, 21913, 21917, 21931, 21939, 21952, 21954, 21986, + 22022, 22097, 22120, 22132, 22265, 22294, 22295, 22411, 22478, 22516, 22541, 22577, 22578, 22592, 22618, 22622, 22696, + 22700, 22707, 22744, 22751, 22766, 22770, 22775, 22790, 22810, 22818, 22852, 22856, 22865, 22868, 22882, 22899, 23000, + 23020, 23067, 23079, 23138, 23142, 23221, 23304, 23336, 23358, 23429, 23491, 23512, 23527, 23534, 23539, 23551, 23558, + 23586, 23615, 23648, 23650, 23652, 23653, 23662, 23693, 23744, 23833, 23875, 23888, 23915, 23918, 23932, 23986, 23994, + 24033, 24034, 24061, 24104, 24125, 24169, 24180, 24230, 24240, 24243, 24246, 24265, 24266, 24274, 24275, 24281, 24300, + 24318, 24324, 24354, 24403, 24418, 24425, 24427, 24459, 24474, 24489, 24493, 24525, 24535, 24565, 24569, 24594, 24604, + 24705, 24724, 24775, 24792, 24801, 24840, 24900, 24904, 24908, 24910, 24928, 24936, 24954, 24974, 24976, 24996, 25007, + 25010, 25054, 25074, 25078, 25088, 25104, 25115, 25134, 25140, 25181, 25265, 25289, 25295, 25299, 25300, 25340, 25342, + 25405, 25424, 25448, 25467, 25475, 25504, 25513, 25540, 25541, 25572, 25628, 25634, 25682, 25705, 25719, 25726, 25754, + 25757, 25796, 25935, 25942, 25964, 25976, 26009, 26053, 26082, 26083, 26131, 26185, 26228, 26248, 26257, 26268, 26292, + 26310, 26356, 26360, 26368, 26391, 26395, 26401, 26446, 26451, 26454, 26462, 26491, 26501, 26519, 26611, 26618, 26647, + 26655, 26706, 26753, 26757, 26766, 26792, 26900, 26946, 27043, 27114, 27138, 27155, 27304, 27347, 27355, 27396, 27425, + 27476, 27506, 27511, 27513, 27551, 27566, 27578, 27579, 27726, 27751, 27784, 27839, 27852, 27853, 27877, 27926, 27931, + 27934, 27956, 27966, 27969, 28009, 28010, 28023, 28024, 28037, 28107, 28122, 28138, 28153, 28186, 28207, 28270, 28316, + 28346, 28359, 28363, 28369, 28379, 28431, 28450, 28451, 28526, 28614, 28651, 28670, 28699, 28702, 28729, 28746, 28784, + 28791, 28797, 28825, 28845, 28872, 28889, 28997, 29001, 29038, 29084, 29134, 29136, 29200, 29211, 29224, 29227, 29237, + 29264, 29282, 29312, 29333, 29359, 29376, 29436, 29482, 29557, 29562, 29575, 29579, 29605, 29618, 29662, 29702, 29705, + 29730, 29767, 29788, 29801, 29809, 29829, 29833, 29848, 29898, 29958, 29988, 30011, 30014, 30041, 30053, 30064, 30178, + 30224, 30237, 30239, 30274, 30313, 30410, 30427, 30439, 30452, 30465, 30494, 30495, 30528, 30538, 30603, 30631, 30798, + 30827, 30860, 30865, 30922, 30924, 30971, 31018, 31036, 31038, 31048, 31049, 31056, 31062, 31069, 31070, 31077, 31103, + 31117, 31118, 31119, 31150, 31178, 31211, 31260, 31296, 31306, 31311, 31361, 31409, 31435, 31470, 31520, 31680, 31686, + 31689, 31806, 31840, 31867, 31890, 31934, 31954, 31958, 31971, 31975, 31976, 32000, 32016, 32034, 32047, 32091, 32099, + 32160, 32190, 32199, 32244, 32258, 32265, 32311, 32321, 32325, 32574, 32626, 32633, 32634, 32645, 32661, 32666, 32701, + 32762, 32769, 32773, 32838, 32864, 32879, 32880, 32894, 32907, 32941, 32946, 33027, 33086, 33240, 33256, 33261, 33281, + 33284, 33391, 33401, 33419, 33425, 33437, 33457, 33459, 33469, 33509, 33510, 33565, 33571, 33590, 33618, 33619, 33635, + 33709, 33725, 33737, 33738, 33740, 33756, 33767, 33775, 33777, 33853, 33865, 33879, 34030, 34033, 34035, 34044, 34070, + 34148, 34253, 34298, 34310, 34322, 34349, 34367, 34384, 34396, 34407, 34409, 34440, 34473, 34530, 34574, 34600, 34667, + 34681, 34694, 34746, 34785, 34817, 34847, 34892, 34912, 34915, 35010, 35023, 35031, 35038, 35041, 35064, 35066, 35088, + 35137, 35172, 35206, 35211, 35222, 35488, 35498, 35519, 35531, 35538, 35542, 35565, 35576, 35582, 35585, 35641, 35672, + 35712, 35722, 35912, 35925, 36011, 36033, 36034, 36040, 36051, 36104, 36123, 36215, 36284, 36299, 36335, 36336, 36554, + 36564, 36646, 36650, 36664, 36667, 36706, 36766, 36784, 36790, 36899, 36920, 36978, 36988, 37007, 37012, 37070, 37105, + 37117, 37137, 37147, 37226, 37273, 37300, 37324, 37327, 37329, 37428, 37432, 37494, 37500, 37591, 37592, 37636, 37706, + 37881, 37909, 38283, 38317, 38327, 38446, 38475, 38477, 38517, 38520, 38524, 38534, 38563, 38584, 38595, 38626, 38627, + 38646, 38647, 38691, 38706, 38728, 38742, 38875, 38880, 38911, 38923, 38936, 38953, 38971, 39006, 39138, 39151, 39164, + 39208, 39209, 39335, 39362, 39409, 39422, 39530, 39698, 39791, 40000, 40023, 40189, 40295, 40372, 40442, 40478, 40575, + 40599, 40607, 40635, 40654, 40697, 40702, 40709, 40719, 40726, 40763, 40771, 40845, 40846, 40860, 131362, 132380, + 132389, 132427, 132666, 133124, 133342, 133676, 133987, 136420, 136872, 136938, 137672, 138008, 138507, 138724, + 138726, 139651, 139679, 140081, 141012, 141380, 141386, 142092, 142321, 143370, 144056, 144223, 144275, 144284, + 144323, 144341, 144493, 145059, 145575, 146061, 146170, 146620, 146718, 147153, 147294, 147342, 148067, 148395, + 149000, 149301, 149524, 150582, 150674, 151457, 151480, 151620, 151794, 151795, 151833, 151859, 152137, 152605, + 153126, 153242, 153285, 153980, 154279, 154539, 154752, 154832, 155526, 156122, 156200, 156231, 156377, 156478, + 156890, 156963, 157096, 157607, 157621, 158524, 158774, 158933, 159083, 159532, 159665, 159954, 160714, 161383, + 161966, 162150, 162984, 163539, 163631, 165330, 165357, 165678, 166906, 167287, 168261, 168415, 168474, 168970, + 169110, 169398, 170800, 172238, 172293, 172558, 172689, 172946, 173568 +}; + +constexpr KInt decompositionKeys[] = { + 192, 193, 194, 195, 196, 197, 199, 200, 201, 202, 203, 204, 205, 206, 207, 209, 210, 211, 212, 213, 214, 217, 218, + 219, 220, 221, 224, 225, 226, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 241, 242, 243, 244, 245, + 246, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 323, 324, 325, 326, 327, 328, 332, + 333, 334, 335, 336, 337, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 416, 417, 431, 432, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 478, 479, 480, + 481, 482, 483, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 500, 501, 504, 505, 506, 507, 508, 509, 510, + 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 538, 539, 542, 543, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 832, + 833, 835, 836, 884, 894, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 938, 939, 940, 941, 942, 943, 944, 970, + 971, 972, 973, 974, 979, 980, 1024, 1025, 1027, 1031, 1036, 1037, 1038, 1049, 1081, 1104, 1105, 1107, 1111, 1116, + 1117, 1118, 1142, 1143, 1217, 1218, 1232, 1233, 1234, 1235, 1238, 1239, 1242, 1243, 1244, 1245, 1246, 1247, 1250, + 1251, 1252, 1253, 1254, 1255, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1272, 1273, + 1570, 1571, 1572, 1573, 1574, 1728, 1730, 1747, 2345, 2353, 2356, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399, + 2507, 2508, 2524, 2525, 2527, 2611, 2614, 2649, 2650, 2651, 2654, 2888, 2891, 2892, 2908, 2909, 2964, 3018, 3019, + 3020, 3144, 3264, 3271, 3272, 3274, 3275, 3402, 3403, 3404, 3546, 3548, 3549, 3550, 3907, 3917, 3922, 3927, 3932, + 3945, 3955, 3957, 3958, 3960, 3969, 3987, 3997, 4002, 4007, 4012, 4025, 4134, 7680, 7681, 7682, 7683, 7684, 7685, + 7686, 7687, 7688, 7689, 7690, 7691, 7692, 7693, 7694, 7695, 7696, 7697, 7698, 7699, 7700, 7701, 7702, 7703, 7704, + 7705, 7706, 7707, 7708, 7709, 7710, 7711, 7712, 7713, 7714, 7715, 7716, 7717, 7718, 7719, 7720, 7721, 7722, 7723, + 7724, 7725, 7726, 7727, 7728, 7729, 7730, 7731, 7732, 7733, 7734, 7735, 7736, 7737, 7738, 7739, 7740, 7741, 7742, + 7743, 7744, 7745, 7746, 7747, 7748, 7749, 7750, 7751, 7752, 7753, 7754, 7755, 7756, 7757, 7758, 7759, 7760, 7761, + 7762, 7763, 7764, 7765, 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, 7775, 7776, 7777, 7778, 7779, 7780, + 7781, 7782, 7783, 7784, 7785, 7786, 7787, 7788, 7789, 7790, 7791, 7792, 7793, 7794, 7795, 7796, 7797, 7798, 7799, + 7800, 7801, 7802, 7803, 7804, 7805, 7806, 7807, 7808, 7809, 7810, 7811, 7812, 7813, 7814, 7815, 7816, 7817, 7818, + 7819, 7820, 7821, 7822, 7823, 7824, 7825, 7826, 7827, 7828, 7829, 7830, 7831, 7832, 7833, 7835, 7840, 7841, 7842, + 7843, 7844, 7845, 7846, 7847, 7848, 7849, 7850, 7851, 7852, 7853, 7854, 7855, 7856, 7857, 7858, 7859, 7860, 7861, + 7862, 7863, 7864, 7865, 7866, 7867, 7868, 7869, 7870, 7871, 7872, 7873, 7874, 7875, 7876, 7877, 7878, 7879, 7880, + 7881, 7882, 7883, 7884, 7885, 7886, 7887, 7888, 7889, 7890, 7891, 7892, 7893, 7894, 7895, 7896, 7897, 7898, 7899, + 7900, 7901, 7902, 7903, 7904, 7905, 7906, 7907, 7908, 7909, 7910, 7911, 7912, 7913, 7914, 7915, 7916, 7917, 7918, + 7919, 7920, 7921, 7922, 7923, 7924, 7925, 7926, 7927, 7928, 7929, 7936, 7937, 7938, 7939, 7940, 7941, 7942, 7943, + 7944, 7945, 7946, 7947, 7948, 7949, 7950, 7951, 7952, 7953, 7954, 7955, 7956, 7957, 7960, 7961, 7962, 7963, 7964, + 7965, 7968, 7969, 7970, 7971, 7972, 7973, 7974, 7975, 7976, 7977, 7978, 7979, 7980, 7981, 7982, 7983, 7984, 7985, + 7986, 7987, 7988, 7989, 7990, 7991, 7992, 7993, 7994, 7995, 7996, 7997, 7998, 7999, 8000, 8001, 8002, 8003, 8004, + 8005, 8008, 8009, 8010, 8011, 8012, 8013, 8016, 8017, 8018, 8019, 8020, 8021, 8022, 8023, 8025, 8027, 8029, 8031, + 8032, 8033, 8034, 8035, 8036, 8037, 8038, 8039, 8040, 8041, 8042, 8043, 8044, 8045, 8046, 8047, 8048, 8049, 8050, + 8051, 8052, 8053, 8054, 8055, 8056, 8057, 8058, 8059, 8060, 8061, 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, 8112, 8113, 8114, 8115, 8116, 8118, 8119, 8120, 8121, 8122, 8123, 8124, 8126, 8129, 8130, 8131, 8132, + 8134, 8135, 8136, 8137, 8138, 8139, 8140, 8141, 8142, 8143, 8144, 8145, 8146, 8147, 8150, 8151, 8152, 8153, 8154, + 8155, 8157, 8158, 8159, 8160, 8161, 8162, 8163, 8164, 8165, 8166, 8167, 8168, 8169, 8170, 8171, 8172, 8173, 8174, + 8175, 8178, 8179, 8180, 8182, 8183, 8184, 8185, 8186, 8187, 8188, 8189, 8192, 8193, 8486, 8490, 8491, 8602, 8603, + 8622, 8653, 8654, 8655, 8708, 8713, 8716, 8740, 8742, 8769, 8772, 8775, 8777, 8800, 8802, 8813, 8814, 8815, 8816, + 8817, 8820, 8821, 8824, 8825, 8832, 8833, 8836, 8837, 8840, 8841, 8876, 8877, 8878, 8879, 8928, 8929, 8930, 8931, + 8938, 8939, 8940, 8941, 9001, 9002, 10972, 12364, 12366, 12368, 12370, 12372, 12374, 12376, 12378, 12380, 12382, + 12384, 12386, 12389, 12391, 12393, 12400, 12401, 12403, 12404, 12406, 12407, 12409, 12410, 12412, 12413, 12436, 12446, + 12460, 12462, 12464, 12466, 12468, 12470, 12472, 12474, 12476, 12478, 12480, 12482, 12485, 12487, 12489, 12496, 12497, + 12499, 12500, 12502, 12503, 12505, 12506, 12508, 12509, 12532, 12535, 12536, 12537, 12538, 12542, 63744, 63745, 63746, + 63747, 63748, 63749, 63750, 63751, 63752, 63753, 63754, 63755, 63756, 63757, 63758, 63759, 63760, 63761, 63762, 63763, + 63764, 63765, 63766, 63767, 63768, 63769, 63770, 63771, 63772, 63773, 63774, 63775, 63776, 63777, 63778, 63779, 63780, + 63781, 63782, 63783, 63784, 63785, 63786, 63787, 63788, 63789, 63790, 63791, 63792, 63793, 63794, 63795, 63796, 63797, + 63798, 63799, 63800, 63801, 63802, 63803, 63804, 63805, 63806, 63807, 63808, 63809, 63810, 63811, 63812, 63813, 63814, + 63815, 63816, 63817, 63818, 63819, 63820, 63821, 63822, 63823, 63824, 63825, 63826, 63827, 63828, 63829, 63830, 63831, + 63832, 63833, 63834, 63835, 63836, 63837, 63838, 63839, 63840, 63841, 63842, 63843, 63844, 63845, 63846, 63847, 63848, + 63849, 63850, 63851, 63852, 63853, 63854, 63855, 63856, 63857, 63858, 63859, 63860, 63861, 63862, 63863, 63864, 63865, + 63866, 63867, 63868, 63869, 63870, 63871, 63872, 63873, 63874, 63875, 63876, 63877, 63878, 63879, 63880, 63881, 63882, + 63883, 63884, 63885, 63886, 63887, 63888, 63889, 63890, 63891, 63892, 63893, 63894, 63895, 63896, 63897, 63898, 63899, + 63900, 63901, 63902, 63903, 63904, 63905, 63906, 63907, 63908, 63909, 63910, 63911, 63912, 63913, 63914, 63915, 63916, + 63917, 63918, 63919, 63920, 63921, 63922, 63923, 63924, 63925, 63926, 63927, 63928, 63929, 63930, 63931, 63932, 63933, + 63934, 63935, 63936, 63937, 63938, 63939, 63940, 63941, 63942, 63943, 63944, 63945, 63946, 63947, 63948, 63949, 63950, + 63951, 63952, 63953, 63954, 63955, 63956, 63957, 63958, 63959, 63960, 63961, 63962, 63963, 63964, 63965, 63966, 63967, + 63968, 63969, 63970, 63971, 63972, 63973, 63974, 63975, 63976, 63977, 63978, 63979, 63980, 63981, 63982, 63983, 63984, + 63985, 63986, 63987, 63988, 63989, 63990, 63991, 63992, 63993, 63994, 63995, 63996, 63997, 63998, 63999, 64000, 64001, + 64002, 64003, 64004, 64005, 64006, 64007, 64008, 64009, 64010, 64011, 64012, 64013, 64016, 64018, 64021, 64022, 64023, + 64024, 64025, 64026, 64027, 64028, 64029, 64030, 64032, 64034, 64037, 64038, 64042, 64043, 64044, 64045, 64048, 64049, + 64050, 64051, 64052, 64053, 64054, 64055, 64056, 64057, 64058, 64059, 64060, 64061, 64062, 64063, 64064, 64065, 64066, + 64067, 64068, 64069, 64070, 64071, 64072, 64073, 64074, 64075, 64076, 64077, 64078, 64079, 64080, 64081, 64082, 64083, + 64084, 64085, 64086, 64087, 64088, 64089, 64090, 64091, 64092, 64093, 64094, 64095, 64096, 64097, 64098, 64099, 64100, + 64101, 64102, 64103, 64104, 64105, 64106, 64112, 64113, 64114, 64115, 64116, 64117, 64118, 64119, 64120, 64121, 64122, + 64123, 64124, 64125, 64126, 64127, 64128, 64129, 64130, 64131, 64132, 64133, 64134, 64135, 64136, 64137, 64138, 64139, + 64140, 64141, 64142, 64143, 64144, 64145, 64146, 64147, 64148, 64149, 64150, 64151, 64152, 64153, 64154, 64155, 64156, + 64157, 64158, 64159, 64160, 64161, 64162, 64163, 64164, 64165, 64166, 64167, 64168, 64169, 64170, 64171, 64172, 64173, + 64174, 64175, 64176, 64177, 64178, 64179, 64180, 64181, 64182, 64183, 64184, 64185, 64186, 64187, 64188, 64189, 64190, + 64191, 64192, 64193, 64194, 64195, 64196, 64197, 64198, 64199, 64200, 64201, 64202, 64203, 64204, 64205, 64206, 64207, + 64208, 64209, 64210, 64211, 64212, 64213, 64214, 64215, 64216, 64217, 64285, 64287, 64298, 64299, 64300, 64301, 64302, + 64303, 64304, 64305, 64306, 64307, 64308, 64309, 64310, 64312, 64313, 64314, 64315, 64316, 64318, 64320, 64321, 64323, + 64324, 64326, 64327, 64328, 64329, 64330, 64331, 64332, 64333, 64334, 119134, 119135, 119136, 119137, 119138, 119139, + 119140, 119227, 119228, 119229, 119230, 119231, 119232, 194560, 194561, 194562, 194563, 194564, 194565, 194566, + 194567, 194568, 194569, 194570, 194571, 194572, 194573, 194574, 194575, 194576, 194577, 194578, 194579, 194580, + 194581, 194582, 194583, 194584, 194585, 194586, 194587, 194588, 194589, 194590, 194591, 194592, 194593, 194594, + 194595, 194596, 194597, 194598, 194599, 194600, 194601, 194602, 194603, 194604, 194605, 194606, 194607, 194608, + 194609, 194610, 194611, 194612, 194613, 194614, 194615, 194616, 194617, 194618, 194619, 194620, 194621, 194622, + 194623, 194624, 194625, 194626, 194627, 194628, 194629, 194630, 194631, 194632, 194633, 194634, 194635, 194636, + 194637, 194638, 194639, 194640, 194641, 194642, 194643, 194644, 194645, 194646, 194647, 194648, 194649, 194650, + 194651, 194652, 194653, 194654, 194655, 194656, 194657, 194658, 194659, 194660, 194661, 194662, 194663, 194664, + 194665, 194666, 194667, 194668, 194669, 194670, 194671, 194672, 194673, 194674, 194675, 194676, 194677, 194678, + 194679, 194680, 194681, 194682, 194683, 194684, 194685, 194686, 194687, 194688, 194689, 194690, 194691, 194692, + 194693, 194694, 194695, 194696, 194697, 194698, 194699, 194700, 194701, 194702, 194703, 194704, 194705, 194706, + 194707, 194708, 194709, 194710, 194711, 194712, 194713, 194714, 194715, 194716, 194717, 194718, 194719, 194720, + 194721, 194722, 194723, 194724, 194725, 194726, 194727, 194728, 194729, 194730, 194731, 194732, 194733, 194734, + 194735, 194736, 194737, 194738, 194739, 194740, 194741, 194742, 194743, 194744, 194745, 194746, 194747, 194748, + 194749, 194750, 194751, 194752, 194753, 194754, 194755, 194756, 194757, 194758, 194759, 194760, 194761, 194762, + 194763, 194764, 194765, 194766, 194767, 194768, 194769, 194770, 194771, 194772, 194773, 194774, 194775, 194776, + 194777, 194778, 194779, 194780, 194781, 194782, 194783, 194784, 194785, 194786, 194787, 194788, 194789, 194790, + 194791, 194792, 194793, 194794, 194795, 194796, 194797, 194798, 194799, 194800, 194801, 194802, 194803, 194804, + 194805, 194806, 194807, 194808, 194809, 194810, 194811, 194812, 194813, 194814, 194815, 194816, 194817, 194818, + 194819, 194820, 194821, 194822, 194823, 194824, 194825, 194826, 194827, 194828, 194829, 194830, 194831, 194832, + 194833, 194834, 194835, 194836, 194837, 194838, 194839, 194840, 194841, 194842, 194843, 194844, 194845, 194846, + 194847, 194848, 194849, 194850, 194851, 194852, 194853, 194854, 194855, 194856, 194857, 194858, 194859, 194860, + 194861, 194862, 194863, 194864, 194865, 194866, 194867, 194868, 194869, 194870, 194871, 194872, 194873, 194874, + 194875, 194876, 194877, 194878, 194879, 194880, 194881, 194882, 194883, 194884, 194885, 194886, 194887, 194888, + 194889, 194890, 194891, 194892, 194893, 194894, 194895, 194896, 194897, 194898, 194899, 194900, 194901, 194902, + 194903, 194904, 194905, 194906, 194907, 194908, 194909, 194910, 194911, 194912, 194913, 194914, 194915, 194916, + 194917, 194918, 194919, 194920, 194921, 194922, 194923, 194924, 194925, 194926, 194927, 194928, 194929, 194930, + 194931, 194932, 194933, 194934, 194935, 194936, 194937, 194938, 194939, 194940, 194941, 194942, 194943, 194944, + 194945, 194946, 194947, 194948, 194949, 194950, 194951, 194952, 194953, 194954, 194955, 194956, 194957, 194958, + 194959, 194960, 194961, 194962, 194963, 194964, 194965, 194966, 194967, 194968, 194969, 194970, 194971, 194972, + 194973, 194974, 194975, 194976, 194977, 194978, 194979, 194980, 194981, 194982, 194983, 194984, 194985, 194986, + 194987, 194988, 194989, 194990, 194991, 194992, 194993, 194994, 194995, 194996, 194997, 194998, 194999, 195000, + 195001, 195002, 195003, 195004, 195005, 195006, 195007, 195008, 195009, 195010, 195011, 195012, 195013, 195014, + 195015, 195016, 195017, 195018, 195019, 195020, 195021, 195022, 195023, 195024, 195025, 195026, 195027, 195028, + 195029, 195030, 195031, 195032, 195033, 195034, 195035, 195036, 195037, 195038, 195039, 195040, 195041, 195042, + 195043, 195044, 195045, 195046, 195047, 195048, 195049, 195050, 195051, 195052, 195053, 195054, 195055, 195056, + 195057, 195058, 195059, 195060, 195061, 195062, 195063, 195064, 195065, 195066, 195067, 195068, 195069, 195070, + 195071, 195072, 195073, 195074, 195075, 195076, 195077, 195078, 195079, 195080, 195081, 195082, 195083, 195084, + 195085, 195086, 195087, 195088, 195089, 195090, 195091, 195092, 195093, 195094, 195095, 195096, 195097, 195098, + 195099, 195100, 195101 +}; + +struct Decomposition { + const KByte length; + const KInt array[4]; +}; + +constexpr Decomposition decompositionValues[] = { + {2, {65, 768}}, {2, {65, 769}}, {2, {65, 770}}, {2, {65, 771}}, {2, {65, 776}}, {2, {65, 778}}, {2, {67, 807}}, + {2, {69, 768}}, {2, {69, 769}}, {2, {69, 770}}, {2, {69, 776}}, {2, {73, 768}}, {2, {73, 769}}, {2, {73, 770}}, + {2, {73, 776}}, {2, {78, 771}}, {2, {79, 768}}, {2, {79, 769}}, {2, {79, 770}}, {2, {79, 771}}, {2, {79, 776}}, + {2, {85, 768}}, {2, {85, 769}}, {2, {85, 770}}, {2, {85, 776}}, {2, {89, 769}}, {2, {97, 768}}, {2, {97, 769}}, + {2, {97, 770}}, {2, {97, 771}}, {2, {97, 776}}, {2, {97, 778}}, {2, {99, 807}}, {2, {101, 768}}, {2, {101, 769}}, + {2, {101, 770}}, {2, {101, 776}}, {2, {105, 768}}, {2, {105, 769}}, {2, {105, 770}}, {2, {105, 776}}, {2, {110, 771}}, + {2, {111, 768}}, {2, {111, 769}}, {2, {111, 770}}, {2, {111, 771}}, {2, {111, 776}}, {2, {117, 768}}, {2, {117, 769}}, + {2, {117, 770}}, {2, {117, 776}}, {2, {121, 769}}, {2, {121, 776}}, {2, {65, 772}}, {2, {97, 772}}, {2, {65, 774}}, + {2, {97, 774}}, {2, {65, 808}}, {2, {97, 808}}, {2, {67, 769}}, {2, {99, 769}}, {2, {67, 770}}, {2, {99, 770}}, + {2, {67, 775}}, {2, {99, 775}}, {2, {67, 780}}, {2, {99, 780}}, {2, {68, 780}}, {2, {100, 780}}, {2, {69, 772}}, + {2, {101, 772}}, {2, {69, 774}}, {2, {101, 774}}, {2, {69, 775}}, {2, {101, 775}}, {2, {69, 808}}, {2, {101, 808}}, + {2, {69, 780}}, {2, {101, 780}}, {2, {71, 770}}, {2, {103, 770}}, {2, {71, 774}}, {2, {103, 774}}, {2, {71, 775}}, + {2, {103, 775}}, {2, {71, 807}}, {2, {103, 807}}, {2, {72, 770}}, {2, {104, 770}}, {2, {73, 771}}, {2, {105, 771}}, + {2, {73, 772}}, {2, {105, 772}}, {2, {73, 774}}, {2, {105, 774}}, {2, {73, 808}}, {2, {105, 808}}, {2, {73, 775}}, + {2, {74, 770}}, {2, {106, 770}}, {2, {75, 807}}, {2, {107, 807}}, {2, {76, 769}}, {2, {108, 769}}, {2, {76, 807}}, + {2, {108, 807}}, {2, {76, 780}}, {2, {108, 780}}, {2, {78, 769}}, {2, {110, 769}}, {2, {78, 807}}, {2, {110, 807}}, + {2, {78, 780}}, {2, {110, 780}}, {2, {79, 772}}, {2, {111, 772}}, {2, {79, 774}}, {2, {111, 774}}, {2, {79, 779}}, + {2, {111, 779}}, {2, {82, 769}}, {2, {114, 769}}, {2, {82, 807}}, {2, {114, 807}}, {2, {82, 780}}, {2, {114, 780}}, + {2, {83, 769}}, {2, {115, 769}}, {2, {83, 770}}, {2, {115, 770}}, {2, {83, 807}}, {2, {115, 807}}, {2, {83, 780}}, + {2, {115, 780}}, {2, {84, 807}}, {2, {116, 807}}, {2, {84, 780}}, {2, {116, 780}}, {2, {85, 771}}, {2, {117, 771}}, + {2, {85, 772}}, {2, {117, 772}}, {2, {85, 774}}, {2, {117, 774}}, {2, {85, 778}}, {2, {117, 778}}, {2, {85, 779}}, + {2, {117, 779}}, {2, {85, 808}}, {2, {117, 808}}, {2, {87, 770}}, {2, {119, 770}}, {2, {89, 770}}, {2, {121, 770}}, + {2, {89, 776}}, {2, {90, 769}}, {2, {122, 769}}, {2, {90, 775}}, {2, {122, 775}}, {2, {90, 780}}, {2, {122, 780}}, + {2, {79, 795}}, {2, {111, 795}}, {2, {85, 795}}, {2, {117, 795}}, {2, {65, 780}}, {2, {97, 780}}, {2, {73, 780}}, + {2, {105, 780}}, {2, {79, 780}}, {2, {111, 780}}, {2, {85, 780}}, {2, {117, 780}}, {3, {85, 776, 772}}, + {3, {117, 776, 772}}, {3, {85, 776, 769}}, {3, {117, 776, 769}}, {3, {85, 776, 780}}, {3, {117, 776, 780}}, + {3, {85, 776, 768}}, {3, {117, 776, 768}}, {3, {65, 776, 772}}, {3, {97, 776, 772}}, {3, {65, 775, 772}}, + {3, {97, 775, 772}}, {2, {198, 772}}, {2, {230, 772}}, {2, {71, 780}}, {2, {103, 780}}, {2, {75, 780}}, + {2, {107, 780}}, {2, {79, 808}}, {2, {111, 808}}, {3, {79, 808, 772}}, {3, {111, 808, 772}}, {2, {439, 780}}, + {2, {658, 780}}, {2, {106, 780}}, {2, {71, 769}}, {2, {103, 769}}, {2, {78, 768}}, {2, {110, 768}}, + {3, {65, 778, 769}}, {3, {97, 778, 769}}, {2, {198, 769}}, {2, {230, 769}}, {2, {216, 769}}, {2, {248, 769}}, + {2, {65, 783}}, {2, {97, 783}}, {2, {65, 785}}, {2, {97, 785}}, {2, {69, 783}}, {2, {101, 783}}, {2, {69, 785}}, + {2, {101, 785}}, {2, {73, 783}}, {2, {105, 783}}, {2, {73, 785}}, {2, {105, 785}}, {2, {79, 783}}, {2, {111, 783}}, + {2, {79, 785}}, {2, {111, 785}}, {2, {82, 783}}, {2, {114, 783}}, {2, {82, 785}}, {2, {114, 785}}, {2, {85, 783}}, + {2, {117, 783}}, {2, {85, 785}}, {2, {117, 785}}, {2, {83, 806}}, {2, {115, 806}}, {2, {84, 806}}, {2, {116, 806}}, + {2, {72, 780}}, {2, {104, 780}}, {2, {65, 775}}, {2, {97, 775}}, {2, {69, 807}}, {2, {101, 807}}, {3, {79, 776, 772}}, + {3, {111, 776, 772}}, {3, {79, 771, 772}}, {3, {111, 771, 772}}, {2, {79, 775}}, {2, {111, 775}}, {3, {79, 775, 772}}, + {3, {111, 775, 772}}, {2, {89, 772}}, {2, {121, 772}}, {1, {768}}, {1, {769}}, {1, {787}}, {2, {776, 769}}, + {1, {697}}, {1, {59}}, {2, {168, 769}}, {2, {913, 769}}, {1, {183}}, {2, {917, 769}}, {2, {919, 769}}, + {2, {921, 769}}, {2, {927, 769}}, {2, {933, 769}}, {2, {937, 769}}, {3, {953, 776, 769}}, {2, {921, 776}}, + {2, {933, 776}}, {2, {945, 769}}, {2, {949, 769}}, {2, {951, 769}}, {2, {953, 769}}, {3, {965, 776, 769}}, + {2, {953, 776}}, {2, {965, 776}}, {2, {959, 769}}, {2, {965, 769}}, {2, {969, 769}}, {2, {978, 769}}, {2, {978, 776}}, + {2, {1045, 768}}, {2, {1045, 776}}, {2, {1043, 769}}, {2, {1030, 776}}, {2, {1050, 769}}, {2, {1048, 768}}, + {2, {1059, 774}}, {2, {1048, 774}}, {2, {1080, 774}}, {2, {1077, 768}}, {2, {1077, 776}}, {2, {1075, 769}}, + {2, {1110, 776}}, {2, {1082, 769}}, {2, {1080, 768}}, {2, {1091, 774}}, {2, {1140, 783}}, {2, {1141, 783}}, + {2, {1046, 774}}, {2, {1078, 774}}, {2, {1040, 774}}, {2, {1072, 774}}, {2, {1040, 776}}, {2, {1072, 776}}, + {2, {1045, 774}}, {2, {1077, 774}}, {2, {1240, 776}}, {2, {1241, 776}}, {2, {1046, 776}}, {2, {1078, 776}}, + {2, {1047, 776}}, {2, {1079, 776}}, {2, {1048, 772}}, {2, {1080, 772}}, {2, {1048, 776}}, {2, {1080, 776}}, + {2, {1054, 776}}, {2, {1086, 776}}, {2, {1256, 776}}, {2, {1257, 776}}, {2, {1069, 776}}, {2, {1101, 776}}, + {2, {1059, 772}}, {2, {1091, 772}}, {2, {1059, 776}}, {2, {1091, 776}}, {2, {1059, 779}}, {2, {1091, 779}}, + {2, {1063, 776}}, {2, {1095, 776}}, {2, {1067, 776}}, {2, {1099, 776}}, {2, {1575, 1619}}, {2, {1575, 1620}}, + {2, {1608, 1620}}, {2, {1575, 1621}}, {2, {1610, 1620}}, {2, {1749, 1620}}, {2, {1729, 1620}}, {2, {1746, 1620}}, + {2, {2344, 2364}}, {2, {2352, 2364}}, {2, {2355, 2364}}, {2, {2325, 2364}}, {2, {2326, 2364}}, {2, {2327, 2364}}, + {2, {2332, 2364}}, {2, {2337, 2364}}, {2, {2338, 2364}}, {2, {2347, 2364}}, {2, {2351, 2364}}, {2, {2503, 2494}}, + {2, {2503, 2519}}, {2, {2465, 2492}}, {2, {2466, 2492}}, {2, {2479, 2492}}, {2, {2610, 2620}}, {2, {2616, 2620}}, + {2, {2582, 2620}}, {2, {2583, 2620}}, {2, {2588, 2620}}, {2, {2603, 2620}}, {2, {2887, 2902}}, {2, {2887, 2878}}, + {2, {2887, 2903}}, {2, {2849, 2876}}, {2, {2850, 2876}}, {2, {2962, 3031}}, {2, {3014, 3006}}, {2, {3015, 3006}}, + {2, {3014, 3031}}, {2, {3142, 3158}}, {2, {3263, 3285}}, {2, {3270, 3285}}, {2, {3270, 3286}}, {2, {3270, 3266}}, + {3, {3270, 3266, 3285}}, {2, {3398, 3390}}, {2, {3399, 3390}}, {2, {3398, 3415}}, {2, {3545, 3530}}, + {2, {3545, 3535}}, {3, {3545, 3535, 3530}}, {2, {3545, 3551}}, {2, {3906, 4023}}, {2, {3916, 4023}}, + {2, {3921, 4023}}, {2, {3926, 4023}}, {2, {3931, 4023}}, {2, {3904, 4021}}, {2, {3953, 3954}}, {2, {3953, 3956}}, + {2, {4018, 3968}}, {2, {4019, 3968}}, {2, {3953, 3968}}, {2, {3986, 4023}}, {2, {3996, 4023}}, {2, {4001, 4023}}, + {2, {4006, 4023}}, {2, {4011, 4023}}, {2, {3984, 4021}}, {2, {4133, 4142}}, {2, {65, 805}}, {2, {97, 805}}, + {2, {66, 775}}, {2, {98, 775}}, {2, {66, 803}}, {2, {98, 803}}, {2, {66, 817}}, {2, {98, 817}}, {3, {67, 807, 769}}, + {3, {99, 807, 769}}, {2, {68, 775}}, {2, {100, 775}}, {2, {68, 803}}, {2, {100, 803}}, {2, {68, 817}}, + {2, {100, 817}}, {2, {68, 807}}, {2, {100, 807}}, {2, {68, 813}}, {2, {100, 813}}, {3, {69, 772, 768}}, + {3, {101, 772, 768}}, {3, {69, 772, 769}}, {3, {101, 772, 769}}, {2, {69, 813}}, {2, {101, 813}}, {2, {69, 816}}, + {2, {101, 816}}, {3, {69, 807, 774}}, {3, {101, 807, 774}}, {2, {70, 775}}, {2, {102, 775}}, {2, {71, 772}}, + {2, {103, 772}}, {2, {72, 775}}, {2, {104, 775}}, {2, {72, 803}}, {2, {104, 803}}, {2, {72, 776}}, {2, {104, 776}}, + {2, {72, 807}}, {2, {104, 807}}, {2, {72, 814}}, {2, {104, 814}}, {2, {73, 816}}, {2, {105, 816}}, + {3, {73, 776, 769}}, {3, {105, 776, 769}}, {2, {75, 769}}, {2, {107, 769}}, {2, {75, 803}}, {2, {107, 803}}, + {2, {75, 817}}, {2, {107, 817}}, {2, {76, 803}}, {2, {108, 803}}, {3, {76, 803, 772}}, {3, {108, 803, 772}}, + {2, {76, 817}}, {2, {108, 817}}, {2, {76, 813}}, {2, {108, 813}}, {2, {77, 769}}, {2, {109, 769}}, {2, {77, 775}}, + {2, {109, 775}}, {2, {77, 803}}, {2, {109, 803}}, {2, {78, 775}}, {2, {110, 775}}, {2, {78, 803}}, {2, {110, 803}}, + {2, {78, 817}}, {2, {110, 817}}, {2, {78, 813}}, {2, {110, 813}}, {3, {79, 771, 769}}, {3, {111, 771, 769}}, + {3, {79, 771, 776}}, {3, {111, 771, 776}}, {3, {79, 772, 768}}, {3, {111, 772, 768}}, {3, {79, 772, 769}}, + {3, {111, 772, 769}}, {2, {80, 769}}, {2, {112, 769}}, {2, {80, 775}}, {2, {112, 775}}, {2, {82, 775}}, + {2, {114, 775}}, {2, {82, 803}}, {2, {114, 803}}, {3, {82, 803, 772}}, {3, {114, 803, 772}}, {2, {82, 817}}, + {2, {114, 817}}, {2, {83, 775}}, {2, {115, 775}}, {2, {83, 803}}, {2, {115, 803}}, {3, {83, 769, 775}}, + {3, {115, 769, 775}}, {3, {83, 780, 775}}, {3, {115, 780, 775}}, {3, {83, 803, 775}}, {3, {115, 803, 775}}, + {2, {84, 775}}, {2, {116, 775}}, {2, {84, 803}}, {2, {116, 803}}, {2, {84, 817}}, {2, {116, 817}}, {2, {84, 813}}, + {2, {116, 813}}, {2, {85, 804}}, {2, {117, 804}}, {2, {85, 816}}, {2, {117, 816}}, {2, {85, 813}}, {2, {117, 813}}, + {3, {85, 771, 769}}, {3, {117, 771, 769}}, {3, {85, 772, 776}}, {3, {117, 772, 776}}, {2, {86, 771}}, {2, {118, 771}}, + {2, {86, 803}}, {2, {118, 803}}, {2, {87, 768}}, {2, {119, 768}}, {2, {87, 769}}, {2, {119, 769}}, {2, {87, 776}}, + {2, {119, 776}}, {2, {87, 775}}, {2, {119, 775}}, {2, {87, 803}}, {2, {119, 803}}, {2, {88, 775}}, {2, {120, 775}}, + {2, {88, 776}}, {2, {120, 776}}, {2, {89, 775}}, {2, {121, 775}}, {2, {90, 770}}, {2, {122, 770}}, {2, {90, 803}}, + {2, {122, 803}}, {2, {90, 817}}, {2, {122, 817}}, {2, {104, 817}}, {2, {116, 776}}, {2, {119, 778}}, {2, {121, 778}}, + {2, {383, 775}}, {2, {65, 803}}, {2, {97, 803}}, {2, {65, 777}}, {2, {97, 777}}, {3, {65, 770, 769}}, + {3, {97, 770, 769}}, {3, {65, 770, 768}}, {3, {97, 770, 768}}, {3, {65, 770, 777}}, {3, {97, 770, 777}}, + {3, {65, 770, 771}}, {3, {97, 770, 771}}, {3, {65, 803, 770}}, {3, {97, 803, 770}}, {3, {65, 774, 769}}, + {3, {97, 774, 769}}, {3, {65, 774, 768}}, {3, {97, 774, 768}}, {3, {65, 774, 777}}, {3, {97, 774, 777}}, + {3, {65, 774, 771}}, {3, {97, 774, 771}}, {3, {65, 803, 774}}, {3, {97, 803, 774}}, {2, {69, 803}}, {2, {101, 803}}, + {2, {69, 777}}, {2, {101, 777}}, {2, {69, 771}}, {2, {101, 771}}, {3, {69, 770, 769}}, {3, {101, 770, 769}}, + {3, {69, 770, 768}}, {3, {101, 770, 768}}, {3, {69, 770, 777}}, {3, {101, 770, 777}}, {3, {69, 770, 771}}, + {3, {101, 770, 771}}, {3, {69, 803, 770}}, {3, {101, 803, 770}}, {2, {73, 777}}, {2, {105, 777}}, {2, {73, 803}}, + {2, {105, 803}}, {2, {79, 803}}, {2, {111, 803}}, {2, {79, 777}}, {2, {111, 777}}, {3, {79, 770, 769}}, + {3, {111, 770, 769}}, {3, {79, 770, 768}}, {3, {111, 770, 768}}, {3, {79, 770, 777}}, {3, {111, 770, 777}}, + {3, {79, 770, 771}}, {3, {111, 770, 771}}, {3, {79, 803, 770}}, {3, {111, 803, 770}}, {3, {79, 795, 769}}, + {3, {111, 795, 769}}, {3, {79, 795, 768}}, {3, {111, 795, 768}}, {3, {79, 795, 777}}, {3, {111, 795, 777}}, + {3, {79, 795, 771}}, {3, {111, 795, 771}}, {3, {79, 795, 803}}, {3, {111, 795, 803}}, {2, {85, 803}}, {2, {117, 803}}, + {2, {85, 777}}, {2, {117, 777}}, {3, {85, 795, 769}}, {3, {117, 795, 769}}, {3, {85, 795, 768}}, {3, {117, 795, 768}}, + {3, {85, 795, 777}}, {3, {117, 795, 777}}, {3, {85, 795, 771}}, {3, {117, 795, 771}}, {3, {85, 795, 803}}, + {3, {117, 795, 803}}, {2, {89, 768}}, {2, {121, 768}}, {2, {89, 803}}, {2, {121, 803}}, {2, {89, 777}}, + {2, {121, 777}}, {2, {89, 771}}, {2, {121, 771}}, {2, {945, 787}}, {2, {945, 788}}, {3, {945, 787, 768}}, + {3, {945, 788, 768}}, {3, {945, 787, 769}}, {3, {945, 788, 769}}, {3, {945, 787, 834}}, {3, {945, 788, 834}}, + {2, {913, 787}}, {2, {913, 788}}, {3, {913, 787, 768}}, {3, {913, 788, 768}}, {3, {913, 787, 769}}, + {3, {913, 788, 769}}, {3, {913, 787, 834}}, {3, {913, 788, 834}}, {2, {949, 787}}, {2, {949, 788}}, + {3, {949, 787, 768}}, {3, {949, 788, 768}}, {3, {949, 787, 769}}, {3, {949, 788, 769}}, {2, {917, 787}}, + {2, {917, 788}}, {3, {917, 787, 768}}, {3, {917, 788, 768}}, {3, {917, 787, 769}}, {3, {917, 788, 769}}, + {2, {951, 787}}, {2, {951, 788}}, {3, {951, 787, 768}}, {3, {951, 788, 768}}, {3, {951, 787, 769}}, + {3, {951, 788, 769}}, {3, {951, 787, 834}}, {3, {951, 788, 834}}, {2, {919, 787}}, {2, {919, 788}}, + {3, {919, 787, 768}}, {3, {919, 788, 768}}, {3, {919, 787, 769}}, {3, {919, 788, 769}}, {3, {919, 787, 834}}, + {3, {919, 788, 834}}, {2, {953, 787}}, {2, {953, 788}}, {3, {953, 787, 768}}, {3, {953, 788, 768}}, + {3, {953, 787, 769}}, {3, {953, 788, 769}}, {3, {953, 787, 834}}, {3, {953, 788, 834}}, {2, {921, 787}}, + {2, {921, 788}}, {3, {921, 787, 768}}, {3, {921, 788, 768}}, {3, {921, 787, 769}}, {3, {921, 788, 769}}, + {3, {921, 787, 834}}, {3, {921, 788, 834}}, {2, {959, 787}}, {2, {959, 788}}, {3, {959, 787, 768}}, + {3, {959, 788, 768}}, {3, {959, 787, 769}}, {3, {959, 788, 769}}, {2, {927, 787}}, {2, {927, 788}}, + {3, {927, 787, 768}}, {3, {927, 788, 768}}, {3, {927, 787, 769}}, {3, {927, 788, 769}}, {2, {965, 787}}, + {2, {965, 788}}, {3, {965, 787, 768}}, {3, {965, 788, 768}}, {3, {965, 787, 769}}, {3, {965, 788, 769}}, + {3, {965, 787, 834}}, {3, {965, 788, 834}}, {2, {933, 788}}, {3, {933, 788, 768}}, {3, {933, 788, 769}}, + {3, {933, 788, 834}}, {2, {969, 787}}, {2, {969, 788}}, {3, {969, 787, 768}}, {3, {969, 788, 768}}, + {3, {969, 787, 769}}, {3, {969, 788, 769}}, {3, {969, 787, 834}}, {3, {969, 788, 834}}, {2, {937, 787}}, + {2, {937, 788}}, {3, {937, 787, 768}}, {3, {937, 788, 768}}, {3, {937, 787, 769}}, {3, {937, 788, 769}}, + {3, {937, 787, 834}}, {3, {937, 788, 834}}, {2, {945, 768}}, {2, {945, 769}}, {2, {949, 768}}, {2, {949, 769}}, + {2, {951, 768}}, {2, {951, 769}}, {2, {953, 768}}, {2, {953, 769}}, {2, {959, 768}}, {2, {959, 769}}, {2, {965, 768}}, + {2, {965, 769}}, {2, {969, 768}}, {2, {969, 769}}, {3, {945, 787, 837}}, {3, {945, 788, 837}}, + {4, {945, 787, 768, 837}}, {4, {945, 788, 768, 837}}, {4, {945, 787, 769, 837}}, {4, {945, 788, 769, 837}}, + {4, {945, 787, 834, 837}}, {4, {945, 788, 834, 837}}, {3, {913, 787, 837}}, {3, {913, 788, 837}}, + {4, {913, 787, 768, 837}}, {4, {913, 788, 768, 837}}, {4, {913, 787, 769, 837}}, {4, {913, 788, 769, 837}}, + {4, {913, 787, 834, 837}}, {4, {913, 788, 834, 837}}, {3, {951, 787, 837}}, {3, {951, 788, 837}}, + {4, {951, 787, 768, 837}}, {4, {951, 788, 768, 837}}, {4, {951, 787, 769, 837}}, {4, {951, 788, 769, 837}}, + {4, {951, 787, 834, 837}}, {4, {951, 788, 834, 837}}, {3, {919, 787, 837}}, {3, {919, 788, 837}}, + {4, {919, 787, 768, 837}}, {4, {919, 788, 768, 837}}, {4, {919, 787, 769, 837}}, {4, {919, 788, 769, 837}}, + {4, {919, 787, 834, 837}}, {4, {919, 788, 834, 837}}, {3, {969, 787, 837}}, {3, {969, 788, 837}}, + {4, {969, 787, 768, 837}}, {4, {969, 788, 768, 837}}, {4, {969, 787, 769, 837}}, {4, {969, 788, 769, 837}}, + {4, {969, 787, 834, 837}}, {4, {969, 788, 834, 837}}, {3, {937, 787, 837}}, {3, {937, 788, 837}}, + {4, {937, 787, 768, 837}}, {4, {937, 788, 768, 837}}, {4, {937, 787, 769, 837}}, {4, {937, 788, 769, 837}}, + {4, {937, 787, 834, 837}}, {4, {937, 788, 834, 837}}, {2, {945, 774}}, {2, {945, 772}}, {3, {945, 768, 837}}, + {2, {945, 837}}, {3, {945, 769, 837}}, {2, {945, 834}}, {3, {945, 834, 837}}, {2, {913, 774}}, {2, {913, 772}}, + {2, {913, 768}}, {2, {913, 769}}, {2, {913, 837}}, {1, {953}}, {2, {168, 834}}, {3, {951, 768, 837}}, {2, {951, 837}}, + {3, {951, 769, 837}}, {2, {951, 834}}, {3, {951, 834, 837}}, {2, {917, 768}}, {2, {917, 769}}, {2, {919, 768}}, + {2, {919, 769}}, {2, {919, 837}}, {2, {8127, 768}}, {2, {8127, 769}}, {2, {8127, 834}}, {2, {953, 774}}, + {2, {953, 772}}, {3, {953, 776, 768}}, {3, {953, 776, 769}}, {2, {953, 834}}, {3, {953, 776, 834}}, {2, {921, 774}}, + {2, {921, 772}}, {2, {921, 768}}, {2, {921, 769}}, {2, {8190, 768}}, {2, {8190, 769}}, {2, {8190, 834}}, + {2, {965, 774}}, {2, {965, 772}}, {3, {965, 776, 768}}, {3, {965, 776, 769}}, {2, {961, 787}}, {2, {961, 788}}, + {2, {965, 834}}, {3, {965, 776, 834}}, {2, {933, 774}}, {2, {933, 772}}, {2, {933, 768}}, {2, {933, 769}}, + {2, {929, 788}}, {2, {168, 768}}, {2, {168, 769}}, {1, {96}}, {3, {969, 768, 837}}, {2, {969, 837}}, + {3, {969, 769, 837}}, {2, {969, 834}}, {3, {969, 834, 837}}, {2, {927, 768}}, {2, {927, 769}}, {2, {937, 768}}, + {2, {937, 769}}, {2, {937, 837}}, {1, {180}}, {1, {8194}}, {1, {8195}}, {1, {937}}, {1, {75}}, {2, {65, 778}}, + {2, {8592, 824}}, {2, {8594, 824}}, {2, {8596, 824}}, {2, {8656, 824}}, {2, {8660, 824}}, {2, {8658, 824}}, + {2, {8707, 824}}, {2, {8712, 824}}, {2, {8715, 824}}, {2, {8739, 824}}, {2, {8741, 824}}, {2, {8764, 824}}, + {2, {8771, 824}}, {2, {8773, 824}}, {2, {8776, 824}}, {2, {61, 824}}, {2, {8801, 824}}, {2, {8781, 824}}, + {2, {60, 824}}, {2, {62, 824}}, {2, {8804, 824}}, {2, {8805, 824}}, {2, {8818, 824}}, {2, {8819, 824}}, + {2, {8822, 824}}, {2, {8823, 824}}, {2, {8826, 824}}, {2, {8827, 824}}, {2, {8834, 824}}, {2, {8835, 824}}, + {2, {8838, 824}}, {2, {8839, 824}}, {2, {8866, 824}}, {2, {8872, 824}}, {2, {8873, 824}}, {2, {8875, 824}}, + {2, {8828, 824}}, {2, {8829, 824}}, {2, {8849, 824}}, {2, {8850, 824}}, {2, {8882, 824}}, {2, {8883, 824}}, + {2, {8884, 824}}, {2, {8885, 824}}, {1, {12296}}, {1, {12297}}, {2, {10973, 824}}, {2, {12363, 12441}}, + {2, {12365, 12441}}, {2, {12367, 12441}}, {2, {12369, 12441}}, {2, {12371, 12441}}, {2, {12373, 12441}}, + {2, {12375, 12441}}, {2, {12377, 12441}}, {2, {12379, 12441}}, {2, {12381, 12441}}, {2, {12383, 12441}}, + {2, {12385, 12441}}, {2, {12388, 12441}}, {2, {12390, 12441}}, {2, {12392, 12441}}, {2, {12399, 12441}}, + {2, {12399, 12442}}, {2, {12402, 12441}}, {2, {12402, 12442}}, {2, {12405, 12441}}, {2, {12405, 12442}}, + {2, {12408, 12441}}, {2, {12408, 12442}}, {2, {12411, 12441}}, {2, {12411, 12442}}, {2, {12358, 12441}}, + {2, {12445, 12441}}, {2, {12459, 12441}}, {2, {12461, 12441}}, {2, {12463, 12441}}, {2, {12465, 12441}}, + {2, {12467, 12441}}, {2, {12469, 12441}}, {2, {12471, 12441}}, {2, {12473, 12441}}, {2, {12475, 12441}}, + {2, {12477, 12441}}, {2, {12479, 12441}}, {2, {12481, 12441}}, {2, {12484, 12441}}, {2, {12486, 12441}}, + {2, {12488, 12441}}, {2, {12495, 12441}}, {2, {12495, 12442}}, {2, {12498, 12441}}, {2, {12498, 12442}}, + {2, {12501, 12441}}, {2, {12501, 12442}}, {2, {12504, 12441}}, {2, {12504, 12442}}, {2, {12507, 12441}}, + {2, {12507, 12442}}, {2, {12454, 12441}}, {2, {12527, 12441}}, {2, {12528, 12441}}, {2, {12529, 12441}}, + {2, {12530, 12441}}, {2, {12541, 12441}}, {1, {35912}}, {1, {26356}}, {1, {36554}}, {1, {36040}}, {1, {28369}}, + {1, {20018}}, {1, {21477}}, {1, {40860}}, {1, {40860}}, {1, {22865}}, {1, {37329}}, {1, {21895}}, {1, {22856}}, + {1, {25078}}, {1, {30313}}, {1, {32645}}, {1, {34367}}, {1, {34746}}, {1, {35064}}, {1, {37007}}, {1, {27138}}, + {1, {27931}}, {1, {28889}}, {1, {29662}}, {1, {33853}}, {1, {37226}}, {1, {39409}}, {1, {20098}}, {1, {21365}}, + {1, {27396}}, {1, {29211}}, {1, {34349}}, {1, {40478}}, {1, {23888}}, {1, {28651}}, {1, {34253}}, {1, {35172}}, + {1, {25289}}, {1, {33240}}, {1, {34847}}, {1, {24266}}, {1, {26391}}, {1, {28010}}, {1, {29436}}, {1, {37070}}, + {1, {20358}}, {1, {20919}}, {1, {21214}}, {1, {25796}}, {1, {27347}}, {1, {29200}}, {1, {30439}}, {1, {32769}}, + {1, {34310}}, {1, {34396}}, {1, {36335}}, {1, {38706}}, {1, {39791}}, {1, {40442}}, {1, {30860}}, {1, {31103}}, + {1, {32160}}, {1, {33737}}, {1, {37636}}, {1, {40575}}, {1, {35542}}, {1, {22751}}, {1, {24324}}, {1, {31840}}, + {1, {32894}}, {1, {29282}}, {1, {30922}}, {1, {36034}}, {1, {38647}}, {1, {22744}}, {1, {23650}}, {1, {27155}}, + {1, {28122}}, {1, {28431}}, {1, {32047}}, {1, {32311}}, {1, {38475}}, {1, {21202}}, {1, {32907}}, {1, {20956}}, + {1, {20940}}, {1, {31260}}, {1, {32190}}, {1, {33777}}, {1, {38517}}, {1, {35712}}, {1, {25295}}, {1, {27138}}, + {1, {35582}}, {1, {20025}}, {1, {23527}}, {1, {24594}}, {1, {29575}}, {1, {30064}}, {1, {21271}}, {1, {30971}}, + {1, {20415}}, {1, {24489}}, {1, {19981}}, {1, {27852}}, {1, {25976}}, {1, {32034}}, {1, {21443}}, {1, {22622}}, + {1, {30465}}, {1, {33865}}, {1, {35498}}, {1, {27578}}, {1, {36784}}, {1, {27784}}, {1, {25342}}, {1, {33509}}, + {1, {25504}}, {1, {30053}}, {1, {20142}}, {1, {20841}}, {1, {20937}}, {1, {26753}}, {1, {31975}}, {1, {33391}}, + {1, {35538}}, {1, {37327}}, {1, {21237}}, {1, {21570}}, {1, {22899}}, {1, {24300}}, {1, {26053}}, {1, {28670}}, + {1, {31018}}, {1, {38317}}, {1, {39530}}, {1, {40599}}, {1, {40654}}, {1, {21147}}, {1, {26310}}, {1, {27511}}, + {1, {36706}}, {1, {24180}}, {1, {24976}}, {1, {25088}}, {1, {25754}}, {1, {28451}}, {1, {29001}}, {1, {29833}}, + {1, {31178}}, {1, {32244}}, {1, {32879}}, {1, {36646}}, {1, {34030}}, {1, {36899}}, {1, {37706}}, {1, {21015}}, + {1, {21155}}, {1, {21693}}, {1, {28872}}, {1, {35010}}, {1, {35498}}, {1, {24265}}, {1, {24565}}, {1, {25467}}, + {1, {27566}}, {1, {31806}}, {1, {29557}}, {1, {20196}}, {1, {22265}}, {1, {23527}}, {1, {23994}}, {1, {24604}}, + {1, {29618}}, {1, {29801}}, {1, {32666}}, {1, {32838}}, {1, {37428}}, {1, {38646}}, {1, {38728}}, {1, {38936}}, + {1, {20363}}, {1, {31150}}, {1, {37300}}, {1, {38584}}, {1, {24801}}, {1, {20102}}, {1, {20698}}, {1, {23534}}, + {1, {23615}}, {1, {26009}}, {1, {27138}}, {1, {29134}}, {1, {30274}}, {1, {34044}}, {1, {36988}}, {1, {40845}}, + {1, {26248}}, {1, {38446}}, {1, {21129}}, {1, {26491}}, {1, {26611}}, {1, {27969}}, {1, {28316}}, {1, {29705}}, + {1, {30041}}, {1, {30827}}, {1, {32016}}, {1, {39006}}, {1, {20845}}, {1, {25134}}, {1, {38520}}, {1, {20523}}, + {1, {23833}}, {1, {28138}}, {1, {36650}}, {1, {24459}}, {1, {24900}}, {1, {26647}}, {1, {29575}}, {1, {38534}}, + {1, {21033}}, {1, {21519}}, {1, {23653}}, {1, {26131}}, {1, {26446}}, {1, {26792}}, {1, {27877}}, {1, {29702}}, + {1, {30178}}, {1, {32633}}, {1, {35023}}, {1, {35041}}, {1, {37324}}, {1, {38626}}, {1, {21311}}, {1, {28346}}, + {1, {21533}}, {1, {29136}}, {1, {29848}}, {1, {34298}}, {1, {38563}}, {1, {40023}}, {1, {40607}}, {1, {26519}}, + {1, {28107}}, {1, {33256}}, {1, {31435}}, {1, {31520}}, {1, {31890}}, {1, {29376}}, {1, {28825}}, {1, {35672}}, + {1, {20160}}, {1, {33590}}, {1, {21050}}, {1, {20999}}, {1, {24230}}, {1, {25299}}, {1, {31958}}, {1, {23429}}, + {1, {27934}}, {1, {26292}}, {1, {36667}}, {1, {34892}}, {1, {38477}}, {1, {35211}}, {1, {24275}}, {1, {20800}}, + {1, {21952}}, {1, {22618}}, {1, {26228}}, {1, {20958}}, {1, {29482}}, {1, {30410}}, {1, {31036}}, {1, {31070}}, + {1, {31077}}, {1, {31119}}, {1, {38742}}, {1, {31934}}, {1, {32701}}, {1, {34322}}, {1, {35576}}, {1, {36920}}, + {1, {37117}}, {1, {39151}}, {1, {39164}}, {1, {39208}}, {1, {40372}}, {1, {20398}}, {1, {20711}}, {1, {20813}}, + {1, {21193}}, {1, {21220}}, {1, {21329}}, {1, {21917}}, {1, {22022}}, {1, {22120}}, {1, {22592}}, {1, {22696}}, + {1, {23652}}, {1, {23662}}, {1, {24724}}, {1, {24936}}, {1, {24974}}, {1, {25074}}, {1, {25935}}, {1, {26082}}, + {1, {26257}}, {1, {26757}}, {1, {28023}}, {1, {28186}}, {1, {28450}}, {1, {29038}}, {1, {29227}}, {1, {29730}}, + {1, {30865}}, {1, {31038}}, {1, {31049}}, {1, {31048}}, {1, {31056}}, {1, {31062}}, {1, {31069}}, {1, {31117}}, + {1, {31118}}, {1, {31296}}, {1, {31361}}, {1, {31680}}, {1, {32244}}, {1, {32265}}, {1, {32321}}, {1, {32626}}, + {1, {32773}}, {1, {33261}}, {1, {33401}}, {1, {33401}}, {1, {33879}}, {1, {35088}}, {1, {35222}}, {1, {35585}}, + {1, {35641}}, {1, {36051}}, {1, {36104}}, {1, {36790}}, {1, {36920}}, {1, {38627}}, {1, {38911}}, {1, {38971}}, + {1, {20006}}, {1, {20917}}, {1, {20840}}, {1, {20352}}, {1, {20805}}, {1, {20864}}, {1, {21191}}, {1, {21242}}, + {1, {21917}}, {1, {21845}}, {1, {21913}}, {1, {21986}}, {1, {22618}}, {1, {22707}}, {1, {22852}}, {1, {22868}}, + {1, {23138}}, {1, {23336}}, {1, {24274}}, {1, {24281}}, {1, {24425}}, {1, {24493}}, {1, {24792}}, {1, {24910}}, + {1, {24840}}, {1, {24974}}, {1, {24928}}, {1, {25074}}, {1, {25140}}, {1, {25540}}, {1, {25628}}, {1, {25682}}, + {1, {25942}}, {1, {26228}}, {1, {26391}}, {1, {26395}}, {1, {26454}}, {1, {27513}}, {1, {27578}}, {1, {27969}}, + {1, {28379}}, {1, {28363}}, {1, {28450}}, {1, {28702}}, {1, {29038}}, {1, {30631}}, {1, {29237}}, {1, {29359}}, + {1, {29482}}, {1, {29809}}, {1, {29958}}, {1, {30011}}, {1, {30237}}, {1, {30239}}, {1, {30410}}, {1, {30427}}, + {1, {30452}}, {1, {30538}}, {1, {30528}}, {1, {30924}}, {1, {31409}}, {1, {31680}}, {1, {31867}}, {1, {32091}}, + {1, {32244}}, {1, {32574}}, {1, {32773}}, {1, {33618}}, {1, {33775}}, {1, {34681}}, {1, {35137}}, {1, {35206}}, + {1, {35222}}, {1, {35519}}, {1, {35576}}, {1, {35531}}, {1, {35585}}, {1, {35582}}, {1, {35565}}, {1, {35641}}, + {1, {35722}}, {1, {36104}}, {1, {36664}}, {1, {36978}}, {1, {37273}}, {1, {37494}}, {1, {38524}}, {1, {38627}}, + {1, {38742}}, {1, {38875}}, {1, {38911}}, {1, {38923}}, {1, {38971}}, {1, {39698}}, {1, {40860}}, {1, {141386}}, + {1, {141380}}, {1, {144341}}, {1, {15261}}, {1, {16408}}, {1, {16441}}, {1, {152137}}, {1, {154832}}, {1, {163539}}, + {1, {40771}}, {1, {40846}}, {2, {1497, 1460}}, {2, {1522, 1463}}, {2, {1513, 1473}}, {2, {1513, 1474}}, + {3, {1513, 1468, 1473}}, {3, {1513, 1468, 1474}}, {2, {1488, 1463}}, {2, {1488, 1464}}, {2, {1488, 1468}}, + {2, {1489, 1468}}, {2, {1490, 1468}}, {2, {1491, 1468}}, {2, {1492, 1468}}, {2, {1493, 1468}}, {2, {1494, 1468}}, + {2, {1496, 1468}}, {2, {1497, 1468}}, {2, {1498, 1468}}, {2, {1499, 1468}}, {2, {1500, 1468}}, {2, {1502, 1468}}, + {2, {1504, 1468}}, {2, {1505, 1468}}, {2, {1507, 1468}}, {2, {1508, 1468}}, {2, {1510, 1468}}, {2, {1511, 1468}}, + {2, {1512, 1468}}, {2, {1513, 1468}}, {2, {1514, 1468}}, {2, {1493, 1465}}, {2, {1489, 1471}}, {2, {1499, 1471}}, + {2, {1508, 1471}}, {2, {119127, 119141}}, {2, {119128, 119141}}, {3, {119128, 119141, 119150}}, + {3, {119128, 119141, 119151}}, {3, {119128, 119141, 119152}}, {3, {119128, 119141, 119153}}, + {3, {119128, 119141, 119154}}, {2, {119225, 119141}}, {2, {119226, 119141}}, {3, {119225, 119141, 119150}}, + {3, {119226, 119141, 119150}}, {3, {119225, 119141, 119151}}, {3, {119226, 119141, 119151}}, {1, {20029}}, + {1, {20024}}, {1, {20033}}, {1, {131362}}, {1, {20320}}, {1, {20398}}, {1, {20411}}, {1, {20482}}, {1, {20602}}, + {1, {20633}}, {1, {20711}}, {1, {20687}}, {1, {13470}}, {1, {132666}}, {1, {20813}}, {1, {20820}}, {1, {20836}}, + {1, {20855}}, {1, {132380}}, {1, {13497}}, {1, {20839}}, {1, {20877}}, {1, {132427}}, {1, {20887}}, {1, {20900}}, + {1, {20172}}, {1, {20908}}, {1, {20917}}, {1, {168415}}, {1, {20981}}, {1, {20995}}, {1, {13535}}, {1, {21051}}, + {1, {21062}}, {1, {21106}}, {1, {21111}}, {1, {13589}}, {1, {21191}}, {1, {21193}}, {1, {21220}}, {1, {21242}}, + {1, {21253}}, {1, {21254}}, {1, {21271}}, {1, {21321}}, {1, {21329}}, {1, {21338}}, {1, {21363}}, {1, {21373}}, + {1, {21375}}, {1, {21375}}, {1, {21375}}, {1, {133676}}, {1, {28784}}, {1, {21450}}, {1, {21471}}, {1, {133987}}, + {1, {21483}}, {1, {21489}}, {1, {21510}}, {1, {21662}}, {1, {21560}}, {1, {21576}}, {1, {21608}}, {1, {21666}}, + {1, {21750}}, {1, {21776}}, {1, {21843}}, {1, {21859}}, {1, {21892}}, {1, {21892}}, {1, {21913}}, {1, {21931}}, + {1, {21939}}, {1, {21954}}, {1, {22294}}, {1, {22022}}, {1, {22295}}, {1, {22097}}, {1, {22132}}, {1, {20999}}, + {1, {22766}}, {1, {22478}}, {1, {22516}}, {1, {22541}}, {1, {22411}}, {1, {22578}}, {1, {22577}}, {1, {22700}}, + {1, {136420}}, {1, {22770}}, {1, {22775}}, {1, {22790}}, {1, {22810}}, {1, {22818}}, {1, {22882}}, {1, {136872}}, + {1, {136938}}, {1, {23020}}, {1, {23067}}, {1, {23079}}, {1, {23000}}, {1, {23142}}, {1, {14062}}, {1, {14076}}, + {1, {23304}}, {1, {23358}}, {1, {23358}}, {1, {137672}}, {1, {23491}}, {1, {23512}}, {1, {23527}}, {1, {23539}}, + {1, {138008}}, {1, {23551}}, {1, {23558}}, {1, {24403}}, {1, {23586}}, {1, {14209}}, {1, {23648}}, {1, {23662}}, + {1, {23744}}, {1, {23693}}, {1, {138724}}, {1, {23875}}, {1, {138726}}, {1, {23918}}, {1, {23915}}, {1, {23932}}, + {1, {24033}}, {1, {24034}}, {1, {14383}}, {1, {24061}}, {1, {24104}}, {1, {24125}}, {1, {24169}}, {1, {14434}}, + {1, {139651}}, {1, {14460}}, {1, {24240}}, {1, {24243}}, {1, {24246}}, {1, {24266}}, {1, {172946}}, {1, {24318}}, + {1, {140081}}, {1, {140081}}, {1, {33281}}, {1, {24354}}, {1, {24354}}, {1, {14535}}, {1, {144056}}, {1, {156122}}, + {1, {24418}}, {1, {24427}}, {1, {14563}}, {1, {24474}}, {1, {24525}}, {1, {24535}}, {1, {24569}}, {1, {24705}}, + {1, {14650}}, {1, {14620}}, {1, {24724}}, {1, {141012}}, {1, {24775}}, {1, {24904}}, {1, {24908}}, {1, {24910}}, + {1, {24908}}, {1, {24954}}, {1, {24974}}, {1, {25010}}, {1, {24996}}, {1, {25007}}, {1, {25054}}, {1, {25074}}, + {1, {25078}}, {1, {25104}}, {1, {25115}}, {1, {25181}}, {1, {25265}}, {1, {25300}}, {1, {25424}}, {1, {142092}}, + {1, {25405}}, {1, {25340}}, {1, {25448}}, {1, {25475}}, {1, {25572}}, {1, {142321}}, {1, {25634}}, {1, {25541}}, + {1, {25513}}, {1, {14894}}, {1, {25705}}, {1, {25726}}, {1, {25757}}, {1, {25719}}, {1, {14956}}, {1, {25935}}, + {1, {25964}}, {1, {143370}}, {1, {26083}}, {1, {26360}}, {1, {26185}}, {1, {15129}}, {1, {26257}}, {1, {15112}}, + {1, {15076}}, {1, {20882}}, {1, {20885}}, {1, {26368}}, {1, {26268}}, {1, {32941}}, {1, {17369}}, {1, {26391}}, + {1, {26395}}, {1, {26401}}, {1, {26462}}, {1, {26451}}, {1, {144323}}, {1, {15177}}, {1, {26618}}, {1, {26501}}, + {1, {26706}}, {1, {26757}}, {1, {144493}}, {1, {26766}}, {1, {26655}}, {1, {26900}}, {1, {15261}}, {1, {26946}}, + {1, {27043}}, {1, {27114}}, {1, {27304}}, {1, {145059}}, {1, {27355}}, {1, {15384}}, {1, {27425}}, {1, {145575}}, + {1, {27476}}, {1, {15438}}, {1, {27506}}, {1, {27551}}, {1, {27578}}, {1, {27579}}, {1, {146061}}, {1, {138507}}, + {1, {146170}}, {1, {27726}}, {1, {146620}}, {1, {27839}}, {1, {27853}}, {1, {27751}}, {1, {27926}}, {1, {27966}}, + {1, {28023}}, {1, {27969}}, {1, {28009}}, {1, {28024}}, {1, {28037}}, {1, {146718}}, {1, {27956}}, {1, {28207}}, + {1, {28270}}, {1, {15667}}, {1, {28363}}, {1, {28359}}, {1, {147153}}, {1, {28153}}, {1, {28526}}, {1, {147294}}, + {1, {147342}}, {1, {28614}}, {1, {28729}}, {1, {28702}}, {1, {28699}}, {1, {15766}}, {1, {28746}}, {1, {28797}}, + {1, {28791}}, {1, {28845}}, {1, {132389}}, {1, {28997}}, {1, {148067}}, {1, {29084}}, {1, {148395}}, {1, {29224}}, + {1, {29237}}, {1, {29264}}, {1, {149000}}, {1, {29312}}, {1, {29333}}, {1, {149301}}, {1, {149524}}, {1, {29562}}, + {1, {29579}}, {1, {16044}}, {1, {29605}}, {1, {16056}}, {1, {16056}}, {1, {29767}}, {1, {29788}}, {1, {29809}}, + {1, {29829}}, {1, {29898}}, {1, {16155}}, {1, {29988}}, {1, {150582}}, {1, {30014}}, {1, {150674}}, {1, {30064}}, + {1, {139679}}, {1, {30224}}, {1, {151457}}, {1, {151480}}, {1, {151620}}, {1, {16380}}, {1, {16392}}, {1, {30452}}, + {1, {151795}}, {1, {151794}}, {1, {151833}}, {1, {151859}}, {1, {30494}}, {1, {30495}}, {1, {30495}}, {1, {30538}}, + {1, {16441}}, {1, {30603}}, {1, {16454}}, {1, {16534}}, {1, {152605}}, {1, {30798}}, {1, {30860}}, {1, {30924}}, + {1, {16611}}, {1, {153126}}, {1, {31062}}, {1, {153242}}, {1, {153285}}, {1, {31119}}, {1, {31211}}, {1, {16687}}, + {1, {31296}}, {1, {31306}}, {1, {31311}}, {1, {153980}}, {1, {154279}}, {1, {154279}}, {1, {31470}}, {1, {16898}}, + {1, {154539}}, {1, {31686}}, {1, {31689}}, {1, {16935}}, {1, {154752}}, {1, {31954}}, {1, {17056}}, {1, {31976}}, + {1, {31971}}, {1, {32000}}, {1, {155526}}, {1, {32099}}, {1, {17153}}, {1, {32199}}, {1, {32258}}, {1, {32325}}, + {1, {17204}}, {1, {156200}}, {1, {156231}}, {1, {17241}}, {1, {156377}}, {1, {32634}}, {1, {156478}}, {1, {32661}}, + {1, {32762}}, {1, {32773}}, {1, {156890}}, {1, {156963}}, {1, {32864}}, {1, {157096}}, {1, {32880}}, {1, {144223}}, + {1, {17365}}, {1, {32946}}, {1, {33027}}, {1, {17419}}, {1, {33086}}, {1, {23221}}, {1, {157607}}, {1, {157621}}, + {1, {144275}}, {1, {144284}}, {1, {33281}}, {1, {33284}}, {1, {36766}}, {1, {17515}}, {1, {33425}}, {1, {33419}}, + {1, {33437}}, {1, {21171}}, {1, {33457}}, {1, {33459}}, {1, {33469}}, {1, {33510}}, {1, {158524}}, {1, {33509}}, + {1, {33565}}, {1, {33635}}, {1, {33709}}, {1, {33571}}, {1, {33725}}, {1, {33767}}, {1, {33879}}, {1, {33619}}, + {1, {33738}}, {1, {33740}}, {1, {33756}}, {1, {158774}}, {1, {159083}}, {1, {158933}}, {1, {17707}}, {1, {34033}}, + {1, {34035}}, {1, {34070}}, {1, {160714}}, {1, {34148}}, {1, {159532}}, {1, {17757}}, {1, {17761}}, {1, {159665}}, + {1, {159954}}, {1, {17771}}, {1, {34384}}, {1, {34396}}, {1, {34407}}, {1, {34409}}, {1, {34473}}, {1, {34440}}, + {1, {34574}}, {1, {34530}}, {1, {34681}}, {1, {34600}}, {1, {34667}}, {1, {34694}}, {1, {17879}}, {1, {34785}}, + {1, {34817}}, {1, {17913}}, {1, {34912}}, {1, {34915}}, {1, {161383}}, {1, {35031}}, {1, {35038}}, {1, {17973}}, + {1, {35066}}, {1, {13499}}, {1, {161966}}, {1, {162150}}, {1, {18110}}, {1, {18119}}, {1, {35488}}, {1, {35565}}, + {1, {35722}}, {1, {35925}}, {1, {162984}}, {1, {36011}}, {1, {36033}}, {1, {36123}}, {1, {36215}}, {1, {163631}}, + {1, {133124}}, {1, {36299}}, {1, {36284}}, {1, {36336}}, {1, {133342}}, {1, {36564}}, {1, {36664}}, {1, {165330}}, + {1, {165357}}, {1, {37012}}, {1, {37105}}, {1, {37137}}, {1, {165678}}, {1, {37147}}, {1, {37432}}, {1, {37591}}, + {1, {37592}}, {1, {37500}}, {1, {37881}}, {1, {37909}}, {1, {166906}}, {1, {38283}}, {1, {18837}}, {1, {38327}}, + {1, {167287}}, {1, {18918}}, {1, {38595}}, {1, {23986}}, {1, {38691}}, {1, {168261}}, {1, {168474}}, {1, {19054}}, + {1, {19062}}, {1, {38880}}, {1, {168970}}, {1, {19122}}, {1, {169110}}, {1, {38923}}, {1, {38923}}, {1, {38953}}, + {1, {169398}}, {1, {39138}}, {1, {19251}}, {1, {39209}}, {1, {39335}}, {1, {39362}}, {1, {39422}}, {1, {19406}}, + {1, {170800}}, {1, {39698}}, {1, {40000}}, {1, {40189}}, {1, {19662}}, {1, {19693}}, {1, {40295}}, {1, {172238}}, + {1, {19704}}, {1, {172293}}, {1, {172558}}, {1, {172689}}, {1, {40635}}, {1, {19798}}, {1, {40697}}, {1, {40702}}, + {1, {40709}}, {1, {40719}}, {1, {40726}}, {1, {40763}}, {1, {173568}}, +}; + + KInt getCanonicalClass(KInt ch) { + int index = binarySearchRange(canonicalClassesKeys, ARRAY_SIZE(canonicalClassesKeys), ch); + if (canonicalClassesKeys[index] != ch) { + return 0; + } + return canonicalClassesValues[index]; +} + +} // namespace + +extern "C" { + +KInt Kotlin_text_regex_getCanonicalClassInternal(KInt ch) { + return getCanonicalClass(ch); +} + +KBoolean Kotlin_text_regex_hasSingleCodepointDecompositionInternal(KInt ch) { + int index = binarySearchRange(singleDecompositions, ARRAY_SIZE(singleDecompositions), ch); + return singleDecompositions[index] == ch; +} + +OBJ_GETTER(Kotlin_text_getDecompositionInternal, KInt ch) { + // TODO: Move all uses of decomposition table into C++ code. + int index = binarySearchRange(decompositionKeys, ARRAY_SIZE(decompositionKeys), ch); + if (decompositionKeys[index] != ch) { + return nullptr; + } + const Decomposition& decomposition = decompositionValues[index]; + ArrayHeader* result = AllocArrayInstance(theIntArrayTypeInfo, decomposition.length, OBJ_RESULT)->array(); + KInt* resultRaw = IntArrayAddressOfElementAt(result, 0); + for (int i = 0; i < decomposition.length; i++) { + *resultRaw++ = decomposition.array[i]; + } + RETURN_OBJ(result->obj()); +} + +} // extern "C" + + + + + + + + + + + diff --git a/runtime/src/main/kotlin/kotlin/text/regex/MatchResult.kt b/runtime/src/main/kotlin/kotlin/text/MatchResult.kt similarity index 99% rename from runtime/src/main/kotlin/kotlin/text/regex/MatchResult.kt rename to runtime/src/main/kotlin/kotlin/text/MatchResult.kt index 7c4019dbc48..d5c17b2b441 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/MatchResult.kt +++ b/runtime/src/main/kotlin/kotlin/text/MatchResult.kt @@ -16,6 +16,8 @@ package kotlin.text +import kotlin.text.regex.* + /** * Represents a collection of captured groups in a single match of a regular expression. * diff --git a/runtime/src/main/kotlin/kotlin/text/regex/Exceptions.kt b/runtime/src/main/kotlin/kotlin/text/PatternSyntaxException.kt similarity index 98% rename from runtime/src/main/kotlin/kotlin/text/regex/Exceptions.kt rename to runtime/src/main/kotlin/kotlin/text/PatternSyntaxException.kt index de2ba9bf401..f15f7a1fd15 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/Exceptions.kt +++ b/runtime/src/main/kotlin/kotlin/text/PatternSyntaxException.kt @@ -24,7 +24,5 @@ package kotlin.text * * @author Nikolay A. Kuznetsov */ - -// TODO: Rewrite class PatternSyntaxException(val description: String = "", val pattern: String = "", index: Int = -1) : IllegalArgumentException("Error in \"$pattern\" ($index). $description") diff --git a/runtime/src/main/kotlin/kotlin/text/regex/Regex.kt b/runtime/src/main/kotlin/kotlin/text/Regex.kt similarity index 99% rename from runtime/src/main/kotlin/kotlin/text/regex/Regex.kt rename to runtime/src/main/kotlin/kotlin/text/Regex.kt index 4a6de641cae..1a1a713be28 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/Regex.kt +++ b/runtime/src/main/kotlin/kotlin/text/Regex.kt @@ -16,6 +16,8 @@ package kotlin.text +import kotlin.text.regex.* + private interface FlagEnum { val value: Int val mask: Int diff --git a/runtime/src/main/kotlin/kotlin/text/regex/AbstractCharClass.kt b/runtime/src/main/kotlin/kotlin/text/regex/AbstractCharClass.kt index ad5455db132..1eacec84c36 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/AbstractCharClass.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/AbstractCharClass.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Unicode category (i.e. Ll, Lu). diff --git a/runtime/src/main/kotlin/kotlin/text/regex/AbstractLineTerminator.kt b/runtime/src/main/kotlin/kotlin/text/regex/AbstractLineTerminator.kt index c076f714ed1..558523d77fa 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/AbstractLineTerminator.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/AbstractLineTerminator.kt @@ -1,6 +1,6 @@ // TODO: License. -package kotlin.text +package kotlin.text.regex /** * Line terminator factory diff --git a/runtime/src/main/kotlin/kotlin/text/regex/CharClass.kt b/runtime/src/main/kotlin/kotlin/text/regex/CharClass.kt index 06d3d5bc2fd..d1d1dcfc719 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/CharClass.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/CharClass.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * User defined character classes (e.g. [abef]). diff --git a/runtime/src/main/kotlin/kotlin/text/regex/Decompositions.kt b/runtime/src/main/kotlin/kotlin/text/regex/Decompositions.kt deleted file mode 100644 index ee244e4b831..00000000000 --- a/runtime/src/main/kotlin/kotlin/text/regex/Decompositions.kt +++ /dev/null @@ -1,3406 +0,0 @@ -// TODO: @C++. Create tables on the C++ side - -// TODO: Theoretically we can normalize the string using separate C++ unicode lib - -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package kotlin.text - -/** - * This class gives us a hashtable that contains canonical - * classes that are generated from - * http://www.unicode.org/Public/4.0-Update/UnicodeData-4.0.0.txt. - */ -internal object CanClasses { - val hashCanClasses: IntHash by lazy { - val table = IntHash(384) - table.put(0x20D0, 230) - table.put(0x0A4D, 9) - table.put(0x0E49, 107) - table.put(0x0954, 230) - table.put(0x0E48, 107) - table.put(0x0953, 230) - table.put(0x0952, 220) - table.put(0x0951, 230) - table.put(0x094D, 9) - table.put(0x0E3A, 9) - table.put(0x17DD, 230) - table.put(0x0A3C, 7) - table.put(0x0E39, 103) - table.put(0x0E38, 103) - table.put(0x17D2, 9) - table.put(0x093C, 7) - table.put(0x06ED, 220) - table.put(0x06EC, 230) - table.put(0x06EB, 230) - table.put(0x06EA, 220) - table.put(0x06E8, 230) - table.put(0x06E7, 230) - table.put(0x06E4, 230) - table.put(0x06E3, 220) - table.put(0x06E2, 230) - table.put(0x06E1, 230) - table.put(0x06E0, 230) - table.put(0x06DF, 230) - table.put(0x06DC, 230) - table.put(0x06DB, 230) - table.put(0x06DA, 230) - table.put(0x0BCD, 9) - table.put(0x0486, 230) - table.put(0x0485, 230) - table.put(0x0484, 230) - table.put(0x0FC6, 220) - table.put(0x0483, 230) - table.put(0x06D9, 230) - table.put(0x06D8, 230) - table.put(0x06D7, 230) - table.put(0x06D6, 230) - table.put(0xA806, 9) - table.put(0x193B, 220) - table.put(0x193A, 230) - table.put(0x1939, 222) - table.put(0x0D4D, 9) - table.put(0x1A18, 220) - table.put(0x1A17, 230) - table.put(0x1D1AD, 230) - table.put(0x1D1AC, 230) - table.put(0x1D1AB, 230) - table.put(0x1D1AA, 230) - table.put(0xFB1E, 26) - table.put(0x0ECB, 122) - table.put(0x0ECA, 122) - table.put(0x0ACD, 9) - table.put(0x0EC9, 122) - table.put(0x0EC8, 122) - table.put(0x09CD, 9) - table.put(0x0ABC, 7) - table.put(0x0EB9, 118) - table.put(0x0EB8, 118) - table.put(0x05C7, 18) - table.put(0x05C5, 220) - table.put(0x05C4, 230) - table.put(0x05C2, 25) - table.put(0x05C1, 24) - table.put(0x036F, 230) - table.put(0x036E, 230) - table.put(0x09BC, 7) - table.put(0x036D, 230) - table.put(0x036C, 230) - table.put(0x036B, 230) - table.put(0x036A, 230) - table.put(0x05BF, 23) - table.put(0x05BD, 22) - table.put(0x05BC, 21) - table.put(0x05BB, 20) - table.put(0x0C56, 91) - table.put(0x0C55, 84) - table.put(0x0369, 230) - table.put(0x0368, 230) - table.put(0x0367, 230) - table.put(0x0366, 230) - table.put(0x0365, 230) - table.put(0x0364, 230) - table.put(0x0363, 230) - table.put(0x0362, 233) - table.put(0x05B9, 19) - table.put(0x0361, 234) - table.put(0x05B8, 18) - table.put(0x0360, 234) - table.put(0x05B7, 17) - table.put(0x05B6, 16) - table.put(0x05B5, 15) - table.put(0x05B4, 14) - table.put(0x05B3, 13) - table.put(0x05B2, 12) - table.put(0x05B1, 11) - table.put(0x0C4D, 9) - table.put(0x05B0, 10) - table.put(0x035F, 233) - table.put(0x035E, 234) - table.put(0x035D, 234) - table.put(0x035C, 233) - table.put(0x035B, 230) - table.put(0x035A, 220) - table.put(0x05AF, 230) - table.put(0x05AE, 228) - table.put(0x05AD, 222) - table.put(0x05AC, 230) - table.put(0x05AB, 230) - table.put(0x05AA, 220) - table.put(0x1039, 9) - table.put(0x0359, 220) - table.put(0x0358, 232) - table.put(0x1037, 7) - table.put(0x0357, 230) - table.put(0x0356, 220) - table.put(0x0355, 220) - table.put(0x0354, 220) - table.put(0x0353, 220) - table.put(0x0352, 230) - table.put(0x05A9, 230) - table.put(0x0351, 230) - table.put(0x05A8, 230) - table.put(0x0350, 230) - table.put(0x05A7, 220) - table.put(0x05A6, 220) - table.put(0x05A5, 220) - table.put(0x05A4, 220) - table.put(0x05A3, 220) - table.put(0x05A2, 220) - table.put(0x074A, 230) - table.put(0x05A1, 230) - table.put(0x05A0, 230) - table.put(0x034E, 220) - table.put(0x034D, 220) - table.put(0x034C, 230) - table.put(0x034B, 230) - table.put(0x0749, 230) - table.put(0x034A, 230) - table.put(0x0748, 220) - table.put(0x0747, 230) - table.put(0x0746, 220) - table.put(0x0745, 230) - table.put(0x0744, 220) - table.put(0x0743, 230) - table.put(0x0742, 220) - table.put(0x0741, 230) - table.put(0x0349, 220) - table.put(0x0740, 230) - table.put(0x0348, 220) - table.put(0x0347, 220) - table.put(0x0346, 230) - table.put(0x0345, 240) - table.put(0x0344, 230) - table.put(0x0343, 230) - table.put(0x0342, 230) - table.put(0x0341, 230) - table.put(0x0340, 230) - table.put(0x073F, 230) - table.put(0x073E, 220) - table.put(0x073D, 230) - table.put(0x073C, 220) - table.put(0x073B, 220) - table.put(0x073A, 230) - table.put(0x309A, 8) - table.put(0x033F, 230) - table.put(0x033E, 230) - table.put(0x033D, 230) - table.put(0x033C, 220) - table.put(0x033B, 220) - table.put(0x0739, 220) - table.put(0x033A, 220) - table.put(0x0738, 220) - table.put(0x0737, 220) - table.put(0x0736, 230) - table.put(0x3099, 8) - table.put(0x0735, 230) - table.put(0xFE23, 230) - table.put(0x0734, 220) - table.put(0x0F87, 230) - table.put(0xFE22, 230) - table.put(0x0733, 230) - table.put(0x0F86, 230) - table.put(0xFE21, 230) - table.put(0x0732, 230) - table.put(0xFE20, 230) - table.put(0x0731, 220) - table.put(0x0F84, 9) - table.put(0x0339, 220) - table.put(0x0730, 230) - table.put(0x0F83, 230) - table.put(0x0338, 1) - table.put(0x0F82, 230) - table.put(0x0337, 1) - table.put(0x0336, 1) - table.put(0x0F80, 130) - table.put(0x0335, 1) - table.put(0x0334, 1) - table.put(0x0333, 220) - table.put(0x0332, 220) - table.put(0x0331, 220) - table.put(0x0330, 220) - table.put(0x1D244, 230) - table.put(0x1D243, 230) - table.put(0x1D242, 230) - table.put(0x0F7D, 130) - table.put(0x0F7C, 130) - table.put(0x0F7B, 130) - table.put(0x0F7A, 130) - table.put(0x032F, 220) - table.put(0x032E, 220) - table.put(0x032D, 220) - table.put(0x032C, 220) - table.put(0x032B, 220) - table.put(0x032A, 220) - table.put(0x0F74, 132) - table.put(0x0329, 220) - table.put(0x0328, 202) - table.put(0x0F72, 130) - table.put(0x0327, 202) - table.put(0x0DCA, 9) - table.put(0x0F71, 129) - table.put(0x0326, 220) - table.put(0x0325, 220) - table.put(0x0324, 220) - table.put(0x0323, 220) - table.put(0x0322, 202) - table.put(0x0321, 202) - table.put(0x0320, 220) - table.put(0x10A3F, 9) - table.put(0x135F, 230) - table.put(0x10A3A, 220) - table.put(0x031F, 220) - table.put(0x031E, 220) - table.put(0x031D, 220) - table.put(0x031C, 220) - table.put(0x031B, 216) - table.put(0x031A, 232) - table.put(0x10A39, 1) - table.put(0x10A38, 230) - table.put(0x0711, 36) - table.put(0x0319, 220) - table.put(0x0318, 220) - table.put(0x0317, 220) - table.put(0x0316, 220) - table.put(0x0315, 232) - table.put(0x0314, 230) - table.put(0x1D18B, 220) - table.put(0x0313, 230) - table.put(0x1D18A, 220) - table.put(0x0312, 230) - table.put(0x0311, 230) - table.put(0x0670, 35) - table.put(0x0310, 230) - table.put(0x1D189, 230) - table.put(0x1D188, 230) - table.put(0x1D187, 230) - table.put(0x1D186, 230) - table.put(0x030F, 230) - table.put(0x1D185, 230) - table.put(0x030E, 230) - table.put(0x030D, 230) - table.put(0x030C, 230) - table.put(0x1D182, 220) - table.put(0x030B, 230) - table.put(0x1D181, 220) - table.put(0x030A, 230) - table.put(0x1D180, 220) - table.put(0x0309, 230) - table.put(0x0308, 230) - table.put(0x1D17F, 220) - table.put(0x0307, 230) - table.put(0x1D17E, 220) - table.put(0x0306, 230) - table.put(0x1D17D, 220) - table.put(0x0305, 230) - table.put(0x1D17C, 220) - table.put(0x0304, 230) - table.put(0x1D17B, 220) - table.put(0x0303, 230) - table.put(0x0302, 230) - table.put(0x0301, 230) - table.put(0x0300, 230) - table.put(0x065E, 230) - table.put(0x065D, 230) - table.put(0x065C, 220) - table.put(0x065B, 230) - table.put(0x1D172, 216) - table.put(0x065A, 230) - table.put(0x1D171, 216) - table.put(0x0B4D, 9) - table.put(0x1D170, 216) - table.put(0x1734, 9) - table.put(0x0659, 230) - table.put(0x0658, 230) - table.put(0x0657, 230) - table.put(0x1D16F, 216) - table.put(0x0656, 220) - table.put(0x1D16E, 216) - table.put(0x0655, 220) - table.put(0x1D16D, 226) - table.put(0x0654, 230) - table.put(0x0653, 230) - table.put(0x0652, 34) - table.put(0x0651, 33) - table.put(0x0650, 32) - table.put(0x10A0F, 230) - table.put(0x10A0D, 220) - table.put(0x1D169, 1) - table.put(0x1D168, 1) - table.put(0x1D167, 1) - table.put(0x064F, 31) - table.put(0x1D166, 216) - table.put(0x064E, 30) - table.put(0x1D165, 216) - table.put(0x064D, 29) - table.put(0x064C, 28) - table.put(0x064B, 27) - table.put(0x0B3C, 7) - table.put(0x0F39, 216) - table.put(0x0F37, 220) - table.put(0x0F35, 220) - table.put(0x1DC3, 230) - table.put(0x1DC2, 220) - table.put(0x1DC1, 230) - table.put(0x1DC0, 230) - table.put(0x059F, 230) - table.put(0x1714, 9) - table.put(0x059E, 230) - table.put(0x059D, 230) - table.put(0x059C, 230) - table.put(0x059B, 220) - table.put(0x059A, 222) - table.put(0x0599, 230) - table.put(0x0598, 230) - table.put(0x0597, 230) - table.put(0x0596, 220) - table.put(0x0595, 230) - table.put(0x0594, 230) - table.put(0x0593, 230) - table.put(0x302F, 224) - table.put(0x0592, 230) - table.put(0x302E, 224) - table.put(0x0591, 220) - table.put(0x302D, 222) - table.put(0x302C, 232) - table.put(0x302B, 228) - table.put(0x302A, 218) - table.put(0x0F19, 220) - table.put(0x0F18, 220) - table.put(0x0CCD, 9) - table.put(0x0615, 230) - table.put(0x0614, 230) - table.put(0x18A9, 228) - table.put(0x0613, 230) - table.put(0x0612, 230) - table.put(0x0611, 230) - table.put(0x0CBC, 7) - table.put(0x0610, 230) - table.put(0x20EB, 1) - table.put(0x20EA, 1) - table.put(0x20E9, 230) - table.put(0x20E8, 220) - table.put(0x20E7, 230) - table.put(0x20E6, 1) - table.put(0x20E5, 1) - table.put(0x20E1, 230) - table.put(0x20DC, 230) - table.put(0x20DB, 230) - table.put(0x20DA, 1) - table.put(0x20D9, 1) - table.put(0x20D8, 1) - table.put(0x20D7, 230) - table.put(0x20D6, 230) - table.put(0x0E4B, 107) - table.put(0x20D5, 230) - table.put(0x0E4A, 107) - table.put(0x20D4, 230) - table.put(0x20D3, 1) - table.put(0x20D2, 1) - table.put(0x20D1, 230) - return@lazy table - } -} -/** - * This class gives us a hashtable that contains canonical - * decomposition mappings that are generated from - * http://www.unicode.org/Public/4.0-Update/UnicodeData-4.0.0.txt. - */ -internal object HashDecompositions { - val hashDecompositions: IntArrHash by lazy { - val table = IntArrHash(2032) - table.put(0x0929, intArrayOf(0x0928, 0x093C)) - table.put(0xFA9F, intArrayOf(0x72AF)) - table.put(0xFA9E, intArrayOf(0x7235)) - table.put(0xFA9D, intArrayOf(0x77A7)) - table.put(0xFA9C, intArrayOf(0x716E)) - table.put(0xFA9B, intArrayOf(0x701E)) - table.put(0xFA9A, intArrayOf(0x6F22)) - table.put(0x0BCC, intArrayOf(0x0BC6, 0x0BD7)) - table.put(0x0BCB, intArrayOf(0x0BC7, 0x0BBE)) - table.put(0x0BCA, intArrayOf(0x0BC6, 0x0BBE)) - table.put(0xFA99, intArrayOf(0x6ECB)) - table.put(0xFA98, intArrayOf(0x6EDB)) - table.put(0xFA97, intArrayOf(0x6D41)) - table.put(0xFA96, intArrayOf(0x6BBA)) - table.put(0xFA95, intArrayOf(0x6B79)) - table.put(0xFA94, intArrayOf(0x6756)) - table.put(0xFA93, intArrayOf(0x671B)) - table.put(0xFA92, intArrayOf(0x6717)) - table.put(0x1D164, intArrayOf(0x1D158, 0x1D165, 0x1D172)) - table.put(0xFA91, intArrayOf(0x6674)) - table.put(0x1D163, intArrayOf(0x1D158, 0x1D165, 0x1D171)) - table.put(0xFA90, intArrayOf(0x6556)) - table.put(0x1D162, intArrayOf(0x1D158, 0x1D165, 0x1D170)) - table.put(0x1D161, intArrayOf(0x1D158, 0x1D165, 0x1D16F)) - table.put(0x1D160, intArrayOf(0x1D158, 0x1D165, 0x1D16E)) - table.put(0xFA8F, intArrayOf(0x6452)) - table.put(0xFA8E, intArrayOf(0x641C)) - table.put(0xFA8D, intArrayOf(0x63C4)) - table.put(0xFA8C, intArrayOf(0x6234)) - table.put(0x1D15F, intArrayOf(0x1D158, 0x1D165)) - table.put(0xFA8B, intArrayOf(0x61F2)) - table.put(0x1D15E, intArrayOf(0x1D157, 0x1D165)) - table.put(0xFA8A, intArrayOf(0x6160)) - table.put(0xFA89, intArrayOf(0x618E)) - table.put(0xFA88, intArrayOf(0x6108)) - table.put(0xFA87, intArrayOf(0x614E)) - table.put(0xFA86, intArrayOf(0x60D8)) - table.put(0xFA85, intArrayOf(0x5FAD)) - table.put(0xFA84, intArrayOf(0x5F69)) - table.put(0xFA83, intArrayOf(0x5ED9)) - table.put(0xFA82, intArrayOf(0x5ED2)) - table.put(0xFA81, intArrayOf(0x5B28)) - table.put(0xFA80, intArrayOf(0x5A62)) - table.put(0xFA7F, intArrayOf(0x5954)) - table.put(0x1FFD, intArrayOf(0x00B4)) - table.put(0xFA7E, intArrayOf(0x5944)) - table.put(0x1FFC, intArrayOf(0x03A9, 0x0345)) - table.put(0xFA7D, intArrayOf(0x58B3)) - table.put(0x1FFB, intArrayOf(0x03A9, 0x0301)) - table.put(0xFA7C, intArrayOf(0x585A)) - table.put(0x1FFA, intArrayOf(0x03A9, 0x0300)) - table.put(0xFA7B, intArrayOf(0x55E2)) - table.put(0xFA7A, intArrayOf(0x5599)) - table.put(0x219B, intArrayOf(0x2192, 0x0338)) - table.put(0x219A, intArrayOf(0x2190, 0x0338)) - table.put(0x1FF9, intArrayOf(0x039F, 0x0301)) - table.put(0x1FF8, intArrayOf(0x039F, 0x0300)) - table.put(0xFA79, intArrayOf(0x5555)) - table.put(0x1FF7, intArrayOf(0x03C9, 0x0342, 0x0345)) - table.put(0xFA78, intArrayOf(0x559D)) - table.put(0x1FF6, intArrayOf(0x03C9, 0x0342)) - table.put(0xFA77, intArrayOf(0x52FA)) - table.put(0xFA76, intArrayOf(0x52C7)) - table.put(0x1FF4, intArrayOf(0x03C9, 0x0301, 0x0345)) - table.put(0xFA75, intArrayOf(0x5180)) - table.put(0x1FF3, intArrayOf(0x03C9, 0x0345)) - table.put(0xFA74, intArrayOf(0x5145)) - table.put(0x1FF2, intArrayOf(0x03C9, 0x0300, 0x0345)) - table.put(0xFA73, intArrayOf(0x4F80)) - table.put(0xFA72, intArrayOf(0x5168)) - table.put(0xFA71, intArrayOf(0x51B5)) - table.put(0xFA70, intArrayOf(0x4E26)) - table.put(0x1FEF, intArrayOf(0x0060)) - table.put(0x1FEE, intArrayOf(0x00A8, 0x0301)) - table.put(0x1FED, intArrayOf(0x00A8, 0x0300)) - table.put(0x1FEC, intArrayOf(0x03A1, 0x0314)) - table.put(0x1FEB, intArrayOf(0x03A5, 0x0301)) - table.put(0x1FEA, intArrayOf(0x03A5, 0x0300)) - table.put(0xFA6A, intArrayOf(0x983B)) - table.put(0x1FE9, intArrayOf(0x03A5, 0x0304)) - table.put(0x1FE8, intArrayOf(0x03A5, 0x0306)) - table.put(0xFA69, intArrayOf(0x97FF)) - table.put(0x1FE7, intArrayOf(0x03C5, 0x0308, 0x0342)) - table.put(0xFA68, intArrayOf(0x96E3)) - table.put(0x1FE6, intArrayOf(0x03C5, 0x0342)) - table.put(0xFA67, intArrayOf(0x9038)) - table.put(0x1FE5, intArrayOf(0x03C1, 0x0314)) - table.put(0xFA66, intArrayOf(0x8FB6)) - table.put(0x1FE4, intArrayOf(0x03C1, 0x0313)) - table.put(0xFA65, intArrayOf(0x8D08)) - table.put(0x1FE3, intArrayOf(0x03C5, 0x0308, 0x0301)) - table.put(0xFA64, intArrayOf(0x8CD3)) - table.put(0x1FE2, intArrayOf(0x03C5, 0x0308, 0x0300)) - table.put(0xFA63, intArrayOf(0x8B39)) - table.put(0x1FE1, intArrayOf(0x03C5, 0x0304)) - table.put(0xFA62, intArrayOf(0x8B01)) - table.put(0x1FE0, intArrayOf(0x03C5, 0x0306)) - table.put(0xFA61, intArrayOf(0x8996)) - table.put(0xFA60, intArrayOf(0x8910)) - table.put(0x1FDF, intArrayOf(0x1FFE, 0x0342)) - table.put(0x1FDE, intArrayOf(0x1FFE, 0x0301)) - table.put(0xFA5F, intArrayOf(0x8457)) - table.put(0x1FDD, intArrayOf(0x1FFE, 0x0300)) - table.put(0xFA5E, intArrayOf(0x8279)) - table.put(0xFA5D, intArrayOf(0x8279)) - table.put(0x1FDB, intArrayOf(0x0399, 0x0301)) - table.put(0xFA5C, intArrayOf(0x81ED)) - table.put(0x1FDA, intArrayOf(0x0399, 0x0300)) - table.put(0xFA5B, intArrayOf(0x8005)) - table.put(0xFA5A, intArrayOf(0x7F72)) - table.put(0x1FD9, intArrayOf(0x0399, 0x0304)) - table.put(0x1FD8, intArrayOf(0x0399, 0x0306)) - table.put(0xFA59, intArrayOf(0x7E41)) - table.put(0x1FD7, intArrayOf(0x03B9, 0x0308, 0x0342)) - table.put(0xFA58, intArrayOf(0x7E09)) - table.put(0x1FD6, intArrayOf(0x03B9, 0x0342)) - table.put(0xFA57, intArrayOf(0x7DF4)) - table.put(0xFA56, intArrayOf(0x7BC0)) - table.put(0xFA55, intArrayOf(0x7A81)) - table.put(0x1FD3, intArrayOf(0x03B9, 0x0308, 0x0301)) - table.put(0xFA54, intArrayOf(0x7A40)) - table.put(0x1FD2, intArrayOf(0x03B9, 0x0308, 0x0300)) - table.put(0xFA53, intArrayOf(0x798E)) - table.put(0x1FD1, intArrayOf(0x03B9, 0x0304)) - table.put(0xFA52, intArrayOf(0x798D)) - table.put(0x1FD0, intArrayOf(0x03B9, 0x0306)) - table.put(0xFA51, intArrayOf(0x795D)) - table.put(0xFA50, intArrayOf(0x7956)) - table.put(0x1FCF, intArrayOf(0x1FBF, 0x0342)) - table.put(0x1FCE, intArrayOf(0x1FBF, 0x0301)) - table.put(0xFA4F, intArrayOf(0x7950)) - table.put(0x1FCD, intArrayOf(0x1FBF, 0x0300)) - table.put(0xFA4E, intArrayOf(0x7948)) - table.put(0x1FCC, intArrayOf(0x0397, 0x0345)) - table.put(0xFA4D, intArrayOf(0x7949)) - table.put(0x1FCB, intArrayOf(0x0397, 0x0301)) - table.put(0xFA4C, intArrayOf(0x793E)) - table.put(0x1FCA, intArrayOf(0x0397, 0x0300)) - table.put(0xFA4B, intArrayOf(0x7891)) - table.put(0xFA4A, intArrayOf(0x7422)) - table.put(0x1FC9, intArrayOf(0x0395, 0x0301)) - table.put(0x1FC8, intArrayOf(0x0395, 0x0300)) - table.put(0xFA49, intArrayOf(0x722B)) - table.put(0x1FC7, intArrayOf(0x03B7, 0x0342, 0x0345)) - table.put(0xFA48, intArrayOf(0x716E)) - table.put(0x1FC6, intArrayOf(0x03B7, 0x0342)) - table.put(0xFA47, intArrayOf(0x6F22)) - table.put(0xFA46, intArrayOf(0x6E1A)) - table.put(0x1FC4, intArrayOf(0x03B7, 0x0301, 0x0345)) - table.put(0xFA45, intArrayOf(0x6D77)) - table.put(0x1FC3, intArrayOf(0x03B7, 0x0345)) - table.put(0xFA44, intArrayOf(0x6885)) - table.put(0x1FC2, intArrayOf(0x03B7, 0x0300, 0x0345)) - table.put(0xFA43, intArrayOf(0x6691)) - table.put(0x1FC1, intArrayOf(0x00A8, 0x0342)) - table.put(0xFA42, intArrayOf(0x65E2)) - table.put(0xFA41, intArrayOf(0x654F)) - table.put(0xFA40, intArrayOf(0x61F2)) - table.put(0x1FBE, intArrayOf(0x03B9)) - table.put(0xFA3F, intArrayOf(0x618E)) - table.put(0xFA3E, intArrayOf(0x6168)) - table.put(0x1FBC, intArrayOf(0x0391, 0x0345)) - table.put(0xFA3D, intArrayOf(0x6094)) - table.put(0x1FBB, intArrayOf(0x0391, 0x0301)) - table.put(0xFA3C, intArrayOf(0x5C6E)) - table.put(0x1FBA, intArrayOf(0x0391, 0x0300)) - table.put(0xFA3B, intArrayOf(0x5C64)) - table.put(0xFA3A, intArrayOf(0x58A8)) - table.put(0x1FB9, intArrayOf(0x0391, 0x0304)) - table.put(0x1FB8, intArrayOf(0x0391, 0x0306)) - table.put(0xFA39, intArrayOf(0x5840)) - table.put(0x1FB7, intArrayOf(0x03B1, 0x0342, 0x0345)) - table.put(0xFA38, intArrayOf(0x5668)) - table.put(0x1FB6, intArrayOf(0x03B1, 0x0342)) - table.put(0xFA37, intArrayOf(0x5606)) - table.put(0xFA36, intArrayOf(0x559D)) - table.put(0x1FB4, intArrayOf(0x03B1, 0x0301, 0x0345)) - table.put(0xFA35, intArrayOf(0x5351)) - table.put(0x1FB3, intArrayOf(0x03B1, 0x0345)) - table.put(0xFA34, intArrayOf(0x52E4)) - table.put(0x1FB2, intArrayOf(0x03B1, 0x0300, 0x0345)) - table.put(0xFA33, intArrayOf(0x52C9)) - table.put(0x1FB1, intArrayOf(0x03B1, 0x0304)) - table.put(0xFA32, intArrayOf(0x514D)) - table.put(0x1FB0, intArrayOf(0x03B1, 0x0306)) - table.put(0xFA31, intArrayOf(0x50E7)) - table.put(0xFA30, intArrayOf(0x4FAE)) - table.put(0x1FAF, intArrayOf(0x03A9, 0x0314, 0x0342, 0x0345)) - table.put(0x1FAE, intArrayOf(0x03A9, 0x0313, 0x0342, 0x0345)) - table.put(0x1FAD, intArrayOf(0x03A9, 0x0314, 0x0301, 0x0345)) - table.put(0x1FAC, intArrayOf(0x03A9, 0x0313, 0x0301, 0x0345)) - table.put(0xFA2D, intArrayOf(0x9DB4)) - table.put(0x1FAB, intArrayOf(0x03A9, 0x0314, 0x0300, 0x0345)) - table.put(0xFA2C, intArrayOf(0x9928)) - table.put(0x1FAA, intArrayOf(0x03A9, 0x0313, 0x0300, 0x0345)) - table.put(0xFA2B, intArrayOf(0x98FC)) - table.put(0xFA2A, intArrayOf(0x98EF)) - table.put(0x1FA9, intArrayOf(0x03A9, 0x0314, 0x0345)) - table.put(0x1FA8, intArrayOf(0x03A9, 0x0313, 0x0345)) - table.put(0x1FA7, intArrayOf(0x03C9, 0x0314, 0x0342, 0x0345)) - table.put(0x1FA6, intArrayOf(0x03C9, 0x0313, 0x0342, 0x0345)) - table.put(0x1FA5, intArrayOf(0x03C9, 0x0314, 0x0301, 0x0345)) - table.put(0xFA26, intArrayOf(0x90FD)) - table.put(0x1FA4, intArrayOf(0x03C9, 0x0313, 0x0301, 0x0345)) - table.put(0xFA25, intArrayOf(0x9038)) - table.put(0x1FA3, intArrayOf(0x03C9, 0x0314, 0x0300, 0x0345)) - table.put(0x1FA2, intArrayOf(0x03C9, 0x0313, 0x0300, 0x0345)) - table.put(0x1FA1, intArrayOf(0x03C9, 0x0314, 0x0345)) - table.put(0xFA22, intArrayOf(0x8AF8)) - table.put(0x1FA0, intArrayOf(0x03C9, 0x0313, 0x0345)) - table.put(0xFA20, intArrayOf(0x8612)) - table.put(0xFA1E, intArrayOf(0x7FBD)) - table.put(0xFA1D, intArrayOf(0x7CBE)) - table.put(0xFA1C, intArrayOf(0x9756)) - table.put(0xFA1B, intArrayOf(0x798F)) - table.put(0xFA1A, intArrayOf(0x7965)) - table.put(0xFA19, intArrayOf(0x795E)) - table.put(0xFA18, intArrayOf(0x793C)) - table.put(0xFA17, intArrayOf(0x76CA)) - table.put(0xFA16, intArrayOf(0x732A)) - table.put(0xFA15, intArrayOf(0x51DE)) - table.put(0xFA12, intArrayOf(0x6674)) - table.put(0xFA10, intArrayOf(0x585A)) - table.put(0xFA0D, intArrayOf(0x55C0)) - table.put(0xFA0C, intArrayOf(0x5140)) - table.put(0xFA0B, intArrayOf(0x5ED3)) - table.put(0xFA0A, intArrayOf(0x898B)) - table.put(0x212B, intArrayOf(0x0041, 0x030A)) - table.put(0x212A, intArrayOf(0x004B)) - table.put(0xFA09, intArrayOf(0x964D)) - table.put(0xFA08, intArrayOf(0x884C)) - table.put(0xFA07, intArrayOf(0x8F3B)) - table.put(0xFA06, intArrayOf(0x66B4)) - table.put(0xFA05, intArrayOf(0x6D1E)) - table.put(0xFA04, intArrayOf(0x5B85)) - table.put(0xFA03, intArrayOf(0x7CD6)) - table.put(0xFA02, intArrayOf(0x62D3)) - table.put(0x2126, intArrayOf(0x03A9)) - table.put(0xFA01, intArrayOf(0x5EA6)) - table.put(0xFA00, intArrayOf(0x5207)) - table.put(0x0B94, intArrayOf(0x0B92, 0x0BD7)) - table.put(0x1026, intArrayOf(0x1025, 0x102E)) - table.put(0x0B5D, intArrayOf(0x0B22, 0x0B3C)) - table.put(0x0B5C, intArrayOf(0x0B21, 0x0B3C)) - table.put(0x1F9F, intArrayOf(0x0397, 0x0314, 0x0342, 0x0345)) - table.put(0x1F9E, intArrayOf(0x0397, 0x0313, 0x0342, 0x0345)) - table.put(0x1F9D, intArrayOf(0x0397, 0x0314, 0x0301, 0x0345)) - table.put(0x1F9C, intArrayOf(0x0397, 0x0313, 0x0301, 0x0345)) - table.put(0x1F9B, intArrayOf(0x0397, 0x0314, 0x0300, 0x0345)) - table.put(0x1F9A, intArrayOf(0x0397, 0x0313, 0x0300, 0x0345)) - table.put(0x0B4C, intArrayOf(0x0B47, 0x0B57)) - table.put(0x0B4B, intArrayOf(0x0B47, 0x0B3E)) - table.put(0x1F99, intArrayOf(0x0397, 0x0314, 0x0345)) - table.put(0x1F98, intArrayOf(0x0397, 0x0313, 0x0345)) - table.put(0x1F97, intArrayOf(0x03B7, 0x0314, 0x0342, 0x0345)) - table.put(0x1F96, intArrayOf(0x03B7, 0x0313, 0x0342, 0x0345)) - table.put(0x1F95, intArrayOf(0x03B7, 0x0314, 0x0301, 0x0345)) - table.put(0x1F94, intArrayOf(0x03B7, 0x0313, 0x0301, 0x0345)) - table.put(0x1F93, intArrayOf(0x03B7, 0x0314, 0x0300, 0x0345)) - table.put(0x1F92, intArrayOf(0x03B7, 0x0313, 0x0300, 0x0345)) - table.put(0x1F91, intArrayOf(0x03B7, 0x0314, 0x0345)) - table.put(0x1F90, intArrayOf(0x03B7, 0x0313, 0x0345)) - table.put(0x0B48, intArrayOf(0x0B47, 0x0B56)) - table.put(0x1F8F, intArrayOf(0x0391, 0x0314, 0x0342, 0x0345)) - table.put(0x1F8E, intArrayOf(0x0391, 0x0313, 0x0342, 0x0345)) - table.put(0x1F8D, intArrayOf(0x0391, 0x0314, 0x0301, 0x0345)) - table.put(0x1F8C, intArrayOf(0x0391, 0x0313, 0x0301, 0x0345)) - table.put(0x1F8B, intArrayOf(0x0391, 0x0314, 0x0300, 0x0345)) - table.put(0x1F8A, intArrayOf(0x0391, 0x0313, 0x0300, 0x0345)) - table.put(0x1F89, intArrayOf(0x0391, 0x0314, 0x0345)) - table.put(0x1F88, intArrayOf(0x0391, 0x0313, 0x0345)) - table.put(0x1F87, intArrayOf(0x03B1, 0x0314, 0x0342, 0x0345)) - table.put(0x1F86, intArrayOf(0x03B1, 0x0313, 0x0342, 0x0345)) - table.put(0x1F85, intArrayOf(0x03B1, 0x0314, 0x0301, 0x0345)) - table.put(0x1F84, intArrayOf(0x03B1, 0x0313, 0x0301, 0x0345)) - table.put(0x1F83, intArrayOf(0x03B1, 0x0314, 0x0300, 0x0345)) - table.put(0x1F82, intArrayOf(0x03B1, 0x0313, 0x0300, 0x0345)) - table.put(0x1F81, intArrayOf(0x03B1, 0x0314, 0x0345)) - table.put(0x1F80, intArrayOf(0x03B1, 0x0313, 0x0345)) - table.put(0x1F7D, intArrayOf(0x03C9, 0x0301)) - table.put(0x1F7C, intArrayOf(0x03C9, 0x0300)) - table.put(0x1F7B, intArrayOf(0x03C5, 0x0301)) - table.put(0x1F7A, intArrayOf(0x03C5, 0x0300)) - table.put(0x1F79, intArrayOf(0x03BF, 0x0301)) - table.put(0x1F78, intArrayOf(0x03BF, 0x0300)) - table.put(0x1F77, intArrayOf(0x03B9, 0x0301)) - table.put(0x1F76, intArrayOf(0x03B9, 0x0300)) - table.put(0x1F75, intArrayOf(0x03B7, 0x0301)) - table.put(0x0233, intArrayOf(0x0079, 0x0304)) - table.put(0x1F74, intArrayOf(0x03B7, 0x0300)) - table.put(0x0232, intArrayOf(0x0059, 0x0304)) - table.put(0x1F73, intArrayOf(0x03B5, 0x0301)) - table.put(0x0231, intArrayOf(0x006F, 0x0307, 0x0304)) - table.put(0x1F72, intArrayOf(0x03B5, 0x0300)) - table.put(0x0230, intArrayOf(0x004F, 0x0307, 0x0304)) - table.put(0x1F71, intArrayOf(0x03B1, 0x0301)) - table.put(0x1F70, intArrayOf(0x03B1, 0x0300)) - table.put(0x022F, intArrayOf(0x006F, 0x0307)) - table.put(0x022E, intArrayOf(0x004F, 0x0307)) - table.put(0x1F6F, intArrayOf(0x03A9, 0x0314, 0x0342)) - table.put(0x022D, intArrayOf(0x006F, 0x0303, 0x0304)) - table.put(0x1F6E, intArrayOf(0x03A9, 0x0313, 0x0342)) - table.put(0x022C, intArrayOf(0x004F, 0x0303, 0x0304)) - table.put(0x1F6D, intArrayOf(0x03A9, 0x0314, 0x0301)) - table.put(0x022B, intArrayOf(0x006F, 0x0308, 0x0304)) - table.put(0x1F6C, intArrayOf(0x03A9, 0x0313, 0x0301)) - table.put(0x022A, intArrayOf(0x004F, 0x0308, 0x0304)) - table.put(0x1F6B, intArrayOf(0x03A9, 0x0314, 0x0300)) - table.put(0x1F6A, intArrayOf(0x03A9, 0x0313, 0x0300)) - table.put(0x0229, intArrayOf(0x0065, 0x0327)) - table.put(0x0228, intArrayOf(0x0045, 0x0327)) - table.put(0x1F69, intArrayOf(0x03A9, 0x0314)) - table.put(0x0227, intArrayOf(0x0061, 0x0307)) - table.put(0x1F68, intArrayOf(0x03A9, 0x0313)) - table.put(0x0226, intArrayOf(0x0041, 0x0307)) - table.put(0x1F67, intArrayOf(0x03C9, 0x0314, 0x0342)) - table.put(0x1F66, intArrayOf(0x03C9, 0x0313, 0x0342)) - table.put(0x1F65, intArrayOf(0x03C9, 0x0314, 0x0301)) - table.put(0x1F64, intArrayOf(0x03C9, 0x0313, 0x0301)) - table.put(0x1F63, intArrayOf(0x03C9, 0x0314, 0x0300)) - table.put(0x1F62, intArrayOf(0x03C9, 0x0313, 0x0300)) - table.put(0x1F61, intArrayOf(0x03C9, 0x0314)) - table.put(0x1F60, intArrayOf(0x03C9, 0x0313)) - table.put(0x021F, intArrayOf(0x0068, 0x030C)) - table.put(0x021E, intArrayOf(0x0048, 0x030C)) - table.put(0x1F5F, intArrayOf(0x03A5, 0x0314, 0x0342)) - table.put(0x1F5D, intArrayOf(0x03A5, 0x0314, 0x0301)) - table.put(0x021B, intArrayOf(0x0074, 0x0326)) - table.put(0x021A, intArrayOf(0x0054, 0x0326)) - table.put(0x1F5B, intArrayOf(0x03A5, 0x0314, 0x0300)) - table.put(0x0219, intArrayOf(0x0073, 0x0326)) - table.put(0x0218, intArrayOf(0x0053, 0x0326)) - table.put(0x1F59, intArrayOf(0x03A5, 0x0314)) - table.put(0x0217, intArrayOf(0x0075, 0x0311)) - table.put(0x0216, intArrayOf(0x0055, 0x0311)) - table.put(0x1F57, intArrayOf(0x03C5, 0x0314, 0x0342)) - table.put(0x0215, intArrayOf(0x0075, 0x030F)) - table.put(0x1F56, intArrayOf(0x03C5, 0x0313, 0x0342)) - table.put(0x0214, intArrayOf(0x0055, 0x030F)) - table.put(0x1F55, intArrayOf(0x03C5, 0x0314, 0x0301)) - table.put(0x0213, intArrayOf(0x0072, 0x0311)) - table.put(0x1F54, intArrayOf(0x03C5, 0x0313, 0x0301)) - table.put(0x0212, intArrayOf(0x0052, 0x0311)) - table.put(0x1F53, intArrayOf(0x03C5, 0x0314, 0x0300)) - table.put(0x0211, intArrayOf(0x0072, 0x030F)) - table.put(0x1F52, intArrayOf(0x03C5, 0x0313, 0x0300)) - table.put(0x0210, intArrayOf(0x0052, 0x030F)) - table.put(0x1F51, intArrayOf(0x03C5, 0x0314)) - table.put(0x1F50, intArrayOf(0x03C5, 0x0313)) - table.put(0x020F, intArrayOf(0x006F, 0x0311)) - table.put(0x020E, intArrayOf(0x004F, 0x0311)) - table.put(0x020D, intArrayOf(0x006F, 0x030F)) - table.put(0x020C, intArrayOf(0x004F, 0x030F)) - table.put(0x1F4D, intArrayOf(0x039F, 0x0314, 0x0301)) - table.put(0x020B, intArrayOf(0x0069, 0x0311)) - table.put(0x1F4C, intArrayOf(0x039F, 0x0313, 0x0301)) - table.put(0x020A, intArrayOf(0x0049, 0x0311)) - table.put(0x1F4B, intArrayOf(0x039F, 0x0314, 0x0300)) - table.put(0x1F4A, intArrayOf(0x039F, 0x0313, 0x0300)) - table.put(0x0209, intArrayOf(0x0069, 0x030F)) - table.put(0x0208, intArrayOf(0x0049, 0x030F)) - table.put(0x1F49, intArrayOf(0x039F, 0x0314)) - table.put(0x0207, intArrayOf(0x0065, 0x0311)) - table.put(0x1F48, intArrayOf(0x039F, 0x0313)) - table.put(0x0206, intArrayOf(0x0045, 0x0311)) - table.put(0x0205, intArrayOf(0x0065, 0x030F)) - table.put(0x0204, intArrayOf(0x0045, 0x030F)) - table.put(0x1F45, intArrayOf(0x03BF, 0x0314, 0x0301)) - table.put(0x0203, intArrayOf(0x0061, 0x0311)) - table.put(0x1F44, intArrayOf(0x03BF, 0x0313, 0x0301)) - table.put(0x0202, intArrayOf(0x0041, 0x0311)) - table.put(0x1F43, intArrayOf(0x03BF, 0x0314, 0x0300)) - table.put(0x0201, intArrayOf(0x0061, 0x030F)) - table.put(0x1F42, intArrayOf(0x03BF, 0x0313, 0x0300)) - table.put(0x0200, intArrayOf(0x0041, 0x030F)) - table.put(0x1F41, intArrayOf(0x03BF, 0x0314)) - table.put(0x1F40, intArrayOf(0x03BF, 0x0313)) - table.put(0x2F9FF, intArrayOf(0x980B)) - table.put(0x2F9FE, intArrayOf(0x980B)) - table.put(0x1F3F, intArrayOf(0x0399, 0x0314, 0x0342)) - table.put(0x2F9FD, intArrayOf(0x29496)) - table.put(0x1F3E, intArrayOf(0x0399, 0x0313, 0x0342)) - table.put(0x2F9FC, intArrayOf(0x4AB2)) - table.put(0x1F3D, intArrayOf(0x0399, 0x0314, 0x0301)) - table.put(0x2F9FB, intArrayOf(0x2940A)) - table.put(0x1F3C, intArrayOf(0x0399, 0x0313, 0x0301)) - table.put(0x2F9FA, intArrayOf(0x97E0)) - table.put(0x1F3B, intArrayOf(0x0399, 0x0314, 0x0300)) - table.put(0x1F3A, intArrayOf(0x0399, 0x0313, 0x0300)) - table.put(0x2F9F9, intArrayOf(0x4A76)) - table.put(0x2F9F8, intArrayOf(0x4A6E)) - table.put(0x1F39, intArrayOf(0x0399, 0x0314)) - table.put(0x2F9F7, intArrayOf(0x2921A)) - table.put(0x1F38, intArrayOf(0x0399, 0x0313)) - table.put(0x2F9F6, intArrayOf(0x29145)) - table.put(0x1F37, intArrayOf(0x03B9, 0x0314, 0x0342)) - table.put(0x2F9F5, intArrayOf(0x9723)) - table.put(0x1F36, intArrayOf(0x03B9, 0x0313, 0x0342)) - table.put(0x2F9F4, intArrayOf(0x5DB2)) - table.put(0x1F35, intArrayOf(0x03B9, 0x0314, 0x0301)) - table.put(0x2F9F3, intArrayOf(0x96C3)) - table.put(0x1F34, intArrayOf(0x03B9, 0x0313, 0x0301)) - table.put(0x2F9F2, intArrayOf(0x49E6)) - table.put(0x1F33, intArrayOf(0x03B9, 0x0314, 0x0300)) - table.put(0x2F9F1, intArrayOf(0x28D77)) - table.put(0x1F32, intArrayOf(0x03B9, 0x0313, 0x0300)) - table.put(0x2F9F0, intArrayOf(0x95B7)) - table.put(0x1F31, intArrayOf(0x03B9, 0x0314)) - table.put(0x1F30, intArrayOf(0x03B9, 0x0313)) - table.put(0x2F9EF, intArrayOf(0x4995)) - table.put(0x2F9EE, intArrayOf(0x958B)) - table.put(0x1F2F, intArrayOf(0x0397, 0x0314, 0x0342)) - table.put(0x2F9ED, intArrayOf(0x28BFA)) - table.put(0x1F2E, intArrayOf(0x0397, 0x0313, 0x0342)) - table.put(0x2F9EC, intArrayOf(0x9415)) - table.put(0x1F2D, intArrayOf(0x0397, 0x0314, 0x0301)) - table.put(0x2F9EB, intArrayOf(0x93F9)) - table.put(0x1F2C, intArrayOf(0x0397, 0x0313, 0x0301)) - table.put(0x2F9EA, intArrayOf(0x927C)) - table.put(0x1F2B, intArrayOf(0x0397, 0x0314, 0x0300)) - table.put(0x1F2A, intArrayOf(0x0397, 0x0313, 0x0300)) - table.put(0x2F9E9, intArrayOf(0x92D8)) - table.put(0x2F9E8, intArrayOf(0x92D7)) - table.put(0x1F29, intArrayOf(0x0397, 0x0314)) - table.put(0x2F9E7, intArrayOf(0x9238)) - table.put(0x1F28, intArrayOf(0x0397, 0x0313)) - table.put(0x2F9E6, intArrayOf(0x911B)) - table.put(0x1F27, intArrayOf(0x03B7, 0x0314, 0x0342)) - table.put(0x2F9E5, intArrayOf(0x2872E)) - table.put(0x1F26, intArrayOf(0x03B7, 0x0313, 0x0342)) - table.put(0x2F9E4, intArrayOf(0x9111)) - table.put(0x1F25, intArrayOf(0x03B7, 0x0314, 0x0301)) - table.put(0x2F9E3, intArrayOf(0x90F1)) - table.put(0x1F24, intArrayOf(0x03B7, 0x0313, 0x0301)) - table.put(0x2F9E2, intArrayOf(0x9094)) - table.put(0x1F23, intArrayOf(0x03B7, 0x0314, 0x0300)) - table.put(0x2F9E1, intArrayOf(0x285ED)) - table.put(0x1F22, intArrayOf(0x03B7, 0x0313, 0x0300)) - table.put(0x2F9E0, intArrayOf(0x285D2)) - table.put(0x1F21, intArrayOf(0x03B7, 0x0314)) - table.put(0x1F20, intArrayOf(0x03B7, 0x0313)) - table.put(0x2F9DF, intArrayOf(0x8F38)) - table.put(0x2F9DE, intArrayOf(0x8ED4)) - table.put(0x2F9DD, intArrayOf(0x208DE)) - table.put(0x2F9DC, intArrayOf(0x8DF0)) - table.put(0x1F1D, intArrayOf(0x0395, 0x0314, 0x0301)) - table.put(0x2F9DB, intArrayOf(0x8DBC)) - table.put(0x1F1C, intArrayOf(0x0395, 0x0313, 0x0301)) - table.put(0x2F9DA, intArrayOf(0x8DCB)) - table.put(0x1F1B, intArrayOf(0x0395, 0x0314, 0x0300)) - table.put(0x1F1A, intArrayOf(0x0395, 0x0313, 0x0300)) - table.put(0x2F9D9, intArrayOf(0x20804)) - table.put(0x2F9D8, intArrayOf(0x27F2F)) - table.put(0x1F19, intArrayOf(0x0395, 0x0314)) - table.put(0x2F9D7, intArrayOf(0x8D77)) - table.put(0x1F18, intArrayOf(0x0395, 0x0313)) - table.put(0x2F9D6, intArrayOf(0x8D1B)) - table.put(0x2F9D5, intArrayOf(0x8CC1)) - table.put(0x2F9D4, intArrayOf(0x8CAB)) - table.put(0x1F15, intArrayOf(0x03B5, 0x0314, 0x0301)) - table.put(0x2F9D3, intArrayOf(0x27CA8)) - table.put(0x1F14, intArrayOf(0x03B5, 0x0313, 0x0301)) - table.put(0x2F9D2, intArrayOf(0x8C55)) - table.put(0x1F13, intArrayOf(0x03B5, 0x0314, 0x0300)) - table.put(0x2F9D1, intArrayOf(0x8B8A)) - table.put(0x1F12, intArrayOf(0x03B5, 0x0313, 0x0300)) - table.put(0x2F9D0, intArrayOf(0x8AED)) - table.put(0x1F11, intArrayOf(0x03B5, 0x0314)) - table.put(0x1F10, intArrayOf(0x03B5, 0x0313)) - table.put(0x2F9CF, intArrayOf(0x8AA0)) - table.put(0x2F9CE, intArrayOf(0x46C7)) - table.put(0x1F0F, intArrayOf(0x0391, 0x0314, 0x0342)) - table.put(0x2F9CD, intArrayOf(0x46BE)) - table.put(0x1F0E, intArrayOf(0x0391, 0x0313, 0x0342)) - table.put(0x2F9CC, intArrayOf(0x27966)) - table.put(0x1F0D, intArrayOf(0x0391, 0x0314, 0x0301)) - table.put(0x2F9CB, intArrayOf(0x278AE)) - table.put(0x1F0C, intArrayOf(0x0391, 0x0313, 0x0301)) - table.put(0x2F9CA, intArrayOf(0x34BB)) - table.put(0x1F0B, intArrayOf(0x0391, 0x0314, 0x0300)) - table.put(0x1F0A, intArrayOf(0x0391, 0x0313, 0x0300)) - table.put(0x2F9C9, intArrayOf(0x88FA)) - table.put(0x2F9C8, intArrayOf(0x4635)) - table.put(0x1F09, intArrayOf(0x0391, 0x0314)) - table.put(0x2F9C7, intArrayOf(0x88DE)) - table.put(0x1F08, intArrayOf(0x0391, 0x0313)) - table.put(0x2F9C6, intArrayOf(0x88D7)) - table.put(0x1F07, intArrayOf(0x03B1, 0x0314, 0x0342)) - table.put(0x2F9C5, intArrayOf(0x27667)) - table.put(0x1F06, intArrayOf(0x03B1, 0x0313, 0x0342)) - table.put(0x2F9C4, intArrayOf(0x8863)) - table.put(0x1F05, intArrayOf(0x03B1, 0x0314, 0x0301)) - table.put(0x2F9C3, intArrayOf(0x8860)) - table.put(0x1F04, intArrayOf(0x03B1, 0x0313, 0x0301)) - table.put(0x2F9C2, intArrayOf(0x45F9)) - table.put(0x1F03, intArrayOf(0x03B1, 0x0314, 0x0300)) - table.put(0x2F9C1, intArrayOf(0x8801)) - table.put(0x1F02, intArrayOf(0x03B1, 0x0313, 0x0300)) - table.put(0x2F9C0, intArrayOf(0x87E1)) - table.put(0x1F01, intArrayOf(0x03B1, 0x0314)) - table.put(0x1F00, intArrayOf(0x03B1, 0x0313)) - table.put(0x2F9BF, intArrayOf(0x45D7)) - table.put(0x2F9BE, intArrayOf(0x8786)) - table.put(0x2F9BD, intArrayOf(0x876B)) - table.put(0x2F9BC, intArrayOf(0x8728)) - table.put(0x2F9BB, intArrayOf(0x8779)) - table.put(0x2F9BA, intArrayOf(0x86E2)) - table.put(0x2F9B9, intArrayOf(0x870E)) - table.put(0x2F9B8, intArrayOf(0x8688)) - table.put(0x2F9B7, intArrayOf(0x86A9)) - table.put(0x2F9B6, intArrayOf(0x8669)) - table.put(0x2F9B5, intArrayOf(0x8667)) - table.put(0x2F9B4, intArrayOf(0x865C)) - table.put(0x2F9B3, intArrayOf(0x8650)) - table.put(0x2F9B2, intArrayOf(0x456B)) - table.put(0x2F9B1, intArrayOf(0x270D2)) - table.put(0x2F9B0, intArrayOf(0x26FB1)) - table.put(0x2F9AF, intArrayOf(0x4561)) - table.put(0x2F9AE, intArrayOf(0x455D)) - table.put(0x2F9AD, intArrayOf(0x26F2C)) - table.put(0x2F9AC, intArrayOf(0x8564)) - table.put(0x2F9AB, intArrayOf(0x273CA)) - table.put(0x2F9AA, intArrayOf(0x8516)) - table.put(0x2F9A9, intArrayOf(0x84F3)) - table.put(0x2F9A8, intArrayOf(0x84F1)) - table.put(0x2F9A7, intArrayOf(0x452B)) - table.put(0x2F9A6, intArrayOf(0x26CD5)) - table.put(0x2F9A5, intArrayOf(0x26D6B)) - table.put(0x2F9A4, intArrayOf(0x26C36)) - table.put(0x2F9A3, intArrayOf(0x83DC)) - table.put(0x2F9A2, intArrayOf(0x83CC)) - table.put(0x2F9A1, intArrayOf(0x83CA)) - table.put(0x2F9A0, intArrayOf(0x8353)) - table.put(0x01FF, intArrayOf(0x00F8, 0x0301)) - table.put(0x01FE, intArrayOf(0x00D8, 0x0301)) - table.put(0x01FD, intArrayOf(0x00E6, 0x0301)) - table.put(0x01FC, intArrayOf(0x00C6, 0x0301)) - table.put(0x01FB, intArrayOf(0x0061, 0x030A, 0x0301)) - table.put(0x01FA, intArrayOf(0x0041, 0x030A, 0x0301)) - table.put(0x01F9, intArrayOf(0x006E, 0x0300)) - table.put(0x01F8, intArrayOf(0x004E, 0x0300)) - table.put(0x01F5, intArrayOf(0x0067, 0x0301)) - table.put(0x01F4, intArrayOf(0x0047, 0x0301)) - table.put(0x01F0, intArrayOf(0x006A, 0x030C)) - table.put(0x01EF, intArrayOf(0x0292, 0x030C)) - table.put(0x01EE, intArrayOf(0x01B7, 0x030C)) - table.put(0x01ED, intArrayOf(0x006F, 0x0328, 0x0304)) - table.put(0x01EC, intArrayOf(0x004F, 0x0328, 0x0304)) - table.put(0x01EB, intArrayOf(0x006F, 0x0328)) - table.put(0x01EA, intArrayOf(0x004F, 0x0328)) - table.put(0x01E9, intArrayOf(0x006B, 0x030C)) - table.put(0x01E8, intArrayOf(0x004B, 0x030C)) - table.put(0x01E7, intArrayOf(0x0067, 0x030C)) - table.put(0x01E6, intArrayOf(0x0047, 0x030C)) - table.put(0x01E3, intArrayOf(0x00E6, 0x0304)) - table.put(0x01E2, intArrayOf(0x00C6, 0x0304)) - table.put(0x01E1, intArrayOf(0x0061, 0x0307, 0x0304)) - table.put(0x01E0, intArrayOf(0x0041, 0x0307, 0x0304)) - table.put(0x01DF, intArrayOf(0x0061, 0x0308, 0x0304)) - table.put(0x01DE, intArrayOf(0x0041, 0x0308, 0x0304)) - table.put(0x01DC, intArrayOf(0x0075, 0x0308, 0x0300)) - table.put(0x01DB, intArrayOf(0x0055, 0x0308, 0x0300)) - table.put(0x01DA, intArrayOf(0x0075, 0x0308, 0x030C)) - table.put(0x01D9, intArrayOf(0x0055, 0x0308, 0x030C)) - table.put(0x01D8, intArrayOf(0x0075, 0x0308, 0x0301)) - table.put(0x01D7, intArrayOf(0x0055, 0x0308, 0x0301)) - table.put(0x01D6, intArrayOf(0x0075, 0x0308, 0x0304)) - table.put(0x01D5, intArrayOf(0x0055, 0x0308, 0x0304)) - table.put(0x01D4, intArrayOf(0x0075, 0x030C)) - table.put(0x01D3, intArrayOf(0x0055, 0x030C)) - table.put(0x01D2, intArrayOf(0x006F, 0x030C)) - table.put(0x01D1, intArrayOf(0x004F, 0x030C)) - table.put(0x01D0, intArrayOf(0x0069, 0x030C)) - table.put(0x01CF, intArrayOf(0x0049, 0x030C)) - table.put(0x01CE, intArrayOf(0x0061, 0x030C)) - table.put(0x01CD, intArrayOf(0x0041, 0x030C)) - table.put(0x1EF9, intArrayOf(0x0079, 0x0303)) - table.put(0x1EF8, intArrayOf(0x0059, 0x0303)) - table.put(0x1EF7, intArrayOf(0x0079, 0x0309)) - table.put(0x1EF6, intArrayOf(0x0059, 0x0309)) - table.put(0x1EF5, intArrayOf(0x0079, 0x0323)) - table.put(0x1EF4, intArrayOf(0x0059, 0x0323)) - table.put(0x1EF3, intArrayOf(0x0079, 0x0300)) - table.put(0x1EF2, intArrayOf(0x0059, 0x0300)) - table.put(0x01B0, intArrayOf(0x0075, 0x031B)) - table.put(0x1EF1, intArrayOf(0x0075, 0x031B, 0x0323)) - table.put(0x1EF0, intArrayOf(0x0055, 0x031B, 0x0323)) - table.put(0x2F99F, intArrayOf(0x8457)) - table.put(0x01AF, intArrayOf(0x0055, 0x031B)) - table.put(0x2F99E, intArrayOf(0x83E7)) - table.put(0x1EEF, intArrayOf(0x0075, 0x031B, 0x0303)) - table.put(0x2F99D, intArrayOf(0x83BD)) - table.put(0x1EEE, intArrayOf(0x0055, 0x031B, 0x0303)) - table.put(0x2F99C, intArrayOf(0x8323)) - table.put(0x1EED, intArrayOf(0x0075, 0x031B, 0x0309)) - table.put(0x2F99B, intArrayOf(0x83AD)) - table.put(0x1EEC, intArrayOf(0x0055, 0x031B, 0x0309)) - table.put(0x2F99A, intArrayOf(0x8363)) - table.put(0x1EEB, intArrayOf(0x0075, 0x031B, 0x0300)) - table.put(0x1EEA, intArrayOf(0x0055, 0x031B, 0x0300)) - table.put(0x2F999, intArrayOf(0x831D)) - table.put(0x2F998, intArrayOf(0x82E5)) - table.put(0x1EE9, intArrayOf(0x0075, 0x031B, 0x0301)) - table.put(0x2F997, intArrayOf(0x26B3C)) - table.put(0x1EE8, intArrayOf(0x0055, 0x031B, 0x0301)) - table.put(0x2F996, intArrayOf(0x82E6)) - table.put(0x1EE7, intArrayOf(0x0075, 0x0309)) - table.put(0x2F995, intArrayOf(0x82BD)) - table.put(0x1EE6, intArrayOf(0x0055, 0x0309)) - table.put(0x2F994, intArrayOf(0x82B3)) - table.put(0x1EE5, intArrayOf(0x0075, 0x0323)) - table.put(0x2F993, intArrayOf(0x82B1)) - table.put(0x1EE4, intArrayOf(0x0055, 0x0323)) - table.put(0x2F992, intArrayOf(0x52B3)) - table.put(0x1EE3, intArrayOf(0x006F, 0x031B, 0x0323)) - table.put(0x2F991, intArrayOf(0x829D)) - table.put(0x01A1, intArrayOf(0x006F, 0x031B)) - table.put(0x1EE2, intArrayOf(0x004F, 0x031B, 0x0323)) - table.put(0x2F990, intArrayOf(0x828B)) - table.put(0x01A0, intArrayOf(0x004F, 0x031B)) - table.put(0x1EE1, intArrayOf(0x006F, 0x031B, 0x0303)) - table.put(0x1EE0, intArrayOf(0x004F, 0x031B, 0x0303)) - table.put(0x2F98F, intArrayOf(0x8291)) - table.put(0x2F98E, intArrayOf(0x446B)) - table.put(0x1EDF, intArrayOf(0x006F, 0x031B, 0x0309)) - table.put(0x2F98D, intArrayOf(0x8F9E)) - table.put(0x1EDE, intArrayOf(0x004F, 0x031B, 0x0309)) - table.put(0x2F98C, intArrayOf(0x8204)) - table.put(0x1EDD, intArrayOf(0x006F, 0x031B, 0x0300)) - table.put(0x2F98B, intArrayOf(0x8201)) - table.put(0x1EDC, intArrayOf(0x004F, 0x031B, 0x0300)) - table.put(0x2F98A, intArrayOf(0x2339C)) - table.put(0x1EDB, intArrayOf(0x006F, 0x031B, 0x0301)) - table.put(0x1EDA, intArrayOf(0x004F, 0x031B, 0x0301)) - table.put(0x2F989, intArrayOf(0x23393)) - table.put(0x2F988, intArrayOf(0x267B5)) - table.put(0x1ED9, intArrayOf(0x006F, 0x0323, 0x0302)) - table.put(0x2F987, intArrayOf(0x267A7)) - table.put(0x04F9, intArrayOf(0x044B, 0x0308)) - table.put(0x1ED8, intArrayOf(0x004F, 0x0323, 0x0302)) - table.put(0x2F986, intArrayOf(0x5AB5)) - table.put(0x04F8, intArrayOf(0x042B, 0x0308)) - table.put(0x1ED7, intArrayOf(0x006F, 0x0302, 0x0303)) - table.put(0x2F985, intArrayOf(0x813E)) - table.put(0x1ED6, intArrayOf(0x004F, 0x0302, 0x0303)) - table.put(0x2F984, intArrayOf(0x440B)) - table.put(0x1ED5, intArrayOf(0x006F, 0x0302, 0x0309)) - table.put(0x2F983, intArrayOf(0x8103)) - table.put(0x04F5, intArrayOf(0x0447, 0x0308)) - table.put(0x1ED4, intArrayOf(0x004F, 0x0302, 0x0309)) - table.put(0x2F982, intArrayOf(0x80B2)) - table.put(0x04F4, intArrayOf(0x0427, 0x0308)) - table.put(0x1ED3, intArrayOf(0x006F, 0x0302, 0x0300)) - table.put(0x2F981, intArrayOf(0x43D5)) - table.put(0x04F3, intArrayOf(0x0443, 0x030B)) - table.put(0x1ED2, intArrayOf(0x004F, 0x0302, 0x0300)) - table.put(0x2F980, intArrayOf(0x2335F)) - table.put(0x04F2, intArrayOf(0x0423, 0x030B)) - table.put(0x1ED1, intArrayOf(0x006F, 0x0302, 0x0301)) - table.put(0x04F1, intArrayOf(0x0443, 0x0308)) - table.put(0x1ED0, intArrayOf(0x004F, 0x0302, 0x0301)) - table.put(0x04F0, intArrayOf(0x0423, 0x0308)) - table.put(0x2F97F, intArrayOf(0x8070)) - table.put(0x2F97E, intArrayOf(0x265A8)) - table.put(0x1ECF, intArrayOf(0x006F, 0x0309)) - table.put(0x2F97D, intArrayOf(0x8060)) - table.put(0x04EF, intArrayOf(0x0443, 0x0304)) - table.put(0x1ECE, intArrayOf(0x004F, 0x0309)) - table.put(0x2F97C, intArrayOf(0x26523)) - table.put(0x04EE, intArrayOf(0x0423, 0x0304)) - table.put(0x1ECD, intArrayOf(0x006F, 0x0323)) - table.put(0x2F97B, intArrayOf(0x264DA)) - table.put(0x04ED, intArrayOf(0x044D, 0x0308)) - table.put(0x1ECC, intArrayOf(0x004F, 0x0323)) - table.put(0x2F97A, intArrayOf(0x8005)) - table.put(0x04EC, intArrayOf(0x042D, 0x0308)) - table.put(0x1ECB, intArrayOf(0x0069, 0x0323)) - table.put(0x04EB, intArrayOf(0x04E9, 0x0308)) - table.put(0x1ECA, intArrayOf(0x0049, 0x0323)) - table.put(0x04EA, intArrayOf(0x04E8, 0x0308)) - table.put(0x2F979, intArrayOf(0x7FFA)) - table.put(0x0DDE, intArrayOf(0x0DD9, 0x0DDF)) - table.put(0x2F978, intArrayOf(0x7F95)) - table.put(0x0DDD, intArrayOf(0x0DD9, 0x0DCF, 0x0DCA)) - table.put(0x1EC9, intArrayOf(0x0069, 0x0309)) - table.put(0x2F977, intArrayOf(0x2633E)) - table.put(0x0DDC, intArrayOf(0x0DD9, 0x0DCF)) - table.put(0x1EC8, intArrayOf(0x0049, 0x0309)) - table.put(0x2F976, intArrayOf(0x7F7A)) - table.put(0x1EC7, intArrayOf(0x0065, 0x0323, 0x0302)) - table.put(0x2F975, intArrayOf(0x262D9)) - table.put(0x04E7, intArrayOf(0x043E, 0x0308)) - table.put(0x0DDA, intArrayOf(0x0DD9, 0x0DCA)) - table.put(0x1EC6, intArrayOf(0x0045, 0x0323, 0x0302)) - table.put(0x2F974, intArrayOf(0x4359)) - table.put(0x04E6, intArrayOf(0x041E, 0x0308)) - table.put(0x1EC5, intArrayOf(0x0065, 0x0302, 0x0303)) - table.put(0x2F973, intArrayOf(0x26247)) - table.put(0x04E5, intArrayOf(0x0438, 0x0308)) - table.put(0x1EC4, intArrayOf(0x0045, 0x0302, 0x0303)) - table.put(0x2F972, intArrayOf(0x26228)) - table.put(0x04E4, intArrayOf(0x0418, 0x0308)) - table.put(0x1EC3, intArrayOf(0x0065, 0x0302, 0x0309)) - table.put(0x2F971, intArrayOf(0x4334)) - table.put(0x04E3, intArrayOf(0x0438, 0x0304)) - table.put(0x1EC2, intArrayOf(0x0045, 0x0302, 0x0309)) - table.put(0x2F970, intArrayOf(0x7E45)) - table.put(0x04E2, intArrayOf(0x0418, 0x0304)) - table.put(0x1EC1, intArrayOf(0x0065, 0x0302, 0x0300)) - table.put(0x1EC0, intArrayOf(0x0045, 0x0302, 0x0300)) - table.put(0xF9FF, intArrayOf(0x523A)) - table.put(0xF9FE, intArrayOf(0x8336)) - table.put(0x2F96F, intArrayOf(0x7E02)) - table.put(0xF9FD, intArrayOf(0x4EC0)) - table.put(0x2F96E, intArrayOf(0x7DC7)) - table.put(0x1EBF, intArrayOf(0x0065, 0x0302, 0x0301)) - table.put(0xF9FC, intArrayOf(0x8B58)) - table.put(0x2F96D, intArrayOf(0x4301)) - table.put(0x04DF, intArrayOf(0x0437, 0x0308)) - table.put(0x1EBE, intArrayOf(0x0045, 0x0302, 0x0301)) - table.put(0xF9FB, intArrayOf(0x7099)) - table.put(0x2F96C, intArrayOf(0x7D63)) - table.put(0x04DE, intArrayOf(0x0417, 0x0308)) - table.put(0x1EBD, intArrayOf(0x0065, 0x0303)) - table.put(0xF9FA, intArrayOf(0x72C0)) - table.put(0x2F96B, intArrayOf(0x25F86)) - table.put(0x04DD, intArrayOf(0x0436, 0x0308)) - table.put(0x1EBC, intArrayOf(0x0045, 0x0303)) - table.put(0x2F96A, intArrayOf(0x7D00)) - table.put(0x04DC, intArrayOf(0x0416, 0x0308)) - table.put(0x1EBB, intArrayOf(0x0065, 0x0309)) - table.put(0x04DB, intArrayOf(0x04D9, 0x0308)) - table.put(0x1EBA, intArrayOf(0x0045, 0x0309)) - table.put(0x04DA, intArrayOf(0x04D8, 0x0308)) - table.put(0xF9F9, intArrayOf(0x7C92)) - table.put(0xF9F8, intArrayOf(0x7B20)) - table.put(0x2F969, intArrayOf(0x7CE3)) - table.put(0xF9F7, intArrayOf(0x7ACB)) - table.put(0x2F968, intArrayOf(0x7CE8)) - table.put(0x1EB9, intArrayOf(0x0065, 0x0323)) - table.put(0xF9F6, intArrayOf(0x81E8)) - table.put(0x2F967, intArrayOf(0x42A0)) - table.put(0x1EB8, intArrayOf(0x0045, 0x0323)) - table.put(0xF9F5, intArrayOf(0x6DCB)) - table.put(0x2F966, intArrayOf(0x7CD2)) - table.put(0x1EB7, intArrayOf(0x0061, 0x0323, 0x0306)) - table.put(0xF9F4, intArrayOf(0x6797)) - table.put(0x2F965, intArrayOf(0x25C80)) - table.put(0x04D7, intArrayOf(0x0435, 0x0306)) - table.put(0x1EB6, intArrayOf(0x0041, 0x0323, 0x0306)) - table.put(0xF9F3, intArrayOf(0x9E9F)) - table.put(0x2F964, intArrayOf(0x4227)) - table.put(0x04D6, intArrayOf(0x0415, 0x0306)) - table.put(0x1EB5, intArrayOf(0x0061, 0x0306, 0x0303)) - table.put(0xF9F2, intArrayOf(0x9C57)) - table.put(0x2F963, intArrayOf(0x7BC9)) - table.put(0x1EB4, intArrayOf(0x0041, 0x0306, 0x0303)) - table.put(0xF9F1, intArrayOf(0x96A3)) - table.put(0x2F962, intArrayOf(0x7BC6)) - table.put(0x1EB3, intArrayOf(0x0061, 0x0306, 0x0309)) - table.put(0xF9F0, intArrayOf(0x85FA)) - table.put(0x2F961, intArrayOf(0x25BAB)) - table.put(0x04D3, intArrayOf(0x0430, 0x0308)) - table.put(0x1EB2, intArrayOf(0x0041, 0x0306, 0x0309)) - table.put(0x2F960, intArrayOf(0x4202)) - table.put(0x04D2, intArrayOf(0x0410, 0x0308)) - table.put(0x1EB1, intArrayOf(0x0061, 0x0306, 0x0300)) - table.put(0x04D1, intArrayOf(0x0430, 0x0306)) - table.put(0x1EB0, intArrayOf(0x0041, 0x0306, 0x0300)) - table.put(0x04D0, intArrayOf(0x0410, 0x0306)) - table.put(0xF9EF, intArrayOf(0x7498)) - table.put(0xF9EE, intArrayOf(0x71D0)) - table.put(0x2F95F, intArrayOf(0x7AEE)) - table.put(0xF9ED, intArrayOf(0x541D)) - table.put(0x2F95E, intArrayOf(0x25AA7)) - table.put(0x1EAF, intArrayOf(0x0061, 0x0306, 0x0301)) - table.put(0xF9EC, intArrayOf(0x6EBA)) - table.put(0x2F95D, intArrayOf(0x25AA7)) - table.put(0x1EAE, intArrayOf(0x0041, 0x0306, 0x0301)) - table.put(0xF9EB, intArrayOf(0x533F)) - table.put(0x2F95C, intArrayOf(0x2597C)) - table.put(0x1EAD, intArrayOf(0x0061, 0x0323, 0x0302)) - table.put(0xF9EA, intArrayOf(0x96E2)) - table.put(0x2F95B, intArrayOf(0x7A4F)) - table.put(0x1EAC, intArrayOf(0x0041, 0x0323, 0x0302)) - table.put(0x2F95A, intArrayOf(0x7A4A)) - table.put(0x1EAB, intArrayOf(0x0061, 0x0302, 0x0303)) - table.put(0x1EAA, intArrayOf(0x0041, 0x0302, 0x0303)) - table.put(0xF9E9, intArrayOf(0x91CC)) - table.put(0xF9E8, intArrayOf(0x88E1)) - table.put(0x2F959, intArrayOf(0x7A40)) - table.put(0xF9E7, intArrayOf(0x88CF)) - table.put(0x2F958, intArrayOf(0x412F)) - table.put(0x1EA9, intArrayOf(0x0061, 0x0302, 0x0309)) - table.put(0xF9E6, intArrayOf(0x7F79)) - table.put(0x2F957, intArrayOf(0x79EB)) - table.put(0x1EA8, intArrayOf(0x0041, 0x0302, 0x0309)) - table.put(0xF9E5, intArrayOf(0x75E2)) - table.put(0x2F956, intArrayOf(0x798F)) - table.put(0x1EA7, intArrayOf(0x0061, 0x0302, 0x0300)) - table.put(0xF9E4, intArrayOf(0x7406)) - table.put(0x2F955, intArrayOf(0x256C5)) - table.put(0x1EA6, intArrayOf(0x0041, 0x0302, 0x0300)) - table.put(0xF9E3, intArrayOf(0x6CE5)) - table.put(0x2F954, intArrayOf(0x2569A)) - table.put(0x1EA5, intArrayOf(0x0061, 0x0302, 0x0301)) - table.put(0xF9E2, intArrayOf(0x68A8)) - table.put(0x2F953, intArrayOf(0x7956)) - table.put(0x1EA4, intArrayOf(0x0041, 0x0302, 0x0301)) - table.put(0xF9E1, intArrayOf(0x674E)) - table.put(0x2F952, intArrayOf(0x25626)) - table.put(0x1EA3, intArrayOf(0x0061, 0x0309)) - table.put(0xF9E0, intArrayOf(0x6613)) - table.put(0x2F951, intArrayOf(0x40E3)) - table.put(0x1EA2, intArrayOf(0x0041, 0x0309)) - table.put(0x2F950, intArrayOf(0x78CC)) - table.put(0x04C2, intArrayOf(0x0436, 0x0306)) - table.put(0x1EA1, intArrayOf(0x0061, 0x0323)) - table.put(0x04C1, intArrayOf(0x0416, 0x0306)) - table.put(0x1EA0, intArrayOf(0x0041, 0x0323)) - table.put(0xF9DF, intArrayOf(0x5C65)) - table.put(0xF9DE, intArrayOf(0x540F)) - table.put(0x2F94F, intArrayOf(0x788C)) - table.put(0xF9DD, intArrayOf(0x5229)) - table.put(0x2F94E, intArrayOf(0x784E)) - table.put(0xF9DC, intArrayOf(0x9686)) - table.put(0x2F94D, intArrayOf(0x2541D)) - table.put(0xF9DB, intArrayOf(0x7387)) - table.put(0x2F94C, intArrayOf(0x4096)) - table.put(0xF9DA, intArrayOf(0x6817)) - table.put(0x2F94B, intArrayOf(0x4046)) - table.put(0x2F94A, intArrayOf(0x778B)) - table.put(0xF9D9, intArrayOf(0x6144)) - table.put(0xF9D8, intArrayOf(0x5F8B)) - table.put(0x2F949, intArrayOf(0x4039)) - table.put(0xF9D7, intArrayOf(0x8F2A)) - table.put(0x2F948, intArrayOf(0x774A)) - table.put(0xF9D6, intArrayOf(0x6DEA)) - table.put(0x2F947, intArrayOf(0x771F)) - table.put(0xF9D5, intArrayOf(0x5D19)) - table.put(0x2F946, intArrayOf(0x771F)) - table.put(0xF9D4, intArrayOf(0x502B)) - table.put(0x2F945, intArrayOf(0x771E)) - table.put(0xF9D3, intArrayOf(0x9678)) - table.put(0x2F944, intArrayOf(0x25133)) - table.put(0xF9D2, intArrayOf(0x622E)) - table.put(0x2F943, intArrayOf(0x25119)) - table.put(0xF9D1, intArrayOf(0x516D)) - table.put(0x2F942, intArrayOf(0x250F2)) - table.put(0xF9D0, intArrayOf(0x985E)) - table.put(0x2F941, intArrayOf(0x250F3)) - table.put(0x2F940, intArrayOf(0x76F4)) - table.put(0xF9CF, intArrayOf(0x7D10)) - table.put(0xF9CE, intArrayOf(0x786B)) - table.put(0x2F93F, intArrayOf(0x4008)) - table.put(0xF9CD, intArrayOf(0x7559)) - table.put(0x2F93E, intArrayOf(0x3FFC)) - table.put(0xF9CC, intArrayOf(0x7409)) - table.put(0x2F93D, intArrayOf(0x25044)) - table.put(0xF9CB, intArrayOf(0x6E9C)) - table.put(0x2F93C, intArrayOf(0x24FB8)) - table.put(0xF9CA, intArrayOf(0x6D41)) - table.put(0x2F93B, intArrayOf(0x24FA1)) - table.put(0x2F93A, intArrayOf(0x7610)) - table.put(0xF9C9, intArrayOf(0x67F3)) - table.put(0xF9C8, intArrayOf(0x677B)) - table.put(0x2F939, intArrayOf(0x2219F)) - table.put(0xF9C7, intArrayOf(0x5289)) - table.put(0x2F938, intArrayOf(0x7570)) - table.put(0xF9C6, intArrayOf(0x962E)) - table.put(0x2F937, intArrayOf(0x24C92)) - table.put(0xF9C5, intArrayOf(0x6688)) - table.put(0x2F936, intArrayOf(0x753E)) - table.put(0xF9C4, intArrayOf(0x9F8D)) - table.put(0x2F935, intArrayOf(0x24C36)) - table.put(0xF9C3, intArrayOf(0x907C)) - table.put(0x2F934, intArrayOf(0x7524)) - table.put(0xF9C2, intArrayOf(0x84FC)) - table.put(0x2F933, intArrayOf(0x3F1B)) - table.put(0xF9C1, intArrayOf(0x7642)) - table.put(0x2F932, intArrayOf(0x74CA)) - table.put(0xF9C0, intArrayOf(0x71CE)) - table.put(0x2F931, intArrayOf(0x7485)) - table.put(0x2F930, intArrayOf(0x7471)) - table.put(0xF9BF, intArrayOf(0x6A02)) - table.put(0xF9BE, intArrayOf(0x6599)) - table.put(0x2F92F, intArrayOf(0x745C)) - table.put(0xF9BD, intArrayOf(0x5C3F)) - table.put(0x2F92E, intArrayOf(0x7447)) - table.put(0xF9BC, intArrayOf(0x5BEE)) - table.put(0x2F92D, intArrayOf(0x3EB8)) - table.put(0xF9BB, intArrayOf(0x50DA)) - table.put(0x2F92C, intArrayOf(0x3EB8)) - table.put(0xF9BA, intArrayOf(0x4E86)) - table.put(0x2F92B, intArrayOf(0x73A5)) - table.put(0x2F92A, intArrayOf(0x3EAC)) - table.put(0xF9B9, intArrayOf(0x60E1)) - table.put(0xF9B8, intArrayOf(0x96B8)) - table.put(0x2F929, intArrayOf(0x738B)) - table.put(0xF9B7, intArrayOf(0x91B4)) - table.put(0x2F928, intArrayOf(0x737A)) - table.put(0xF9B6, intArrayOf(0x79AE)) - table.put(0x2F927, intArrayOf(0x24814)) - table.put(0xF9B5, intArrayOf(0x4F8B)) - table.put(0x2F926, intArrayOf(0x24735)) - table.put(0xF9B4, intArrayOf(0x9818)) - table.put(0x2F925, intArrayOf(0x7295)) - table.put(0xF9B3, intArrayOf(0x9748)) - table.put(0x2F924, intArrayOf(0x7280)) - table.put(0xF9B2, intArrayOf(0x96F6)) - table.put(0x2F923, intArrayOf(0x24608)) - table.put(0xF9B1, intArrayOf(0x9234)) - table.put(0x2F922, intArrayOf(0x7250)) - table.put(0xF9B0, intArrayOf(0x8046)) - table.put(0x2F921, intArrayOf(0x7235)) - table.put(0x2F920, intArrayOf(0x7228)) - table.put(0xF9AF, intArrayOf(0x7F9A)) - table.put(0xF9AE, intArrayOf(0x7469)) - table.put(0x2F91F, intArrayOf(0x243AB)) - table.put(0xF9AD, intArrayOf(0x73B2)) - table.put(0x2F91E, intArrayOf(0x719C)) - table.put(0xF9AC, intArrayOf(0x601C)) - table.put(0x2F91D, intArrayOf(0x24263)) - table.put(0xF9AB, intArrayOf(0x5DBA)) - table.put(0x2F91C, intArrayOf(0x7145)) - table.put(0xF9AA, intArrayOf(0x5BE7)) - table.put(0x2F91B, intArrayOf(0x20525)) - table.put(0x2F91A, intArrayOf(0x70AD)) - table.put(0xF9A9, intArrayOf(0x56F9)) - table.put(0xF9A8, intArrayOf(0x4EE4)) - table.put(0x2F919, intArrayOf(0x7077)) - table.put(0xF9A7, intArrayOf(0x7375)) - table.put(0x2F918, intArrayOf(0x707D)) - table.put(0xF9A6, intArrayOf(0x7C3E)) - table.put(0x2F917, intArrayOf(0x704A)) - table.put(0xF9A5, intArrayOf(0x6BAE)) - table.put(0x2F916, intArrayOf(0x3D96)) - table.put(0xF9A4, intArrayOf(0x637B)) - table.put(0x2F915, intArrayOf(0x701B)) - table.put(0xF9A3, intArrayOf(0x5FF5)) - table.put(0x2F914, intArrayOf(0x701E)) - table.put(0xF9A2, intArrayOf(0x5EC9)) - table.put(0x2F913, intArrayOf(0x7039)) - table.put(0xF9A1, intArrayOf(0x8AAA)) - table.put(0x2F912, intArrayOf(0x6FC6)) - table.put(0xF9A0, intArrayOf(0x88C2)) - table.put(0x2F911, intArrayOf(0x23F8E)) - table.put(0x2F910, intArrayOf(0x23F5E)) - table.put(0x2001, intArrayOf(0x2003)) - table.put(0x2000, intArrayOf(0x2002)) - table.put(0x2F90F, intArrayOf(0x6F6E)) - table.put(0x2F90E, intArrayOf(0x6DF9)) - table.put(0x2F90D, intArrayOf(0x23ED1)) - table.put(0x2F90C, intArrayOf(0x6EC7)) - table.put(0x2F90B, intArrayOf(0x6ECB)) - table.put(0x2F90A, intArrayOf(0x3D33)) - table.put(0x2F909, intArrayOf(0x6E6E)) - table.put(0x2F908, intArrayOf(0x6E2F)) - table.put(0x2F907, intArrayOf(0x6D34)) - table.put(0x2F906, intArrayOf(0x23D1E)) - table.put(0x2F905, intArrayOf(0x6D85)) - table.put(0x2F904, intArrayOf(0x6D78)) - table.put(0x2F903, intArrayOf(0x6D69)) - table.put(0x2F902, intArrayOf(0x6D41)) - table.put(0x2F901, intArrayOf(0x6D77)) - table.put(0x2F900, intArrayOf(0x6D3E)) - table.put(0x017E, intArrayOf(0x007A, 0x030C)) - table.put(0x017D, intArrayOf(0x005A, 0x030C)) - table.put(0x017C, intArrayOf(0x007A, 0x0307)) - table.put(0x017B, intArrayOf(0x005A, 0x0307)) - table.put(0x017A, intArrayOf(0x007A, 0x0301)) - table.put(0x0179, intArrayOf(0x005A, 0x0301)) - table.put(0x0178, intArrayOf(0x0059, 0x0308)) - table.put(0x0177, intArrayOf(0x0079, 0x0302)) - table.put(0x0176, intArrayOf(0x0059, 0x0302)) - table.put(0x0175, intArrayOf(0x0077, 0x0302)) - table.put(0x0174, intArrayOf(0x0057, 0x0302)) - table.put(0x0173, intArrayOf(0x0075, 0x0328)) - table.put(0x0172, intArrayOf(0x0055, 0x0328)) - table.put(0x0171, intArrayOf(0x0075, 0x030B)) - table.put(0x0170, intArrayOf(0x0055, 0x030B)) - table.put(0x016F, intArrayOf(0x0075, 0x030A)) - table.put(0x016E, intArrayOf(0x0055, 0x030A)) - table.put(0x016D, intArrayOf(0x0075, 0x0306)) - table.put(0x016C, intArrayOf(0x0055, 0x0306)) - table.put(0x016B, intArrayOf(0x0075, 0x0304)) - table.put(0x016A, intArrayOf(0x0055, 0x0304)) - table.put(0x0A5E, intArrayOf(0x0A2B, 0x0A3C)) - table.put(0x0169, intArrayOf(0x0075, 0x0303)) - table.put(0x0168, intArrayOf(0x0055, 0x0303)) - table.put(0x0A5B, intArrayOf(0x0A1C, 0x0A3C)) - table.put(0x0A5A, intArrayOf(0x0A17, 0x0A3C)) - table.put(0x0165, intArrayOf(0x0074, 0x030C)) - table.put(0x0164, intArrayOf(0x0054, 0x030C)) - table.put(0x0163, intArrayOf(0x0074, 0x0327)) - table.put(0x0162, intArrayOf(0x0054, 0x0327)) - table.put(0x0161, intArrayOf(0x0073, 0x030C)) - table.put(0x0160, intArrayOf(0x0053, 0x030C)) - table.put(0x0A59, intArrayOf(0x0A16, 0x0A3C)) - table.put(0x015F, intArrayOf(0x0073, 0x0327)) - table.put(0x015E, intArrayOf(0x0053, 0x0327)) - table.put(0x015D, intArrayOf(0x0073, 0x0302)) - table.put(0x015C, intArrayOf(0x0053, 0x0302)) - table.put(0x015B, intArrayOf(0x0073, 0x0301)) - table.put(0x015A, intArrayOf(0x0053, 0x0301)) - table.put(0x1E9B, intArrayOf(0x017F, 0x0307)) - table.put(0x0159, intArrayOf(0x0072, 0x030C)) - table.put(0x0158, intArrayOf(0x0052, 0x030C)) - table.put(0x1E99, intArrayOf(0x0079, 0x030A)) - table.put(0x232A, intArrayOf(0x3009)) - table.put(0x0157, intArrayOf(0x0072, 0x0327)) - table.put(0x1E98, intArrayOf(0x0077, 0x030A)) - table.put(0x0156, intArrayOf(0x0052, 0x0327)) - table.put(0x1E97, intArrayOf(0x0074, 0x0308)) - table.put(0x0155, intArrayOf(0x0072, 0x0301)) - table.put(0x1E96, intArrayOf(0x0068, 0x0331)) - table.put(0x0154, intArrayOf(0x0052, 0x0301)) - table.put(0x1E95, intArrayOf(0x007A, 0x0331)) - table.put(0x1E94, intArrayOf(0x005A, 0x0331)) - table.put(0x1E93, intArrayOf(0x007A, 0x0323)) - table.put(0x0151, intArrayOf(0x006F, 0x030B)) - table.put(0x1E92, intArrayOf(0x005A, 0x0323)) - table.put(0x0150, intArrayOf(0x004F, 0x030B)) - table.put(0x1E91, intArrayOf(0x007A, 0x0302)) - table.put(0x2329, intArrayOf(0x3008)) - table.put(0x1E90, intArrayOf(0x005A, 0x0302)) - table.put(0x014F, intArrayOf(0x006F, 0x0306)) - table.put(0x014E, intArrayOf(0x004F, 0x0306)) - table.put(0x1E8F, intArrayOf(0x0079, 0x0307)) - table.put(0x014D, intArrayOf(0x006F, 0x0304)) - table.put(0x1E8E, intArrayOf(0x0059, 0x0307)) - table.put(0x014C, intArrayOf(0x004F, 0x0304)) - table.put(0x1E8D, intArrayOf(0x0078, 0x0308)) - table.put(0x1E8C, intArrayOf(0x0058, 0x0308)) - table.put(0x1E8B, intArrayOf(0x0078, 0x0307)) - table.put(0x1E8A, intArrayOf(0x0058, 0x0307)) - table.put(0x0148, intArrayOf(0x006E, 0x030C)) - table.put(0x1E89, intArrayOf(0x0077, 0x0323)) - table.put(0x0147, intArrayOf(0x004E, 0x030C)) - table.put(0x1E88, intArrayOf(0x0057, 0x0323)) - table.put(0x0146, intArrayOf(0x006E, 0x0327)) - table.put(0x1E87, intArrayOf(0x0077, 0x0307)) - table.put(0x0145, intArrayOf(0x004E, 0x0327)) - table.put(0x1E86, intArrayOf(0x0057, 0x0307)) - table.put(0x0144, intArrayOf(0x006E, 0x0301)) - table.put(0x1E85, intArrayOf(0x0077, 0x0308)) - table.put(0x0143, intArrayOf(0x004E, 0x0301)) - table.put(0x1E84, intArrayOf(0x0057, 0x0308)) - table.put(0x1E83, intArrayOf(0x0077, 0x0301)) - table.put(0x1E82, intArrayOf(0x0057, 0x0301)) - table.put(0x1E81, intArrayOf(0x0077, 0x0300)) - table.put(0x1E80, intArrayOf(0x0057, 0x0300)) - table.put(0x0A36, intArrayOf(0x0A38, 0x0A3C)) - table.put(0x0A33, intArrayOf(0x0A32, 0x0A3C)) - table.put(0x013E, intArrayOf(0x006C, 0x030C)) - table.put(0x1E7F, intArrayOf(0x0076, 0x0323)) - table.put(0x013D, intArrayOf(0x004C, 0x030C)) - table.put(0x1E7E, intArrayOf(0x0056, 0x0323)) - table.put(0x013C, intArrayOf(0x006C, 0x0327)) - table.put(0x1E7D, intArrayOf(0x0076, 0x0303)) - table.put(0x013B, intArrayOf(0x004C, 0x0327)) - table.put(0x1E7C, intArrayOf(0x0056, 0x0303)) - table.put(0x013A, intArrayOf(0x006C, 0x0301)) - table.put(0x1E7B, intArrayOf(0x0075, 0x0304, 0x0308)) - table.put(0x1E7A, intArrayOf(0x0055, 0x0304, 0x0308)) - table.put(0x0139, intArrayOf(0x004C, 0x0301)) - table.put(0x1E79, intArrayOf(0x0075, 0x0303, 0x0301)) - table.put(0x0137, intArrayOf(0x006B, 0x0327)) - table.put(0x1E78, intArrayOf(0x0055, 0x0303, 0x0301)) - table.put(0x0136, intArrayOf(0x004B, 0x0327)) - table.put(0x1E77, intArrayOf(0x0075, 0x032D)) - table.put(0x0135, intArrayOf(0x006A, 0x0302)) - table.put(0x1E76, intArrayOf(0x0055, 0x032D)) - table.put(0x0134, intArrayOf(0x004A, 0x0302)) - table.put(0x1E75, intArrayOf(0x0075, 0x0330)) - table.put(0x1E74, intArrayOf(0x0055, 0x0330)) - table.put(0x1E73, intArrayOf(0x0075, 0x0324)) - table.put(0x1E72, intArrayOf(0x0055, 0x0324)) - table.put(0x0130, intArrayOf(0x0049, 0x0307)) - table.put(0x1E71, intArrayOf(0x0074, 0x032D)) - table.put(0x1E70, intArrayOf(0x0054, 0x032D)) - table.put(0x012F, intArrayOf(0x0069, 0x0328)) - table.put(0x012E, intArrayOf(0x0049, 0x0328)) - table.put(0x1E6F, intArrayOf(0x0074, 0x0331)) - table.put(0x012D, intArrayOf(0x0069, 0x0306)) - table.put(0x1E6E, intArrayOf(0x0054, 0x0331)) - table.put(0x012C, intArrayOf(0x0049, 0x0306)) - table.put(0x1E6D, intArrayOf(0x0074, 0x0323)) - table.put(0x012B, intArrayOf(0x0069, 0x0304)) - table.put(0x1E6C, intArrayOf(0x0054, 0x0323)) - table.put(0x012A, intArrayOf(0x0049, 0x0304)) - table.put(0x1E6B, intArrayOf(0x0074, 0x0307)) - table.put(0x1E6A, intArrayOf(0x0054, 0x0307)) - table.put(0x0129, intArrayOf(0x0069, 0x0303)) - table.put(0x0128, intArrayOf(0x0049, 0x0303)) - table.put(0x1E69, intArrayOf(0x0073, 0x0323, 0x0307)) - table.put(0x1E68, intArrayOf(0x0053, 0x0323, 0x0307)) - table.put(0x1E67, intArrayOf(0x0073, 0x030C, 0x0307)) - table.put(0x0125, intArrayOf(0x0068, 0x0302)) - table.put(0x1E66, intArrayOf(0x0053, 0x030C, 0x0307)) - table.put(0x0124, intArrayOf(0x0048, 0x0302)) - table.put(0x1E65, intArrayOf(0x0073, 0x0301, 0x0307)) - table.put(0x0123, intArrayOf(0x0067, 0x0327)) - table.put(0x1E64, intArrayOf(0x0053, 0x0301, 0x0307)) - table.put(0x0122, intArrayOf(0x0047, 0x0327)) - table.put(0x1E63, intArrayOf(0x0073, 0x0323)) - table.put(0x0121, intArrayOf(0x0067, 0x0307)) - table.put(0x1E62, intArrayOf(0x0053, 0x0323)) - table.put(0x0120, intArrayOf(0x0047, 0x0307)) - table.put(0x1E61, intArrayOf(0x0073, 0x0307)) - table.put(0x1E60, intArrayOf(0x0053, 0x0307)) - table.put(0x30FE, intArrayOf(0x30FD, 0x3099)) - table.put(0xF99F, intArrayOf(0x70C8)) - table.put(0xF99E, intArrayOf(0x54BD)) - table.put(0x011F, intArrayOf(0x0067, 0x0306)) - table.put(0xF99D, intArrayOf(0x52A3)) - table.put(0x011E, intArrayOf(0x0047, 0x0306)) - table.put(0x1E5F, intArrayOf(0x0072, 0x0331)) - table.put(0x30FA, intArrayOf(0x30F2, 0x3099)) - table.put(0xF99C, intArrayOf(0x5217)) - table.put(0x011D, intArrayOf(0x0067, 0x0302)) - table.put(0x1E5E, intArrayOf(0x0052, 0x0331)) - table.put(0xF99B, intArrayOf(0x934A)) - table.put(0x011C, intArrayOf(0x0047, 0x0302)) - table.put(0x1E5D, intArrayOf(0x0072, 0x0323, 0x0304)) - table.put(0xF99A, intArrayOf(0x9023)) - table.put(0x011B, intArrayOf(0x0065, 0x030C)) - table.put(0x1E5C, intArrayOf(0x0052, 0x0323, 0x0304)) - table.put(0x011A, intArrayOf(0x0045, 0x030C)) - table.put(0x1E5B, intArrayOf(0x0072, 0x0323)) - table.put(0x1E5A, intArrayOf(0x0052, 0x0323)) - table.put(0x30F9, intArrayOf(0x30F1, 0x3099)) - table.put(0x30F8, intArrayOf(0x30F0, 0x3099)) - table.put(0x30F7, intArrayOf(0x30EF, 0x3099)) - table.put(0xF999, intArrayOf(0x84EE)) - table.put(0xF998, intArrayOf(0x8F26)) - table.put(0x0119, intArrayOf(0x0065, 0x0328)) - table.put(0xF997, intArrayOf(0x806F)) - table.put(0x0118, intArrayOf(0x0045, 0x0328)) - table.put(0x1E59, intArrayOf(0x0072, 0x0307)) - table.put(0x30F4, intArrayOf(0x30A6, 0x3099)) - table.put(0xF996, intArrayOf(0x7DF4)) - table.put(0x0117, intArrayOf(0x0065, 0x0307)) - table.put(0x1E58, intArrayOf(0x0052, 0x0307)) - table.put(0xF995, intArrayOf(0x79CA)) - table.put(0x0116, intArrayOf(0x0045, 0x0307)) - table.put(0x1E57, intArrayOf(0x0070, 0x0307)) - table.put(0xF994, intArrayOf(0x7489)) - table.put(0xF993, intArrayOf(0x7149)) - table.put(0x0115, intArrayOf(0x0065, 0x0306)) - table.put(0x0477, intArrayOf(0x0475, 0x030F)) - table.put(0x1E56, intArrayOf(0x0050, 0x0307)) - table.put(0xF992, intArrayOf(0x6F23)) - table.put(0x1E55, intArrayOf(0x0070, 0x0301)) - table.put(0x0476, intArrayOf(0x0474, 0x030F)) - table.put(0x0114, intArrayOf(0x0045, 0x0306)) - table.put(0xF991, intArrayOf(0x649A)) - table.put(0x1E54, intArrayOf(0x0050, 0x0301)) - table.put(0x0113, intArrayOf(0x0065, 0x0304)) - table.put(0xF990, intArrayOf(0x6200)) - table.put(0x1E53, intArrayOf(0x006F, 0x0304, 0x0301)) - table.put(0x0112, intArrayOf(0x0045, 0x0304)) - table.put(0x1E52, intArrayOf(0x004F, 0x0304, 0x0301)) - table.put(0x1E51, intArrayOf(0x006F, 0x0304, 0x0300)) - table.put(0x1E50, intArrayOf(0x004F, 0x0304, 0x0300)) - table.put(0xF98F, intArrayOf(0x6190)) - table.put(0xF98E, intArrayOf(0x5E74)) - table.put(0xF98D, intArrayOf(0x8F62)) - table.put(0x010F, intArrayOf(0x0064, 0x030C)) - table.put(0xF98C, intArrayOf(0x6B77)) - table.put(0x1E4F, intArrayOf(0x006F, 0x0303, 0x0308)) - table.put(0x010E, intArrayOf(0x0044, 0x030C)) - table.put(0xF98B, intArrayOf(0x66C6)) - table.put(0x1E4E, intArrayOf(0x004F, 0x0303, 0x0308)) - table.put(0x010D, intArrayOf(0x0063, 0x030C)) - table.put(0xF98A, intArrayOf(0x529B)) - table.put(0x1E4D, intArrayOf(0x006F, 0x0303, 0x0301)) - table.put(0x010C, intArrayOf(0x0043, 0x030C)) - table.put(0x1E4C, intArrayOf(0x004F, 0x0303, 0x0301)) - table.put(0x010B, intArrayOf(0x0063, 0x0307)) - table.put(0x1E4B, intArrayOf(0x006E, 0x032D)) - table.put(0x010A, intArrayOf(0x0043, 0x0307)) - table.put(0x1E4A, intArrayOf(0x004E, 0x032D)) - table.put(0xF989, intArrayOf(0x9ECE)) - table.put(0xF988, intArrayOf(0x9E97)) - table.put(0xF987, intArrayOf(0x9A6A)) - table.put(0x0109, intArrayOf(0x0063, 0x0302)) - table.put(0xF986, intArrayOf(0x95AD)) - table.put(0x1E49, intArrayOf(0x006E, 0x0331)) - table.put(0x0108, intArrayOf(0x0043, 0x0302)) - table.put(0xF985, intArrayOf(0x792A)) - table.put(0x1E48, intArrayOf(0x004E, 0x0331)) - table.put(0x0107, intArrayOf(0x0063, 0x0301)) - table.put(0xF984, intArrayOf(0x6FFE)) - table.put(0x1E47, intArrayOf(0x006E, 0x0323)) - table.put(0x0106, intArrayOf(0x0043, 0x0301)) - table.put(0xF983, intArrayOf(0x65C5)) - table.put(0x1E46, intArrayOf(0x004E, 0x0323)) - table.put(0x0105, intArrayOf(0x0061, 0x0328)) - table.put(0xF982, intArrayOf(0x5EEC)) - table.put(0x1E45, intArrayOf(0x006E, 0x0307)) - table.put(0x0104, intArrayOf(0x0041, 0x0328)) - table.put(0xF981, intArrayOf(0x5973)) - table.put(0x1E44, intArrayOf(0x004E, 0x0307)) - table.put(0x0103, intArrayOf(0x0061, 0x0306)) - table.put(0xF980, intArrayOf(0x5442)) - table.put(0x1E43, intArrayOf(0x006D, 0x0323)) - table.put(0x0102, intArrayOf(0x0041, 0x0306)) - table.put(0x1E42, intArrayOf(0x004D, 0x0323)) - table.put(0x0101, intArrayOf(0x0061, 0x0304)) - table.put(0x1E41, intArrayOf(0x006D, 0x0307)) - table.put(0x0100, intArrayOf(0x0041, 0x0304)) - table.put(0x1E40, intArrayOf(0x004D, 0x0307)) - table.put(0xF97F, intArrayOf(0x52F5)) - table.put(0x30DD, intArrayOf(0x30DB, 0x309A)) - table.put(0xF97E, intArrayOf(0x91CF)) - table.put(0x30DC, intArrayOf(0x30DB, 0x3099)) - table.put(0xF97D, intArrayOf(0x8AD2)) - table.put(0x2F8FF, intArrayOf(0x6D16)) - table.put(0xF97C, intArrayOf(0x826F)) - table.put(0x30DA, intArrayOf(0x30D8, 0x309A)) - table.put(0x1E3F, intArrayOf(0x006D, 0x0301)) - table.put(0x2F8FE, intArrayOf(0x6C67)) - table.put(0xF97B, intArrayOf(0x7CE7)) - table.put(0x1E3E, intArrayOf(0x004D, 0x0301)) - table.put(0x2F8FD, intArrayOf(0x6CCD)) - table.put(0xF97A, intArrayOf(0x6881)) - table.put(0x1E3D, intArrayOf(0x006C, 0x032D)) - table.put(0x045E, intArrayOf(0x0443, 0x0306)) - table.put(0x2F8FC, intArrayOf(0x6CBF)) - table.put(0x1E3C, intArrayOf(0x004C, 0x032D)) - table.put(0x045D, intArrayOf(0x0438, 0x0300)) - table.put(0x2F8FB, intArrayOf(0x23CBC)) - table.put(0x1E3B, intArrayOf(0x006C, 0x0331)) - table.put(0x045C, intArrayOf(0x043A, 0x0301)) - table.put(0x2F8FA, intArrayOf(0x6C4E)) - table.put(0x1E3A, intArrayOf(0x004C, 0x0331)) - table.put(0x30D9, intArrayOf(0x30D8, 0x3099)) - table.put(0xF979, intArrayOf(0x51C9)) - table.put(0x30D7, intArrayOf(0x30D5, 0x309A)) - table.put(0xF978, intArrayOf(0x5169)) - table.put(0x30D6, intArrayOf(0x30D5, 0x3099)) - table.put(0xF977, intArrayOf(0x4EAE)) - table.put(0x2F8F9, intArrayOf(0x23AFA)) - table.put(0xF976, intArrayOf(0x7565)) - table.put(0x30D4, intArrayOf(0x30D2, 0x309A)) - table.put(0x1E39, intArrayOf(0x006C, 0x0323, 0x0304)) - table.put(0x2F8F8, intArrayOf(0x21D0B)) - table.put(0xF975, intArrayOf(0x63A0)) - table.put(0x30D3, intArrayOf(0x30D2, 0x3099)) - table.put(0x1E38, intArrayOf(0x004C, 0x0323, 0x0304)) - table.put(0x0D4C, intArrayOf(0x0D46, 0x0D57)) - table.put(0x2F8F7, intArrayOf(0x23A8D)) - table.put(0xF974, intArrayOf(0x82E5)) - table.put(0x1E37, intArrayOf(0x006C, 0x0323)) - table.put(0x0D4B, intArrayOf(0x0D47, 0x0D3E)) - table.put(0x2F8F6, intArrayOf(0x6BBB)) - table.put(0xF973, intArrayOf(0x62FE)) - table.put(0x30D1, intArrayOf(0x30CF, 0x309A)) - table.put(0x1E36, intArrayOf(0x004C, 0x0323)) - table.put(0x0D4A, intArrayOf(0x0D46, 0x0D3E)) - table.put(0x0457, intArrayOf(0x0456, 0x0308)) - table.put(0x2F8F5, intArrayOf(0x6BBA)) - table.put(0xF972, intArrayOf(0x6C88)) - table.put(0x30D0, intArrayOf(0x30CF, 0x3099)) - table.put(0x1E35, intArrayOf(0x006B, 0x0331)) - table.put(0x2F8F4, intArrayOf(0x6B9F)) - table.put(0xF971, intArrayOf(0x8FB0)) - table.put(0x1E34, intArrayOf(0x004B, 0x0331)) - table.put(0x2F8F3, intArrayOf(0x6B72)) - table.put(0xF970, intArrayOf(0x6BBA)) - table.put(0x1E33, intArrayOf(0x006B, 0x0323)) - table.put(0x2F8F2, intArrayOf(0x3C4E)) - table.put(0x1E32, intArrayOf(0x004B, 0x0323)) - table.put(0x0453, intArrayOf(0x0433, 0x0301)) - table.put(0x2F8F1, intArrayOf(0x6B54)) - table.put(0x1E31, intArrayOf(0x006B, 0x0301)) - table.put(0x2F8F0, intArrayOf(0x238A7)) - table.put(0x1E30, intArrayOf(0x004B, 0x0301)) - table.put(0x0451, intArrayOf(0x0435, 0x0308)) - table.put(0x0450, intArrayOf(0x0435, 0x0300)) - table.put(0xF96F, intArrayOf(0x8AAA)) - table.put(0xF96E, intArrayOf(0x8449)) - table.put(0xF96D, intArrayOf(0x7701)) - table.put(0x2F8EF, intArrayOf(0x6B21)) - table.put(0xF96C, intArrayOf(0x585E)) - table.put(0x1E2F, intArrayOf(0x0069, 0x0308, 0x0301)) - table.put(0x2F8EE, intArrayOf(0x3C18)) - table.put(0xF96B, intArrayOf(0x53C3)) - table.put(0x1E2E, intArrayOf(0x0049, 0x0308, 0x0301)) - table.put(0x2F8ED, intArrayOf(0x6ADB)) - table.put(0xF96A, intArrayOf(0x7D22)) - table.put(0x1E2D, intArrayOf(0x0069, 0x0330)) - table.put(0x2F8EC, intArrayOf(0x236A3)) - table.put(0x1E2C, intArrayOf(0x0049, 0x0330)) - table.put(0x2F8EB, intArrayOf(0x6AA8)) - table.put(0x1E2B, intArrayOf(0x0068, 0x032E)) - table.put(0x2F8EA, intArrayOf(0x69EA)) - table.put(0x1E2A, intArrayOf(0x0048, 0x032E)) - table.put(0x30C9, intArrayOf(0x30C8, 0x3099)) - table.put(0xF969, intArrayOf(0x6578)) - table.put(0x30C7, intArrayOf(0x30C6, 0x3099)) - table.put(0xF968, intArrayOf(0x6CCC)) - table.put(0xF967, intArrayOf(0x4E0D)) - table.put(0x30C5, intArrayOf(0x30C4, 0x3099)) - table.put(0x2F8E9, intArrayOf(0x69A3)) - table.put(0xF966, intArrayOf(0x5FA9)) - table.put(0x1E29, intArrayOf(0x0068, 0x0327)) - table.put(0x2F8E8, intArrayOf(0x6942)) - table.put(0xF965, intArrayOf(0x4FBF)) - table.put(0x1E28, intArrayOf(0x0048, 0x0327)) - table.put(0x2F8E7, intArrayOf(0x3B9D)) - table.put(0xF964, intArrayOf(0x78FB)) - table.put(0x30C2, intArrayOf(0x30C1, 0x3099)) - table.put(0x1E27, intArrayOf(0x0068, 0x0308)) - table.put(0x2F8E6, intArrayOf(0x6914)) - table.put(0xF963, intArrayOf(0x5317)) - table.put(0x1E26, intArrayOf(0x0048, 0x0308)) - table.put(0x2F8E5, intArrayOf(0x681F)) - table.put(0xF962, intArrayOf(0x7570)) - table.put(0x30C0, intArrayOf(0x30BF, 0x3099)) - table.put(0x1E25, intArrayOf(0x0068, 0x0323)) - table.put(0x2F8E4, intArrayOf(0x688E)) - table.put(0xF961, intArrayOf(0x7387)) - table.put(0x1E24, intArrayOf(0x0048, 0x0323)) - table.put(0x2F8E3, intArrayOf(0x2346D)) - table.put(0xF960, intArrayOf(0x6012)) - table.put(0x1E23, intArrayOf(0x0068, 0x0307)) - table.put(0x2F8E2, intArrayOf(0x6885)) - table.put(0x1E22, intArrayOf(0x0048, 0x0307)) - table.put(0x2F8E1, intArrayOf(0x6852)) - table.put(0x1E21, intArrayOf(0x0067, 0x0304)) - table.put(0x2F8E0, intArrayOf(0x6785)) - table.put(0x1E20, intArrayOf(0x0047, 0x0304)) - table.put(0x30BE, intArrayOf(0x30BD, 0x3099)) - table.put(0xF95F, intArrayOf(0x5BE7)) - table.put(0xF95E, intArrayOf(0x4E39)) - table.put(0x30BC, intArrayOf(0x30BB, 0x3099)) - table.put(0xF95D, intArrayOf(0x8AFE)) - table.put(0x2F8DF, intArrayOf(0x67FA)) - table.put(0xF95C, intArrayOf(0x6A02)) - table.put(0x30BA, intArrayOf(0x30B9, 0x3099)) - table.put(0x1E1F, intArrayOf(0x0066, 0x0307)) - table.put(0x2F8DE, intArrayOf(0x3B49)) - table.put(0xF95B, intArrayOf(0x62CF)) - table.put(0x1E1E, intArrayOf(0x0046, 0x0307)) - table.put(0x2F8DD, intArrayOf(0x233C3)) - table.put(0xF95A, intArrayOf(0x8B80)) - table.put(0x1E1D, intArrayOf(0x0065, 0x0327, 0x0306)) - table.put(0x2F8DC, intArrayOf(0x6753)) - table.put(0x1E1C, intArrayOf(0x0045, 0x0327, 0x0306)) - table.put(0x2F8DB, intArrayOf(0x675E)) - table.put(0x1E1B, intArrayOf(0x0065, 0x0330)) - table.put(0x2F8DA, intArrayOf(0x6721)) - table.put(0x1E1A, intArrayOf(0x0045, 0x0330)) - table.put(0x30B8, intArrayOf(0x30B7, 0x3099)) - table.put(0xF959, intArrayOf(0x9675)) - table.put(0xF958, intArrayOf(0x83F1)) - table.put(0x30B6, intArrayOf(0x30B5, 0x3099)) - table.put(0xF957, intArrayOf(0x7DBE)) - table.put(0x2F8D9, intArrayOf(0x671B)) - table.put(0xF956, intArrayOf(0x7A1C)) - table.put(0x30B4, intArrayOf(0x30B3, 0x3099)) - table.put(0x1E19, intArrayOf(0x0065, 0x032D)) - table.put(0x2F8D8, intArrayOf(0x6717)) - table.put(0xF955, intArrayOf(0x51CC)) - table.put(0x1E18, intArrayOf(0x0045, 0x032D)) - table.put(0x0439, intArrayOf(0x0438, 0x0306)) - table.put(0x2F8D7, intArrayOf(0x43D9)) - table.put(0xF954, intArrayOf(0x51DC)) - table.put(0x30B2, intArrayOf(0x30B1, 0x3099)) - table.put(0x1E17, intArrayOf(0x0065, 0x0304, 0x0301)) - table.put(0x2F8D6, intArrayOf(0x80AD)) - table.put(0xF953, intArrayOf(0x808B)) - table.put(0x1E16, intArrayOf(0x0045, 0x0304, 0x0301)) - table.put(0x2F8D5, intArrayOf(0x669C)) - table.put(0xF952, intArrayOf(0x52D2)) - table.put(0x30B0, intArrayOf(0x30AF, 0x3099)) - table.put(0x1E15, intArrayOf(0x0065, 0x0304, 0x0300)) - table.put(0x2F8D4, intArrayOf(0x6700)) - table.put(0xF951, intArrayOf(0x964B)) - table.put(0x1E14, intArrayOf(0x0045, 0x0304, 0x0300)) - table.put(0x2F8D3, intArrayOf(0x5195)) - table.put(0xF950, intArrayOf(0x7E37)) - table.put(0x1E13, intArrayOf(0x0064, 0x032D)) - table.put(0x2F8D2, intArrayOf(0x5192)) - table.put(0x1E12, intArrayOf(0x0044, 0x032D)) - table.put(0x2F8D1, intArrayOf(0x3AE4)) - table.put(0x1E11, intArrayOf(0x0064, 0x0327)) - table.put(0x2F8D0, intArrayOf(0x3B08)) - table.put(0x1E10, intArrayOf(0x0044, 0x0327)) - table.put(0x30AE, intArrayOf(0x30AD, 0x3099)) - table.put(0xF94F, intArrayOf(0x7D2F)) - table.put(0xF94E, intArrayOf(0x6F0F)) - table.put(0x30AC, intArrayOf(0x30AB, 0x3099)) - table.put(0xF94D, intArrayOf(0x6DDA)) - table.put(0x2F8CF, intArrayOf(0x6691)) - table.put(0xF94C, intArrayOf(0x6A13)) - table.put(0x1E0F, intArrayOf(0x0064, 0x0331)) - table.put(0x2F8CE, intArrayOf(0x3B19)) - table.put(0xF94B, intArrayOf(0x5C62)) - table.put(0x1E0E, intArrayOf(0x0044, 0x0331)) - table.put(0x2F8CD, intArrayOf(0x6649)) - table.put(0xF94A, intArrayOf(0x58D8)) - table.put(0x1E0D, intArrayOf(0x0064, 0x0323)) - table.put(0x2F8CC, intArrayOf(0x66F8)) - table.put(0x1E0C, intArrayOf(0x0044, 0x0323)) - table.put(0x2F8CB, intArrayOf(0x65E3)) - table.put(0x1E0B, intArrayOf(0x0064, 0x0307)) - table.put(0x2F8CA, intArrayOf(0x2300A)) - table.put(0x1E0A, intArrayOf(0x0044, 0x0307)) - table.put(0xF949, intArrayOf(0x96F7)) - table.put(0xF948, intArrayOf(0x8CC2)) - table.put(0xF947, intArrayOf(0x78CA)) - table.put(0x2F8C9, intArrayOf(0x656C)) - table.put(0xF946, intArrayOf(0x7262)) - table.put(0x1E09, intArrayOf(0x0063, 0x0327, 0x0301)) - table.put(0x2F8C8, intArrayOf(0x654F)) - table.put(0xF945, intArrayOf(0x807E)) - table.put(0x1E08, intArrayOf(0x0043, 0x0327, 0x0301)) - table.put(0x2F8C7, intArrayOf(0x3A6C)) - table.put(0xF944, intArrayOf(0x7C60)) - table.put(0x1E07, intArrayOf(0x0062, 0x0331)) - table.put(0x2F8C6, intArrayOf(0x6477)) - table.put(0xF943, intArrayOf(0x5F04)) - table.put(0x1E06, intArrayOf(0x0042, 0x0331)) - table.put(0x2F8C5, intArrayOf(0x649D)) - table.put(0xF942, intArrayOf(0x58DF)) - table.put(0x1E05, intArrayOf(0x0062, 0x0323)) - table.put(0x2F8C4, intArrayOf(0x647E)) - table.put(0xF941, intArrayOf(0x8AD6)) - table.put(0x1E04, intArrayOf(0x0042, 0x0323)) - table.put(0x2F8C3, intArrayOf(0x6469)) - table.put(0xF940, intArrayOf(0x9E7F)) - table.put(0x1E03, intArrayOf(0x0062, 0x0307)) - table.put(0x2F8C2, intArrayOf(0x3A2E)) - table.put(0x1E02, intArrayOf(0x0042, 0x0307)) - table.put(0x2F8C1, intArrayOf(0x63A9)) - table.put(0x1E01, intArrayOf(0x0061, 0x0325)) - table.put(0x2F8C0, intArrayOf(0x63C5)) - table.put(0x1E00, intArrayOf(0x0041, 0x0325)) - table.put(0xF93F, intArrayOf(0x9304)) - table.put(0xF93E, intArrayOf(0x83C9)) - table.put(0xF93D, intArrayOf(0x7DA0)) - table.put(0x2F8BF, intArrayOf(0x6422)) - table.put(0xF93C, intArrayOf(0x797F)) - table.put(0x2F8BE, intArrayOf(0x22BF1)) - table.put(0xF93B, intArrayOf(0x788C)) - table.put(0x2F8BD, intArrayOf(0x63E4)) - table.put(0xF93A, intArrayOf(0x9DFA)) - table.put(0x2F8BC, intArrayOf(0x6383)) - table.put(0x2F8BB, intArrayOf(0x6368)) - table.put(0x2F8BA, intArrayOf(0x62FC)) - table.put(0xF939, intArrayOf(0x9B6F)) - table.put(0xF938, intArrayOf(0x9732)) - table.put(0xF937, intArrayOf(0x8DEF)) - table.put(0x2F8B9, intArrayOf(0x633D)) - table.put(0xF936, intArrayOf(0x865C)) - table.put(0x2F8B8, intArrayOf(0x22B0C)) - table.put(0xF935, intArrayOf(0x8606)) - table.put(0x0419, intArrayOf(0x0418, 0x0306)) - table.put(0x2F8B7, intArrayOf(0x6350)) - table.put(0xF934, intArrayOf(0x8001)) - table.put(0x2F8B6, intArrayOf(0x62D4)) - table.put(0xF933, intArrayOf(0x76E7)) - table.put(0x2F8B5, intArrayOf(0x62B1)) - table.put(0xF932, intArrayOf(0x7210)) - table.put(0x2F8B4, intArrayOf(0x625D)) - table.put(0xF931, intArrayOf(0x6AD3)) - table.put(0x2F8B3, intArrayOf(0x621B)) - table.put(0xF930, intArrayOf(0x64C4)) - table.put(0x2F8B2, intArrayOf(0x6210)) - table.put(0x2F8B1, intArrayOf(0x61F6)) - table.put(0x2F8B0, intArrayOf(0x61F2)) - table.put(0xF92F, intArrayOf(0x52DE)) - table.put(0xF92E, intArrayOf(0x51B7)) - table.put(0xF92D, intArrayOf(0x4F86)) - table.put(0x2F8AF, intArrayOf(0x61DE)) - table.put(0xF92C, intArrayOf(0x90CE)) - table.put(0x2F8AE, intArrayOf(0x61AF)) - table.put(0xF92B, intArrayOf(0x72FC)) - table.put(0x2F8AD, intArrayOf(0x61A4)) - table.put(0xF92A, intArrayOf(0x6D6A)) - table.put(0x040E, intArrayOf(0x0423, 0x0306)) - table.put(0x2F8AC, intArrayOf(0x61B2)) - table.put(0x040D, intArrayOf(0x0418, 0x0300)) - table.put(0x2F8AB, intArrayOf(0x618E)) - table.put(0x040C, intArrayOf(0x041A, 0x0301)) - table.put(0x2F8AA, intArrayOf(0x617A)) - table.put(0xF929, intArrayOf(0x6717)) - table.put(0xF928, intArrayOf(0x5ECA)) - table.put(0xF927, intArrayOf(0x881F)) - table.put(0x2F8A9, intArrayOf(0x614C)) - table.put(0xF926, intArrayOf(0x81D8)) - table.put(0x2F8A8, intArrayOf(0x614E)) - table.put(0xF925, intArrayOf(0x62C9)) - table.put(0x2F8A7, intArrayOf(0x614C)) - table.put(0xF924, intArrayOf(0x8964)) - table.put(0x2F8A6, intArrayOf(0x6148)) - table.put(0xF923, intArrayOf(0x85CD)) - table.put(0x0407, intArrayOf(0x0406, 0x0308)) - table.put(0x2F8A5, intArrayOf(0x60C7)) - table.put(0xF922, intArrayOf(0x6FEB)) - table.put(0x2F8A4, intArrayOf(0x226D4)) - table.put(0xF921, intArrayOf(0x5D50)) - table.put(0x2F8A3, intArrayOf(0x6094)) - table.put(0xF920, intArrayOf(0x9E1E)) - table.put(0x2F8A2, intArrayOf(0x391C)) - table.put(0x0403, intArrayOf(0x0413, 0x0301)) - table.put(0x2F8A1, intArrayOf(0x393A)) - table.put(0x2F8A0, intArrayOf(0x6081)) - table.put(0x0401, intArrayOf(0x0415, 0x0308)) - table.put(0x0400, intArrayOf(0x0415, 0x0300)) - table.put(0xF91F, intArrayOf(0x862D)) - table.put(0xF91E, intArrayOf(0x721B)) - table.put(0xF91D, intArrayOf(0x6B04)) - table.put(0xF91C, intArrayOf(0x5375)) - table.put(0xF91B, intArrayOf(0x4E82)) - table.put(0xF91A, intArrayOf(0x99F1)) - table.put(0xF919, intArrayOf(0x916A)) - table.put(0x22ED, intArrayOf(0x22B5, 0x0338)) - table.put(0xF918, intArrayOf(0x843D)) - table.put(0x22EC, intArrayOf(0x22B4, 0x0338)) - table.put(0xF917, intArrayOf(0x73DE)) - table.put(0x22EB, intArrayOf(0x22B3, 0x0338)) - table.put(0xF916, intArrayOf(0x70D9)) - table.put(0x22EA, intArrayOf(0x22B2, 0x0338)) - table.put(0xF915, intArrayOf(0x6D1B)) - table.put(0xF914, intArrayOf(0x6A02)) - table.put(0xF913, intArrayOf(0x908F)) - table.put(0xF912, intArrayOf(0x88F8)) - table.put(0xF911, intArrayOf(0x87BA)) - table.put(0xF910, intArrayOf(0x863F)) - table.put(0x22E3, intArrayOf(0x2292, 0x0338)) - table.put(0xF90F, intArrayOf(0x7F85)) - table.put(0x22E2, intArrayOf(0x2291, 0x0338)) - table.put(0xF90E, intArrayOf(0x7669)) - table.put(0x22E1, intArrayOf(0x227D, 0x0338)) - table.put(0xF90D, intArrayOf(0x61F6)) - table.put(0x22E0, intArrayOf(0x227C, 0x0338)) - table.put(0xF90C, intArrayOf(0x5948)) - table.put(0xF90B, intArrayOf(0x5587)) - table.put(0xF90A, intArrayOf(0x91D1)) - table.put(0xF909, intArrayOf(0x5951)) - table.put(0xF908, intArrayOf(0x9F9C)) - table.put(0xF907, intArrayOf(0x9F9C)) - table.put(0xF906, intArrayOf(0x53E5)) - table.put(0xF905, intArrayOf(0x4E32)) - table.put(0xF904, intArrayOf(0x6ED1)) - table.put(0xF903, intArrayOf(0x8CC8)) - table.put(0xF902, intArrayOf(0x8ECA)) - table.put(0xF901, intArrayOf(0x66F4)) - table.put(0xF900, intArrayOf(0x8C48)) - table.put(0x00FF, intArrayOf(0x0079, 0x0308)) - table.put(0x00FD, intArrayOf(0x0079, 0x0301)) - table.put(0x00FC, intArrayOf(0x0075, 0x0308)) - table.put(0x00FB, intArrayOf(0x0075, 0x0302)) - table.put(0x00FA, intArrayOf(0x0075, 0x0301)) - table.put(0x00F9, intArrayOf(0x0075, 0x0300)) - table.put(0x00F6, intArrayOf(0x006F, 0x0308)) - table.put(0x00F5, intArrayOf(0x006F, 0x0303)) - table.put(0x00F4, intArrayOf(0x006F, 0x0302)) - table.put(0x00F3, intArrayOf(0x006F, 0x0301)) - table.put(0x00F2, intArrayOf(0x006F, 0x0300)) - table.put(0x00F1, intArrayOf(0x006E, 0x0303)) - table.put(0x00EF, intArrayOf(0x0069, 0x0308)) - table.put(0x00EE, intArrayOf(0x0069, 0x0302)) - table.put(0x00ED, intArrayOf(0x0069, 0x0301)) - table.put(0x00EC, intArrayOf(0x0069, 0x0300)) - table.put(0x00EB, intArrayOf(0x0065, 0x0308)) - table.put(0x00EA, intArrayOf(0x0065, 0x0302)) - table.put(0x00E9, intArrayOf(0x0065, 0x0301)) - table.put(0x00E8, intArrayOf(0x0065, 0x0300)) - table.put(0x00E7, intArrayOf(0x0063, 0x0327)) - table.put(0x00E5, intArrayOf(0x0061, 0x030A)) - table.put(0x00E4, intArrayOf(0x0061, 0x0308)) - table.put(0x00E3, intArrayOf(0x0061, 0x0303)) - table.put(0x00E2, intArrayOf(0x0061, 0x0302)) - table.put(0x00E1, intArrayOf(0x0061, 0x0301)) - table.put(0x00E0, intArrayOf(0x0061, 0x0300)) - table.put(0x00DD, intArrayOf(0x0059, 0x0301)) - table.put(0x00DC, intArrayOf(0x0055, 0x0308)) - table.put(0x00DB, intArrayOf(0x0055, 0x0302)) - table.put(0x00DA, intArrayOf(0x0055, 0x0301)) - table.put(0x22AF, intArrayOf(0x22AB, 0x0338)) - table.put(0x22AE, intArrayOf(0x22A9, 0x0338)) - table.put(0x22AD, intArrayOf(0x22A8, 0x0338)) - table.put(0x22AC, intArrayOf(0x22A2, 0x0338)) - table.put(0x00D9, intArrayOf(0x0055, 0x0300)) - table.put(0x00D6, intArrayOf(0x004F, 0x0308)) - table.put(0x00D5, intArrayOf(0x004F, 0x0303)) - table.put(0x00D4, intArrayOf(0x004F, 0x0302)) - table.put(0x00D3, intArrayOf(0x004F, 0x0301)) - table.put(0x00D2, intArrayOf(0x004F, 0x0300)) - table.put(0x00D1, intArrayOf(0x004E, 0x0303)) - table.put(0x309E, intArrayOf(0x309D, 0x3099)) - table.put(0x00CF, intArrayOf(0x0049, 0x0308)) - table.put(0x00CE, intArrayOf(0x0049, 0x0302)) - table.put(0x00CD, intArrayOf(0x0049, 0x0301)) - table.put(0x00CC, intArrayOf(0x0049, 0x0300)) - table.put(0x00CB, intArrayOf(0x0045, 0x0308)) - table.put(0x00CA, intArrayOf(0x0045, 0x0302)) - table.put(0x00C9, intArrayOf(0x0045, 0x0301)) - table.put(0x3094, intArrayOf(0x3046, 0x3099)) - table.put(0x00C8, intArrayOf(0x0045, 0x0300)) - table.put(0x00C7, intArrayOf(0x0043, 0x0327)) - table.put(0x00C5, intArrayOf(0x0041, 0x030A)) - table.put(0x00C4, intArrayOf(0x0041, 0x0308)) - table.put(0x00C3, intArrayOf(0x0041, 0x0303)) - table.put(0x00C2, intArrayOf(0x0041, 0x0302)) - table.put(0x00C1, intArrayOf(0x0041, 0x0301)) - table.put(0x00C0, intArrayOf(0x0041, 0x0300)) - table.put(0x307D, intArrayOf(0x307B, 0x309A)) - table.put(0x307C, intArrayOf(0x307B, 0x3099)) - table.put(0x2F89F, intArrayOf(0x5FF9)) - table.put(0x307A, intArrayOf(0x3078, 0x309A)) - table.put(0x2F89E, intArrayOf(0x5FD7)) - table.put(0x2F89D, intArrayOf(0x5FCD)) - table.put(0x2F89C, intArrayOf(0x5F9A)) - table.put(0x2F89B, intArrayOf(0x38E3)) - table.put(0x2F89A, intArrayOf(0x5F6B)) - table.put(0x3079, intArrayOf(0x3078, 0x3099)) - table.put(0x3077, intArrayOf(0x3075, 0x309A)) - table.put(0x3076, intArrayOf(0x3075, 0x3099)) - table.put(0x2F899, intArrayOf(0x5F62)) - table.put(0x3074, intArrayOf(0x3072, 0x309A)) - table.put(0x2F898, intArrayOf(0x261DA)) - table.put(0x3073, intArrayOf(0x3072, 0x3099)) - table.put(0x2F897, intArrayOf(0x232B8)) - table.put(0x2F896, intArrayOf(0x38C7)) - table.put(0x3071, intArrayOf(0x306F, 0x309A)) - table.put(0x2F895, intArrayOf(0x5F22)) - table.put(0x3070, intArrayOf(0x306F, 0x3099)) - table.put(0x2F894, intArrayOf(0x5F22)) - table.put(0x2F893, intArrayOf(0x8201)) - table.put(0x2F892, intArrayOf(0x22331)) - table.put(0x2F891, intArrayOf(0x22331)) - table.put(0x2F890, intArrayOf(0x5EFE)) - table.put(0x2F88F, intArrayOf(0x2A392)) - table.put(0x2F88E, intArrayOf(0x5ECA)) - table.put(0x2F88D, intArrayOf(0x5EB6)) - table.put(0x2F88C, intArrayOf(0x5EB3)) - table.put(0x2F88B, intArrayOf(0x5EB0)) - table.put(0x2F88A, intArrayOf(0x387C)) - table.put(0x3069, intArrayOf(0x3068, 0x3099)) - table.put(0x3067, intArrayOf(0x3066, 0x3099)) - table.put(0x3065, intArrayOf(0x3064, 0x3099)) - table.put(0x2F889, intArrayOf(0x22183)) - table.put(0x2F888, intArrayOf(0x3862)) - table.put(0x2F887, intArrayOf(0x5E69)) - table.put(0x3062, intArrayOf(0x3061, 0x3099)) - table.put(0x2F886, intArrayOf(0x5E3D)) - table.put(0x2F885, intArrayOf(0x5E28)) - table.put(0x3060, intArrayOf(0x305F, 0x3099)) - table.put(0x2F884, intArrayOf(0x5DFD)) - table.put(0x2F883, intArrayOf(0x382F)) - table.put(0x2F882, intArrayOf(0x5DE2)) - table.put(0x2F881, intArrayOf(0x5DE1)) - table.put(0x2F880, intArrayOf(0x5D7C)) - table.put(0x305E, intArrayOf(0x305D, 0x3099)) - table.put(0x305C, intArrayOf(0x305B, 0x3099)) - table.put(0x2F87F, intArrayOf(0x5D6B)) - table.put(0x305A, intArrayOf(0x3059, 0x3099)) - table.put(0x2F87E, intArrayOf(0x5D6E)) - table.put(0x2F87D, intArrayOf(0x21DE6)) - table.put(0x2F87C, intArrayOf(0x5D43)) - table.put(0x2F87B, intArrayOf(0x21DE4)) - table.put(0x2F87A, intArrayOf(0x5C8D)) - table.put(0x3058, intArrayOf(0x3057, 0x3099)) - table.put(0x3056, intArrayOf(0x3055, 0x3099)) - table.put(0x2F879, intArrayOf(0x5CC0)) - table.put(0x3054, intArrayOf(0x3053, 0x3099)) - table.put(0x2F878, intArrayOf(0x5C6E)) - table.put(0x2F877, intArrayOf(0x5C60)) - table.put(0x3052, intArrayOf(0x3051, 0x3099)) - table.put(0x2F876, intArrayOf(0x3781)) - table.put(0x2F875, intArrayOf(0x5C22)) - table.put(0x3050, intArrayOf(0x304F, 0x3099)) - table.put(0x2F874, intArrayOf(0x5F53)) - table.put(0x2F873, intArrayOf(0x5C06)) - table.put(0x2F872, intArrayOf(0x5BFF)) - table.put(0x2F871, intArrayOf(0x21B18)) - table.put(0x2F870, intArrayOf(0x5BF3)) - table.put(0x304E, intArrayOf(0x304D, 0x3099)) - table.put(0x304C, intArrayOf(0x304B, 0x3099)) - table.put(0x2F86F, intArrayOf(0x5BE7)) - table.put(0x2F86E, intArrayOf(0x5BD8)) - table.put(0x2F86D, intArrayOf(0x5BC3)) - table.put(0x2F86C, intArrayOf(0x219C8)) - table.put(0x2F86B, intArrayOf(0x5B3E)) - table.put(0x2F86A, intArrayOf(0x5B3E)) - table.put(0x2F869, intArrayOf(0x5B08)) - table.put(0x2F868, intArrayOf(0x36FC)) - table.put(0x2F867, intArrayOf(0x36EE)) - table.put(0x0CCB, intArrayOf(0x0CC6, 0x0CC2, 0x0CD5)) - table.put(0x2F866, intArrayOf(0x5A66)) - table.put(0x0CCA, intArrayOf(0x0CC6, 0x0CC2)) - table.put(0x2F865, intArrayOf(0x59D8)) - table.put(0x2F864, intArrayOf(0x5A27)) - table.put(0x2F863, intArrayOf(0x5A1B)) - table.put(0x03D4, intArrayOf(0x03D2, 0x0308)) - table.put(0x2F862, intArrayOf(0x59EC)) - table.put(0x03D3, intArrayOf(0x03D2, 0x0301)) - table.put(0x2F861, intArrayOf(0x216EA)) - table.put(0x2F860, intArrayOf(0x216A8)) - table.put(0x0CC8, intArrayOf(0x0CC6, 0x0CD6)) - table.put(0x0CC7, intArrayOf(0x0CC6, 0x0CD5)) - table.put(0x2F85F, intArrayOf(0x5962)) - table.put(0x2F85E, intArrayOf(0x5922)) - table.put(0x2F85D, intArrayOf(0x591A)) - table.put(0x0CC0, intArrayOf(0x0CBF, 0x0CD5)) - table.put(0x03CE, intArrayOf(0x03C9, 0x0301)) - table.put(0x2F85C, intArrayOf(0x5906)) - table.put(0x03CD, intArrayOf(0x03C5, 0x0301)) - table.put(0x2F85B, intArrayOf(0x58F7)) - table.put(0x03CC, intArrayOf(0x03BF, 0x0301)) - table.put(0x2F85A, intArrayOf(0x58F2)) - table.put(0x03CB, intArrayOf(0x03C5, 0x0308)) - table.put(0x03CA, intArrayOf(0x03B9, 0x0308)) - table.put(0x2F859, intArrayOf(0x214E4)) - table.put(0x2F858, intArrayOf(0x58AC)) - table.put(0x2F857, intArrayOf(0x5831)) - table.put(0x2F856, intArrayOf(0x5832)) - table.put(0x2F855, intArrayOf(0x578B)) - table.put(0x2F854, intArrayOf(0x580D)) - table.put(0x2F853, intArrayOf(0x57F4)) - table.put(0x2F852, intArrayOf(0x57CE)) - table.put(0x2F851, intArrayOf(0x58EE)) - table.put(0x2F850, intArrayOf(0x5207)) - table.put(0x2F84F, intArrayOf(0x5674)) - table.put(0x2F84E, intArrayOf(0x5651)) - table.put(0x2F84D, intArrayOf(0x5717)) - table.put(0x2F84C, intArrayOf(0x5606)) - table.put(0x2F84B, intArrayOf(0x5716)) - table.put(0x2F84A, intArrayOf(0x55C2)) - table.put(0x2F849, intArrayOf(0x55B3)) - table.put(0x2F848, intArrayOf(0x55AB)) - table.put(0x2F847, intArrayOf(0x5599)) - table.put(0x2F846, intArrayOf(0x5584)) - table.put(0x2F845, intArrayOf(0x5584)) - table.put(0x2F844, intArrayOf(0x5563)) - table.put(0x2F843, intArrayOf(0x5553)) - table.put(0x2F842, intArrayOf(0x5510)) - table.put(0x2F841, intArrayOf(0x54F6)) - table.put(0x2F840, intArrayOf(0x54A2)) - table.put(0x03B0, intArrayOf(0x03C5, 0x0308, 0x0301)) - table.put(0x2F83F, intArrayOf(0x5468)) - table.put(0x2F83E, intArrayOf(0x5448)) - table.put(0x03AF, intArrayOf(0x03B9, 0x0301)) - table.put(0x2F83D, intArrayOf(0x5438)) - table.put(0x03AE, intArrayOf(0x03B7, 0x0301)) - table.put(0x2F83C, intArrayOf(0x549E)) - table.put(0x03AD, intArrayOf(0x03B5, 0x0301)) - table.put(0x2F83B, intArrayOf(0x5406)) - table.put(0x03AC, intArrayOf(0x03B1, 0x0301)) - table.put(0x2F83A, intArrayOf(0x53F1)) - table.put(0x03AB, intArrayOf(0x03A5, 0x0308)) - table.put(0x03AA, intArrayOf(0x0399, 0x0308)) - table.put(0x2F839, intArrayOf(0x53EB)) - table.put(0x2F838, intArrayOf(0x20B63)) - table.put(0x2F837, intArrayOf(0x53DF)) - table.put(0x2F836, intArrayOf(0x53CA)) - table.put(0x2F835, intArrayOf(0x7070)) - table.put(0x2F834, intArrayOf(0x20A2C)) - table.put(0x2F833, intArrayOf(0x537F)) - table.put(0x2F832, intArrayOf(0x537F)) - table.put(0x2F831, intArrayOf(0x537F)) - table.put(0x2289, intArrayOf(0x2287, 0x0338)) - table.put(0x2F830, intArrayOf(0x537D)) - table.put(0x2288, intArrayOf(0x2286, 0x0338)) - table.put(0x2285, intArrayOf(0x2283, 0x0338)) - table.put(0x2284, intArrayOf(0x2282, 0x0338)) - table.put(0x2281, intArrayOf(0x227B, 0x0338)) - table.put(0x2280, intArrayOf(0x227A, 0x0338)) - table.put(0x2F82F, intArrayOf(0x5373)) - table.put(0x2F82E, intArrayOf(0x535A)) - table.put(0x2F82D, intArrayOf(0x5351)) - table.put(0x2F82C, intArrayOf(0x5349)) - table.put(0x2F82B, intArrayOf(0x5317)) - table.put(0x2F82A, intArrayOf(0x5306)) - table.put(0x2F829, intArrayOf(0x5305)) - table.put(0x2F828, intArrayOf(0x52FA)) - table.put(0x2F827, intArrayOf(0x52E4)) - table.put(0x2F826, intArrayOf(0x52C9)) - table.put(0x2F825, intArrayOf(0x52C7)) - table.put(0x2F824, intArrayOf(0x3515)) - table.put(0x2F823, intArrayOf(0x5277)) - table.put(0x2F822, intArrayOf(0x5272)) - table.put(0x2F821, intArrayOf(0x5246)) - table.put(0x2279, intArrayOf(0x2277, 0x0338)) - table.put(0x2F820, intArrayOf(0x523B)) - table.put(0x2278, intArrayOf(0x2276, 0x0338)) - table.put(0x2275, intArrayOf(0x2273, 0x0338)) - table.put(0x2274, intArrayOf(0x2272, 0x0338)) - table.put(0x2271, intArrayOf(0x2265, 0x0338)) - table.put(0x2270, intArrayOf(0x2264, 0x0338)) - table.put(0x2F81F, intArrayOf(0x34DF)) - table.put(0x2F81E, intArrayOf(0x5203)) - table.put(0x2F81D, intArrayOf(0x51F5)) - table.put(0x2F81C, intArrayOf(0x291DF)) - table.put(0x2F81B, intArrayOf(0x51B5)) - table.put(0xFB4E, intArrayOf(0x05E4, 0x05BF)) - table.put(0x2F81A, intArrayOf(0x51AC)) - table.put(0xFB4D, intArrayOf(0x05DB, 0x05BF)) - table.put(0xFB4C, intArrayOf(0x05D1, 0x05BF)) - table.put(0xFB4B, intArrayOf(0x05D5, 0x05B9)) - table.put(0x226F, intArrayOf(0x003E, 0x0338)) - table.put(0xFB4A, intArrayOf(0x05EA, 0x05BC)) - table.put(0x226E, intArrayOf(0x003C, 0x0338)) - table.put(0x226D, intArrayOf(0x224D, 0x0338)) - table.put(0x2F819, intArrayOf(0x4ECC)) - table.put(0x2F818, intArrayOf(0x51A4)) - table.put(0x2F817, intArrayOf(0x5197)) - table.put(0x2F816, intArrayOf(0x2054B)) - table.put(0xFB49, intArrayOf(0x05E9, 0x05BC)) - table.put(0x2F815, intArrayOf(0x518D)) - table.put(0xFB48, intArrayOf(0x05E8, 0x05BC)) - table.put(0x2F814, intArrayOf(0x5167)) - table.put(0xFB47, intArrayOf(0x05E7, 0x05BC)) - table.put(0x2F813, intArrayOf(0x34B9)) - table.put(0xFB46, intArrayOf(0x05E6, 0x05BC)) - table.put(0x2F812, intArrayOf(0x2051C)) - table.put(0x2F811, intArrayOf(0x5177)) - table.put(0xFB44, intArrayOf(0x05E4, 0x05BC)) - table.put(0x2F810, intArrayOf(0x5164)) - table.put(0xFB43, intArrayOf(0x05E3, 0x05BC)) - table.put(0xFB41, intArrayOf(0x05E1, 0x05BC)) - table.put(0xFB40, intArrayOf(0x05E0, 0x05BC)) - table.put(0x2262, intArrayOf(0x2261, 0x0338)) - table.put(0x2260, intArrayOf(0x003D, 0x0338)) - table.put(0x2F80F, intArrayOf(0x5154)) - table.put(0x2F80E, intArrayOf(0x514D)) - table.put(0x2F80D, intArrayOf(0x2063A)) - table.put(0x2F80C, intArrayOf(0x349E)) - table.put(0x2F80B, intArrayOf(0x50CF)) - table.put(0xFB3E, intArrayOf(0x05DE, 0x05BC)) - table.put(0x2F80A, intArrayOf(0x50E7)) - table.put(0xFB3C, intArrayOf(0x05DC, 0x05BC)) - table.put(0xFB3B, intArrayOf(0x05DB, 0x05BC)) - table.put(0xFB3A, intArrayOf(0x05DA, 0x05BC)) - table.put(0x2F809, intArrayOf(0x5099)) - table.put(0x2F808, intArrayOf(0x507A)) - table.put(0x2F807, intArrayOf(0x5002)) - table.put(0x2F806, intArrayOf(0x4FBB)) - table.put(0xFB39, intArrayOf(0x05D9, 0x05BC)) - table.put(0x2F805, intArrayOf(0x4FAE)) - table.put(0xFB38, intArrayOf(0x05D8, 0x05BC)) - table.put(0x2F804, intArrayOf(0x4F60)) - table.put(0x2F803, intArrayOf(0x20122)) - table.put(0xFB36, intArrayOf(0x05D6, 0x05BC)) - table.put(0x2F802, intArrayOf(0x4E41)) - table.put(0xFB35, intArrayOf(0x05D5, 0x05BC)) - table.put(0x2F801, intArrayOf(0x4E38)) - table.put(0xFB34, intArrayOf(0x05D4, 0x05BC)) - table.put(0x2F800, intArrayOf(0x4E3D)) - table.put(0x06D3, intArrayOf(0x06D2, 0x0654)) - table.put(0xFB33, intArrayOf(0x05D3, 0x05BC)) - table.put(0xFB32, intArrayOf(0x05D2, 0x05BC)) - table.put(0xFB31, intArrayOf(0x05D1, 0x05BC)) - table.put(0xFB30, intArrayOf(0x05D0, 0x05BC)) - table.put(0xFB2F, intArrayOf(0x05D0, 0x05B8)) - table.put(0xFB2E, intArrayOf(0x05D0, 0x05B7)) - table.put(0xFB2D, intArrayOf(0x05E9, 0x05BC, 0x05C2)) - table.put(0xFB2C, intArrayOf(0x05E9, 0x05BC, 0x05C1)) - table.put(0xFB2B, intArrayOf(0x05E9, 0x05C2)) - table.put(0xFB2A, intArrayOf(0x05E9, 0x05C1)) - table.put(0x2249, intArrayOf(0x2248, 0x0338)) - table.put(0x2247, intArrayOf(0x2245, 0x0338)) - table.put(0x06C2, intArrayOf(0x06C1, 0x0654)) - table.put(0x06C0, intArrayOf(0x06D5, 0x0654)) - table.put(0x2244, intArrayOf(0x2243, 0x0338)) - table.put(0x0FB9, intArrayOf(0x0F90, 0x0FB5)) - table.put(0x2241, intArrayOf(0x223C, 0x0338)) - table.put(0xFB1F, intArrayOf(0x05F2, 0x05B7)) - table.put(0xFB1D, intArrayOf(0x05D9, 0x05B4)) - table.put(0x0FAC, intArrayOf(0x0FAB, 0x0FB7)) - table.put(0x0FA7, intArrayOf(0x0FA6, 0x0FB7)) - table.put(0x0FA2, intArrayOf(0x0FA1, 0x0FB7)) - table.put(0x2226, intArrayOf(0x2225, 0x0338)) - table.put(0x2224, intArrayOf(0x2223, 0x0338)) - table.put(0x220C, intArrayOf(0x220B, 0x0338)) - table.put(0x2209, intArrayOf(0x2208, 0x0338)) - table.put(0x0390, intArrayOf(0x03B9, 0x0308, 0x0301)) - table.put(0x2204, intArrayOf(0x2203, 0x0338)) - table.put(0x038F, intArrayOf(0x03A9, 0x0301)) - table.put(0x038E, intArrayOf(0x03A5, 0x0301)) - table.put(0x038C, intArrayOf(0x039F, 0x0301)) - table.put(0x09DF, intArrayOf(0x09AF, 0x09BC)) - table.put(0x038A, intArrayOf(0x0399, 0x0301)) - table.put(0x09DD, intArrayOf(0x09A2, 0x09BC)) - table.put(0x09DC, intArrayOf(0x09A1, 0x09BC)) - table.put(0x0389, intArrayOf(0x0397, 0x0301)) - table.put(0x0388, intArrayOf(0x0395, 0x0301)) - table.put(0x0387, intArrayOf(0x00B7)) - table.put(0x0386, intArrayOf(0x0391, 0x0301)) - table.put(0x0385, intArrayOf(0x00A8, 0x0301)) - table.put(0x037E, intArrayOf(0x003B)) - table.put(0x09CC, intArrayOf(0x09C7, 0x09D7)) - table.put(0x09CB, intArrayOf(0x09C7, 0x09BE)) - table.put(0x0374, intArrayOf(0x02B9)) - table.put(0x0C48, intArrayOf(0x0C46, 0x0C56)) - table.put(0x0F9D, intArrayOf(0x0F9C, 0x0FB7)) - table.put(0x0344, intArrayOf(0x0308, 0x0301)) - table.put(0x0343, intArrayOf(0x0313)) - table.put(0x0341, intArrayOf(0x0301)) - table.put(0x0340, intArrayOf(0x0300)) - table.put(0x0F93, intArrayOf(0x0F92, 0x0FB7)) - table.put(0x0F81, intArrayOf(0x0F71, 0x0F80)) - table.put(0x0F78, intArrayOf(0x0FB3, 0x0F80)) - table.put(0x1D1C0, intArrayOf(0x1D1BA, 0x1D165, 0x1D16F)) - table.put(0x0F76, intArrayOf(0x0FB2, 0x0F80)) - table.put(0x0F75, intArrayOf(0x0F71, 0x0F74)) - table.put(0x0F73, intArrayOf(0x0F71, 0x0F72)) - table.put(0x1D1BF, intArrayOf(0x1D1B9, 0x1D165, 0x1D16F)) - table.put(0x1D1BE, intArrayOf(0x1D1BA, 0x1D165, 0x1D16E)) - table.put(0x1D1BD, intArrayOf(0x1D1B9, 0x1D165, 0x1D16E)) - table.put(0x1D1BC, intArrayOf(0x1D1BA, 0x1D165)) - table.put(0x1D1BB, intArrayOf(0x1D1B9, 0x1D165)) - table.put(0x0F69, intArrayOf(0x0F40, 0x0FB5)) - table.put(0x0F5C, intArrayOf(0x0F5B, 0x0FB7)) - table.put(0xFAD9, intArrayOf(0x9F8E)) - table.put(0xFAD8, intArrayOf(0x9F43)) - table.put(0xFAD7, intArrayOf(0x27ED3)) - table.put(0xFAD6, intArrayOf(0x25CD0)) - table.put(0xFAD5, intArrayOf(0x25249)) - table.put(0xFAD4, intArrayOf(0x4039)) - table.put(0xFAD3, intArrayOf(0x4018)) - table.put(0xFAD2, intArrayOf(0x3B9D)) - table.put(0xFAD1, intArrayOf(0x233D5)) - table.put(0xFAD0, intArrayOf(0x22844)) - table.put(0x0F57, intArrayOf(0x0F56, 0x0FB7)) - table.put(0x0F52, intArrayOf(0x0F51, 0x0FB7)) - table.put(0xFACF, intArrayOf(0x2284A)) - table.put(0xFACE, intArrayOf(0x9F9C)) - table.put(0xFACD, intArrayOf(0x9B12)) - table.put(0xFACC, intArrayOf(0x983B)) - table.put(0xFACB, intArrayOf(0x980B)) - table.put(0xFACA, intArrayOf(0x97FF)) - table.put(0x0F4D, intArrayOf(0x0F4C, 0x0FB7)) - table.put(0xFAC9, intArrayOf(0x97DB)) - table.put(0xFAC8, intArrayOf(0x9756)) - table.put(0xFAC7, intArrayOf(0x96E3)) - table.put(0xFAC6, intArrayOf(0x967C)) - table.put(0xFAC5, intArrayOf(0x9276)) - table.put(0x2ADC, intArrayOf(0x2ADD, 0x0338)) - table.put(0xFAC4, intArrayOf(0x9199)) - table.put(0xFAC3, intArrayOf(0x9072)) - table.put(0xFAC2, intArrayOf(0x8F38)) - table.put(0xFAC1, intArrayOf(0x8D08)) - table.put(0xFAC0, intArrayOf(0x8B8A)) - table.put(0x0F43, intArrayOf(0x0F42, 0x0FB7)) - table.put(0xFABF, intArrayOf(0x8B39)) - table.put(0xFABE, intArrayOf(0x8AED)) - table.put(0xFABD, intArrayOf(0x8AFE)) - table.put(0xFABC, intArrayOf(0x8B01)) - table.put(0xFABB, intArrayOf(0x8ACB)) - table.put(0xFABA, intArrayOf(0x8AF8)) - table.put(0xFAB9, intArrayOf(0x8ABF)) - table.put(0xFAB8, intArrayOf(0x8996)) - table.put(0xFAB7, intArrayOf(0x8986)) - table.put(0xFAB6, intArrayOf(0x8941)) - table.put(0xFAB5, intArrayOf(0x8779)) - table.put(0xFAB4, intArrayOf(0x83EF)) - table.put(0xFAB3, intArrayOf(0x8352)) - table.put(0xFAB2, intArrayOf(0x8005)) - table.put(0xFAB1, intArrayOf(0x7F3E)) - table.put(0xFAB0, intArrayOf(0x7DF4)) - table.put(0xFAAF, intArrayOf(0x7D5B)) - table.put(0xFAAE, intArrayOf(0x7C7B)) - table.put(0xFAAD, intArrayOf(0x7BC0)) - table.put(0xFAAC, intArrayOf(0x7AB1)) - table.put(0xFAAB, intArrayOf(0x78CC)) - table.put(0x2FA1D, intArrayOf(0x2A600)) - table.put(0x21CF, intArrayOf(0x21D2, 0x0338)) - table.put(0xFAAA, intArrayOf(0x7740)) - table.put(0x2FA1C, intArrayOf(0x9F3B)) - table.put(0x21CE, intArrayOf(0x21D4, 0x0338)) - table.put(0x2FA1B, intArrayOf(0x9F16)) - table.put(0x21CD, intArrayOf(0x21D0, 0x0338)) - table.put(0x2FA1A, intArrayOf(0x9F0F)) - table.put(0xFAA9, intArrayOf(0x774A)) - table.put(0xFAA8, intArrayOf(0x76F4)) - table.put(0xFAA7, intArrayOf(0x76DB)) - table.put(0x2FA19, intArrayOf(0x9F05)) - table.put(0xFAA6, intArrayOf(0x76CA)) - table.put(0x2FA18, intArrayOf(0x9EFE)) - table.put(0xFAA5, intArrayOf(0x761F)) - table.put(0x2FA17, intArrayOf(0x9EF9)) - table.put(0xFAA4, intArrayOf(0x761D)) - table.put(0x2FA16, intArrayOf(0x4D56)) - table.put(0xFAA3, intArrayOf(0x753B)) - table.put(0x2FA15, intArrayOf(0x9EBB)) - table.put(0xFAA2, intArrayOf(0x7506)) - table.put(0x2FA14, intArrayOf(0x2A291)) - table.put(0xFAA1, intArrayOf(0x7471)) - table.put(0x2FA13, intArrayOf(0x2A20E)) - table.put(0xFAA0, intArrayOf(0x732A)) - table.put(0x2FA12, intArrayOf(0x2A105)) - table.put(0x2FA11, intArrayOf(0x4CF8)) - table.put(0x2FA10, intArrayOf(0x2A0CE)) - table.put(0x2FA0F, intArrayOf(0x9D67)) - table.put(0x2FA0E, intArrayOf(0x4CED)) - table.put(0x2FA0D, intArrayOf(0x4CCE)) - table.put(0x2FA0C, intArrayOf(0x9CFD)) - table.put(0x2FA0B, intArrayOf(0x9C40)) - table.put(0x2FA0A, intArrayOf(0x9B12)) - table.put(0x2FA09, intArrayOf(0x29B30)) - table.put(0x0626, intArrayOf(0x064A, 0x0654)) - table.put(0x2FA08, intArrayOf(0x4BCE)) - table.put(0x0625, intArrayOf(0x0627, 0x0655)) - table.put(0x2FA07, intArrayOf(0x99FE)) - table.put(0x0624, intArrayOf(0x0648, 0x0654)) - table.put(0x2FA06, intArrayOf(0x99C2)) - table.put(0x0623, intArrayOf(0x0627, 0x0654)) - table.put(0x2FA05, intArrayOf(0x99A7)) - table.put(0x0622, intArrayOf(0x0627, 0x0653)) - table.put(0x2FA04, intArrayOf(0x9929)) - table.put(0x2FA03, intArrayOf(0x4B33)) - table.put(0x2FA02, intArrayOf(0x98E2)) - table.put(0x2FA01, intArrayOf(0x295B6)) - table.put(0x2FA00, intArrayOf(0x9829)) - table.put(0x21AE, intArrayOf(0x2194, 0x0338)) - table.put(0x095F, intArrayOf(0x092F, 0x093C)) - table.put(0x095E, intArrayOf(0x092B, 0x093C)) - table.put(0x095D, intArrayOf(0x0922, 0x093C)) - table.put(0x095C, intArrayOf(0x0921, 0x093C)) - table.put(0x095B, intArrayOf(0x091C, 0x093C)) - table.put(0x095A, intArrayOf(0x0917, 0x093C)) - table.put(0x0959, intArrayOf(0x0916, 0x093C)) - table.put(0x0958, intArrayOf(0x0915, 0x093C)) - table.put(0x0934, intArrayOf(0x0933, 0x093C)) - table.put(0x0931, intArrayOf(0x0930, 0x093C)) - return@lazy table - } -} - - -/** - * This class gives us a hashtable that contains information about - * symbols that are one symbol decompositions that is - * generated from - * http://www.unicode.org/Public/4.0-Update/UnicodeData-4.0.0.txt. - */ -internal object SingleDecompositions{ - val hashSingleDecompositions: IntHash by lazy { - val table = IntHash(1030) - table.put(0x6688, 0) - table.put(0x00B7, 0) - table.put(0x86A9, 0) - table.put(0x00B4, 0) - table.put(0x7409, 0) - table.put(0x559D, 0) - table.put(0x884C, 0) - table.put(0x523B, 0) - table.put(0x6DCB, 0) - table.put(0x8AFE, 0) - table.put(0x523A, 0) - table.put(0x7406, 0) - table.put(0x53F1, 0) - table.put(0x5599, 0) - table.put(0x6F6E, 0) - table.put(0x8AF8, 0) - table.put(0x3862, 0) - table.put(0x5B28, 0) - table.put(0x53EB, 0) - table.put(0x2300A, 0) - table.put(0x9929, 0) - table.put(0x9928, 0) - table.put(0x6674, 0) - table.put(0x8046, 0) - table.put(0x53E5, 0) - table.put(0x8AED, 0) - table.put(0x2054B, 0) - table.put(0x5229, 0) - table.put(0x64C4, 0) - table.put(0x278AE, 0) - table.put(0x53DF, 0) - table.put(0x5587, 0) - table.put(0x2335F, 0) - table.put(0x5584, 0) - table.put(0x92D8, 0) - table.put(0x92D7, 0) - table.put(0x5E74, 0) - table.put(0x774A, 0) - table.put(0x911B, 0) - table.put(0x81ED, 0) - table.put(0x78FB, 0) - table.put(0x5CC0, 0) - table.put(0x7740, 0) - table.put(0x81E8, 0) - table.put(0x9111, 0) - table.put(0x9D67, 0) - table.put(0x5217, 0) - table.put(0x2A20E, 0) - table.put(0x5B08, 0) - table.put(0x5E69, 0) - table.put(0x8AD6, 0) - table.put(0x267B5, 0) - table.put(0x412F, 0) - table.put(0x53CA, 0) - table.put(0x8AD2, 0) - table.put(0x881F, 0) - table.put(0x53C3, 0) - table.put(0x2940A, 0) - table.put(0x8ACB, 0) - table.put(0x256C5, 0) - table.put(0x4BCE, 0) - table.put(0x81D8, 0) - table.put(0x5207, 0) - table.put(0x267A7, 0) - table.put(0x3AE4, 0) - table.put(0x5203, 0) - table.put(0x5563, 0) - table.put(0x7295, 0) - table.put(0x20525, 0) - table.put(0x6649, 0) - table.put(0x23F8E, 0) - table.put(0x382F, 0) - table.put(0x295B6, 0) - table.put(0x67FA, 0) - table.put(0x8ABF, 0) - table.put(0x2051C, 0) - table.put(0x03CE, 0) - table.put(0x67F3, 0) - table.put(0x9EFE, 0) - table.put(0x03CD, 0) - table.put(0x03CC, 0) - table.put(0x5555, 0) - table.put(0x5553, 0) - table.put(0x771F, 0) - table.put(0x8801, 0) - table.put(0x771E, 0) - table.put(0x446B, 0) - table.put(0x7280, 0) - table.put(0x9EF9, 0) - table.put(0x8005, 0) - table.put(0x70D9, 0) - table.put(0x8363, 0) - table.put(0x8001, 0) - table.put(0x5FF9, 0) - table.put(0x6F23, 0) - table.put(0x6F22, 0) - table.put(0x8C55, 0) - table.put(0x5E3D, 0) - table.put(0x5FF5, 0) - table.put(0x8AAA, 0) - table.put(0x78CC, 0) - table.put(0x78CA, 0) - table.put(0x4D56, 0) - table.put(0x6190, 0) - table.put(0x8AA0, 0) - table.put(0x618E, 0) - table.put(0x03B9, 0) - table.put(0x56F9, 0) - table.put(0x273CA, 0) - table.put(0x70C8, 0) - table.put(0x8353, 0) - table.put(0x8C48, 0) - table.put(0x8352, 0) - table.put(0x03B0, 0) - table.put(0x25044, 0) - table.put(0x7701, 0) - table.put(0x03AF, 0) - table.put(0x03AE, 0) - table.put(0x6F0F, 0) - table.put(0x03AD, 0) - table.put(0x03AC, 0) - table.put(0x5E28, 0) - table.put(0x8F9E, 0) - table.put(0x3009, 0) - table.put(0x7262, 0) - table.put(0x3008, 0) - table.put(0x23F5E, 0) - table.put(0x8DF0, 0) - table.put(0x03A9, 0) - table.put(0x42A0, 0) - table.put(0x5099, 0) - table.put(0x262D9, 0) - table.put(0x617A, 0) - table.put(0x6613, 0) - table.put(0x84FC, 0) - table.put(0x8DEF, 0) - table.put(0x5FD7, 0) - table.put(0x26D6B, 0) - table.put(0x27CA8, 0) - table.put(0x9ECE, 0) - table.put(0x22B0C, 0) - table.put(0x3C4E, 0) - table.put(0x84F3, 0) - table.put(0x25C80, 0) - table.put(0x45F9, 0) - table.put(0x84F1, 0) - table.put(0x70AD, 0) - table.put(0x5FCD, 0) - table.put(0x7250, 0) - table.put(0x4EE4, 0) - table.put(0x8336, 0) - table.put(0x84EE, 0) - table.put(0x6168, 0) - table.put(0x9415, 0) - table.put(0x24735, 0) - table.put(0x6160, 0) - table.put(0x9EBB, 0) - table.put(0x507A, 0) - table.put(0x5510, 0) - table.put(0x8688, 0) - table.put(0x8323, 0) - table.put(0x7CE8, 0) - table.put(0x8DCB, 0) - table.put(0x7CE7, 0) - table.put(0x7CE3, 0) - table.put(0x4ECC, 0) - table.put(0x831D, 0) - table.put(0x7235, 0) - table.put(0x45D7, 0) - table.put(0x95B7, 0) - table.put(0x5FAD, 0) - table.put(0x614E, 0) - table.put(0x614C, 0) - table.put(0x7B20, 0) - table.put(0x6942, 0) - table.put(0x4EC0, 0) - table.put(0x585E, 0) - table.put(0x5FA9, 0) - table.put(0x8DBC, 0) - table.put(0x585A, 0) - table.put(0x722B, 0) - table.put(0x6148, 0) - table.put(0x8F62, 0) - table.put(0x23A8D, 0) - table.put(0x7CD6, 0) - table.put(0x9756, 0) - table.put(0x95AD, 0) - table.put(0x62FE, 0) - table.put(0x6144, 0) - table.put(0x62FC, 0) - table.put(0x7CD2, 0) - table.put(0x7228, 0) - table.put(0x73DE, 0) - table.put(0x25AA7, 0) - table.put(0x440B, 0) - table.put(0x8669, 0) - table.put(0x34DF, 0) - table.put(0x649D, 0) - table.put(0x8667, 0) - table.put(0x3C18, 0) - table.put(0x649A, 0) - table.put(0x9748, 0) - table.put(0x721B, 0) - table.put(0x98FC, 0) - table.put(0x4EAE, 0) - table.put(0x6D85, 0) - table.put(0x865C, 0) - table.put(0x5840, 0) - table.put(0x20804, 0) - table.put(0x90FD, 0) - table.put(0x7210, 0) - table.put(0x7CBE, 0) - table.put(0x7570, 0) - table.put(0x24263, 0) - table.put(0x0060, 0) - table.put(0x8650, 0) - table.put(0x29B30, 0) - table.put(0x98EF, 0) - table.put(0x90F1, 0) - table.put(0x6D78, 0) - table.put(0x9732, 0) - table.put(0x6D77, 0) - table.put(0x51F5, 0) - table.put(0x6A13, 0) - table.put(0x2A392, 0) - table.put(0x59EC, 0) - table.put(0x5832, 0) - table.put(0x7565, 0) - table.put(0x5831, 0) - table.put(0x5C8D, 0) - table.put(0x8F3B, 0) - table.put(0x647E, 0) - table.put(0x2569A, 0) - table.put(0x62D4, 0) - table.put(0x62D3, 0) - table.put(0x28BFA, 0) - table.put(0x6914, 0) - table.put(0x98E2, 0) - table.put(0x34BB, 0) - table.put(0x8F38, 0) - table.put(0x6D6A, 0) - table.put(0x73B2, 0) - table.put(0x34B9, 0) - table.put(0x62CF, 0) - table.put(0x6477, 0) - table.put(0x226D4, 0) - table.put(0x25F86, 0) - table.put(0x6D69, 0) - table.put(0x9723, 0) - table.put(0x863F, 0) - table.put(0x004B, 0) - table.put(0x7559, 0) - table.put(0x502B, 0) - table.put(0x6A02, 0) - table.put(0x6BBB, 0) - table.put(0x6BBA, 0) - table.put(0x62C9, 0) - table.put(0x8F2A, 0) - table.put(0x7E45, 0) - table.put(0x7E41, 0) - table.put(0x7FFA, 0) - table.put(0x51DE, 0) - table.put(0x59D8, 0) - table.put(0x8996, 0) - table.put(0x51DC, 0) - table.put(0x8F26, 0) - table.put(0x73A5, 0) - table.put(0x6108, 0) - table.put(0x6469, 0) - table.put(0x927C, 0) - table.put(0x9B6F, 0) - table.put(0x537F, 0) - table.put(0x6BAE, 0) - table.put(0x003B, 0) - table.put(0x862D, 0) - table.put(0x537D, 0) - table.put(0x2921A, 0) - table.put(0x898B, 0) - table.put(0x87E1, 0) - table.put(0x5C6E, 0) - table.put(0x90CE, 0) - table.put(0x9276, 0) - table.put(0x7E37, 0) - table.put(0x62B1, 0) - table.put(0x8986, 0) - table.put(0x5375, 0) - table.put(0x51CC, 0) - table.put(0x5373, 0) - table.put(0x580D, 0) - table.put(0x0390, 0) - table.put(0x753E, 0) - table.put(0x5C65, 0) - table.put(0x5C64, 0) - table.put(0x76F4, 0) - table.put(0x21D0B, 0) - table.put(0x40E3, 0) - table.put(0x753B, 0) - table.put(0x5C62, 0) - table.put(0x5C60, 0) - table.put(0x51C9, 0) - table.put(0x038F, 0) - table.put(0x038E, 0) - table.put(0x6452, 0) - table.put(0x038C, 0) - table.put(0x038A, 0) - table.put(0x6D41, 0) - table.put(0x5AB5, 0) - table.put(0x28D77, 0) - table.put(0x0389, 0) - table.put(0x7891, 0) - table.put(0x0388, 0) - table.put(0x0386, 0) - table.put(0x0385, 0) - table.put(0x265A8, 0) - table.put(0x6D3E, 0) - table.put(0x7099, 0) - table.put(0x5002, 0) - table.put(0x8612, 0) - table.put(0x76E7, 0) - table.put(0x788C, 0) - table.put(0x51B7, 0) - table.put(0x2284A, 0) - table.put(0x51B5, 0) - table.put(0x6D34, 0) - table.put(0x535A, 0) - table.put(0x3F1B, 0) - table.put(0x7524, 0) - table.put(0x76DB, 0) - table.put(0x22844, 0) - table.put(0x8606, 0) - table.put(0x9CFD, 0) - table.put(0x51AC, 0) - table.put(0x8964, 0) - table.put(0x87BA, 0) - table.put(0x5351, 0) - table.put(0x5DFD, 0) - table.put(0x6797, 0) - table.put(0x9E9F, 0) - table.put(0x51A4, 0) - table.put(0x6EDB, 0) - table.put(0x5C3F, 0) - table.put(0x707D, 0) - table.put(0x7E09, 0) - table.put(0x76CA, 0) - table.put(0x5F9A, 0) - table.put(0x7FBD, 0) - table.put(0x5349, 0) - table.put(0x9E97, 0) - table.put(0x65E3, 0) - table.put(0x7E02, 0) - table.put(0x65E2, 0) - table.put(0x6D1E, 0) - table.put(0x7077, 0) - table.put(0x3A6C, 0) - table.put(0x6D1B, 0) - table.put(0x6ED1, 0) - table.put(0x93F9, 0) - table.put(0x7070, 0) - table.put(0x786B, 0) - table.put(0x6785, 0) - table.put(0x6422, 0) - table.put(0x533F, 0) - table.put(0x6D16, 0) - table.put(0x54F6, 0) - table.put(0x6ECB, 0) - table.put(0x7506, 0) - table.put(0x9238, 0) - table.put(0x5DE2, 0) - table.put(0x5F8B, 0) - table.put(0x9234, 0) - table.put(0x5DE1, 0) - table.put(0x641C, 0) - table.put(0x677B, 0) - table.put(0x6EC7, 0) - table.put(0x243AB, 0) - table.put(0x2346D, 0) - table.put(0x8941, 0) - table.put(0x4CF8, 0) - table.put(0x5C22, 0) - table.put(0x958B, 0) - table.put(0x9E7F, 0) - table.put(0x6EBA, 0) - table.put(0x65C5, 0) - table.put(0x4CED, 0) - table.put(0x4B33, 0) - table.put(0x813E, 0) - table.put(0x232B8, 0) - table.put(0x9B12, 0) - table.put(0x784E, 0) - table.put(0x25626, 0) - table.put(0x285ED, 0) - table.put(0x704A, 0) - table.put(0x5F6B, 0) - table.put(0x2063A, 0) - table.put(0x2597C, 0) - table.put(0x4E86, 0) - table.put(0x675E, 0) - table.put(0x82E6, 0) - table.put(0x5317, 0) - table.put(0x82E5, 0) - table.put(0x4E82, 0) - table.put(0x5674, 0) - table.put(0x5F69, 0) - table.put(0x5C06, 0) - table.put(0x7AEE, 0) - table.put(0x5DBA, 0) - table.put(0x5F62, 0) - table.put(0x6756, 0) - table.put(0x7C92, 0) - table.put(0x6753, 0) - table.put(0x3D96, 0) - table.put(0x393A, 0) - table.put(0x8D77, 0) - table.put(0x4227, 0) - table.put(0x5DB2, 0) - table.put(0x79EB, 0) - table.put(0x4CCE, 0) - table.put(0x674E, 0) - table.put(0x349E, 0) - table.put(0x5668, 0) - table.put(0x5306, 0) - table.put(0x7039, 0) - table.put(0x3A2E, 0) - table.put(0x5305, 0) - table.put(0x54BD, 0) - table.put(0x43D9, 0) - table.put(0x8910, 0) - table.put(0x43D5, 0) - table.put(0x5F53, 0) - table.put(0x285D2, 0) - table.put(0x6B9F, 0) - table.put(0x738B, 0) - table.put(0x26B3C, 0) - table.put(0x7C7B, 0) - table.put(0x26247, 0) - table.put(0x0313, 0) - table.put(0x7387, 0) - table.put(0x5651, 0) - table.put(0x23D1E, 0) - table.put(0x456B, 0) - table.put(0x7ACB, 0) - table.put(0x23ED1, 0) - table.put(0x82BD, 0) - table.put(0x391C, 0) - table.put(0x8103, 0) - table.put(0x24FB8, 0) - table.put(0x701E, 0) - table.put(0x54A2, 0) - table.put(0x701B, 0) - table.put(0x737A, 0) - table.put(0x4202, 0) - table.put(0x71D0, 0) - table.put(0x79CA, 0) - table.put(0x4561, 0) - table.put(0x82B3, 0) - table.put(0x0301, 0) - table.put(0x82B1, 0) - table.put(0x0300, 0) - table.put(0x71CE, 0) - table.put(0x7375, 0) - table.put(0x455D, 0) - table.put(0x96F7, 0) - table.put(0x96F6, 0) - table.put(0x8457, 0) - table.put(0x22331, 0) - table.put(0x60E1, 0) - table.put(0x7C60, 0) - table.put(0x6721, 0) - table.put(0x57F4, 0) - table.put(0x26CD5, 0) - table.put(0x24FA1, 0) - table.put(0x6B79, 0) - table.put(0x6B77, 0) - table.put(0x7AB1, 0) - table.put(0x26228, 0) - table.put(0x671B, 0) - table.put(0x4E41, 0) - table.put(0x6B72, 0) - table.put(0x60D8, 0) - table.put(0x9094, 0) - table.put(0x5F22, 0) - table.put(0x6717, 0) - table.put(0x27667, 0) - table.put(0x8449, 0) - table.put(0x96E3, 0) - table.put(0x4E3D, 0) - table.put(0x96E2, 0) - table.put(0x5197, 0) - table.put(0x9E1E, 0) - table.put(0x5195, 0) - table.put(0x5192, 0) - table.put(0x85FA, 0) - table.put(0x79AE, 0) - table.put(0x908F, 0) - table.put(0x4E39, 0) - table.put(0x25133, 0) - table.put(0x4E38, 0) - table.put(0x4E32, 0) - table.put(0x843D, 0) - table.put(0x518D, 0) - table.put(0x60C7, 0) - table.put(0x291DF, 0) - table.put(0x6700, 0) - table.put(0x5180, 0) - table.put(0x24C92, 0) - table.put(0x7C3E, 0) - table.put(0x907C, 0) - table.put(0x4E26, 0) - table.put(0x7DF4, 0) - table.put(0x7F9A, 0) - table.put(0x6B54, 0) - table.put(0x21B18, 0) - table.put(0x57CE, 0) - table.put(0x2003, 0) - table.put(0x2002, 0) - table.put(0x4096, 0) - table.put(0x5973, 0) - table.put(0x8ED4, 0) - table.put(0x2872E, 0) - table.put(0x8D1B, 0) - table.put(0x5F04, 0) - table.put(0x452B, 0) - table.put(0x625D, 0) - table.put(0x7F95, 0) - table.put(0x9072, 0) - table.put(0x20A2C, 0) - table.put(0x96C3, 0) - table.put(0x5177, 0) - table.put(0x8786, 0) - table.put(0x25119, 0) - table.put(0x3D33, 0) - table.put(0x5A66, 0) - table.put(0x2A600, 0) - table.put(0x5A62, 0) - table.put(0x8ECA, 0) - table.put(0x68A8, 0) - table.put(0x27F2F, 0) - table.put(0x516D, 0) - table.put(0x5606, 0) - table.put(0x5962, 0) - table.put(0x96B8, 0) - table.put(0x985E, 0) - table.put(0x7F85, 0) - table.put(0x5169, 0) - table.put(0x8779, 0) - table.put(0x4E0D, 0) - table.put(0x5168, 0) - table.put(0x5167, 0) - table.put(0x85CD, 0) - table.put(0x5164, 0) - table.put(0x8D08, 0) - table.put(0x6E9C, 0) - table.put(0x20122, 0) - table.put(0x732A, 0) - table.put(0x4FBF, 0) - table.put(0x7F7A, 0) - table.put(0x25BAB, 0) - table.put(0x4FBB, 0) - table.put(0x24814, 0) - table.put(0x876B, 0) - table.put(0x5954, 0) - table.put(0x46C7, 0) - table.put(0x5951, 0) - table.put(0x7F79, 0) - table.put(0x96A3, 0) - table.put(0x7F72, 0) - table.put(0x6CE5, 0) - table.put(0x5154, 0) - table.put(0x3781, 0) - table.put(0x5BFF, 0) - table.put(0x46BE, 0) - table.put(0x6599, 0) - table.put(0x7DC7, 0) - table.put(0x99FE, 0) - table.put(0x6234, 0) - table.put(0x4FAE, 0) - table.put(0x5948, 0) - table.put(0x514D, 0) - table.put(0x5944, 0) - table.put(0x6B21, 0) - table.put(0x2219F, 0) - table.put(0x5BF3, 0) - table.put(0x74CA, 0) - table.put(0x7DBE, 0) - table.put(0x622E, 0) - table.put(0x63E4, 0) - table.put(0x983B, 0) - table.put(0x99F1, 0) - table.put(0x5145, 0) - table.put(0x52FA, 0) - table.put(0x5BEE, 0) - table.put(0x5140, 0) - table.put(0x3EB8, 0) - table.put(0x549E, 0) - table.put(0x52F5, 0) - table.put(0x6CCD, 0) - table.put(0x7669, 0) - table.put(0x6CCC, 0) - table.put(0x5BE7, 0) - table.put(0x26523, 0) - table.put(0x9038, 0) - table.put(0x27966, 0) - table.put(0x621B, 0) - table.put(0x6E6E, 0) - table.put(0x5A27, 0) - table.put(0x3EAC, 0) - table.put(0x88FA, 0) - table.put(0x9829, 0) - table.put(0x6578, 0) - table.put(0x22183, 0) - table.put(0x88F8, 0) - table.put(0x6CBF, 0) - table.put(0x7DA0, 0) - table.put(0x6210, 0) - table.put(0x6B04, 0) - table.put(0x52E4, 0) - table.put(0x5BD8, 0) - table.put(0x216EA, 0) - table.put(0x4046, 0) - table.put(0x5922, 0) - table.put(0x5D7C, 0) - table.put(0x5A1B, 0) - table.put(0x9023, 0) - table.put(0x63C5, 0) - table.put(0x63C4, 0) - table.put(0x656C, 0) - table.put(0x829D, 0) - table.put(0x52DE, 0) - table.put(0x24C36, 0) - table.put(0x591A, 0) - table.put(0x9818, 0) - table.put(0x8B8A, 0) - table.put(0x7F3E, 0) - table.put(0x26FB1, 0) - table.put(0x91D1, 0) - table.put(0x6200, 0) - table.put(0x4039, 0) - table.put(0x238A7, 0) - table.put(0x8291, 0) - table.put(0x52D2, 0) - table.put(0x88E1, 0) - table.put(0x5D6E, 0) - table.put(0x91CF, 0) - table.put(0x5BC3, 0) - table.put(0x2541D, 0) - table.put(0x49E6, 0) - table.put(0x8B80, 0) - table.put(0x7642, 0) - table.put(0x5D6B, 0) - table.put(0x91CC, 0) - table.put(0x980B, 0) - table.put(0x8728, 0) - table.put(0x99C2, 0) - table.put(0x88DE, 0) - table.put(0x828B, 0) - table.put(0x3B9D, 0) - table.put(0x6556, 0) - table.put(0x52C9, 0) - table.put(0x52C7, 0) - table.put(0x88D7, 0) - table.put(0x2A105, 0) - table.put(0x6FFE, 0) - table.put(0x5906, 0) - table.put(0x719C, 0) - table.put(0x63A9, 0) - table.put(0x654F, 0) - table.put(0x9C57, 0) - table.put(0x5468, 0) - table.put(0x88CF, 0) - table.put(0x63A0, 0) - table.put(0x798F, 0) - table.put(0x798E, 0) - table.put(0x798D, 0) - table.put(0x91B4, 0) - table.put(0x8279, 0) - table.put(0x5D50, 0) - table.put(0x7A81, 0) - table.put(0x870E, 0) - table.put(0x38E3, 0) - table.put(0x4018, 0) - table.put(0x52B3, 0) - table.put(0x6FEB, 0) - table.put(0x88C2, 0) - table.put(0x66F8, 0) - table.put(0x99A7, 0) - table.put(0x66F4, 0) - table.put(0x826F, 0) - table.put(0x6E2F, 0) - table.put(0x9DFA, 0) - table.put(0x22BF1, 0) - table.put(0x9C40, 0) - table.put(0x761F, 0) - table.put(0x797F, 0) - table.put(0x761D, 0) - table.put(0x5EFE, 0) - table.put(0x5D43, 0) - table.put(0x934A, 0) - table.put(0x4AB2, 0) - table.put(0x9F9C, 0) - table.put(0x8B58, 0) - table.put(0x52A3, 0) - table.put(0x4008, 0) - table.put(0x6094, 0) - table.put(0x7610, 0) - table.put(0x688E, 0) - table.put(0x216A8, 0) - table.put(0x5448, 0) - table.put(0x80B2, 0) - table.put(0x233D5, 0) - table.put(0x6E1A, 0) - table.put(0x5442, 0) - table.put(0x5EEC, 0) - table.put(0x02B9, 0) - table.put(0x6885, 0) - table.put(0x38C7, 0) - table.put(0x9F8E, 0) - table.put(0x80AD, 0) - table.put(0x9F8D, 0) - table.put(0x6881, 0) - table.put(0x4359, 0) - table.put(0x716E, 0) - table.put(0x7965, 0) - table.put(0x23CBC, 0) - table.put(0x5438, 0) - table.put(0x6081, 0) - table.put(0x6FC6, 0) - table.put(0x261DA, 0) - table.put(0x233C3, 0) - table.put(0x795E, 0) - table.put(0x795D, 0) - table.put(0x250F3, 0) - table.put(0x250F2, 0) - table.put(0x8B39, 0) - table.put(0x5ED9, 0) - table.put(0x578B, 0) - table.put(0x55E2, 0) - table.put(0x7956, 0) - table.put(0x7A4F, 0) - table.put(0x9686, 0) - table.put(0x5ED3, 0) - table.put(0x5ED2, 0) - table.put(0x66C6, 0) - table.put(0x7950, 0) - table.put(0x7A4A, 0) - table.put(0x5D19, 0) - table.put(0x83F1, 0) - table.put(0x77A7, 0) - table.put(0x5ECA, 0) - table.put(0x967C, 0) - table.put(0x83EF, 0) - table.put(0x3B49, 0) - table.put(0x7A40, 0) - table.put(0x4F8B, 0) - table.put(0x541D, 0) - table.put(0x7949, 0) - table.put(0x5EC9, 0) - table.put(0x7948, 0) - table.put(0x9678, 0) - table.put(0x4334, 0) - table.put(0x9675, 0) - table.put(0x4F86, 0) - table.put(0x66B4, 0) - table.put(0x83E7, 0) - table.put(0x7149, 0) - table.put(0x4F80, 0) - table.put(0x7145, 0) - table.put(0x8CD3, 0) - table.put(0x793E, 0) - table.put(0x72FC, 0) - table.put(0x793C, 0) - table.put(0x9DB4, 0) - table.put(0x540F, 0) - table.put(0x6852, 0) - table.put(0x83DC, 0) - table.put(0x55C2, 0) - table.put(0x5EB6, 0) - table.put(0x55C0, 0) - table.put(0x5EB3, 0) - table.put(0x9304, 0) - table.put(0x5EB0, 0) - table.put(0x219C8, 0) - table.put(0x5406, 0) - table.put(0x8CC8, 0) - table.put(0x7498, 0) - table.put(0x208DE, 0) - table.put(0x8CC2, 0) - table.put(0x8CC1, 0) - table.put(0x792A, 0) - table.put(0x83CC, 0) - table.put(0x83CA, 0) - table.put(0x55B3, 0) - table.put(0x5EA6, 0) - table.put(0x8B01, 0) - table.put(0x83C9, 0) - table.put(0x7A1C, 0) - table.put(0x9F43, 0) - table.put(0x7489, 0) - table.put(0x4F60, 0) - table.put(0x27ED3, 0) - table.put(0x55AB, 0) - table.put(0x7485, 0) - table.put(0x26C36, 0) - table.put(0x61F6, 0) - table.put(0x964D, 0) - table.put(0x964B, 0) - table.put(0x61F2, 0) - table.put(0x3B19, 0) - table.put(0x8204, 0) - table.put(0x83BD, 0) - table.put(0x69EA, 0) - table.put(0x2633E, 0) - table.put(0x8564, 0) - table.put(0x9F3B, 0) - table.put(0x8201, 0) - table.put(0x7BC9, 0) - table.put(0x8CAB, 0) - table.put(0x97FF, 0) - table.put(0x7BC6, 0) - table.put(0x24608, 0) - table.put(0x4301, 0) - table.put(0x20B63, 0) - table.put(0x6C88, 0) - table.put(0x7BC0, 0) - table.put(0x6ADB, 0) - table.put(0x7471, 0) - table.put(0x7D63, 0) - table.put(0x3B08, 0) - table.put(0x29145, 0) - table.put(0x83AD, 0) - table.put(0x58F7, 0) - table.put(0x6AD3, 0) - table.put(0x25249, 0) - table.put(0x58F2, 0) - table.put(0x72C0, 0) - table.put(0x61DE, 0) - table.put(0x681F, 0) - table.put(0x7D5B, 0) - table.put(0x6383, 0) - table.put(0x7469, 0) - table.put(0x58EE, 0) - table.put(0x529B, 0) - table.put(0x2A291, 0) - table.put(0x9199, 0) - table.put(0x264DA, 0) - table.put(0x962E, 0) - table.put(0x6817, 0) - table.put(0x601C, 0) - table.put(0x637B, 0) - table.put(0x29496, 0) - table.put(0x97E0, 0) - table.put(0x21DE6, 0) - table.put(0x21DE4, 0) - table.put(0x5B85, 0) - table.put(0x745C, 0) - table.put(0x97DB, 0) - table.put(0x6012, 0) - table.put(0x50E7, 0) - table.put(0x6C67, 0) - table.put(0x9F16, 0) - table.put(0x58DF, 0) - table.put(0x72AF, 0) - table.put(0x5289, 0) - table.put(0x9F0F, 0) - table.put(0x58D8, 0) - table.put(0x214E4, 0) - table.put(0x25CD0, 0) - table.put(0x50DA, 0) - table.put(0x3FFC, 0) - table.put(0x6368, 0) - table.put(0x4635, 0) - table.put(0x4995, 0) - table.put(0x2A0CE, 0) - table.put(0x9F05, 0) - table.put(0x5717, 0) - table.put(0x9A6A, 0) - table.put(0x5716, 0) - table.put(0x7447, 0) - table.put(0x86E2, 0) - table.put(0x236A3, 0) - table.put(0x23AFA, 0) - table.put(0x6AA8, 0) - table.put(0x61B2, 0) - table.put(0x5277, 0) - table.put(0x50CF, 0) - table.put(0x36FC, 0) - table.put(0x6C4E, 0) - table.put(0x808B, 0) - table.put(0x5272, 0) - table.put(0x7D2F, 0) - table.put(0x61AF, 0) - table.put(0x916A, 0) - table.put(0x69A3, 0) - table.put(0x6350, 0) - table.put(0x4A76, 0) - table.put(0x61A4, 0) - table.put(0x6DF9, 0) - table.put(0x807E, 0) - table.put(0x7D22, 0) - table.put(0x36EE, 0) - table.put(0x8516, 0) - table.put(0x58B3, 0) - table.put(0x2339C, 0) - table.put(0x75E2, 0) - table.put(0x778B, 0) - table.put(0x4A6E, 0) - table.put(0x8070, 0) - table.put(0x8FB6, 0) - table.put(0x6DEA, 0) - table.put(0x58AC, 0) - table.put(0x23393, 0) - table.put(0x7422, 0) - table.put(0x8FB0, 0) - table.put(0x633D, 0) - table.put(0x806F, 0) - table.put(0x669C, 0) - table.put(0x7D10, 0) - table.put(0x58A8, 0) - table.put(0x8863, 0) - table.put(0x8860, 0) - table.put(0x26F2C, 0) - table.put(0x00C5, 0) - table.put(0x6691, 0) - table.put(0x387C, 0) - table.put(0x8060, 0) - table.put(0x6DDA, 0) - table.put(0x5B3E, 0) - table.put(0x3515, 0) - table.put(0x270D2, 0) - table.put(0x5246, 0) - table.put(0x7D00, 0) - return@lazy table - } -} - diff --git a/runtime/src/main/kotlin/kotlin/text/regex/Lexer.kt b/runtime/src/main/kotlin/kotlin/text/regex/Lexer.kt index a52b9fbbf78..4ed33c12e1d 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/Lexer.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/Lexer.kt @@ -16,7 +16,22 @@ */ // TODO: Licenses. -package kotlin.text +package kotlin.text.regex + +// Access to the decomposition tables. ========================================================================= +/** Gets canonical class for given codepoint from decomposition mappings table. */ +@SymbolName("Kotlin_text_regex_getCanonicalClassInternal") +external private fun getCanonicalClassInternal(ch: Int): Int + +/** Check if the given character is in table of single decompositions. */ +@SymbolName("Kotlin_text_regex_hasSingleCodepointDecompositionInternal") +external private fun hasSingleCodepointDecompositionInternal(ch: Int): Boolean + +/** Returns a decomposition for a given codepoint. */ +@SymbolName("Kotlin_text_getDecompositionInternal") +external private fun getDecompositionInternal(ch: Int): IntArray? + +// ============================================================================================================= /** * The purpose of this class is to break given pattern into RE tokens; @@ -749,8 +764,18 @@ internal class Lexer(val patternString: String, flags: Int) { return ch >= 0 } + private fun String.codePointAt(index: Int): Int { + val high = this[index] + if (high.isHighSurrogate() && index + 1 < this.length) { + val low = this[index + 1] + if (low.isLowSurrogate()) { + return Char.toCodePoint(high, low) + } + } + return high.toInt() + } + // Decomposition =============================================================================================== - // TODO: Move to C++ side. // Maximum length of decomposition. val MAX_DECOMPOSITION_LENGTH = 4 // Maximum length of Hangul decomposition. Note that MAX_HANGUL_DECOMPOSITION_LENGTH <= MAX_DECOMPOSITION_LENGTH. @@ -772,33 +797,24 @@ internal class Lexer(val patternString: String, flags: Int) { val TCount = 28 val NCount = 588 - // TODO: Use decomposition tables on C++ side. - // TODO: Harmony uses its own IntHash and IntArrHash classes here. - // Canonical decomposition mappings - private var decompTable: IntArrHash? = null + // Access to the decomposition tables. ========================================================================= + /** Gets canonical class for given codepoint from decomposition mappings table. */ + fun getCanonicalClass(ch: Int): Int = getCanonicalClassInternal(ch) - // TODO: Decompositions: - // Table that contains canonical combining classes - private var canonClassesTable: IntHash? = null - private var canonClassesTableSize: Int = 0 + /** Tests Unicode codepoint if it is a boundary of decomposed Unicode codepoint. */ + fun isDecomposedCharBoundary(ch: Int): Boolean = getCanonicalClass(ch) == 0 - /* - * Table that contains information about Unicode codepoints with - * single codepoint decomposition - */ - private var singleDecompTable: IntHash? = null - private var singleDecompTableSize: Int = 0 + /** Tests if given codepoint is a canonical decomposition of another codepoint. */ + fun hasSingleCodepointDecomposition(ch: Int): Boolean = hasSingleCodepointDecompositionInternal(ch) - private fun String.codePointAt(index: Int): Int { - val high = this[index] - if (high.isHighSurrogate() && index + 1 < this.length) { - val low = this[index + 1] - if (low.isLowSurrogate()) { - return Char.toCodePoint(high, low) - } - } - return high.toInt() - } + /** Tests if given codepoint has canonical decomposition and given codepoint's canonical class is not 0. */ + fun hasDecompositionNonNullCanClass(ch: Int): Boolean = + (ch == 0x0340) or (ch == 0x0341) or (ch == 0x0343) or (ch == 0x0344) + + /** Gets decomposition for given codepoint from decomposition mappings table. */ + fun getDecomposition(ch: Int): IntArray? = getDecompositionInternal(ch) + + // ============================================================================================================= /** * Normalize given expression. @@ -833,12 +849,6 @@ internal class Lexer(val patternString: String, flags: Int) { //result of canonical decomposition of input in UTF-16 encoding val result = StringBuilder() - decompTable = HashDecompositions.hashDecompositions - canonClassesTable = CanClasses.hashCanClasses - canonClassesTableSize = canonClassesTable!!.size - singleDecompTable = SingleDecompositions.hashSingleDecompositions - singleDecompTableSize = singleDecompTable!!.size - run { var i = 0 while (i < inputLength) { @@ -963,21 +973,6 @@ internal class Lexer(val patternString: String, flags: Int) { return inputInts } - - /** - * Gets decomposition for given codepoint from - * decomposition mappings table. - - * @param ch - Unicode codepoint - * * - * @return array of codepoints that is a canonical - * * decomposition of currentChar. - */ - // TODO @C++. - fun getDecomposition(ch: Int): IntArray? { - return decompTable!!.get(ch) - } - /** * Gets decomposition for given Hangul syllable. * This is an implementation of Hangul decomposition algorithm @@ -1009,61 +1004,5 @@ internal class Lexer(val patternString: String, flags: Int) { return decomp } } - - /** - * Gets canonical class for given codepoint from - * decomposition mappings table. - - * @param - currentChar Unicode codepoint - * * - * @return canonical class for given Unicode codepoint - * * that is represented by currentChar. - */ - // TODO: C++ - fun getCanonicalClass(ch: Int): Int { - return canonClassesTable!!.get(ch) ?: 0 - } - - /** - * Tests if given codepoint is a canonical decomposition of another - * codepoint. - - * @param ch - codepoint to test - * * - * @return true if currentChar is a decomposition. - */ - // TODO: C++. Called from Pattern - fun hasSingleCodepointDecomposition(ch: Int): Boolean = singleDecompTable!!.get(ch) != null - - /** - * Tests if given codepoint has canonical decomposition - * and given codepoint's canonical class is not 0. - - * @param ch - codepoint to test - * * - * @return true if canonical class is not 0 and currentChar has a decomposition. - */ - // TODO: It's Ok to have this here. Called from DecomposedCharSet. - fun hasDecompositionNonNullCanClass(ch: Int): Boolean { - return (ch == 0x0340) or (ch == 0x0341) or (ch == 0x0343) or (ch == 0x0344) - } - - /** - * Tests Unicode codepoint if it is a boundary - * of decomposed Unicode codepoint. - - * @param ch - Unicode codepoint to test - * * - * @return true if given codepoint is a boundary. - */ - // TODO: Move to C++ side. - fun isDecomposedCharBoundary(ch: Int): Boolean { - val canClass = canonClassesTable!!.get(ch) - - //Lexer.getCanonicalClass(currentChar) == 0 - val isBoundary = canClass == null - - return isBoundary - } } } diff --git a/runtime/src/main/kotlin/kotlin/text/regex/MatchResultImpl.kt b/runtime/src/main/kotlin/kotlin/text/regex/MatchResultImpl.kt index cbc0a2e86f4..4b12cb501f0 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/MatchResultImpl.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/MatchResultImpl.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Match result implementation diff --git a/runtime/src/main/kotlin/kotlin/text/regex/Pattern.kt b/runtime/src/main/kotlin/kotlin/text/regex/Pattern.kt index cfe2f157047..f707832c87f 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/Pattern.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/Pattern.kt @@ -1,4 +1,4 @@ -package kotlin.text +package kotlin.text.regex /** * Apache Harmony Pattern class implementation. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/Quantifier.kt b/runtime/src/main/kotlin/kotlin/text/regex/Quantifier.kt index 548d4096737..83f8304c1cc 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/Quantifier.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/Quantifier.kt @@ -1,6 +1,6 @@ // TODO: License. -package kotlin.text +package kotlin.text.regex import kotlin.IllegalArgumentException diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/AbstractSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/AbstractSet.kt index a2eacdc40e5..b962fbd63d8 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/AbstractSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/AbstractSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex import kotlin.AssertionError diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/AtomicJointSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/AtomicJointSet.kt index 650cf8b3dcf..0de327f88e7 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/AtomicJointSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/AtomicJointSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * This class represent atomic group (?>X), once X matches, this match become unchangeable till the end of the match. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/BackReferenceSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/BackReferenceSet.kt index 2970a13e448..bd6a3f013a2 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/BackReferenceSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/BackReferenceSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Case Insensitive back reference node; diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/CharSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/CharSet.kt index 86f5a0200a0..2c994157795 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/CharSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/CharSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Represents node accepting single character. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/CompositeRangeSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/CompositeRangeSet.kt index baf567a4f4e..d331ec96d69 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/CompositeRangeSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/CompositeRangeSet.kt @@ -80,7 +80,7 @@ * indicating the source. */ -package kotlin.text +package kotlin.text.regex /** * This class is used to split the range that contains surrogate characters into two ranges: diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/DecomposedCharSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/DecomposedCharSet.kt index d1e3bd920b2..5d722a18fbb 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/DecomposedCharSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/DecomposedCharSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** Represents canonical decomposition of Unicode character. Is used when CANON_EQ flag of Pattern class is specified. */ // TODO: Refactor it. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/DotQuantifierSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/DotQuantifierSet.kt index 4e0c827eed4..7354a11cbd2 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/DotQuantifierSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/DotQuantifierSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Special node for ".*" construction. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/DotSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/DotSet.kt index 5eced30509f..6b8a7c94c43 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/DotSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/DotSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Node accepting any character except line terminators. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/EOISet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/EOISet.kt index 3cf531a7525..c5ac514ffff 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/EOISet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/EOISet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Represents end of input '\z', i.e. matches only character after the last one; diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/EOLSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/EOLSet.kt index 9828039b472..024e398cbeb 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/EOLSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/EOLSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Represents a node for a '$' sign. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/EmptySet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/EmptySet.kt index 57ebf13691e..bc5b9ca19f4 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/EmptySet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/EmptySet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Valid constant zero character match. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/FSets.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/FSets.kt index 132eb77ac58..24eb618668e 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/FSets.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/FSets.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * The node which marks end of the particular group. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/GroupQuantifierSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/GroupQuantifierSet.kt index cb89590126c..de350a8d258 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/GroupQuantifierSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/GroupQuantifierSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Default quantifier over groups, in fact this type of quantifier is diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/HangulDecomposedCharSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/HangulDecomposedCharSet.kt index 335bc519948..588960d410d 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/HangulDecomposedCharSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/HangulDecomposedCharSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Represents canonical decomposition of Hangul syllable. Is used when diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/JointSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/JointSet.kt index 55693d88df1..fbc7fba52b6 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/JointSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/JointSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Represents group, which is alternation of other subexpression. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/LeafQuantifierSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/LeafQuantifierSet.kt index 7dbfa048f6e..bc99d807300 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/LeafQuantifierSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/LeafQuantifierSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex import kotlin.RuntimeException diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/LeafSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/LeafSet.kt index 25858566d86..2598401d666 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/LeafSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/LeafSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Base class for nodes representing leaf tokens of the RE, those who consumes fixed number of characters. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/LookAheadSets.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/LookAheadSets.kt index b2e31090246..9deb5df20b0 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/LookAheadSets.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/LookAheadSets.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Positive lookahead node. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/LookBehindSets.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/LookBehindSets.kt index 4c2925f9527..2dab22b294b 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/LookBehindSets.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/LookBehindSets.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Positive lookbehind node. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/NonCapturingJointSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/NonCapturingJointSet.kt index a2bc55d75c8..94adcd48971 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/NonCapturingJointSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/NonCapturingJointSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Node representing non-capturing group diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/PossessiveGroupQuantifierSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/PossessiveGroupQuantifierSet.kt index b286be02cb9..fd6201cf5bb 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/PossessiveGroupQuantifierSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/PossessiveGroupQuantifierSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Possessive quantifier set over groups. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/PossessiveLeafQuantifierSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/PossessiveLeafQuantifierSet.kt index 726ee4f9fdb..17461833763 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/PossessiveLeafQuantifierSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/PossessiveLeafQuantifierSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Possessive quantifier node over a leaf node. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/PreviousMatchSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/PreviousMatchSet.kt index 03d4d8fd093..a6b468ace56 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/PreviousMatchSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/PreviousMatchSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Node representing previous match (\G). diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/QuantifierSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/QuantifierSet.kt index 480ae9d5b15..d7a98ccb67a 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/QuantifierSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/QuantifierSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Base class for quantifiers. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/RangeSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/RangeSet.kt index 6b83c5f2b1b..5d9d3a571a4 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/RangeSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/RangeSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Represents node accepting single character from the given char class. (TODO: Not a surrogate character?) diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/ReluctantGroupQuantifierSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/ReluctantGroupQuantifierSet.kt index ed3b0a92f92..b4234c62269 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/ReluctantGroupQuantifierSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/ReluctantGroupQuantifierSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Reluctant version of the group quantifier set. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/ReluctantLeafQuantifierSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/ReluctantLeafQuantifierSet.kt index 3702ab8f375..39c54d4c357 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/ReluctantLeafQuantifierSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/ReluctantLeafQuantifierSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Reluctant quantifier node over a leaf node. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/SOLSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/SOLSet.kt index 2fe71fc7988..26132e963ca 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/SOLSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/SOLSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * A node representing a '^' sign. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/SequenceSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/SequenceSet.kt index 09f06f09253..a1ab974c8ea 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/SequenceSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/SequenceSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * This class represents nodes constructed with character sequences. For diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/SingleSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/SingleSet.kt index ffbef8eefdf..845b110fc66 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/SingleSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/SingleSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Group node over subexpression without alternations. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/SupplementaryCharSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/SupplementaryCharSet.kt index 40284be6041..0e186970ac3 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/SupplementaryCharSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/SupplementaryCharSet.kt @@ -80,7 +80,7 @@ * indicating the source. */ -package kotlin.text +package kotlin.text.regex /** * Represents node accepting single supplementary codepoint. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/SupplementaryRangeSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/SupplementaryRangeSet.kt index edc4212bfc6..80a178557ff 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/SupplementaryRangeSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/SupplementaryRangeSet.kt @@ -80,7 +80,7 @@ * indicating the source. */ -package kotlin.text +package kotlin.text.regex /** * Represents node accepting single character from the given char class. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/SurrogateCharSets.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/SurrogateCharSets.kt index cbdd5966de8..69d34842d93 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/SurrogateCharSets.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/SurrogateCharSets.kt @@ -80,7 +80,7 @@ * indicating the source. */ -package kotlin.text +package kotlin.text.regex /** * This class represents low surrogate character. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/SurrogateRangeSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/SurrogateRangeSet.kt index e14f1052127..86b785bd516 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/SurrogateRangeSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/SurrogateRangeSet.kt @@ -80,7 +80,7 @@ * indicating the source. */ -package kotlin.text +package kotlin.text.regex /* * This class is a range that contains only surrogate characters. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/UnifiedQuantifierSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/UnifiedQuantifierSet.kt index 7f34b068614..cd69ba393be 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/UnifiedQuantifierSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/UnifiedQuantifierSet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Optimized greedy quantifier node ('*') for the case where there is no intersection with diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/WordBoundarySet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/WordBoundarySet.kt index 81ea93f2e40..86bd38f0894 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/WordBoundarySet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/WordBoundarySet.kt @@ -15,7 +15,7 @@ * limitations under the License. */ -package kotlin.text +package kotlin.text.regex /** * Represents word boundary, checks current character and previous one. If they have different types returns true;