Coverage Report

Created: 2025-07-11 06:34

/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
0
#define use_category() ot_shaper_var_u8_category()
40
41
0
#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 57 "hb-ot-shaper-use-machine.hh"
57
0
#define use_syllable_machine_ex_B 1u
58
0
#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
0
#define use_syllable_machine_ex_H 12u
71
#define use_syllable_machine_ex_HM 54u
72
#define use_syllable_machine_ex_HN 13u
73
#define use_syllable_machine_ex_HR 55u
74
0
#define use_syllable_machine_ex_HVM 53u
75
0
#define use_syllable_machine_ex_IS 44u
76
#define use_syllable_machine_ex_J 50u
77
#define use_syllable_machine_ex_MAbv 27u
78
#define use_syllable_machine_ex_MBlw 28u
79
#define use_syllable_machine_ex_MPre 30u
80
#define use_syllable_machine_ex_MPst 29u
81
#define use_syllable_machine_ex_N 4u
82
0
#define use_syllable_machine_ex_O 0u
83
0
#define use_syllable_machine_ex_R 18u
84
#define use_syllable_machine_ex_RK 56u
85
#define use_syllable_machine_ex_SB 51u
86
#define use_syllable_machine_ex_SE 52u
87
#define use_syllable_machine_ex_SMAbv 41u
88
#define use_syllable_machine_ex_SMBlw 42u
89
#define use_syllable_machine_ex_SUB 11u
90
#define use_syllable_machine_ex_Sk 48u
91
#define use_syllable_machine_ex_VAbv 33u
92
#define use_syllable_machine_ex_VBlw 34u
93
#define use_syllable_machine_ex_VMAbv 37u
94
#define use_syllable_machine_ex_VMBlw 38u
95
#define use_syllable_machine_ex_VMPre 23u
96
#define use_syllable_machine_ex_VMPst 39u
97
0
#define use_syllable_machine_ex_VPre 22u
98
#define use_syllable_machine_ex_VPst 35u
99
#define use_syllable_machine_ex_WJ 16u
100
0
#define use_syllable_machine_ex_ZWNJ 14u
101
102
103
#line 104 "hb-ot-shaper-use-machine.hh"
104
static const unsigned char _use_syllable_machine_trans_keys[] = {
105
  49u, 51u, 0u, 56u, 11u, 56u, 11u, 56u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 
106
  14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 
107
  14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 
108
  12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u, 1u, 48u, 14u, 42u, 14u, 42u, 11u, 56u, 
109
  1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 
110
  14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 
111
  14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u, 
112
  1u, 14u, 1u, 48u, 14u, 14u, 13u, 14u, 4u, 14u, 11u, 56u, 11u, 56u, 1u, 53u, 
113
  14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 
114
  14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 
115
  12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 56u, 1u, 14u, 1u, 14u, 
116
  1u, 48u, 14u, 14u, 11u, 56u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 
117
  14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 
118
  14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 
119
  12u, 53u, 11u, 56u, 1u, 14u, 1u, 48u, 4u, 14u, 13u, 14u, 1u, 56u, 14u, 42u, 
120
  14u, 42u, 1u, 5u, 14u, 55u, 14u, 51u, 14u, 52u, 14u, 54u, 11u, 56u, 0
121
};
122
123
static const char _use_syllable_machine_key_spans[] = {
124
  3, 57, 46, 46, 53, 35, 34, 34, 
125
  34, 33, 33, 1, 35, 35, 35, 14, 
126
  35, 40, 40, 40, 40, 42, 40, 42, 
127
  42, 42, 46, 14, 48, 29, 29, 46, 
128
  53, 35, 34, 34, 34, 33, 33, 1, 
129
  35, 35, 35, 14, 35, 40, 40, 40, 
130
  40, 42, 40, 42, 42, 42, 46, 14, 
131
  14, 48, 1, 2, 11, 46, 46, 53, 
132
  35, 34, 34, 34, 33, 33, 1, 35, 
133
  35, 35, 14, 35, 40, 40, 40, 40, 
134
  42, 40, 42, 42, 42, 46, 14, 14, 
135
  48, 1, 46, 53, 35, 34, 34, 34, 
136
  33, 33, 1, 35, 35, 35, 14, 35, 
137
  40, 40, 40, 40, 42, 40, 42, 42, 
138
  42, 46, 14, 48, 11, 2, 56, 29, 
139
  29, 5, 42, 38, 39, 41, 46
140
};
141
142
static const short _use_syllable_machine_index_offsets[] = {
143
  0, 4, 62, 109, 156, 210, 246, 281, 
144
  316, 351, 385, 419, 421, 457, 493, 529, 
145
  544, 580, 621, 662, 703, 744, 787, 828, 
146
  871, 914, 957, 1004, 1019, 1068, 1098, 1128, 
147
  1175, 1229, 1265, 1300, 1335, 1370, 1404, 1438, 
148
  1440, 1476, 1512, 1548, 1563, 1599, 1640, 1681, 
149
  1722, 1763, 1806, 1847, 1890, 1933, 1976, 2023, 
150
  2038, 2053, 2102, 2104, 2107, 2119, 2166, 2213, 
151
  2267, 2303, 2338, 2373, 2408, 2442, 2476, 2478, 
152
  2514, 2550, 2586, 2601, 2637, 2678, 2719, 2760, 
153
  2801, 2844, 2885, 2928, 2971, 3014, 3061, 3076, 
154
  3091, 3140, 3142, 3189, 3243, 3279, 3314, 3349, 
155
  3384, 3418, 3452, 3454, 3490, 3526, 3562, 3577, 
156
  3613, 3654, 3695, 3736, 3777, 3820, 3861, 3904, 
157
  3947, 3990, 4037, 4052, 4101, 4113, 4116, 4173, 
158
  4203, 4233, 4239, 4282, 4321, 4361, 4403
159
};
160
161
static const unsigned char _use_syllable_machine_indicies[] = {
162
  1, 0, 2, 0, 3, 4, 5, 5, 
163
  6, 7, 5, 5, 5, 5, 5, 8, 
164
  9, 10, 11, 5, 5, 5, 12, 5, 
165
  5, 5, 13, 14, 15, 16, 17, 18, 
166
  19, 20, 21, 8, 22, 23, 24, 25, 
167
  5, 26, 27, 28, 5, 29, 30, 31, 
168
  32, 33, 34, 35, 32, 1, 5, 36, 
169
  5, 37, 5, 5, 38, 5, 40, 41, 
170
  39, 42, 39, 39, 39, 39, 39, 39, 
171
  39, 43, 44, 45, 46, 47, 48, 49, 
172
  50, 51, 40, 52, 53, 54, 55, 39, 
173
  56, 57, 58, 39, 59, 60, 39, 61, 
174
  62, 63, 64, 61, 39, 39, 39, 39, 
175
  65, 39, 39, 64, 39, 40, 41, 39, 
176
  42, 39, 39, 39, 39, 39, 39, 39, 
177
  43, 44, 45, 46, 47, 48, 49, 50, 
178
  51, 40, 52, 53, 54, 55, 39, 56, 
179
  57, 58, 39, 39, 39, 39, 61, 62, 
180
  63, 64, 61, 39, 39, 39, 39, 65, 
181
  39, 39, 64, 39, 40, 39, 39, 39, 
182
  39, 39, 39, 39, 39, 39, 39, 39, 
183
  39, 42, 39, 39, 39, 39, 39, 39, 
184
  39, 39, 44, 45, 46, 47, 39, 39, 
185
  39, 39, 39, 39, 39, 39, 39, 39, 
186
  56, 57, 58, 39, 39, 39, 39, 39, 
187
  62, 63, 64, 66, 39, 39, 39, 39, 
188
  44, 39, 42, 39, 39, 39, 39, 39, 
189
  39, 39, 39, 44, 45, 46, 47, 39, 
190
  39, 39, 39, 39, 39, 39, 39, 39, 
191
  39, 56, 57, 58, 39, 39, 39, 39, 
192
  39, 62, 63, 64, 66, 39, 42, 39, 
193
  39, 39, 39, 39, 39, 39, 39, 39, 
194
  45, 46, 47, 39, 39, 39, 39, 39, 
195
  39, 39, 39, 39, 39, 39, 39, 39, 
196
  39, 39, 39, 39, 39, 62, 63, 64, 
197
  39, 42, 39, 39, 39, 39, 39, 39, 
198
  39, 39, 39, 39, 46, 47, 39, 39, 
199
  39, 39, 39, 39, 39, 39, 39, 39, 
200
  39, 39, 39, 39, 39, 39, 39, 39, 
201
  62, 63, 64, 39, 42, 39, 39, 39, 
202
  39, 39, 39, 39, 39, 39, 39, 39, 
203
  47, 39, 39, 39, 39, 39, 39, 39, 
204
  39, 39, 39, 39, 39, 39, 39, 39, 
205
  39, 39, 39, 62, 63, 64, 39, 42, 
206
  39, 39, 39, 39, 39, 39, 39, 39, 
207
  39, 39, 39, 39, 39, 39, 39, 39, 
208
  39, 39, 39, 39, 39, 39, 39, 39, 
209
  39, 39, 39, 39, 39, 39, 62, 63, 
210
  39, 42, 39, 39, 39, 39, 39, 39, 
211
  39, 39, 39, 39, 39, 39, 39, 39, 
212
  39, 39, 39, 39, 39, 39, 39, 39, 
213
  39, 39, 39, 39, 39, 39, 39, 39, 
214
  39, 63, 39, 42, 39, 42, 39, 39, 
215
  39, 39, 39, 39, 39, 39, 39, 45, 
216
  46, 47, 39, 39, 39, 39, 39, 39, 
217
  39, 39, 39, 39, 56, 57, 58, 39, 
218
  39, 39, 39, 39, 62, 63, 64, 66, 
219
  39, 42, 39, 39, 39, 39, 39, 39, 
220
  39, 39, 39, 45, 46, 47, 39, 39, 
221
  39, 39, 39, 39, 39, 39, 39, 39, 
222
  39, 57, 58, 39, 39, 39, 39, 39, 
223
  62, 63, 64, 66, 39, 42, 39, 39, 
224
  39, 39, 39, 39, 39, 39, 39, 45, 
225
  46, 47, 39, 39, 39, 39, 39, 39, 
226
  39, 39, 39, 39, 39, 39, 58, 39, 
227
  39, 39, 39, 39, 62, 63, 64, 66, 
228
  39, 67, 39, 39, 39, 39, 39, 39, 
229
  39, 39, 39, 39, 39, 39, 42, 39, 
230
  42, 39, 39, 39, 39, 39, 39, 39, 
231
  39, 39, 45, 46, 47, 39, 39, 39, 
232
  39, 39, 39, 39, 39, 39, 39, 39, 
233
  39, 39, 39, 39, 39, 39, 39, 62, 
234
  63, 64, 66, 39, 42, 39, 39, 39, 
235
  39, 39, 39, 39, 43, 44, 45, 46, 
236
  47, 39, 39, 39, 39, 39, 39, 53, 
237
  54, 55, 39, 56, 57, 58, 39, 39, 
238
  39, 39, 39, 62, 63, 64, 66, 39, 
239
  39, 39, 39, 44, 39, 42, 39, 39, 
240
  39, 39, 39, 39, 39, 39, 44, 45, 
241
  46, 47, 39, 39, 39, 39, 39, 39, 
242
  53, 54, 55, 39, 56, 57, 58, 39, 
243
  39, 39, 39, 39, 62, 63, 64, 66, 
244
  39, 39, 39, 39, 44, 39, 42, 39, 
245
  39, 39, 39, 39, 39, 39, 39, 44, 
246
  45, 46, 47, 39, 39, 39, 39, 39, 
247
  39, 39, 54, 55, 39, 56, 57, 58, 
248
  39, 39, 39, 39, 39, 62, 63, 64, 
249
  66, 39, 39, 39, 39, 44, 39, 42, 
250
  39, 39, 39, 39, 39, 39, 39, 39, 
251
  44, 45, 46, 47, 39, 39, 39, 39, 
252
  39, 39, 39, 39, 55, 39, 56, 57, 
253
  58, 39, 39, 39, 39, 39, 62, 63, 
254
  64, 66, 39, 39, 39, 39, 44, 39, 
255
  68, 39, 42, 39, 39, 39, 39, 39, 
256
  39, 39, 43, 44, 45, 46, 47, 39, 
257
  49, 50, 39, 39, 39, 53, 54, 55, 
258
  39, 56, 57, 58, 39, 39, 39, 39, 
259
  39, 62, 63, 64, 66, 39, 39, 39, 
260
  39, 44, 39, 42, 39, 39, 39, 39, 
261
  39, 39, 39, 39, 44, 45, 46, 47, 
262
  39, 39, 39, 39, 39, 39, 39, 39, 
263
  39, 39, 56, 57, 58, 39, 39, 39, 
264
  39, 39, 62, 63, 64, 66, 39, 39, 
265
  39, 39, 44, 39, 68, 39, 42, 39, 
266
  39, 39, 39, 39, 39, 39, 43, 44, 
267
  45, 46, 47, 39, 39, 50, 39, 39, 
268
  39, 53, 54, 55, 39, 56, 57, 58, 
269
  39, 39, 39, 39, 39, 62, 63, 64, 
270
  66, 39, 39, 39, 39, 44, 39, 68, 
271
  39, 42, 39, 39, 39, 39, 39, 39, 
272
  39, 43, 44, 45, 46, 47, 39, 39, 
273
  39, 39, 39, 39, 53, 54, 55, 39, 
274
  56, 57, 58, 39, 39, 39, 39, 39, 
275
  62, 63, 64, 66, 39, 39, 39, 39, 
276
  44, 39, 68, 39, 42, 39, 39, 39, 
277
  39, 39, 39, 39, 43, 44, 45, 46, 
278
  47, 48, 49, 50, 39, 39, 39, 53, 
279
  54, 55, 39, 56, 57, 58, 39, 39, 
280
  39, 39, 39, 62, 63, 64, 66, 39, 
281
  39, 39, 39, 44, 39, 40, 41, 39, 
282
  42, 39, 39, 39, 39, 39, 39, 39, 
283
  43, 44, 45, 46, 47, 48, 49, 50, 
284
  51, 39, 52, 53, 54, 55, 39, 56, 
285
  57, 58, 39, 39, 39, 39, 61, 62, 
286
  63, 64, 61, 39, 39, 39, 39, 65, 
287
  39, 39, 64, 39, 40, 39, 39, 39, 
288
  39, 39, 39, 39, 39, 39, 39, 39, 
289
  39, 42, 39, 40, 39, 39, 39, 39, 
290
  39, 39, 39, 39, 39, 39, 39, 39, 
291
  42, 39, 39, 39, 39, 39, 39, 39, 
292
  39, 44, 45, 46, 47, 39, 39, 39, 
293
  39, 39, 39, 39, 39, 39, 39, 56, 
294
  57, 58, 39, 39, 39, 39, 39, 62, 
295
  63, 64, 66, 39, 42, 39, 39, 39, 
296
  39, 39, 39, 39, 39, 39, 39, 39, 
297
  39, 39, 39, 39, 39, 39, 39, 39, 
298
  39, 39, 39, 39, 39, 39, 39, 59, 
299
  60, 39, 42, 39, 39, 39, 39, 39, 
300
  39, 39, 39, 39, 39, 39, 39, 39, 
301
  39, 39, 39, 39, 39, 39, 39, 39, 
302
  39, 39, 39, 39, 39, 39, 60, 39, 
303
  4, 70, 69, 71, 69, 69, 69, 69, 
304
  69, 69, 69, 72, 73, 74, 75, 76, 
305
  77, 78, 79, 80, 4, 81, 82, 83, 
306
  84, 69, 85, 86, 87, 69, 69, 69, 
307
  69, 88, 89, 90, 91, 92, 69, 69, 
308
  69, 69, 93, 69, 69, 94, 69, 4, 
309
  69, 69, 69, 69, 69, 69, 69, 69, 
310
  69, 69, 69, 69, 71, 69, 69, 69, 
311
  69, 69, 69, 69, 69, 73, 74, 75, 
312
  76, 69, 69, 69, 69, 69, 69, 69, 
313
  69, 69, 69, 85, 86, 87, 69, 69, 
314
  69, 69, 69, 89, 90, 91, 95, 69, 
315
  69, 69, 69, 73, 69, 71, 69, 69, 
316
  69, 69, 69, 69, 69, 69, 73, 74, 
317
  75, 76, 69, 69, 69, 69, 69, 69, 
318
  69, 69, 69, 69, 85, 86, 87, 69, 
319
  69, 69, 69, 69, 89, 90, 91, 95, 
320
  69, 71, 69, 69, 69, 69, 69, 69, 
321
  69, 69, 69, 74, 75, 76, 69, 69, 
322
  69, 69, 69, 69, 69, 69, 69, 69, 
323
  69, 69, 69, 69, 69, 69, 69, 69, 
324
  89, 90, 91, 69, 71, 69, 69, 69, 
325
  69, 69, 69, 69, 69, 69, 69, 75, 
326
  76, 69, 69, 69, 69, 69, 69, 69, 
327
  69, 69, 69, 69, 69, 69, 69, 69, 
328
  69, 69, 69, 89, 90, 91, 69, 71, 
329
  69, 69, 69, 69, 69, 69, 69, 69, 
330
  69, 69, 69, 76, 69, 69, 69, 69, 
331
  69, 69, 69, 69, 69, 69, 69, 69, 
332
  69, 69, 69, 69, 69, 69, 89, 90, 
333
  91, 69, 71, 69, 69, 69, 69, 69, 
334
  69, 69, 69, 69, 69, 69, 69, 69, 
335
  69, 69, 69, 69, 69, 69, 69, 69, 
336
  69, 69, 69, 69, 69, 69, 69, 69, 
337
  69, 89, 90, 69, 71, 69, 69, 69, 
338
  69, 69, 69, 69, 69, 69, 69, 69, 
339
  69, 69, 69, 69, 69, 69, 69, 69, 
340
  69, 69, 69, 69, 69, 69, 69, 69, 
341
  69, 69, 69, 69, 90, 69, 71, 69, 
342
  71, 69, 69, 69, 69, 69, 69, 69, 
343
  69, 69, 74, 75, 76, 69, 69, 69, 
344
  69, 69, 69, 69, 69, 69, 69, 85, 
345
  86, 87, 69, 69, 69, 69, 69, 89, 
346
  90, 91, 95, 69, 71, 69, 69, 69, 
347
  69, 69, 69, 69, 69, 69, 74, 75, 
348
  76, 69, 69, 69, 69, 69, 69, 69, 
349
  69, 69, 69, 69, 86, 87, 69, 69, 
350
  69, 69, 69, 89, 90, 91, 95, 69, 
351
  71, 69, 69, 69, 69, 69, 69, 69, 
352
  69, 69, 74, 75, 76, 69, 69, 69, 
353
  69, 69, 69, 69, 69, 69, 69, 69, 
354
  69, 87, 69, 69, 69, 69, 69, 89, 
355
  90, 91, 95, 69, 97, 96, 96, 96, 
356
  96, 96, 96, 96, 96, 96, 96, 96, 
357
  96, 98, 96, 71, 69, 69, 69, 69, 
358
  69, 69, 69, 69, 69, 74, 75, 76, 
359
  69, 69, 69, 69, 69, 69, 69, 69, 
360
  69, 69, 69, 69, 69, 69, 69, 69, 
361
  69, 69, 89, 90, 91, 95, 69, 71, 
362
  69, 69, 69, 69, 69, 69, 69, 72, 
363
  73, 74, 75, 76, 69, 69, 69, 69, 
364
  69, 69, 82, 83, 84, 69, 85, 86, 
365
  87, 69, 69, 69, 69, 69, 89, 90, 
366
  91, 95, 69, 69, 69, 69, 73, 69, 
367
  71, 69, 69, 69, 69, 69, 69, 69, 
368
  69, 73, 74, 75, 76, 69, 69, 69, 
369
  69, 69, 69, 82, 83, 84, 69, 85, 
370
  86, 87, 69, 69, 69, 69, 69, 89, 
371
  90, 91, 95, 69, 69, 69, 69, 73, 
372
  69, 71, 69, 69, 69, 69, 69, 69, 
373
  69, 69, 73, 74, 75, 76, 69, 69, 
374
  69, 69, 69, 69, 69, 83, 84, 69, 
375
  85, 86, 87, 69, 69, 69, 69, 69, 
376
  89, 90, 91, 95, 69, 69, 69, 69, 
377
  73, 69, 71, 69, 69, 69, 69, 69, 
378
  69, 69, 69, 73, 74, 75, 76, 69, 
379
  69, 69, 69, 69, 69, 69, 69, 84, 
380
  69, 85, 86, 87, 69, 69, 69, 69, 
381
  69, 89, 90, 91, 95, 69, 69, 69, 
382
  69, 73, 69, 99, 69, 71, 69, 69, 
383
  69, 69, 69, 69, 69, 72, 73, 74, 
384
  75, 76, 69, 78, 79, 69, 69, 69, 
385
  82, 83, 84, 69, 85, 86, 87, 69, 
386
  69, 69, 69, 69, 89, 90, 91, 95, 
387
  69, 69, 69, 69, 73, 69, 71, 69, 
388
  69, 69, 69, 69, 69, 69, 69, 73, 
389
  74, 75, 76, 69, 69, 69, 69, 69, 
390
  69, 69, 69, 69, 69, 85, 86, 87, 
391
  69, 69, 69, 69, 69, 89, 90, 91, 
392
  95, 69, 69, 69, 69, 73, 69, 99, 
393
  69, 71, 69, 69, 69, 69, 69, 69, 
394
  69, 72, 73, 74, 75, 76, 69, 69, 
395
  79, 69, 69, 69, 82, 83, 84, 69, 
396
  85, 86, 87, 69, 69, 69, 69, 69, 
397
  89, 90, 91, 95, 69, 69, 69, 69, 
398
  73, 69, 99, 69, 71, 69, 69, 69, 
399
  69, 69, 69, 69, 72, 73, 74, 75, 
400
  76, 69, 69, 69, 69, 69, 69, 82, 
401
  83, 84, 69, 85, 86, 87, 69, 69, 
402
  69, 69, 69, 89, 90, 91, 95, 69, 
403
  69, 69, 69, 73, 69, 99, 69, 71, 
404
  69, 69, 69, 69, 69, 69, 69, 72, 
405
  73, 74, 75, 76, 77, 78, 79, 69, 
406
  69, 69, 82, 83, 84, 69, 85, 86, 
407
  87, 69, 69, 69, 69, 69, 89, 90, 
408
  91, 95, 69, 69, 69, 69, 73, 69, 
409
  4, 70, 69, 71, 69, 69, 69, 69, 
410
  69, 69, 69, 72, 73, 74, 75, 76, 
411
  77, 78, 79, 80, 69, 81, 82, 83, 
412
  84, 69, 85, 86, 87, 69, 69, 69, 
413
  69, 88, 89, 90, 91, 92, 69, 69, 
414
  69, 69, 93, 69, 69, 94, 69, 4, 
415
  100, 100, 100, 100, 100, 100, 100, 100, 
416
  100, 100, 100, 100, 101, 100, 4, 96, 
417
  96, 96, 96, 96, 96, 96, 96, 96, 
418
  96, 96, 96, 98, 96, 4, 69, 69, 
419
  69, 69, 69, 69, 69, 69, 69, 69, 
420
  69, 69, 71, 69, 69, 69, 69, 69, 
421
  69, 69, 69, 73, 74, 75, 76, 69, 
422
  69, 69, 69, 69, 69, 69, 69, 69, 
423
  69, 85, 86, 87, 69, 69, 69, 69, 
424
  69, 89, 90, 91, 95, 69, 101, 100, 
425
  103, 104, 102, 6, 105, 105, 105, 105, 
426
  105, 105, 105, 105, 105, 106, 105, 107, 
427
  108, 69, 71, 69, 69, 69, 69, 69, 
428
  69, 69, 109, 110, 111, 112, 113, 114, 
429
  115, 116, 117, 107, 118, 119, 120, 121, 
430
  69, 122, 123, 124, 69, 59, 60, 69, 
431
  125, 126, 127, 128, 129, 69, 69, 69, 
432
  69, 130, 69, 69, 131, 69, 107, 108, 
433
  69, 71, 69, 69, 69, 69, 69, 69, 
434
  69, 109, 110, 111, 112, 113, 114, 115, 
435
  116, 117, 107, 118, 119, 120, 121, 69, 
436
  122, 123, 124, 69, 69, 69, 69, 125, 
437
  126, 127, 128, 129, 69, 69, 69, 69, 
438
  130, 69, 69, 131, 69, 107, 69, 69, 
439
  69, 69, 69, 69, 69, 69, 69, 69, 
440
  69, 69, 71, 69, 69, 69, 69, 69, 
441
  69, 69, 69, 110, 111, 112, 113, 69, 
442
  69, 69, 69, 69, 69, 69, 69, 69, 
443
  69, 122, 123, 124, 69, 69, 69, 69, 
444
  69, 126, 127, 128, 132, 69, 69, 69, 
445
  69, 110, 69, 71, 69, 69, 69, 69, 
446
  69, 69, 69, 69, 110, 111, 112, 113, 
447
  69, 69, 69, 69, 69, 69, 69, 69, 
448
  69, 69, 122, 123, 124, 69, 69, 69, 
449
  69, 69, 126, 127, 128, 132, 69, 71, 
450
  69, 69, 69, 69, 69, 69, 69, 69, 
451
  69, 111, 112, 113, 69, 69, 69, 69, 
452
  69, 69, 69, 69, 69, 69, 69, 69, 
453
  69, 69, 69, 69, 69, 69, 126, 127, 
454
  128, 69, 71, 69, 69, 69, 69, 69, 
455
  69, 69, 69, 69, 69, 112, 113, 69, 
456
  69, 69, 69, 69, 69, 69, 69, 69, 
457
  69, 69, 69, 69, 69, 69, 69, 69, 
458
  69, 126, 127, 128, 69, 71, 69, 69, 
459
  69, 69, 69, 69, 69, 69, 69, 69, 
460
  69, 113, 69, 69, 69, 69, 69, 69, 
461
  69, 69, 69, 69, 69, 69, 69, 69, 
462
  69, 69, 69, 69, 126, 127, 128, 69, 
463
  71, 69, 69, 69, 69, 69, 69, 69, 
464
  69, 69, 69, 69, 69, 69, 69, 69, 
465
  69, 69, 69, 69, 69, 69, 69, 69, 
466
  69, 69, 69, 69, 69, 69, 69, 126, 
467
  127, 69, 71, 69, 69, 69, 69, 69, 
468
  69, 69, 69, 69, 69, 69, 69, 69, 
469
  69, 69, 69, 69, 69, 69, 69, 69, 
470
  69, 69, 69, 69, 69, 69, 69, 69, 
471
  69, 69, 127, 69, 71, 69, 71, 69, 
472
  69, 69, 69, 69, 69, 69, 69, 69, 
473
  111, 112, 113, 69, 69, 69, 69, 69, 
474
  69, 69, 69, 69, 69, 122, 123, 124, 
475
  69, 69, 69, 69, 69, 126, 127, 128, 
476
  132, 69, 71, 69, 69, 69, 69, 69, 
477
  69, 69, 69, 69, 111, 112, 113, 69, 
478
  69, 69, 69, 69, 69, 69, 69, 69, 
479
  69, 69, 123, 124, 69, 69, 69, 69, 
480
  69, 126, 127, 128, 132, 69, 71, 69, 
481
  69, 69, 69, 69, 69, 69, 69, 69, 
482
  111, 112, 113, 69, 69, 69, 69, 69, 
483
  69, 69, 69, 69, 69, 69, 69, 124, 
484
  69, 69, 69, 69, 69, 126, 127, 128, 
485
  132, 69, 133, 96, 96, 96, 96, 96, 
486
  96, 96, 96, 96, 96, 96, 96, 98, 
487
  96, 71, 69, 69, 69, 69, 69, 69, 
488
  69, 69, 69, 111, 112, 113, 69, 69, 
489
  69, 69, 69, 69, 69, 69, 69, 69, 
490
  69, 69, 69, 69, 69, 69, 69, 69, 
491
  126, 127, 128, 132, 69, 71, 69, 69, 
492
  69, 69, 69, 69, 69, 109, 110, 111, 
493
  112, 113, 69, 69, 69, 69, 69, 69, 
494
  119, 120, 121, 69, 122, 123, 124, 69, 
495
  69, 69, 69, 69, 126, 127, 128, 132, 
496
  69, 69, 69, 69, 110, 69, 71, 69, 
497
  69, 69, 69, 69, 69, 69, 69, 110, 
498
  111, 112, 113, 69, 69, 69, 69, 69, 
499
  69, 119, 120, 121, 69, 122, 123, 124, 
500
  69, 69, 69, 69, 69, 126, 127, 128, 
501
  132, 69, 69, 69, 69, 110, 69, 71, 
502
  69, 69, 69, 69, 69, 69, 69, 69, 
503
  110, 111, 112, 113, 69, 69, 69, 69, 
504
  69, 69, 69, 120, 121, 69, 122, 123, 
505
  124, 69, 69, 69, 69, 69, 126, 127, 
506
  128, 132, 69, 69, 69, 69, 110, 69, 
507
  71, 69, 69, 69, 69, 69, 69, 69, 
508
  69, 110, 111, 112, 113, 69, 69, 69, 
509
  69, 69, 69, 69, 69, 121, 69, 122, 
510
  123, 124, 69, 69, 69, 69, 69, 126, 
511
  127, 128, 132, 69, 69, 69, 69, 110, 
512
  69, 134, 69, 71, 69, 69, 69, 69, 
513
  69, 69, 69, 109, 110, 111, 112, 113, 
514
  69, 115, 116, 69, 69, 69, 119, 120, 
515
  121, 69, 122, 123, 124, 69, 69, 69, 
516
  69, 69, 126, 127, 128, 132, 69, 69, 
517
  69, 69, 110, 69, 71, 69, 69, 69, 
518
  69, 69, 69, 69, 69, 110, 111, 112, 
519
  113, 69, 69, 69, 69, 69, 69, 69, 
520
  69, 69, 69, 122, 123, 124, 69, 69, 
521
  69, 69, 69, 126, 127, 128, 132, 69, 
522
  69, 69, 69, 110, 69, 134, 69, 71, 
523
  69, 69, 69, 69, 69, 69, 69, 109, 
524
  110, 111, 112, 113, 69, 69, 116, 69, 
525
  69, 69, 119, 120, 121, 69, 122, 123, 
526
  124, 69, 69, 69, 69, 69, 126, 127, 
527
  128, 132, 69, 69, 69, 69, 110, 69, 
528
  134, 69, 71, 69, 69, 69, 69, 69, 
529
  69, 69, 109, 110, 111, 112, 113, 69, 
530
  69, 69, 69, 69, 69, 119, 120, 121, 
531
  69, 122, 123, 124, 69, 69, 69, 69, 
532
  69, 126, 127, 128, 132, 69, 69, 69, 
533
  69, 110, 69, 134, 69, 71, 69, 69, 
534
  69, 69, 69, 69, 69, 109, 110, 111, 
535
  112, 113, 114, 115, 116, 69, 69, 69, 
536
  119, 120, 121, 69, 122, 123, 124, 69, 
537
  69, 69, 69, 69, 126, 127, 128, 132, 
538
  69, 69, 69, 69, 110, 69, 107, 108, 
539
  69, 71, 69, 69, 69, 69, 69, 69, 
540
  69, 109, 110, 111, 112, 113, 114, 115, 
541
  116, 117, 69, 118, 119, 120, 121, 69, 
542
  122, 123, 124, 69, 69, 69, 69, 125, 
543
  126, 127, 128, 129, 69, 69, 69, 69, 
544
  130, 69, 69, 131, 69, 107, 100, 100, 
545
  100, 100, 100, 100, 100, 100, 100, 100, 
546
  100, 100, 101, 100, 107, 96, 96, 96, 
547
  96, 96, 96, 96, 96, 96, 96, 96, 
548
  96, 98, 96, 107, 69, 69, 69, 69, 
549
  69, 69, 69, 69, 69, 69, 69, 69, 
550
  71, 69, 69, 69, 69, 69, 69, 69, 
551
  69, 110, 111, 112, 113, 69, 69, 69, 
552
  69, 69, 69, 69, 69, 69, 69, 122, 
553
  123, 124, 69, 69, 69, 69, 69, 126, 
554
  127, 128, 132, 69, 101, 100, 8, 9, 
555
  135, 11, 135, 135, 135, 135, 135, 135, 
556
  135, 13, 14, 15, 16, 17, 18, 19, 
557
  20, 21, 8, 22, 23, 24, 25, 135, 
558
  26, 27, 28, 135, 135, 135, 135, 32, 
559
  33, 34, 38, 32, 135, 135, 135, 135, 
560
  37, 135, 135, 38, 135, 8, 135, 135, 
561
  135, 135, 135, 135, 135, 135, 135, 135, 
562
  135, 135, 11, 135, 135, 135, 135, 135, 
563
  135, 135, 135, 14, 15, 16, 17, 135, 
564
  135, 135, 135, 135, 135, 135, 135, 135, 
565
  135, 26, 27, 28, 135, 135, 135, 135, 
566
  135, 33, 34, 38, 136, 135, 135, 135, 
567
  135, 14, 135, 11, 135, 135, 135, 135, 
568
  135, 135, 135, 135, 14, 15, 16, 17, 
569
  135, 135, 135, 135, 135, 135, 135, 135, 
570
  135, 135, 26, 27, 28, 135, 135, 135, 
571
  135, 135, 33, 34, 38, 136, 135, 11, 
572
  135, 135, 135, 135, 135, 135, 135, 135, 
573
  135, 15, 16, 17, 135, 135, 135, 135, 
574
  135, 135, 135, 135, 135, 135, 135, 135, 
575
  135, 135, 135, 135, 135, 135, 33, 34, 
576
  38, 135, 11, 135, 135, 135, 135, 135, 
577
  135, 135, 135, 135, 135, 16, 17, 135, 
578
  135, 135, 135, 135, 135, 135, 135, 135, 
579
  135, 135, 135, 135, 135, 135, 135, 135, 
580
  135, 33, 34, 38, 135, 11, 135, 135, 
581
  135, 135, 135, 135, 135, 135, 135, 135, 
582
  135, 17, 135, 135, 135, 135, 135, 135, 
583
  135, 135, 135, 135, 135, 135, 135, 135, 
584
  135, 135, 135, 135, 33, 34, 38, 135, 
585
  11, 135, 135, 135, 135, 135, 135, 135, 
586
  135, 135, 135, 135, 135, 135, 135, 135, 
587
  135, 135, 135, 135, 135, 135, 135, 135, 
588
  135, 135, 135, 135, 135, 135, 135, 33, 
589
  34, 135, 11, 135, 135, 135, 135, 135, 
590
  135, 135, 135, 135, 135, 135, 135, 135, 
591
  135, 135, 135, 135, 135, 135, 135, 135, 
592
  135, 135, 135, 135, 135, 135, 135, 135, 
593
  135, 135, 34, 135, 11, 137, 11, 135, 
594
  135, 135, 135, 135, 135, 135, 135, 135, 
595
  15, 16, 17, 135, 135, 135, 135, 135, 
596
  135, 135, 135, 135, 135, 26, 27, 28, 
597
  135, 135, 135, 135, 135, 33, 34, 38, 
598
  136, 135, 11, 135, 135, 135, 135, 135, 
599
  135, 135, 135, 135, 15, 16, 17, 135, 
600
  135, 135, 135, 135, 135, 135, 135, 135, 
601
  135, 135, 27, 28, 135, 135, 135, 135, 
602
  135, 33, 34, 38, 136, 135, 11, 135, 
603
  135, 135, 135, 135, 135, 135, 135, 135, 
604
  15, 16, 17, 135, 135, 135, 135, 135, 
605
  135, 135, 135, 135, 135, 135, 135, 28, 
606
  135, 135, 135, 135, 135, 33, 34, 38, 
607
  136, 135, 138, 135, 135, 135, 135, 135, 
608
  135, 135, 135, 135, 135, 135, 135, 11, 
609
  135, 11, 135, 135, 135, 135, 135, 135, 
610
  135, 135, 135, 15, 16, 17, 135, 135, 
611
  135, 135, 135, 135, 135, 135, 135, 135, 
612
  135, 135, 135, 135, 135, 135, 135, 135, 
613
  33, 34, 38, 136, 135, 11, 135, 135, 
614
  135, 135, 135, 135, 135, 13, 14, 15, 
615
  16, 17, 135, 135, 135, 135, 135, 135, 
616
  23, 24, 25, 135, 26, 27, 28, 135, 
617
  135, 135, 135, 135, 33, 34, 38, 136, 
618
  135, 135, 135, 135, 14, 135, 11, 135, 
619
  135, 135, 135, 135, 135, 135, 135, 14, 
620
  15, 16, 17, 135, 135, 135, 135, 135, 
621
  135, 23, 24, 25, 135, 26, 27, 28, 
622
  135, 135, 135, 135, 135, 33, 34, 38, 
623
  136, 135, 135, 135, 135, 14, 135, 11, 
624
  135, 135, 135, 135, 135, 135, 135, 135, 
625
  14, 15, 16, 17, 135, 135, 135, 135, 
626
  135, 135, 135, 24, 25, 135, 26, 27, 
627
  28, 135, 135, 135, 135, 135, 33, 34, 
628
  38, 136, 135, 135, 135, 135, 14, 135, 
629
  11, 135, 135, 135, 135, 135, 135, 135, 
630
  135, 14, 15, 16, 17, 135, 135, 135, 
631
  135, 135, 135, 135, 135, 25, 135, 26, 
632
  27, 28, 135, 135, 135, 135, 135, 33, 
633
  34, 38, 136, 135, 135, 135, 135, 14, 
634
  135, 139, 135, 11, 135, 135, 135, 135, 
635
  135, 135, 135, 13, 14, 15, 16, 17, 
636
  135, 19, 20, 135, 135, 135, 23, 24, 
637
  25, 135, 26, 27, 28, 135, 135, 135, 
638
  135, 135, 33, 34, 38, 136, 135, 135, 
639
  135, 135, 14, 135, 11, 135, 135, 135, 
640
  135, 135, 135, 135, 135, 14, 15, 16, 
641
  17, 135, 135, 135, 135, 135, 135, 135, 
642
  135, 135, 135, 26, 27, 28, 135, 135, 
643
  135, 135, 135, 33, 34, 38, 136, 135, 
644
  135, 135, 135, 14, 135, 139, 135, 11, 
645
  135, 135, 135, 135, 135, 135, 135, 13, 
646
  14, 15, 16, 17, 135, 135, 20, 135, 
647
  135, 135, 23, 24, 25, 135, 26, 27, 
648
  28, 135, 135, 135, 135, 135, 33, 34, 
649
  38, 136, 135, 135, 135, 135, 14, 135, 
650
  139, 135, 11, 135, 135, 135, 135, 135, 
651
  135, 135, 13, 14, 15, 16, 17, 135, 
652
  135, 135, 135, 135, 135, 23, 24, 25, 
653
  135, 26, 27, 28, 135, 135, 135, 135, 
654
  135, 33, 34, 38, 136, 135, 135, 135, 
655
  135, 14, 135, 139, 135, 11, 135, 135, 
656
  135, 135, 135, 135, 135, 13, 14, 15, 
657
  16, 17, 18, 19, 20, 135, 135, 135, 
658
  23, 24, 25, 135, 26, 27, 28, 135, 
659
  135, 135, 135, 135, 33, 34, 38, 136, 
660
  135, 135, 135, 135, 14, 135, 8, 9, 
661
  135, 11, 135, 135, 135, 135, 135, 135, 
662
  135, 13, 14, 15, 16, 17, 18, 19, 
663
  20, 21, 135, 22, 23, 24, 25, 135, 
664
  26, 27, 28, 135, 135, 135, 135, 32, 
665
  33, 34, 38, 32, 135, 135, 135, 135, 
666
  37, 135, 135, 38, 135, 8, 135, 135, 
667
  135, 135, 135, 135, 135, 135, 135, 135, 
668
  135, 135, 11, 135, 8, 135, 135, 135, 
669
  135, 135, 135, 135, 135, 135, 135, 135, 
670
  135, 11, 135, 135, 135, 135, 135, 135, 
671
  135, 135, 14, 15, 16, 17, 135, 135, 
672
  135, 135, 135, 135, 135, 135, 135, 135, 
673
  26, 27, 28, 135, 135, 135, 135, 135, 
674
  33, 34, 38, 136, 135, 140, 135, 135, 
675
  135, 135, 135, 135, 135, 135, 135, 11, 
676
  135, 10, 11, 135, 4, 135, 135, 135, 
677
  4, 135, 135, 135, 135, 135, 8, 9, 
678
  10, 11, 135, 135, 135, 135, 135, 135, 
679
  135, 13, 14, 15, 16, 17, 18, 19, 
680
  20, 21, 8, 22, 23, 24, 25, 135, 
681
  26, 27, 28, 135, 29, 30, 135, 32, 
682
  33, 34, 38, 32, 135, 135, 135, 135, 
683
  37, 135, 135, 38, 135, 11, 135, 135, 
684
  135, 135, 135, 135, 135, 135, 135, 135, 
685
  135, 135, 135, 135, 135, 135, 135, 135, 
686
  135, 135, 135, 135, 135, 135, 135, 135, 
687
  29, 30, 135, 11, 135, 135, 135, 135, 
688
  135, 135, 135, 135, 135, 135, 135, 135, 
689
  135, 135, 135, 135, 135, 135, 135, 135, 
690
  135, 135, 135, 135, 135, 135, 135, 30, 
691
  135, 4, 141, 141, 141, 4, 141, 143, 
692
  142, 142, 142, 142, 142, 142, 142, 142, 
693
  142, 142, 142, 142, 142, 142, 142, 142, 
694
  142, 142, 142, 142, 142, 142, 142, 142, 
695
  142, 142, 142, 142, 142, 142, 142, 142, 
696
  142, 142, 142, 144, 142, 145, 142, 145, 
697
  146, 142, 143, 142, 142, 142, 142, 142, 
698
  142, 142, 142, 142, 142, 142, 142, 142, 
699
  142, 142, 142, 142, 142, 142, 142, 142, 
700
  142, 142, 142, 142, 142, 142, 142, 142, 
701
  142, 142, 142, 142, 142, 1, 144, 144, 
702
  142, 143, 142, 142, 142, 142, 142, 142, 
703
  142, 142, 142, 142, 142, 142, 142, 142, 
704
  142, 142, 142, 142, 142, 142, 142, 142, 
705
  142, 142, 142, 142, 142, 142, 142, 142, 
706
  142, 142, 142, 142, 142, 144, 142, 145, 
707
  142, 143, 142, 142, 142, 142, 142, 142, 
708
  142, 142, 142, 142, 142, 142, 142, 142, 
709
  142, 142, 142, 142, 142, 142, 142, 142, 
710
  142, 142, 142, 142, 142, 142, 142, 142, 
711
  142, 142, 142, 142, 142, 144, 142, 145, 
712
  142, 145, 142, 40, 41, 39, 42, 39, 
713
  39, 39, 39, 39, 39, 39, 43, 44, 
714
  45, 46, 47, 48, 49, 50, 51, 40, 
715
  52, 53, 54, 55, 39, 56, 57, 58, 
716
  39, 59, 60, 39, 61, 62, 63, 64, 
717
  61, 1, 39, 2, 39, 65, 39, 39, 
718
  64, 39, 0
719
};
720
721
static const char _use_syllable_machine_trans_targs[] = {
722
  1, 122, 0, 2, 31, 1, 59, 61, 
723
  90, 91, 116, 1, 118, 104, 92, 93, 
724
  94, 95, 108, 110, 111, 112, 113, 105, 
725
  106, 107, 99, 100, 101, 119, 120, 121, 
726
  114, 96, 97, 98, 126, 115, 98, 1, 
727
  3, 4, 1, 17, 5, 6, 7, 8, 
728
  21, 23, 24, 25, 26, 18, 19, 20, 
729
  12, 13, 14, 29, 30, 27, 9, 10, 
730
  11, 28, 15, 16, 22, 1, 32, 1, 
731
  45, 33, 34, 35, 36, 49, 51, 52, 
732
  53, 54, 46, 47, 48, 40, 41, 42, 
733
  55, 37, 38, 39, 56, 57, 58, 43, 
734
  1, 44, 1, 50, 1, 1, 1, 60, 
735
  1, 1, 1, 62, 63, 76, 64, 65, 
736
  66, 67, 80, 82, 83, 84, 85, 77, 
737
  78, 79, 71, 72, 73, 86, 68, 69, 
738
  70, 87, 88, 89, 74, 75, 81, 1, 
739
  102, 1, 103, 109, 117, 1, 1, 1, 
740
  123, 124, 125
741
};
742
743
static const char _use_syllable_machine_trans_actions[] = {
744
  1, 0, 0, 0, 0, 4, 0, 0, 
745
  0, 0, 0, 5, 0, 0, 0, 0, 
746
  0, 0, 0, 0, 0, 0, 0, 0, 
747
  0, 0, 0, 0, 0, 0, 0, 0, 
748
  0, 0, 0, 6, 7, 0, 8, 9, 
749
  0, 0, 10, 0, 0, 0, 0, 0, 
750
  0, 0, 0, 0, 0, 0, 0, 0, 
751
  0, 0, 0, 0, 0, 0, 0, 0, 
752
  0, 0, 0, 0, 0, 11, 0, 12, 
753
  0, 0, 0, 0, 0, 0, 0, 0, 
754
  0, 0, 0, 0, 0, 0, 0, 0, 
755
  0, 0, 0, 0, 0, 0, 0, 0, 
756
  13, 0, 14, 0, 15, 16, 17, 0, 
757
  18, 19, 20, 0, 0, 0, 0, 0, 
758
  0, 0, 0, 0, 0, 0, 0, 0, 
759
  0, 0, 0, 0, 0, 0, 0, 0, 
760
  0, 0, 0, 0, 0, 0, 0, 21, 
761
  0, 22, 0, 0, 0, 23, 24, 25, 
762
  0, 0, 0
763
};
764
765
static const char _use_syllable_machine_to_state_actions[] = {
766
  0, 2, 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, 0
782
};
783
784
static const char _use_syllable_machine_from_state_actions[] = {
785
  0, 3, 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, 0
801
};
802
803
static const short _use_syllable_machine_eof_trans[] = {
804
  1, 0, 40, 40, 40, 40, 40, 40, 
805
  40, 40, 40, 40, 40, 40, 40, 40, 
806
  40, 40, 40, 40, 40, 40, 40, 40, 
807
  40, 40, 40, 40, 40, 40, 40, 70, 
808
  70, 70, 70, 70, 70, 70, 70, 70, 
809
  70, 70, 70, 97, 70, 70, 70, 70, 
810
  70, 70, 70, 70, 70, 70, 70, 101, 
811
  97, 70, 101, 103, 106, 70, 70, 70, 
812
  70, 70, 70, 70, 70, 70, 70, 70, 
813
  70, 70, 97, 70, 70, 70, 70, 70, 
814
  70, 70, 70, 70, 70, 70, 101, 97, 
815
  70, 101, 136, 136, 136, 136, 136, 136, 
816
  136, 136, 138, 136, 136, 136, 136, 136, 
817
  136, 136, 136, 136, 136, 136, 136, 136, 
818
  136, 136, 136, 136, 136, 136, 136, 136, 
819
  136, 142, 143, 143, 143, 143, 40
820
};
821
822
static const int use_syllable_machine_start = 1;
823
static const int use_syllable_machine_first_final = 1;
824
static const int use_syllable_machine_error = -1;
825
826
static const int use_syllable_machine_en_main = 1;
827
828
829
#line 58 "hb-ot-shaper-use-machine.rl"
830
831
832
833
#line 186 "hb-ot-shaper-use-machine.rl"
834
835
836
#define found_syllable(syllable_type) \
837
0
  HB_STMT_START { \
838
0
    if (0) fprintf (stderr, "syllable %u..%u %s\n", (*ts).second.first, (*te).second.first, #syllable_type); \
839
0
    for (unsigned i = (*ts).second.first; i < (*te).second.first; ++i) \
840
0
      info[i].syllable() = (syllable_serial << 4) | syllable_type; \
841
0
    syllable_serial++; \
842
0
    if (syllable_serial == 16) syllable_serial = 1; \
843
0
  } 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
0
  machine_index_t (const Iter& it) : it (it) {}
852
0
  machine_index_t (const machine_index_t& o) : hb_iter_with_fallback_t<machine_index_t<Iter>,
853
0
                       typename Iter::item_t> (),
854
0
                 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
0
  typename Iter::item_t __item__ () const { return *it; }
860
  typename Iter::item_t __item_at__ (unsigned i) const { return it[i]; }
861
0
  unsigned __len__ () const { return it.len (); }
862
0
  void __next__ () { ++it; }
863
0
  void __forward__ (unsigned n) { it += n; }
864
0
  void __prev__ () { --it; }
865
0
  void __rewind__ (unsigned n) { it -= n; }
866
867
  void operator = (unsigned n)
868
0
  {
869
0
    assert (n == 0);
870
0
    is_null = true;
871
0
  }
872
  explicit operator bool () { return !is_null; }
873
874
  void operator = (const machine_index_t& o)
875
0
  {
876
0
    is_null = o.is_null;
877
0
    unsigned index = (*it).first;
878
0
    unsigned n = (*o.it).first;
879
0
    if (index < n) it += n - index; else if (index > n) it -= index - n;
880
0
  }
881
  bool operator == (const machine_index_t& o) const
882
0
  { return is_null ? o.is_null : !o.is_null && (*it).first == (*o.it).first; }
883
0
  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
0
  { 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
0
{ return i.use_category() != USE(CGJ); }
904
905
static inline void
906
find_syllables_use (hb_buffer_t *buffer)
907
0
{
908
0
  hb_glyph_info_t *info = buffer->info;
909
0
  auto p =
910
0
    + hb_iter (info, buffer->len)
911
0
    | hb_enumerate
912
0
    | hb_filter ([] (const hb_glyph_info_t &i) { return not_ccs_default_ignorable (i); },
913
0
     hb_second)
914
0
    | hb_filter ([&] (const hb_pair_t<unsigned, const hb_glyph_info_t &> p)
915
0
     {
916
0
       if (p.second.use_category() == USE(ZWNJ))
917
0
         for (unsigned i = p.first + 1; i < buffer->len; ++i)
918
0
           if (not_ccs_default_ignorable (info[i]))
919
0
       return !_hb_glyph_info_is_unicode_mark (&info[i]);
920
0
       return true;
921
0
     })
922
0
    | hb_enumerate
923
0
    | machine_index
924
0
    ;
925
0
  auto pe = p + p.len ();
926
0
  auto eof = +pe;
927
0
  auto ts = +p;
928
0
  auto te = +p;
929
0
  unsigned int act HB_UNUSED;
930
0
  int cs;
931
  
932
0
#line 933 "hb-ot-shaper-use-machine.hh"
933
0
  {
934
0
  cs = use_syllable_machine_start;
935
0
  ts = 0;
936
0
  te = 0;
937
0
  act = 0;
938
0
  }
939
940
0
#line 286 "hb-ot-shaper-use-machine.rl"
941
942
943
0
  unsigned int syllable_serial = 1;
944
  
945
0
#line 946 "hb-ot-shaper-use-machine.hh"
946
0
  {
947
0
  int _slen;
948
0
  int _trans;
949
0
  const unsigned char *_keys;
950
0
  const unsigned char *_inds;
951
0
  if ( p == pe )
952
0
    goto _test_eof;
953
0
_resume:
954
0
  switch ( _use_syllable_machine_from_state_actions[cs] ) {
955
0
  case 3:
956
0
#line 1 "NONE"
957
0
  {ts = p;}
958
0
  break;
959
0
#line 960 "hb-ot-shaper-use-machine.hh"
960
0
  }
961
962
0
  _keys = _use_syllable_machine_trans_keys + (cs<<1);
963
0
  _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
964
965
0
  _slen = _use_syllable_machine_key_spans[cs];
966
0
  _trans = _inds[ _slen > 0 && _keys[0] <=( (*p).second.second.use_category()) &&
967
0
    ( (*p).second.second.use_category()) <= _keys[1] ?
968
0
    ( (*p).second.second.use_category()) - _keys[0] : _slen ];
969
970
0
_eof_trans:
971
0
  cs = _use_syllable_machine_trans_targs[_trans];
972
973
0
  if ( _use_syllable_machine_trans_actions[_trans] == 0 )
974
0
    goto _again;
975
976
0
  switch ( _use_syllable_machine_trans_actions[_trans] ) {
977
0
  case 7:
978
0
#line 1 "NONE"
979
0
  {te = p+1;}
980
0
  break;
981
0
  case 16:
982
0
#line 173 "hb-ot-shaper-use-machine.rl"
983
0
  {te = p+1;{ found_syllable (use_virama_terminated_cluster); }}
984
0
  break;
985
0
  case 14:
986
0
#line 174 "hb-ot-shaper-use-machine.rl"
987
0
  {te = p+1;{ found_syllable (use_sakot_terminated_cluster); }}
988
0
  break;
989
0
  case 12:
990
0
#line 175 "hb-ot-shaper-use-machine.rl"
991
0
  {te = p+1;{ found_syllable (use_standard_cluster); }}
992
0
  break;
993
0
  case 20:
994
0
#line 176 "hb-ot-shaper-use-machine.rl"
995
0
  {te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }}
996
0
  break;
997
0
  case 18:
998
0
#line 177 "hb-ot-shaper-use-machine.rl"
999
0
  {te = p+1;{ found_syllable (use_numeral_cluster); }}
1000
0
  break;
1001
0
  case 10:
1002
0
#line 178 "hb-ot-shaper-use-machine.rl"
1003
0
  {te = p+1;{ found_syllable (use_symbol_cluster); }}
1004
0
  break;
1005
0
  case 25:
1006
0
#line 179 "hb-ot-shaper-use-machine.rl"
1007
0
  {te = p+1;{ found_syllable (use_hieroglyph_cluster); }}
1008
0
  break;
1009
0
  case 5:
1010
0
#line 181 "hb-ot-shaper-use-machine.rl"
1011
0
  {te = p+1;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1012
0
  break;
1013
0
  case 4:
1014
0
#line 182 "hb-ot-shaper-use-machine.rl"
1015
0
  {te = p+1;{ found_syllable (use_non_cluster); }}
1016
0
  break;
1017
0
  case 15:
1018
0
#line 173 "hb-ot-shaper-use-machine.rl"
1019
0
  {te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
1020
0
  break;
1021
0
  case 13:
1022
0
#line 174 "hb-ot-shaper-use-machine.rl"
1023
0
  {te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
1024
0
  break;
1025
0
  case 11:
1026
0
#line 175 "hb-ot-shaper-use-machine.rl"
1027
0
  {te = p;p--;{ found_syllable (use_standard_cluster); }}
1028
0
  break;
1029
0
  case 19:
1030
0
#line 176 "hb-ot-shaper-use-machine.rl"
1031
0
  {te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
1032
0
  break;
1033
0
  case 17:
1034
0
#line 177 "hb-ot-shaper-use-machine.rl"
1035
0
  {te = p;p--;{ found_syllable (use_numeral_cluster); }}
1036
0
  break;
1037
0
  case 9:
1038
0
#line 178 "hb-ot-shaper-use-machine.rl"
1039
0
  {te = p;p--;{ found_syllable (use_symbol_cluster); }}
1040
0
  break;
1041
0
  case 24:
1042
0
#line 179 "hb-ot-shaper-use-machine.rl"
1043
0
  {te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
1044
0
  break;
1045
0
  case 21:
1046
0
#line 181 "hb-ot-shaper-use-machine.rl"
1047
0
  {te = p;p--;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1048
0
  break;
1049
0
  case 23:
1050
0
#line 182 "hb-ot-shaper-use-machine.rl"
1051
0
  {te = p;p--;{ found_syllable (use_non_cluster); }}
1052
0
  break;
1053
0
  case 1:
1054
0
#line 178 "hb-ot-shaper-use-machine.rl"
1055
0
  {{p = ((te))-1;}{ found_syllable (use_symbol_cluster); }}
1056
0
  break;
1057
0
  case 22:
1058
0
#line 1 "NONE"
1059
0
  { switch( act ) {
1060
0
  case 8:
1061
0
  {{p = ((te))-1;} found_syllable (use_non_cluster); }
1062
0
  break;
1063
0
  case 9:
1064
0
  {{p = ((te))-1;} found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }
1065
0
  break;
1066
0
  }
1067
0
  }
1068
0
  break;
1069
0
  case 6:
1070
0
#line 1 "NONE"
1071
0
  {te = p+1;}
1072
0
#line 180 "hb-ot-shaper-use-machine.rl"
1073
0
  {act = 8;}
1074
0
  break;
1075
0
  case 8:
1076
0
#line 1 "NONE"
1077
0
  {te = p+1;}
1078
0
#line 181 "hb-ot-shaper-use-machine.rl"
1079
0
  {act = 9;}
1080
0
  break;
1081
0
#line 1082 "hb-ot-shaper-use-machine.hh"
1082
0
  }
1083
1084
0
_again:
1085
0
  switch ( _use_syllable_machine_to_state_actions[cs] ) {
1086
0
  case 2:
1087
0
#line 1 "NONE"
1088
0
  {ts = 0;}
1089
0
  break;
1090
0
#line 1091 "hb-ot-shaper-use-machine.hh"
1091
0
  }
1092
1093
0
  if ( ++p != pe )
1094
0
    goto _resume;
1095
0
  _test_eof: {}
1096
0
  if ( p == eof )
1097
0
  {
1098
0
  if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
1099
0
    _trans = _use_syllable_machine_eof_trans[cs] - 1;
1100
0
    goto _eof_trans;
1101
0
  }
1102
0
  }
1103
1104
0
  }
1105
1106
0
#line 291 "hb-ot-shaper-use-machine.rl"
1107
1108
0
}
1109
1110
#undef found_syllable
1111
1112
#endif /* HB_OT_SHAPER_USE_MACHINE_HH */