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