xref: /aosp_15_r20/external/harfbuzz_ng/src/hb-ot-shaper-use-machine.hh (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
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 #define use_category() ot_shaper_var_u8_category()
40 
41 #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 #define use_syllable_machine_ex_B 1u
58 #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 #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 #define use_syllable_machine_ex_HVM 53u
75 #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 #define use_syllable_machine_ex_O 0u
83 #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 #define use_syllable_machine_ex_VPre 22u
98 #define use_syllable_machine_ex_VPst 35u
99 #define use_syllable_machine_ex_WJ 16u
100 #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, 35, 5, 39, 40,
170 	38, 41, 38, 38, 38, 38, 38, 38,
171 	38, 42, 43, 44, 45, 46, 47, 48,
172 	49, 50, 39, 51, 52, 53, 54, 38,
173 	55, 56, 57, 38, 58, 59, 38, 60,
174 	61, 62, 63, 60, 38, 38, 38, 38,
175 	64, 38, 38, 63, 38, 39, 40, 38,
176 	41, 38, 38, 38, 38, 38, 38, 38,
177 	42, 43, 44, 45, 46, 47, 48, 49,
178 	50, 39, 51, 52, 53, 54, 38, 55,
179 	56, 57, 38, 38, 38, 38, 60, 61,
180 	62, 63, 60, 38, 38, 38, 38, 64,
181 	38, 38, 63, 38, 39, 38, 38, 38,
182 	38, 38, 38, 38, 38, 38, 38, 38,
183 	38, 41, 38, 38, 38, 38, 38, 38,
184 	38, 38, 43, 44, 45, 46, 38, 38,
185 	38, 38, 38, 38, 38, 38, 38, 38,
186 	55, 56, 57, 38, 38, 38, 38, 38,
187 	61, 62, 63, 65, 38, 38, 38, 38,
188 	43, 38, 41, 38, 38, 38, 38, 38,
189 	38, 38, 38, 43, 44, 45, 46, 38,
190 	38, 38, 38, 38, 38, 38, 38, 38,
191 	38, 55, 56, 57, 38, 38, 38, 38,
192 	38, 61, 62, 63, 65, 38, 41, 38,
193 	38, 38, 38, 38, 38, 38, 38, 38,
194 	44, 45, 46, 38, 38, 38, 38, 38,
195 	38, 38, 38, 38, 38, 38, 38, 38,
196 	38, 38, 38, 38, 38, 61, 62, 63,
197 	38, 41, 38, 38, 38, 38, 38, 38,
198 	38, 38, 38, 38, 45, 46, 38, 38,
199 	38, 38, 38, 38, 38, 38, 38, 38,
200 	38, 38, 38, 38, 38, 38, 38, 38,
201 	61, 62, 63, 38, 41, 38, 38, 38,
202 	38, 38, 38, 38, 38, 38, 38, 38,
203 	46, 38, 38, 38, 38, 38, 38, 38,
204 	38, 38, 38, 38, 38, 38, 38, 38,
205 	38, 38, 38, 61, 62, 63, 38, 41,
206 	38, 38, 38, 38, 38, 38, 38, 38,
207 	38, 38, 38, 38, 38, 38, 38, 38,
208 	38, 38, 38, 38, 38, 38, 38, 38,
209 	38, 38, 38, 38, 38, 38, 61, 62,
210 	38, 41, 38, 38, 38, 38, 38, 38,
211 	38, 38, 38, 38, 38, 38, 38, 38,
212 	38, 38, 38, 38, 38, 38, 38, 38,
213 	38, 38, 38, 38, 38, 38, 38, 38,
214 	38, 62, 38, 41, 38, 41, 38, 38,
215 	38, 38, 38, 38, 38, 38, 38, 44,
216 	45, 46, 38, 38, 38, 38, 38, 38,
217 	38, 38, 38, 38, 55, 56, 57, 38,
218 	38, 38, 38, 38, 61, 62, 63, 65,
219 	38, 41, 38, 38, 38, 38, 38, 38,
220 	38, 38, 38, 44, 45, 46, 38, 38,
221 	38, 38, 38, 38, 38, 38, 38, 38,
222 	38, 56, 57, 38, 38, 38, 38, 38,
223 	61, 62, 63, 65, 38, 41, 38, 38,
224 	38, 38, 38, 38, 38, 38, 38, 44,
225 	45, 46, 38, 38, 38, 38, 38, 38,
226 	38, 38, 38, 38, 38, 38, 57, 38,
227 	38, 38, 38, 38, 61, 62, 63, 65,
228 	38, 66, 38, 38, 38, 38, 38, 38,
229 	38, 38, 38, 38, 38, 38, 41, 38,
230 	41, 38, 38, 38, 38, 38, 38, 38,
231 	38, 38, 44, 45, 46, 38, 38, 38,
232 	38, 38, 38, 38, 38, 38, 38, 38,
233 	38, 38, 38, 38, 38, 38, 38, 61,
234 	62, 63, 65, 38, 41, 38, 38, 38,
235 	38, 38, 38, 38, 42, 43, 44, 45,
236 	46, 38, 38, 38, 38, 38, 38, 52,
237 	53, 54, 38, 55, 56, 57, 38, 38,
238 	38, 38, 38, 61, 62, 63, 65, 38,
239 	38, 38, 38, 43, 38, 41, 38, 38,
240 	38, 38, 38, 38, 38, 38, 43, 44,
241 	45, 46, 38, 38, 38, 38, 38, 38,
242 	52, 53, 54, 38, 55, 56, 57, 38,
243 	38, 38, 38, 38, 61, 62, 63, 65,
244 	38, 38, 38, 38, 43, 38, 41, 38,
245 	38, 38, 38, 38, 38, 38, 38, 43,
246 	44, 45, 46, 38, 38, 38, 38, 38,
247 	38, 38, 53, 54, 38, 55, 56, 57,
248 	38, 38, 38, 38, 38, 61, 62, 63,
249 	65, 38, 38, 38, 38, 43, 38, 41,
250 	38, 38, 38, 38, 38, 38, 38, 38,
251 	43, 44, 45, 46, 38, 38, 38, 38,
252 	38, 38, 38, 38, 54, 38, 55, 56,
253 	57, 38, 38, 38, 38, 38, 61, 62,
254 	63, 65, 38, 38, 38, 38, 43, 38,
255 	67, 38, 41, 38, 38, 38, 38, 38,
256 	38, 38, 42, 43, 44, 45, 46, 38,
257 	48, 49, 38, 38, 38, 52, 53, 54,
258 	38, 55, 56, 57, 38, 38, 38, 38,
259 	38, 61, 62, 63, 65, 38, 38, 38,
260 	38, 43, 38, 41, 38, 38, 38, 38,
261 	38, 38, 38, 38, 43, 44, 45, 46,
262 	38, 38, 38, 38, 38, 38, 38, 38,
263 	38, 38, 55, 56, 57, 38, 38, 38,
264 	38, 38, 61, 62, 63, 65, 38, 38,
265 	38, 38, 43, 38, 67, 38, 41, 38,
266 	38, 38, 38, 38, 38, 38, 42, 43,
267 	44, 45, 46, 38, 38, 49, 38, 38,
268 	38, 52, 53, 54, 38, 55, 56, 57,
269 	38, 38, 38, 38, 38, 61, 62, 63,
270 	65, 38, 38, 38, 38, 43, 38, 67,
271 	38, 41, 38, 38, 38, 38, 38, 38,
272 	38, 42, 43, 44, 45, 46, 38, 38,
273 	38, 38, 38, 38, 52, 53, 54, 38,
274 	55, 56, 57, 38, 38, 38, 38, 38,
275 	61, 62, 63, 65, 38, 38, 38, 38,
276 	43, 38, 67, 38, 41, 38, 38, 38,
277 	38, 38, 38, 38, 42, 43, 44, 45,
278 	46, 47, 48, 49, 38, 38, 38, 52,
279 	53, 54, 38, 55, 56, 57, 38, 38,
280 	38, 38, 38, 61, 62, 63, 65, 38,
281 	38, 38, 38, 43, 38, 39, 40, 38,
282 	41, 38, 38, 38, 38, 38, 38, 38,
283 	42, 43, 44, 45, 46, 47, 48, 49,
284 	50, 38, 51, 52, 53, 54, 38, 55,
285 	56, 57, 38, 38, 38, 38, 60, 61,
286 	62, 63, 60, 38, 38, 38, 38, 64,
287 	38, 38, 63, 38, 39, 38, 38, 38,
288 	38, 38, 38, 38, 38, 38, 38, 38,
289 	38, 41, 38, 39, 38, 38, 38, 38,
290 	38, 38, 38, 38, 38, 38, 38, 38,
291 	41, 38, 38, 38, 38, 38, 38, 38,
292 	38, 43, 44, 45, 46, 38, 38, 38,
293 	38, 38, 38, 38, 38, 38, 38, 55,
294 	56, 57, 38, 38, 38, 38, 38, 61,
295 	62, 63, 65, 38, 41, 38, 38, 38,
296 	38, 38, 38, 38, 38, 38, 38, 38,
297 	38, 38, 38, 38, 38, 38, 38, 38,
298 	38, 38, 38, 38, 38, 38, 38, 58,
299 	59, 38, 41, 38, 38, 38, 38, 38,
300 	38, 38, 38, 38, 38, 38, 38, 38,
301 	38, 38, 38, 38, 38, 38, 38, 38,
302 	38, 38, 38, 38, 38, 38, 59, 38,
303 	4, 69, 68, 70, 68, 68, 68, 68,
304 	68, 68, 68, 71, 72, 73, 74, 75,
305 	76, 77, 78, 79, 4, 80, 81, 82,
306 	83, 68, 84, 85, 86, 68, 68, 68,
307 	68, 87, 88, 89, 90, 91, 68, 68,
308 	68, 68, 92, 68, 68, 93, 68, 4,
309 	68, 68, 68, 68, 68, 68, 68, 68,
310 	68, 68, 68, 68, 70, 68, 68, 68,
311 	68, 68, 68, 68, 68, 72, 73, 74,
312 	75, 68, 68, 68, 68, 68, 68, 68,
313 	68, 68, 68, 84, 85, 86, 68, 68,
314 	68, 68, 68, 88, 89, 90, 94, 68,
315 	68, 68, 68, 72, 68, 70, 68, 68,
316 	68, 68, 68, 68, 68, 68, 72, 73,
317 	74, 75, 68, 68, 68, 68, 68, 68,
318 	68, 68, 68, 68, 84, 85, 86, 68,
319 	68, 68, 68, 68, 88, 89, 90, 94,
320 	68, 70, 68, 68, 68, 68, 68, 68,
321 	68, 68, 68, 73, 74, 75, 68, 68,
322 	68, 68, 68, 68, 68, 68, 68, 68,
323 	68, 68, 68, 68, 68, 68, 68, 68,
324 	88, 89, 90, 68, 70, 68, 68, 68,
325 	68, 68, 68, 68, 68, 68, 68, 74,
326 	75, 68, 68, 68, 68, 68, 68, 68,
327 	68, 68, 68, 68, 68, 68, 68, 68,
328 	68, 68, 68, 88, 89, 90, 68, 70,
329 	68, 68, 68, 68, 68, 68, 68, 68,
330 	68, 68, 68, 75, 68, 68, 68, 68,
331 	68, 68, 68, 68, 68, 68, 68, 68,
332 	68, 68, 68, 68, 68, 68, 88, 89,
333 	90, 68, 70, 68, 68, 68, 68, 68,
334 	68, 68, 68, 68, 68, 68, 68, 68,
335 	68, 68, 68, 68, 68, 68, 68, 68,
336 	68, 68, 68, 68, 68, 68, 68, 68,
337 	68, 88, 89, 68, 70, 68, 68, 68,
338 	68, 68, 68, 68, 68, 68, 68, 68,
339 	68, 68, 68, 68, 68, 68, 68, 68,
340 	68, 68, 68, 68, 68, 68, 68, 68,
341 	68, 68, 68, 68, 89, 68, 70, 68,
342 	70, 68, 68, 68, 68, 68, 68, 68,
343 	68, 68, 73, 74, 75, 68, 68, 68,
344 	68, 68, 68, 68, 68, 68, 68, 84,
345 	85, 86, 68, 68, 68, 68, 68, 88,
346 	89, 90, 94, 68, 70, 68, 68, 68,
347 	68, 68, 68, 68, 68, 68, 73, 74,
348 	75, 68, 68, 68, 68, 68, 68, 68,
349 	68, 68, 68, 68, 85, 86, 68, 68,
350 	68, 68, 68, 88, 89, 90, 94, 68,
351 	70, 68, 68, 68, 68, 68, 68, 68,
352 	68, 68, 73, 74, 75, 68, 68, 68,
353 	68, 68, 68, 68, 68, 68, 68, 68,
354 	68, 86, 68, 68, 68, 68, 68, 88,
355 	89, 90, 94, 68, 96, 95, 95, 95,
356 	95, 95, 95, 95, 95, 95, 95, 95,
357 	95, 97, 95, 70, 68, 68, 68, 68,
358 	68, 68, 68, 68, 68, 73, 74, 75,
359 	68, 68, 68, 68, 68, 68, 68, 68,
360 	68, 68, 68, 68, 68, 68, 68, 68,
361 	68, 68, 88, 89, 90, 94, 68, 70,
362 	68, 68, 68, 68, 68, 68, 68, 71,
363 	72, 73, 74, 75, 68, 68, 68, 68,
364 	68, 68, 81, 82, 83, 68, 84, 85,
365 	86, 68, 68, 68, 68, 68, 88, 89,
366 	90, 94, 68, 68, 68, 68, 72, 68,
367 	70, 68, 68, 68, 68, 68, 68, 68,
368 	68, 72, 73, 74, 75, 68, 68, 68,
369 	68, 68, 68, 81, 82, 83, 68, 84,
370 	85, 86, 68, 68, 68, 68, 68, 88,
371 	89, 90, 94, 68, 68, 68, 68, 72,
372 	68, 70, 68, 68, 68, 68, 68, 68,
373 	68, 68, 72, 73, 74, 75, 68, 68,
374 	68, 68, 68, 68, 68, 82, 83, 68,
375 	84, 85, 86, 68, 68, 68, 68, 68,
376 	88, 89, 90, 94, 68, 68, 68, 68,
377 	72, 68, 70, 68, 68, 68, 68, 68,
378 	68, 68, 68, 72, 73, 74, 75, 68,
379 	68, 68, 68, 68, 68, 68, 68, 83,
380 	68, 84, 85, 86, 68, 68, 68, 68,
381 	68, 88, 89, 90, 94, 68, 68, 68,
382 	68, 72, 68, 98, 68, 70, 68, 68,
383 	68, 68, 68, 68, 68, 71, 72, 73,
384 	74, 75, 68, 77, 78, 68, 68, 68,
385 	81, 82, 83, 68, 84, 85, 86, 68,
386 	68, 68, 68, 68, 88, 89, 90, 94,
387 	68, 68, 68, 68, 72, 68, 70, 68,
388 	68, 68, 68, 68, 68, 68, 68, 72,
389 	73, 74, 75, 68, 68, 68, 68, 68,
390 	68, 68, 68, 68, 68, 84, 85, 86,
391 	68, 68, 68, 68, 68, 88, 89, 90,
392 	94, 68, 68, 68, 68, 72, 68, 98,
393 	68, 70, 68, 68, 68, 68, 68, 68,
394 	68, 71, 72, 73, 74, 75, 68, 68,
395 	78, 68, 68, 68, 81, 82, 83, 68,
396 	84, 85, 86, 68, 68, 68, 68, 68,
397 	88, 89, 90, 94, 68, 68, 68, 68,
398 	72, 68, 98, 68, 70, 68, 68, 68,
399 	68, 68, 68, 68, 71, 72, 73, 74,
400 	75, 68, 68, 68, 68, 68, 68, 81,
401 	82, 83, 68, 84, 85, 86, 68, 68,
402 	68, 68, 68, 88, 89, 90, 94, 68,
403 	68, 68, 68, 72, 68, 98, 68, 70,
404 	68, 68, 68, 68, 68, 68, 68, 71,
405 	72, 73, 74, 75, 76, 77, 78, 68,
406 	68, 68, 81, 82, 83, 68, 84, 85,
407 	86, 68, 68, 68, 68, 68, 88, 89,
408 	90, 94, 68, 68, 68, 68, 72, 68,
409 	4, 69, 68, 70, 68, 68, 68, 68,
410 	68, 68, 68, 71, 72, 73, 74, 75,
411 	76, 77, 78, 79, 68, 80, 81, 82,
412 	83, 68, 84, 85, 86, 68, 68, 68,
413 	68, 87, 88, 89, 90, 91, 68, 68,
414 	68, 68, 92, 68, 68, 93, 68, 4,
415 	99, 99, 99, 99, 99, 99, 99, 99,
416 	99, 99, 99, 99, 100, 99, 4, 95,
417 	95, 95, 95, 95, 95, 95, 95, 95,
418 	95, 95, 95, 97, 95, 4, 68, 68,
419 	68, 68, 68, 68, 68, 68, 68, 68,
420 	68, 68, 70, 68, 68, 68, 68, 68,
421 	68, 68, 68, 72, 73, 74, 75, 68,
422 	68, 68, 68, 68, 68, 68, 68, 68,
423 	68, 84, 85, 86, 68, 68, 68, 68,
424 	68, 88, 89, 90, 94, 68, 100, 99,
425 	102, 103, 101, 6, 104, 104, 104, 104,
426 	104, 104, 104, 104, 104, 105, 104, 106,
427 	107, 68, 70, 68, 68, 68, 68, 68,
428 	68, 68, 108, 109, 110, 111, 112, 113,
429 	114, 115, 116, 106, 117, 118, 119, 120,
430 	68, 121, 122, 123, 68, 58, 59, 68,
431 	124, 125, 126, 127, 128, 68, 68, 68,
432 	68, 129, 68, 68, 130, 68, 106, 107,
433 	68, 70, 68, 68, 68, 68, 68, 68,
434 	68, 108, 109, 110, 111, 112, 113, 114,
435 	115, 116, 106, 117, 118, 119, 120, 68,
436 	121, 122, 123, 68, 68, 68, 68, 124,
437 	125, 126, 127, 128, 68, 68, 68, 68,
438 	129, 68, 68, 130, 68, 106, 68, 68,
439 	68, 68, 68, 68, 68, 68, 68, 68,
440 	68, 68, 70, 68, 68, 68, 68, 68,
441 	68, 68, 68, 109, 110, 111, 112, 68,
442 	68, 68, 68, 68, 68, 68, 68, 68,
443 	68, 121, 122, 123, 68, 68, 68, 68,
444 	68, 125, 126, 127, 131, 68, 68, 68,
445 	68, 109, 68, 70, 68, 68, 68, 68,
446 	68, 68, 68, 68, 109, 110, 111, 112,
447 	68, 68, 68, 68, 68, 68, 68, 68,
448 	68, 68, 121, 122, 123, 68, 68, 68,
449 	68, 68, 125, 126, 127, 131, 68, 70,
450 	68, 68, 68, 68, 68, 68, 68, 68,
451 	68, 110, 111, 112, 68, 68, 68, 68,
452 	68, 68, 68, 68, 68, 68, 68, 68,
453 	68, 68, 68, 68, 68, 68, 125, 126,
454 	127, 68, 70, 68, 68, 68, 68, 68,
455 	68, 68, 68, 68, 68, 111, 112, 68,
456 	68, 68, 68, 68, 68, 68, 68, 68,
457 	68, 68, 68, 68, 68, 68, 68, 68,
458 	68, 125, 126, 127, 68, 70, 68, 68,
459 	68, 68, 68, 68, 68, 68, 68, 68,
460 	68, 112, 68, 68, 68, 68, 68, 68,
461 	68, 68, 68, 68, 68, 68, 68, 68,
462 	68, 68, 68, 68, 125, 126, 127, 68,
463 	70, 68, 68, 68, 68, 68, 68, 68,
464 	68, 68, 68, 68, 68, 68, 68, 68,
465 	68, 68, 68, 68, 68, 68, 68, 68,
466 	68, 68, 68, 68, 68, 68, 68, 125,
467 	126, 68, 70, 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, 68, 126, 68, 70, 68, 70, 68,
472 	68, 68, 68, 68, 68, 68, 68, 68,
473 	110, 111, 112, 68, 68, 68, 68, 68,
474 	68, 68, 68, 68, 68, 121, 122, 123,
475 	68, 68, 68, 68, 68, 125, 126, 127,
476 	131, 68, 70, 68, 68, 68, 68, 68,
477 	68, 68, 68, 68, 110, 111, 112, 68,
478 	68, 68, 68, 68, 68, 68, 68, 68,
479 	68, 68, 122, 123, 68, 68, 68, 68,
480 	68, 125, 126, 127, 131, 68, 70, 68,
481 	68, 68, 68, 68, 68, 68, 68, 68,
482 	110, 111, 112, 68, 68, 68, 68, 68,
483 	68, 68, 68, 68, 68, 68, 68, 123,
484 	68, 68, 68, 68, 68, 125, 126, 127,
485 	131, 68, 132, 95, 95, 95, 95, 95,
486 	95, 95, 95, 95, 95, 95, 95, 97,
487 	95, 70, 68, 68, 68, 68, 68, 68,
488 	68, 68, 68, 110, 111, 112, 68, 68,
489 	68, 68, 68, 68, 68, 68, 68, 68,
490 	68, 68, 68, 68, 68, 68, 68, 68,
491 	125, 126, 127, 131, 68, 70, 68, 68,
492 	68, 68, 68, 68, 68, 108, 109, 110,
493 	111, 112, 68, 68, 68, 68, 68, 68,
494 	118, 119, 120, 68, 121, 122, 123, 68,
495 	68, 68, 68, 68, 125, 126, 127, 131,
496 	68, 68, 68, 68, 109, 68, 70, 68,
497 	68, 68, 68, 68, 68, 68, 68, 109,
498 	110, 111, 112, 68, 68, 68, 68, 68,
499 	68, 118, 119, 120, 68, 121, 122, 123,
500 	68, 68, 68, 68, 68, 125, 126, 127,
501 	131, 68, 68, 68, 68, 109, 68, 70,
502 	68, 68, 68, 68, 68, 68, 68, 68,
503 	109, 110, 111, 112, 68, 68, 68, 68,
504 	68, 68, 68, 119, 120, 68, 121, 122,
505 	123, 68, 68, 68, 68, 68, 125, 126,
506 	127, 131, 68, 68, 68, 68, 109, 68,
507 	70, 68, 68, 68, 68, 68, 68, 68,
508 	68, 109, 110, 111, 112, 68, 68, 68,
509 	68, 68, 68, 68, 68, 120, 68, 121,
510 	122, 123, 68, 68, 68, 68, 68, 125,
511 	126, 127, 131, 68, 68, 68, 68, 109,
512 	68, 133, 68, 70, 68, 68, 68, 68,
513 	68, 68, 68, 108, 109, 110, 111, 112,
514 	68, 114, 115, 68, 68, 68, 118, 119,
515 	120, 68, 121, 122, 123, 68, 68, 68,
516 	68, 68, 125, 126, 127, 131, 68, 68,
517 	68, 68, 109, 68, 70, 68, 68, 68,
518 	68, 68, 68, 68, 68, 109, 110, 111,
519 	112, 68, 68, 68, 68, 68, 68, 68,
520 	68, 68, 68, 121, 122, 123, 68, 68,
521 	68, 68, 68, 125, 126, 127, 131, 68,
522 	68, 68, 68, 109, 68, 133, 68, 70,
523 	68, 68, 68, 68, 68, 68, 68, 108,
524 	109, 110, 111, 112, 68, 68, 115, 68,
525 	68, 68, 118, 119, 120, 68, 121, 122,
526 	123, 68, 68, 68, 68, 68, 125, 126,
527 	127, 131, 68, 68, 68, 68, 109, 68,
528 	133, 68, 70, 68, 68, 68, 68, 68,
529 	68, 68, 108, 109, 110, 111, 112, 68,
530 	68, 68, 68, 68, 68, 118, 119, 120,
531 	68, 121, 122, 123, 68, 68, 68, 68,
532 	68, 125, 126, 127, 131, 68, 68, 68,
533 	68, 109, 68, 133, 68, 70, 68, 68,
534 	68, 68, 68, 68, 68, 108, 109, 110,
535 	111, 112, 113, 114, 115, 68, 68, 68,
536 	118, 119, 120, 68, 121, 122, 123, 68,
537 	68, 68, 68, 68, 125, 126, 127, 131,
538 	68, 68, 68, 68, 109, 68, 106, 107,
539 	68, 70, 68, 68, 68, 68, 68, 68,
540 	68, 108, 109, 110, 111, 112, 113, 114,
541 	115, 116, 68, 117, 118, 119, 120, 68,
542 	121, 122, 123, 68, 68, 68, 68, 124,
543 	125, 126, 127, 128, 68, 68, 68, 68,
544 	129, 68, 68, 130, 68, 106, 99, 99,
545 	99, 99, 99, 99, 99, 99, 99, 99,
546 	99, 99, 100, 99, 106, 95, 95, 95,
547 	95, 95, 95, 95, 95, 95, 95, 95,
548 	95, 97, 95, 106, 68, 68, 68, 68,
549 	68, 68, 68, 68, 68, 68, 68, 68,
550 	70, 68, 68, 68, 68, 68, 68, 68,
551 	68, 109, 110, 111, 112, 68, 68, 68,
552 	68, 68, 68, 68, 68, 68, 68, 121,
553 	122, 123, 68, 68, 68, 68, 68, 125,
554 	126, 127, 131, 68, 100, 99, 8, 9,
555 	134, 11, 134, 134, 134, 134, 134, 134,
556 	134, 13, 14, 15, 16, 17, 18, 19,
557 	20, 21, 8, 22, 23, 24, 25, 134,
558 	26, 27, 28, 134, 134, 134, 134, 32,
559 	33, 34, 35, 32, 134, 134, 134, 134,
560 	37, 134, 134, 35, 134, 8, 134, 134,
561 	134, 134, 134, 134, 134, 134, 134, 134,
562 	134, 134, 11, 134, 134, 134, 134, 134,
563 	134, 134, 134, 14, 15, 16, 17, 134,
564 	134, 134, 134, 134, 134, 134, 134, 134,
565 	134, 26, 27, 28, 134, 134, 134, 134,
566 	134, 33, 34, 35, 135, 134, 134, 134,
567 	134, 14, 134, 11, 134, 134, 134, 134,
568 	134, 134, 134, 134, 14, 15, 16, 17,
569 	134, 134, 134, 134, 134, 134, 134, 134,
570 	134, 134, 26, 27, 28, 134, 134, 134,
571 	134, 134, 33, 34, 35, 135, 134, 11,
572 	134, 134, 134, 134, 134, 134, 134, 134,
573 	134, 15, 16, 17, 134, 134, 134, 134,
574 	134, 134, 134, 134, 134, 134, 134, 134,
575 	134, 134, 134, 134, 134, 134, 33, 34,
576 	35, 134, 11, 134, 134, 134, 134, 134,
577 	134, 134, 134, 134, 134, 16, 17, 134,
578 	134, 134, 134, 134, 134, 134, 134, 134,
579 	134, 134, 134, 134, 134, 134, 134, 134,
580 	134, 33, 34, 35, 134, 11, 134, 134,
581 	134, 134, 134, 134, 134, 134, 134, 134,
582 	134, 17, 134, 134, 134, 134, 134, 134,
583 	134, 134, 134, 134, 134, 134, 134, 134,
584 	134, 134, 134, 134, 33, 34, 35, 134,
585 	11, 134, 134, 134, 134, 134, 134, 134,
586 	134, 134, 134, 134, 134, 134, 134, 134,
587 	134, 134, 134, 134, 134, 134, 134, 134,
588 	134, 134, 134, 134, 134, 134, 134, 33,
589 	34, 134, 11, 134, 134, 134, 134, 134,
590 	134, 134, 134, 134, 134, 134, 134, 134,
591 	134, 134, 134, 134, 134, 134, 134, 134,
592 	134, 134, 134, 134, 134, 134, 134, 134,
593 	134, 134, 34, 134, 11, 134, 11, 134,
594 	134, 134, 134, 134, 134, 134, 134, 134,
595 	15, 16, 17, 134, 134, 134, 134, 134,
596 	134, 134, 134, 134, 134, 26, 27, 28,
597 	134, 134, 134, 134, 134, 33, 34, 35,
598 	135, 134, 11, 134, 134, 134, 134, 134,
599 	134, 134, 134, 134, 15, 16, 17, 134,
600 	134, 134, 134, 134, 134, 134, 134, 134,
601 	134, 134, 27, 28, 134, 134, 134, 134,
602 	134, 33, 34, 35, 135, 134, 11, 134,
603 	134, 134, 134, 134, 134, 134, 134, 134,
604 	15, 16, 17, 134, 134, 134, 134, 134,
605 	134, 134, 134, 134, 134, 134, 134, 28,
606 	134, 134, 134, 134, 134, 33, 34, 35,
607 	135, 134, 136, 134, 134, 134, 134, 134,
608 	134, 134, 134, 134, 134, 134, 134, 11,
609 	134, 11, 134, 134, 134, 134, 134, 134,
610 	134, 134, 134, 15, 16, 17, 134, 134,
611 	134, 134, 134, 134, 134, 134, 134, 134,
612 	134, 134, 134, 134, 134, 134, 134, 134,
613 	33, 34, 35, 135, 134, 11, 134, 134,
614 	134, 134, 134, 134, 134, 13, 14, 15,
615 	16, 17, 134, 134, 134, 134, 134, 134,
616 	23, 24, 25, 134, 26, 27, 28, 134,
617 	134, 134, 134, 134, 33, 34, 35, 135,
618 	134, 134, 134, 134, 14, 134, 11, 134,
619 	134, 134, 134, 134, 134, 134, 134, 14,
620 	15, 16, 17, 134, 134, 134, 134, 134,
621 	134, 23, 24, 25, 134, 26, 27, 28,
622 	134, 134, 134, 134, 134, 33, 34, 35,
623 	135, 134, 134, 134, 134, 14, 134, 11,
624 	134, 134, 134, 134, 134, 134, 134, 134,
625 	14, 15, 16, 17, 134, 134, 134, 134,
626 	134, 134, 134, 24, 25, 134, 26, 27,
627 	28, 134, 134, 134, 134, 134, 33, 34,
628 	35, 135, 134, 134, 134, 134, 14, 134,
629 	11, 134, 134, 134, 134, 134, 134, 134,
630 	134, 14, 15, 16, 17, 134, 134, 134,
631 	134, 134, 134, 134, 134, 25, 134, 26,
632 	27, 28, 134, 134, 134, 134, 134, 33,
633 	34, 35, 135, 134, 134, 134, 134, 14,
634 	134, 137, 134, 11, 134, 134, 134, 134,
635 	134, 134, 134, 13, 14, 15, 16, 17,
636 	134, 19, 20, 134, 134, 134, 23, 24,
637 	25, 134, 26, 27, 28, 134, 134, 134,
638 	134, 134, 33, 34, 35, 135, 134, 134,
639 	134, 134, 14, 134, 11, 134, 134, 134,
640 	134, 134, 134, 134, 134, 14, 15, 16,
641 	17, 134, 134, 134, 134, 134, 134, 134,
642 	134, 134, 134, 26, 27, 28, 134, 134,
643 	134, 134, 134, 33, 34, 35, 135, 134,
644 	134, 134, 134, 14, 134, 137, 134, 11,
645 	134, 134, 134, 134, 134, 134, 134, 13,
646 	14, 15, 16, 17, 134, 134, 20, 134,
647 	134, 134, 23, 24, 25, 134, 26, 27,
648 	28, 134, 134, 134, 134, 134, 33, 34,
649 	35, 135, 134, 134, 134, 134, 14, 134,
650 	137, 134, 11, 134, 134, 134, 134, 134,
651 	134, 134, 13, 14, 15, 16, 17, 134,
652 	134, 134, 134, 134, 134, 23, 24, 25,
653 	134, 26, 27, 28, 134, 134, 134, 134,
654 	134, 33, 34, 35, 135, 134, 134, 134,
655 	134, 14, 134, 137, 134, 11, 134, 134,
656 	134, 134, 134, 134, 134, 13, 14, 15,
657 	16, 17, 18, 19, 20, 134, 134, 134,
658 	23, 24, 25, 134, 26, 27, 28, 134,
659 	134, 134, 134, 134, 33, 34, 35, 135,
660 	134, 134, 134, 134, 14, 134, 8, 9,
661 	134, 11, 134, 134, 134, 134, 134, 134,
662 	134, 13, 14, 15, 16, 17, 18, 19,
663 	20, 21, 134, 22, 23, 24, 25, 134,
664 	26, 27, 28, 134, 134, 134, 134, 32,
665 	33, 34, 35, 32, 134, 134, 134, 134,
666 	37, 134, 134, 35, 134, 8, 134, 134,
667 	134, 134, 134, 134, 134, 134, 134, 134,
668 	134, 134, 11, 134, 8, 134, 134, 134,
669 	134, 134, 134, 134, 134, 134, 134, 134,
670 	134, 11, 134, 134, 134, 134, 134, 134,
671 	134, 134, 14, 15, 16, 17, 134, 134,
672 	134, 134, 134, 134, 134, 134, 134, 134,
673 	26, 27, 28, 134, 134, 134, 134, 134,
674 	33, 34, 35, 135, 134, 138, 134, 134,
675 	134, 134, 134, 134, 134, 134, 134, 11,
676 	134, 10, 11, 134, 4, 134, 134, 134,
677 	4, 134, 134, 134, 134, 134, 8, 9,
678 	10, 11, 134, 134, 134, 134, 134, 134,
679 	134, 13, 14, 15, 16, 17, 18, 19,
680 	20, 21, 8, 22, 23, 24, 25, 134,
681 	26, 27, 28, 134, 29, 30, 134, 32,
682 	33, 34, 35, 32, 134, 134, 134, 134,
683 	37, 134, 134, 35, 134, 11, 134, 134,
684 	134, 134, 134, 134, 134, 134, 134, 134,
685 	134, 134, 134, 134, 134, 134, 134, 134,
686 	134, 134, 134, 134, 134, 134, 134, 134,
687 	29, 30, 134, 11, 134, 134, 134, 134,
688 	134, 134, 134, 134, 134, 134, 134, 134,
689 	134, 134, 134, 134, 134, 134, 134, 134,
690 	134, 134, 134, 134, 134, 134, 134, 30,
691 	134, 4, 139, 139, 139, 4, 139, 141,
692 	140, 140, 140, 140, 140, 140, 140, 140,
693 	140, 140, 140, 140, 140, 140, 140, 140,
694 	140, 140, 140, 140, 140, 140, 140, 140,
695 	140, 140, 140, 140, 140, 140, 140, 140,
696 	140, 140, 140, 142, 140, 143, 140, 143,
697 	144, 140, 141, 140, 140, 140, 140, 140,
698 	140, 140, 140, 140, 140, 140, 140, 140,
699 	140, 140, 140, 140, 140, 140, 140, 140,
700 	140, 140, 140, 140, 140, 140, 140, 140,
701 	140, 140, 140, 140, 140, 1, 142, 142,
702 	140, 141, 140, 140, 140, 140, 140, 140,
703 	140, 140, 140, 140, 140, 140, 140, 140,
704 	140, 140, 140, 140, 140, 140, 140, 140,
705 	140, 140, 140, 140, 140, 140, 140, 140,
706 	140, 140, 140, 140, 140, 142, 140, 143,
707 	140, 141, 140, 140, 140, 140, 140, 140,
708 	140, 140, 140, 140, 140, 140, 140, 140,
709 	140, 140, 140, 140, 140, 140, 140, 140,
710 	140, 140, 140, 140, 140, 140, 140, 140,
711 	140, 140, 140, 140, 140, 142, 140, 143,
712 	140, 143, 140, 39, 40, 38, 41, 38,
713 	38, 38, 38, 38, 38, 38, 42, 43,
714 	44, 45, 46, 47, 48, 49, 50, 39,
715 	51, 52, 53, 54, 38, 55, 56, 57,
716 	38, 58, 59, 38, 60, 61, 62, 63,
717 	60, 1, 38, 2, 38, 64, 38, 38,
718 	63, 38, 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, 1, 3,
727 	4, 1, 17, 5, 6, 7, 8, 21,
728 	23, 24, 25, 26, 18, 19, 20, 12,
729 	13, 14, 29, 30, 27, 9, 10, 11,
730 	28, 15, 16, 22, 1, 32, 1, 45,
731 	33, 34, 35, 36, 49, 51, 52, 53,
732 	54, 46, 47, 48, 40, 41, 42, 55,
733 	37, 38, 39, 56, 57, 58, 43, 1,
734 	44, 1, 50, 1, 1, 1, 60, 1,
735 	1, 1, 62, 63, 76, 64, 65, 66,
736 	67, 80, 82, 83, 84, 85, 77, 78,
737 	79, 71, 72, 73, 86, 68, 69, 70,
738 	87, 88, 89, 74, 75, 81, 1, 102,
739 	103, 109, 117, 1, 1, 1, 123, 124,
740 	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, 0, 6, 0, 7, 0,
749 	0, 8, 0, 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, 9, 0, 10, 0,
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, 11,
756 	0, 12, 0, 13, 14, 15, 0, 16,
757 	17, 18, 0, 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, 19, 0,
761 	0, 0, 0, 20, 21, 22, 0, 0,
762 	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, 39, 39, 39, 39, 39, 39,
805 	39, 39, 39, 39, 39, 39, 39, 39,
806 	39, 39, 39, 39, 39, 39, 39, 39,
807 	39, 39, 39, 39, 39, 39, 39, 69,
808 	69, 69, 69, 69, 69, 69, 69, 69,
809 	69, 69, 69, 96, 69, 69, 69, 69,
810 	69, 69, 69, 69, 69, 69, 69, 100,
811 	96, 69, 100, 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, 100, 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, 140, 141, 141, 141, 141, 39
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 185 "hb-ot-shaper-use-machine.rl"
834 
835 
836 #define found_syllable(syllable_type) \
837   HB_STMT_START { \
838     if (0) fprintf (stderr, "syllable %u..%u %s\n", (*ts).second.first, (*te).second.first, #syllable_type); \
839     for (unsigned i = (*ts).second.first; i < (*te).second.first; ++i) \
840       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
841     syllable_serial++; \
842     if (syllable_serial == 16) syllable_serial = 1; \
843   } 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 {
machine_index_tmachine_index_t851   machine_index_t (const Iter& it) : it (it) {}
machine_index_tmachine_index_t852   machine_index_t (const machine_index_t& o) : hb_iter_with_fallback_t<machine_index_t<Iter>,
853 								       typename Iter::item_t> (),
854 					       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 
__item__machine_index_t859   typename Iter::item_t __item__ () const { return *it; }
__item_at__machine_index_t860   typename Iter::item_t __item_at__ (unsigned i) const { return it[i]; }
__len__machine_index_t861   unsigned __len__ () const { return it.len (); }
__next__machine_index_t862   void __next__ () { ++it; }
__forward__machine_index_t863   void __forward__ (unsigned n) { it += n; }
__prev__machine_index_t864   void __prev__ () { --it; }
__rewind__machine_index_t865   void __rewind__ (unsigned n) { it -= n; }
866 
operator =machine_index_t867   void operator = (unsigned n)
868   {
869     assert (n == 0);
870     is_null = true;
871   }
operator boolmachine_index_t872   explicit operator bool () { return !is_null; }
873 
operator =machine_index_t874   void operator = (const machine_index_t& o)
875   {
876     is_null = o.is_null;
877     unsigned index = (*it).first;
878     unsigned n = (*o.it).first;
879     if (index < n) it += n - index; else if (index > n) it -= index - n;
880   }
operator ==machine_index_t881   bool operator == (const machine_index_t& o) const
882   { return is_null ? o.is_null : !o.is_null && (*it).first == (*o.it).first; }
operator !=machine_index_t883   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>>
operator ()__anon91e711710108894   operator () (Iter&& it) const
895   { return machine_index_t<hb_iter_type<Iter>> (hb_iter (it)); }
896 }
897 HB_FUNCOBJ (machine_index);
898 
899 
900 
901 static bool
not_ccs_default_ignorable(const hb_glyph_info_t & i)902 not_ccs_default_ignorable (const hb_glyph_info_t &i)
903 { return i.use_category() != USE(CGJ); }
904 
905 static inline void
find_syllables_use(hb_buffer_t * buffer)906 find_syllables_use (hb_buffer_t *buffer)
907 {
908   hb_glyph_info_t *info = buffer->info;
909   auto p =
910     + hb_iter (info, buffer->len)
911     | hb_enumerate
912     | hb_filter ([] (const hb_glyph_info_t &i) { return not_ccs_default_ignorable (i); },
913 		 hb_second)
914     | hb_filter ([&] (const hb_pair_t<unsigned, const hb_glyph_info_t &> p)
915 		 {
916 		   if (p.second.use_category() == USE(ZWNJ))
917 		     for (unsigned i = p.first + 1; i < buffer->len; ++i)
918 		       if (not_ccs_default_ignorable (info[i]))
919 			 return !_hb_glyph_info_is_unicode_mark (&info[i]);
920 		   return true;
921 		 })
922     | hb_enumerate
923     | machine_index
924     ;
925   auto pe = p + p.len ();
926   auto eof = +pe;
927   auto ts = +p;
928   auto te = +p;
929   unsigned int act HB_UNUSED;
930   int cs;
931 
932 #line 933 "hb-ot-shaper-use-machine.hh"
933 	{
934 	cs = use_syllable_machine_start;
935 	ts = 0;
936 	te = 0;
937 	act = 0;
938 	}
939 
940 #line 285 "hb-ot-shaper-use-machine.rl"
941 
942 
943   unsigned int syllable_serial = 1;
944 
945 #line 946 "hb-ot-shaper-use-machine.hh"
946 	{
947 	int _slen;
948 	int _trans;
949 	const unsigned char *_keys;
950 	const unsigned char *_inds;
951 	if ( p == pe )
952 		goto _test_eof;
953 _resume:
954 	switch ( _use_syllable_machine_from_state_actions[cs] ) {
955 	case 3:
956 #line 1 "NONE"
957 	{ts = p;}
958 	break;
959 #line 960 "hb-ot-shaper-use-machine.hh"
960 	}
961 
962 	_keys = _use_syllable_machine_trans_keys + (cs<<1);
963 	_inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
964 
965 	_slen = _use_syllable_machine_key_spans[cs];
966 	_trans = _inds[ _slen > 0 && _keys[0] <=( (*p).second.second.use_category()) &&
967 		( (*p).second.second.use_category()) <= _keys[1] ?
968 		( (*p).second.second.use_category()) - _keys[0] : _slen ];
969 
970 _eof_trans:
971 	cs = _use_syllable_machine_trans_targs[_trans];
972 
973 	if ( _use_syllable_machine_trans_actions[_trans] == 0 )
974 		goto _again;
975 
976 	switch ( _use_syllable_machine_trans_actions[_trans] ) {
977 	case 6:
978 #line 1 "NONE"
979 	{te = p+1;}
980 	break;
981 	case 14:
982 #line 173 "hb-ot-shaper-use-machine.rl"
983 	{te = p+1;{ found_syllable (use_virama_terminated_cluster); }}
984 	break;
985 	case 12:
986 #line 174 "hb-ot-shaper-use-machine.rl"
987 	{te = p+1;{ found_syllable (use_sakot_terminated_cluster); }}
988 	break;
989 	case 10:
990 #line 175 "hb-ot-shaper-use-machine.rl"
991 	{te = p+1;{ found_syllable (use_standard_cluster); }}
992 	break;
993 	case 18:
994 #line 176 "hb-ot-shaper-use-machine.rl"
995 	{te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }}
996 	break;
997 	case 16:
998 #line 177 "hb-ot-shaper-use-machine.rl"
999 	{te = p+1;{ found_syllable (use_numeral_cluster); }}
1000 	break;
1001 	case 8:
1002 #line 178 "hb-ot-shaper-use-machine.rl"
1003 	{te = p+1;{ found_syllable (use_symbol_cluster); }}
1004 	break;
1005 	case 22:
1006 #line 179 "hb-ot-shaper-use-machine.rl"
1007 	{te = p+1;{ found_syllable (use_hieroglyph_cluster); }}
1008 	break;
1009 	case 5:
1010 #line 180 "hb-ot-shaper-use-machine.rl"
1011 	{te = p+1;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1012 	break;
1013 	case 4:
1014 #line 181 "hb-ot-shaper-use-machine.rl"
1015 	{te = p+1;{ found_syllable (use_non_cluster); }}
1016 	break;
1017 	case 13:
1018 #line 173 "hb-ot-shaper-use-machine.rl"
1019 	{te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
1020 	break;
1021 	case 11:
1022 #line 174 "hb-ot-shaper-use-machine.rl"
1023 	{te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
1024 	break;
1025 	case 9:
1026 #line 175 "hb-ot-shaper-use-machine.rl"
1027 	{te = p;p--;{ found_syllable (use_standard_cluster); }}
1028 	break;
1029 	case 17:
1030 #line 176 "hb-ot-shaper-use-machine.rl"
1031 	{te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
1032 	break;
1033 	case 15:
1034 #line 177 "hb-ot-shaper-use-machine.rl"
1035 	{te = p;p--;{ found_syllable (use_numeral_cluster); }}
1036 	break;
1037 	case 7:
1038 #line 178 "hb-ot-shaper-use-machine.rl"
1039 	{te = p;p--;{ found_syllable (use_symbol_cluster); }}
1040 	break;
1041 	case 21:
1042 #line 179 "hb-ot-shaper-use-machine.rl"
1043 	{te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
1044 	break;
1045 	case 19:
1046 #line 180 "hb-ot-shaper-use-machine.rl"
1047 	{te = p;p--;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1048 	break;
1049 	case 20:
1050 #line 181 "hb-ot-shaper-use-machine.rl"
1051 	{te = p;p--;{ found_syllable (use_non_cluster); }}
1052 	break;
1053 	case 1:
1054 #line 178 "hb-ot-shaper-use-machine.rl"
1055 	{{p = ((te))-1;}{ found_syllable (use_symbol_cluster); }}
1056 	break;
1057 #line 1058 "hb-ot-shaper-use-machine.hh"
1058 	}
1059 
1060 _again:
1061 	switch ( _use_syllable_machine_to_state_actions[cs] ) {
1062 	case 2:
1063 #line 1 "NONE"
1064 	{ts = 0;}
1065 	break;
1066 #line 1067 "hb-ot-shaper-use-machine.hh"
1067 	}
1068 
1069 	if ( ++p != pe )
1070 		goto _resume;
1071 	_test_eof: {}
1072 	if ( p == eof )
1073 	{
1074 	if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
1075 		_trans = _use_syllable_machine_eof_trans[cs] - 1;
1076 		goto _eof_trans;
1077 	}
1078 	}
1079 
1080 	}
1081 
1082 #line 290 "hb-ot-shaper-use-machine.rl"
1083 
1084 }
1085 
1086 #undef found_syllable
1087 
1088 #endif /* HB_OT_SHAPER_USE_MACHINE_HH */
1089