• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 54 "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_HN 13u
72 #define use_syllable_machine_ex_HVM 53u
73 #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 #define use_syllable_machine_ex_O 0u
81 #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 #define use_syllable_machine_ex_VPre 22u
95 #define use_syllable_machine_ex_VPst 35u
96 #define use_syllable_machine_ex_WJ 16u
97 #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   HB_STMT_START { \
838     if (0) fprintf (stderr, "syllable %d..%d %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 ()__anon6245d2400108894   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 922 "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 282 "hb-ot-shaper-use-machine.rl"
941 
942 
943   unsigned int syllable_serial = 1;
944 
945 #line 931 "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 2:
956 #line 1 "NONE"
957 	{ts = p;}
958 	break;
959 #line 943 "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 12:
978 #line 170 "hb-ot-shaper-use-machine.rl"
979 	{te = p+1;{ found_syllable (use_virama_terminated_cluster); }}
980 	break;
981 	case 10:
982 #line 171 "hb-ot-shaper-use-machine.rl"
983 	{te = p+1;{ found_syllable (use_sakot_terminated_cluster); }}
984 	break;
985 	case 8:
986 #line 172 "hb-ot-shaper-use-machine.rl"
987 	{te = p+1;{ found_syllable (use_standard_cluster); }}
988 	break;
989 	case 16:
990 #line 173 "hb-ot-shaper-use-machine.rl"
991 	{te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }}
992 	break;
993 	case 14:
994 #line 174 "hb-ot-shaper-use-machine.rl"
995 	{te = p+1;{ found_syllable (use_numeral_cluster); }}
996 	break;
997 	case 6:
998 #line 175 "hb-ot-shaper-use-machine.rl"
999 	{te = p+1;{ found_syllable (use_symbol_cluster); }}
1000 	break;
1001 	case 20:
1002 #line 176 "hb-ot-shaper-use-machine.rl"
1003 	{te = p+1;{ found_syllable (use_hieroglyph_cluster); }}
1004 	break;
1005 	case 4:
1006 #line 177 "hb-ot-shaper-use-machine.rl"
1007 	{te = p+1;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1008 	break;
1009 	case 3:
1010 #line 178 "hb-ot-shaper-use-machine.rl"
1011 	{te = p+1;{ found_syllable (use_non_cluster); }}
1012 	break;
1013 	case 11:
1014 #line 170 "hb-ot-shaper-use-machine.rl"
1015 	{te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
1016 	break;
1017 	case 9:
1018 #line 171 "hb-ot-shaper-use-machine.rl"
1019 	{te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
1020 	break;
1021 	case 7:
1022 #line 172 "hb-ot-shaper-use-machine.rl"
1023 	{te = p;p--;{ found_syllable (use_standard_cluster); }}
1024 	break;
1025 	case 15:
1026 #line 173 "hb-ot-shaper-use-machine.rl"
1027 	{te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
1028 	break;
1029 	case 13:
1030 #line 174 "hb-ot-shaper-use-machine.rl"
1031 	{te = p;p--;{ found_syllable (use_numeral_cluster); }}
1032 	break;
1033 	case 5:
1034 #line 175 "hb-ot-shaper-use-machine.rl"
1035 	{te = p;p--;{ found_syllable (use_symbol_cluster); }}
1036 	break;
1037 	case 19:
1038 #line 176 "hb-ot-shaper-use-machine.rl"
1039 	{te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
1040 	break;
1041 	case 17:
1042 #line 177 "hb-ot-shaper-use-machine.rl"
1043 	{te = p;p--;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1044 	break;
1045 	case 18:
1046 #line 178 "hb-ot-shaper-use-machine.rl"
1047 	{te = p;p--;{ found_syllable (use_non_cluster); }}
1048 	break;
1049 #line 1014 "hb-ot-shaper-use-machine.hh"
1050 	}
1051 
1052 _again:
1053 	switch ( _use_syllable_machine_to_state_actions[cs] ) {
1054 	case 1:
1055 #line 1 "NONE"
1056 	{ts = 0;}
1057 	break;
1058 #line 1021 "hb-ot-shaper-use-machine.hh"
1059 	}
1060 
1061 	if ( ++p != pe )
1062 		goto _resume;
1063 	_test_eof: {}
1064 	if ( p == eof )
1065 	{
1066 	if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
1067 		_trans = _use_syllable_machine_eof_trans[cs] - 1;
1068 		goto _eof_trans;
1069 	}
1070 	}
1071 
1072 	}
1073 
1074 #line 287 "hb-ot-shaper-use-machine.rl"
1075 
1076 }
1077 
1078 #undef found_syllable
1079 
1080 #endif /* HB_OT_SHAPER_USE_MACHINE_HH */
1081