1// Copyright 2012 the V8 project authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4// 5// This file was generated at 2014-10-08 15:25:47.940335 6 7#include "src/unicode.h" 8#include "src/unicode-inl.h" 9#include <stdio.h> 10#include <stdlib.h> 11 12namespace unibrow { 13 14static const int kStartBit = (1 << 30); 15static const int kChunkBits = (1 << 13); 16static const uchar kSentinel = static_cast<uchar>(-1); 17 18/** 19 * \file 20 * Implementations of functions for working with unicode. 21 */ 22 23typedef signed short int16_t; // NOLINT 24typedef unsigned short uint16_t; // NOLINT 25typedef int int32_t; // NOLINT 26 27 28// All access to the character table should go through this function. 29template <int D> 30static inline uchar TableGet(const int32_t* table, int index) { 31 return table[D * index]; 32} 33 34 35static inline uchar GetEntry(int32_t entry) { 36 return entry & (kStartBit - 1); 37} 38 39 40static inline bool IsStart(int32_t entry) { 41 return (entry & kStartBit) != 0; 42} 43 44 45/** 46 * Look up a character in the unicode table using a mix of binary and 47 * interpolation search. For a uniformly distributed array 48 * interpolation search beats binary search by a wide margin. However, 49 * in this case interpolation search degenerates because of some very 50 * high values in the lower end of the table so this function uses a 51 * combination. The average number of steps to look up the information 52 * about a character is around 10, slightly higher if there is no 53 * information available about the character. 54 */ 55static bool LookupPredicate(const int32_t* table, uint16_t size, uchar chr) { 56 static const int kEntryDist = 1; 57 uint16_t value = chr & (kChunkBits - 1); 58 unsigned int low = 0; 59 unsigned int high = size - 1; 60 while (high != low) { 61 unsigned int mid = low + ((high - low) >> 1); 62 uchar current_value = GetEntry(TableGet<kEntryDist>(table, mid)); 63 // If we've found an entry less than or equal to this one, and the 64 // next one is not also less than this one, we've arrived. 65 if ((current_value <= value) && 66 (mid + 1 == size || 67 GetEntry(TableGet<kEntryDist>(table, mid + 1)) > value)) { 68 low = mid; 69 break; 70 } else if (current_value < value) { 71 low = mid + 1; 72 } else if (current_value > value) { 73 // If we've just checked the bottom-most value and it's not 74 // the one we're looking for, we're done. 75 if (mid == 0) break; 76 high = mid - 1; 77 } 78 } 79 int32_t field = TableGet<kEntryDist>(table, low); 80 uchar entry = GetEntry(field); 81 bool is_start = IsStart(field); 82 return (entry == value) || (entry < value && is_start); 83} 84 85template <int kW> 86struct MultiCharacterSpecialCase { 87 static const uchar kEndOfEncoding = kSentinel; 88 uchar chars[kW]; 89}; 90 91 92// Look up the mapping for the given character in the specified table, 93// which is of the specified length and uses the specified special case 94// mapping for multi-char mappings. The next parameter is the character 95// following the one to map. The result will be written in to the result 96// buffer and the number of characters written will be returned. Finally, 97// if the allow_caching_ptr is non-null then false will be stored in 98// it if the result contains multiple characters or depends on the 99// context. 100// If ranges are linear, a match between a start and end point is 101// offset by the distance between the match and the start. Otherwise 102// the result is the same as for the start point on the entire range. 103template <bool ranges_are_linear, int kW> 104static int LookupMapping(const int32_t* table, 105 uint16_t size, 106 const MultiCharacterSpecialCase<kW>* multi_chars, 107 uchar chr, 108 uchar next, 109 uchar* result, 110 bool* allow_caching_ptr) { 111 static const int kEntryDist = 2; 112 uint16_t key = chr & (kChunkBits - 1); 113 uint16_t chunk_start = chr - key; 114 unsigned int low = 0; 115 unsigned int high = size - 1; 116 while (high != low) { 117 unsigned int mid = low + ((high - low) >> 1); 118 uchar current_value = GetEntry(TableGet<kEntryDist>(table, mid)); 119 // If we've found an entry less than or equal to this one, and the next one 120 // is not also less than this one, we've arrived. 121 if ((current_value <= key) && 122 (mid + 1 == size || 123 GetEntry(TableGet<kEntryDist>(table, mid + 1)) > key)) { 124 low = mid; 125 break; 126 } else if (current_value < key) { 127 low = mid + 1; 128 } else if (current_value > key) { 129 // If we've just checked the bottom-most value and it's not 130 // the one we're looking for, we're done. 131 if (mid == 0) break; 132 high = mid - 1; 133 } 134 } 135 int32_t field = TableGet<kEntryDist>(table, low); 136 uchar entry = GetEntry(field); 137 bool is_start = IsStart(field); 138 bool found = (entry == key) || (entry < key && is_start); 139 if (found) { 140 int32_t value = table[2 * low + 1]; 141 if (value == 0) { 142 // 0 means not present 143 return 0; 144 } else if ((value & 3) == 0) { 145 // Low bits 0 means a constant offset from the given character. 146 if (ranges_are_linear) { 147 result[0] = chr + (value >> 2); 148 } else { 149 result[0] = entry + chunk_start + (value >> 2); 150 } 151 return 1; 152 } else if ((value & 3) == 1) { 153 // Low bits 1 means a special case mapping 154 if (allow_caching_ptr) *allow_caching_ptr = false; 155 const MultiCharacterSpecialCase<kW>& mapping = multi_chars[value >> 2]; 156 int length = 0; 157 for (length = 0; length < kW; length++) { 158 uchar mapped = mapping.chars[length]; 159 if (mapped == MultiCharacterSpecialCase<kW>::kEndOfEncoding) break; 160 if (ranges_are_linear) { 161 result[length] = mapped + (key - entry); 162 } else { 163 result[length] = mapped; 164 } 165 } 166 return length; 167 } else { 168 // Low bits 2 means a really really special case 169 if (allow_caching_ptr) *allow_caching_ptr = false; 170 // The cases of this switch are defined in unicode.py in the 171 // really_special_cases mapping. 172 switch (value >> 2) { 173 case 1: 174 // Really special case 1: upper case sigma. This letter 175 // converts to two different lower case sigmas depending on 176 // whether or not it occurs at the end of a word. 177 if (next != 0 && Letter::Is(next)) { 178 result[0] = 0x03C3; 179 } else { 180 result[0] = 0x03C2; 181 } 182 return 1; 183 default: 184 return 0; 185 } 186 return -1; 187 } 188 } else { 189 return 0; 190 } 191} 192 193 194static inline size_t NonASCIISequenceLength(byte first) { 195 // clang-format off 196 static const uint8_t lengths[256] = { 197 // The first 128 entries correspond to ASCII characters. 198 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206 // The following 64 entries correspond to continuation bytes. 207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 211 // The next are two invalid overlong encodings and 30 two-byte sequences. 212 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 213 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 214 // 16 three-byte sequences. 215 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 216 // 5 four-byte sequences, followed by sequences that could only encode 217 // code points outside of the unicode range. 218 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 219 // clang-format on 220 return lengths[first]; 221} 222 223 224static inline bool IsContinuationCharacter(byte chr) { 225 return chr >= 0x80 && chr <= 0xBF; 226} 227 228 229// This method decodes an UTF-8 value according to RFC 3629. 230uchar Utf8::CalculateValue(const byte* str, size_t max_length, size_t* cursor) { 231 size_t length = NonASCIISequenceLength(str[0]); 232 if (length == 0 || max_length < length) { 233 *cursor += 1; 234 return kBadChar; 235 } 236 if (length == 2) { 237 if (!IsContinuationCharacter(str[1])) { 238 *cursor += 1; 239 return kBadChar; 240 } 241 *cursor += 2; 242 return ((str[0] << 6) + str[1]) - 0x00003080; 243 } 244 if (length == 3) { 245 switch (str[0]) { 246 case 0xE0: 247 // Overlong three-byte sequence. 248 if (str[1] < 0xA0 || str[1] > 0xBF) { 249 *cursor += 1; 250 return kBadChar; 251 } 252 break; 253 case 0xED: 254 // High and low surrogate halves. 255 if (str[1] < 0x80 || str[1] > 0x9F) { 256 *cursor += 1; 257 return kBadChar; 258 } 259 break; 260 default: 261 if (!IsContinuationCharacter(str[1])) { 262 *cursor += 1; 263 return kBadChar; 264 } 265 } 266 if (!IsContinuationCharacter(str[2])) { 267 *cursor += 1; 268 return kBadChar; 269 } 270 *cursor += 3; 271 return ((str[0] << 12) + (str[1] << 6) + str[2]) - 0x000E2080; 272 } 273 DCHECK(length == 4); 274 switch (str[0]) { 275 case 0xF0: 276 // Overlong four-byte sequence. 277 if (str[1] < 0x90 || str[1] > 0xBF) { 278 *cursor += 1; 279 return kBadChar; 280 } 281 break; 282 case 0xF4: 283 // Code points outside of the unicode range. 284 if (str[1] < 0x80 || str[1] > 0x8F) { 285 *cursor += 1; 286 return kBadChar; 287 } 288 break; 289 default: 290 if (!IsContinuationCharacter(str[1])) { 291 *cursor += 1; 292 return kBadChar; 293 } 294 } 295 if (!IsContinuationCharacter(str[2])) { 296 *cursor += 1; 297 return kBadChar; 298 } 299 if (!IsContinuationCharacter(str[3])) { 300 *cursor += 1; 301 return kBadChar; 302 } 303 *cursor += 4; 304 return ((str[0] << 18) + (str[1] << 12) + (str[2] << 6) + str[3]) - 305 0x03C82080; 306} 307 308bool Utf8::Validate(const byte* bytes, size_t length) { 309 size_t cursor = 0; 310 311 // Performance optimization: Skip over single-byte values first. 312 while (cursor < length && bytes[cursor] <= kMaxOneByteChar) { 313 ++cursor; 314 } 315 316 while (cursor < length) { 317 uchar c = ValueOf(bytes + cursor, length - cursor, &cursor); 318 if (!IsValidCharacter(c)) return false; 319 } 320 return true; 321} 322 323// Uppercase: point.category == 'Lu' 324 325static const uint16_t kUppercaseTable0Size = 455; 326static const int32_t kUppercaseTable0[455] = { 327 1073741889, 90, 1073742016, 214, 328 1073742040, 222, 256, 258, // NOLINT 329 260, 262, 264, 266, 330 268, 270, 272, 274, // NOLINT 331 276, 278, 280, 282, 332 284, 286, 288, 290, // NOLINT 333 292, 294, 296, 298, 334 300, 302, 304, 306, // NOLINT 335 308, 310, 313, 315, 336 317, 319, 321, 323, // NOLINT 337 325, 327, 330, 332, 338 334, 336, 338, 340, // NOLINT 339 342, 344, 346, 348, 340 350, 352, 354, 356, // NOLINT 341 358, 360, 362, 364, 342 366, 368, 370, 372, // NOLINT 343 374, 1073742200, 377, 379, 344 381, 1073742209, 386, 388, // NOLINT 345 1073742214, 391, 1073742217, 395, 346 1073742222, 401, 1073742227, 404, // NOLINT 347 1073742230, 408, 1073742236, 413, 348 1073742239, 416, 418, 420, // NOLINT 349 1073742246, 423, 425, 428, 350 1073742254, 431, 1073742257, 435, // NOLINT 351 437, 1073742263, 440, 444, 352 452, 455, 458, 461, // NOLINT 353 463, 465, 467, 469, 354 471, 473, 475, 478, // NOLINT 355 480, 482, 484, 486, 356 488, 490, 492, 494, // NOLINT 357 497, 500, 1073742326, 504, 358 506, 508, 510, 512, // NOLINT 359 514, 516, 518, 520, 360 522, 524, 526, 528, // NOLINT 361 530, 532, 534, 536, 362 538, 540, 542, 544, // NOLINT 363 546, 548, 550, 552, 364 554, 556, 558, 560, // NOLINT 365 562, 1073742394, 571, 1073742397, 366 574, 577, 1073742403, 582, // NOLINT 367 584, 586, 588, 590, 368 880, 882, 886, 895, // NOLINT 369 902, 1073742728, 906, 908, 370 1073742734, 911, 1073742737, 929, // NOLINT 371 1073742755, 939, 975, 1073742802, 372 980, 984, 986, 988, // NOLINT 373 990, 992, 994, 996, 374 998, 1000, 1002, 1004, // NOLINT 375 1006, 1012, 1015, 1073742841, 376 1018, 1073742845, 1071, 1120, // NOLINT 377 1122, 1124, 1126, 1128, 378 1130, 1132, 1134, 1136, // NOLINT 379 1138, 1140, 1142, 1144, 380 1146, 1148, 1150, 1152, // NOLINT 381 1162, 1164, 1166, 1168, 382 1170, 1172, 1174, 1176, // NOLINT 383 1178, 1180, 1182, 1184, 384 1186, 1188, 1190, 1192, // NOLINT 385 1194, 1196, 1198, 1200, 386 1202, 1204, 1206, 1208, // NOLINT 387 1210, 1212, 1214, 1073743040, 388 1217, 1219, 1221, 1223, // NOLINT 389 1225, 1227, 1229, 1232, 390 1234, 1236, 1238, 1240, // NOLINT 391 1242, 1244, 1246, 1248, 392 1250, 1252, 1254, 1256, // NOLINT 393 1258, 1260, 1262, 1264, 394 1266, 1268, 1270, 1272, // NOLINT 395 1274, 1276, 1278, 1280, 396 1282, 1284, 1286, 1288, // NOLINT 397 1290, 1292, 1294, 1296, 398 1298, 1300, 1302, 1304, // NOLINT 399 1306, 1308, 1310, 1312, 400 1314, 1316, 1318, 1320, // NOLINT 401 1322, 1324, 1326, 1073743153, 402 1366, 1073746080, 4293, 4295, // NOLINT 403 4301, 7680, 7682, 7684, 404 7686, 7688, 7690, 7692, // NOLINT 405 7694, 7696, 7698, 7700, 406 7702, 7704, 7706, 7708, // NOLINT 407 7710, 7712, 7714, 7716, 408 7718, 7720, 7722, 7724, // NOLINT 409 7726, 7728, 7730, 7732, 410 7734, 7736, 7738, 7740, // NOLINT 411 7742, 7744, 7746, 7748, 412 7750, 7752, 7754, 7756, // NOLINT 413 7758, 7760, 7762, 7764, 414 7766, 7768, 7770, 7772, // NOLINT 415 7774, 7776, 7778, 7780, 416 7782, 7784, 7786, 7788, // NOLINT 417 7790, 7792, 7794, 7796, 418 7798, 7800, 7802, 7804, // NOLINT 419 7806, 7808, 7810, 7812, 420 7814, 7816, 7818, 7820, // NOLINT 421 7822, 7824, 7826, 7828, 422 7838, 7840, 7842, 7844, // NOLINT 423 7846, 7848, 7850, 7852, 424 7854, 7856, 7858, 7860, // NOLINT 425 7862, 7864, 7866, 7868, 426 7870, 7872, 7874, 7876, // NOLINT 427 7878, 7880, 7882, 7884, 428 7886, 7888, 7890, 7892, // NOLINT 429 7894, 7896, 7898, 7900, 430 7902, 7904, 7906, 7908, // NOLINT 431 7910, 7912, 7914, 7916, 432 7918, 7920, 7922, 7924, // NOLINT 433 7926, 7928, 7930, 7932, 434 7934, 1073749768, 7951, 1073749784, // NOLINT 435 7965, 1073749800, 7983, 1073749816, 436 7999, 1073749832, 8013, 8025, // NOLINT 437 8027, 8029, 8031, 1073749864, 438 8047, 1073749944, 8123, 1073749960, // NOLINT 439 8139, 1073749976, 8155, 1073749992, 440 8172, 1073750008, 8187}; // NOLINT 441static const uint16_t kUppercaseTable1Size = 86; 442static const int32_t kUppercaseTable1[86] = { 443 258, 263, 1073742091, 269, 1073742096, 274, 277, 1073742105, // NOLINT 444 285, 292, 294, 296, 1073742122, 301, 1073742128, 307, // NOLINT 445 1073742142, 319, 325, 387, 1073744896, 3118, 3168, 1073744994, // NOLINT 446 3172, 3175, 3177, 3179, 1073745005, 3184, 3186, 3189, // NOLINT 447 1073745022, 3200, 3202, 3204, 3206, 3208, 3210, 3212, // NOLINT 448 3214, 3216, 3218, 3220, 3222, 3224, 3226, 3228, // NOLINT 449 3230, 3232, 3234, 3236, 3238, 3240, 3242, 3244, // NOLINT 450 3246, 3248, 3250, 3252, 3254, 3256, 3258, 3260, // NOLINT 451 3262, 3264, 3266, 3268, 3270, 3272, 3274, 3276, // NOLINT 452 3278, 3280, 3282, 3284, 3286, 3288, 3290, 3292, // NOLINT 453 3294, 3296, 3298, 3307, 3309, 3314 }; // NOLINT 454static const uint16_t kUppercaseTable5Size = 101; 455static const int32_t kUppercaseTable5[101] = { 456 1600, 1602, 1604, 1606, 1608, 1610, 1612, 1614, // NOLINT 457 1616, 1618, 1620, 1622, 1624, 1626, 1628, 1630, // NOLINT 458 1632, 1634, 1636, 1638, 1640, 1642, 1644, 1664, // NOLINT 459 1666, 1668, 1670, 1672, 1674, 1676, 1678, 1680, // NOLINT 460 1682, 1684, 1686, 1688, 1690, 1826, 1828, 1830, // NOLINT 461 1832, 1834, 1836, 1838, 1842, 1844, 1846, 1848, // NOLINT 462 1850, 1852, 1854, 1856, 1858, 1860, 1862, 1864, // NOLINT 463 1866, 1868, 1870, 1872, 1874, 1876, 1878, 1880, // NOLINT 464 1882, 1884, 1886, 1888, 1890, 1892, 1894, 1896, // NOLINT 465 1898, 1900, 1902, 1913, 1915, 1073743741, 1918, 1920, // NOLINT 466 1922, 1924, 1926, 1931, 1933, 1936, 1938, 1942, // NOLINT 467 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, // NOLINT 468 1960, 1073743786, 1965, 1073743792, 1969}; // NOLINT 469static const uint16_t kUppercaseTable7Size = 2; 470static const int32_t kUppercaseTable7[2] = { 471 1073749793, 7994 }; // NOLINT 472bool Uppercase::Is(uchar c) { 473 int chunk_index = c >> 13; 474 switch (chunk_index) { 475 case 0: return LookupPredicate(kUppercaseTable0, 476 kUppercaseTable0Size, 477 c); 478 case 1: return LookupPredicate(kUppercaseTable1, 479 kUppercaseTable1Size, 480 c); 481 case 5: return LookupPredicate(kUppercaseTable5, 482 kUppercaseTable5Size, 483 c); 484 case 7: return LookupPredicate(kUppercaseTable7, 485 kUppercaseTable7Size, 486 c); 487 default: return false; 488 } 489} 490 491 492// Lowercase: point.category == 'Ll' 493 494static const uint16_t kLowercaseTable0Size = 467; 495static const int32_t kLowercaseTable0[467] = { 496 1073741921, 122, 181, 1073742047, 497 246, 1073742072, 255, 257, // NOLINT 498 259, 261, 263, 265, 499 267, 269, 271, 273, // NOLINT 500 275, 277, 279, 281, 501 283, 285, 287, 289, // NOLINT 502 291, 293, 295, 297, 503 299, 301, 303, 305, // NOLINT 504 307, 309, 1073742135, 312, 505 314, 316, 318, 320, // NOLINT 506 322, 324, 326, 1073742152, 507 329, 331, 333, 335, // NOLINT 508 337, 339, 341, 343, 509 345, 347, 349, 351, // NOLINT 510 353, 355, 357, 359, 511 361, 363, 365, 367, // NOLINT 512 369, 371, 373, 375, 513 378, 380, 1073742206, 384, // NOLINT 514 387, 389, 392, 1073742220, 515 397, 402, 405, 1073742233, // NOLINT 516 411, 414, 417, 419, 517 421, 424, 1073742250, 427, // NOLINT 518 429, 432, 436, 438, 519 1073742265, 442, 1073742269, 447, // NOLINT 520 454, 457, 460, 462, 521 464, 466, 468, 470, // NOLINT 522 472, 474, 1073742300, 477, 523 479, 481, 483, 485, // NOLINT 524 487, 489, 491, 493, 525 1073742319, 496, 499, 501, // NOLINT 526 505, 507, 509, 511, 527 513, 515, 517, 519, // NOLINT 528 521, 523, 525, 527, 529 529, 531, 533, 535, // NOLINT 530 537, 539, 541, 543, 531 545, 547, 549, 551, // NOLINT 532 553, 555, 557, 559, 533 561, 1073742387, 569, 572, // NOLINT 534 1073742399, 576, 578, 583, 535 585, 587, 589, 1073742415, // NOLINT 536 659, 1073742485, 687, 881, 537 883, 887, 1073742715, 893, // NOLINT 538 912, 1073742764, 974, 1073742800, 539 977, 1073742805, 983, 985, // NOLINT 540 987, 989, 991, 993, 541 995, 997, 999, 1001, // NOLINT 542 1003, 1005, 1073742831, 1011, 543 1013, 1016, 1073742843, 1020, // NOLINT 544 1073742896, 1119, 1121, 1123, 545 1125, 1127, 1129, 1131, // NOLINT 546 1133, 1135, 1137, 1139, 547 1141, 1143, 1145, 1147, // NOLINT 548 1149, 1151, 1153, 1163, 549 1165, 1167, 1169, 1171, // NOLINT 550 1173, 1175, 1177, 1179, 551 1181, 1183, 1185, 1187, // NOLINT 552 1189, 1191, 1193, 1195, 553 1197, 1199, 1201, 1203, // NOLINT 554 1205, 1207, 1209, 1211, 555 1213, 1215, 1218, 1220, // NOLINT 556 1222, 1224, 1226, 1228, 557 1073743054, 1231, 1233, 1235, // NOLINT 558 1237, 1239, 1241, 1243, 559 1245, 1247, 1249, 1251, // NOLINT 560 1253, 1255, 1257, 1259, 561 1261, 1263, 1265, 1267, // NOLINT 562 1269, 1271, 1273, 1275, 563 1277, 1279, 1281, 1283, // NOLINT 564 1285, 1287, 1289, 1291, 565 1293, 1295, 1297, 1299, // NOLINT 566 1301, 1303, 1305, 1307, 567 1309, 1311, 1313, 1315, // NOLINT 568 1317, 1319, 1321, 1323, 569 1325, 1327, 1073743201, 1415, // NOLINT 570 1073749248, 7467, 1073749355, 7543, 571 1073749369, 7578, 7681, 7683, // NOLINT 572 7685, 7687, 7689, 7691, 573 7693, 7695, 7697, 7699, // NOLINT 574 7701, 7703, 7705, 7707, 575 7709, 7711, 7713, 7715, // NOLINT 576 7717, 7719, 7721, 7723, 577 7725, 7727, 7729, 7731, // NOLINT 578 7733, 7735, 7737, 7739, 579 7741, 7743, 7745, 7747, // NOLINT 580 7749, 7751, 7753, 7755, 581 7757, 7759, 7761, 7763, // NOLINT 582 7765, 7767, 7769, 7771, 583 7773, 7775, 7777, 7779, // NOLINT 584 7781, 7783, 7785, 7787, 585 7789, 7791, 7793, 7795, // NOLINT 586 7797, 7799, 7801, 7803, 587 7805, 7807, 7809, 7811, // NOLINT 588 7813, 7815, 7817, 7819, 589 7821, 7823, 7825, 7827, // NOLINT 590 1073749653, 7837, 7839, 7841, 591 7843, 7845, 7847, 7849, // NOLINT 592 7851, 7853, 7855, 7857, 593 7859, 7861, 7863, 7865, // NOLINT 594 7867, 7869, 7871, 7873, 595 7875, 7877, 7879, 7881, // NOLINT 596 7883, 7885, 7887, 7889, 597 7891, 7893, 7895, 7897, // NOLINT 598 7899, 7901, 7903, 7905, 599 7907, 7909, 7911, 7913, // NOLINT 600 7915, 7917, 7919, 7921, 601 7923, 7925, 7927, 7929, // NOLINT 602 7931, 7933, 1073749759, 7943, 603 1073749776, 7957, 1073749792, 7975, // NOLINT 604 1073749808, 7991, 1073749824, 8005, 605 1073749840, 8023, 1073749856, 8039, // NOLINT 606 1073749872, 8061, 1073749888, 8071, 607 1073749904, 8087, 1073749920, 8103, // NOLINT 608 1073749936, 8116, 1073749942, 8119, 609 8126, 1073749954, 8132, 1073749958, // NOLINT 610 8135, 1073749968, 8147, 1073749974, 611 8151, 1073749984, 8167, 1073750002, // NOLINT 612 8180, 1073750006, 8183}; // NOLINT 613static const uint16_t kLowercaseTable1Size = 84; 614static const int32_t kLowercaseTable1[84] = { 615 266, 1073742094, 271, 275, 303, 308, 313, 1073742140, // NOLINT 616 317, 1073742150, 329, 334, 388, 1073744944, 3166, 3169, // NOLINT 617 1073744997, 3174, 3176, 3178, 3180, 3185, 1073745011, 3188, // NOLINT 618 1073745014, 3195, 3201, 3203, 3205, 3207, 3209, 3211, // NOLINT 619 3213, 3215, 3217, 3219, 3221, 3223, 3225, 3227, // NOLINT 620 3229, 3231, 3233, 3235, 3237, 3239, 3241, 3243, // NOLINT 621 3245, 3247, 3249, 3251, 3253, 3255, 3257, 3259, // NOLINT 622 3261, 3263, 3265, 3267, 3269, 3271, 3273, 3275, // NOLINT 623 3277, 3279, 3281, 3283, 3285, 3287, 3289, 3291, // NOLINT 624 3293, 3295, 3297, 1073745123, 3300, 3308, 3310, 3315, // NOLINT 625 1073745152, 3365, 3367, 3373 }; // NOLINT 626static const uint16_t kLowercaseTable5Size = 105; 627static const int32_t kLowercaseTable5[105] = { 628 1601, 1603, 1605, 1607, 629 1609, 1611, 1613, 1615, // NOLINT 630 1617, 1619, 1621, 1623, 631 1625, 1627, 1629, 1631, // NOLINT 632 1633, 1635, 1637, 1639, 633 1641, 1643, 1645, 1665, // NOLINT 634 1667, 1669, 1671, 1673, 635 1675, 1677, 1679, 1681, // NOLINT 636 1683, 1685, 1687, 1689, 637 1691, 1827, 1829, 1831, // NOLINT 638 1833, 1835, 1837, 1073743663, 639 1841, 1843, 1845, 1847, // NOLINT 640 1849, 1851, 1853, 1855, 641 1857, 1859, 1861, 1863, // NOLINT 642 1865, 1867, 1869, 1871, 643 1873, 1875, 1877, 1879, // NOLINT 644 1881, 1883, 1885, 1887, 645 1889, 1891, 1893, 1895, // NOLINT 646 1897, 1899, 1901, 1903, 647 1073743729, 1912, 1914, 1916, // NOLINT 648 1919, 1921, 1923, 1925, 649 1927, 1932, 1934, 1937, // NOLINT 650 1073743763, 1941, 1943, 1945, 651 1947, 1949, 1951, 1953, // NOLINT 652 1955, 1957, 1959, 1961, 653 2042, 1073744688, 2906, 1073744740, // NOLINT 654 2917}; // NOLINT 655static const uint16_t kLowercaseTable7Size = 6; 656static const int32_t kLowercaseTable7[6] = { 657 1073748736, 6918, 1073748755, 6935, 1073749825, 8026 }; // NOLINT 658bool Lowercase::Is(uchar c) { 659 int chunk_index = c >> 13; 660 switch (chunk_index) { 661 case 0: return LookupPredicate(kLowercaseTable0, 662 kLowercaseTable0Size, 663 c); 664 case 1: return LookupPredicate(kLowercaseTable1, 665 kLowercaseTable1Size, 666 c); 667 case 5: return LookupPredicate(kLowercaseTable5, 668 kLowercaseTable5Size, 669 c); 670 case 7: return LookupPredicate(kLowercaseTable7, 671 kLowercaseTable7Size, 672 c); 673 default: return false; 674 } 675} 676 677 678// Letter: point.category in ['Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl'] 679 680static const uint16_t kLetterTable0Size = 431; 681static const int32_t kLetterTable0[431] = { 682 1073741889, 90, 1073741921, 122, 683 170, 181, 186, 1073742016, // NOLINT 684 214, 1073742040, 246, 1073742072, 685 705, 1073742534, 721, 1073742560, // NOLINT 686 740, 748, 750, 1073742704, 687 884, 1073742710, 887, 1073742714, // NOLINT 688 893, 895, 902, 1073742728, 689 906, 908, 1073742734, 929, // NOLINT 690 1073742755, 1013, 1073742839, 1153, 691 1073742986, 1327, 1073743153, 1366, // NOLINT 692 1369, 1073743201, 1415, 1073743312, 693 1514, 1073743344, 1522, 1073743392, // NOLINT 694 1610, 1073743470, 1647, 1073743473, 695 1747, 1749, 1073743589, 1766, // NOLINT 696 1073743598, 1775, 1073743610, 1788, 697 1791, 1808, 1073743634, 1839, // NOLINT 698 1073743693, 1957, 1969, 1073743818, 699 2026, 1073743860, 2037, 2042, // NOLINT 700 1073743872, 2069, 2074, 2084, 701 2088, 1073743936, 2136, 1073744032, // NOLINT 702 2226, 1073744132, 2361, 2365, 703 2384, 1073744216, 2401, 1073744241, // NOLINT 704 2432, 1073744261, 2444, 1073744271, 705 2448, 1073744275, 2472, 1073744298, // NOLINT 706 2480, 2482, 1073744310, 2489, 707 2493, 2510, 1073744348, 2525, // NOLINT 708 1073744351, 2529, 1073744368, 2545, 709 1073744389, 2570, 1073744399, 2576, // NOLINT 710 1073744403, 2600, 1073744426, 2608, 711 1073744434, 2611, 1073744437, 2614, // NOLINT 712 1073744440, 2617, 1073744473, 2652, 713 2654, 1073744498, 2676, 1073744517, // NOLINT 714 2701, 1073744527, 2705, 1073744531, 715 2728, 1073744554, 2736, 1073744562, // NOLINT 716 2739, 1073744565, 2745, 2749, 717 2768, 1073744608, 2785, 1073744645, // NOLINT 718 2828, 1073744655, 2832, 1073744659, 719 2856, 1073744682, 2864, 1073744690, // NOLINT 720 2867, 1073744693, 2873, 2877, 721 1073744732, 2909, 1073744735, 2913, // NOLINT 722 2929, 2947, 1073744773, 2954, 723 1073744782, 2960, 1073744786, 2965, // NOLINT 724 1073744793, 2970, 2972, 1073744798, 725 2975, 1073744803, 2980, 1073744808, // NOLINT 726 2986, 1073744814, 3001, 3024, 727 1073744901, 3084, 1073744910, 3088, // NOLINT 728 1073744914, 3112, 1073744938, 3129, 729 3133, 1073744984, 3161, 1073744992, // NOLINT 730 3169, 1073745029, 3212, 1073745038, 731 3216, 1073745042, 3240, 1073745066, // NOLINT 732 3251, 1073745077, 3257, 3261, 733 3294, 1073745120, 3297, 1073745137, // NOLINT 734 3314, 1073745157, 3340, 1073745166, 735 3344, 1073745170, 3386, 3389, // NOLINT 736 3406, 1073745248, 3425, 1073745274, 737 3455, 1073745285, 3478, 1073745306, // NOLINT 738 3505, 1073745331, 3515, 3517, 739 1073745344, 3526, 1073745409, 3632, // NOLINT 740 1073745458, 3635, 1073745472, 3654, 741 1073745537, 3714, 3716, 1073745543, // NOLINT 742 3720, 3722, 3725, 1073745556, 743 3735, 1073745561, 3743, 1073745569, // NOLINT 744 3747, 3749, 3751, 1073745578, 745 3755, 1073745581, 3760, 1073745586, // NOLINT 746 3763, 3773, 1073745600, 3780, 747 3782, 1073745628, 3807, 3840, // NOLINT 748 1073745728, 3911, 1073745737, 3948, 749 1073745800, 3980, 1073745920, 4138, // NOLINT 750 4159, 1073746000, 4181, 1073746010, 751 4189, 4193, 1073746021, 4198, // NOLINT 752 1073746030, 4208, 1073746037, 4225, 753 4238, 1073746080, 4293, 4295, // NOLINT 754 4301, 1073746128, 4346, 1073746172, 755 4680, 1073746506, 4685, 1073746512, // NOLINT 756 4694, 4696, 1073746522, 4701, 757 1073746528, 4744, 1073746570, 4749, // NOLINT 758 1073746576, 4784, 1073746610, 4789, 759 1073746616, 4798, 4800, 1073746626, // NOLINT 760 4805, 1073746632, 4822, 1073746648, 761 4880, 1073746706, 4885, 1073746712, // NOLINT 762 4954, 1073746816, 5007, 1073746848, 763 5108, 1073746945, 5740, 1073747567, // NOLINT 764 5759, 1073747585, 5786, 1073747616, 765 5866, 1073747694, 5880, 1073747712, // NOLINT 766 5900, 1073747726, 5905, 1073747744, 767 5937, 1073747776, 5969, 1073747808, // NOLINT 768 5996, 1073747822, 6000, 1073747840, 769 6067, 6103, 6108, 1073748000, // NOLINT 770 6263, 1073748096, 6312, 6314, 771 1073748144, 6389, 1073748224, 6430, // NOLINT 772 1073748304, 6509, 1073748336, 6516, 773 1073748352, 6571, 1073748417, 6599, // NOLINT 774 1073748480, 6678, 1073748512, 6740, 775 6823, 1073748741, 6963, 1073748805, // NOLINT 776 6987, 1073748867, 7072, 1073748910, 777 7087, 1073748922, 7141, 1073748992, // NOLINT 778 7203, 1073749069, 7247, 1073749082, 779 7293, 1073749225, 7404, 1073749230, // NOLINT 780 7409, 1073749237, 7414, 1073749248, 781 7615, 1073749504, 7957, 1073749784, // NOLINT 782 7965, 1073749792, 8005, 1073749832, 783 8013, 1073749840, 8023, 8025, // NOLINT 784 8027, 8029, 1073749855, 8061, 785 1073749888, 8116, 1073749942, 8124, // NOLINT 786 8126, 1073749954, 8132, 1073749958, 787 8140, 1073749968, 8147, 1073749974, // NOLINT 788 8155, 1073749984, 8172, 1073750002, 789 8180, 1073750006, 8188}; // NOLINT 790static const uint16_t kLetterTable1Size = 87; 791static const int32_t kLetterTable1[87] = { 792 113, 127, 1073741968, 156, 258, 263, 1073742090, 275, // NOLINT 793 277, 1073742105, 285, 292, 294, 296, 1073742122, 301, // NOLINT 794 1073742127, 313, 1073742140, 319, 1073742149, 329, 334, 1073742176, // NOLINT 795 392, 1073744896, 3118, 1073744944, 3166, 1073744992, 3300, 1073745131, // NOLINT 796 3310, 1073745138, 3315, 1073745152, 3365, 3367, 3373, 1073745200, // NOLINT 797 3431, 3439, 1073745280, 3478, 1073745312, 3494, 1073745320, 3502, // NOLINT 798 1073745328, 3510, 1073745336, 3518, 1073745344, 3526, 1073745352, 3534, // NOLINT 799 1073745360, 3542, 1073745368, 3550, 3631, 1073745925, 4103, 1073745953, // NOLINT 800 4137, 1073745969, 4149, 1073745976, 4156, 1073745985, 4246, 1073746077, // NOLINT 801 4255, 1073746081, 4346, 1073746172, 4351, 1073746181, 4397, 1073746225, // NOLINT 802 4494, 1073746336, 4538, 1073746416, 4607, 1073746944, 8191 }; // NOLINT 803static const uint16_t kLetterTable2Size = 4; 804static const int32_t kLetterTable2[4] = { 805 1073741824, 3509, 1073745408, 8191 }; // NOLINT 806static const uint16_t kLetterTable3Size = 2; 807static const int32_t kLetterTable3[2] = { 808 1073741824, 8191 }; // NOLINT 809static const uint16_t kLetterTable4Size = 2; 810static const int32_t kLetterTable4[2] = { 811 1073741824, 8140 }; // NOLINT 812static const uint16_t kLetterTable5Size = 100; 813static const int32_t kLetterTable5[100] = { 814 1073741824, 1164, 1073743056, 1277, 815 1073743104, 1548, 1073743376, 1567, // NOLINT 816 1073743402, 1579, 1073743424, 1646, 817 1073743487, 1693, 1073743520, 1775, // NOLINT 818 1073743639, 1823, 1073743650, 1928, 819 1073743755, 1934, 1073743760, 1965, // NOLINT 820 1073743792, 1969, 1073743863, 2049, 821 1073743875, 2053, 1073743879, 2058, // NOLINT 822 1073743884, 2082, 1073743936, 2163, 823 1073744002, 2227, 1073744114, 2295, // NOLINT 824 2299, 1073744138, 2341, 1073744176, 825 2374, 1073744224, 2428, 1073744260, // NOLINT 826 2482, 2511, 1073744352, 2532, 827 1073744358, 2543, 1073744378, 2558, // NOLINT 828 1073744384, 2600, 1073744448, 2626, 829 1073744452, 2635, 1073744480, 2678, // NOLINT 830 2682, 1073744510, 2735, 2737, 831 1073744565, 2742, 1073744569, 2749, // NOLINT 832 2752, 2754, 1073744603, 2781, 833 1073744608, 2794, 1073744626, 2804, // NOLINT 834 1073744641, 2822, 1073744649, 2830, 835 1073744657, 2838, 1073744672, 2854, // NOLINT 836 1073744680, 2862, 1073744688, 2906, 837 1073744732, 2911, 1073744740, 2917, // NOLINT 838 1073744832, 3042, 1073744896, 8191}; // NOLINT 839static const uint16_t kLetterTable6Size = 6; 840static const int32_t kLetterTable6[6] = { 841 1073741824, 6051, 1073747888, 6086, 1073747915, 6139 }; // NOLINT 842static const uint16_t kLetterTable7Size = 48; 843static const int32_t kLetterTable7[48] = { 844 1073748224, 6765, 1073748592, 6873, 1073748736, 6918, 1073748755, 6935, // NOLINT 845 6941, 1073748767, 6952, 1073748778, 6966, 1073748792, 6972, 6974, // NOLINT 846 1073748800, 6977, 1073748803, 6980, 1073748806, 7089, 1073748947, 7485, // NOLINT 847 1073749328, 7567, 1073749394, 7623, 1073749488, 7675, 1073749616, 7796, // NOLINT 848 1073749622, 7932, 1073749793, 7994, 1073749825, 8026, 1073749862, 8126, // NOLINT 849 1073749954, 8135, 1073749962, 8143, 1073749970, 8151, 1073749978, 8156 }; // NOLINT 850bool Letter::Is(uchar c) { 851 int chunk_index = c >> 13; 852 switch (chunk_index) { 853 case 0: return LookupPredicate(kLetterTable0, 854 kLetterTable0Size, 855 c); 856 case 1: return LookupPredicate(kLetterTable1, 857 kLetterTable1Size, 858 c); 859 case 2: return LookupPredicate(kLetterTable2, 860 kLetterTable2Size, 861 c); 862 case 3: return LookupPredicate(kLetterTable3, 863 kLetterTable3Size, 864 c); 865 case 4: return LookupPredicate(kLetterTable4, 866 kLetterTable4Size, 867 c); 868 case 5: return LookupPredicate(kLetterTable5, 869 kLetterTable5Size, 870 c); 871 case 6: return LookupPredicate(kLetterTable6, 872 kLetterTable6Size, 873 c); 874 case 7: return LookupPredicate(kLetterTable7, 875 kLetterTable7Size, 876 c); 877 default: return false; 878 } 879} 880 881 882// ID_Start: ((point.category in ['Lu', 'Ll', 'Lt', 'Lm', 'Lo', 883// 'Nl'] or 'Other_ID_Start' in point.properties) and ('Pattern_Syntax' not in 884// point.properties) and ('Pattern_White_Space' not in point.properties)) or 885// ('JS_ID_Start' in point.properties) 886 887static const uint16_t kID_StartTable0Size = 434; 888static const int32_t kID_StartTable0[434] = { 889 36, 1073741889, 90, 92, 890 95, 1073741921, 122, 170, // NOLINT 891 181, 186, 1073742016, 214, 892 1073742040, 246, 1073742072, 705, // NOLINT 893 1073742534, 721, 1073742560, 740, 894 748, 750, 1073742704, 884, // NOLINT 895 1073742710, 887, 1073742714, 893, 896 895, 902, 1073742728, 906, // NOLINT 897 908, 1073742734, 929, 1073742755, 898 1013, 1073742839, 1153, 1073742986, // NOLINT 899 1327, 1073743153, 1366, 1369, 900 1073743201, 1415, 1073743312, 1514, // NOLINT 901 1073743344, 1522, 1073743392, 1610, 902 1073743470, 1647, 1073743473, 1747, // NOLINT 903 1749, 1073743589, 1766, 1073743598, 904 1775, 1073743610, 1788, 1791, // NOLINT 905 1808, 1073743634, 1839, 1073743693, 906 1957, 1969, 1073743818, 2026, // NOLINT 907 1073743860, 2037, 2042, 1073743872, 908 2069, 2074, 2084, 2088, // NOLINT 909 1073743936, 2136, 1073744032, 2226, 910 1073744132, 2361, 2365, 2384, // NOLINT 911 1073744216, 2401, 1073744241, 2432, 912 1073744261, 2444, 1073744271, 2448, // NOLINT 913 1073744275, 2472, 1073744298, 2480, 914 2482, 1073744310, 2489, 2493, // NOLINT 915 2510, 1073744348, 2525, 1073744351, 916 2529, 1073744368, 2545, 1073744389, // NOLINT 917 2570, 1073744399, 2576, 1073744403, 918 2600, 1073744426, 2608, 1073744434, // NOLINT 919 2611, 1073744437, 2614, 1073744440, 920 2617, 1073744473, 2652, 2654, // NOLINT 921 1073744498, 2676, 1073744517, 2701, 922 1073744527, 2705, 1073744531, 2728, // NOLINT 923 1073744554, 2736, 1073744562, 2739, 924 1073744565, 2745, 2749, 2768, // NOLINT 925 1073744608, 2785, 1073744645, 2828, 926 1073744655, 2832, 1073744659, 2856, // NOLINT 927 1073744682, 2864, 1073744690, 2867, 928 1073744693, 2873, 2877, 1073744732, // NOLINT 929 2909, 1073744735, 2913, 2929, 930 2947, 1073744773, 2954, 1073744782, // NOLINT 931 2960, 1073744786, 2965, 1073744793, 932 2970, 2972, 1073744798, 2975, // NOLINT 933 1073744803, 2980, 1073744808, 2986, 934 1073744814, 3001, 3024, 1073744901, // NOLINT 935 3084, 1073744910, 3088, 1073744914, 936 3112, 1073744938, 3129, 3133, // NOLINT 937 1073744984, 3161, 1073744992, 3169, 938 1073745029, 3212, 1073745038, 3216, // NOLINT 939 1073745042, 3240, 1073745066, 3251, 940 1073745077, 3257, 3261, 3294, // NOLINT 941 1073745120, 3297, 1073745137, 3314, 942 1073745157, 3340, 1073745166, 3344, // NOLINT 943 1073745170, 3386, 3389, 3406, 944 1073745248, 3425, 1073745274, 3455, // NOLINT 945 1073745285, 3478, 1073745306, 3505, 946 1073745331, 3515, 3517, 1073745344, // NOLINT 947 3526, 1073745409, 3632, 1073745458, 948 3635, 1073745472, 3654, 1073745537, // NOLINT 949 3714, 3716, 1073745543, 3720, 950 3722, 3725, 1073745556, 3735, // NOLINT 951 1073745561, 3743, 1073745569, 3747, 952 3749, 3751, 1073745578, 3755, // NOLINT 953 1073745581, 3760, 1073745586, 3763, 954 3773, 1073745600, 3780, 3782, // NOLINT 955 1073745628, 3807, 3840, 1073745728, 956 3911, 1073745737, 3948, 1073745800, // NOLINT 957 3980, 1073745920, 4138, 4159, 958 1073746000, 4181, 1073746010, 4189, // NOLINT 959 4193, 1073746021, 4198, 1073746030, 960 4208, 1073746037, 4225, 4238, // NOLINT 961 1073746080, 4293, 4295, 4301, 962 1073746128, 4346, 1073746172, 4680, // NOLINT 963 1073746506, 4685, 1073746512, 4694, 964 4696, 1073746522, 4701, 1073746528, // NOLINT 965 4744, 1073746570, 4749, 1073746576, 966 4784, 1073746610, 4789, 1073746616, // NOLINT 967 4798, 4800, 1073746626, 4805, 968 1073746632, 4822, 1073746648, 4880, // NOLINT 969 1073746706, 4885, 1073746712, 4954, 970 1073746816, 5007, 1073746848, 5108, // NOLINT 971 1073746945, 5740, 1073747567, 5759, 972 1073747585, 5786, 1073747616, 5866, // NOLINT 973 1073747694, 5880, 1073747712, 5900, 974 1073747726, 5905, 1073747744, 5937, // NOLINT 975 1073747776, 5969, 1073747808, 5996, 976 1073747822, 6000, 1073747840, 6067, // NOLINT 977 6103, 6108, 1073748000, 6263, 978 1073748096, 6312, 6314, 1073748144, // NOLINT 979 6389, 1073748224, 6430, 1073748304, 980 6509, 1073748336, 6516, 1073748352, // NOLINT 981 6571, 1073748417, 6599, 1073748480, 982 6678, 1073748512, 6740, 6823, // NOLINT 983 1073748741, 6963, 1073748805, 6987, 984 1073748867, 7072, 1073748910, 7087, // NOLINT 985 1073748922, 7141, 1073748992, 7203, 986 1073749069, 7247, 1073749082, 7293, // NOLINT 987 1073749225, 7404, 1073749230, 7409, 988 1073749237, 7414, 1073749248, 7615, // NOLINT 989 1073749504, 7957, 1073749784, 7965, 990 1073749792, 8005, 1073749832, 8013, // NOLINT 991 1073749840, 8023, 8025, 8027, 992 8029, 1073749855, 8061, 1073749888, // NOLINT 993 8116, 1073749942, 8124, 8126, 994 1073749954, 8132, 1073749958, 8140, // NOLINT 995 1073749968, 8147, 1073749974, 8155, 996 1073749984, 8172, 1073750002, 8180, // NOLINT 997 1073750006, 8188}; // NOLINT 998static const uint16_t kID_StartTable1Size = 84; 999static const int32_t kID_StartTable1[84] = { 1000 113, 127, 1073741968, 156, 1001 258, 263, 1073742090, 275, // NOLINT 1002 277, 1073742104, 285, 292, 1003 294, 296, 1073742122, 313, // NOLINT 1004 1073742140, 319, 1073742149, 329, 1005 334, 1073742176, 392, 1073744896, // NOLINT 1006 3118, 1073744944, 3166, 1073744992, 1007 3300, 1073745131, 3310, 1073745138, // NOLINT 1008 3315, 1073745152, 3365, 3367, 1009 3373, 1073745200, 3431, 3439, // NOLINT 1010 1073745280, 3478, 1073745312, 3494, 1011 1073745320, 3502, 1073745328, 3510, // NOLINT 1012 1073745336, 3518, 1073745344, 3526, 1013 1073745352, 3534, 1073745360, 3542, // NOLINT 1014 1073745368, 3550, 1073745925, 4103, 1015 1073745953, 4137, 1073745969, 4149, // NOLINT 1016 1073745976, 4156, 1073745985, 4246, 1017 1073746075, 4255, 1073746081, 4346, // NOLINT 1018 1073746172, 4351, 1073746181, 4397, 1019 1073746225, 4494, 1073746336, 4538, // NOLINT 1020 1073746416, 4607, 1073746944, 8191}; // NOLINT 1021static const uint16_t kID_StartTable2Size = 4; 1022static const int32_t kID_StartTable2[4] = {1073741824, 3509, 1073745408, 1023 8191}; // NOLINT 1024static const uint16_t kID_StartTable3Size = 2; 1025static const int32_t kID_StartTable3[2] = {1073741824, 8191}; // NOLINT 1026static const uint16_t kID_StartTable4Size = 2; 1027static const int32_t kID_StartTable4[2] = {1073741824, 8140}; // NOLINT 1028static const uint16_t kID_StartTable5Size = 100; 1029static const int32_t kID_StartTable5[100] = { 1030 1073741824, 1164, 1073743056, 1277, 1031 1073743104, 1548, 1073743376, 1567, // NOLINT 1032 1073743402, 1579, 1073743424, 1646, 1033 1073743487, 1693, 1073743520, 1775, // NOLINT 1034 1073743639, 1823, 1073743650, 1928, 1035 1073743755, 1934, 1073743760, 1965, // NOLINT 1036 1073743792, 1969, 1073743863, 2049, 1037 1073743875, 2053, 1073743879, 2058, // NOLINT 1038 1073743884, 2082, 1073743936, 2163, 1039 1073744002, 2227, 1073744114, 2295, // NOLINT 1040 2299, 1073744138, 2341, 1073744176, 1041 2374, 1073744224, 2428, 1073744260, // NOLINT 1042 2482, 2511, 1073744352, 2532, 1043 1073744358, 2543, 1073744378, 2558, // NOLINT 1044 1073744384, 2600, 1073744448, 2626, 1045 1073744452, 2635, 1073744480, 2678, // NOLINT 1046 2682, 1073744510, 2735, 2737, 1047 1073744565, 2742, 1073744569, 2749, // NOLINT 1048 2752, 2754, 1073744603, 2781, 1049 1073744608, 2794, 1073744626, 2804, // NOLINT 1050 1073744641, 2822, 1073744649, 2830, 1051 1073744657, 2838, 1073744672, 2854, // NOLINT 1052 1073744680, 2862, 1073744688, 2906, 1053 1073744732, 2911, 1073744740, 2917, // NOLINT 1054 1073744832, 3042, 1073744896, 8191}; // NOLINT 1055static const uint16_t kID_StartTable6Size = 6; 1056static const int32_t kID_StartTable6[6] = {1073741824, 6051, 1073747888, 6086, 1057 1073747915, 6139}; // NOLINT 1058static const uint16_t kID_StartTable7Size = 48; 1059static const int32_t kID_StartTable7[48] = { 1060 1073748224, 6765, 1073748592, 6873, 1061 1073748736, 6918, 1073748755, 6935, // NOLINT 1062 6941, 1073748767, 6952, 1073748778, 1063 6966, 1073748792, 6972, 6974, // NOLINT 1064 1073748800, 6977, 1073748803, 6980, 1065 1073748806, 7089, 1073748947, 7485, // NOLINT 1066 1073749328, 7567, 1073749394, 7623, 1067 1073749488, 7675, 1073749616, 7796, // NOLINT 1068 1073749622, 7932, 1073749793, 7994, 1069 1073749825, 8026, 1073749862, 8126, // NOLINT 1070 1073749954, 8135, 1073749962, 8143, 1071 1073749970, 8151, 1073749978, 8156}; // NOLINT 1072bool ID_Start::Is(uchar c) { 1073 int chunk_index = c >> 13; 1074 switch (chunk_index) { 1075 case 0: 1076 return LookupPredicate(kID_StartTable0, kID_StartTable0Size, c); 1077 case 1: 1078 return LookupPredicate(kID_StartTable1, kID_StartTable1Size, c); 1079 case 2: 1080 return LookupPredicate(kID_StartTable2, kID_StartTable2Size, c); 1081 case 3: 1082 return LookupPredicate(kID_StartTable3, kID_StartTable3Size, c); 1083 case 4: 1084 return LookupPredicate(kID_StartTable4, kID_StartTable4Size, c); 1085 case 5: 1086 return LookupPredicate(kID_StartTable5, kID_StartTable5Size, c); 1087 case 6: 1088 return LookupPredicate(kID_StartTable6, kID_StartTable6Size, c); 1089 case 7: 1090 return LookupPredicate(kID_StartTable7, kID_StartTable7Size, c); 1091 default: 1092 return false; 1093 } 1094} 1095 1096 1097// ID_Continue: point.category in ['Nd', 'Mn', 'Mc', 'Pc'] or 1098// 'Other_ID_Continue' in point.properties or 'JS_ID_Continue' in 1099// point.properties 1100 1101static const uint16_t kID_ContinueTable0Size = 315; 1102static const int32_t kID_ContinueTable0[315] = { 1103 1073741872, 57, 95, 183, 1104 1073742592, 879, 903, 1073742979, // NOLINT 1105 1159, 1073743249, 1469, 1471, 1106 1073743297, 1474, 1073743300, 1477, // NOLINT 1107 1479, 1073743376, 1562, 1073743435, 1108 1641, 1648, 1073743574, 1756, // NOLINT 1109 1073743583, 1764, 1073743591, 1768, 1110 1073743594, 1773, 1073743600, 1785, // NOLINT 1111 1809, 1073743664, 1866, 1073743782, 1112 1968, 1073743808, 1993, 1073743851, // NOLINT 1113 2035, 1073743894, 2073, 1073743899, 1114 2083, 1073743909, 2087, 1073743913, // NOLINT 1115 2093, 1073743961, 2139, 1073744100, 1116 2307, 1073744186, 2364, 1073744190, // NOLINT 1117 2383, 1073744209, 2391, 1073744226, 1118 2403, 1073744230, 2415, 1073744257, // NOLINT 1119 2435, 2492, 1073744318, 2500, 1120 1073744327, 2504, 1073744331, 2509, // NOLINT 1121 2519, 1073744354, 2531, 1073744358, 1122 2543, 1073744385, 2563, 2620, // NOLINT 1123 1073744446, 2626, 1073744455, 2632, 1124 1073744459, 2637, 2641, 1073744486, // NOLINT 1125 2673, 2677, 1073744513, 2691, 1126 2748, 1073744574, 2757, 1073744583, // NOLINT 1127 2761, 1073744587, 2765, 1073744610, 1128 2787, 1073744614, 2799, 1073744641, // NOLINT 1129 2819, 2876, 1073744702, 2884, 1130 1073744711, 2888, 1073744715, 2893, // NOLINT 1131 1073744726, 2903, 1073744738, 2915, 1132 1073744742, 2927, 2946, 1073744830, // NOLINT 1133 3010, 1073744838, 3016, 1073744842, 1134 3021, 3031, 1073744870, 3055, // NOLINT 1135 1073744896, 3075, 1073744958, 3140, 1136 1073744966, 3144, 1073744970, 3149, // NOLINT 1137 1073744981, 3158, 1073744994, 3171, 1138 1073744998, 3183, 1073745025, 3203, // NOLINT 1139 3260, 1073745086, 3268, 1073745094, 1140 3272, 1073745098, 3277, 1073745109, // NOLINT 1141 3286, 1073745122, 3299, 1073745126, 1142 3311, 1073745153, 3331, 1073745214, // NOLINT 1143 3396, 1073745222, 3400, 1073745226, 1144 3405, 3415, 1073745250, 3427, // NOLINT 1145 1073745254, 3439, 1073745282, 3459, 1146 3530, 1073745359, 3540, 3542, // NOLINT 1147 1073745368, 3551, 1073745382, 3567, 1148 1073745394, 3571, 3633, 1073745460, // NOLINT 1149 3642, 1073745479, 3662, 1073745488, 1150 3673, 3761, 1073745588, 3769, // NOLINT 1151 1073745595, 3772, 1073745608, 3789, 1152 1073745616, 3801, 1073745688, 3865, // NOLINT 1153 1073745696, 3881, 3893, 3895, 1154 3897, 1073745726, 3903, 1073745777, // NOLINT 1155 3972, 1073745798, 3975, 1073745805, 1156 3991, 1073745817, 4028, 4038, // NOLINT 1157 1073745963, 4158, 1073745984, 4169, 1158 1073746006, 4185, 1073746014, 4192, // NOLINT 1159 1073746018, 4196, 1073746023, 4205, 1160 1073746033, 4212, 1073746050, 4237, // NOLINT 1161 1073746063, 4253, 1073746781, 4959, 1162 1073746793, 4977, 1073747730, 5908, // NOLINT 1163 1073747762, 5940, 1073747794, 5971, 1164 1073747826, 6003, 1073747892, 6099, // NOLINT 1165 6109, 1073747936, 6121, 1073747979, 1166 6157, 1073747984, 6169, 6313, // NOLINT 1167 1073748256, 6443, 1073748272, 6459, 1168 1073748294, 6479, 1073748400, 6592, // NOLINT 1169 1073748424, 6601, 1073748432, 6618, 1170 1073748503, 6683, 1073748565, 6750, // NOLINT 1171 1073748576, 6780, 1073748607, 6793, 1172 1073748624, 6809, 1073748656, 6845, // NOLINT 1173 1073748736, 6916, 1073748788, 6980, 1174 1073748816, 7001, 1073748843, 7027, // NOLINT 1175 1073748864, 7042, 1073748897, 7085, 1176 1073748912, 7097, 1073748966, 7155, // NOLINT 1177 1073749028, 7223, 1073749056, 7241, 1178 1073749072, 7257, 1073749200, 7378, // NOLINT 1179 1073749204, 7400, 7405, 1073749234, 1180 7412, 1073749240, 7417, 1073749440, // NOLINT 1181 7669, 1073749500, 7679}; // NOLINT 1182static const uint16_t kID_ContinueTable1Size = 19; 1183static const int32_t kID_ContinueTable1[19] = { 1184 1073741836, 13, 1073741887, 64, 1185 84, 1073742032, 220, 225, // NOLINT 1186 1073742053, 240, 1073745135, 3313, 1187 3455, 1073745376, 3583, 1073745962, // NOLINT 1188 4143, 1073746073, 4250}; // NOLINT 1189static const uint16_t kID_ContinueTable5Size = 63; 1190static const int32_t kID_ContinueTable5[63] = { 1191 1073743392, 1577, 1647, 1073743476, 1192 1661, 1695, 1073743600, 1777, // NOLINT 1193 2050, 2054, 2059, 1073743907, 1194 2087, 1073744000, 2177, 1073744052, // NOLINT 1195 2244, 1073744080, 2265, 1073744096, 1196 2289, 1073744128, 2313, 1073744166, // NOLINT 1197 2349, 1073744199, 2387, 1073744256, 1198 2435, 1073744307, 2496, 1073744336, // NOLINT 1199 2521, 2533, 1073744368, 2553, 1200 1073744425, 2614, 2627, 1073744460, // NOLINT 1201 2637, 1073744464, 2649, 1073744507, 1202 2685, 2736, 1073744562, 2740, // NOLINT 1203 1073744567, 2744, 1073744574, 2751, 1204 2753, 1073744619, 2799, 1073744629, // NOLINT 1205 2806, 1073744867, 3050, 1073744876, 1206 3053, 1073744880, 3065}; // NOLINT 1207static const uint16_t kID_ContinueTable7Size = 12; 1208static const int32_t kID_ContinueTable7[12] = { 1209 6942, 1073749504, 7695, 1073749536, 1210 7725, 1073749555, 7732, 1073749581, // NOLINT 1211 7759, 1073749776, 7961, 7999}; // NOLINT 1212bool ID_Continue::Is(uchar c) { 1213 int chunk_index = c >> 13; 1214 switch (chunk_index) { 1215 case 0: 1216 return LookupPredicate(kID_ContinueTable0, kID_ContinueTable0Size, c); 1217 case 1: 1218 return LookupPredicate(kID_ContinueTable1, kID_ContinueTable1Size, c); 1219 case 5: 1220 return LookupPredicate(kID_ContinueTable5, kID_ContinueTable5Size, c); 1221 case 7: 1222 return LookupPredicate(kID_ContinueTable7, kID_ContinueTable7Size, c); 1223 default: return false; 1224 } 1225} 1226 1227 1228// WhiteSpace: (point.category == 'Zs') or ('JS_White_Space' in 1229// point.properties) 1230 1231static const uint16_t kWhiteSpaceTable0Size = 7; 1232static const int32_t kWhiteSpaceTable0[7] = {9, 1073741835, 12, 32, 1233 160, 5760, 6158}; // NOLINT 1234static const uint16_t kWhiteSpaceTable1Size = 5; 1235static const int32_t kWhiteSpaceTable1[5] = { 1236 1073741824, 10, 47, 95, 4096 }; // NOLINT 1237static const uint16_t kWhiteSpaceTable7Size = 1; 1238static const int32_t kWhiteSpaceTable7[1] = {7935}; // NOLINT 1239bool WhiteSpace::Is(uchar c) { 1240 int chunk_index = c >> 13; 1241 switch (chunk_index) { 1242 case 0: return LookupPredicate(kWhiteSpaceTable0, 1243 kWhiteSpaceTable0Size, 1244 c); 1245 case 1: return LookupPredicate(kWhiteSpaceTable1, 1246 kWhiteSpaceTable1Size, 1247 c); 1248 case 7: 1249 return LookupPredicate(kWhiteSpaceTable7, kWhiteSpaceTable7Size, c); 1250 default: return false; 1251 } 1252} 1253 1254 1255// LineTerminator: 'JS_Line_Terminator' in point.properties 1256 1257static const uint16_t kLineTerminatorTable0Size = 2; 1258static const int32_t kLineTerminatorTable0[2] = { 1259 10, 13 }; // NOLINT 1260static const uint16_t kLineTerminatorTable1Size = 2; 1261static const int32_t kLineTerminatorTable1[2] = { 1262 1073741864, 41 }; // NOLINT 1263bool LineTerminator::Is(uchar c) { 1264 int chunk_index = c >> 13; 1265 switch (chunk_index) { 1266 case 0: return LookupPredicate(kLineTerminatorTable0, 1267 kLineTerminatorTable0Size, 1268 c); 1269 case 1: return LookupPredicate(kLineTerminatorTable1, 1270 kLineTerminatorTable1Size, 1271 c); 1272 default: return false; 1273 } 1274} 1275 1276static const MultiCharacterSpecialCase<2> kToLowercaseMultiStrings0[2] = { // NOLINT 1277 {{105, 775}}, {{kSentinel}} }; // NOLINT 1278static const uint16_t kToLowercaseTable0Size = 488; // NOLINT 1279static const int32_t kToLowercaseTable0[976] = { 1280 1073741889, 128, 90, 128, 1073742016, 128, 1281 214, 128, 1073742040, 128, 222, 128, 1282 256, 4, 258, 4, // NOLINT 1283 260, 4, 262, 4, 264, 4, 1284 266, 4, 268, 4, 270, 4, 1285 272, 4, 274, 4, // NOLINT 1286 276, 4, 278, 4, 280, 4, 1287 282, 4, 284, 4, 286, 4, 1288 288, 4, 290, 4, // NOLINT 1289 292, 4, 294, 4, 296, 4, 1290 298, 4, 300, 4, 302, 4, 1291 304, 1, 306, 4, // NOLINT 1292 308, 4, 310, 4, 313, 4, 1293 315, 4, 317, 4, 319, 4, 1294 321, 4, 323, 4, // NOLINT 1295 325, 4, 327, 4, 330, 4, 1296 332, 4, 334, 4, 336, 4, 1297 338, 4, 340, 4, // NOLINT 1298 342, 4, 344, 4, 346, 4, 1299 348, 4, 350, 4, 352, 4, 1300 354, 4, 356, 4, // NOLINT 1301 358, 4, 360, 4, 362, 4, 1302 364, 4, 366, 4, 368, 4, 1303 370, 4, 372, 4, // NOLINT 1304 374, 4, 376, -484, 377, 4, 1305 379, 4, 381, 4, 385, 840, 1306 386, 4, 388, 4, // NOLINT 1307 390, 824, 391, 4, 1073742217, 820, 1308 394, 820, 395, 4, 398, 316, 1309 399, 808, 400, 812, // NOLINT 1310 401, 4, 403, 820, 404, 828, 1311 406, 844, 407, 836, 408, 4, 1312 412, 844, 413, 852, // NOLINT 1313 415, 856, 416, 4, 418, 4, 1314 420, 4, 422, 872, 423, 4, 1315 425, 872, 428, 4, // NOLINT 1316 430, 872, 431, 4, 1073742257, 868, 1317 434, 868, 435, 4, 437, 4, 1318 439, 876, 440, 4, // NOLINT 1319 444, 4, 452, 8, 453, 4, 1320 455, 8, 456, 4, 458, 8, 1321 459, 4, 461, 4, // NOLINT 1322 463, 4, 465, 4, 467, 4, 1323 469, 4, 471, 4, 473, 4, 1324 475, 4, 478, 4, // NOLINT 1325 480, 4, 482, 4, 484, 4, 1326 486, 4, 488, 4, 490, 4, 1327 492, 4, 494, 4, // NOLINT 1328 497, 8, 498, 4, 500, 4, 1329 502, -388, 503, -224, 504, 4, 1330 506, 4, 508, 4, // NOLINT 1331 510, 4, 512, 4, 514, 4, 1332 516, 4, 518, 4, 520, 4, 1333 522, 4, 524, 4, // NOLINT 1334 526, 4, 528, 4, 530, 4, 1335 532, 4, 534, 4, 536, 4, 1336 538, 4, 540, 4, // NOLINT 1337 542, 4, 544, -520, 546, 4, 1338 548, 4, 550, 4, 552, 4, 1339 554, 4, 556, 4, // NOLINT 1340 558, 4, 560, 4, 562, 4, 1341 570, 43180, 571, 4, 573, -652, 1342 574, 43168, 577, 4, // NOLINT 1343 579, -780, 580, 276, 581, 284, 1344 582, 4, 584, 4, 586, 4, 1345 588, 4, 590, 4, // NOLINT 1346 880, 4, 882, 4, 886, 4, 1347 895, 464, 902, 152, 1073742728, 148, 1348 906, 148, 908, 256, // NOLINT 1349 1073742734, 252, 911, 252, 1073742737, 128, 1350 929, 128, 931, 6, 1073742756, 128, 1351 939, 128, 975, 32, // NOLINT 1352 984, 4, 986, 4, 988, 4, 1353 990, 4, 992, 4, 994, 4, 1354 996, 4, 998, 4, // NOLINT 1355 1000, 4, 1002, 4, 1004, 4, 1356 1006, 4, 1012, -240, 1015, 4, 1357 1017, -28, 1018, 4, // NOLINT 1358 1073742845, -520, 1023, -520, 1073742848, 320, 1359 1039, 320, 1073742864, 128, 1071, 128, 1360 1120, 4, 1122, 4, // NOLINT 1361 1124, 4, 1126, 4, 1128, 4, 1362 1130, 4, 1132, 4, 1134, 4, 1363 1136, 4, 1138, 4, // NOLINT 1364 1140, 4, 1142, 4, 1144, 4, 1365 1146, 4, 1148, 4, 1150, 4, 1366 1152, 4, 1162, 4, // NOLINT 1367 1164, 4, 1166, 4, 1168, 4, 1368 1170, 4, 1172, 4, 1174, 4, 1369 1176, 4, 1178, 4, // NOLINT 1370 1180, 4, 1182, 4, 1184, 4, 1371 1186, 4, 1188, 4, 1190, 4, 1372 1192, 4, 1194, 4, // NOLINT 1373 1196, 4, 1198, 4, 1200, 4, 1374 1202, 4, 1204, 4, 1206, 4, 1375 1208, 4, 1210, 4, // NOLINT 1376 1212, 4, 1214, 4, 1216, 60, 1377 1217, 4, 1219, 4, 1221, 4, 1378 1223, 4, 1225, 4, // NOLINT 1379 1227, 4, 1229, 4, 1232, 4, 1380 1234, 4, 1236, 4, 1238, 4, 1381 1240, 4, 1242, 4, // NOLINT 1382 1244, 4, 1246, 4, 1248, 4, 1383 1250, 4, 1252, 4, 1254, 4, 1384 1256, 4, 1258, 4, // NOLINT 1385 1260, 4, 1262, 4, 1264, 4, 1386 1266, 4, 1268, 4, 1270, 4, 1387 1272, 4, 1274, 4, // NOLINT 1388 1276, 4, 1278, 4, 1280, 4, 1389 1282, 4, 1284, 4, 1286, 4, 1390 1288, 4, 1290, 4, // NOLINT 1391 1292, 4, 1294, 4, 1296, 4, 1392 1298, 4, 1300, 4, 1302, 4, 1393 1304, 4, 1306, 4, // NOLINT 1394 1308, 4, 1310, 4, 1312, 4, 1395 1314, 4, 1316, 4, 1318, 4, 1396 1320, 4, 1322, 4, // NOLINT 1397 1324, 4, 1326, 4, 1073743153, 192, 1398 1366, 192, 1073746080, 29056, 4293, 29056, 1399 4295, 29056, 4301, 29056, // NOLINT 1400 7680, 4, 7682, 4, 7684, 4, 1401 7686, 4, 7688, 4, 7690, 4, 1402 7692, 4, 7694, 4, // NOLINT 1403 7696, 4, 7698, 4, 7700, 4, 1404 7702, 4, 7704, 4, 7706, 4, 1405 7708, 4, 7710, 4, // NOLINT 1406 7712, 4, 7714, 4, 7716, 4, 1407 7718, 4, 7720, 4, 7722, 4, 1408 7724, 4, 7726, 4, // NOLINT 1409 7728, 4, 7730, 4, 7732, 4, 1410 7734, 4, 7736, 4, 7738, 4, 1411 7740, 4, 7742, 4, // NOLINT 1412 7744, 4, 7746, 4, 7748, 4, 1413 7750, 4, 7752, 4, 7754, 4, 1414 7756, 4, 7758, 4, // NOLINT 1415 7760, 4, 7762, 4, 7764, 4, 1416 7766, 4, 7768, 4, 7770, 4, 1417 7772, 4, 7774, 4, // NOLINT 1418 7776, 4, 7778, 4, 7780, 4, 1419 7782, 4, 7784, 4, 7786, 4, 1420 7788, 4, 7790, 4, // NOLINT 1421 7792, 4, 7794, 4, 7796, 4, 1422 7798, 4, 7800, 4, 7802, 4, 1423 7804, 4, 7806, 4, // NOLINT 1424 7808, 4, 7810, 4, 7812, 4, 1425 7814, 4, 7816, 4, 7818, 4, 1426 7820, 4, 7822, 4, // NOLINT 1427 7824, 4, 7826, 4, 7828, 4, 1428 7838, -30460, 7840, 4, 7842, 4, 1429 7844, 4, 7846, 4, // NOLINT 1430 7848, 4, 7850, 4, 7852, 4, 1431 7854, 4, 7856, 4, 7858, 4, 1432 7860, 4, 7862, 4, // NOLINT 1433 7864, 4, 7866, 4, 7868, 4, 1434 7870, 4, 7872, 4, 7874, 4, 1435 7876, 4, 7878, 4, // NOLINT 1436 7880, 4, 7882, 4, 7884, 4, 1437 7886, 4, 7888, 4, 7890, 4, 1438 7892, 4, 7894, 4, // NOLINT 1439 7896, 4, 7898, 4, 7900, 4, 1440 7902, 4, 7904, 4, 7906, 4, 1441 7908, 4, 7910, 4, // NOLINT 1442 7912, 4, 7914, 4, 7916, 4, 1443 7918, 4, 7920, 4, 7922, 4, 1444 7924, 4, 7926, 4, // NOLINT 1445 7928, 4, 7930, 4, 7932, 4, 1446 7934, 4, 1073749768, -32, 7951, -32, 1447 1073749784, -32, 7965, -32, // NOLINT 1448 1073749800, -32, 7983, -32, 1073749816, -32, 1449 7999, -32, 1073749832, -32, 8013, -32, 1450 8025, -32, 8027, -32, // NOLINT 1451 8029, -32, 8031, -32, 1073749864, -32, 1452 8047, -32, 1073749896, -32, 8079, -32, 1453 1073749912, -32, 8095, -32, // NOLINT 1454 1073749928, -32, 8111, -32, 1073749944, -32, 1455 8121, -32, 1073749946, -296, 8123, -296, 1456 8124, -36, 1073749960, -344, // NOLINT 1457 8139, -344, 8140, -36, 1073749976, -32, 1458 8153, -32, 1073749978, -400, 8155, -400, 1459 1073749992, -32, 8169, -32, // NOLINT 1460 1073749994, -448, 8171, -448, 8172, -28, 1461 1073750008, -512, 8185, -512, 1073750010, -504, 1462 8187, -504, 8188, -36}; // NOLINT 1463static const uint16_t kToLowercaseMultiStrings0Size = 2; // NOLINT 1464static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings1[1] = { // NOLINT 1465 {{kSentinel}} }; // NOLINT 1466static const uint16_t kToLowercaseTable1Size = 79; // NOLINT 1467static const int32_t kToLowercaseTable1[158] = { 1468 294, -30068, 298, -33532, 299, -33048, 306, 112, 1073742176, 64, 367, 64, 387, 4, 1073743030, 104, // NOLINT 1469 1231, 104, 1073744896, 192, 3118, 192, 3168, 4, 3170, -42972, 3171, -15256, 3172, -42908, 3175, 4, // NOLINT 1470 3177, 4, 3179, 4, 3181, -43120, 3182, -42996, 3183, -43132, 3184, -43128, 3186, 4, 3189, 4, // NOLINT 1471 1073745022, -43260, 3199, -43260, 3200, 4, 3202, 4, 3204, 4, 3206, 4, 3208, 4, 3210, 4, // NOLINT 1472 3212, 4, 3214, 4, 3216, 4, 3218, 4, 3220, 4, 3222, 4, 3224, 4, 3226, 4, // NOLINT 1473 3228, 4, 3230, 4, 3232, 4, 3234, 4, 3236, 4, 3238, 4, 3240, 4, 3242, 4, // NOLINT 1474 3244, 4, 3246, 4, 3248, 4, 3250, 4, 3252, 4, 3254, 4, 3256, 4, 3258, 4, // NOLINT 1475 3260, 4, 3262, 4, 3264, 4, 3266, 4, 3268, 4, 3270, 4, 3272, 4, 3274, 4, // NOLINT 1476 3276, 4, 3278, 4, 3280, 4, 3282, 4, 3284, 4, 3286, 4, 3288, 4, 3290, 4, // NOLINT 1477 3292, 4, 3294, 4, 3296, 4, 3298, 4, 3307, 4, 3309, 4, 3314, 4 }; // NOLINT 1478static const uint16_t kToLowercaseMultiStrings1Size = 1; // NOLINT 1479static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings5[1] = { // NOLINT 1480 {{kSentinel}} }; // NOLINT 1481static const uint16_t kToLowercaseTable5Size = 103; // NOLINT 1482static const int32_t kToLowercaseTable5[206] = { 1483 1600, 4, 1602, 4, 1604, 4, 1606, 4, 1484 1608, 4, 1610, 4, 1612, 4, 1614, 4, // NOLINT 1485 1616, 4, 1618, 4, 1620, 4, 1622, 4, 1486 1624, 4, 1626, 4, 1628, 4, 1630, 4, // NOLINT 1487 1632, 4, 1634, 4, 1636, 4, 1638, 4, 1488 1640, 4, 1642, 4, 1644, 4, 1664, 4, // NOLINT 1489 1666, 4, 1668, 4, 1670, 4, 1672, 4, 1490 1674, 4, 1676, 4, 1678, 4, 1680, 4, // NOLINT 1491 1682, 4, 1684, 4, 1686, 4, 1688, 4, 1492 1690, 4, 1826, 4, 1828, 4, 1830, 4, // NOLINT 1493 1832, 4, 1834, 4, 1836, 4, 1838, 4, 1494 1842, 4, 1844, 4, 1846, 4, 1848, 4, // NOLINT 1495 1850, 4, 1852, 4, 1854, 4, 1856, 4, 1496 1858, 4, 1860, 4, 1862, 4, 1864, 4, // NOLINT 1497 1866, 4, 1868, 4, 1870, 4, 1872, 4, 1498 1874, 4, 1876, 4, 1878, 4, 1880, 4, // NOLINT 1499 1882, 4, 1884, 4, 1886, 4, 1888, 4, 1500 1890, 4, 1892, 4, 1894, 4, 1896, 4, // NOLINT 1501 1898, 4, 1900, 4, 1902, 4, 1913, 4, 1502 1915, 4, 1917, -141328, 1918, 4, 1920, 4, // NOLINT 1503 1922, 4, 1924, 4, 1926, 4, 1931, 4, 1504 1933, -169120, 1936, 4, 1938, 4, 1942, 4, // NOLINT 1505 1944, 4, 1946, 4, 1948, 4, 1950, 4, 1506 1952, 4, 1954, 4, 1956, 4, 1958, 4, // NOLINT 1507 1960, 4, 1962, -169232, 1963, -169276, 1964, -169260, 1508 1965, -169220, 1968, -169032, 1969, -169128}; // NOLINT 1509static const uint16_t kToLowercaseMultiStrings5Size = 1; // NOLINT 1510static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings7[1] = { // NOLINT 1511 {{kSentinel}} }; // NOLINT 1512static const uint16_t kToLowercaseTable7Size = 2; // NOLINT 1513static const int32_t kToLowercaseTable7[4] = { 1514 1073749793, 128, 7994, 128 }; // NOLINT 1515static const uint16_t kToLowercaseMultiStrings7Size = 1; // NOLINT 1516int ToLowercase::Convert(uchar c, 1517 uchar n, 1518 uchar* result, 1519 bool* allow_caching_ptr) { 1520 int chunk_index = c >> 13; 1521 switch (chunk_index) { 1522 case 0: return LookupMapping<true>(kToLowercaseTable0, 1523 kToLowercaseTable0Size, 1524 kToLowercaseMultiStrings0, 1525 c, 1526 n, 1527 result, 1528 allow_caching_ptr); 1529 case 1: return LookupMapping<true>(kToLowercaseTable1, 1530 kToLowercaseTable1Size, 1531 kToLowercaseMultiStrings1, 1532 c, 1533 n, 1534 result, 1535 allow_caching_ptr); 1536 case 5: return LookupMapping<true>(kToLowercaseTable5, 1537 kToLowercaseTable5Size, 1538 kToLowercaseMultiStrings5, 1539 c, 1540 n, 1541 result, 1542 allow_caching_ptr); 1543 case 7: return LookupMapping<true>(kToLowercaseTable7, 1544 kToLowercaseTable7Size, 1545 kToLowercaseMultiStrings7, 1546 c, 1547 n, 1548 result, 1549 allow_caching_ptr); 1550 default: return 0; 1551 } 1552} 1553 1554static const MultiCharacterSpecialCase<3> kToUppercaseMultiStrings0[62] = { // NOLINT 1555 {{83, 83, kSentinel}}, {{700, 78, kSentinel}}, {{74, 780, kSentinel}}, {{921, 776, 769}}, // NOLINT 1556 {{933, 776, 769}}, {{1333, 1362, kSentinel}}, {{72, 817, kSentinel}}, {{84, 776, kSentinel}}, // NOLINT 1557 {{87, 778, kSentinel}}, {{89, 778, kSentinel}}, {{65, 702, kSentinel}}, {{933, 787, kSentinel}}, // NOLINT 1558 {{933, 787, 768}}, {{933, 787, 769}}, {{933, 787, 834}}, {{7944, 921, kSentinel}}, // NOLINT 1559 {{7945, 921, kSentinel}}, {{7946, 921, kSentinel}}, {{7947, 921, kSentinel}}, {{7948, 921, kSentinel}}, // NOLINT 1560 {{7949, 921, kSentinel}}, {{7950, 921, kSentinel}}, {{7951, 921, kSentinel}}, {{7976, 921, kSentinel}}, // NOLINT 1561 {{7977, 921, kSentinel}}, {{7978, 921, kSentinel}}, {{7979, 921, kSentinel}}, {{7980, 921, kSentinel}}, // NOLINT 1562 {{7981, 921, kSentinel}}, {{7982, 921, kSentinel}}, {{7983, 921, kSentinel}}, {{8040, 921, kSentinel}}, // NOLINT 1563 {{8041, 921, kSentinel}}, {{8042, 921, kSentinel}}, {{8043, 921, kSentinel}}, {{8044, 921, kSentinel}}, // NOLINT 1564 {{8045, 921, kSentinel}}, {{8046, 921, kSentinel}}, {{8047, 921, kSentinel}}, {{8122, 921, kSentinel}}, // NOLINT 1565 {{913, 921, kSentinel}}, {{902, 921, kSentinel}}, {{913, 834, kSentinel}}, {{913, 834, 921}}, // NOLINT 1566 {{8138, 921, kSentinel}}, {{919, 921, kSentinel}}, {{905, 921, kSentinel}}, {{919, 834, kSentinel}}, // NOLINT 1567 {{919, 834, 921}}, {{921, 776, 768}}, {{921, 834, kSentinel}}, {{921, 776, 834}}, // NOLINT 1568 {{933, 776, 768}}, {{929, 787, kSentinel}}, {{933, 834, kSentinel}}, {{933, 776, 834}}, // NOLINT 1569 {{8186, 921, kSentinel}}, {{937, 921, kSentinel}}, {{911, 921, kSentinel}}, {{937, 834, kSentinel}}, // NOLINT 1570 {{937, 834, 921}}, {{kSentinel}} }; // NOLINT 1571static const uint16_t kToUppercaseTable0Size = 590; // NOLINT 1572static const int32_t kToUppercaseTable0[1180] = { 1573 1073741921, -128, 122, -128, 181, 2972, 1574 223, 1, 1073742048, -128, 246, -128, 1575 1073742072, -128, 254, -128, // NOLINT 1576 255, 484, 257, -4, 259, -4, 1577 261, -4, 263, -4, 265, -4, 1578 267, -4, 269, -4, // NOLINT 1579 271, -4, 273, -4, 275, -4, 1580 277, -4, 279, -4, 281, -4, 1581 283, -4, 285, -4, // NOLINT 1582 287, -4, 289, -4, 291, -4, 1583 293, -4, 295, -4, 297, -4, 1584 299, -4, 301, -4, // NOLINT 1585 303, -4, 305, -928, 307, -4, 1586 309, -4, 311, -4, 314, -4, 1587 316, -4, 318, -4, // NOLINT 1588 320, -4, 322, -4, 324, -4, 1589 326, -4, 328, -4, 329, 5, 1590 331, -4, 333, -4, // NOLINT 1591 335, -4, 337, -4, 339, -4, 1592 341, -4, 343, -4, 345, -4, 1593 347, -4, 349, -4, // NOLINT 1594 351, -4, 353, -4, 355, -4, 1595 357, -4, 359, -4, 361, -4, 1596 363, -4, 365, -4, // NOLINT 1597 367, -4, 369, -4, 371, -4, 1598 373, -4, 375, -4, 378, -4, 1599 380, -4, 382, -4, // NOLINT 1600 383, -1200, 384, 780, 387, -4, 1601 389, -4, 392, -4, 396, -4, 1602 402, -4, 405, 388, // NOLINT 1603 409, -4, 410, 652, 414, 520, 1604 417, -4, 419, -4, 421, -4, 1605 424, -4, 429, -4, // NOLINT 1606 432, -4, 436, -4, 438, -4, 1607 441, -4, 445, -4, 447, 224, 1608 453, -4, 454, -8, // NOLINT 1609 456, -4, 457, -8, 459, -4, 1610 460, -8, 462, -4, 464, -4, 1611 466, -4, 468, -4, // NOLINT 1612 470, -4, 472, -4, 474, -4, 1613 476, -4, 477, -316, 479, -4, 1614 481, -4, 483, -4, // NOLINT 1615 485, -4, 487, -4, 489, -4, 1616 491, -4, 493, -4, 495, -4, 1617 496, 9, 498, -4, // NOLINT 1618 499, -8, 501, -4, 505, -4, 1619 507, -4, 509, -4, 511, -4, 1620 513, -4, 515, -4, // NOLINT 1621 517, -4, 519, -4, 521, -4, 1622 523, -4, 525, -4, 527, -4, 1623 529, -4, 531, -4, // NOLINT 1624 533, -4, 535, -4, 537, -4, 1625 539, -4, 541, -4, 543, -4, 1626 547, -4, 549, -4, // NOLINT 1627 551, -4, 553, -4, 555, -4, 1628 557, -4, 559, -4, 561, -4, 1629 563, -4, 572, -4, // NOLINT 1630 1073742399, 43260, 576, 43260, 578, -4, 1631 583, -4, 585, -4, 587, -4, 1632 589, -4, 591, -4, // NOLINT 1633 592, 43132, 593, 43120, 594, 43128, 1634 595, -840, 596, -824, 1073742422, -820, 1635 599, -820, 601, -808, // NOLINT 1636 603, -812, 604, 169276, 608, -820, 1637 609, 169260, 611, -828, 613, 169120, 1638 614, 169232, 616, -836, // NOLINT 1639 617, -844, 619, 42972, 620, 169220, 1640 623, -844, 625, 42996, 626, -852, 1641 629, -856, 637, 42908, // NOLINT 1642 640, -872, 643, -872, 647, 169128, 1643 648, -872, 649, -276, 1073742474, -868, 1644 651, -868, 652, -284, // NOLINT 1645 658, -876, 670, 169032, 837, 336, 1646 881, -4, 883, -4, 887, -4, 1647 1073742715, 520, 893, 520, // NOLINT 1648 912, 13, 940, -152, 1073742765, -148, 1649 943, -148, 944, 17, 1073742769, -128, 1650 961, -128, 962, -124, // NOLINT 1651 1073742787, -128, 971, -128, 972, -256, 1652 1073742797, -252, 974, -252, 976, -248, 1653 977, -228, 981, -188, // NOLINT 1654 982, -216, 983, -32, 985, -4, 1655 987, -4, 989, -4, 991, -4, 1656 993, -4, 995, -4, // NOLINT 1657 997, -4, 999, -4, 1001, -4, 1658 1003, -4, 1005, -4, 1007, -4, 1659 1008, -344, 1009, -320, // NOLINT 1660 1010, 28, 1011, -464, 1013, -384, 1661 1016, -4, 1019, -4, 1073742896, -128, 1662 1103, -128, 1073742928, -320, // NOLINT 1663 1119, -320, 1121, -4, 1123, -4, 1664 1125, -4, 1127, -4, 1129, -4, 1665 1131, -4, 1133, -4, // NOLINT 1666 1135, -4, 1137, -4, 1139, -4, 1667 1141, -4, 1143, -4, 1145, -4, 1668 1147, -4, 1149, -4, // NOLINT 1669 1151, -4, 1153, -4, 1163, -4, 1670 1165, -4, 1167, -4, 1169, -4, 1671 1171, -4, 1173, -4, // NOLINT 1672 1175, -4, 1177, -4, 1179, -4, 1673 1181, -4, 1183, -4, 1185, -4, 1674 1187, -4, 1189, -4, // NOLINT 1675 1191, -4, 1193, -4, 1195, -4, 1676 1197, -4, 1199, -4, 1201, -4, 1677 1203, -4, 1205, -4, // NOLINT 1678 1207, -4, 1209, -4, 1211, -4, 1679 1213, -4, 1215, -4, 1218, -4, 1680 1220, -4, 1222, -4, // NOLINT 1681 1224, -4, 1226, -4, 1228, -4, 1682 1230, -4, 1231, -60, 1233, -4, 1683 1235, -4, 1237, -4, // NOLINT 1684 1239, -4, 1241, -4, 1243, -4, 1685 1245, -4, 1247, -4, 1249, -4, 1686 1251, -4, 1253, -4, // NOLINT 1687 1255, -4, 1257, -4, 1259, -4, 1688 1261, -4, 1263, -4, 1265, -4, 1689 1267, -4, 1269, -4, // NOLINT 1690 1271, -4, 1273, -4, 1275, -4, 1691 1277, -4, 1279, -4, 1281, -4, 1692 1283, -4, 1285, -4, // NOLINT 1693 1287, -4, 1289, -4, 1291, -4, 1694 1293, -4, 1295, -4, 1297, -4, 1695 1299, -4, 1301, -4, // NOLINT 1696 1303, -4, 1305, -4, 1307, -4, 1697 1309, -4, 1311, -4, 1313, -4, 1698 1315, -4, 1317, -4, // NOLINT 1699 1319, -4, 1321, -4, 1323, -4, 1700 1325, -4, 1327, -4, 1073743201, -192, 1701 1414, -192, 1415, 21, // NOLINT 1702 7545, 141328, 7549, 15256, 7681, -4, 1703 7683, -4, 7685, -4, 7687, -4, 1704 7689, -4, 7691, -4, // NOLINT 1705 7693, -4, 7695, -4, 7697, -4, 1706 7699, -4, 7701, -4, 7703, -4, 1707 7705, -4, 7707, -4, // NOLINT 1708 7709, -4, 7711, -4, 7713, -4, 1709 7715, -4, 7717, -4, 7719, -4, 1710 7721, -4, 7723, -4, // NOLINT 1711 7725, -4, 7727, -4, 7729, -4, 1712 7731, -4, 7733, -4, 7735, -4, 1713 7737, -4, 7739, -4, // NOLINT 1714 7741, -4, 7743, -4, 7745, -4, 1715 7747, -4, 7749, -4, 7751, -4, 1716 7753, -4, 7755, -4, // NOLINT 1717 7757, -4, 7759, -4, 7761, -4, 1718 7763, -4, 7765, -4, 7767, -4, 1719 7769, -4, 7771, -4, // NOLINT 1720 7773, -4, 7775, -4, 7777, -4, 1721 7779, -4, 7781, -4, 7783, -4, 1722 7785, -4, 7787, -4, // NOLINT 1723 7789, -4, 7791, -4, 7793, -4, 1724 7795, -4, 7797, -4, 7799, -4, 1725 7801, -4, 7803, -4, // NOLINT 1726 7805, -4, 7807, -4, 7809, -4, 1727 7811, -4, 7813, -4, 7815, -4, 1728 7817, -4, 7819, -4, // NOLINT 1729 7821, -4, 7823, -4, 7825, -4, 1730 7827, -4, 7829, -4, 7830, 25, 1731 7831, 29, 7832, 33, // NOLINT 1732 7833, 37, 7834, 41, 7835, -236, 1733 7841, -4, 7843, -4, 7845, -4, 1734 7847, -4, 7849, -4, // NOLINT 1735 7851, -4, 7853, -4, 7855, -4, 1736 7857, -4, 7859, -4, 7861, -4, 1737 7863, -4, 7865, -4, // NOLINT 1738 7867, -4, 7869, -4, 7871, -4, 1739 7873, -4, 7875, -4, 7877, -4, 1740 7879, -4, 7881, -4, // NOLINT 1741 7883, -4, 7885, -4, 7887, -4, 1742 7889, -4, 7891, -4, 7893, -4, 1743 7895, -4, 7897, -4, // NOLINT 1744 7899, -4, 7901, -4, 7903, -4, 1745 7905, -4, 7907, -4, 7909, -4, 1746 7911, -4, 7913, -4, // NOLINT 1747 7915, -4, 7917, -4, 7919, -4, 1748 7921, -4, 7923, -4, 7925, -4, 1749 7927, -4, 7929, -4, // NOLINT 1750 7931, -4, 7933, -4, 7935, -4, 1751 1073749760, 32, 7943, 32, 1073749776, 32, 1752 7957, 32, 1073749792, 32, // NOLINT 1753 7975, 32, 1073749808, 32, 7991, 32, 1754 1073749824, 32, 8005, 32, 8016, 45, 1755 8017, 32, 8018, 49, // NOLINT 1756 8019, 32, 8020, 53, 8021, 32, 1757 8022, 57, 8023, 32, 1073749856, 32, 1758 8039, 32, 1073749872, 296, // NOLINT 1759 8049, 296, 1073749874, 344, 8053, 344, 1760 1073749878, 400, 8055, 400, 1073749880, 512, 1761 8057, 512, 1073749882, 448, // NOLINT 1762 8059, 448, 1073749884, 504, 8061, 504, 1763 8064, 61, 8065, 65, 8066, 69, 1764 8067, 73, 8068, 77, // NOLINT 1765 8069, 81, 8070, 85, 8071, 89, 1766 8072, 61, 8073, 65, 8074, 69, 1767 8075, 73, 8076, 77, // NOLINT 1768 8077, 81, 8078, 85, 8079, 89, 1769 8080, 93, 8081, 97, 8082, 101, 1770 8083, 105, 8084, 109, // NOLINT 1771 8085, 113, 8086, 117, 8087, 121, 1772 8088, 93, 8089, 97, 8090, 101, 1773 8091, 105, 8092, 109, // NOLINT 1774 8093, 113, 8094, 117, 8095, 121, 1775 8096, 125, 8097, 129, 8098, 133, 1776 8099, 137, 8100, 141, // NOLINT 1777 8101, 145, 8102, 149, 8103, 153, 1778 8104, 125, 8105, 129, 8106, 133, 1779 8107, 137, 8108, 141, // NOLINT 1780 8109, 145, 8110, 149, 8111, 153, 1781 1073749936, 32, 8113, 32, 8114, 157, 1782 8115, 161, 8116, 165, // NOLINT 1783 8118, 169, 8119, 173, 8124, 161, 1784 8126, -28820, 8130, 177, 8131, 181, 1785 8132, 185, 8134, 189, // NOLINT 1786 8135, 193, 8140, 181, 1073749968, 32, 1787 8145, 32, 8146, 197, 8147, 13, 1788 8150, 201, 8151, 205, // NOLINT 1789 1073749984, 32, 8161, 32, 8162, 209, 1790 8163, 17, 8164, 213, 8165, 28, 1791 8166, 217, 8167, 221, // NOLINT 1792 8178, 225, 8179, 229, 8180, 233, 1793 8182, 237, 8183, 241, 8188, 229}; // NOLINT 1794static const uint16_t kToUppercaseMultiStrings0Size = 62; // NOLINT 1795static const MultiCharacterSpecialCase<1> kToUppercaseMultiStrings1[1] = { // NOLINT 1796 {{kSentinel}} }; // NOLINT 1797static const uint16_t kToUppercaseTable1Size = 73; // NOLINT 1798static const int32_t kToUppercaseTable1[146] = { 1799 334, -112, 1073742192, -64, 383, -64, 388, -4, 1073743056, -104, 1257, -104, 1073744944, -192, 3166, -192, // NOLINT 1800 3169, -4, 3173, -43180, 3174, -43168, 3176, -4, 3178, -4, 3180, -4, 3187, -4, 3190, -4, // NOLINT 1801 3201, -4, 3203, -4, 3205, -4, 3207, -4, 3209, -4, 3211, -4, 3213, -4, 3215, -4, // NOLINT 1802 3217, -4, 3219, -4, 3221, -4, 3223, -4, 3225, -4, 3227, -4, 3229, -4, 3231, -4, // NOLINT 1803 3233, -4, 3235, -4, 3237, -4, 3239, -4, 3241, -4, 3243, -4, 3245, -4, 3247, -4, // NOLINT 1804 3249, -4, 3251, -4, 3253, -4, 3255, -4, 3257, -4, 3259, -4, 3261, -4, 3263, -4, // NOLINT 1805 3265, -4, 3267, -4, 3269, -4, 3271, -4, 3273, -4, 3275, -4, 3277, -4, 3279, -4, // NOLINT 1806 3281, -4, 3283, -4, 3285, -4, 3287, -4, 3289, -4, 3291, -4, 3293, -4, 3295, -4, // NOLINT 1807 3297, -4, 3299, -4, 3308, -4, 3310, -4, 3315, -4, 1073745152, -29056, 3365, -29056, 3367, -29056, // NOLINT 1808 3373, -29056 }; // NOLINT 1809static const uint16_t kToUppercaseMultiStrings1Size = 1; // NOLINT 1810static const MultiCharacterSpecialCase<1> kToUppercaseMultiStrings5[1] = { // NOLINT 1811 {{kSentinel}} }; // NOLINT 1812static const uint16_t kToUppercaseTable5Size = 95; // NOLINT 1813static const int32_t 1814 kToUppercaseTable5[190] = {1601, -4, 1603, -4, 1605, -4, 1607, -4, 1609, -4, 1815 1611, -4, 1613, -4, 1615, -4, // NOLINT 1816 1617, -4, 1619, -4, 1621, -4, 1623, -4, 1625, -4, 1817 1627, -4, 1629, -4, 1631, -4, // NOLINT 1818 1633, -4, 1635, -4, 1637, -4, 1639, -4, 1641, -4, 1819 1643, -4, 1645, -4, 1665, -4, // NOLINT 1820 1667, -4, 1669, -4, 1671, -4, 1673, -4, 1675, -4, 1821 1677, -4, 1679, -4, 1681, -4, // NOLINT 1822 1683, -4, 1685, -4, 1687, -4, 1689, -4, 1691, -4, 1823 1827, -4, 1829, -4, 1831, -4, // NOLINT 1824 1833, -4, 1835, -4, 1837, -4, 1839, -4, 1843, -4, 1825 1845, -4, 1847, -4, 1849, -4, // NOLINT 1826 1851, -4, 1853, -4, 1855, -4, 1857, -4, 1859, -4, 1827 1861, -4, 1863, -4, 1865, -4, // NOLINT 1828 1867, -4, 1869, -4, 1871, -4, 1873, -4, 1875, -4, 1829 1877, -4, 1879, -4, 1881, -4, // NOLINT 1830 1883, -4, 1885, -4, 1887, -4, 1889, -4, 1891, -4, 1831 1893, -4, 1895, -4, 1897, -4, // NOLINT 1832 1899, -4, 1901, -4, 1903, -4, 1914, -4, 1916, -4, 1833 1919, -4, 1921, -4, 1923, -4, // NOLINT 1834 1925, -4, 1927, -4, 1932, -4, 1937, -4, 1939, -4, 1835 1943, -4, 1945, -4, 1947, -4, // NOLINT 1836 1949, -4, 1951, -4, 1953, -4, 1955, -4, 1957, -4, 1837 1959, -4, 1961, -4}; // NOLINT 1838static const uint16_t kToUppercaseMultiStrings5Size = 1; // NOLINT 1839static const MultiCharacterSpecialCase<3> kToUppercaseMultiStrings7[12] = { // NOLINT 1840 {{70, 70, kSentinel}}, {{70, 73, kSentinel}}, {{70, 76, kSentinel}}, {{70, 70, 73}}, // NOLINT 1841 {{70, 70, 76}}, {{83, 84, kSentinel}}, {{1348, 1350, kSentinel}}, {{1348, 1333, kSentinel}}, // NOLINT 1842 {{1348, 1339, kSentinel}}, {{1358, 1350, kSentinel}}, {{1348, 1341, kSentinel}}, {{kSentinel}} }; // NOLINT 1843static const uint16_t kToUppercaseTable7Size = 14; // NOLINT 1844static const int32_t kToUppercaseTable7[28] = { 1845 6912, 1, 6913, 5, 6914, 9, 6915, 13, 6916, 17, 6917, 21, 6918, 21, 6931, 25, // NOLINT 1846 6932, 29, 6933, 33, 6934, 37, 6935, 41, 1073749825, -128, 8026, -128 }; // NOLINT 1847static const uint16_t kToUppercaseMultiStrings7Size = 12; // NOLINT 1848int ToUppercase::Convert(uchar c, 1849 uchar n, 1850 uchar* result, 1851 bool* allow_caching_ptr) { 1852 int chunk_index = c >> 13; 1853 switch (chunk_index) { 1854 case 0: return LookupMapping<true>(kToUppercaseTable0, 1855 kToUppercaseTable0Size, 1856 kToUppercaseMultiStrings0, 1857 c, 1858 n, 1859 result, 1860 allow_caching_ptr); 1861 case 1: return LookupMapping<true>(kToUppercaseTable1, 1862 kToUppercaseTable1Size, 1863 kToUppercaseMultiStrings1, 1864 c, 1865 n, 1866 result, 1867 allow_caching_ptr); 1868 case 5: return LookupMapping<true>(kToUppercaseTable5, 1869 kToUppercaseTable5Size, 1870 kToUppercaseMultiStrings5, 1871 c, 1872 n, 1873 result, 1874 allow_caching_ptr); 1875 case 7: return LookupMapping<true>(kToUppercaseTable7, 1876 kToUppercaseTable7Size, 1877 kToUppercaseMultiStrings7, 1878 c, 1879 n, 1880 result, 1881 allow_caching_ptr); 1882 default: return 0; 1883 } 1884} 1885 1886static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings0[1] = { // NOLINT 1887 {{kSentinel}} }; // NOLINT 1888static const uint16_t kEcma262CanonicalizeTable0Size = 498; // NOLINT 1889static const int32_t kEcma262CanonicalizeTable0[996] = { 1890 1073741921, -128, 122, -128, 181, 2972, 1891 1073742048, -128, 246, -128, 1073742072, -128, 1892 254, -128, 255, 484, // NOLINT 1893 257, -4, 259, -4, 261, -4, 1894 263, -4, 265, -4, 267, -4, 1895 269, -4, 271, -4, // NOLINT 1896 273, -4, 275, -4, 277, -4, 1897 279, -4, 281, -4, 283, -4, 1898 285, -4, 287, -4, // NOLINT 1899 289, -4, 291, -4, 293, -4, 1900 295, -4, 297, -4, 299, -4, 1901 301, -4, 303, -4, // NOLINT 1902 307, -4, 309, -4, 311, -4, 1903 314, -4, 316, -4, 318, -4, 1904 320, -4, 322, -4, // NOLINT 1905 324, -4, 326, -4, 328, -4, 1906 331, -4, 333, -4, 335, -4, 1907 337, -4, 339, -4, // NOLINT 1908 341, -4, 343, -4, 345, -4, 1909 347, -4, 349, -4, 351, -4, 1910 353, -4, 355, -4, // NOLINT 1911 357, -4, 359, -4, 361, -4, 1912 363, -4, 365, -4, 367, -4, 1913 369, -4, 371, -4, // NOLINT 1914 373, -4, 375, -4, 378, -4, 1915 380, -4, 382, -4, 384, 780, 1916 387, -4, 389, -4, // NOLINT 1917 392, -4, 396, -4, 402, -4, 1918 405, 388, 409, -4, 410, 652, 1919 414, 520, 417, -4, // NOLINT 1920 419, -4, 421, -4, 424, -4, 1921 429, -4, 432, -4, 436, -4, 1922 438, -4, 441, -4, // NOLINT 1923 445, -4, 447, 224, 453, -4, 1924 454, -8, 456, -4, 457, -8, 1925 459, -4, 460, -8, // NOLINT 1926 462, -4, 464, -4, 466, -4, 1927 468, -4, 470, -4, 472, -4, 1928 474, -4, 476, -4, // NOLINT 1929 477, -316, 479, -4, 481, -4, 1930 483, -4, 485, -4, 487, -4, 1931 489, -4, 491, -4, // NOLINT 1932 493, -4, 495, -4, 498, -4, 1933 499, -8, 501, -4, 505, -4, 1934 507, -4, 509, -4, // NOLINT 1935 511, -4, 513, -4, 515, -4, 1936 517, -4, 519, -4, 521, -4, 1937 523, -4, 525, -4, // NOLINT 1938 527, -4, 529, -4, 531, -4, 1939 533, -4, 535, -4, 537, -4, 1940 539, -4, 541, -4, // NOLINT 1941 543, -4, 547, -4, 549, -4, 1942 551, -4, 553, -4, 555, -4, 1943 557, -4, 559, -4, // NOLINT 1944 561, -4, 563, -4, 572, -4, 1945 1073742399, 43260, 576, 43260, 578, -4, 1946 583, -4, 585, -4, // NOLINT 1947 587, -4, 589, -4, 591, -4, 1948 592, 43132, 593, 43120, 594, 43128, 1949 595, -840, 596, -824, // NOLINT 1950 1073742422, -820, 599, -820, 601, -808, 1951 603, -812, 604, 169276, 608, -820, 1952 609, 169260, 611, -828, // NOLINT 1953 613, 169120, 614, 169232, 616, -836, 1954 617, -844, 619, 42972, 620, 169220, 1955 623, -844, 625, 42996, // NOLINT 1956 626, -852, 629, -856, 637, 42908, 1957 640, -872, 643, -872, 647, 169128, 1958 648, -872, 649, -276, // NOLINT 1959 1073742474, -868, 651, -868, 652, -284, 1960 658, -876, 670, 169032, 837, 336, 1961 881, -4, 883, -4, // NOLINT 1962 887, -4, 1073742715, 520, 893, 520, 1963 940, -152, 1073742765, -148, 943, -148, 1964 1073742769, -128, 961, -128, // NOLINT 1965 962, -124, 1073742787, -128, 971, -128, 1966 972, -256, 1073742797, -252, 974, -252, 1967 976, -248, 977, -228, // NOLINT 1968 981, -188, 982, -216, 983, -32, 1969 985, -4, 987, -4, 989, -4, 1970 991, -4, 993, -4, // NOLINT 1971 995, -4, 997, -4, 999, -4, 1972 1001, -4, 1003, -4, 1005, -4, 1973 1007, -4, 1008, -344, // NOLINT 1974 1009, -320, 1010, 28, 1011, -464, 1975 1013, -384, 1016, -4, 1019, -4, 1976 1073742896, -128, 1103, -128, // NOLINT 1977 1073742928, -320, 1119, -320, 1121, -4, 1978 1123, -4, 1125, -4, 1127, -4, 1979 1129, -4, 1131, -4, // NOLINT 1980 1133, -4, 1135, -4, 1137, -4, 1981 1139, -4, 1141, -4, 1143, -4, 1982 1145, -4, 1147, -4, // NOLINT 1983 1149, -4, 1151, -4, 1153, -4, 1984 1163, -4, 1165, -4, 1167, -4, 1985 1169, -4, 1171, -4, // NOLINT 1986 1173, -4, 1175, -4, 1177, -4, 1987 1179, -4, 1181, -4, 1183, -4, 1988 1185, -4, 1187, -4, // NOLINT 1989 1189, -4, 1191, -4, 1193, -4, 1990 1195, -4, 1197, -4, 1199, -4, 1991 1201, -4, 1203, -4, // NOLINT 1992 1205, -4, 1207, -4, 1209, -4, 1993 1211, -4, 1213, -4, 1215, -4, 1994 1218, -4, 1220, -4, // NOLINT 1995 1222, -4, 1224, -4, 1226, -4, 1996 1228, -4, 1230, -4, 1231, -60, 1997 1233, -4, 1235, -4, // NOLINT 1998 1237, -4, 1239, -4, 1241, -4, 1999 1243, -4, 1245, -4, 1247, -4, 2000 1249, -4, 1251, -4, // NOLINT 2001 1253, -4, 1255, -4, 1257, -4, 2002 1259, -4, 1261, -4, 1263, -4, 2003 1265, -4, 1267, -4, // NOLINT 2004 1269, -4, 1271, -4, 1273, -4, 2005 1275, -4, 1277, -4, 1279, -4, 2006 1281, -4, 1283, -4, // NOLINT 2007 1285, -4, 1287, -4, 1289, -4, 2008 1291, -4, 1293, -4, 1295, -4, 2009 1297, -4, 1299, -4, // NOLINT 2010 1301, -4, 1303, -4, 1305, -4, 2011 1307, -4, 1309, -4, 1311, -4, 2012 1313, -4, 1315, -4, // NOLINT 2013 1317, -4, 1319, -4, 1321, -4, 2014 1323, -4, 1325, -4, 1327, -4, 2015 1073743201, -192, 1414, -192, // NOLINT 2016 7545, 141328, 7549, 15256, 7681, -4, 2017 7683, -4, 7685, -4, 7687, -4, 2018 7689, -4, 7691, -4, // NOLINT 2019 7693, -4, 7695, -4, 7697, -4, 2020 7699, -4, 7701, -4, 7703, -4, 2021 7705, -4, 7707, -4, // NOLINT 2022 7709, -4, 7711, -4, 7713, -4, 2023 7715, -4, 7717, -4, 7719, -4, 2024 7721, -4, 7723, -4, // NOLINT 2025 7725, -4, 7727, -4, 7729, -4, 2026 7731, -4, 7733, -4, 7735, -4, 2027 7737, -4, 7739, -4, // NOLINT 2028 7741, -4, 7743, -4, 7745, -4, 2029 7747, -4, 7749, -4, 7751, -4, 2030 7753, -4, 7755, -4, // NOLINT 2031 7757, -4, 7759, -4, 7761, -4, 2032 7763, -4, 7765, -4, 7767, -4, 2033 7769, -4, 7771, -4, // NOLINT 2034 7773, -4, 7775, -4, 7777, -4, 2035 7779, -4, 7781, -4, 7783, -4, 2036 7785, -4, 7787, -4, // NOLINT 2037 7789, -4, 7791, -4, 7793, -4, 2038 7795, -4, 7797, -4, 7799, -4, 2039 7801, -4, 7803, -4, // NOLINT 2040 7805, -4, 7807, -4, 7809, -4, 2041 7811, -4, 7813, -4, 7815, -4, 2042 7817, -4, 7819, -4, // NOLINT 2043 7821, -4, 7823, -4, 7825, -4, 2044 7827, -4, 7829, -4, 7835, -236, 2045 7841, -4, 7843, -4, // NOLINT 2046 7845, -4, 7847, -4, 7849, -4, 2047 7851, -4, 7853, -4, 7855, -4, 2048 7857, -4, 7859, -4, // NOLINT 2049 7861, -4, 7863, -4, 7865, -4, 2050 7867, -4, 7869, -4, 7871, -4, 2051 7873, -4, 7875, -4, // NOLINT 2052 7877, -4, 7879, -4, 7881, -4, 2053 7883, -4, 7885, -4, 7887, -4, 2054 7889, -4, 7891, -4, // NOLINT 2055 7893, -4, 7895, -4, 7897, -4, 2056 7899, -4, 7901, -4, 7903, -4, 2057 7905, -4, 7907, -4, // NOLINT 2058 7909, -4, 7911, -4, 7913, -4, 2059 7915, -4, 7917, -4, 7919, -4, 2060 7921, -4, 7923, -4, // NOLINT 2061 7925, -4, 7927, -4, 7929, -4, 2062 7931, -4, 7933, -4, 7935, -4, 2063 1073749760, 32, 7943, 32, // NOLINT 2064 1073749776, 32, 7957, 32, 1073749792, 32, 2065 7975, 32, 1073749808, 32, 7991, 32, 2066 1073749824, 32, 8005, 32, // NOLINT 2067 8017, 32, 8019, 32, 8021, 32, 2068 8023, 32, 1073749856, 32, 8039, 32, 2069 1073749872, 296, 8049, 296, // NOLINT 2070 1073749874, 344, 8053, 344, 1073749878, 400, 2071 8055, 400, 1073749880, 512, 8057, 512, 2072 1073749882, 448, 8059, 448, // NOLINT 2073 1073749884, 504, 8061, 504, 1073749936, 32, 2074 8113, 32, 8126, -28820, 1073749968, 32, 2075 8145, 32, 1073749984, 32, // NOLINT 2076 8161, 32, 8165, 28}; // NOLINT 2077static const uint16_t kEcma262CanonicalizeMultiStrings0Size = 1; // NOLINT 2078static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings1[1] = { // NOLINT 2079 {{kSentinel}} }; // NOLINT 2080static const uint16_t kEcma262CanonicalizeTable1Size = 73; // NOLINT 2081static const int32_t kEcma262CanonicalizeTable1[146] = { 2082 334, -112, 1073742192, -64, 383, -64, 388, -4, 1073743056, -104, 1257, -104, 1073744944, -192, 3166, -192, // NOLINT 2083 3169, -4, 3173, -43180, 3174, -43168, 3176, -4, 3178, -4, 3180, -4, 3187, -4, 3190, -4, // NOLINT 2084 3201, -4, 3203, -4, 3205, -4, 3207, -4, 3209, -4, 3211, -4, 3213, -4, 3215, -4, // NOLINT 2085 3217, -4, 3219, -4, 3221, -4, 3223, -4, 3225, -4, 3227, -4, 3229, -4, 3231, -4, // NOLINT 2086 3233, -4, 3235, -4, 3237, -4, 3239, -4, 3241, -4, 3243, -4, 3245, -4, 3247, -4, // NOLINT 2087 3249, -4, 3251, -4, 3253, -4, 3255, -4, 3257, -4, 3259, -4, 3261, -4, 3263, -4, // NOLINT 2088 3265, -4, 3267, -4, 3269, -4, 3271, -4, 3273, -4, 3275, -4, 3277, -4, 3279, -4, // NOLINT 2089 3281, -4, 3283, -4, 3285, -4, 3287, -4, 3289, -4, 3291, -4, 3293, -4, 3295, -4, // NOLINT 2090 3297, -4, 3299, -4, 3308, -4, 3310, -4, 3315, -4, 1073745152, -29056, 3365, -29056, 3367, -29056, // NOLINT 2091 3373, -29056 }; // NOLINT 2092static const uint16_t kEcma262CanonicalizeMultiStrings1Size = 1; // NOLINT 2093static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings5[1] = { // NOLINT 2094 {{kSentinel}} }; // NOLINT 2095static const uint16_t kEcma262CanonicalizeTable5Size = 95; // NOLINT 2096static const int32_t kEcma262CanonicalizeTable5 2097 [190] = {1601, -4, 1603, -4, 1605, -4, 1607, -4, 2098 1609, -4, 1611, -4, 1613, -4, 1615, -4, // NOLINT 2099 1617, -4, 1619, -4, 1621, -4, 1623, -4, 2100 1625, -4, 1627, -4, 1629, -4, 1631, -4, // NOLINT 2101 1633, -4, 1635, -4, 1637, -4, 1639, -4, 2102 1641, -4, 1643, -4, 1645, -4, 1665, -4, // NOLINT 2103 1667, -4, 1669, -4, 1671, -4, 1673, -4, 2104 1675, -4, 1677, -4, 1679, -4, 1681, -4, // NOLINT 2105 1683, -4, 1685, -4, 1687, -4, 1689, -4, 2106 1691, -4, 1827, -4, 1829, -4, 1831, -4, // NOLINT 2107 1833, -4, 1835, -4, 1837, -4, 1839, -4, 2108 1843, -4, 1845, -4, 1847, -4, 1849, -4, // NOLINT 2109 1851, -4, 1853, -4, 1855, -4, 1857, -4, 2110 1859, -4, 1861, -4, 1863, -4, 1865, -4, // NOLINT 2111 1867, -4, 1869, -4, 1871, -4, 1873, -4, 2112 1875, -4, 1877, -4, 1879, -4, 1881, -4, // NOLINT 2113 1883, -4, 1885, -4, 1887, -4, 1889, -4, 2114 1891, -4, 1893, -4, 1895, -4, 1897, -4, // NOLINT 2115 1899, -4, 1901, -4, 1903, -4, 1914, -4, 2116 1916, -4, 1919, -4, 1921, -4, 1923, -4, // NOLINT 2117 1925, -4, 1927, -4, 1932, -4, 1937, -4, 2118 1939, -4, 1943, -4, 1945, -4, 1947, -4, // NOLINT 2119 1949, -4, 1951, -4, 1953, -4, 1955, -4, 2120 1957, -4, 1959, -4, 1961, -4}; // NOLINT 2121static const uint16_t kEcma262CanonicalizeMultiStrings5Size = 1; // NOLINT 2122static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings7[1] = { // NOLINT 2123 {{kSentinel}} }; // NOLINT 2124static const uint16_t kEcma262CanonicalizeTable7Size = 2; // NOLINT 2125static const int32_t kEcma262CanonicalizeTable7[4] = { 2126 1073749825, -128, 8026, -128 }; // NOLINT 2127static const uint16_t kEcma262CanonicalizeMultiStrings7Size = 1; // NOLINT 2128int Ecma262Canonicalize::Convert(uchar c, 2129 uchar n, 2130 uchar* result, 2131 bool* allow_caching_ptr) { 2132 int chunk_index = c >> 13; 2133 switch (chunk_index) { 2134 case 0: return LookupMapping<true>(kEcma262CanonicalizeTable0, 2135 kEcma262CanonicalizeTable0Size, 2136 kEcma262CanonicalizeMultiStrings0, 2137 c, 2138 n, 2139 result, 2140 allow_caching_ptr); 2141 case 1: return LookupMapping<true>(kEcma262CanonicalizeTable1, 2142 kEcma262CanonicalizeTable1Size, 2143 kEcma262CanonicalizeMultiStrings1, 2144 c, 2145 n, 2146 result, 2147 allow_caching_ptr); 2148 case 5: return LookupMapping<true>(kEcma262CanonicalizeTable5, 2149 kEcma262CanonicalizeTable5Size, 2150 kEcma262CanonicalizeMultiStrings5, 2151 c, 2152 n, 2153 result, 2154 allow_caching_ptr); 2155 case 7: return LookupMapping<true>(kEcma262CanonicalizeTable7, 2156 kEcma262CanonicalizeTable7Size, 2157 kEcma262CanonicalizeMultiStrings7, 2158 c, 2159 n, 2160 result, 2161 allow_caching_ptr); 2162 default: return 0; 2163 } 2164} 2165 2166static const MultiCharacterSpecialCase<4> 2167 kEcma262UnCanonicalizeMultiStrings0[507] = { // NOLINT 2168 {{65, 97, kSentinel}}, 2169 {{90, 122, kSentinel}}, 2170 {{181, 924, 956, kSentinel}}, 2171 {{192, 224, kSentinel}}, // NOLINT 2172 {{214, 246, kSentinel}}, 2173 {{216, 248, kSentinel}}, 2174 {{222, 254, kSentinel}}, 2175 {{255, 376, kSentinel}}, // NOLINT 2176 {{256, 257, kSentinel}}, 2177 {{258, 259, kSentinel}}, 2178 {{260, 261, kSentinel}}, 2179 {{262, 263, kSentinel}}, // NOLINT 2180 {{264, 265, kSentinel}}, 2181 {{266, 267, kSentinel}}, 2182 {{268, 269, kSentinel}}, 2183 {{270, 271, kSentinel}}, // NOLINT 2184 {{272, 273, kSentinel}}, 2185 {{274, 275, kSentinel}}, 2186 {{276, 277, kSentinel}}, 2187 {{278, 279, kSentinel}}, // NOLINT 2188 {{280, 281, kSentinel}}, 2189 {{282, 283, kSentinel}}, 2190 {{284, 285, kSentinel}}, 2191 {{286, 287, kSentinel}}, // NOLINT 2192 {{288, 289, kSentinel}}, 2193 {{290, 291, kSentinel}}, 2194 {{292, 293, kSentinel}}, 2195 {{294, 295, kSentinel}}, // NOLINT 2196 {{296, 297, kSentinel}}, 2197 {{298, 299, kSentinel}}, 2198 {{300, 301, kSentinel}}, 2199 {{302, 303, kSentinel}}, // NOLINT 2200 {{306, 307, kSentinel}}, 2201 {{308, 309, kSentinel}}, 2202 {{310, 311, kSentinel}}, 2203 {{313, 314, kSentinel}}, // NOLINT 2204 {{315, 316, kSentinel}}, 2205 {{317, 318, kSentinel}}, 2206 {{319, 320, kSentinel}}, 2207 {{321, 322, kSentinel}}, // NOLINT 2208 {{323, 324, kSentinel}}, 2209 {{325, 326, kSentinel}}, 2210 {{327, 328, kSentinel}}, 2211 {{330, 331, kSentinel}}, // NOLINT 2212 {{332, 333, kSentinel}}, 2213 {{334, 335, kSentinel}}, 2214 {{336, 337, kSentinel}}, 2215 {{338, 339, kSentinel}}, // NOLINT 2216 {{340, 341, kSentinel}}, 2217 {{342, 343, kSentinel}}, 2218 {{344, 345, kSentinel}}, 2219 {{346, 347, kSentinel}}, // NOLINT 2220 {{348, 349, kSentinel}}, 2221 {{350, 351, kSentinel}}, 2222 {{352, 353, kSentinel}}, 2223 {{354, 355, kSentinel}}, // NOLINT 2224 {{356, 357, kSentinel}}, 2225 {{358, 359, kSentinel}}, 2226 {{360, 361, kSentinel}}, 2227 {{362, 363, kSentinel}}, // NOLINT 2228 {{364, 365, kSentinel}}, 2229 {{366, 367, kSentinel}}, 2230 {{368, 369, kSentinel}}, 2231 {{370, 371, kSentinel}}, // NOLINT 2232 {{372, 373, kSentinel}}, 2233 {{374, 375, kSentinel}}, 2234 {{377, 378, kSentinel}}, 2235 {{379, 380, kSentinel}}, // NOLINT 2236 {{381, 382, kSentinel}}, 2237 {{384, 579, kSentinel}}, 2238 {{385, 595, kSentinel}}, 2239 {{386, 387, kSentinel}}, // NOLINT 2240 {{388, 389, kSentinel}}, 2241 {{390, 596, kSentinel}}, 2242 {{391, 392, kSentinel}}, 2243 {{393, 598, kSentinel}}, // NOLINT 2244 {{394, 599, kSentinel}}, 2245 {{395, 396, kSentinel}}, 2246 {{398, 477, kSentinel}}, 2247 {{399, 601, kSentinel}}, // NOLINT 2248 {{400, 603, kSentinel}}, 2249 {{401, 402, kSentinel}}, 2250 {{403, 608, kSentinel}}, 2251 {{404, 611, kSentinel}}, // NOLINT 2252 {{405, 502, kSentinel}}, 2253 {{406, 617, kSentinel}}, 2254 {{407, 616, kSentinel}}, 2255 {{408, 409, kSentinel}}, // NOLINT 2256 {{410, 573, kSentinel}}, 2257 {{412, 623, kSentinel}}, 2258 {{413, 626, kSentinel}}, 2259 {{414, 544, kSentinel}}, // NOLINT 2260 {{415, 629, kSentinel}}, 2261 {{416, 417, kSentinel}}, 2262 {{418, 419, kSentinel}}, 2263 {{420, 421, kSentinel}}, // NOLINT 2264 {{422, 640, kSentinel}}, 2265 {{423, 424, kSentinel}}, 2266 {{425, 643, kSentinel}}, 2267 {{428, 429, kSentinel}}, // NOLINT 2268 {{430, 648, kSentinel}}, 2269 {{431, 432, kSentinel}}, 2270 {{433, 650, kSentinel}}, 2271 {{434, 651, kSentinel}}, // NOLINT 2272 {{435, 436, kSentinel}}, 2273 {{437, 438, kSentinel}}, 2274 {{439, 658, kSentinel}}, 2275 {{440, 441, kSentinel}}, // NOLINT 2276 {{444, 445, kSentinel}}, 2277 {{447, 503, kSentinel}}, 2278 {{452, 453, 454, kSentinel}}, 2279 {{455, 456, 457, kSentinel}}, // NOLINT 2280 {{458, 459, 460, kSentinel}}, 2281 {{461, 462, kSentinel}}, 2282 {{463, 464, kSentinel}}, 2283 {{465, 466, kSentinel}}, // NOLINT 2284 {{467, 468, kSentinel}}, 2285 {{469, 470, kSentinel}}, 2286 {{471, 472, kSentinel}}, 2287 {{473, 474, kSentinel}}, // NOLINT 2288 {{475, 476, kSentinel}}, 2289 {{478, 479, kSentinel}}, 2290 {{480, 481, kSentinel}}, 2291 {{482, 483, kSentinel}}, // NOLINT 2292 {{484, 485, kSentinel}}, 2293 {{486, 487, kSentinel}}, 2294 {{488, 489, kSentinel}}, 2295 {{490, 491, kSentinel}}, // NOLINT 2296 {{492, 493, kSentinel}}, 2297 {{494, 495, kSentinel}}, 2298 {{497, 498, 499, kSentinel}}, 2299 {{500, 501, kSentinel}}, // NOLINT 2300 {{504, 505, kSentinel}}, 2301 {{506, 507, kSentinel}}, 2302 {{508, 509, kSentinel}}, 2303 {{510, 511, kSentinel}}, // NOLINT 2304 {{512, 513, kSentinel}}, 2305 {{514, 515, kSentinel}}, 2306 {{516, 517, kSentinel}}, 2307 {{518, 519, kSentinel}}, // NOLINT 2308 {{520, 521, kSentinel}}, 2309 {{522, 523, kSentinel}}, 2310 {{524, 525, kSentinel}}, 2311 {{526, 527, kSentinel}}, // NOLINT 2312 {{528, 529, kSentinel}}, 2313 {{530, 531, kSentinel}}, 2314 {{532, 533, kSentinel}}, 2315 {{534, 535, kSentinel}}, // NOLINT 2316 {{536, 537, kSentinel}}, 2317 {{538, 539, kSentinel}}, 2318 {{540, 541, kSentinel}}, 2319 {{542, 543, kSentinel}}, // NOLINT 2320 {{546, 547, kSentinel}}, 2321 {{548, 549, kSentinel}}, 2322 {{550, 551, kSentinel}}, 2323 {{552, 553, kSentinel}}, // NOLINT 2324 {{554, 555, kSentinel}}, 2325 {{556, 557, kSentinel}}, 2326 {{558, 559, kSentinel}}, 2327 {{560, 561, kSentinel}}, // NOLINT 2328 {{562, 563, kSentinel}}, 2329 {{570, 11365, kSentinel}}, 2330 {{571, 572, kSentinel}}, 2331 {{574, 11366, kSentinel}}, // NOLINT 2332 {{575, 11390, kSentinel}}, 2333 {{576, 11391, kSentinel}}, 2334 {{577, 578, kSentinel}}, 2335 {{580, 649, kSentinel}}, // NOLINT 2336 {{581, 652, kSentinel}}, 2337 {{582, 583, kSentinel}}, 2338 {{584, 585, kSentinel}}, 2339 {{586, 587, kSentinel}}, // NOLINT 2340 {{588, 589, kSentinel}}, 2341 {{590, 591, kSentinel}}, 2342 {{592, 11375, kSentinel}}, 2343 {{593, 11373, kSentinel}}, // NOLINT 2344 {{594, 11376, kSentinel}}, 2345 {{604, 42923, kSentinel}}, 2346 {{609, 42924, kSentinel}}, 2347 {{613, 42893, kSentinel}}, // NOLINT 2348 {{614, 42922, kSentinel}}, 2349 {{619, 11362, kSentinel}}, 2350 {{620, 42925, kSentinel}}, 2351 {{625, 11374, kSentinel}}, // NOLINT 2352 {{637, 11364, kSentinel}}, 2353 {{647, 42929, kSentinel}}, 2354 {{670, 42928, kSentinel}}, 2355 {{837, 921, 953, 8126}}, // NOLINT 2356 {{880, 881, kSentinel}}, 2357 {{882, 883, kSentinel}}, 2358 {{886, 887, kSentinel}}, 2359 {{891, 1021, kSentinel}}, // NOLINT 2360 {{893, 1023, kSentinel}}, 2361 {{895, 1011, kSentinel}}, 2362 {{902, 940, kSentinel}}, 2363 {{904, 941, kSentinel}}, // NOLINT 2364 {{906, 943, kSentinel}}, 2365 {{908, 972, kSentinel}}, 2366 {{910, 973, kSentinel}}, 2367 {{911, 974, kSentinel}}, // NOLINT 2368 {{913, 945, kSentinel}}, 2369 {{914, 946, 976, kSentinel}}, 2370 {{915, 947, kSentinel}}, 2371 {{916, 948, kSentinel}}, // NOLINT 2372 {{917, 949, 1013, kSentinel}}, 2373 {{918, 950, kSentinel}}, 2374 {{919, 951, kSentinel}}, 2375 {{920, 952, 977, kSentinel}}, // NOLINT 2376 {{922, 954, 1008, kSentinel}}, 2377 {{923, 955, kSentinel}}, 2378 {{925, 957, kSentinel}}, 2379 {{927, 959, kSentinel}}, // NOLINT 2380 {{928, 960, 982, kSentinel}}, 2381 {{929, 961, 1009, kSentinel}}, 2382 {{931, 962, 963, kSentinel}}, 2383 {{932, 964, kSentinel}}, // NOLINT 2384 {{933, 965, kSentinel}}, 2385 {{934, 966, 981, kSentinel}}, 2386 {{935, 967, kSentinel}}, 2387 {{939, 971, kSentinel}}, // NOLINT 2388 {{975, 983, kSentinel}}, 2389 {{984, 985, kSentinel}}, 2390 {{986, 987, kSentinel}}, 2391 {{988, 989, kSentinel}}, // NOLINT 2392 {{990, 991, kSentinel}}, 2393 {{992, 993, kSentinel}}, 2394 {{994, 995, kSentinel}}, 2395 {{996, 997, kSentinel}}, // NOLINT 2396 {{998, 999, kSentinel}}, 2397 {{1000, 1001, kSentinel}}, 2398 {{1002, 1003, kSentinel}}, 2399 {{1004, 1005, kSentinel}}, // NOLINT 2400 {{1006, 1007, kSentinel}}, 2401 {{1010, 1017, kSentinel}}, 2402 {{1015, 1016, kSentinel}}, 2403 {{1018, 1019, kSentinel}}, // NOLINT 2404 {{1024, 1104, kSentinel}}, 2405 {{1039, 1119, kSentinel}}, 2406 {{1040, 1072, kSentinel}}, 2407 {{1071, 1103, kSentinel}}, // NOLINT 2408 {{1120, 1121, kSentinel}}, 2409 {{1122, 1123, kSentinel}}, 2410 {{1124, 1125, kSentinel}}, 2411 {{1126, 1127, kSentinel}}, // NOLINT 2412 {{1128, 1129, kSentinel}}, 2413 {{1130, 1131, kSentinel}}, 2414 {{1132, 1133, kSentinel}}, 2415 {{1134, 1135, kSentinel}}, // NOLINT 2416 {{1136, 1137, kSentinel}}, 2417 {{1138, 1139, kSentinel}}, 2418 {{1140, 1141, kSentinel}}, 2419 {{1142, 1143, kSentinel}}, // NOLINT 2420 {{1144, 1145, kSentinel}}, 2421 {{1146, 1147, kSentinel}}, 2422 {{1148, 1149, kSentinel}}, 2423 {{1150, 1151, kSentinel}}, // NOLINT 2424 {{1152, 1153, kSentinel}}, 2425 {{1162, 1163, kSentinel}}, 2426 {{1164, 1165, kSentinel}}, 2427 {{1166, 1167, kSentinel}}, // NOLINT 2428 {{1168, 1169, kSentinel}}, 2429 {{1170, 1171, kSentinel}}, 2430 {{1172, 1173, kSentinel}}, 2431 {{1174, 1175, kSentinel}}, // NOLINT 2432 {{1176, 1177, kSentinel}}, 2433 {{1178, 1179, kSentinel}}, 2434 {{1180, 1181, kSentinel}}, 2435 {{1182, 1183, kSentinel}}, // NOLINT 2436 {{1184, 1185, kSentinel}}, 2437 {{1186, 1187, kSentinel}}, 2438 {{1188, 1189, kSentinel}}, 2439 {{1190, 1191, kSentinel}}, // NOLINT 2440 {{1192, 1193, kSentinel}}, 2441 {{1194, 1195, kSentinel}}, 2442 {{1196, 1197, kSentinel}}, 2443 {{1198, 1199, kSentinel}}, // NOLINT 2444 {{1200, 1201, kSentinel}}, 2445 {{1202, 1203, kSentinel}}, 2446 {{1204, 1205, kSentinel}}, 2447 {{1206, 1207, kSentinel}}, // NOLINT 2448 {{1208, 1209, kSentinel}}, 2449 {{1210, 1211, kSentinel}}, 2450 {{1212, 1213, kSentinel}}, 2451 {{1214, 1215, kSentinel}}, // NOLINT 2452 {{1216, 1231, kSentinel}}, 2453 {{1217, 1218, kSentinel}}, 2454 {{1219, 1220, kSentinel}}, 2455 {{1221, 1222, kSentinel}}, // NOLINT 2456 {{1223, 1224, kSentinel}}, 2457 {{1225, 1226, kSentinel}}, 2458 {{1227, 1228, kSentinel}}, 2459 {{1229, 1230, kSentinel}}, // NOLINT 2460 {{1232, 1233, kSentinel}}, 2461 {{1234, 1235, kSentinel}}, 2462 {{1236, 1237, kSentinel}}, 2463 {{1238, 1239, kSentinel}}, // NOLINT 2464 {{1240, 1241, kSentinel}}, 2465 {{1242, 1243, kSentinel}}, 2466 {{1244, 1245, kSentinel}}, 2467 {{1246, 1247, kSentinel}}, // NOLINT 2468 {{1248, 1249, kSentinel}}, 2469 {{1250, 1251, kSentinel}}, 2470 {{1252, 1253, kSentinel}}, 2471 {{1254, 1255, kSentinel}}, // NOLINT 2472 {{1256, 1257, kSentinel}}, 2473 {{1258, 1259, kSentinel}}, 2474 {{1260, 1261, kSentinel}}, 2475 {{1262, 1263, kSentinel}}, // NOLINT 2476 {{1264, 1265, kSentinel}}, 2477 {{1266, 1267, kSentinel}}, 2478 {{1268, 1269, kSentinel}}, 2479 {{1270, 1271, kSentinel}}, // NOLINT 2480 {{1272, 1273, kSentinel}}, 2481 {{1274, 1275, kSentinel}}, 2482 {{1276, 1277, kSentinel}}, 2483 {{1278, 1279, kSentinel}}, // NOLINT 2484 {{1280, 1281, kSentinel}}, 2485 {{1282, 1283, kSentinel}}, 2486 {{1284, 1285, kSentinel}}, 2487 {{1286, 1287, kSentinel}}, // NOLINT 2488 {{1288, 1289, kSentinel}}, 2489 {{1290, 1291, kSentinel}}, 2490 {{1292, 1293, kSentinel}}, 2491 {{1294, 1295, kSentinel}}, // NOLINT 2492 {{1296, 1297, kSentinel}}, 2493 {{1298, 1299, kSentinel}}, 2494 {{1300, 1301, kSentinel}}, 2495 {{1302, 1303, kSentinel}}, // NOLINT 2496 {{1304, 1305, kSentinel}}, 2497 {{1306, 1307, kSentinel}}, 2498 {{1308, 1309, kSentinel}}, 2499 {{1310, 1311, kSentinel}}, // NOLINT 2500 {{1312, 1313, kSentinel}}, 2501 {{1314, 1315, kSentinel}}, 2502 {{1316, 1317, kSentinel}}, 2503 {{1318, 1319, kSentinel}}, // NOLINT 2504 {{1320, 1321, kSentinel}}, 2505 {{1322, 1323, kSentinel}}, 2506 {{1324, 1325, kSentinel}}, 2507 {{1326, 1327, kSentinel}}, // NOLINT 2508 {{1329, 1377, kSentinel}}, 2509 {{1366, 1414, kSentinel}}, 2510 {{4256, 11520, kSentinel}}, 2511 {{4293, 11557, kSentinel}}, // NOLINT 2512 {{4295, 11559, kSentinel}}, 2513 {{4301, 11565, kSentinel}}, 2514 {{7545, 42877, kSentinel}}, 2515 {{7549, 11363, kSentinel}}, // NOLINT 2516 {{7680, 7681, kSentinel}}, 2517 {{7682, 7683, kSentinel}}, 2518 {{7684, 7685, kSentinel}}, 2519 {{7686, 7687, kSentinel}}, // NOLINT 2520 {{7688, 7689, kSentinel}}, 2521 {{7690, 7691, kSentinel}}, 2522 {{7692, 7693, kSentinel}}, 2523 {{7694, 7695, kSentinel}}, // NOLINT 2524 {{7696, 7697, kSentinel}}, 2525 {{7698, 7699, kSentinel}}, 2526 {{7700, 7701, kSentinel}}, 2527 {{7702, 7703, kSentinel}}, // NOLINT 2528 {{7704, 7705, kSentinel}}, 2529 {{7706, 7707, kSentinel}}, 2530 {{7708, 7709, kSentinel}}, 2531 {{7710, 7711, kSentinel}}, // NOLINT 2532 {{7712, 7713, kSentinel}}, 2533 {{7714, 7715, kSentinel}}, 2534 {{7716, 7717, kSentinel}}, 2535 {{7718, 7719, kSentinel}}, // NOLINT 2536 {{7720, 7721, kSentinel}}, 2537 {{7722, 7723, kSentinel}}, 2538 {{7724, 7725, kSentinel}}, 2539 {{7726, 7727, kSentinel}}, // NOLINT 2540 {{7728, 7729, kSentinel}}, 2541 {{7730, 7731, kSentinel}}, 2542 {{7732, 7733, kSentinel}}, 2543 {{7734, 7735, kSentinel}}, // NOLINT 2544 {{7736, 7737, kSentinel}}, 2545 {{7738, 7739, kSentinel}}, 2546 {{7740, 7741, kSentinel}}, 2547 {{7742, 7743, kSentinel}}, // NOLINT 2548 {{7744, 7745, kSentinel}}, 2549 {{7746, 7747, kSentinel}}, 2550 {{7748, 7749, kSentinel}}, 2551 {{7750, 7751, kSentinel}}, // NOLINT 2552 {{7752, 7753, kSentinel}}, 2553 {{7754, 7755, kSentinel}}, 2554 {{7756, 7757, kSentinel}}, 2555 {{7758, 7759, kSentinel}}, // NOLINT 2556 {{7760, 7761, kSentinel}}, 2557 {{7762, 7763, kSentinel}}, 2558 {{7764, 7765, kSentinel}}, 2559 {{7766, 7767, kSentinel}}, // NOLINT 2560 {{7768, 7769, kSentinel}}, 2561 {{7770, 7771, kSentinel}}, 2562 {{7772, 7773, kSentinel}}, 2563 {{7774, 7775, kSentinel}}, // NOLINT 2564 {{7776, 7777, 7835, kSentinel}}, 2565 {{7778, 7779, kSentinel}}, 2566 {{7780, 7781, kSentinel}}, 2567 {{7782, 7783, kSentinel}}, // NOLINT 2568 {{7784, 7785, kSentinel}}, 2569 {{7786, 7787, kSentinel}}, 2570 {{7788, 7789, kSentinel}}, 2571 {{7790, 7791, kSentinel}}, // NOLINT 2572 {{7792, 7793, kSentinel}}, 2573 {{7794, 7795, kSentinel}}, 2574 {{7796, 7797, kSentinel}}, 2575 {{7798, 7799, kSentinel}}, // NOLINT 2576 {{7800, 7801, kSentinel}}, 2577 {{7802, 7803, kSentinel}}, 2578 {{7804, 7805, kSentinel}}, 2579 {{7806, 7807, kSentinel}}, // NOLINT 2580 {{7808, 7809, kSentinel}}, 2581 {{7810, 7811, kSentinel}}, 2582 {{7812, 7813, kSentinel}}, 2583 {{7814, 7815, kSentinel}}, // NOLINT 2584 {{7816, 7817, kSentinel}}, 2585 {{7818, 7819, kSentinel}}, 2586 {{7820, 7821, kSentinel}}, 2587 {{7822, 7823, kSentinel}}, // NOLINT 2588 {{7824, 7825, kSentinel}}, 2589 {{7826, 7827, kSentinel}}, 2590 {{7828, 7829, kSentinel}}, 2591 {{7840, 7841, kSentinel}}, // NOLINT 2592 {{7842, 7843, kSentinel}}, 2593 {{7844, 7845, kSentinel}}, 2594 {{7846, 7847, kSentinel}}, 2595 {{7848, 7849, kSentinel}}, // NOLINT 2596 {{7850, 7851, kSentinel}}, 2597 {{7852, 7853, kSentinel}}, 2598 {{7854, 7855, kSentinel}}, 2599 {{7856, 7857, kSentinel}}, // NOLINT 2600 {{7858, 7859, kSentinel}}, 2601 {{7860, 7861, kSentinel}}, 2602 {{7862, 7863, kSentinel}}, 2603 {{7864, 7865, kSentinel}}, // NOLINT 2604 {{7866, 7867, kSentinel}}, 2605 {{7868, 7869, kSentinel}}, 2606 {{7870, 7871, kSentinel}}, 2607 {{7872, 7873, kSentinel}}, // NOLINT 2608 {{7874, 7875, kSentinel}}, 2609 {{7876, 7877, kSentinel}}, 2610 {{7878, 7879, kSentinel}}, 2611 {{7880, 7881, kSentinel}}, // NOLINT 2612 {{7882, 7883, kSentinel}}, 2613 {{7884, 7885, kSentinel}}, 2614 {{7886, 7887, kSentinel}}, 2615 {{7888, 7889, kSentinel}}, // NOLINT 2616 {{7890, 7891, kSentinel}}, 2617 {{7892, 7893, kSentinel}}, 2618 {{7894, 7895, kSentinel}}, 2619 {{7896, 7897, kSentinel}}, // NOLINT 2620 {{7898, 7899, kSentinel}}, 2621 {{7900, 7901, kSentinel}}, 2622 {{7902, 7903, kSentinel}}, 2623 {{7904, 7905, kSentinel}}, // NOLINT 2624 {{7906, 7907, kSentinel}}, 2625 {{7908, 7909, kSentinel}}, 2626 {{7910, 7911, kSentinel}}, 2627 {{7912, 7913, kSentinel}}, // NOLINT 2628 {{7914, 7915, kSentinel}}, 2629 {{7916, 7917, kSentinel}}, 2630 {{7918, 7919, kSentinel}}, 2631 {{7920, 7921, kSentinel}}, // NOLINT 2632 {{7922, 7923, kSentinel}}, 2633 {{7924, 7925, kSentinel}}, 2634 {{7926, 7927, kSentinel}}, 2635 {{7928, 7929, kSentinel}}, // NOLINT 2636 {{7930, 7931, kSentinel}}, 2637 {{7932, 7933, kSentinel}}, 2638 {{7934, 7935, kSentinel}}, 2639 {{7936, 7944, kSentinel}}, // NOLINT 2640 {{7943, 7951, kSentinel}}, 2641 {{7952, 7960, kSentinel}}, 2642 {{7957, 7965, kSentinel}}, 2643 {{7968, 7976, kSentinel}}, // NOLINT 2644 {{7975, 7983, kSentinel}}, 2645 {{7984, 7992, kSentinel}}, 2646 {{7991, 7999, kSentinel}}, 2647 {{8000, 8008, kSentinel}}, // NOLINT 2648 {{8005, 8013, kSentinel}}, 2649 {{8017, 8025, kSentinel}}, 2650 {{8019, 8027, kSentinel}}, 2651 {{8021, 8029, kSentinel}}, // NOLINT 2652 {{8023, 8031, kSentinel}}, 2653 {{8032, 8040, kSentinel}}, 2654 {{8039, 8047, kSentinel}}, 2655 {{8048, 8122, kSentinel}}, // NOLINT 2656 {{8049, 8123, kSentinel}}, 2657 {{8050, 8136, kSentinel}}, 2658 {{8053, 8139, kSentinel}}, 2659 {{8054, 8154, kSentinel}}, // NOLINT 2660 {{8055, 8155, kSentinel}}, 2661 {{8056, 8184, kSentinel}}, 2662 {{8057, 8185, kSentinel}}, 2663 {{8058, 8170, kSentinel}}, // NOLINT 2664 {{8059, 8171, kSentinel}}, 2665 {{8060, 8186, kSentinel}}, 2666 {{8061, 8187, kSentinel}}, 2667 {{8112, 8120, kSentinel}}, // NOLINT 2668 {{8113, 8121, kSentinel}}, 2669 {{8144, 8152, kSentinel}}, 2670 {{8145, 8153, kSentinel}}, 2671 {{8160, 8168, kSentinel}}, // NOLINT 2672 {{8161, 8169, kSentinel}}, 2673 {{8165, 8172, kSentinel}}, 2674 {{kSentinel}}}; // NOLINT 2675static const uint16_t kEcma262UnCanonicalizeTable0Size = 1005; // NOLINT 2676static const int32_t kEcma262UnCanonicalizeTable0[2010] = { 2677 1073741889, 1, 90, 5, 1073741921, 1, 2678 122, 5, 181, 9, 1073742016, 13, 2679 214, 17, 1073742040, 21, // NOLINT 2680 222, 25, 1073742048, 13, 246, 17, 2681 1073742072, 21, 254, 25, 255, 29, 2682 256, 33, 257, 33, // NOLINT 2683 258, 37, 259, 37, 260, 41, 2684 261, 41, 262, 45, 263, 45, 2685 264, 49, 265, 49, // NOLINT 2686 266, 53, 267, 53, 268, 57, 2687 269, 57, 270, 61, 271, 61, 2688 272, 65, 273, 65, // NOLINT 2689 274, 69, 275, 69, 276, 73, 2690 277, 73, 278, 77, 279, 77, 2691 280, 81, 281, 81, // NOLINT 2692 282, 85, 283, 85, 284, 89, 2693 285, 89, 286, 93, 287, 93, 2694 288, 97, 289, 97, // NOLINT 2695 290, 101, 291, 101, 292, 105, 2696 293, 105, 294, 109, 295, 109, 2697 296, 113, 297, 113, // NOLINT 2698 298, 117, 299, 117, 300, 121, 2699 301, 121, 302, 125, 303, 125, 2700 306, 129, 307, 129, // NOLINT 2701 308, 133, 309, 133, 310, 137, 2702 311, 137, 313, 141, 314, 141, 2703 315, 145, 316, 145, // NOLINT 2704 317, 149, 318, 149, 319, 153, 2705 320, 153, 321, 157, 322, 157, 2706 323, 161, 324, 161, // NOLINT 2707 325, 165, 326, 165, 327, 169, 2708 328, 169, 330, 173, 331, 173, 2709 332, 177, 333, 177, // NOLINT 2710 334, 181, 335, 181, 336, 185, 2711 337, 185, 338, 189, 339, 189, 2712 340, 193, 341, 193, // NOLINT 2713 342, 197, 343, 197, 344, 201, 2714 345, 201, 346, 205, 347, 205, 2715 348, 209, 349, 209, // NOLINT 2716 350, 213, 351, 213, 352, 217, 2717 353, 217, 354, 221, 355, 221, 2718 356, 225, 357, 225, // NOLINT 2719 358, 229, 359, 229, 360, 233, 2720 361, 233, 362, 237, 363, 237, 2721 364, 241, 365, 241, // NOLINT 2722 366, 245, 367, 245, 368, 249, 2723 369, 249, 370, 253, 371, 253, 2724 372, 257, 373, 257, // NOLINT 2725 374, 261, 375, 261, 376, 29, 2726 377, 265, 378, 265, 379, 269, 2727 380, 269, 381, 273, // NOLINT 2728 382, 273, 384, 277, 385, 281, 2729 386, 285, 387, 285, 388, 289, 2730 389, 289, 390, 293, // NOLINT 2731 391, 297, 392, 297, 1073742217, 301, 2732 394, 305, 395, 309, 396, 309, 2733 398, 313, 399, 317, // NOLINT 2734 400, 321, 401, 325, 402, 325, 2735 403, 329, 404, 333, 405, 337, 2736 406, 341, 407, 345, // NOLINT 2737 408, 349, 409, 349, 410, 353, 2738 412, 357, 413, 361, 414, 365, 2739 415, 369, 416, 373, // NOLINT 2740 417, 373, 418, 377, 419, 377, 2741 420, 381, 421, 381, 422, 385, 2742 423, 389, 424, 389, // NOLINT 2743 425, 393, 428, 397, 429, 397, 2744 430, 401, 431, 405, 432, 405, 2745 1073742257, 409, 434, 413, // NOLINT 2746 435, 417, 436, 417, 437, 421, 2747 438, 421, 439, 425, 440, 429, 2748 441, 429, 444, 433, // NOLINT 2749 445, 433, 447, 437, 452, 441, 2750 453, 441, 454, 441, 455, 445, 2751 456, 445, 457, 445, // NOLINT 2752 458, 449, 459, 449, 460, 449, 2753 461, 453, 462, 453, 463, 457, 2754 464, 457, 465, 461, // NOLINT 2755 466, 461, 467, 465, 468, 465, 2756 469, 469, 470, 469, 471, 473, 2757 472, 473, 473, 477, // NOLINT 2758 474, 477, 475, 481, 476, 481, 2759 477, 313, 478, 485, 479, 485, 2760 480, 489, 481, 489, // NOLINT 2761 482, 493, 483, 493, 484, 497, 2762 485, 497, 486, 501, 487, 501, 2763 488, 505, 489, 505, // NOLINT 2764 490, 509, 491, 509, 492, 513, 2765 493, 513, 494, 517, 495, 517, 2766 497, 521, 498, 521, // NOLINT 2767 499, 521, 500, 525, 501, 525, 2768 502, 337, 503, 437, 504, 529, 2769 505, 529, 506, 533, // NOLINT 2770 507, 533, 508, 537, 509, 537, 2771 510, 541, 511, 541, 512, 545, 2772 513, 545, 514, 549, // NOLINT 2773 515, 549, 516, 553, 517, 553, 2774 518, 557, 519, 557, 520, 561, 2775 521, 561, 522, 565, // NOLINT 2776 523, 565, 524, 569, 525, 569, 2777 526, 573, 527, 573, 528, 577, 2778 529, 577, 530, 581, // NOLINT 2779 531, 581, 532, 585, 533, 585, 2780 534, 589, 535, 589, 536, 593, 2781 537, 593, 538, 597, // NOLINT 2782 539, 597, 540, 601, 541, 601, 2783 542, 605, 543, 605, 544, 365, 2784 546, 609, 547, 609, // NOLINT 2785 548, 613, 549, 613, 550, 617, 2786 551, 617, 552, 621, 553, 621, 2787 554, 625, 555, 625, // NOLINT 2788 556, 629, 557, 629, 558, 633, 2789 559, 633, 560, 637, 561, 637, 2790 562, 641, 563, 641, // NOLINT 2791 570, 645, 571, 649, 572, 649, 2792 573, 353, 574, 653, 1073742399, 657, 2793 576, 661, 577, 665, // NOLINT 2794 578, 665, 579, 277, 580, 669, 2795 581, 673, 582, 677, 583, 677, 2796 584, 681, 585, 681, // NOLINT 2797 586, 685, 587, 685, 588, 689, 2798 589, 689, 590, 693, 591, 693, 2799 592, 697, 593, 701, // NOLINT 2800 594, 705, 595, 281, 596, 293, 2801 1073742422, 301, 599, 305, 601, 317, 2802 603, 321, 604, 709, // NOLINT 2803 608, 329, 609, 713, 611, 333, 2804 613, 717, 614, 721, 616, 345, 2805 617, 341, 619, 725, // NOLINT 2806 620, 729, 623, 357, 625, 733, 2807 626, 361, 629, 369, 637, 737, 2808 640, 385, 643, 393, // NOLINT 2809 647, 741, 648, 401, 649, 669, 2810 1073742474, 409, 651, 413, 652, 673, 2811 658, 425, 670, 745, // NOLINT 2812 837, 749, 880, 753, 881, 753, 2813 882, 757, 883, 757, 886, 761, 2814 887, 761, 1073742715, 765, // NOLINT 2815 893, 769, 895, 773, 902, 777, 2816 1073742728, 781, 906, 785, 908, 789, 2817 1073742734, 793, 911, 797, // NOLINT 2818 913, 801, 914, 805, 1073742739, 809, 2819 916, 813, 917, 817, 1073742742, 821, 2820 919, 825, 920, 829, // NOLINT 2821 921, 749, 922, 833, 923, 837, 2822 924, 9, 1073742749, 841, 927, 845, 2823 928, 849, 929, 853, // NOLINT 2824 931, 857, 1073742756, 861, 933, 865, 2825 934, 869, 1073742759, 873, 939, 877, 2826 940, 777, 1073742765, 781, // NOLINT 2827 943, 785, 945, 801, 946, 805, 2828 1073742771, 809, 948, 813, 949, 817, 2829 1073742774, 821, 951, 825, // NOLINT 2830 952, 829, 953, 749, 954, 833, 2831 955, 837, 956, 9, 1073742781, 841, 2832 959, 845, 960, 849, // NOLINT 2833 961, 853, 962, 857, 963, 857, 2834 1073742788, 861, 965, 865, 966, 869, 2835 1073742791, 873, 971, 877, // NOLINT 2836 972, 789, 1073742797, 793, 974, 797, 2837 975, 881, 976, 805, 977, 829, 2838 981, 869, 982, 849, // NOLINT 2839 983, 881, 984, 885, 985, 885, 2840 986, 889, 987, 889, 988, 893, 2841 989, 893, 990, 897, // NOLINT 2842 991, 897, 992, 901, 993, 901, 2843 994, 905, 995, 905, 996, 909, 2844 997, 909, 998, 913, // NOLINT 2845 999, 913, 1000, 917, 1001, 917, 2846 1002, 921, 1003, 921, 1004, 925, 2847 1005, 925, 1006, 929, // NOLINT 2848 1007, 929, 1008, 833, 1009, 853, 2849 1010, 933, 1011, 773, 1013, 817, 2850 1015, 937, 1016, 937, // NOLINT 2851 1017, 933, 1018, 941, 1019, 941, 2852 1073742845, 765, 1023, 769, 1073742848, 945, 2853 1039, 949, 1073742864, 953, // NOLINT 2854 1071, 957, 1073742896, 953, 1103, 957, 2855 1073742928, 945, 1119, 949, 1120, 961, 2856 1121, 961, 1122, 965, // NOLINT 2857 1123, 965, 1124, 969, 1125, 969, 2858 1126, 973, 1127, 973, 1128, 977, 2859 1129, 977, 1130, 981, // NOLINT 2860 1131, 981, 1132, 985, 1133, 985, 2861 1134, 989, 1135, 989, 1136, 993, 2862 1137, 993, 1138, 997, // NOLINT 2863 1139, 997, 1140, 1001, 1141, 1001, 2864 1142, 1005, 1143, 1005, 1144, 1009, 2865 1145, 1009, 1146, 1013, // NOLINT 2866 1147, 1013, 1148, 1017, 1149, 1017, 2867 1150, 1021, 1151, 1021, 1152, 1025, 2868 1153, 1025, 1162, 1029, // NOLINT 2869 1163, 1029, 1164, 1033, 1165, 1033, 2870 1166, 1037, 1167, 1037, 1168, 1041, 2871 1169, 1041, 1170, 1045, // NOLINT 2872 1171, 1045, 1172, 1049, 1173, 1049, 2873 1174, 1053, 1175, 1053, 1176, 1057, 2874 1177, 1057, 1178, 1061, // NOLINT 2875 1179, 1061, 1180, 1065, 1181, 1065, 2876 1182, 1069, 1183, 1069, 1184, 1073, 2877 1185, 1073, 1186, 1077, // NOLINT 2878 1187, 1077, 1188, 1081, 1189, 1081, 2879 1190, 1085, 1191, 1085, 1192, 1089, 2880 1193, 1089, 1194, 1093, // NOLINT 2881 1195, 1093, 1196, 1097, 1197, 1097, 2882 1198, 1101, 1199, 1101, 1200, 1105, 2883 1201, 1105, 1202, 1109, // NOLINT 2884 1203, 1109, 1204, 1113, 1205, 1113, 2885 1206, 1117, 1207, 1117, 1208, 1121, 2886 1209, 1121, 1210, 1125, // NOLINT 2887 1211, 1125, 1212, 1129, 1213, 1129, 2888 1214, 1133, 1215, 1133, 1216, 1137, 2889 1217, 1141, 1218, 1141, // NOLINT 2890 1219, 1145, 1220, 1145, 1221, 1149, 2891 1222, 1149, 1223, 1153, 1224, 1153, 2892 1225, 1157, 1226, 1157, // NOLINT 2893 1227, 1161, 1228, 1161, 1229, 1165, 2894 1230, 1165, 1231, 1137, 1232, 1169, 2895 1233, 1169, 1234, 1173, // NOLINT 2896 1235, 1173, 1236, 1177, 1237, 1177, 2897 1238, 1181, 1239, 1181, 1240, 1185, 2898 1241, 1185, 1242, 1189, // NOLINT 2899 1243, 1189, 1244, 1193, 1245, 1193, 2900 1246, 1197, 1247, 1197, 1248, 1201, 2901 1249, 1201, 1250, 1205, // NOLINT 2902 1251, 1205, 1252, 1209, 1253, 1209, 2903 1254, 1213, 1255, 1213, 1256, 1217, 2904 1257, 1217, 1258, 1221, // NOLINT 2905 1259, 1221, 1260, 1225, 1261, 1225, 2906 1262, 1229, 1263, 1229, 1264, 1233, 2907 1265, 1233, 1266, 1237, // NOLINT 2908 1267, 1237, 1268, 1241, 1269, 1241, 2909 1270, 1245, 1271, 1245, 1272, 1249, 2910 1273, 1249, 1274, 1253, // NOLINT 2911 1275, 1253, 1276, 1257, 1277, 1257, 2912 1278, 1261, 1279, 1261, 1280, 1265, 2913 1281, 1265, 1282, 1269, // NOLINT 2914 1283, 1269, 1284, 1273, 1285, 1273, 2915 1286, 1277, 1287, 1277, 1288, 1281, 2916 1289, 1281, 1290, 1285, // NOLINT 2917 1291, 1285, 1292, 1289, 1293, 1289, 2918 1294, 1293, 1295, 1293, 1296, 1297, 2919 1297, 1297, 1298, 1301, // NOLINT 2920 1299, 1301, 1300, 1305, 1301, 1305, 2921 1302, 1309, 1303, 1309, 1304, 1313, 2922 1305, 1313, 1306, 1317, // NOLINT 2923 1307, 1317, 1308, 1321, 1309, 1321, 2924 1310, 1325, 1311, 1325, 1312, 1329, 2925 1313, 1329, 1314, 1333, // NOLINT 2926 1315, 1333, 1316, 1337, 1317, 1337, 2927 1318, 1341, 1319, 1341, 1320, 1345, 2928 1321, 1345, 1322, 1349, // NOLINT 2929 1323, 1349, 1324, 1353, 1325, 1353, 2930 1326, 1357, 1327, 1357, 1073743153, 1361, 2931 1366, 1365, 1073743201, 1361, // NOLINT 2932 1414, 1365, 1073746080, 1369, 4293, 1373, 2933 4295, 1377, 4301, 1381, 7545, 1385, 2934 7549, 1389, 7680, 1393, // NOLINT 2935 7681, 1393, 7682, 1397, 7683, 1397, 2936 7684, 1401, 7685, 1401, 7686, 1405, 2937 7687, 1405, 7688, 1409, // NOLINT 2938 7689, 1409, 7690, 1413, 7691, 1413, 2939 7692, 1417, 7693, 1417, 7694, 1421, 2940 7695, 1421, 7696, 1425, // NOLINT 2941 7697, 1425, 7698, 1429, 7699, 1429, 2942 7700, 1433, 7701, 1433, 7702, 1437, 2943 7703, 1437, 7704, 1441, // NOLINT 2944 7705, 1441, 7706, 1445, 7707, 1445, 2945 7708, 1449, 7709, 1449, 7710, 1453, 2946 7711, 1453, 7712, 1457, // NOLINT 2947 7713, 1457, 7714, 1461, 7715, 1461, 2948 7716, 1465, 7717, 1465, 7718, 1469, 2949 7719, 1469, 7720, 1473, // NOLINT 2950 7721, 1473, 7722, 1477, 7723, 1477, 2951 7724, 1481, 7725, 1481, 7726, 1485, 2952 7727, 1485, 7728, 1489, // NOLINT 2953 7729, 1489, 7730, 1493, 7731, 1493, 2954 7732, 1497, 7733, 1497, 7734, 1501, 2955 7735, 1501, 7736, 1505, // NOLINT 2956 7737, 1505, 7738, 1509, 7739, 1509, 2957 7740, 1513, 7741, 1513, 7742, 1517, 2958 7743, 1517, 7744, 1521, // NOLINT 2959 7745, 1521, 7746, 1525, 7747, 1525, 2960 7748, 1529, 7749, 1529, 7750, 1533, 2961 7751, 1533, 7752, 1537, // NOLINT 2962 7753, 1537, 7754, 1541, 7755, 1541, 2963 7756, 1545, 7757, 1545, 7758, 1549, 2964 7759, 1549, 7760, 1553, // NOLINT 2965 7761, 1553, 7762, 1557, 7763, 1557, 2966 7764, 1561, 7765, 1561, 7766, 1565, 2967 7767, 1565, 7768, 1569, // NOLINT 2968 7769, 1569, 7770, 1573, 7771, 1573, 2969 7772, 1577, 7773, 1577, 7774, 1581, 2970 7775, 1581, 7776, 1585, // NOLINT 2971 7777, 1585, 7778, 1589, 7779, 1589, 2972 7780, 1593, 7781, 1593, 7782, 1597, 2973 7783, 1597, 7784, 1601, // NOLINT 2974 7785, 1601, 7786, 1605, 7787, 1605, 2975 7788, 1609, 7789, 1609, 7790, 1613, 2976 7791, 1613, 7792, 1617, // NOLINT 2977 7793, 1617, 7794, 1621, 7795, 1621, 2978 7796, 1625, 7797, 1625, 7798, 1629, 2979 7799, 1629, 7800, 1633, // NOLINT 2980 7801, 1633, 7802, 1637, 7803, 1637, 2981 7804, 1641, 7805, 1641, 7806, 1645, 2982 7807, 1645, 7808, 1649, // NOLINT 2983 7809, 1649, 7810, 1653, 7811, 1653, 2984 7812, 1657, 7813, 1657, 7814, 1661, 2985 7815, 1661, 7816, 1665, // NOLINT 2986 7817, 1665, 7818, 1669, 7819, 1669, 2987 7820, 1673, 7821, 1673, 7822, 1677, 2988 7823, 1677, 7824, 1681, // NOLINT 2989 7825, 1681, 7826, 1685, 7827, 1685, 2990 7828, 1689, 7829, 1689, 7835, 1585, 2991 7840, 1693, 7841, 1693, // NOLINT 2992 7842, 1697, 7843, 1697, 7844, 1701, 2993 7845, 1701, 7846, 1705, 7847, 1705, 2994 7848, 1709, 7849, 1709, // NOLINT 2995 7850, 1713, 7851, 1713, 7852, 1717, 2996 7853, 1717, 7854, 1721, 7855, 1721, 2997 7856, 1725, 7857, 1725, // NOLINT 2998 7858, 1729, 7859, 1729, 7860, 1733, 2999 7861, 1733, 7862, 1737, 7863, 1737, 3000 7864, 1741, 7865, 1741, // NOLINT 3001 7866, 1745, 7867, 1745, 7868, 1749, 3002 7869, 1749, 7870, 1753, 7871, 1753, 3003 7872, 1757, 7873, 1757, // NOLINT 3004 7874, 1761, 7875, 1761, 7876, 1765, 3005 7877, 1765, 7878, 1769, 7879, 1769, 3006 7880, 1773, 7881, 1773, // NOLINT 3007 7882, 1777, 7883, 1777, 7884, 1781, 3008 7885, 1781, 7886, 1785, 7887, 1785, 3009 7888, 1789, 7889, 1789, // NOLINT 3010 7890, 1793, 7891, 1793, 7892, 1797, 3011 7893, 1797, 7894, 1801, 7895, 1801, 3012 7896, 1805, 7897, 1805, // NOLINT 3013 7898, 1809, 7899, 1809, 7900, 1813, 3014 7901, 1813, 7902, 1817, 7903, 1817, 3015 7904, 1821, 7905, 1821, // NOLINT 3016 7906, 1825, 7907, 1825, 7908, 1829, 3017 7909, 1829, 7910, 1833, 7911, 1833, 3018 7912, 1837, 7913, 1837, // NOLINT 3019 7914, 1841, 7915, 1841, 7916, 1845, 3020 7917, 1845, 7918, 1849, 7919, 1849, 3021 7920, 1853, 7921, 1853, // NOLINT 3022 7922, 1857, 7923, 1857, 7924, 1861, 3023 7925, 1861, 7926, 1865, 7927, 1865, 3024 7928, 1869, 7929, 1869, // NOLINT 3025 7930, 1873, 7931, 1873, 7932, 1877, 3026 7933, 1877, 7934, 1881, 7935, 1881, 3027 1073749760, 1885, 7943, 1889, // NOLINT 3028 1073749768, 1885, 7951, 1889, 1073749776, 1893, 3029 7957, 1897, 1073749784, 1893, 7965, 1897, 3030 1073749792, 1901, 7975, 1905, // NOLINT 3031 1073749800, 1901, 7983, 1905, 1073749808, 1909, 3032 7991, 1913, 1073749816, 1909, 7999, 1913, 3033 1073749824, 1917, 8005, 1921, // NOLINT 3034 1073749832, 1917, 8013, 1921, 8017, 1925, 3035 8019, 1929, 8021, 1933, 8023, 1937, 3036 8025, 1925, 8027, 1929, // NOLINT 3037 8029, 1933, 8031, 1937, 1073749856, 1941, 3038 8039, 1945, 1073749864, 1941, 8047, 1945, 3039 1073749872, 1949, 8049, 1953, // NOLINT 3040 1073749874, 1957, 8053, 1961, 1073749878, 1965, 3041 8055, 1969, 1073749880, 1973, 8057, 1977, 3042 1073749882, 1981, 8059, 1985, // NOLINT 3043 1073749884, 1989, 8061, 1993, 1073749936, 1997, 3044 8113, 2001, 1073749944, 1997, 8121, 2001, 3045 1073749946, 1949, 8123, 1953, // NOLINT 3046 8126, 749, 1073749960, 1957, 8139, 1961, 3047 1073749968, 2005, 8145, 2009, 1073749976, 2005, 3048 8153, 2009, 1073749978, 1965, // NOLINT 3049 8155, 1969, 1073749984, 2013, 8161, 2017, 3050 8165, 2021, 1073749992, 2013, 8169, 2017, 3051 1073749994, 1981, 8171, 1985, // NOLINT 3052 8172, 2021, 1073750008, 1973, 8185, 1977, 3053 1073750010, 1989, 8187, 1993}; // NOLINT 3054static const uint16_t kEcma262UnCanonicalizeMultiStrings0Size = 507; // NOLINT 3055static const MultiCharacterSpecialCase<2> kEcma262UnCanonicalizeMultiStrings1[83] = { // NOLINT 3056 {{8498, 8526}}, {{8544, 8560}}, {{8559, 8575}}, {{8579, 8580}}, // NOLINT 3057 {{9398, 9424}}, {{9423, 9449}}, {{11264, 11312}}, {{11310, 11358}}, // NOLINT 3058 {{11360, 11361}}, {{619, 11362}}, {{7549, 11363}}, {{637, 11364}}, // NOLINT 3059 {{570, 11365}}, {{574, 11366}}, {{11367, 11368}}, {{11369, 11370}}, // NOLINT 3060 {{11371, 11372}}, {{593, 11373}}, {{625, 11374}}, {{592, 11375}}, // NOLINT 3061 {{594, 11376}}, {{11378, 11379}}, {{11381, 11382}}, {{575, 11390}}, // NOLINT 3062 {{576, 11391}}, {{11392, 11393}}, {{11394, 11395}}, {{11396, 11397}}, // NOLINT 3063 {{11398, 11399}}, {{11400, 11401}}, {{11402, 11403}}, {{11404, 11405}}, // NOLINT 3064 {{11406, 11407}}, {{11408, 11409}}, {{11410, 11411}}, {{11412, 11413}}, // NOLINT 3065 {{11414, 11415}}, {{11416, 11417}}, {{11418, 11419}}, {{11420, 11421}}, // NOLINT 3066 {{11422, 11423}}, {{11424, 11425}}, {{11426, 11427}}, {{11428, 11429}}, // NOLINT 3067 {{11430, 11431}}, {{11432, 11433}}, {{11434, 11435}}, {{11436, 11437}}, // NOLINT 3068 {{11438, 11439}}, {{11440, 11441}}, {{11442, 11443}}, {{11444, 11445}}, // NOLINT 3069 {{11446, 11447}}, {{11448, 11449}}, {{11450, 11451}}, {{11452, 11453}}, // NOLINT 3070 {{11454, 11455}}, {{11456, 11457}}, {{11458, 11459}}, {{11460, 11461}}, // NOLINT 3071 {{11462, 11463}}, {{11464, 11465}}, {{11466, 11467}}, {{11468, 11469}}, // NOLINT 3072 {{11470, 11471}}, {{11472, 11473}}, {{11474, 11475}}, {{11476, 11477}}, // NOLINT 3073 {{11478, 11479}}, {{11480, 11481}}, {{11482, 11483}}, {{11484, 11485}}, // NOLINT 3074 {{11486, 11487}}, {{11488, 11489}}, {{11490, 11491}}, {{11499, 11500}}, // NOLINT 3075 {{11501, 11502}}, {{11506, 11507}}, {{4256, 11520}}, {{4293, 11557}}, // NOLINT 3076 {{4295, 11559}}, {{4301, 11565}}, {{kSentinel}} }; // NOLINT 3077static const uint16_t kEcma262UnCanonicalizeTable1Size = 149; // NOLINT 3078static const int32_t kEcma262UnCanonicalizeTable1[298] = { 3079 306, 1, 334, 1, 1073742176, 5, 367, 9, 1073742192, 5, 383, 9, 387, 13, 388, 13, // NOLINT 3080 1073743030, 17, 1231, 21, 1073743056, 17, 1257, 21, 1073744896, 25, 3118, 29, 1073744944, 25, 3166, 29, // NOLINT 3081 3168, 33, 3169, 33, 3170, 37, 3171, 41, 3172, 45, 3173, 49, 3174, 53, 3175, 57, // NOLINT 3082 3176, 57, 3177, 61, 3178, 61, 3179, 65, 3180, 65, 3181, 69, 3182, 73, 3183, 77, // NOLINT 3083 3184, 81, 3186, 85, 3187, 85, 3189, 89, 3190, 89, 1073745022, 93, 3199, 97, 3200, 101, // NOLINT 3084 3201, 101, 3202, 105, 3203, 105, 3204, 109, 3205, 109, 3206, 113, 3207, 113, 3208, 117, // NOLINT 3085 3209, 117, 3210, 121, 3211, 121, 3212, 125, 3213, 125, 3214, 129, 3215, 129, 3216, 133, // NOLINT 3086 3217, 133, 3218, 137, 3219, 137, 3220, 141, 3221, 141, 3222, 145, 3223, 145, 3224, 149, // NOLINT 3087 3225, 149, 3226, 153, 3227, 153, 3228, 157, 3229, 157, 3230, 161, 3231, 161, 3232, 165, // NOLINT 3088 3233, 165, 3234, 169, 3235, 169, 3236, 173, 3237, 173, 3238, 177, 3239, 177, 3240, 181, // NOLINT 3089 3241, 181, 3242, 185, 3243, 185, 3244, 189, 3245, 189, 3246, 193, 3247, 193, 3248, 197, // NOLINT 3090 3249, 197, 3250, 201, 3251, 201, 3252, 205, 3253, 205, 3254, 209, 3255, 209, 3256, 213, // NOLINT 3091 3257, 213, 3258, 217, 3259, 217, 3260, 221, 3261, 221, 3262, 225, 3263, 225, 3264, 229, // NOLINT 3092 3265, 229, 3266, 233, 3267, 233, 3268, 237, 3269, 237, 3270, 241, 3271, 241, 3272, 245, // NOLINT 3093 3273, 245, 3274, 249, 3275, 249, 3276, 253, 3277, 253, 3278, 257, 3279, 257, 3280, 261, // NOLINT 3094 3281, 261, 3282, 265, 3283, 265, 3284, 269, 3285, 269, 3286, 273, 3287, 273, 3288, 277, // NOLINT 3095 3289, 277, 3290, 281, 3291, 281, 3292, 285, 3293, 285, 3294, 289, 3295, 289, 3296, 293, // NOLINT 3096 3297, 293, 3298, 297, 3299, 297, 3307, 301, 3308, 301, 3309, 305, 3310, 305, 3314, 309, // NOLINT 3097 3315, 309, 1073745152, 313, 3365, 317, 3367, 321, 3373, 325 }; // NOLINT 3098static const uint16_t kEcma262UnCanonicalizeMultiStrings1Size = 83; // NOLINT 3099static const MultiCharacterSpecialCase<2> 3100 kEcma262UnCanonicalizeMultiStrings5[104] = { // NOLINT 3101 {{42560, 42561}}, 3102 {{42562, 42563}}, 3103 {{42564, 42565}}, 3104 {{42566, 42567}}, // NOLINT 3105 {{42568, 42569}}, 3106 {{42570, 42571}}, 3107 {{42572, 42573}}, 3108 {{42574, 42575}}, // NOLINT 3109 {{42576, 42577}}, 3110 {{42578, 42579}}, 3111 {{42580, 42581}}, 3112 {{42582, 42583}}, // NOLINT 3113 {{42584, 42585}}, 3114 {{42586, 42587}}, 3115 {{42588, 42589}}, 3116 {{42590, 42591}}, // NOLINT 3117 {{42592, 42593}}, 3118 {{42594, 42595}}, 3119 {{42596, 42597}}, 3120 {{42598, 42599}}, // NOLINT 3121 {{42600, 42601}}, 3122 {{42602, 42603}}, 3123 {{42604, 42605}}, 3124 {{42624, 42625}}, // NOLINT 3125 {{42626, 42627}}, 3126 {{42628, 42629}}, 3127 {{42630, 42631}}, 3128 {{42632, 42633}}, // NOLINT 3129 {{42634, 42635}}, 3130 {{42636, 42637}}, 3131 {{42638, 42639}}, 3132 {{42640, 42641}}, // NOLINT 3133 {{42642, 42643}}, 3134 {{42644, 42645}}, 3135 {{42646, 42647}}, 3136 {{42648, 42649}}, // NOLINT 3137 {{42650, 42651}}, 3138 {{42786, 42787}}, 3139 {{42788, 42789}}, 3140 {{42790, 42791}}, // NOLINT 3141 {{42792, 42793}}, 3142 {{42794, 42795}}, 3143 {{42796, 42797}}, 3144 {{42798, 42799}}, // NOLINT 3145 {{42802, 42803}}, 3146 {{42804, 42805}}, 3147 {{42806, 42807}}, 3148 {{42808, 42809}}, // NOLINT 3149 {{42810, 42811}}, 3150 {{42812, 42813}}, 3151 {{42814, 42815}}, 3152 {{42816, 42817}}, // NOLINT 3153 {{42818, 42819}}, 3154 {{42820, 42821}}, 3155 {{42822, 42823}}, 3156 {{42824, 42825}}, // NOLINT 3157 {{42826, 42827}}, 3158 {{42828, 42829}}, 3159 {{42830, 42831}}, 3160 {{42832, 42833}}, // NOLINT 3161 {{42834, 42835}}, 3162 {{42836, 42837}}, 3163 {{42838, 42839}}, 3164 {{42840, 42841}}, // NOLINT 3165 {{42842, 42843}}, 3166 {{42844, 42845}}, 3167 {{42846, 42847}}, 3168 {{42848, 42849}}, // NOLINT 3169 {{42850, 42851}}, 3170 {{42852, 42853}}, 3171 {{42854, 42855}}, 3172 {{42856, 42857}}, // NOLINT 3173 {{42858, 42859}}, 3174 {{42860, 42861}}, 3175 {{42862, 42863}}, 3176 {{42873, 42874}}, // NOLINT 3177 {{42875, 42876}}, 3178 {{7545, 42877}}, 3179 {{42878, 42879}}, 3180 {{42880, 42881}}, // NOLINT 3181 {{42882, 42883}}, 3182 {{42884, 42885}}, 3183 {{42886, 42887}}, 3184 {{42891, 42892}}, // NOLINT 3185 {{613, 42893}}, 3186 {{42896, 42897}}, 3187 {{42898, 42899}}, 3188 {{42902, 42903}}, // NOLINT 3189 {{42904, 42905}}, 3190 {{42906, 42907}}, 3191 {{42908, 42909}}, 3192 {{42910, 42911}}, // NOLINT 3193 {{42912, 42913}}, 3194 {{42914, 42915}}, 3195 {{42916, 42917}}, 3196 {{42918, 42919}}, // NOLINT 3197 {{42920, 42921}}, 3198 {{614, 42922}}, 3199 {{604, 42923}}, 3200 {{609, 42924}}, // NOLINT 3201 {{620, 42925}}, 3202 {{670, 42928}}, 3203 {{647, 42929}}, 3204 {{kSentinel}}}; // NOLINT 3205static const uint16_t kEcma262UnCanonicalizeTable5Size = 198; // NOLINT 3206static const int32_t kEcma262UnCanonicalizeTable5 3207 [396] = {1600, 1, 1601, 1, 1602, 5, 1603, 5, 3208 1604, 9, 1605, 9, 1606, 13, 1607, 13, // NOLINT 3209 1608, 17, 1609, 17, 1610, 21, 1611, 21, 3210 1612, 25, 1613, 25, 1614, 29, 1615, 29, // NOLINT 3211 1616, 33, 1617, 33, 1618, 37, 1619, 37, 3212 1620, 41, 1621, 41, 1622, 45, 1623, 45, // NOLINT 3213 1624, 49, 1625, 49, 1626, 53, 1627, 53, 3214 1628, 57, 1629, 57, 1630, 61, 1631, 61, // NOLINT 3215 1632, 65, 1633, 65, 1634, 69, 1635, 69, 3216 1636, 73, 1637, 73, 1638, 77, 1639, 77, // NOLINT 3217 1640, 81, 1641, 81, 1642, 85, 1643, 85, 3218 1644, 89, 1645, 89, 1664, 93, 1665, 93, // NOLINT 3219 1666, 97, 1667, 97, 1668, 101, 1669, 101, 3220 1670, 105, 1671, 105, 1672, 109, 1673, 109, // NOLINT 3221 1674, 113, 1675, 113, 1676, 117, 1677, 117, 3222 1678, 121, 1679, 121, 1680, 125, 1681, 125, // NOLINT 3223 1682, 129, 1683, 129, 1684, 133, 1685, 133, 3224 1686, 137, 1687, 137, 1688, 141, 1689, 141, // NOLINT 3225 1690, 145, 1691, 145, 1826, 149, 1827, 149, 3226 1828, 153, 1829, 153, 1830, 157, 1831, 157, // NOLINT 3227 1832, 161, 1833, 161, 1834, 165, 1835, 165, 3228 1836, 169, 1837, 169, 1838, 173, 1839, 173, // NOLINT 3229 1842, 177, 1843, 177, 1844, 181, 1845, 181, 3230 1846, 185, 1847, 185, 1848, 189, 1849, 189, // NOLINT 3231 1850, 193, 1851, 193, 1852, 197, 1853, 197, 3232 1854, 201, 1855, 201, 1856, 205, 1857, 205, // NOLINT 3233 1858, 209, 1859, 209, 1860, 213, 1861, 213, 3234 1862, 217, 1863, 217, 1864, 221, 1865, 221, // NOLINT 3235 1866, 225, 1867, 225, 1868, 229, 1869, 229, 3236 1870, 233, 1871, 233, 1872, 237, 1873, 237, // NOLINT 3237 1874, 241, 1875, 241, 1876, 245, 1877, 245, 3238 1878, 249, 1879, 249, 1880, 253, 1881, 253, // NOLINT 3239 1882, 257, 1883, 257, 1884, 261, 1885, 261, 3240 1886, 265, 1887, 265, 1888, 269, 1889, 269, // NOLINT 3241 1890, 273, 1891, 273, 1892, 277, 1893, 277, 3242 1894, 281, 1895, 281, 1896, 285, 1897, 285, // NOLINT 3243 1898, 289, 1899, 289, 1900, 293, 1901, 293, 3244 1902, 297, 1903, 297, 1913, 301, 1914, 301, // NOLINT 3245 1915, 305, 1916, 305, 1917, 309, 1918, 313, 3246 1919, 313, 1920, 317, 1921, 317, 1922, 321, // NOLINT 3247 1923, 321, 1924, 325, 1925, 325, 1926, 329, 3248 1927, 329, 1931, 333, 1932, 333, 1933, 337, // NOLINT 3249 1936, 341, 1937, 341, 1938, 345, 1939, 345, 3250 1942, 349, 1943, 349, 1944, 353, 1945, 353, // NOLINT 3251 1946, 357, 1947, 357, 1948, 361, 1949, 361, 3252 1950, 365, 1951, 365, 1952, 369, 1953, 369, // NOLINT 3253 1954, 373, 1955, 373, 1956, 377, 1957, 377, 3254 1958, 381, 1959, 381, 1960, 385, 1961, 385, // NOLINT 3255 1962, 389, 1963, 393, 1964, 397, 1965, 401, 3256 1968, 405, 1969, 409}; // NOLINT 3257static const uint16_t kEcma262UnCanonicalizeMultiStrings5Size = 104; // NOLINT 3258static const MultiCharacterSpecialCase<2> kEcma262UnCanonicalizeMultiStrings7[3] = { // NOLINT 3259 {{65313, 65345}}, {{65338, 65370}}, {{kSentinel}} }; // NOLINT 3260static const uint16_t kEcma262UnCanonicalizeTable7Size = 4; // NOLINT 3261static const int32_t kEcma262UnCanonicalizeTable7[8] = { 3262 1073749793, 1, 7994, 5, 1073749825, 1, 8026, 5 }; // NOLINT 3263static const uint16_t kEcma262UnCanonicalizeMultiStrings7Size = 3; // NOLINT 3264int Ecma262UnCanonicalize::Convert(uchar c, 3265 uchar n, 3266 uchar* result, 3267 bool* allow_caching_ptr) { 3268 int chunk_index = c >> 13; 3269 switch (chunk_index) { 3270 case 0: return LookupMapping<true>(kEcma262UnCanonicalizeTable0, 3271 kEcma262UnCanonicalizeTable0Size, 3272 kEcma262UnCanonicalizeMultiStrings0, 3273 c, 3274 n, 3275 result, 3276 allow_caching_ptr); 3277 case 1: return LookupMapping<true>(kEcma262UnCanonicalizeTable1, 3278 kEcma262UnCanonicalizeTable1Size, 3279 kEcma262UnCanonicalizeMultiStrings1, 3280 c, 3281 n, 3282 result, 3283 allow_caching_ptr); 3284 case 5: return LookupMapping<true>(kEcma262UnCanonicalizeTable5, 3285 kEcma262UnCanonicalizeTable5Size, 3286 kEcma262UnCanonicalizeMultiStrings5, 3287 c, 3288 n, 3289 result, 3290 allow_caching_ptr); 3291 case 7: return LookupMapping<true>(kEcma262UnCanonicalizeTable7, 3292 kEcma262UnCanonicalizeTable7Size, 3293 kEcma262UnCanonicalizeMultiStrings7, 3294 c, 3295 n, 3296 result, 3297 allow_caching_ptr); 3298 default: return 0; 3299 } 3300} 3301 3302static const MultiCharacterSpecialCase<1> kCanonicalizationRangeMultiStrings0[1] = { // NOLINT 3303 {{kSentinel}} }; // NOLINT 3304static const uint16_t kCanonicalizationRangeTable0Size = 70; // NOLINT 3305static const int32_t kCanonicalizationRangeTable0[140] = { 3306 1073741889, 100, 90, 0, 1073741921, 100, 122, 0, 1073742016, 88, 214, 0, 1073742040, 24, 222, 0, // NOLINT 3307 1073742048, 88, 246, 0, 1073742072, 24, 254, 0, 1073742715, 8, 893, 0, 1073742728, 8, 906, 0, // NOLINT 3308 1073742749, 8, 927, 0, 1073742759, 16, 939, 0, 1073742765, 8, 943, 0, 1073742781, 8, 959, 0, // NOLINT 3309 1073742791, 16, 971, 0, 1073742845, 8, 1023, 0, 1073742848, 60, 1039, 0, 1073742864, 124, 1071, 0, // NOLINT 3310 1073742896, 124, 1103, 0, 1073742928, 60, 1119, 0, 1073743153, 148, 1366, 0, 1073743201, 148, 1414, 0, // NOLINT 3311 1073746080, 148, 4293, 0, 1073749760, 28, 7943, 0, 1073749768, 28, 7951, 0, 1073749776, 20, 7957, 0, // NOLINT 3312 1073749784, 20, 7965, 0, 1073749792, 28, 7975, 0, 1073749800, 28, 7983, 0, 1073749808, 28, 7991, 0, // NOLINT 3313 1073749816, 28, 7999, 0, 1073749824, 20, 8005, 0, 1073749832, 20, 8013, 0, 1073749856, 28, 8039, 0, // NOLINT 3314 1073749864, 28, 8047, 0, 1073749874, 12, 8053, 0, 1073749960, 12, 8139, 0 }; // NOLINT 3315static const uint16_t kCanonicalizationRangeMultiStrings0Size = 1; // NOLINT 3316static const MultiCharacterSpecialCase<1> kCanonicalizationRangeMultiStrings1[1] = { // NOLINT 3317 {{kSentinel}} }; // NOLINT 3318static const uint16_t kCanonicalizationRangeTable1Size = 14; // NOLINT 3319static const int32_t kCanonicalizationRangeTable1[28] = { 3320 1073742176, 60, 367, 0, 1073742192, 60, 383, 0, 1073743030, 100, 1231, 0, 1073743056, 100, 1257, 0, // NOLINT 3321 1073744896, 184, 3118, 0, 1073744944, 184, 3166, 0, 1073745152, 148, 3365, 0 }; // NOLINT 3322static const uint16_t kCanonicalizationRangeMultiStrings1Size = 1; // NOLINT 3323static const MultiCharacterSpecialCase<1> kCanonicalizationRangeMultiStrings7[1] = { // NOLINT 3324 {{kSentinel}} }; // NOLINT 3325static const uint16_t kCanonicalizationRangeTable7Size = 4; // NOLINT 3326static const int32_t kCanonicalizationRangeTable7[8] = { 3327 1073749793, 100, 7994, 0, 1073749825, 100, 8026, 0 }; // NOLINT 3328static const uint16_t kCanonicalizationRangeMultiStrings7Size = 1; // NOLINT 3329int CanonicalizationRange::Convert(uchar c, 3330 uchar n, 3331 uchar* result, 3332 bool* allow_caching_ptr) { 3333 int chunk_index = c >> 13; 3334 switch (chunk_index) { 3335 case 0: return LookupMapping<false>(kCanonicalizationRangeTable0, 3336 kCanonicalizationRangeTable0Size, 3337 kCanonicalizationRangeMultiStrings0, 3338 c, 3339 n, 3340 result, 3341 allow_caching_ptr); 3342 case 1: return LookupMapping<false>(kCanonicalizationRangeTable1, 3343 kCanonicalizationRangeTable1Size, 3344 kCanonicalizationRangeMultiStrings1, 3345 c, 3346 n, 3347 result, 3348 allow_caching_ptr); 3349 case 7: return LookupMapping<false>(kCanonicalizationRangeTable7, 3350 kCanonicalizationRangeTable7Size, 3351 kCanonicalizationRangeMultiStrings7, 3352 c, 3353 n, 3354 result, 3355 allow_caching_ptr); 3356 default: return 0; 3357 } 3358} 3359 3360 3361const uchar UnicodeData::kMaxCodePoint = 65533; 3362 3363int UnicodeData::GetByteCount() { 3364 return kUppercaseTable0Size * sizeof(int32_t) // NOLINT 3365 + kUppercaseTable1Size * sizeof(int32_t) // NOLINT 3366 + kUppercaseTable5Size * sizeof(int32_t) // NOLINT 3367 + kUppercaseTable7Size * sizeof(int32_t) // NOLINT 3368 + kLowercaseTable0Size * sizeof(int32_t) // NOLINT 3369 + kLowercaseTable1Size * sizeof(int32_t) // NOLINT 3370 + kLowercaseTable5Size * sizeof(int32_t) // NOLINT 3371 + kLowercaseTable7Size * sizeof(int32_t) // NOLINT 3372 + kLetterTable0Size * sizeof(int32_t) // NOLINT 3373 + kLetterTable1Size * sizeof(int32_t) // NOLINT 3374 + kLetterTable2Size * sizeof(int32_t) // NOLINT 3375 + kLetterTable3Size * sizeof(int32_t) // NOLINT 3376 + kLetterTable4Size * sizeof(int32_t) // NOLINT 3377 + kLetterTable5Size * sizeof(int32_t) // NOLINT 3378 + kLetterTable6Size * sizeof(int32_t) // NOLINT 3379 + kLetterTable7Size * sizeof(int32_t) // NOLINT 3380 + kID_StartTable0Size * sizeof(int32_t) // NOLINT 3381 + kID_StartTable1Size * sizeof(int32_t) // NOLINT 3382 + kID_StartTable2Size * sizeof(int32_t) // NOLINT 3383 + kID_StartTable3Size * sizeof(int32_t) // NOLINT 3384 + kID_StartTable4Size * sizeof(int32_t) // NOLINT 3385 + kID_StartTable5Size * sizeof(int32_t) // NOLINT 3386 + kID_StartTable6Size * sizeof(int32_t) // NOLINT 3387 + kID_StartTable7Size * sizeof(int32_t) // NOLINT 3388 + kID_ContinueTable0Size * sizeof(int32_t) // NOLINT 3389 + kID_ContinueTable1Size * sizeof(int32_t) // NOLINT 3390 + kID_ContinueTable5Size * sizeof(int32_t) // NOLINT 3391 + kID_ContinueTable7Size * sizeof(int32_t) // NOLINT 3392 + kWhiteSpaceTable0Size * sizeof(int32_t) // NOLINT 3393 + kWhiteSpaceTable1Size * sizeof(int32_t) // NOLINT 3394 + kWhiteSpaceTable7Size * sizeof(int32_t) // NOLINT 3395 + kLineTerminatorTable0Size * sizeof(int32_t) // NOLINT 3396 + kLineTerminatorTable1Size * sizeof(int32_t) // NOLINT 3397 + 3398 kToLowercaseMultiStrings0Size * 3399 sizeof(MultiCharacterSpecialCase<2>) // NOLINT 3400 + 3401 kToLowercaseMultiStrings1Size * 3402 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3403 + 3404 kToLowercaseMultiStrings5Size * 3405 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3406 + 3407 kToLowercaseMultiStrings7Size * 3408 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3409 + 3410 kToUppercaseMultiStrings0Size * 3411 sizeof(MultiCharacterSpecialCase<3>) // NOLINT 3412 + 3413 kToUppercaseMultiStrings1Size * 3414 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3415 + 3416 kToUppercaseMultiStrings5Size * 3417 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3418 + 3419 kToUppercaseMultiStrings7Size * 3420 sizeof(MultiCharacterSpecialCase<3>) // NOLINT 3421 + 3422 kEcma262CanonicalizeMultiStrings0Size * 3423 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3424 + 3425 kEcma262CanonicalizeMultiStrings1Size * 3426 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3427 + 3428 kEcma262CanonicalizeMultiStrings5Size * 3429 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3430 + 3431 kEcma262CanonicalizeMultiStrings7Size * 3432 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3433 + 3434 kEcma262UnCanonicalizeMultiStrings0Size * 3435 sizeof(MultiCharacterSpecialCase<4>) // NOLINT 3436 + 3437 kEcma262UnCanonicalizeMultiStrings1Size * 3438 sizeof(MultiCharacterSpecialCase<2>) // NOLINT 3439 + 3440 kEcma262UnCanonicalizeMultiStrings5Size * 3441 sizeof(MultiCharacterSpecialCase<2>) // NOLINT 3442 + 3443 kEcma262UnCanonicalizeMultiStrings7Size * 3444 sizeof(MultiCharacterSpecialCase<2>) // NOLINT 3445 + 3446 kCanonicalizationRangeMultiStrings0Size * 3447 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3448 + 3449 kCanonicalizationRangeMultiStrings1Size * 3450 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3451 + 3452 kCanonicalizationRangeMultiStrings7Size * 3453 sizeof(MultiCharacterSpecialCase<1>); // NOLINT 3454} 3455 3456} // namespace unibrow 3457