Coverage Report

Created: 2023-10-27 07:46

/src/harfbuzz/src/hb-ot-shaper-use-machine.hh
Line
Count
Source (jump to first uncovered line)
1
2
#line 1 "hb-ot-shaper-use-machine.rl"
3
/*
4
 * Copyright © 2015  Mozilla Foundation.
5
 * Copyright © 2015  Google, Inc.
6
 *
7
 *  This is part of HarfBuzz, a text shaping library.
8
 *
9
 * Permission is hereby granted, without written agreement and without
10
 * license or royalty fees, to use, copy, modify, and distribute this
11
 * software and its documentation for any purpose, provided that the
12
 * above copyright notice and the following two paragraphs appear in
13
 * all copies of this software.
14
 *
15
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
16
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
17
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
18
 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
19
 * DAMAGE.
20
 *
21
 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
22
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
23
 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
24
 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
25
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
26
 *
27
 * Mozilla Author(s): Jonathan Kew
28
 * Google Author(s): Behdad Esfahbod
29
 */
30
31
#ifndef HB_OT_SHAPER_USE_MACHINE_HH
32
#define HB_OT_SHAPER_USE_MACHINE_HH
33
34
#include "hb.hh"
35
36
#include "hb-ot-shaper-syllabic.hh"
37
38
/* buffer var allocations */
39
42.0M
#define use_category() ot_shaper_var_u8_category()
40
41
22.0M
#define USE(Cat) use_syllable_machine_ex_##Cat
42
43
enum use_syllable_type_t {
44
  use_virama_terminated_cluster,
45
  use_sakot_terminated_cluster,
46
  use_standard_cluster,
47
  use_number_joiner_terminated_cluster,
48
  use_numeral_cluster,
49
  use_symbol_cluster,
50
  use_hieroglyph_cluster,
51
  use_broken_cluster,
52
  use_non_cluster,
53
};
54
55
56
#line 54 "hb-ot-shaper-use-machine.hh"
57
14.7k
#define use_syllable_machine_ex_B 1u
58
12.8M
#define use_syllable_machine_ex_CGJ 6u
59
#define use_syllable_machine_ex_CMAbv 31u
60
#define use_syllable_machine_ex_CMBlw 32u
61
#define use_syllable_machine_ex_CS 43u
62
#define use_syllable_machine_ex_FAbv 24u
63
#define use_syllable_machine_ex_FBlw 25u
64
#define use_syllable_machine_ex_FMAbv 45u
65
#define use_syllable_machine_ex_FMBlw 46u
66
#define use_syllable_machine_ex_FMPst 47u
67
#define use_syllable_machine_ex_FPst 26u
68
#define use_syllable_machine_ex_G 49u
69
#define use_syllable_machine_ex_GB 5u
70
6.01M
#define use_syllable_machine_ex_H 12u
71
#define use_syllable_machine_ex_HN 13u
72
5.87M
#define use_syllable_machine_ex_HVM 53u
73
2.81M
#define use_syllable_machine_ex_IS 44u
74
#define use_syllable_machine_ex_J 50u
75
#define use_syllable_machine_ex_MAbv 27u
76
#define use_syllable_machine_ex_MBlw 28u
77
#define use_syllable_machine_ex_MPre 30u
78
#define use_syllable_machine_ex_MPst 29u
79
#define use_syllable_machine_ex_N 4u
80
245k
#define use_syllable_machine_ex_O 0u
81
3.18M
#define use_syllable_machine_ex_R 18u
82
#define use_syllable_machine_ex_SB 51u
83
#define use_syllable_machine_ex_SE 52u
84
#define use_syllable_machine_ex_SMAbv 41u
85
#define use_syllable_machine_ex_SMBlw 42u
86
#define use_syllable_machine_ex_SUB 11u
87
#define use_syllable_machine_ex_Sk 48u
88
#define use_syllable_machine_ex_VAbv 33u
89
#define use_syllable_machine_ex_VBlw 34u
90
#define use_syllable_machine_ex_VMAbv 37u
91
#define use_syllable_machine_ex_VMBlw 38u
92
#define use_syllable_machine_ex_VMPre 23u
93
#define use_syllable_machine_ex_VMPst 39u
94
5.31k
#define use_syllable_machine_ex_VPre 22u
95
#define use_syllable_machine_ex_VPst 35u
96
#define use_syllable_machine_ex_WJ 16u
97
11.7M
#define use_syllable_machine_ex_ZWNJ 14u
98
99
100
#line 96 "hb-ot-shaper-use-machine.hh"
101
static const unsigned char _use_syllable_machine_trans_keys[] = {
102
  0u, 53u, 11u, 53u, 11u, 53u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 
103
  14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 
104
  14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 
105
  12u, 53u, 11u, 53u, 1u, 14u, 1u, 48u, 11u, 53u, 14u, 42u, 14u, 42u, 11u, 53u, 
106
  11u, 53u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 
107
  14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 
108
  14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u, 
109
  1u, 14u, 1u, 14u, 1u, 48u, 13u, 14u, 4u, 14u, 11u, 53u, 11u, 53u, 1u, 53u, 
110
  14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 
111
  14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 
112
  12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u, 1u, 14u, 1u, 14u, 
113
  1u, 48u, 11u, 53u, 11u, 53u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 
114
  14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 
115
  14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 
116
  12u, 53u, 11u, 53u, 1u, 14u, 1u, 48u, 4u, 14u, 13u, 14u, 1u, 53u, 11u, 53u, 
117
  14u, 42u, 14u, 42u, 1u, 5u, 14u, 52u, 14u, 52u, 14u, 51u, 0
118
};
119
120
static const char _use_syllable_machine_key_spans[] = {
121
  54, 43, 43, 53, 35, 34, 34, 34, 
122
  33, 33, 1, 35, 35, 35, 14, 35, 
123
  40, 40, 40, 40, 42, 40, 42, 42, 
124
  42, 43, 14, 48, 43, 29, 29, 43, 
125
  43, 53, 35, 34, 34, 34, 33, 33, 
126
  1, 35, 35, 35, 14, 35, 40, 40, 
127
  40, 40, 42, 40, 42, 42, 42, 43, 
128
  14, 14, 48, 2, 11, 43, 43, 53, 
129
  35, 34, 34, 34, 33, 33, 1, 35, 
130
  35, 35, 14, 35, 40, 40, 40, 40, 
131
  42, 40, 42, 42, 42, 43, 14, 14, 
132
  48, 43, 43, 53, 35, 34, 34, 34, 
133
  33, 33, 1, 35, 35, 35, 14, 35, 
134
  40, 40, 40, 40, 42, 40, 42, 42, 
135
  42, 43, 14, 48, 11, 2, 53, 43, 
136
  29, 29, 5, 39, 39, 38
137
};
138
139
static const short _use_syllable_machine_index_offsets[] = {
140
  0, 55, 99, 143, 197, 233, 268, 303, 
141
  338, 372, 406, 408, 444, 480, 516, 531, 
142
  567, 608, 649, 690, 731, 774, 815, 858, 
143
  901, 944, 988, 1003, 1052, 1096, 1126, 1156, 
144
  1200, 1244, 1298, 1334, 1369, 1404, 1439, 1473, 
145
  1507, 1509, 1545, 1581, 1617, 1632, 1668, 1709, 
146
  1750, 1791, 1832, 1875, 1916, 1959, 2002, 2045, 
147
  2089, 2104, 2119, 2168, 2171, 2183, 2227, 2271, 
148
  2325, 2361, 2396, 2431, 2466, 2500, 2534, 2536, 
149
  2572, 2608, 2644, 2659, 2695, 2736, 2777, 2818, 
150
  2859, 2902, 2943, 2986, 3029, 3072, 3116, 3131, 
151
  3146, 3195, 3239, 3283, 3337, 3373, 3408, 3443, 
152
  3478, 3512, 3546, 3548, 3584, 3620, 3656, 3671, 
153
  3707, 3748, 3789, 3830, 3871, 3914, 3955, 3998, 
154
  4041, 4084, 4128, 4143, 4192, 4204, 4207, 4261, 
155
  4305, 4335, 4365, 4371, 4411, 4451
156
};
157
158
static const unsigned char _use_syllable_machine_indicies[] = {
159
  0, 1, 2, 2, 3, 4, 2, 2, 
160
  2, 2, 2, 5, 6, 7, 8, 2, 
161
  2, 2, 9, 2, 2, 2, 10, 11, 
162
  12, 13, 14, 15, 16, 17, 18, 19, 
163
  20, 21, 22, 23, 2, 24, 25, 26, 
164
  2, 27, 28, 29, 30, 31, 32, 33, 
165
  30, 34, 2, 35, 2, 36, 2, 38, 
166
  39, 37, 40, 37, 37, 37, 37, 37, 
167
  37, 37, 41, 42, 43, 44, 45, 46, 
168
  47, 48, 49, 50, 51, 52, 53, 54, 
169
  37, 55, 56, 57, 37, 58, 59, 37, 
170
  60, 61, 62, 63, 60, 37, 37, 37, 
171
  37, 64, 37, 38, 39, 37, 40, 37, 
172
  37, 37, 37, 37, 37, 37, 41, 42, 
173
  43, 44, 45, 46, 47, 48, 49, 51, 
174
  51, 52, 53, 54, 37, 55, 56, 57, 
175
  37, 37, 37, 37, 60, 61, 62, 63, 
176
  60, 37, 37, 37, 37, 64, 37, 38, 
177
  37, 37, 37, 37, 37, 37, 37, 37, 
178
  37, 37, 37, 37, 40, 37, 37, 37, 
179
  37, 37, 37, 37, 37, 42, 43, 44, 
180
  45, 37, 37, 37, 37, 37, 37, 37, 
181
  37, 37, 37, 55, 56, 57, 37, 37, 
182
  37, 37, 37, 61, 62, 63, 65, 37, 
183
  37, 37, 37, 42, 37, 40, 37, 37, 
184
  37, 37, 37, 37, 37, 37, 42, 43, 
185
  44, 45, 37, 37, 37, 37, 37, 37, 
186
  37, 37, 37, 37, 55, 56, 57, 37, 
187
  37, 37, 37, 37, 61, 62, 63, 65, 
188
  37, 40, 37, 37, 37, 37, 37, 37, 
189
  37, 37, 37, 43, 44, 45, 37, 37, 
190
  37, 37, 37, 37, 37, 37, 37, 37, 
191
  37, 37, 37, 37, 37, 37, 37, 37, 
192
  61, 62, 63, 37, 40, 37, 37, 37, 
193
  37, 37, 37, 37, 37, 37, 37, 44, 
194
  45, 37, 37, 37, 37, 37, 37, 37, 
195
  37, 37, 37, 37, 37, 37, 37, 37, 
196
  37, 37, 37, 61, 62, 63, 37, 40, 
197
  37, 37, 37, 37, 37, 37, 37, 37, 
198
  37, 37, 37, 45, 37, 37, 37, 37, 
199
  37, 37, 37, 37, 37, 37, 37, 37, 
200
  37, 37, 37, 37, 37, 37, 61, 62, 
201
  63, 37, 40, 37, 37, 37, 37, 37, 
202
  37, 37, 37, 37, 37, 37, 37, 37, 
203
  37, 37, 37, 37, 37, 37, 37, 37, 
204
  37, 37, 37, 37, 37, 37, 37, 37, 
205
  37, 61, 62, 37, 40, 37, 37, 37, 
206
  37, 37, 37, 37, 37, 37, 37, 37, 
207
  37, 37, 37, 37, 37, 37, 37, 37, 
208
  37, 37, 37, 37, 37, 37, 37, 37, 
209
  37, 37, 37, 37, 62, 37, 40, 37, 
210
  40, 37, 37, 37, 37, 37, 37, 37, 
211
  37, 37, 43, 44, 45, 37, 37, 37, 
212
  37, 37, 37, 37, 37, 37, 37, 55, 
213
  56, 57, 37, 37, 37, 37, 37, 61, 
214
  62, 63, 65, 37, 40, 37, 37, 37, 
215
  37, 37, 37, 37, 37, 37, 43, 44, 
216
  45, 37, 37, 37, 37, 37, 37, 37, 
217
  37, 37, 37, 37, 56, 57, 37, 37, 
218
  37, 37, 37, 61, 62, 63, 65, 37, 
219
  40, 37, 37, 37, 37, 37, 37, 37, 
220
  37, 37, 43, 44, 45, 37, 37, 37, 
221
  37, 37, 37, 37, 37, 37, 37, 37, 
222
  37, 57, 37, 37, 37, 37, 37, 61, 
223
  62, 63, 65, 37, 66, 37, 37, 37, 
224
  37, 37, 37, 37, 37, 37, 37, 37, 
225
  37, 40, 37, 40, 37, 37, 37, 37, 
226
  37, 37, 37, 37, 37, 43, 44, 45, 
227
  37, 37, 37, 37, 37, 37, 37, 37, 
228
  37, 37, 37, 37, 37, 37, 37, 37, 
229
  37, 37, 61, 62, 63, 65, 37, 40, 
230
  37, 37, 37, 37, 37, 37, 37, 41, 
231
  42, 43, 44, 45, 37, 37, 37, 37, 
232
  37, 37, 52, 53, 54, 37, 55, 56, 
233
  57, 37, 37, 37, 37, 37, 61, 62, 
234
  63, 65, 37, 37, 37, 37, 42, 37, 
235
  40, 37, 37, 37, 37, 37, 37, 37, 
236
  37, 42, 43, 44, 45, 37, 37, 37, 
237
  37, 37, 37, 52, 53, 54, 37, 55, 
238
  56, 57, 37, 37, 37, 37, 37, 61, 
239
  62, 63, 65, 37, 37, 37, 37, 42, 
240
  37, 40, 37, 37, 37, 37, 37, 37, 
241
  37, 37, 42, 43, 44, 45, 37, 37, 
242
  37, 37, 37, 37, 37, 53, 54, 37, 
243
  55, 56, 57, 37, 37, 37, 37, 37, 
244
  61, 62, 63, 65, 37, 37, 37, 37, 
245
  42, 37, 40, 37, 37, 37, 37, 37, 
246
  37, 37, 37, 42, 43, 44, 45, 37, 
247
  37, 37, 37, 37, 37, 37, 37, 54, 
248
  37, 55, 56, 57, 37, 37, 37, 37, 
249
  37, 61, 62, 63, 65, 37, 37, 37, 
250
  37, 42, 37, 67, 37, 40, 37, 37, 
251
  37, 37, 37, 37, 37, 41, 42, 43, 
252
  44, 45, 37, 47, 48, 37, 37, 37, 
253
  52, 53, 54, 37, 55, 56, 57, 37, 
254
  37, 37, 37, 37, 61, 62, 63, 65, 
255
  37, 37, 37, 37, 42, 37, 40, 37, 
256
  37, 37, 37, 37, 37, 37, 37, 42, 
257
  43, 44, 45, 37, 37, 37, 37, 37, 
258
  37, 37, 37, 37, 37, 55, 56, 57, 
259
  37, 37, 37, 37, 37, 61, 62, 63, 
260
  65, 37, 37, 37, 37, 42, 37, 67, 
261
  37, 40, 37, 37, 37, 37, 37, 37, 
262
  37, 41, 42, 43, 44, 45, 37, 37, 
263
  48, 37, 37, 37, 52, 53, 54, 37, 
264
  55, 56, 57, 37, 37, 37, 37, 37, 
265
  61, 62, 63, 65, 37, 37, 37, 37, 
266
  42, 37, 67, 37, 40, 37, 37, 37, 
267
  37, 37, 37, 37, 41, 42, 43, 44, 
268
  45, 37, 37, 37, 37, 37, 37, 52, 
269
  53, 54, 37, 55, 56, 57, 37, 37, 
270
  37, 37, 37, 61, 62, 63, 65, 37, 
271
  37, 37, 37, 42, 37, 67, 37, 40, 
272
  37, 37, 37, 37, 37, 37, 37, 41, 
273
  42, 43, 44, 45, 46, 47, 48, 37, 
274
  37, 37, 52, 53, 54, 37, 55, 56, 
275
  57, 37, 37, 37, 37, 37, 61, 62, 
276
  63, 65, 37, 37, 37, 37, 42, 37, 
277
  38, 39, 37, 40, 37, 37, 37, 37, 
278
  37, 37, 37, 41, 42, 43, 44, 45, 
279
  46, 47, 48, 49, 37, 51, 52, 53, 
280
  54, 37, 55, 56, 57, 37, 37, 37, 
281
  37, 60, 61, 62, 63, 60, 37, 37, 
282
  37, 37, 64, 37, 38, 37, 37, 37, 
283
  37, 37, 37, 37, 37, 37, 37, 37, 
284
  37, 40, 37, 38, 37, 37, 37, 37, 
285
  37, 37, 37, 37, 37, 37, 37, 37, 
286
  40, 37, 37, 37, 37, 37, 37, 37, 
287
  37, 42, 43, 44, 45, 37, 37, 37, 
288
  37, 37, 37, 37, 37, 37, 37, 55, 
289
  56, 57, 37, 37, 37, 37, 37, 61, 
290
  62, 63, 65, 37, 38, 39, 37, 40, 
291
  37, 37, 37, 37, 37, 37, 37, 41, 
292
  42, 43, 44, 45, 46, 47, 48, 49, 
293
  50, 51, 52, 53, 54, 37, 55, 56, 
294
  57, 37, 37, 37, 37, 60, 61, 62, 
295
  63, 60, 37, 37, 37, 37, 64, 37, 
296
  40, 37, 37, 37, 37, 37, 37, 37, 
297
  37, 37, 37, 37, 37, 37, 37, 37, 
298
  37, 37, 37, 37, 37, 37, 37, 37, 
299
  37, 37, 37, 58, 59, 37, 40, 37, 
300
  37, 37, 37, 37, 37, 37, 37, 37, 
301
  37, 37, 37, 37, 37, 37, 37, 37, 
302
  37, 37, 37, 37, 37, 37, 37, 37, 
303
  37, 37, 59, 37, 69, 70, 68, 71, 
304
  68, 68, 68, 68, 68, 68, 68, 72, 
305
  73, 74, 75, 76, 77, 78, 79, 80, 
306
  1, 81, 82, 83, 84, 68, 85, 86, 
307
  87, 68, 68, 68, 68, 88, 89, 90, 
308
  91, 92, 68, 68, 68, 68, 93, 68, 
309
  69, 70, 68, 71, 68, 68, 68, 68, 
310
  68, 68, 68, 72, 73, 74, 75, 76, 
311
  77, 78, 79, 80, 81, 81, 82, 83, 
312
  84, 68, 85, 86, 87, 68, 68, 68, 
313
  68, 88, 89, 90, 91, 92, 68, 68, 
314
  68, 68, 93, 68, 69, 68, 68, 68, 
315
  68, 68, 68, 68, 68, 68, 68, 68, 
316
  68, 71, 68, 68, 68, 68, 68, 68, 
317
  68, 68, 73, 74, 75, 76, 68, 68, 
318
  68, 68, 68, 68, 68, 68, 68, 68, 
319
  85, 86, 87, 68, 68, 68, 68, 68, 
320
  89, 90, 91, 94, 68, 68, 68, 68, 
321
  73, 68, 71, 68, 68, 68, 68, 68, 
322
  68, 68, 68, 73, 74, 75, 76, 68, 
323
  68, 68, 68, 68, 68, 68, 68, 68, 
324
  68, 85, 86, 87, 68, 68, 68, 68, 
325
  68, 89, 90, 91, 94, 68, 71, 68, 
326
  68, 68, 68, 68, 68, 68, 68, 68, 
327
  74, 75, 76, 68, 68, 68, 68, 68, 
328
  68, 68, 68, 68, 68, 68, 68, 68, 
329
  68, 68, 68, 68, 68, 89, 90, 91, 
330
  68, 71, 68, 68, 68, 68, 68, 68, 
331
  68, 68, 68, 68, 75, 76, 68, 68, 
332
  68, 68, 68, 68, 68, 68, 68, 68, 
333
  68, 68, 68, 68, 68, 68, 68, 68, 
334
  89, 90, 91, 68, 71, 68, 68, 68, 
335
  68, 68, 68, 68, 68, 68, 68, 68, 
336
  76, 68, 68, 68, 68, 68, 68, 68, 
337
  68, 68, 68, 68, 68, 68, 68, 68, 
338
  68, 68, 68, 89, 90, 91, 68, 71, 
339
  68, 68, 68, 68, 68, 68, 68, 68, 
340
  68, 68, 68, 68, 68, 68, 68, 68, 
341
  68, 68, 68, 68, 68, 68, 68, 68, 
342
  68, 68, 68, 68, 68, 68, 89, 90, 
343
  68, 71, 68, 68, 68, 68, 68, 68, 
344
  68, 68, 68, 68, 68, 68, 68, 68, 
345
  68, 68, 68, 68, 68, 68, 68, 68, 
346
  68, 68, 68, 68, 68, 68, 68, 68, 
347
  68, 90, 68, 71, 68, 71, 68, 68, 
348
  68, 68, 68, 68, 68, 68, 68, 74, 
349
  75, 76, 68, 68, 68, 68, 68, 68, 
350
  68, 68, 68, 68, 85, 86, 87, 68, 
351
  68, 68, 68, 68, 89, 90, 91, 94, 
352
  68, 71, 68, 68, 68, 68, 68, 68, 
353
  68, 68, 68, 74, 75, 76, 68, 68, 
354
  68, 68, 68, 68, 68, 68, 68, 68, 
355
  68, 86, 87, 68, 68, 68, 68, 68, 
356
  89, 90, 91, 94, 68, 71, 68, 68, 
357
  68, 68, 68, 68, 68, 68, 68, 74, 
358
  75, 76, 68, 68, 68, 68, 68, 68, 
359
  68, 68, 68, 68, 68, 68, 87, 68, 
360
  68, 68, 68, 68, 89, 90, 91, 94, 
361
  68, 96, 95, 95, 95, 95, 95, 95, 
362
  95, 95, 95, 95, 95, 95, 97, 95, 
363
  71, 68, 68, 68, 68, 68, 68, 68, 
364
  68, 68, 74, 75, 76, 68, 68, 68, 
365
  68, 68, 68, 68, 68, 68, 68, 68, 
366
  68, 68, 68, 68, 68, 68, 68, 89, 
367
  90, 91, 94, 68, 71, 68, 68, 68, 
368
  68, 68, 68, 68, 72, 73, 74, 75, 
369
  76, 68, 68, 68, 68, 68, 68, 82, 
370
  83, 84, 68, 85, 86, 87, 68, 68, 
371
  68, 68, 68, 89, 90, 91, 94, 68, 
372
  68, 68, 68, 73, 68, 71, 68, 68, 
373
  68, 68, 68, 68, 68, 68, 73, 74, 
374
  75, 76, 68, 68, 68, 68, 68, 68, 
375
  82, 83, 84, 68, 85, 86, 87, 68, 
376
  68, 68, 68, 68, 89, 90, 91, 94, 
377
  68, 68, 68, 68, 73, 68, 71, 68, 
378
  68, 68, 68, 68, 68, 68, 68, 73, 
379
  74, 75, 76, 68, 68, 68, 68, 68, 
380
  68, 68, 83, 84, 68, 85, 86, 87, 
381
  68, 68, 68, 68, 68, 89, 90, 91, 
382
  94, 68, 68, 68, 68, 73, 68, 71, 
383
  68, 68, 68, 68, 68, 68, 68, 68, 
384
  73, 74, 75, 76, 68, 68, 68, 68, 
385
  68, 68, 68, 68, 84, 68, 85, 86, 
386
  87, 68, 68, 68, 68, 68, 89, 90, 
387
  91, 94, 68, 68, 68, 68, 73, 68, 
388
  98, 68, 71, 68, 68, 68, 68, 68, 
389
  68, 68, 72, 73, 74, 75, 76, 68, 
390
  78, 79, 68, 68, 68, 82, 83, 84, 
391
  68, 85, 86, 87, 68, 68, 68, 68, 
392
  68, 89, 90, 91, 94, 68, 68, 68, 
393
  68, 73, 68, 71, 68, 68, 68, 68, 
394
  68, 68, 68, 68, 73, 74, 75, 76, 
395
  68, 68, 68, 68, 68, 68, 68, 68, 
396
  68, 68, 85, 86, 87, 68, 68, 68, 
397
  68, 68, 89, 90, 91, 94, 68, 68, 
398
  68, 68, 73, 68, 98, 68, 71, 68, 
399
  68, 68, 68, 68, 68, 68, 72, 73, 
400
  74, 75, 76, 68, 68, 79, 68, 68, 
401
  68, 82, 83, 84, 68, 85, 86, 87, 
402
  68, 68, 68, 68, 68, 89, 90, 91, 
403
  94, 68, 68, 68, 68, 73, 68, 98, 
404
  68, 71, 68, 68, 68, 68, 68, 68, 
405
  68, 72, 73, 74, 75, 76, 68, 68, 
406
  68, 68, 68, 68, 82, 83, 84, 68, 
407
  85, 86, 87, 68, 68, 68, 68, 68, 
408
  89, 90, 91, 94, 68, 68, 68, 68, 
409
  73, 68, 98, 68, 71, 68, 68, 68, 
410
  68, 68, 68, 68, 72, 73, 74, 75, 
411
  76, 77, 78, 79, 68, 68, 68, 82, 
412
  83, 84, 68, 85, 86, 87, 68, 68, 
413
  68, 68, 68, 89, 90, 91, 94, 68, 
414
  68, 68, 68, 73, 68, 69, 70, 68, 
415
  71, 68, 68, 68, 68, 68, 68, 68, 
416
  72, 73, 74, 75, 76, 77, 78, 79, 
417
  80, 68, 81, 82, 83, 84, 68, 85, 
418
  86, 87, 68, 68, 68, 68, 88, 89, 
419
  90, 91, 92, 68, 68, 68, 68, 93, 
420
  68, 69, 99, 99, 99, 99, 99, 99, 
421
  99, 99, 99, 99, 99, 99, 100, 99, 
422
  69, 95, 95, 95, 95, 95, 95, 95, 
423
  95, 95, 95, 95, 95, 97, 95, 69, 
424
  68, 68, 68, 68, 68, 68, 68, 68, 
425
  68, 68, 68, 68, 71, 68, 68, 68, 
426
  68, 68, 68, 68, 68, 73, 74, 75, 
427
  76, 68, 68, 68, 68, 68, 68, 68, 
428
  68, 68, 68, 85, 86, 87, 68, 68, 
429
  68, 68, 68, 89, 90, 91, 94, 68, 
430
  102, 103, 101, 3, 104, 104, 104, 104, 
431
  104, 104, 104, 104, 104, 105, 104, 106, 
432
  107, 68, 71, 68, 68, 68, 68, 68, 
433
  68, 68, 108, 109, 110, 111, 112, 113, 
434
  114, 115, 116, 117, 118, 119, 120, 121, 
435
  68, 122, 123, 124, 68, 58, 59, 68, 
436
  125, 126, 127, 128, 129, 68, 68, 68, 
437
  68, 130, 68, 106, 107, 68, 71, 68, 
438
  68, 68, 68, 68, 68, 68, 108, 109, 
439
  110, 111, 112, 113, 114, 115, 116, 118, 
440
  118, 119, 120, 121, 68, 122, 123, 124, 
441
  68, 68, 68, 68, 125, 126, 127, 128, 
442
  129, 68, 68, 68, 68, 130, 68, 106, 
443
  68, 68, 68, 68, 68, 68, 68, 68, 
444
  68, 68, 68, 68, 71, 68, 68, 68, 
445
  68, 68, 68, 68, 68, 109, 110, 111, 
446
  112, 68, 68, 68, 68, 68, 68, 68, 
447
  68, 68, 68, 122, 123, 124, 68, 68, 
448
  68, 68, 68, 126, 127, 128, 131, 68, 
449
  68, 68, 68, 109, 68, 71, 68, 68, 
450
  68, 68, 68, 68, 68, 68, 109, 110, 
451
  111, 112, 68, 68, 68, 68, 68, 68, 
452
  68, 68, 68, 68, 122, 123, 124, 68, 
453
  68, 68, 68, 68, 126, 127, 128, 131, 
454
  68, 71, 68, 68, 68, 68, 68, 68, 
455
  68, 68, 68, 110, 111, 112, 68, 68, 
456
  68, 68, 68, 68, 68, 68, 68, 68, 
457
  68, 68, 68, 68, 68, 68, 68, 68, 
458
  126, 127, 128, 68, 71, 68, 68, 68, 
459
  68, 68, 68, 68, 68, 68, 68, 111, 
460
  112, 68, 68, 68, 68, 68, 68, 68, 
461
  68, 68, 68, 68, 68, 68, 68, 68, 
462
  68, 68, 68, 126, 127, 128, 68, 71, 
463
  68, 68, 68, 68, 68, 68, 68, 68, 
464
  68, 68, 68, 112, 68, 68, 68, 68, 
465
  68, 68, 68, 68, 68, 68, 68, 68, 
466
  68, 68, 68, 68, 68, 68, 126, 127, 
467
  128, 68, 71, 68, 68, 68, 68, 68, 
468
  68, 68, 68, 68, 68, 68, 68, 68, 
469
  68, 68, 68, 68, 68, 68, 68, 68, 
470
  68, 68, 68, 68, 68, 68, 68, 68, 
471
  68, 126, 127, 68, 71, 68, 68, 68, 
472
  68, 68, 68, 68, 68, 68, 68, 68, 
473
  68, 68, 68, 68, 68, 68, 68, 68, 
474
  68, 68, 68, 68, 68, 68, 68, 68, 
475
  68, 68, 68, 68, 127, 68, 71, 68, 
476
  71, 68, 68, 68, 68, 68, 68, 68, 
477
  68, 68, 110, 111, 112, 68, 68, 68, 
478
  68, 68, 68, 68, 68, 68, 68, 122, 
479
  123, 124, 68, 68, 68, 68, 68, 126, 
480
  127, 128, 131, 68, 71, 68, 68, 68, 
481
  68, 68, 68, 68, 68, 68, 110, 111, 
482
  112, 68, 68, 68, 68, 68, 68, 68, 
483
  68, 68, 68, 68, 123, 124, 68, 68, 
484
  68, 68, 68, 126, 127, 128, 131, 68, 
485
  71, 68, 68, 68, 68, 68, 68, 68, 
486
  68, 68, 110, 111, 112, 68, 68, 68, 
487
  68, 68, 68, 68, 68, 68, 68, 68, 
488
  68, 124, 68, 68, 68, 68, 68, 126, 
489
  127, 128, 131, 68, 132, 95, 95, 95, 
490
  95, 95, 95, 95, 95, 95, 95, 95, 
491
  95, 97, 95, 71, 68, 68, 68, 68, 
492
  68, 68, 68, 68, 68, 110, 111, 112, 
493
  68, 68, 68, 68, 68, 68, 68, 68, 
494
  68, 68, 68, 68, 68, 68, 68, 68, 
495
  68, 68, 126, 127, 128, 131, 68, 71, 
496
  68, 68, 68, 68, 68, 68, 68, 108, 
497
  109, 110, 111, 112, 68, 68, 68, 68, 
498
  68, 68, 119, 120, 121, 68, 122, 123, 
499
  124, 68, 68, 68, 68, 68, 126, 127, 
500
  128, 131, 68, 68, 68, 68, 109, 68, 
501
  71, 68, 68, 68, 68, 68, 68, 68, 
502
  68, 109, 110, 111, 112, 68, 68, 68, 
503
  68, 68, 68, 119, 120, 121, 68, 122, 
504
  123, 124, 68, 68, 68, 68, 68, 126, 
505
  127, 128, 131, 68, 68, 68, 68, 109, 
506
  68, 71, 68, 68, 68, 68, 68, 68, 
507
  68, 68, 109, 110, 111, 112, 68, 68, 
508
  68, 68, 68, 68, 68, 120, 121, 68, 
509
  122, 123, 124, 68, 68, 68, 68, 68, 
510
  126, 127, 128, 131, 68, 68, 68, 68, 
511
  109, 68, 71, 68, 68, 68, 68, 68, 
512
  68, 68, 68, 109, 110, 111, 112, 68, 
513
  68, 68, 68, 68, 68, 68, 68, 121, 
514
  68, 122, 123, 124, 68, 68, 68, 68, 
515
  68, 126, 127, 128, 131, 68, 68, 68, 
516
  68, 109, 68, 133, 68, 71, 68, 68, 
517
  68, 68, 68, 68, 68, 108, 109, 110, 
518
  111, 112, 68, 114, 115, 68, 68, 68, 
519
  119, 120, 121, 68, 122, 123, 124, 68, 
520
  68, 68, 68, 68, 126, 127, 128, 131, 
521
  68, 68, 68, 68, 109, 68, 71, 68, 
522
  68, 68, 68, 68, 68, 68, 68, 109, 
523
  110, 111, 112, 68, 68, 68, 68, 68, 
524
  68, 68, 68, 68, 68, 122, 123, 124, 
525
  68, 68, 68, 68, 68, 126, 127, 128, 
526
  131, 68, 68, 68, 68, 109, 68, 133, 
527
  68, 71, 68, 68, 68, 68, 68, 68, 
528
  68, 108, 109, 110, 111, 112, 68, 68, 
529
  115, 68, 68, 68, 119, 120, 121, 68, 
530
  122, 123, 124, 68, 68, 68, 68, 68, 
531
  126, 127, 128, 131, 68, 68, 68, 68, 
532
  109, 68, 133, 68, 71, 68, 68, 68, 
533
  68, 68, 68, 68, 108, 109, 110, 111, 
534
  112, 68, 68, 68, 68, 68, 68, 119, 
535
  120, 121, 68, 122, 123, 124, 68, 68, 
536
  68, 68, 68, 126, 127, 128, 131, 68, 
537
  68, 68, 68, 109, 68, 133, 68, 71, 
538
  68, 68, 68, 68, 68, 68, 68, 108, 
539
  109, 110, 111, 112, 113, 114, 115, 68, 
540
  68, 68, 119, 120, 121, 68, 122, 123, 
541
  124, 68, 68, 68, 68, 68, 126, 127, 
542
  128, 131, 68, 68, 68, 68, 109, 68, 
543
  106, 107, 68, 71, 68, 68, 68, 68, 
544
  68, 68, 68, 108, 109, 110, 111, 112, 
545
  113, 114, 115, 116, 68, 118, 119, 120, 
546
  121, 68, 122, 123, 124, 68, 68, 68, 
547
  68, 125, 126, 127, 128, 129, 68, 68, 
548
  68, 68, 130, 68, 106, 99, 99, 99, 
549
  99, 99, 99, 99, 99, 99, 99, 99, 
550
  99, 100, 99, 106, 95, 95, 95, 95, 
551
  95, 95, 95, 95, 95, 95, 95, 95, 
552
  97, 95, 106, 68, 68, 68, 68, 68, 
553
  68, 68, 68, 68, 68, 68, 68, 71, 
554
  68, 68, 68, 68, 68, 68, 68, 68, 
555
  109, 110, 111, 112, 68, 68, 68, 68, 
556
  68, 68, 68, 68, 68, 68, 122, 123, 
557
  124, 68, 68, 68, 68, 68, 126, 127, 
558
  128, 131, 68, 106, 107, 68, 71, 68, 
559
  68, 68, 68, 68, 68, 68, 108, 109, 
560
  110, 111, 112, 113, 114, 115, 116, 117, 
561
  118, 119, 120, 121, 68, 122, 123, 124, 
562
  68, 68, 68, 68, 125, 126, 127, 128, 
563
  129, 68, 68, 68, 68, 130, 68, 5, 
564
  6, 134, 8, 134, 134, 134, 134, 134, 
565
  134, 134, 10, 11, 12, 13, 14, 15, 
566
  16, 17, 18, 20, 20, 21, 22, 23, 
567
  134, 24, 25, 26, 134, 134, 134, 134, 
568
  30, 31, 32, 33, 30, 134, 134, 134, 
569
  134, 36, 134, 5, 134, 134, 134, 134, 
570
  134, 134, 134, 134, 134, 134, 134, 134, 
571
  8, 134, 134, 134, 134, 134, 134, 134, 
572
  134, 11, 12, 13, 14, 134, 134, 134, 
573
  134, 134, 134, 134, 134, 134, 134, 24, 
574
  25, 26, 134, 134, 134, 134, 134, 31, 
575
  32, 33, 135, 134, 134, 134, 134, 11, 
576
  134, 8, 134, 134, 134, 134, 134, 134, 
577
  134, 134, 11, 12, 13, 14, 134, 134, 
578
  134, 134, 134, 134, 134, 134, 134, 134, 
579
  24, 25, 26, 134, 134, 134, 134, 134, 
580
  31, 32, 33, 135, 134, 8, 134, 134, 
581
  134, 134, 134, 134, 134, 134, 134, 12, 
582
  13, 14, 134, 134, 134, 134, 134, 134, 
583
  134, 134, 134, 134, 134, 134, 134, 134, 
584
  134, 134, 134, 134, 31, 32, 33, 134, 
585
  8, 134, 134, 134, 134, 134, 134, 134, 
586
  134, 134, 134, 13, 14, 134, 134, 134, 
587
  134, 134, 134, 134, 134, 134, 134, 134, 
588
  134, 134, 134, 134, 134, 134, 134, 31, 
589
  32, 33, 134, 8, 134, 134, 134, 134, 
590
  134, 134, 134, 134, 134, 134, 134, 14, 
591
  134, 134, 134, 134, 134, 134, 134, 134, 
592
  134, 134, 134, 134, 134, 134, 134, 134, 
593
  134, 134, 31, 32, 33, 134, 8, 134, 
594
  134, 134, 134, 134, 134, 134, 134, 134, 
595
  134, 134, 134, 134, 134, 134, 134, 134, 
596
  134, 134, 134, 134, 134, 134, 134, 134, 
597
  134, 134, 134, 134, 134, 31, 32, 134, 
598
  8, 134, 134, 134, 134, 134, 134, 134, 
599
  134, 134, 134, 134, 134, 134, 134, 134, 
600
  134, 134, 134, 134, 134, 134, 134, 134, 
601
  134, 134, 134, 134, 134, 134, 134, 134, 
602
  32, 134, 8, 134, 8, 134, 134, 134, 
603
  134, 134, 134, 134, 134, 134, 12, 13, 
604
  14, 134, 134, 134, 134, 134, 134, 134, 
605
  134, 134, 134, 24, 25, 26, 134, 134, 
606
  134, 134, 134, 31, 32, 33, 135, 134, 
607
  8, 134, 134, 134, 134, 134, 134, 134, 
608
  134, 134, 12, 13, 14, 134, 134, 134, 
609
  134, 134, 134, 134, 134, 134, 134, 134, 
610
  25, 26, 134, 134, 134, 134, 134, 31, 
611
  32, 33, 135, 134, 8, 134, 134, 134, 
612
  134, 134, 134, 134, 134, 134, 12, 13, 
613
  14, 134, 134, 134, 134, 134, 134, 134, 
614
  134, 134, 134, 134, 134, 26, 134, 134, 
615
  134, 134, 134, 31, 32, 33, 135, 134, 
616
  136, 134, 134, 134, 134, 134, 134, 134, 
617
  134, 134, 134, 134, 134, 8, 134, 8, 
618
  134, 134, 134, 134, 134, 134, 134, 134, 
619
  134, 12, 13, 14, 134, 134, 134, 134, 
620
  134, 134, 134, 134, 134, 134, 134, 134, 
621
  134, 134, 134, 134, 134, 134, 31, 32, 
622
  33, 135, 134, 8, 134, 134, 134, 134, 
623
  134, 134, 134, 10, 11, 12, 13, 14, 
624
  134, 134, 134, 134, 134, 134, 21, 22, 
625
  23, 134, 24, 25, 26, 134, 134, 134, 
626
  134, 134, 31, 32, 33, 135, 134, 134, 
627
  134, 134, 11, 134, 8, 134, 134, 134, 
628
  134, 134, 134, 134, 134, 11, 12, 13, 
629
  14, 134, 134, 134, 134, 134, 134, 21, 
630
  22, 23, 134, 24, 25, 26, 134, 134, 
631
  134, 134, 134, 31, 32, 33, 135, 134, 
632
  134, 134, 134, 11, 134, 8, 134, 134, 
633
  134, 134, 134, 134, 134, 134, 11, 12, 
634
  13, 14, 134, 134, 134, 134, 134, 134, 
635
  134, 22, 23, 134, 24, 25, 26, 134, 
636
  134, 134, 134, 134, 31, 32, 33, 135, 
637
  134, 134, 134, 134, 11, 134, 8, 134, 
638
  134, 134, 134, 134, 134, 134, 134, 11, 
639
  12, 13, 14, 134, 134, 134, 134, 134, 
640
  134, 134, 134, 23, 134, 24, 25, 26, 
641
  134, 134, 134, 134, 134, 31, 32, 33, 
642
  135, 134, 134, 134, 134, 11, 134, 137, 
643
  134, 8, 134, 134, 134, 134, 134, 134, 
644
  134, 10, 11, 12, 13, 14, 134, 16, 
645
  17, 134, 134, 134, 21, 22, 23, 134, 
646
  24, 25, 26, 134, 134, 134, 134, 134, 
647
  31, 32, 33, 135, 134, 134, 134, 134, 
648
  11, 134, 8, 134, 134, 134, 134, 134, 
649
  134, 134, 134, 11, 12, 13, 14, 134, 
650
  134, 134, 134, 134, 134, 134, 134, 134, 
651
  134, 24, 25, 26, 134, 134, 134, 134, 
652
  134, 31, 32, 33, 135, 134, 134, 134, 
653
  134, 11, 134, 137, 134, 8, 134, 134, 
654
  134, 134, 134, 134, 134, 10, 11, 12, 
655
  13, 14, 134, 134, 17, 134, 134, 134, 
656
  21, 22, 23, 134, 24, 25, 26, 134, 
657
  134, 134, 134, 134, 31, 32, 33, 135, 
658
  134, 134, 134, 134, 11, 134, 137, 134, 
659
  8, 134, 134, 134, 134, 134, 134, 134, 
660
  10, 11, 12, 13, 14, 134, 134, 134, 
661
  134, 134, 134, 21, 22, 23, 134, 24, 
662
  25, 26, 134, 134, 134, 134, 134, 31, 
663
  32, 33, 135, 134, 134, 134, 134, 11, 
664
  134, 137, 134, 8, 134, 134, 134, 134, 
665
  134, 134, 134, 10, 11, 12, 13, 14, 
666
  15, 16, 17, 134, 134, 134, 21, 22, 
667
  23, 134, 24, 25, 26, 134, 134, 134, 
668
  134, 134, 31, 32, 33, 135, 134, 134, 
669
  134, 134, 11, 134, 5, 6, 134, 8, 
670
  134, 134, 134, 134, 134, 134, 134, 10, 
671
  11, 12, 13, 14, 15, 16, 17, 18, 
672
  134, 20, 21, 22, 23, 134, 24, 25, 
673
  26, 134, 134, 134, 134, 30, 31, 32, 
674
  33, 30, 134, 134, 134, 134, 36, 134, 
675
  5, 134, 134, 134, 134, 134, 134, 134, 
676
  134, 134, 134, 134, 134, 8, 134, 5, 
677
  134, 134, 134, 134, 134, 134, 134, 134, 
678
  134, 134, 134, 134, 8, 134, 134, 134, 
679
  134, 134, 134, 134, 134, 11, 12, 13, 
680
  14, 134, 134, 134, 134, 134, 134, 134, 
681
  134, 134, 134, 24, 25, 26, 134, 134, 
682
  134, 134, 134, 31, 32, 33, 135, 134, 
683
  138, 134, 134, 134, 134, 134, 134, 134, 
684
  134, 134, 8, 134, 7, 8, 134, 1, 
685
  134, 134, 134, 1, 134, 134, 134, 134, 
686
  134, 5, 6, 7, 8, 134, 134, 134, 
687
  134, 134, 134, 134, 10, 11, 12, 13, 
688
  14, 15, 16, 17, 18, 19, 20, 21, 
689
  22, 23, 134, 24, 25, 26, 134, 27, 
690
  28, 134, 30, 31, 32, 33, 30, 134, 
691
  134, 134, 134, 36, 134, 5, 6, 134, 
692
  8, 134, 134, 134, 134, 134, 134, 134, 
693
  10, 11, 12, 13, 14, 15, 16, 17, 
694
  18, 19, 20, 21, 22, 23, 134, 24, 
695
  25, 26, 134, 134, 134, 134, 30, 31, 
696
  32, 33, 30, 134, 134, 134, 134, 36, 
697
  134, 8, 134, 134, 134, 134, 134, 134, 
698
  134, 134, 134, 134, 134, 134, 134, 134, 
699
  134, 134, 134, 134, 134, 134, 134, 134, 
700
  134, 134, 134, 134, 27, 28, 134, 8, 
701
  134, 134, 134, 134, 134, 134, 134, 134, 
702
  134, 134, 134, 134, 134, 134, 134, 134, 
703
  134, 134, 134, 134, 134, 134, 134, 134, 
704
  134, 134, 134, 28, 134, 1, 139, 139, 
705
  139, 1, 139, 141, 140, 140, 140, 140, 
706
  140, 140, 140, 140, 140, 140, 140, 140, 
707
  140, 140, 140, 140, 140, 140, 140, 140, 
708
  140, 140, 140, 140, 140, 140, 140, 140, 
709
  140, 140, 140, 140, 140, 140, 140, 142, 
710
  140, 34, 140, 141, 140, 140, 140, 140, 
711
  140, 140, 140, 140, 140, 140, 140, 140, 
712
  140, 140, 140, 140, 140, 140, 140, 140, 
713
  140, 140, 140, 140, 140, 140, 140, 140, 
714
  140, 140, 140, 140, 140, 140, 34, 142, 
715
  140, 142, 140, 141, 140, 140, 140, 140, 
716
  140, 140, 140, 140, 140, 140, 140, 140, 
717
  140, 140, 140, 140, 140, 140, 140, 140, 
718
  140, 140, 140, 140, 140, 140, 140, 140, 
719
  140, 140, 140, 140, 140, 140, 34, 140, 
720
  35, 140, 0
721
};
722
723
static const char _use_syllable_machine_trans_targs[] = {
724
  1, 31, 0, 59, 61, 90, 91, 116, 
725
  0, 118, 104, 92, 93, 94, 95, 108, 
726
  110, 111, 112, 119, 113, 105, 106, 107, 
727
  99, 100, 101, 120, 121, 122, 114, 96, 
728
  97, 98, 123, 125, 115, 0, 2, 3, 
729
  0, 16, 4, 5, 6, 7, 20, 22, 
730
  23, 24, 28, 25, 17, 18, 19, 11, 
731
  12, 13, 29, 30, 26, 8, 9, 10, 
732
  27, 14, 15, 21, 0, 32, 33, 0, 
733
  46, 34, 35, 36, 37, 50, 52, 53, 
734
  54, 55, 47, 48, 49, 41, 42, 43, 
735
  56, 38, 39, 40, 57, 58, 44, 0, 
736
  45, 0, 51, 0, 0, 0, 60, 0, 
737
  0, 0, 62, 63, 76, 64, 65, 66, 
738
  67, 80, 82, 83, 84, 89, 85, 77, 
739
  78, 79, 71, 72, 73, 86, 68, 69, 
740
  70, 87, 88, 74, 75, 81, 0, 102, 
741
  103, 109, 117, 0, 0, 0, 124
742
};
743
744
static const char _use_syllable_machine_trans_actions[] = {
745
  0, 0, 3, 0, 0, 0, 0, 0, 
746
  4, 0, 0, 0, 0, 0, 0, 0, 
747
  0, 0, 0, 0, 0, 0, 0, 0, 
748
  0, 0, 0, 0, 0, 0, 0, 0, 
749
  0, 0, 0, 0, 0, 5, 0, 0, 
750
  6, 0, 0, 0, 0, 0, 0, 0, 
751
  0, 0, 0, 0, 0, 0, 0, 0, 
752
  0, 0, 0, 0, 0, 0, 0, 0, 
753
  0, 0, 0, 0, 7, 0, 0, 8, 
754
  0, 0, 0, 0, 0, 0, 0, 0, 
755
  0, 0, 0, 0, 0, 0, 0, 0, 
756
  0, 0, 0, 0, 0, 0, 0, 9, 
757
  0, 10, 0, 11, 12, 13, 0, 14, 
758
  15, 16, 0, 0, 0, 0, 0, 0, 
759
  0, 0, 0, 0, 0, 0, 0, 0, 
760
  0, 0, 0, 0, 0, 0, 0, 0, 
761
  0, 0, 0, 0, 0, 0, 17, 0, 
762
  0, 0, 0, 18, 19, 20, 0
763
};
764
765
static const char _use_syllable_machine_to_state_actions[] = {
766
  1, 0, 0, 0, 0, 0, 0, 0, 
767
  0, 0, 0, 0, 0, 0, 0, 0, 
768
  0, 0, 0, 0, 0, 0, 0, 0, 
769
  0, 0, 0, 0, 0, 0, 0, 0, 
770
  0, 0, 0, 0, 0, 0, 0, 0, 
771
  0, 0, 0, 0, 0, 0, 0, 0, 
772
  0, 0, 0, 0, 0, 0, 0, 0, 
773
  0, 0, 0, 0, 0, 0, 0, 0, 
774
  0, 0, 0, 0, 0, 0, 0, 0, 
775
  0, 0, 0, 0, 0, 0, 0, 0, 
776
  0, 0, 0, 0, 0, 0, 0, 0, 
777
  0, 0, 0, 0, 0, 0, 0, 0, 
778
  0, 0, 0, 0, 0, 0, 0, 0, 
779
  0, 0, 0, 0, 0, 0, 0, 0, 
780
  0, 0, 0, 0, 0, 0, 0, 0, 
781
  0, 0, 0, 0, 0, 0
782
};
783
784
static const char _use_syllable_machine_from_state_actions[] = {
785
  2, 0, 0, 0, 0, 0, 0, 0, 
786
  0, 0, 0, 0, 0, 0, 0, 0, 
787
  0, 0, 0, 0, 0, 0, 0, 0, 
788
  0, 0, 0, 0, 0, 0, 0, 0, 
789
  0, 0, 0, 0, 0, 0, 0, 0, 
790
  0, 0, 0, 0, 0, 0, 0, 0, 
791
  0, 0, 0, 0, 0, 0, 0, 0, 
792
  0, 0, 0, 0, 0, 0, 0, 0, 
793
  0, 0, 0, 0, 0, 0, 0, 0, 
794
  0, 0, 0, 0, 0, 0, 0, 0, 
795
  0, 0, 0, 0, 0, 0, 0, 0, 
796
  0, 0, 0, 0, 0, 0, 0, 0, 
797
  0, 0, 0, 0, 0, 0, 0, 0, 
798
  0, 0, 0, 0, 0, 0, 0, 0, 
799
  0, 0, 0, 0, 0, 0, 0, 0, 
800
  0, 0, 0, 0, 0, 0
801
};
802
803
static const short _use_syllable_machine_eof_trans[] = {
804
  0, 38, 38, 38, 38, 38, 38, 38, 
805
  38, 38, 38, 38, 38, 38, 38, 38, 
806
  38, 38, 38, 38, 38, 38, 38, 38, 
807
  38, 38, 38, 38, 38, 38, 38, 69, 
808
  69, 69, 69, 69, 69, 69, 69, 69, 
809
  69, 69, 69, 69, 96, 69, 69, 69, 
810
  69, 69, 69, 69, 69, 69, 69, 69, 
811
  100, 96, 69, 102, 105, 69, 69, 69, 
812
  69, 69, 69, 69, 69, 69, 69, 69, 
813
  69, 69, 96, 69, 69, 69, 69, 69, 
814
  69, 69, 69, 69, 69, 69, 100, 96, 
815
  69, 69, 135, 135, 135, 135, 135, 135, 
816
  135, 135, 135, 135, 135, 135, 135, 135, 
817
  135, 135, 135, 135, 135, 135, 135, 135, 
818
  135, 135, 135, 135, 135, 135, 135, 135, 
819
  135, 135, 140, 141, 141, 141
820
};
821
822
static const int use_syllable_machine_start = 0;
823
static const int use_syllable_machine_first_final = 0;
824
static const int use_syllable_machine_error = -1;
825
826
static const int use_syllable_machine_en_main = 0;
827
828
829
#line 58 "hb-ot-shaper-use-machine.rl"
830
831
832
833
#line 182 "hb-ot-shaper-use-machine.rl"
834
835
836
#define found_syllable(syllable_type) \
837
1.61M
  HB_STMT_START { \
838
1.61M
    if (0) fprintf (stderr, "syllable %u..%u %s\n", (*ts).second.first, (*te).second.first, #syllable_type); \
839
3.46M
    for (unsigned i = (*ts).second.first; i < (*te).second.first; ++i) \
840
1.85M
      info[i].syllable() = (syllable_serial << 4) | syllable_type; \
841
1.61M
    syllable_serial++; \
842
1.61M
    if (syllable_serial == 16) syllable_serial = 1; \
843
1.61M
  } HB_STMT_END
844
845
846
template <typename Iter>
847
struct machine_index_t :
848
  hb_iter_with_fallback_t<machine_index_t<Iter>,
849
        typename Iter::item_t>
850
{
851
14.7k
  machine_index_t (const Iter& it) : it (it) {}
852
  machine_index_t (const machine_index_t& o) : hb_iter_with_fallback_t<machine_index_t<Iter>,
853
                       typename Iter::item_t> (),
854
1.67M
                 it (o.it), is_null (o.is_null) {}
855
856
  static constexpr bool is_random_access_iterator = Iter::is_random_access_iterator;
857
  static constexpr bool is_sorted_iterator = Iter::is_sorted_iterator;
858
859
12.0M
  typename Iter::item_t __item__ () const { return *it; }
860
  typename Iter::item_t __item_at__ (unsigned i) const { return it[i]; }
861
14.7k
  unsigned __len__ () const { return it.len (); }
862
3.30M
  void __next__ () { ++it; }
863
55.5k
  void __forward__ (unsigned n) { it += n; }
864
1.57M
  void __prev__ () { --it; }
865
  void __rewind__ (unsigned n) { it -= n; }
866
867
  void operator = (unsigned n)
868
1.64M
  {
869
1.64M
    assert (n == 0);
870
0
    is_null = true;
871
1.64M
  }
872
  explicit operator bool () { return !is_null; }
873
874
  void operator = (const machine_index_t& o)
875
3.23M
  {
876
3.23M
    is_null = o.is_null;
877
3.23M
    unsigned index = (*it).first;
878
3.23M
    unsigned n = (*o.it).first;
879
3.23M
    if (index < n) it += n - index; else if (index > n) it -= index - n;
880
3.23M
  }
881
  bool operator == (const machine_index_t& o) const
882
3.34M
  { return is_null ? o.is_null : !o.is_null && (*it).first == (*o.it).first; }
883
3.30M
  bool operator != (const machine_index_t& o) const { return !(*this == o); }
884
885
  private:
886
  Iter it;
887
  bool is_null = false;
888
};
889
struct
890
{
891
  template <typename Iter,
892
      hb_requires (hb_is_iterable (Iter))>
893
  machine_index_t<hb_iter_type<Iter>>
894
  operator () (Iter&& it) const
895
14.7k
  { return machine_index_t<hb_iter_type<Iter>> (hb_iter (it)); }
896
}
897
HB_FUNCOBJ (machine_index);
898
899
900
901
static bool
902
not_ccs_default_ignorable (const hb_glyph_info_t &i)
903
12.8M
{ return i.use_category() != USE(CGJ); }
904
905
static inline void
906
find_syllables_use (hb_buffer_t *buffer)
907
14.7k
{
908
14.7k
  hb_glyph_info_t *info = buffer->info;
909
14.7k
  auto p =
910
14.7k
    + hb_iter (info, buffer->len)
911
14.7k
    | hb_enumerate
912
12.5M
    | hb_filter ([] (const hb_glyph_info_t &i) { return not_ccs_default_ignorable (i); },
913
14.7k
     hb_second)
914
14.7k
    | hb_filter ([&] (const hb_pair_t<unsigned, const hb_glyph_info_t &> p)
915
11.7M
     {
916
11.7M
       if (p.second.use_category() == USE(ZWNJ))
917
254k
         for (unsigned i = p.first + 1; i < buffer->len; ++i)
918
251k
           if (not_ccs_default_ignorable (info[i]))
919
161k
       return !_hb_glyph_info_is_unicode_mark (&info[i]);
920
11.5M
       return true;
921
11.7M
     })
922
14.7k
    | hb_enumerate
923
14.7k
    | machine_index
924
14.7k
    ;
925
14.7k
  auto pe = p + p.len ();
926
14.7k
  auto eof = +pe;
927
14.7k
  auto ts = +p;
928
14.7k
  auto te = +p;
929
14.7k
  unsigned int act HB_UNUSED;
930
14.7k
  int cs;
931
  
932
14.7k
#line 922 "hb-ot-shaper-use-machine.hh"
933
14.7k
  {
934
14.7k
  cs = use_syllable_machine_start;
935
14.7k
  ts = 0;
936
14.7k
  te = 0;
937
14.7k
  act = 0;
938
14.7k
  }
939
940
14.7k
#line 282 "hb-ot-shaper-use-machine.rl"
941
942
943
14.7k
  unsigned int syllable_serial = 1;
944
  
945
14.7k
#line 931 "hb-ot-shaper-use-machine.hh"
946
14.7k
  {
947
14.7k
  int _slen;
948
14.7k
  int _trans;
949
14.7k
  const unsigned char *_keys;
950
14.7k
  const unsigned char *_inds;
951
14.7k
  if ( p == pe )
952
56
    goto _test_eof;
953
3.28M
_resume:
954
3.28M
  switch ( _use_syllable_machine_from_state_actions[cs] ) {
955
1.61M
  case 2:
956
1.61M
#line 1 "NONE"
957
1.61M
  {ts = p;}
958
1.61M
  break;
959
3.28M
#line 943 "hb-ot-shaper-use-machine.hh"
960
3.28M
  }
961
962
3.28M
  _keys = _use_syllable_machine_trans_keys + (cs<<1);
963
3.28M
  _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
964
965
3.28M
  _slen = _use_syllable_machine_key_spans[cs];
966
3.28M
  _trans = _inds[ _slen > 0 && _keys[0] <=( (*p).second.second.use_category()) &&
967
3.28M
    ( (*p).second.second.use_category()) <= _keys[1] ?
968
1.75M
    ( (*p).second.second.use_category()) - _keys[0] : _slen ];
969
970
3.30M
_eof_trans:
971
3.30M
  cs = _use_syllable_machine_trans_targs[_trans];
972
973
3.30M
  if ( _use_syllable_machine_trans_actions[_trans] == 0 )
974
1.68M
    goto _again;
975
976
1.61M
  switch ( _use_syllable_machine_trans_actions[_trans] ) {
977
152
  case 12:
978
152
#line 170 "hb-ot-shaper-use-machine.rl"
979
152
  {te = p+1;{ found_syllable (use_virama_terminated_cluster); }}
980
152
  break;
981
279
  case 10:
982
279
#line 171 "hb-ot-shaper-use-machine.rl"
983
279
  {te = p+1;{ found_syllable (use_sakot_terminated_cluster); }}
984
279
  break;
985
965
  case 8:
986
965
#line 172 "hb-ot-shaper-use-machine.rl"
987
965
  {te = p+1;{ found_syllable (use_standard_cluster); }}
988
965
  break;
989
63
  case 16:
990
63
#line 173 "hb-ot-shaper-use-machine.rl"
991
63
  {te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }}
992
63
  break;
993
684
  case 14:
994
684
#line 174 "hb-ot-shaper-use-machine.rl"
995
684
  {te = p+1;{ found_syllable (use_numeral_cluster); }}
996
684
  break;
997
1.93k
  case 6:
998
1.93k
#line 175 "hb-ot-shaper-use-machine.rl"
999
1.93k
  {te = p+1;{ found_syllable (use_symbol_cluster); }}
1000
1.93k
  break;
1001
0
  case 20:
1002
0
#line 176 "hb-ot-shaper-use-machine.rl"
1003
0
  {te = p+1;{ found_syllable (use_hieroglyph_cluster); }}
1004
0
  break;
1005
22.1k
  case 4:
1006
22.1k
#line 177 "hb-ot-shaper-use-machine.rl"
1007
22.1k
  {te = p+1;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1008
22.1k
  break;
1009
14.6k
  case 3:
1010
14.6k
#line 178 "hb-ot-shaper-use-machine.rl"
1011
14.6k
  {te = p+1;{ found_syllable (use_non_cluster); }}
1012
14.6k
  break;
1013
436
  case 11:
1014
436
#line 170 "hb-ot-shaper-use-machine.rl"
1015
436
  {te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
1016
436
  break;
1017
343
  case 9:
1018
343
#line 171 "hb-ot-shaper-use-machine.rl"
1019
343
  {te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
1020
343
  break;
1021
141k
  case 7:
1022
141k
#line 172 "hb-ot-shaper-use-machine.rl"
1023
141k
  {te = p;p--;{ found_syllable (use_standard_cluster); }}
1024
141k
  break;
1025
155
  case 15:
1026
155
#line 173 "hb-ot-shaper-use-machine.rl"
1027
155
  {te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
1028
155
  break;
1029
3.12k
  case 13:
1030
3.12k
#line 174 "hb-ot-shaper-use-machine.rl"
1031
3.12k
  {te = p;p--;{ found_syllable (use_numeral_cluster); }}
1032
3.12k
  break;
1033
1.26M
  case 5:
1034
1.26M
#line 175 "hb-ot-shaper-use-machine.rl"
1035
1.26M
  {te = p;p--;{ found_syllable (use_symbol_cluster); }}
1036
1.26M
  break;
1037
0
  case 19:
1038
0
#line 176 "hb-ot-shaper-use-machine.rl"
1039
0
  {te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
1040
0
  break;
1041
81.1k
  case 17:
1042
81.1k
#line 177 "hb-ot-shaper-use-machine.rl"
1043
81.1k
  {te = p;p--;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1044
81.1k
  break;
1045
85.0k
  case 18:
1046
85.0k
#line 178 "hb-ot-shaper-use-machine.rl"
1047
85.0k
  {te = p;p--;{ found_syllable (use_non_cluster); }}
1048
85.0k
  break;
1049
1.61M
#line 1014 "hb-ot-shaper-use-machine.hh"
1050
1.61M
  }
1051
1052
3.30M
_again:
1053
3.30M
  switch ( _use_syllable_machine_to_state_actions[cs] ) {
1054
1.61M
  case 1:
1055
1.61M
#line 1 "NONE"
1056
1.61M
  {ts = 0;}
1057
1.61M
  break;
1058
3.30M
#line 1021 "hb-ot-shaper-use-machine.hh"
1059
3.30M
  }
1060
1061
3.30M
  if ( ++p != pe )
1062
3.27M
    goto _resume;
1063
28.7k
  _test_eof: {}
1064
28.7k
  if ( p == eof )
1065
28.7k
  {
1066
28.7k
  if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
1067
13.9k
    _trans = _use_syllable_machine_eof_trans[cs] - 1;
1068
13.9k
    goto _eof_trans;
1069
13.9k
  }
1070
28.7k
  }
1071
1072
28.7k
  }
1073
1074
28.7k
#line 287 "hb-ot-shaper-use-machine.rl"
1075
1076
28.7k
}
1077
1078
#undef found_syllable
1079
1080
#endif /* HB_OT_SHAPER_USE_MACHINE_HH */