Put the flags back in and serialize clusters.

Note that now JSON glyph buffers and Unicode buffers look very similar, except for the g/u property difference.
This commit is contained in:
Simon Cozens 2020-09-21 14:35:05 +01:00
parent 54040ebfdb
commit fe186702ab
7 changed files with 592 additions and 571 deletions

View File

@ -34,33 +34,33 @@
#line 36 "hb-buffer-deserialize-json.hh" #line 36 "hb-buffer-deserialize-json.hh"
static const unsigned char _deserialize_json_trans_keys[] = { static const unsigned char _deserialize_json_trans_keys[] = {
0u, 0u, 9u, 123u, 9u, 93u, 9u, 44u, 9u, 57u, 9u, 93u, 9u, 34u, 97u, 103u, 0u, 0u, 9u, 123u, 9u, 34u, 97u, 117u, 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u,
120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 9u, 123u, 48u, 57u, 9u, 125u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u,
9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 108u, 108u, 9u, 125u, 9u, 125u, 108u, 108u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 9u, 125u,
34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 9u, 125u, 120u, 121u, 34u, 34u, 9u, 58u, 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u,
9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u,
9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 65u, 122u, 34u, 122u, 9u, 125u, 65u, 122u, 34u, 122u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 93u,
9u, 125u, 9u, 57u, 0u, 0u, 9u, 93u, 9u, 123u, 0 9u, 123u, 0u, 0u, 0
}; };
static const char _deserialize_json_key_spans[] = { static const char _deserialize_json_key_spans[] = {
0, 115, 85, 36, 49, 85, 26, 7, 0, 115, 26, 21, 2, 1, 50, 49,
2, 1, 50, 49, 10, 117, 117, 115, 10, 117, 117, 117, 1, 50, 49, 10,
117, 1, 50, 49, 10, 117, 117, 1, 117, 117, 1, 1, 50, 49, 117, 117,
1, 50, 49, 117, 117, 2, 1, 50, 2, 1, 50, 49, 10, 117, 117, 1,
49, 10, 117, 117, 1, 50, 49, 10, 50, 49, 10, 117, 117, 1, 50, 49,
117, 117, 1, 50, 49, 58, 89, 117, 58, 89, 117, 117, 1, 50, 49, 85,
117, 49, 0, 85, 115 115, 0
}; };
static const short _deserialize_json_index_offsets[] = { static const short _deserialize_json_index_offsets[] = {
0, 0, 116, 202, 239, 289, 375, 402, 0, 0, 116, 143, 165, 168, 170, 221,
410, 413, 415, 466, 516, 527, 645, 763, 271, 282, 400, 518, 636, 638, 689, 739,
879, 997, 999, 1050, 1100, 1111, 1229, 1347, 750, 868, 986, 988, 990, 1041, 1091, 1209,
1349, 1351, 1402, 1452, 1570, 1688, 1691, 1693, 1327, 1330, 1332, 1383, 1433, 1444, 1562, 1680,
1744, 1794, 1805, 1923, 2041, 2043, 2094, 2144, 1682, 1733, 1783, 1794, 1912, 2030, 2032, 2083,
2155, 2273, 2391, 2393, 2444, 2494, 2553, 2643, 2133, 2192, 2282, 2400, 2518, 2520, 2571, 2621,
2761, 2879, 2929, 2930, 3016 2707, 2823
}; };
static const char _deserialize_json_indicies[] = { static const char _deserialize_json_indicies[] = {
@ -69,72 +69,56 @@ static const char _deserialize_json_indicies[] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 2, 1, 3, 3, 3,
3, 3, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 3, 1, 4, 1,
5, 1, 6, 7, 1, 1, 8, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 9, 1, 10, 11,
1, 12, 1, 12, 12, 12, 12, 12,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 12, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 13, 1, 13, 13,
13, 13, 13, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 13, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 14, 1, 1, 15, 16, 16,
16, 16, 16, 16, 16, 16, 16, 1,
17, 18, 18, 18, 18, 18, 18, 18,
18, 18, 1, 19, 19, 19, 19, 19,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 19, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 20, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 4, 1, 5, 5, 5,
5, 5, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 5, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
6, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 7, 1, 8, 8, 8, 8, 8,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 8, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 9, 1,
9, 9, 9, 9, 9, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 9,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 2,
3, 3, 3, 3, 3, 3, 3, 3,
3, 1, 5, 5, 5, 5, 5, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 5, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 6, 1, 1,
1, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 7, 1,
11, 11, 11, 11, 11, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 11,
1, 12, 1, 13, 1, 14, 15, 1,
1, 16, 1, 17, 18, 1, 19, 1,
19, 19, 19, 19, 19, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 19,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 20, 1, 20, 20, 20, 20, 20,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 20, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 21, 1, 1, 1, 1, 1, 1, 1, 21,
1, 1, 22, 23, 23, 23, 23, 23, 1, 22, 22, 22, 22, 22, 1, 1,
23, 23, 23, 23, 1, 24, 25, 25,
25, 25, 25, 25, 25, 25, 25, 1,
26, 26, 26, 26, 26, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 26,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 27, 1, 1, 1, 1, 22, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 3, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@ -144,12 +128,13 @@ static const char _deserialize_json_indicies[] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 28, 1, 29, 29, 1, 1, 1, 1, 1, 23, 1, 19,
29, 29, 29, 1, 1, 1, 1, 1, 19, 19, 19, 19, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 29, 1, 1, 1, 1, 1, 1, 1, 1, 19, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 11, 1, 1, 1, 1, 1, 1, 1, 1, 20, 1, 1, 1, 18, 18,
18, 18, 18, 18, 18, 18, 18, 18,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@ -158,264 +143,269 @@ static const char _deserialize_json_indicies[] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 21, 1, 24, 1, 24,
24, 24, 24, 24, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 30, 1, 31, 31, 31, 31, 1, 1, 1, 1, 1, 1, 24, 1,
31, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 31, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
25, 1, 25, 25, 25, 25, 25, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 25, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 26, 1,
1, 27, 28, 28, 28, 28, 28, 28,
28, 28, 28, 1, 29, 30, 30, 30,
30, 30, 30, 30, 30, 30, 1, 31,
31, 31, 31, 31, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 31, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 32, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 4, 1,
26, 26, 26, 26, 26, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 26,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 27, 1, 1, 1, 25,
25, 25, 25, 25, 25, 25, 25, 25,
25, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 33, 1, 31, 31, 31,
31, 31, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 31, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
32, 1, 1, 1, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 28, 1, 32, 1,
32, 32, 32, 32, 32, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 32,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 33, 1, 33, 33, 33, 33, 33,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 33, 1, 1, 1, 1, 1, 1, 33, 1, 34, 1, 35, 1, 35,
1, 1, 1, 1, 1, 1, 1, 34, 35, 35, 35, 35, 1, 1, 1, 1,
1, 1, 35, 36, 36, 36, 36, 36,
36, 36, 36, 36, 1, 37, 38, 38,
38, 38, 38, 38, 38, 38, 38, 1,
39, 39, 39, 39, 39, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 39, 1, 1, 1, 1, 1, 1, 35, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 40, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
36, 1, 36, 36, 36, 36, 36, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 36, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 37, 38, 38, 38, 38, 38, 38,
38, 38, 38, 1, 39, 39, 39, 39,
39, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 39, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 40,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 41, 1, 39, 39,
39, 39, 39, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 39, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 40, 1, 1, 1, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
41, 1, 39, 39, 39, 39, 39, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 39, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 40, 1, 1,
1, 42, 42, 42, 42, 42, 42, 42,
42, 42, 42, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 41, 1, 42, 1, 43, 1,
43, 43, 43, 43, 43, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 43,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 44, 1, 44, 44, 44, 44, 44,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 44, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 41, 1,
43, 44, 1, 45, 1, 45, 45, 45,
45, 45, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 45, 46, 46, 46, 46, 46, 1, 1, 1, 1, 45, 1, 1, 1,
46, 46, 46, 46, 1, 47, 47, 47,
47, 47, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 47, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
48, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 1,
46, 46, 46, 46, 46, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 46,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 47, 1, 1, 48,
49, 49, 49, 49, 49, 49, 49, 49,
49, 1, 50, 51, 51, 51, 51, 51,
51, 51, 51, 51, 1, 52, 52, 52,
52, 52, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 52, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
53, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 49, 1, 47, 47, 47, 47, 47,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 47, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 48, 1,
1, 1, 50, 50, 50, 50, 50, 50,
50, 50, 50, 50, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 54, 1, 52, 52, 52, 52, 52,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 52, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 53, 1,
1, 1, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 49,
1, 51, 52, 1, 53, 1, 53, 53,
53, 53, 53, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 53, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 54, 1, 1, 1, 1, 1, 1, 1, 54,
1, 54, 54, 54, 54, 54, 1, 1, 1, 55, 1, 55, 55, 55, 55, 55,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
54, 1, 1, 1, 1, 1, 1, 1, 1, 1, 55, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 55, 1, 1,
56, 57, 57, 57, 57, 57, 57, 57,
57, 57, 1, 58, 59, 59, 59, 59,
59, 59, 59, 59, 59, 1, 60, 60,
60, 60, 60, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 60, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 61, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 56, 1, 56, 56,
56, 56, 56, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 56, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 57, 1, 1, 58, 59, 59,
59, 59, 59, 59, 59, 59, 59, 1,
60, 61, 61, 61, 61, 61, 61, 61,
61, 61, 1, 62, 62, 62, 62, 62,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 62, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 63, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 62, 1, 60, 60, 60, 60,
60, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 60, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 61,
1, 1, 1, 59, 59, 59, 59, 59,
59, 59, 59, 59, 59, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 64,
1, 62, 62, 62, 62, 62, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
62, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 63, 1, 1, 1,
61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
62, 1, 63, 1, 63, 63, 63, 63,
63, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 63, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 64, 1, 64,
64, 64, 64, 64, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 64, 1, 1, 1, 1, 1, 1, 64, 1, 65,
1, 65, 65, 65, 65, 65, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 65, 1, 1, 66, 67,
67, 67, 67, 67, 67, 67, 67, 67,
1, 68, 69, 69, 69, 69, 69, 69,
69, 69, 69, 1, 70, 70, 70, 70,
70, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 70, 1, 1, 1, 1, 65, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 71,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 66, 1, 66, 66, 66, 66,
66, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 66, 1, 67, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 68, 69, 69, 69, 69,
69, 69, 69, 69, 69, 1, 70, 70,
70, 70, 70, 70, 70, 70, 70, 70,
70, 70, 70, 70, 70, 70, 70, 70,
70, 70, 70, 70, 70, 70, 70, 70,
1, 1, 1, 1, 1, 1, 70, 70,
70, 70, 70, 70, 70, 70, 70, 70,
70, 70, 70, 70, 70, 70, 70, 70,
70, 70, 70, 70, 70, 70, 70, 70,
1, 71, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 72, 72, 1, 72,
72, 72, 72, 72, 72, 72, 72, 72,
72, 1, 1, 1, 1, 1, 1, 1,
72, 72, 72, 72, 72, 72, 72, 72,
72, 72, 72, 72, 72, 72, 72, 72,
72, 72, 72, 72, 72, 72, 72, 72,
72, 72, 1, 1, 1, 1, 72, 1,
72, 72, 72, 72, 72, 72, 72, 72,
72, 72, 72, 72, 72, 72, 72, 72,
72, 72, 72, 72, 72, 72, 72, 72,
72, 72, 1, 73, 73, 73, 73, 73,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 73, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 74, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
72, 1, 70, 70, 70, 70, 70, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 70, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 71, 1, 1,
1, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 75,
1, 73, 73, 73, 73, 73, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
73, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 74, 1, 1, 1,
76, 76, 76, 76, 76, 76, 76, 76,
76, 76, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 72, 1,
73, 1, 73, 73, 73, 73, 73, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 73, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 74, 1, 74, 74, 74,
74, 74, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 74, 1, 75, 1, 1, 1, 1, 1, 1, 75, 1, 77,
1, 77, 77, 77, 77, 77, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 76, 77, 77, 77,
77, 77, 77, 77, 77, 77, 1, 78,
78, 78, 78, 78, 78, 78, 78, 78,
78, 78, 78, 78, 78, 78, 78, 78,
78, 78, 78, 78, 78, 78, 78, 78,
78, 1, 1, 1, 1, 1, 1, 78,
78, 78, 78, 78, 78, 78, 78, 78,
78, 78, 78, 78, 78, 78, 78, 78,
78, 78, 78, 78, 78, 78, 78, 78,
78, 1, 79, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 80, 80, 1,
80, 80, 80, 80, 80, 80, 80, 80,
80, 80, 1, 1, 1, 1, 1, 1,
1, 80, 80, 80, 80, 80, 80, 80,
80, 80, 80, 80, 80, 80, 80, 80,
80, 80, 80, 80, 80, 80, 80, 80,
80, 80, 80, 1, 1, 1, 1, 80,
1, 80, 80, 80, 80, 80, 80, 80,
80, 80, 80, 80, 80, 80, 80, 80,
80, 80, 80, 80, 80, 80, 80, 80,
80, 80, 80, 1, 81, 81, 81, 81,
81, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 81, 1, 1, 1, 1, 77, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 82,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 78, 1, 78, 78, 78, 78,
78, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 78, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 68, 69, 69, 69, 69,
69, 69, 69, 69, 69, 1, 79, 79,
79, 79, 79, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 79, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 80, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
83, 1, 81, 81, 81, 81, 81, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 81, 1, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 81, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
1, 1, 1, 1, 1, 82, 1, 1,
1, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@ -423,77 +413,49 @@ static const char _deserialize_json_indicies[] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 83, 1,
9, 9, 9, 9, 9, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 9,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 2,
3, 3, 3, 3, 3, 3, 3, 3,
3, 1, 1, 85, 85, 85, 85, 85,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
1, 1, 85, 1, 1, 1, 1, 1, 1, 0
1, 1, 1, 1, 1, 1, 86, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 87,
1, 31, 31, 31, 31, 31, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
31, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 4, 1, 0
}; };
static const char _deserialize_json_trans_targs[] = { static const char _deserialize_json_trans_targs[] = {
1, 0, 2, 5, 6, 3, 49, 50, 1, 0, 2, 2, 3, 4, 18, 24,
3, 4, 5, 6, 7, 8, 23, 29, 37, 44, 5, 12, 6, 7, 8, 9,
42, 9, 17, 10, 11, 12, 13, 16, 11, 9, 11, 10, 2, 47, 10, 47,
13, 16, 14, 6, 51, 14, 51, 15, 13, 14, 15, 16, 17, 16, 17, 10,
18, 19, 20, 21, 22, 21, 22, 14, 2, 47, 19, 20, 21, 22, 23, 10,
6, 51, 24, 25, 26, 27, 28, 14, 2, 47, 23, 25, 31, 26, 27, 28,
6, 51, 28, 30, 36, 31, 32, 33, 29, 30, 29, 30, 10, 2, 47, 32,
34, 35, 34, 35, 14, 6, 51, 37, 33, 34, 35, 36, 35, 36, 10, 2,
38, 39, 40, 41, 40, 41, 14, 6, 47, 38, 39, 40, 42, 43, 41, 10,
51, 43, 44, 45, 47, 48, 46, 14, 41, 10, 2, 47, 43, 45, 46, 47,
46, 14, 6, 51, 48, 51, 52, 50 48, 49
}; };
static const char _deserialize_json_trans_actions[] = { static const char _deserialize_json_trans_actions[] = {
0, 0, 1, 1, 2, 3, 3, 3, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
0, 0, 0, 0, 0, 4, 4, 4, 2, 0, 0, 3, 3, 4, 0, 5,
0, 0, 5, 5, 6, 0, 7, 0, 0, 0, 2, 2, 2, 0, 0, 6,
0, 0, 4, 4, 4, 0, 0, 8, 6, 7, 0, 0, 0, 2, 2, 8,
8, 9, 0, 0, 0, 4, 4, 10, 8, 9, 0, 0, 0, 0, 0, 2,
10, 11, 0, 0, 0, 0, 0, 4, 2, 2, 0, 0, 10, 10, 11, 0,
4, 4, 0, 0, 12, 12, 13, 0, 0, 2, 2, 2, 0, 0, 12, 12,
0, 4, 4, 4, 0, 0, 14, 14, 13, 0, 0, 0, 2, 2, 2, 14,
15, 0, 0, 0, 4, 4, 4, 16, 0, 15, 15, 16, 0, 0, 0, 0,
0, 17, 17, 3, 0, 0, 0, 0 0, 0
}; };
static const int deserialize_json_start = 1; static const int deserialize_json_start = 1;
static const int deserialize_json_first_final = 49; static const int deserialize_json_first_final = 47;
static const int deserialize_json_error = 0; static const int deserialize_json_error = 0;
static const int deserialize_json_en_main = 1; static const int deserialize_json_en_main = 1;
#line 101 "hb-buffer-deserialize-json.rl" #line 98 "hb-buffer-deserialize-json.rl"
static hb_bool_t static hb_bool_t
@ -520,12 +482,12 @@ _hb_buffer_deserialize_json (hb_buffer_t *buffer,
hb_glyph_info_t info = {0}; hb_glyph_info_t info = {0};
hb_glyph_position_t pos = {0}; hb_glyph_position_t pos = {0};
#line 524 "hb-buffer-deserialize-json.hh" #line 486 "hb-buffer-deserialize-json.hh"
{ {
cs = deserialize_json_start; cs = deserialize_json_start;
} }
#line 529 "hb-buffer-deserialize-json.hh" #line 491 "hb-buffer-deserialize-json.hh"
{ {
int _slen; int _slen;
int _trans; int _trans;
@ -550,14 +512,14 @@ _resume:
goto _again; goto _again;
switch ( _deserialize_json_trans_actions[_trans] ) { switch ( _deserialize_json_trans_actions[_trans] ) {
case 2: case 1:
#line 38 "hb-buffer-deserialize-json.rl" #line 38 "hb-buffer-deserialize-json.rl"
{ {
memset (&info, 0, sizeof (info)); memset (&info, 0, sizeof (info));
memset (&pos , 0, sizeof (pos )); memset (&pos , 0, sizeof (pos ));
} }
break; break;
case 7: case 5:
#line 43 "hb-buffer-deserialize-json.rl" #line 43 "hb-buffer-deserialize-json.rl"
{ {
buffer->add_info (info); buffer->add_info (info);
@ -567,13 +529,13 @@ _resume:
*end_ptr = p; *end_ptr = p;
} }
break; break;
case 4: case 2:
#line 51 "hb-buffer-deserialize-json.rl" #line 51 "hb-buffer-deserialize-json.rl"
{ {
tok = p; tok = p;
} }
break; break;
case 16: case 14:
#line 55 "hb-buffer-deserialize-json.rl" #line 55 "hb-buffer-deserialize-json.rl"
{ {
if (!hb_font_glyph_from_string (font, if (!hb_font_glyph_from_string (font,
@ -582,42 +544,31 @@ _resume:
return false; return false;
} }
break; break;
case 17: case 15:
#line 62 "hb-buffer-deserialize-json.rl" #line 62 "hb-buffer-deserialize-json.rl"
{ if (!parse_uint (tok, p, &info.codepoint)) return false; } { if (!parse_uint (tok, p, &info.codepoint)) return false; }
break; break;
case 10: case 8:
#line 63 "hb-buffer-deserialize-json.rl" #line 63 "hb-buffer-deserialize-json.rl"
{ if (!parse_uint (tok, p, &info.cluster )) return false; } { if (!parse_uint (tok, p, &info.cluster )) return false; }
break; break;
case 12: case 10:
#line 64 "hb-buffer-deserialize-json.rl" #line 64 "hb-buffer-deserialize-json.rl"
{ if (!parse_int (tok, p, &pos.x_offset )) return false; } { if (!parse_int (tok, p, &pos.x_offset )) return false; }
break; break;
case 14: case 12:
#line 65 "hb-buffer-deserialize-json.rl" #line 65 "hb-buffer-deserialize-json.rl"
{ if (!parse_int (tok, p, &pos.y_offset )) return false; } { if (!parse_int (tok, p, &pos.y_offset )) return false; }
break; break;
case 5: case 3:
#line 66 "hb-buffer-deserialize-json.rl" #line 66 "hb-buffer-deserialize-json.rl"
{ if (!parse_int (tok, p, &pos.x_advance)) return false; } { if (!parse_int (tok, p, &pos.x_advance)) return false; }
break; break;
case 8: case 6:
#line 67 "hb-buffer-deserialize-json.rl" #line 67 "hb-buffer-deserialize-json.rl"
{ if (!parse_int (tok, p, &pos.y_advance)) return false; } { if (!parse_int (tok, p, &pos.y_advance)) return false; }
break; break;
case 1: case 16:
#line 38 "hb-buffer-deserialize-json.rl"
{
memset (&info, 0, sizeof (info));
memset (&pos , 0, sizeof (pos ));
}
#line 51 "hb-buffer-deserialize-json.rl"
{
tok = p;
}
break;
case 3:
#line 62 "hb-buffer-deserialize-json.rl" #line 62 "hb-buffer-deserialize-json.rl"
{ if (!parse_uint (tok, p, &info.codepoint)) return false; } { if (!parse_uint (tok, p, &info.codepoint)) return false; }
#line 43 "hb-buffer-deserialize-json.rl" #line 43 "hb-buffer-deserialize-json.rl"
@ -627,57 +578,57 @@ _resume:
return false; return false;
buffer->pos[buffer->len - 1] = pos; buffer->pos[buffer->len - 1] = pos;
*end_ptr = p; *end_ptr = p;
}
break;
case 11:
#line 63 "hb-buffer-deserialize-json.rl"
{ if (!parse_uint (tok, p, &info.cluster )) return false; }
#line 43 "hb-buffer-deserialize-json.rl"
{
buffer->add_info (info);
if (unlikely (!buffer->successful))
return false;
buffer->pos[buffer->len - 1] = pos;
*end_ptr = p;
}
break;
case 13:
#line 64 "hb-buffer-deserialize-json.rl"
{ if (!parse_int (tok, p, &pos.x_offset )) return false; }
#line 43 "hb-buffer-deserialize-json.rl"
{
buffer->add_info (info);
if (unlikely (!buffer->successful))
return false;
buffer->pos[buffer->len - 1] = pos;
*end_ptr = p;
}
break;
case 15:
#line 65 "hb-buffer-deserialize-json.rl"
{ if (!parse_int (tok, p, &pos.y_offset )) return false; }
#line 43 "hb-buffer-deserialize-json.rl"
{
buffer->add_info (info);
if (unlikely (!buffer->successful))
return false;
buffer->pos[buffer->len - 1] = pos;
*end_ptr = p;
}
break;
case 6:
#line 66 "hb-buffer-deserialize-json.rl"
{ if (!parse_int (tok, p, &pos.x_advance)) return false; }
#line 43 "hb-buffer-deserialize-json.rl"
{
buffer->add_info (info);
if (unlikely (!buffer->successful))
return false;
buffer->pos[buffer->len - 1] = pos;
*end_ptr = p;
} }
break; break;
case 9: case 9:
#line 63 "hb-buffer-deserialize-json.rl"
{ if (!parse_uint (tok, p, &info.cluster )) return false; }
#line 43 "hb-buffer-deserialize-json.rl"
{
buffer->add_info (info);
if (unlikely (!buffer->successful))
return false;
buffer->pos[buffer->len - 1] = pos;
*end_ptr = p;
}
break;
case 11:
#line 64 "hb-buffer-deserialize-json.rl"
{ if (!parse_int (tok, p, &pos.x_offset )) return false; }
#line 43 "hb-buffer-deserialize-json.rl"
{
buffer->add_info (info);
if (unlikely (!buffer->successful))
return false;
buffer->pos[buffer->len - 1] = pos;
*end_ptr = p;
}
break;
case 13:
#line 65 "hb-buffer-deserialize-json.rl"
{ if (!parse_int (tok, p, &pos.y_offset )) return false; }
#line 43 "hb-buffer-deserialize-json.rl"
{
buffer->add_info (info);
if (unlikely (!buffer->successful))
return false;
buffer->pos[buffer->len - 1] = pos;
*end_ptr = p;
}
break;
case 4:
#line 66 "hb-buffer-deserialize-json.rl"
{ if (!parse_int (tok, p, &pos.x_advance)) return false; }
#line 43 "hb-buffer-deserialize-json.rl"
{
buffer->add_info (info);
if (unlikely (!buffer->successful))
return false;
buffer->pos[buffer->len - 1] = pos;
*end_ptr = p;
}
break;
case 7:
#line 67 "hb-buffer-deserialize-json.rl" #line 67 "hb-buffer-deserialize-json.rl"
{ if (!parse_int (tok, p, &pos.y_advance)) return false; } { if (!parse_int (tok, p, &pos.y_advance)) return false; }
#line 43 "hb-buffer-deserialize-json.rl" #line 43 "hb-buffer-deserialize-json.rl"
@ -689,7 +640,7 @@ _resume:
*end_ptr = p; *end_ptr = p;
} }
break; break;
#line 693 "hb-buffer-deserialize-json.hh" #line 644 "hb-buffer-deserialize-json.hh"
} }
_again: _again:
@ -701,7 +652,7 @@ _again:
_out: {} _out: {}
} }
#line 129 "hb-buffer-deserialize-json.rl" #line 126 "hb-buffer-deserialize-json.rl"
*end_ptr = p; *end_ptr = p;

View File

@ -79,24 +79,21 @@ glyph_string = '"' (glyph_name >tok %parse_glyph) '"';
glyph_number = (glyph_id >tok %parse_gid); glyph_number = (glyph_id >tok %parse_gid);
glyph = "\"g\"" colon (glyph_string | glyph_number); glyph = "\"g\"" colon (glyph_string | glyph_number);
codepoint = "\"u\"" colon glyph_number;
cluster = "\"cl\"" colon (unum >tok %parse_cluster); cluster = "\"cl\"" colon (unum >tok %parse_cluster);
xoffset = "\"dx\"" colon (num >tok %parse_x_offset); xoffset = "\"dx\"" colon (num >tok %parse_x_offset);
yoffset = "\"dy\"" colon (num >tok %parse_y_offset); yoffset = "\"dy\"" colon (num >tok %parse_y_offset);
xadvance= "\"ax\"" colon (num >tok %parse_x_advance); xadvance= "\"ax\"" colon (num >tok %parse_x_advance);
yadvance= "\"ay\"" colon (num >tok %parse_y_advance); yadvance= "\"ay\"" colon (num >tok %parse_y_advance);
element = glyph | cluster | xoffset | yoffset | xadvance | yadvance; element = glyph | codepoint | cluster | xoffset | yoffset | xadvance | yadvance;
item = item =
( '{' space* element (comma element)* space* '}') ( '{' space* element (comma element)* space* '}')
>clear_item >clear_item
@add_item @add_item
; ;
json_glyphs = space* item (comma item)* space* (','|']')?; main := space* item (comma item)* space* (','|']')?;
unicode_item = (glyph_number >clear_item %add_item);
json_unicode = space* unicode_item (comma unicode_item)* (','|']');
main := json_glyphs | json_unicode;
}%% }%%

View File

@ -34,27 +34,27 @@
#line 36 "hb-buffer-deserialize-text.hh" #line 36 "hb-buffer-deserialize-text.hh"
static const unsigned char _deserialize_text_trans_keys[] = { static const unsigned char _deserialize_text_trans_keys[] = {
0u, 0u, 9u, 91u, 85u, 85u, 43u, 43u, 48u, 102u, 9u, 85u, 48u, 122u, 9u, 122u, 0u, 0u, 9u, 91u, 85u, 85u, 43u, 43u, 48u, 102u, 9u, 85u, 48u, 57u, 48u, 122u,
45u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 44u, 44u, 9u, 122u, 45u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 48u, 57u, 45u, 57u, 48u, 57u,
45u, 57u, 48u, 57u, 44u, 57u, 9u, 124u, 9u, 124u, 0u, 0u, 9u, 85u, 9u, 124u, 44u, 44u, 45u, 57u, 48u, 57u, 44u, 57u, 9u, 124u, 9u, 124u, 0u, 0u, 9u, 85u,
9u, 124u, 9u, 122u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 122u, 9u, 124u, 9u, 124u, 9u, 124u,
9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 0 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 0
}; };
static const char _deserialize_text_key_spans[] = { static const char _deserialize_text_key_spans[] = {
0, 83, 1, 1, 55, 77, 75, 114, 0, 83, 1, 1, 55, 77, 10, 75,
13, 10, 13, 10, 10, 13, 10, 1, 114, 13, 10, 13, 10, 10, 13, 10,
13, 10, 14, 116, 116, 0, 77, 116, 1, 13, 10, 14, 116, 116, 0, 77,
116, 114, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 114, 116, 116, 116,
116, 116, 116, 116 116, 116, 116, 116, 116, 116, 116
}; };
static const short _deserialize_text_index_offsets[] = { static const short _deserialize_text_index_offsets[] = {
0, 0, 84, 86, 88, 144, 222, 298, 0, 0, 84, 86, 88, 144, 222, 233,
413, 427, 438, 452, 463, 474, 488, 499, 309, 424, 438, 449, 463, 474, 485, 499,
501, 515, 526, 541, 658, 775, 776, 854, 510, 512, 526, 537, 552, 669, 786, 787,
971, 1088, 1203, 1320, 1437, 1554, 1671, 1788, 865, 982, 1099, 1216, 1333, 1448, 1565, 1682,
1905, 2022, 2139, 2256 1799, 1916, 2033, 2150, 2267, 2384, 2501
}; };
static const char _deserialize_text_indicies[] = { static const char _deserialize_text_indicies[] = {
@ -87,102 +87,92 @@ static const char _deserialize_text_indicies[] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 4, 1, 8, 1, 1, 1, 1, 1, 4, 1, 8,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 1, 1, 1, 1, 1, 1, 1, 9, 1, 10, 11, 11, 11, 11, 11,
10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 1, 1, 1, 1,
10, 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, 12, 12, 12, 12, 12,
10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12,
10, 10, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12,
10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 1, 1, 1,
10, 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, 12, 12, 12, 12, 12,
10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12,
10, 10, 1, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 1, 13, 13,
13, 13, 13, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 13, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 11, 11,
1, 1, 1, 1, 1, 1, 1, 1, 11, 11, 11, 11, 11, 11, 11, 1,
1, 1, 8, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 12, 12,
9, 9, 9, 9, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12,
1, 1, 1, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12,
10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12,
10, 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, 1, 1, 1, 12, 12,
10, 10, 10, 10, 10, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12,
1, 1, 1, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12,
10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12,
10, 10, 10, 10, 10, 10, 10, 10, 1, 14, 1, 1, 15, 16, 16, 16,
10, 10, 10, 10, 10, 1, 12, 1,
1, 13, 14, 14, 14, 14, 14, 14,
14, 14, 14, 1, 15, 16, 16, 16,
16, 16, 16, 16, 16, 16, 1, 17, 16, 16, 16, 16, 16, 16, 1, 17,
1, 1, 18, 19, 19, 19, 19, 19, 18, 18, 18, 18, 18, 18, 18, 18,
19, 19, 19, 19, 1, 20, 21, 21, 18, 1, 19, 1, 1, 20, 21, 21,
21, 21, 21, 21, 21, 21, 21, 1, 21, 21, 21, 21, 21, 21, 21, 1,
22, 23, 23, 23, 23, 23, 23, 23, 22, 23, 23, 23, 23, 23, 23, 23,
23, 23, 1, 24, 1, 1, 25, 26, 23, 23, 1, 24, 25, 25, 25, 25,
26, 26, 26, 26, 26, 26, 26, 26, 25, 25, 25, 25, 25, 1, 26, 1,
1, 27, 28, 28, 28, 28, 28, 28, 1, 27, 28, 28, 28, 28, 28, 28,
28, 28, 28, 1, 29, 1, 30, 1, 28, 28, 28, 1, 29, 30, 30, 30,
1, 31, 32, 32, 32, 32, 32, 32, 30, 30, 30, 30, 30, 30, 1, 31,
32, 32, 32, 1, 33, 34, 34, 34, 1, 32, 1, 1, 33, 34, 34, 34,
34, 34, 34, 34, 34, 34, 1, 29, 34, 34, 34, 34, 34, 34, 1, 35,
1, 1, 1, 28, 28, 28, 28, 28, 36, 36, 36, 36, 36, 36, 36, 36,
28, 28, 28, 28, 28, 1, 35, 35, 36, 1, 31, 1, 1, 1, 30, 30,
35, 35, 35, 1, 1, 1, 1, 1, 30, 30, 30, 30, 30, 30, 30, 30,
1, 1, 1, 1, 1, 1, 1, 1, 1, 37, 37, 37, 37, 37, 1, 1,
1, 1, 1, 1, 1, 35, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 1,
1, 1, 1, 37, 1, 1, 36, 36,
36, 36, 36, 36, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 36, 36, 37, 1, 1, 1, 1, 1, 1, 1,
36, 36, 36, 36, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 38, 38, 38, 38, 38, 38, 38, 38,
1, 38, 1, 39, 39, 39, 39, 39, 38, 38, 1, 1, 1, 39, 40, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 38, 38, 38, 38, 38, 38, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 39, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
40, 1, 1, 1, 1, 1, 1, 1, 1, 38, 38, 38, 38, 38, 38, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 41, 1, 42, 42,
42, 42, 42, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 42, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 43, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 41, 1,
1, 7, 7, 7, 7, 7, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 44, 1, 1, 7, 7, 7, 7,
7, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 7, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 4, 1, 42,
42, 42, 42, 42, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 42, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 43, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 44, 1, 1, 45, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 45, 45, 45, 45, 45, 1,
1, 1, 1, 46, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 45, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 47, 1, 48, 48, 48, 48,
48, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 48, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@ -190,207 +180,250 @@ static const char _deserialize_text_indicies[] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 1, 45,
45, 45, 45, 45, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 45, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 49, 1, 1, 1, 1, 1, 1, 48, 48,
1, 11, 11, 11, 11, 11, 1, 1, 48, 48, 48, 48, 48, 48, 48, 48,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
11, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
8, 9, 9, 9, 9, 9, 9, 9,
9, 9, 1, 1, 1, 1, 1, 1,
1, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 1, 1, 1, 1, 1,
1, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 1, 42, 42, 42, 42,
42, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 42, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 43, 1,
1, 1, 1, 50, 50, 50, 50, 50,
50, 50, 50, 50, 50, 1, 1, 1,
44, 1, 1, 45, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
46, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 47,
1, 51, 51, 51, 51, 51, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
51, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 52, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 47, 1, 49, 49, 49, 49,
49, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 49, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 50, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
51, 1, 1, 52, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
53, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 54,
1, 55, 55, 55, 55, 55, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
55, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 43, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 56, 1, 13, 13,
13, 13, 13, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 13, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 10, 11, 11,
11, 11, 11, 11, 11, 11, 11, 1,
1, 1, 1, 1, 1, 1, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12,
1, 1, 1, 1, 1, 1, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12,
1, 49, 49, 49, 49, 49, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
49, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 50, 1, 1, 1, 1,
57, 57, 57, 57, 57, 57, 57, 57,
57, 57, 1, 1, 1, 51, 1, 1,
52, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 53, 1, 1, 1, 1, 1, 1, 1, 53, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 54, 1, 55, 55, 1, 1, 1, 1, 54, 1, 58, 58,
55, 55, 55, 1, 1, 1, 1, 1, 58, 58, 58, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 55, 1, 1, 1, 1, 1, 1, 1, 58, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 59, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 60, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 61, 1, 62, 62, 62, 62, 62,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 62, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 63,
1, 1, 56, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 57, 1, 55, 55, 55, 55, 55, 1, 1, 1, 1, 1, 1, 64, 1,
62, 62, 62, 62, 62, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 62,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23,
1, 1, 1, 1, 1, 1, 1, 1, 23, 23, 23, 23, 23, 23, 23, 23,
1, 1, 21, 21, 21, 21, 21, 21, 23, 1, 1, 1, 1, 1, 1, 1,
21, 21, 21, 21, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 56, 1, 1, 1, 1, 63, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 57, 1, 1, 1, 1, 64, 1, 58, 58, 58,
51, 51, 51, 51, 51, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 51,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 52, 1, 1, 1, 16,
16, 16, 16, 16, 16, 16, 16, 16,
16, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 53, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 54, 1, 58, 58, 58,
58, 58, 1, 1, 1, 1, 1, 1, 58, 58, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 58, 1, 1, 1, 1, 1, 1, 1, 58, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 59,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 59, 1, 1, 1, 18, 18, 18, 18,
1, 1, 1, 1, 60, 1, 1, 1, 18, 18, 18, 18, 18, 18, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 61, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 60, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
62, 1, 63, 63, 63, 63, 63, 1, 61, 1, 65, 65, 65, 65, 65, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 63, 1, 1, 1, 1, 1, 1, 1, 65, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 64, 1, 1, 1, 1, 1, 1, 1, 66, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 67, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 46, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 68, 1, 69,
69, 69, 69, 69, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 69, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 70, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 65, 1, 1, 1, 1, 71, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 66, 1, 63, 1, 1, 72, 1, 69, 69, 69, 69,
63, 63, 63, 63, 1, 1, 1, 1, 69, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 63, 1, 1, 1, 1, 69, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 70, 1,
1, 64, 1, 1, 1, 1, 34, 34, 1, 1, 1, 36, 36, 36, 36, 36,
34, 34, 34, 34, 34, 34, 34, 34, 36, 36, 36, 36, 36, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 65, 1, 1, 1, 1, 71, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 72,
1, 65, 65, 65, 65, 65, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
65, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 66, 1, 1, 1, 1,
73, 73, 73, 73, 73, 73, 73, 73,
73, 73, 1, 1, 1, 1, 1, 1,
67, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 46, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 66, 1, 58, 58, 58, 58, 1, 1, 1, 1, 68, 1, 49, 49,
58, 1, 1, 1, 1, 1, 1, 1, 49, 49, 49, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 58, 1, 1, 1, 1, 1, 1, 1, 1, 1, 49, 1, 1,
1, 1, 1, 1, 1, 1, 59, 1,
1, 1, 1, 67, 67, 67, 67, 67,
67, 67, 67, 67, 67, 1, 1, 1,
1, 1, 1, 60, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 50, 1, 74, 74, 1, 74, 74, 74,
1, 1, 1, 1, 1, 1, 1, 1, 74, 74, 74, 74, 74, 74, 74, 1,
61, 1, 1, 1, 1, 1, 1, 1, 1, 1, 51, 1, 1, 52, 74, 74,
1, 1, 1, 1, 1, 1, 1, 1, 74, 74, 74, 74, 74, 74, 74, 74,
1, 1, 1, 1, 1, 1, 1, 1, 74, 74, 74, 74, 74, 74, 74, 74,
1, 1, 1, 1, 1, 1, 1, 62, 74, 74, 74, 74, 74, 74, 74, 74,
1, 42, 42, 42, 42, 42, 1, 1, 1, 1, 53, 1, 74, 1, 74, 74,
1, 1, 1, 1, 1, 1, 1, 1, 74, 74, 74, 74, 74, 74, 74, 74,
1, 1, 1, 1, 1, 1, 1, 1, 74, 74, 74, 74, 74, 74, 74, 74,
42, 1, 1, 1, 1, 1, 1, 1, 74, 74, 74, 74, 74, 74, 74, 74,
1, 1, 1, 43, 1, 68, 68, 1, 1, 54, 1, 0
68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 1, 1, 1, 44, 1, 1,
45, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 1, 1, 46, 1, 68,
1, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 1, 47, 1, 0
}; };
static const char _deserialize_text_trans_targs[] = { static const char _deserialize_text_trans_targs[] = {
1, 0, 2, 6, 3, 4, 19, 5, 1, 0, 2, 7, 3, 4, 20, 5,
23, 26, 35, 7, 9, 27, 30, 27, 24, 25, 26, 29, 38, 8, 10, 30,
30, 11, 28, 29, 28, 29, 31, 34, 33, 30, 33, 12, 31, 32, 31, 32,
14, 15, 18, 15, 18, 16, 17, 32, 34, 37, 15, 16, 19, 16, 19, 17,
33, 32, 33, 20, 19, 21, 22, 20, 18, 35, 36, 35, 36, 21, 20, 6,
21, 22, 24, 8, 12, 13, 21, 25, 22, 23, 21, 22, 23, 21, 22, 23,
24, 25, 26, 24, 10, 21, 25, 24, 25, 27, 9, 13, 14, 22, 28, 27,
21, 25, 24, 8, 13, 21, 25, 24, 28, 29, 27, 11, 22, 28, 27, 22,
8, 21, 25, 34, 35 28, 27, 9, 14, 28, 27, 9, 22,
28, 37, 38
}; };
static const char _deserialize_text_trans_actions[] = { static const char _deserialize_text_trans_actions[] = {
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 2, 0,
1, 1, 1, 0, 2, 2, 2, 0, 2, 2, 3, 3, 3, 0, 2, 2,
0, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0,
2, 2, 2, 0, 0, 3, 2, 2, 2, 2, 2, 2, 2, 0, 0, 4,
2, 0, 0, 4, 0, 4, 4, 0, 2, 2, 2, 0, 0, 5, 0, 6,
0, 0, 5, 6, 6, 6, 5, 5, 5, 5, 0, 0, 0, 7, 7, 7,
0, 0, 0, 7, 8, 7, 7, 9, 0, 8, 9, 9, 9, 8, 8, 0,
9, 9, 10, 11, 11, 10, 10, 12, 0, 0, 10, 11, 10, 10, 12, 12,
13, 12, 12, 0, 0 12, 7, 13, 13, 7, 14, 15, 14,
14, 0, 0
}; };
static const char _deserialize_text_eof_actions[] = { static const char _deserialize_text_eof_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 5, 0, 0, 0,
0, 0, 5, 7, 9, 9, 7, 10, 7, 7, 8, 0, 0, 8, 10, 12,
12, 12, 10, 5 12, 10, 7, 14, 14, 7, 8
}; };
static const int deserialize_text_start = 1; static const int deserialize_text_start = 1;
static const int deserialize_text_first_final = 19; static const int deserialize_text_first_final = 20;
static const int deserialize_text_error = 0; static const int deserialize_text_error = 0;
static const int deserialize_text_en_main = 1; static const int deserialize_text_en_main = 1;
@ -419,12 +452,12 @@ _hb_buffer_deserialize_text (hb_buffer_t *buffer,
hb_glyph_info_t info = {0}; hb_glyph_info_t info = {0};
hb_glyph_position_t pos = {0}; hb_glyph_position_t pos = {0};
#line 423 "hb-buffer-deserialize-text.hh" #line 456 "hb-buffer-deserialize-text.hh"
{ {
cs = deserialize_text_start; cs = deserialize_text_start;
} }
#line 428 "hb-buffer-deserialize-text.hh" #line 461 "hb-buffer-deserialize-text.hh"
{ {
int _slen; int _slen;
int _trans; int _trans;
@ -449,13 +482,20 @@ _resume:
goto _again; goto _again;
switch ( _deserialize_text_trans_actions[_trans] ) { switch ( _deserialize_text_trans_actions[_trans] ) {
case 1:
#line 38 "hb-buffer-deserialize-text.rl"
{
memset (&info, 0, sizeof (info));
memset (&pos , 0, sizeof (pos ));
}
break;
case 2: case 2:
#line 51 "hb-buffer-deserialize-text.rl" #line 51 "hb-buffer-deserialize-text.rl"
{ {
tok = p; tok = p;
} }
break; break;
case 6: case 9:
#line 55 "hb-buffer-deserialize-text.rl" #line 55 "hb-buffer-deserialize-text.rl"
{ {
if (!hb_font_glyph_from_string (font, if (!hb_font_glyph_from_string (font,
@ -464,23 +504,27 @@ _resume:
return false; return false;
} }
break; break;
case 11: case 6:
#line 62 "hb-buffer-deserialize-text.rl"
{if (!parse_hex (tok, p, &info.codepoint )) return false; }
break;
case 13:
#line 64 "hb-buffer-deserialize-text.rl" #line 64 "hb-buffer-deserialize-text.rl"
{ if (!parse_uint (tok, p, &info.cluster )) return false; } { if (!parse_uint (tok, p, &info.cluster )) return false; }
break; break;
case 3: case 4:
#line 65 "hb-buffer-deserialize-text.rl" #line 65 "hb-buffer-deserialize-text.rl"
{ if (!parse_int (tok, p, &pos.x_offset )) return false; } { if (!parse_int (tok, p, &pos.x_offset )) return false; }
break; break;
case 13: case 15:
#line 66 "hb-buffer-deserialize-text.rl" #line 66 "hb-buffer-deserialize-text.rl"
{ if (!parse_int (tok, p, &pos.y_offset )) return false; } { if (!parse_int (tok, p, &pos.y_offset )) return false; }
break; break;
case 8: case 11:
#line 67 "hb-buffer-deserialize-text.rl" #line 67 "hb-buffer-deserialize-text.rl"
{ if (!parse_int (tok, p, &pos.x_advance)) return false; } { if (!parse_int (tok, p, &pos.x_advance)) return false; }
break; break;
case 1: case 3:
#line 38 "hb-buffer-deserialize-text.rl" #line 38 "hb-buffer-deserialize-text.rl"
{ {
memset (&info, 0, sizeof (info)); memset (&info, 0, sizeof (info));
@ -491,7 +535,7 @@ _resume:
tok = p; tok = p;
} }
break; break;
case 5: case 8:
#line 55 "hb-buffer-deserialize-text.rl" #line 55 "hb-buffer-deserialize-text.rl"
{ {
if (!hb_font_glyph_from_string (font, if (!hb_font_glyph_from_string (font,
@ -508,7 +552,7 @@ _resume:
*end_ptr = p; *end_ptr = p;
} }
break; break;
case 4: case 5:
#line 62 "hb-buffer-deserialize-text.rl" #line 62 "hb-buffer-deserialize-text.rl"
{if (!parse_hex (tok, p, &info.codepoint )) return false; } {if (!parse_hex (tok, p, &info.codepoint )) return false; }
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
@ -520,7 +564,7 @@ _resume:
*end_ptr = p; *end_ptr = p;
} }
break; break;
case 10: case 7:
#line 64 "hb-buffer-deserialize-text.rl" #line 64 "hb-buffer-deserialize-text.rl"
{ if (!parse_uint (tok, p, &info.cluster )) return false; } { if (!parse_uint (tok, p, &info.cluster )) return false; }
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
@ -532,7 +576,7 @@ _resume:
*end_ptr = p; *end_ptr = p;
} }
break; break;
case 12: case 14:
#line 66 "hb-buffer-deserialize-text.rl" #line 66 "hb-buffer-deserialize-text.rl"
{ if (!parse_int (tok, p, &pos.y_offset )) return false; } { if (!parse_int (tok, p, &pos.y_offset )) return false; }
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
@ -544,7 +588,7 @@ _resume:
*end_ptr = p; *end_ptr = p;
} }
break; break;
case 7: case 10:
#line 67 "hb-buffer-deserialize-text.rl" #line 67 "hb-buffer-deserialize-text.rl"
{ if (!parse_int (tok, p, &pos.x_advance)) return false; } { if (!parse_int (tok, p, &pos.x_advance)) return false; }
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
@ -556,7 +600,7 @@ _resume:
*end_ptr = p; *end_ptr = p;
} }
break; break;
case 9: case 12:
#line 68 "hb-buffer-deserialize-text.rl" #line 68 "hb-buffer-deserialize-text.rl"
{ if (!parse_int (tok, p, &pos.y_advance)) return false; } { if (!parse_int (tok, p, &pos.y_advance)) return false; }
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
@ -568,7 +612,7 @@ _resume:
*end_ptr = p; *end_ptr = p;
} }
break; break;
#line 572 "hb-buffer-deserialize-text.hh" #line 616 "hb-buffer-deserialize-text.hh"
} }
_again: _again:
@ -580,7 +624,7 @@ _again:
if ( p == eof ) if ( p == eof )
{ {
switch ( _deserialize_text_eof_actions[cs] ) { switch ( _deserialize_text_eof_actions[cs] ) {
case 5: case 8:
#line 55 "hb-buffer-deserialize-text.rl" #line 55 "hb-buffer-deserialize-text.rl"
{ {
if (!hb_font_glyph_from_string (font, if (!hb_font_glyph_from_string (font,
@ -597,7 +641,7 @@ _again:
*end_ptr = p; *end_ptr = p;
} }
break; break;
case 4: case 5:
#line 62 "hb-buffer-deserialize-text.rl" #line 62 "hb-buffer-deserialize-text.rl"
{if (!parse_hex (tok, p, &info.codepoint )) return false; } {if (!parse_hex (tok, p, &info.codepoint )) return false; }
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
@ -609,7 +653,7 @@ _again:
*end_ptr = p; *end_ptr = p;
} }
break; break;
case 10: case 7:
#line 64 "hb-buffer-deserialize-text.rl" #line 64 "hb-buffer-deserialize-text.rl"
{ if (!parse_uint (tok, p, &info.cluster )) return false; } { if (!parse_uint (tok, p, &info.cluster )) return false; }
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
@ -621,7 +665,7 @@ _again:
*end_ptr = p; *end_ptr = p;
} }
break; break;
case 12: case 14:
#line 66 "hb-buffer-deserialize-text.rl" #line 66 "hb-buffer-deserialize-text.rl"
{ if (!parse_int (tok, p, &pos.y_offset )) return false; } { if (!parse_int (tok, p, &pos.y_offset )) return false; }
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
@ -633,7 +677,7 @@ _again:
*end_ptr = p; *end_ptr = p;
} }
break; break;
case 7: case 10:
#line 67 "hb-buffer-deserialize-text.rl" #line 67 "hb-buffer-deserialize-text.rl"
{ if (!parse_int (tok, p, &pos.x_advance)) return false; } { if (!parse_int (tok, p, &pos.x_advance)) return false; }
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
@ -645,7 +689,7 @@ _again:
*end_ptr = p; *end_ptr = p;
} }
break; break;
case 9: case 12:
#line 68 "hb-buffer-deserialize-text.rl" #line 68 "hb-buffer-deserialize-text.rl"
{ if (!parse_int (tok, p, &pos.y_advance)) return false; } { if (!parse_int (tok, p, &pos.y_advance)) return false; }
#line 43 "hb-buffer-deserialize-text.rl" #line 43 "hb-buffer-deserialize-text.rl"
@ -657,7 +701,7 @@ _again:
*end_ptr = p; *end_ptr = p;
} }
break; break;
#line 661 "hb-buffer-deserialize-text.hh" #line 705 "hb-buffer-deserialize-text.hh"
} }
} }

View File

@ -79,7 +79,7 @@ offsets = '@' (num >tok %parse_x_offset) ',' (num >tok %parse_y_offset );
advances= '+' (num >tok %parse_x_advance) (',' (num >tok %parse_y_advance))?; advances= '+' (num >tok %parse_x_advance) (',' (num >tok %parse_y_advance))?;
codepoint = xdigit+ >tok %parse_hexdigits; codepoint = xdigit+ >tok %parse_hexdigits;
unicode_id = 'U' '+' codepoint >clear_item %add_item; unicode_id = 'U' '+' >clear_item codepoint cluster? %add_item;
item = item =
( (

View File

@ -206,7 +206,8 @@ _hb_buffer_serialize_unicode_json (hb_buffer_t *buffer,
unsigned int end, unsigned int end,
char *buf, char *buf,
unsigned int buf_size, unsigned int buf_size,
unsigned int *buf_consumed) unsigned int *buf_consumed,
hb_buffer_serialize_flags_t flags)
{ {
hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, nullptr); hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, nullptr);
@ -215,13 +216,24 @@ _hb_buffer_serialize_unicode_json (hb_buffer_t *buffer,
{ {
char b[1024]; char b[1024];
char *p = b; char *p = b;
if (i) if (i)
*p++ = ','; *p++ = ',';
else else
*p++ = '['; *p++ = '[';
*p++ = '{';
APPEND ("\"u\":");
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "%u", info[i].codepoint)); p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "%u", info[i].codepoint));
if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS)) {
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"cl\":%u", info[i].cluster));
}
*p++ = '}';
if (i == end-1) if (i == end-1)
*p++ = ']'; *p++ = ']';
@ -340,7 +352,8 @@ _hb_buffer_serialize_unicode_text (hb_buffer_t *buffer,
unsigned int end, unsigned int end,
char *buf, char *buf,
unsigned int buf_size, unsigned int buf_size,
unsigned int *buf_consumed) unsigned int *buf_consumed,
hb_buffer_serialize_flags_t flags)
{ {
hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, nullptr); hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, nullptr);
*buf_consumed = 0; *buf_consumed = 0;
@ -356,6 +369,10 @@ _hb_buffer_serialize_unicode_text (hb_buffer_t *buffer,
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "U+%04X", info[i].codepoint)); p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "U+%04X", info[i].codepoint));
if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS)) {
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "=%u", info[i].cluster));
}
if (i == end-1) if (i == end-1)
*p++ = '>'; *p++ = '>';
@ -508,18 +525,25 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer,
* The serialized codepoints will look something like: * The serialized codepoints will look something like:
* *
* ``` * ```
* <U+0651|U+0628> * <U+0651=0|U+0628=1>
* ``` * ```
* - Glyphs are separated with `|` * - Glyphs are separated with `|`
* - Unicode codepoints are expressed as zero-padded four (or more) * - Unicode codepoints are expressed as zero-padded four (or more)
* digit hexadecimal numbers preceded by `U+` * digit hexadecimal numbers preceded by `U+`
* - If #HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set, the cluster
* will be indicated with a `=` then #hb_glyph_info_t.cluster.
* *
* ## json * ## json
* A machine-readable, structured format. * A machine-readable, structured format.
* The serialized codepoints will be a list of Unicode codepoints as * The serialized codepoints will be a list of objects with the following
* decimal integers. For example: * properties:
* - `g`: the Unicode codepoint as a decimal integer
* - `cl`: #hb_glyph_info_t.cluster if
* #HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set.
*
* For example:
* ``` * ```
* [1617,1576] * [{g:1617,cl:0},{g:1576,cl:1}]
* ``` * ```
* *
* Return value: * Return value:
@ -534,7 +558,8 @@ hb_buffer_serialize_unicode (hb_buffer_t *buffer,
char *buf, char *buf,
unsigned int buf_size, unsigned int buf_size,
unsigned int *buf_consumed, unsigned int *buf_consumed,
hb_buffer_serialize_format_t format) hb_buffer_serialize_format_t format,
hb_buffer_serialize_flags_t flags)
{ {
assert (start <= end && end <= buffer->len); assert (start <= end && end <= buffer->len);
@ -555,11 +580,11 @@ hb_buffer_serialize_unicode (hb_buffer_t *buffer,
{ {
case HB_BUFFER_SERIALIZE_FORMAT_TEXT: case HB_BUFFER_SERIALIZE_FORMAT_TEXT:
return _hb_buffer_serialize_unicode_text (buffer, start, end, return _hb_buffer_serialize_unicode_text (buffer, start, end,
buf, buf_size, buf_consumed); buf, buf_size, buf_consumed, flags);
case HB_BUFFER_SERIALIZE_FORMAT_JSON: case HB_BUFFER_SERIALIZE_FORMAT_JSON:
return _hb_buffer_serialize_unicode_json (buffer, start, end, return _hb_buffer_serialize_unicode_json (buffer, start, end,
buf, buf_size, buf_consumed); buf, buf_size, buf_consumed, flags);
default: default:
case HB_BUFFER_SERIALIZE_FORMAT_INVALID: case HB_BUFFER_SERIALIZE_FORMAT_INVALID:
@ -609,7 +634,7 @@ hb_buffer_serialize (hb_buffer_t *buffer,
buf_consumed, font, format, flags); buf_consumed, font, format, flags);
else else
return hb_buffer_serialize_unicode(buffer, start, end, buf, buf_size, return hb_buffer_serialize_unicode(buffer, start, end, buf, buf_size,
buf_consumed, format); buf_consumed, format, flags);
} }
static bool static bool

View File

@ -525,7 +525,8 @@ hb_buffer_serialize_unicode (hb_buffer_t *buffer,
char *buf, char *buf,
unsigned int buf_size, unsigned int buf_size,
unsigned int *buf_consumed, unsigned int *buf_consumed,
hb_buffer_serialize_format_t format); hb_buffer_serialize_format_t format,
hb_buffer_serialize_flags_t flags);
HB_EXTERN unsigned int HB_EXTERN unsigned int
hb_buffer_serialize (hb_buffer_t *buffer, hb_buffer_serialize (hb_buffer_t *buffer,

View File

@ -863,8 +863,8 @@ typedef struct {
} serialization_test_t; } serialization_test_t;
static const serialization_test_t serialization_tests[] = { static const serialization_test_t serialization_tests[] = {
{ "<U+0640|U+0635>", HB_BUFFER_SERIALIZE_FORMAT_TEXT, 2 }, { "<U+0640=0|U+0635=1>", HB_BUFFER_SERIALIZE_FORMAT_TEXT, 2 },
{ "[1600,1589]", HB_BUFFER_SERIALIZE_FORMAT_JSON, 2 }, { "[{\"u\":1600,\"cl\":0},{\"u\":1589,\"cl\":1}]", HB_BUFFER_SERIALIZE_FORMAT_JSON, 2 },
}; };
static void static void
@ -873,13 +873,14 @@ test_buffer_serialize_deserialize (void)
hb_buffer_t *b; hb_buffer_t *b;
unsigned int i; unsigned int i;
b = hb_buffer_create ();
hb_buffer_set_replacement_codepoint (b, (hb_codepoint_t) -1);
for (i = 0; i < G_N_ELEMENTS (serialization_tests); i++) for (i = 0; i < G_N_ELEMENTS (serialization_tests); i++)
{ {
unsigned int num_glyphs, consumed; unsigned int num_glyphs, consumed;
char round_trip[1024]; char round_trip[1024];
b = hb_buffer_create ();
hb_buffer_set_replacement_codepoint (b, (hb_codepoint_t) -1);
const serialization_test_t *test = &serialization_tests[i]; const serialization_test_t *test = &serialization_tests[i];
g_test_message ("serialize test #%d", i); g_test_message ("serialize test #%d", i);
@ -889,11 +890,13 @@ test_buffer_serialize_deserialize (void)
g_assert_cmpint (num_glyphs, ==, test->num_items); g_assert_cmpint (num_glyphs, ==, test->num_items);
hb_buffer_serialize_unicode(b, 0, num_glyphs, round_trip, hb_buffer_serialize_unicode(b, 0, num_glyphs, round_trip,
sizeof(round_trip), &consumed, test->format); sizeof(round_trip), &consumed, test->format,
HB_BUFFER_SERIALIZE_FLAG_DEFAULT);
g_assert_cmpstr (round_trip, ==, test->contents); g_assert_cmpstr (round_trip, ==, test->contents);
}
hb_buffer_destroy (b); hb_buffer_destroy (b);
}
} }
int int