Imported Upstream version 2.4.0
[platform/upstream/harfbuzz.git] / src / hb-ot-shape-complex-indic-machine.hh
1
2 #line 1 "hb-ot-shape-complex-indic-machine.rl"
3 /*
4  * Copyright © 2011,2012  Google, Inc.
5  *
6  *  This is part of HarfBuzz, a text shaping library.
7  *
8  * Permission is hereby granted, without written agreement and without
9  * license or royalty fees, to use, copy, modify, and distribute this
10  * software and its documentation for any purpose, provided that the
11  * above copyright notice and the following two paragraphs appear in
12  * all copies of this software.
13  *
14  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
15  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
16  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
17  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
18  * DAMAGE.
19  *
20  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
21  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
22  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
23  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
24  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
25  *
26  * Google Author(s): Behdad Esfahbod
27  */
28
29 #ifndef HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH
30 #define HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH
31
32 #include "hb.hh"
33
34
35 #line 36 "hb-ot-shape-complex-indic-machine.hh"
36 static const unsigned char _indic_syllable_machine_trans_keys[] = {
37         8u, 8u, 4u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 
38         5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 
39         4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 
40         16u, 16u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 
41         4u, 8u, 4u, 13u, 8u, 8u, 4u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 
42         7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, 
43         6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 
44         4u, 8u, 6u, 6u, 16u, 16u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 
45         4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 8u, 8u, 4u, 8u, 5u, 7u, 7u, 7u, 
46         5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 
47         7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 
48         6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 13u, 4u, 8u, 4u, 13u, 
49         4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 8u, 8u, 4u, 8u, 5u, 7u, 
50         7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 
51         5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 
52         4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 13u, 4u, 8u, 
53         4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 13u, 
54         5u, 8u, 8u, 8u, 1u, 19u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 
55         3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 
56         3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 5u, 10u, 5u, 10u, 
57         5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, 3u, 10u, 5u, 10u, 3u, 10u, 
58         4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 
59         3u, 10u, 4u, 10u, 4u, 10u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 
60         3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 
61         1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 
62         3u, 17u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 
63         1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 
64         1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 5u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, 
65         10u, 10u, 10u, 10u, 5u, 10u, 3u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 
66         3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 
67         4u, 10u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 
68         1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 
69         3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 8u, 3u, 17u, 3u, 17u, 
70         4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 
71         4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 
72         4u, 17u, 5u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, 
73         3u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 
74         3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 4u, 10u, 3u, 17u, 3u, 17u, 
75         1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 
76         3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 
77         1u, 16u, 1u, 16u, 4u, 13u, 3u, 17u, 4u, 8u, 3u, 17u, 3u, 17u, 4u, 17u, 
78         1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 
79         1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 
80         5u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, 3u, 10u, 
81         5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 
82         4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 4u, 10u, 3u, 17u, 3u, 17u, 1u, 16u, 
83         1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 
84         3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 
85         1u, 16u, 3u, 17u, 1u, 17u, 3u, 17u, 1u, 17u, 4u, 13u, 5u, 10u, 10u, 10u, 
86         10u, 10u, 10u, 10u, 5u, 10u, 1u, 16u, 3u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, 
87         10u, 10u, 10u, 10u, 5u, 10u, 1u, 16u, 0
88 };
89
90 static const char _indic_syllable_machine_key_spans[] = {
91         1, 5, 3, 1, 4, 3, 1, 4, 
92         3, 1, 4, 3, 1, 5, 1, 1, 
93         5, 1, 1, 5, 1, 1, 5, 1, 
94         1, 10, 5, 10, 5, 10, 5, 10, 
95         5, 10, 1, 5, 3, 1, 4, 3, 
96         1, 4, 3, 1, 4, 3, 1, 5, 
97         1, 1, 5, 1, 1, 5, 1, 1, 
98         5, 1, 1, 10, 5, 10, 5, 10, 
99         5, 10, 5, 10, 1, 5, 3, 1, 
100         4, 3, 1, 4, 3, 1, 4, 3, 
101         1, 5, 1, 1, 5, 1, 1, 5, 
102         1, 1, 5, 1, 1, 10, 5, 10, 
103         5, 10, 5, 10, 5, 1, 5, 3, 
104         1, 4, 3, 1, 4, 3, 1, 4, 
105         3, 1, 5, 1, 1, 5, 1, 1, 
106         5, 1, 1, 5, 1, 1, 10, 5, 
107         10, 5, 10, 5, 10, 5, 10, 10, 
108         4, 1, 19, 15, 15, 14, 16, 15, 
109         15, 14, 16, 15, 15, 14, 16, 15, 
110         15, 14, 16, 15, 15, 14, 6, 6, 
111         6, 1, 1, 1, 6, 8, 6, 8, 
112         7, 6, 8, 7, 6, 8, 7, 6, 
113         8, 7, 7, 15, 15, 16, 16, 16, 
114         15, 15, 16, 16, 16, 15, 15, 16, 
115         16, 16, 15, 15, 16, 16, 16, 15, 
116         15, 15, 15, 14, 16, 15, 15, 14, 
117         16, 15, 15, 14, 16, 15, 15, 14, 
118         16, 15, 15, 14, 6, 6, 6, 1, 
119         1, 1, 6, 8, 6, 8, 7, 6, 
120         8, 7, 6, 8, 7, 6, 8, 7, 
121         7, 15, 15, 16, 16, 16, 15, 15, 
122         16, 16, 16, 15, 15, 16, 16, 16, 
123         15, 15, 16, 16, 16, 5, 15, 15, 
124         14, 16, 15, 15, 14, 16, 15, 15, 
125         14, 16, 15, 15, 14, 16, 15, 15, 
126         14, 6, 6, 6, 1, 1, 1, 6, 
127         8, 6, 8, 7, 6, 8, 7, 6, 
128         8, 7, 6, 8, 7, 7, 15, 15, 
129         16, 16, 16, 15, 15, 16, 16, 16, 
130         15, 15, 16, 16, 16, 15, 15, 16, 
131         16, 16, 10, 15, 5, 15, 15, 14, 
132         16, 15, 15, 14, 16, 15, 15, 14, 
133         16, 15, 15, 14, 16, 15, 15, 14, 
134         6, 6, 6, 1, 1, 1, 6, 8, 
135         6, 8, 7, 6, 8, 7, 6, 8, 
136         7, 6, 8, 7, 7, 15, 15, 16, 
137         16, 16, 15, 15, 16, 16, 16, 15, 
138         15, 16, 16, 16, 15, 15, 16, 16, 
139         16, 15, 17, 15, 17, 10, 6, 1, 
140         1, 1, 6, 16, 8, 6, 6, 1, 
141         1, 1, 6, 16
142 };
143
144 static const short _indic_syllable_machine_index_offsets[] = {
145         0, 2, 8, 12, 14, 19, 23, 25, 
146         30, 34, 36, 41, 45, 47, 53, 55, 
147         57, 63, 65, 67, 73, 75, 77, 83, 
148         85, 87, 98, 104, 115, 121, 132, 138, 
149         149, 155, 166, 168, 174, 178, 180, 185, 
150         189, 191, 196, 200, 202, 207, 211, 213, 
151         219, 221, 223, 229, 231, 233, 239, 241, 
152         243, 249, 251, 253, 264, 270, 281, 287, 
153         298, 304, 315, 321, 332, 334, 340, 344, 
154         346, 351, 355, 357, 362, 366, 368, 373, 
155         377, 379, 385, 387, 389, 395, 397, 399, 
156         405, 407, 409, 415, 417, 419, 430, 436, 
157         447, 453, 464, 470, 481, 487, 489, 495, 
158         499, 501, 506, 510, 512, 517, 521, 523, 
159         528, 532, 534, 540, 542, 544, 550, 552, 
160         554, 560, 562, 564, 570, 572, 574, 585, 
161         591, 602, 608, 619, 625, 636, 642, 653, 
162         664, 669, 671, 691, 707, 723, 738, 755, 
163         771, 787, 802, 819, 835, 851, 866, 883, 
164         899, 915, 930, 947, 963, 979, 994, 1001, 
165         1008, 1015, 1017, 1019, 1021, 1028, 1037, 1044, 
166         1053, 1061, 1068, 1077, 1085, 1092, 1101, 1109, 
167         1116, 1125, 1133, 1141, 1157, 1173, 1190, 1207, 
168         1224, 1240, 1256, 1273, 1290, 1307, 1323, 1339, 
169         1356, 1373, 1390, 1406, 1422, 1439, 1456, 1473, 
170         1489, 1505, 1521, 1537, 1552, 1569, 1585, 1601, 
171         1616, 1633, 1649, 1665, 1680, 1697, 1713, 1729, 
172         1744, 1761, 1777, 1793, 1808, 1815, 1822, 1829, 
173         1831, 1833, 1835, 1842, 1851, 1858, 1867, 1875, 
174         1882, 1891, 1899, 1906, 1915, 1923, 1930, 1939, 
175         1947, 1955, 1971, 1987, 2004, 2021, 2038, 2054, 
176         2070, 2087, 2104, 2121, 2137, 2153, 2170, 2187, 
177         2204, 2220, 2236, 2253, 2270, 2287, 2293, 2309, 
178         2325, 2340, 2357, 2373, 2389, 2404, 2421, 2437, 
179         2453, 2468, 2485, 2501, 2517, 2532, 2549, 2565, 
180         2581, 2596, 2603, 2610, 2617, 2619, 2621, 2623, 
181         2630, 2639, 2646, 2655, 2663, 2670, 2679, 2687, 
182         2694, 2703, 2711, 2718, 2727, 2735, 2743, 2759, 
183         2775, 2792, 2809, 2826, 2842, 2858, 2875, 2892, 
184         2909, 2925, 2941, 2958, 2975, 2992, 3008, 3024, 
185         3041, 3058, 3075, 3086, 3102, 3108, 3124, 3140, 
186         3155, 3172, 3188, 3204, 3219, 3236, 3252, 3268, 
187         3283, 3300, 3316, 3332, 3347, 3364, 3380, 3396, 
188         3411, 3418, 3425, 3432, 3434, 3436, 3438, 3445, 
189         3454, 3461, 3470, 3478, 3485, 3494, 3502, 3509, 
190         3518, 3526, 3533, 3542, 3550, 3558, 3574, 3590, 
191         3607, 3624, 3641, 3657, 3673, 3690, 3707, 3724, 
192         3740, 3756, 3773, 3790, 3807, 3823, 3839, 3856, 
193         3873, 3890, 3906, 3924, 3940, 3958, 3969, 3976, 
194         3978, 3980, 3982, 3989, 4006, 4015, 4022, 4029, 
195         4031, 4033, 4035, 4042
196 };
197
198 static const short _indic_syllable_machine_indicies[] = {
199         1, 0, 2, 3, 3, 4, 1, 0, 
200         5, 5, 4, 0, 4, 0, 6, 6, 
201         7, 1, 0, 8, 8, 7, 0, 7, 
202         0, 9, 9, 10, 1, 0, 11, 11, 
203         10, 0, 10, 0, 12, 12, 13, 1, 
204         0, 14, 14, 13, 0, 13, 0, 15, 
205         0, 0, 0, 1, 0, 16, 0, 17, 
206         0, 18, 12, 12, 13, 1, 0, 19, 
207         0, 20, 0, 21, 9, 9, 10, 1, 
208         0, 22, 0, 23, 0, 24, 6, 6, 
209         7, 1, 0, 25, 0, 26, 0, 2, 
210         3, 3, 4, 1, 0, 0, 0, 0, 
211         27, 0, 28, 3, 3, 4, 1, 0, 
212         28, 3, 3, 4, 1, 0, 0, 0, 
213         0, 29, 0, 30, 3, 3, 4, 1, 
214         0, 30, 3, 3, 4, 1, 0, 0, 
215         0, 0, 31, 0, 32, 3, 3, 4, 
216         1, 0, 32, 3, 3, 4, 1, 0, 
217         0, 0, 0, 33, 0, 34, 3, 3, 
218         4, 1, 0, 34, 3, 3, 4, 1, 
219         0, 0, 0, 0, 35, 0, 37, 36, 
220         38, 39, 39, 40, 37, 36, 41, 41, 
221         40, 36, 40, 36, 42, 42, 43, 37, 
222         36, 44, 44, 43, 36, 43, 36, 45, 
223         45, 46, 37, 36, 47, 47, 46, 36, 
224         46, 36, 48, 48, 49, 37, 36, 50, 
225         50, 49, 36, 49, 36, 51, 36, 36, 
226         36, 37, 36, 52, 36, 53, 36, 54, 
227         48, 48, 49, 37, 36, 55, 36, 56, 
228         36, 57, 45, 45, 46, 37, 36, 58, 
229         36, 59, 36, 60, 42, 42, 43, 37, 
230         36, 61, 36, 62, 36, 38, 39, 39, 
231         40, 37, 36, 36, 36, 36, 63, 36, 
232         64, 39, 39, 40, 37, 36, 64, 39, 
233         39, 40, 37, 36, 36, 36, 36, 65, 
234         36, 66, 39, 39, 40, 37, 36, 66, 
235         39, 39, 40, 37, 36, 36, 36, 36, 
236         67, 36, 68, 39, 39, 40, 37, 36, 
237         68, 39, 39, 40, 37, 36, 36, 36, 
238         36, 69, 36, 70, 39, 39, 40, 37, 
239         36, 70, 39, 39, 40, 37, 36, 36, 
240         36, 36, 71, 36, 73, 72, 74, 75, 
241         75, 76, 73, 72, 78, 78, 76, 77, 
242         76, 77, 79, 79, 80, 73, 72, 81, 
243         81, 80, 72, 80, 72, 82, 82, 83, 
244         73, 72, 84, 84, 83, 72, 83, 72, 
245         85, 85, 86, 73, 72, 87, 87, 86, 
246         72, 86, 72, 88, 72, 72, 72, 73, 
247         72, 89, 72, 90, 72, 91, 85, 85, 
248         86, 73, 72, 92, 72, 93, 72, 94, 
249         82, 82, 83, 73, 72, 95, 72, 96, 
250         72, 97, 79, 79, 80, 73, 72, 98, 
251         72, 99, 72, 74, 75, 75, 76, 73, 
252         72, 72, 72, 72, 100, 72, 101, 75, 
253         75, 76, 73, 72, 101, 75, 75, 76, 
254         73, 72, 72, 72, 72, 102, 72, 103, 
255         75, 75, 76, 73, 72, 103, 75, 75, 
256         76, 73, 72, 72, 72, 72, 104, 72, 
257         105, 75, 75, 76, 73, 72, 105, 75, 
258         75, 76, 73, 72, 72, 72, 72, 106, 
259         72, 107, 75, 75, 76, 73, 72, 109, 
260         108, 110, 111, 111, 112, 109, 108, 113, 
261         113, 112, 108, 112, 108, 114, 114, 115, 
262         109, 108, 116, 116, 115, 108, 115, 108, 
263         117, 117, 118, 109, 108, 119, 119, 118, 
264         108, 118, 108, 120, 120, 121, 109, 108, 
265         122, 122, 121, 108, 121, 108, 123, 108, 
266         108, 108, 109, 108, 124, 108, 125, 108, 
267         126, 120, 120, 121, 109, 108, 127, 108, 
268         128, 108, 129, 117, 117, 118, 109, 108, 
269         130, 108, 131, 108, 132, 114, 114, 115, 
270         109, 108, 133, 108, 134, 108, 110, 111, 
271         111, 112, 109, 108, 108, 108, 108, 135, 
272         108, 136, 111, 111, 112, 109, 108, 136, 
273         111, 111, 112, 109, 108, 108, 108, 108, 
274         137, 108, 138, 111, 111, 112, 109, 108, 
275         138, 111, 111, 112, 109, 108, 108, 108, 
276         108, 139, 108, 140, 111, 111, 112, 109, 
277         108, 140, 111, 111, 112, 109, 108, 108, 
278         108, 108, 141, 108, 142, 111, 111, 112, 
279         109, 108, 142, 111, 111, 112, 109, 108, 
280         108, 108, 108, 143, 108, 107, 75, 75, 
281         76, 73, 72, 72, 72, 72, 144, 72, 
282         78, 78, 76, 1, 0, 146, 145, 148, 
283         149, 150, 151, 152, 153, 76, 73, 147, 
284         154, 155, 155, 144, 147, 156, 157, 158, 
285         159, 160, 147, 162, 163, 164, 165, 4, 
286         1, 161, 166, 161, 161, 35, 161, 161, 
287         161, 167, 161, 168, 163, 169, 169, 4, 
288         1, 161, 166, 161, 161, 161, 161, 161, 
289         161, 167, 161, 163, 169, 169, 4, 1, 
290         161, 166, 161, 161, 161, 161, 161, 161, 
291         167, 161, 170, 161, 161, 161, 17, 171, 
292         161, 1, 161, 166, 161, 161, 161, 161, 
293         161, 170, 161, 172, 173, 174, 175, 4, 
294         1, 161, 166, 161, 161, 33, 161, 161, 
295         161, 167, 161, 176, 173, 177, 177, 4, 
296         1, 161, 166, 161, 161, 161, 161, 161, 
297         161, 167, 161, 173, 177, 177, 4, 1, 
298         161, 166, 161, 161, 161, 161, 161, 161, 
299         167, 161, 178, 161, 161, 161, 17, 179, 
300         161, 1, 161, 166, 161, 161, 161, 161, 
301         161, 178, 161, 180, 181, 182, 183, 4, 
302         1, 161, 166, 161, 161, 31, 161, 161, 
303         161, 167, 161, 184, 181, 185, 185, 4, 
304         1, 161, 166, 161, 161, 161, 161, 161, 
305         161, 167, 161, 181, 185, 185, 4, 1, 
306         161, 166, 161, 161, 161, 161, 161, 161, 
307         167, 161, 186, 161, 161, 161, 17, 187, 
308         161, 1, 161, 166, 161, 161, 161, 161, 
309         161, 186, 161, 188, 189, 190, 191, 4, 
310         1, 161, 166, 161, 161, 29, 161, 161, 
311         161, 167, 161, 192, 189, 193, 193, 4, 
312         1, 161, 166, 161, 161, 161, 161, 161, 
313         161, 167, 161, 189, 193, 193, 4, 1, 
314         161, 166, 161, 161, 161, 161, 161, 161, 
315         167, 161, 194, 161, 161, 161, 17, 195, 
316         161, 1, 161, 166, 161, 161, 161, 161, 
317         161, 194, 161, 196, 197, 198, 199, 4, 
318         1, 161, 166, 161, 161, 27, 161, 161, 
319         161, 167, 161, 200, 197, 201, 201, 4, 
320         1, 161, 166, 161, 161, 161, 161, 161, 
321         161, 167, 161, 197, 201, 201, 4, 1, 
322         161, 166, 161, 161, 161, 161, 161, 161, 
323         167, 161, 17, 202, 161, 1, 161, 166, 
324         161, 203, 203, 161, 1, 161, 166, 161, 
325         204, 161, 161, 205, 161, 166, 161, 166, 
326         161, 206, 161, 207, 161, 204, 161, 161, 
327         161, 161, 166, 161, 17, 161, 203, 203, 
328         161, 1, 161, 166, 161, 203, 202, 161, 
329         1, 161, 166, 161, 208, 26, 209, 210, 
330         7, 1, 161, 166, 161, 26, 209, 210, 
331         7, 1, 161, 166, 161, 209, 209, 7, 
332         1, 161, 166, 161, 211, 23, 212, 213, 
333         10, 1, 161, 166, 161, 23, 212, 213, 
334         10, 1, 161, 166, 161, 212, 212, 10, 
335         1, 161, 166, 161, 214, 20, 215, 216, 
336         13, 1, 161, 166, 161, 20, 215, 216, 
337         13, 1, 161, 166, 161, 215, 215, 13, 
338         1, 161, 166, 161, 217, 17, 203, 218, 
339         161, 1, 161, 166, 161, 17, 203, 218, 
340         161, 1, 161, 166, 161, 197, 201, 201, 
341         4, 1, 161, 166, 161, 196, 197, 201, 
342         201, 4, 1, 161, 166, 161, 161, 161, 
343         161, 161, 161, 167, 161, 196, 197, 198, 
344         201, 4, 1, 161, 166, 161, 161, 27, 
345         161, 161, 161, 167, 161, 194, 161, 219, 
346         161, 203, 203, 161, 1, 161, 166, 161, 
347         161, 161, 161, 161, 194, 161, 194, 161, 
348         161, 161, 203, 203, 161, 1, 161, 166, 
349         161, 161, 161, 161, 161, 194, 161, 194, 
350         161, 161, 161, 203, 195, 161, 1, 161, 
351         166, 161, 161, 161, 161, 161, 194, 161, 
352         188, 189, 193, 193, 4, 1, 161, 166, 
353         161, 161, 161, 161, 161, 161, 167, 161, 
354         188, 189, 190, 193, 4, 1, 161, 166, 
355         161, 161, 29, 161, 161, 161, 167, 161, 
356         186, 161, 220, 161, 203, 203, 161, 1, 
357         161, 166, 161, 161, 161, 161, 161, 186, 
358         161, 186, 161, 161, 161, 203, 203, 161, 
359         1, 161, 166, 161, 161, 161, 161, 161, 
360         186, 161, 186, 161, 161, 161, 203, 187, 
361         161, 1, 161, 166, 161, 161, 161, 161, 
362         161, 186, 161, 180, 181, 185, 185, 4, 
363         1, 161, 166, 161, 161, 161, 161, 161, 
364         161, 167, 161, 180, 181, 182, 185, 4, 
365         1, 161, 166, 161, 161, 31, 161, 161, 
366         161, 167, 161, 178, 161, 221, 161, 203, 
367         203, 161, 1, 161, 166, 161, 161, 161, 
368         161, 161, 178, 161, 178, 161, 161, 161, 
369         203, 203, 161, 1, 161, 166, 161, 161, 
370         161, 161, 161, 178, 161, 178, 161, 161, 
371         161, 203, 179, 161, 1, 161, 166, 161, 
372         161, 161, 161, 161, 178, 161, 172, 173, 
373         177, 177, 4, 1, 161, 166, 161, 161, 
374         161, 161, 161, 161, 167, 161, 172, 173, 
375         174, 177, 4, 1, 161, 166, 161, 161, 
376         33, 161, 161, 161, 167, 161, 170, 161, 
377         222, 161, 203, 203, 161, 1, 161, 166, 
378         161, 161, 161, 161, 161, 170, 161, 170, 
379         161, 161, 161, 203, 203, 161, 1, 161, 
380         166, 161, 161, 161, 161, 161, 170, 161, 
381         170, 161, 161, 161, 203, 171, 161, 1, 
382         161, 166, 161, 161, 161, 161, 161, 170, 
383         161, 162, 163, 169, 169, 4, 1, 161, 
384         166, 161, 161, 161, 161, 161, 161, 167, 
385         161, 162, 163, 164, 169, 4, 1, 161, 
386         166, 161, 161, 35, 161, 161, 161, 167, 
387         161, 224, 225, 226, 227, 40, 37, 223, 
388         228, 223, 223, 71, 223, 223, 223, 229, 
389         223, 230, 225, 231, 227, 40, 37, 223, 
390         228, 223, 223, 223, 223, 223, 223, 229, 
391         223, 225, 231, 227, 40, 37, 223, 228, 
392         223, 223, 223, 223, 223, 223, 229, 223, 
393         232, 223, 223, 223, 53, 233, 223, 37, 
394         223, 228, 223, 223, 223, 223, 223, 232, 
395         223, 234, 235, 236, 237, 40, 37, 223, 
396         228, 223, 223, 69, 223, 223, 223, 229, 
397         223, 238, 235, 239, 239, 40, 37, 223, 
398         228, 223, 223, 223, 223, 223, 223, 229, 
399         223, 235, 239, 239, 40, 37, 223, 228, 
400         223, 223, 223, 223, 223, 223, 229, 223, 
401         240, 223, 223, 223, 53, 241, 223, 37, 
402         223, 228, 223, 223, 223, 223, 223, 240, 
403         223, 242, 243, 244, 245, 40, 37, 223, 
404         228, 223, 223, 67, 223, 223, 223, 229, 
405         223, 246, 243, 247, 247, 40, 37, 223, 
406         228, 223, 223, 223, 223, 223, 223, 229, 
407         223, 243, 247, 247, 40, 37, 223, 228, 
408         223, 223, 223, 223, 223, 223, 229, 223, 
409         248, 223, 223, 223, 53, 249, 223, 37, 
410         223, 228, 223, 223, 223, 223, 223, 248, 
411         223, 250, 251, 252, 253, 40, 37, 223, 
412         228, 223, 223, 65, 223, 223, 223, 229, 
413         223, 254, 251, 255, 255, 40, 37, 223, 
414         228, 223, 223, 223, 223, 223, 223, 229, 
415         223, 251, 255, 255, 40, 37, 223, 228, 
416         223, 223, 223, 223, 223, 223, 229, 223, 
417         256, 223, 223, 223, 53, 257, 223, 37, 
418         223, 228, 223, 223, 223, 223, 223, 256, 
419         223, 258, 259, 260, 261, 40, 37, 223, 
420         228, 223, 223, 63, 223, 223, 223, 229, 
421         223, 262, 259, 263, 263, 40, 37, 223, 
422         228, 223, 223, 223, 223, 223, 223, 229, 
423         223, 259, 263, 263, 40, 37, 223, 228, 
424         223, 223, 223, 223, 223, 223, 229, 223, 
425         53, 264, 223, 37, 223, 228, 223, 265, 
426         265, 223, 37, 223, 228, 223, 266, 223, 
427         223, 267, 223, 228, 223, 228, 223, 268, 
428         223, 269, 223, 266, 223, 223, 223, 223, 
429         228, 223, 53, 223, 265, 265, 223, 37, 
430         223, 228, 223, 265, 264, 223, 37, 223, 
431         228, 223, 270, 62, 271, 272, 43, 37, 
432         223, 228, 223, 62, 271, 272, 43, 37, 
433         223, 228, 223, 271, 271, 43, 37, 223, 
434         228, 223, 273, 59, 274, 275, 46, 37, 
435         223, 228, 223, 59, 274, 275, 46, 37, 
436         223, 228, 223, 274, 274, 46, 37, 223, 
437         228, 223, 276, 56, 277, 278, 49, 37, 
438         223, 228, 223, 56, 277, 278, 49, 37, 
439         223, 228, 223, 277, 277, 49, 37, 223, 
440         228, 223, 279, 53, 265, 280, 223, 37, 
441         223, 228, 223, 53, 265, 280, 223, 37, 
442         223, 228, 223, 259, 263, 263, 40, 37, 
443         223, 228, 223, 258, 259, 263, 263, 40, 
444         37, 223, 228, 223, 223, 223, 223, 223, 
445         223, 229, 223, 258, 259, 260, 263, 40, 
446         37, 223, 228, 223, 223, 63, 223, 223, 
447         223, 229, 223, 256, 223, 281, 223, 265, 
448         265, 223, 37, 223, 228, 223, 223, 223, 
449         223, 223, 256, 223, 256, 223, 223, 223, 
450         265, 265, 223, 37, 223, 228, 223, 223, 
451         223, 223, 223, 256, 223, 256, 223, 223, 
452         223, 265, 257, 223, 37, 223, 228, 223, 
453         223, 223, 223, 223, 256, 223, 250, 251, 
454         255, 255, 40, 37, 223, 228, 223, 223, 
455         223, 223, 223, 223, 229, 223, 250, 251, 
456         252, 255, 40, 37, 223, 228, 223, 223, 
457         65, 223, 223, 223, 229, 223, 248, 223, 
458         282, 223, 265, 265, 223, 37, 223, 228, 
459         223, 223, 223, 223, 223, 248, 223, 248, 
460         223, 223, 223, 265, 265, 223, 37, 223, 
461         228, 223, 223, 223, 223, 223, 248, 223, 
462         248, 223, 223, 223, 265, 249, 223, 37, 
463         223, 228, 223, 223, 223, 223, 223, 248, 
464         223, 242, 243, 247, 247, 40, 37, 223, 
465         228, 223, 223, 223, 223, 223, 223, 229, 
466         223, 242, 243, 244, 247, 40, 37, 223, 
467         228, 223, 223, 67, 223, 223, 223, 229, 
468         223, 240, 223, 283, 223, 265, 265, 223, 
469         37, 223, 228, 223, 223, 223, 223, 223, 
470         240, 223, 240, 223, 223, 223, 265, 265, 
471         223, 37, 223, 228, 223, 223, 223, 223, 
472         223, 240, 223, 240, 223, 223, 223, 265, 
473         241, 223, 37, 223, 228, 223, 223, 223, 
474         223, 223, 240, 223, 234, 235, 239, 239, 
475         40, 37, 223, 228, 223, 223, 223, 223, 
476         223, 223, 229, 223, 234, 235, 236, 239, 
477         40, 37, 223, 228, 223, 223, 69, 223, 
478         223, 223, 229, 223, 232, 223, 284, 223, 
479         265, 265, 223, 37, 223, 228, 223, 223, 
480         223, 223, 223, 232, 223, 232, 223, 223, 
481         223, 265, 265, 223, 37, 223, 228, 223, 
482         223, 223, 223, 223, 232, 223, 232, 223, 
483         223, 223, 265, 233, 223, 37, 223, 228, 
484         223, 223, 223, 223, 223, 232, 223, 70, 
485         39, 39, 40, 37, 223, 224, 225, 231, 
486         227, 40, 37, 223, 228, 223, 223, 223, 
487         223, 223, 223, 229, 223, 286, 151, 287, 
488         287, 76, 73, 285, 154, 285, 285, 285, 
489         285, 285, 285, 158, 285, 151, 287, 287, 
490         76, 73, 285, 154, 285, 285, 285, 285, 
491         285, 285, 158, 285, 288, 285, 285, 285, 
492         90, 289, 285, 73, 285, 154, 285, 285, 
493         285, 285, 285, 288, 285, 290, 291, 292, 
494         293, 76, 73, 285, 154, 285, 285, 106, 
495         285, 285, 285, 158, 285, 294, 291, 295, 
496         295, 76, 73, 285, 154, 285, 285, 285, 
497         285, 285, 285, 158, 285, 291, 295, 295, 
498         76, 73, 285, 154, 285, 285, 285, 285, 
499         285, 285, 158, 285, 296, 285, 285, 285, 
500         90, 297, 285, 73, 285, 154, 285, 285, 
501         285, 285, 285, 296, 285, 298, 299, 300, 
502         301, 76, 73, 285, 154, 285, 285, 104, 
503         285, 285, 285, 158, 285, 302, 299, 303, 
504         303, 76, 73, 285, 154, 285, 285, 285, 
505         285, 285, 285, 158, 285, 299, 303, 303, 
506         76, 73, 285, 154, 285, 285, 285, 285, 
507         285, 285, 158, 285, 304, 285, 285, 285, 
508         90, 305, 285, 73, 285, 154, 285, 285, 
509         285, 285, 285, 304, 285, 306, 307, 308, 
510         309, 76, 73, 285, 154, 285, 285, 102, 
511         285, 285, 285, 158, 285, 310, 307, 311, 
512         311, 76, 73, 285, 154, 285, 285, 285, 
513         285, 285, 285, 158, 285, 307, 311, 311, 
514         76, 73, 285, 154, 285, 285, 285, 285, 
515         285, 285, 158, 285, 312, 285, 285, 285, 
516         90, 313, 285, 73, 285, 154, 285, 285, 
517         285, 285, 285, 312, 285, 314, 315, 316, 
518         317, 76, 73, 285, 154, 285, 285, 100, 
519         285, 285, 285, 158, 285, 318, 315, 319, 
520         319, 76, 73, 285, 154, 285, 285, 285, 
521         285, 285, 285, 158, 285, 315, 319, 319, 
522         76, 73, 285, 154, 285, 285, 285, 285, 
523         285, 285, 158, 285, 90, 320, 285, 73, 
524         285, 154, 285, 321, 321, 285, 73, 285, 
525         154, 285, 322, 285, 285, 323, 285, 154, 
526         285, 154, 285, 324, 285, 325, 285, 322, 
527         285, 285, 285, 285, 154, 285, 90, 285, 
528         321, 321, 285, 73, 285, 154, 285, 321, 
529         320, 285, 73, 285, 154, 285, 326, 99, 
530         327, 328, 80, 73, 285, 154, 285, 99, 
531         327, 328, 80, 73, 285, 154, 285, 327, 
532         327, 80, 73, 285, 154, 285, 329, 96, 
533         330, 331, 83, 73, 285, 154, 285, 96, 
534         330, 331, 83, 73, 285, 154, 285, 330, 
535         330, 83, 73, 285, 154, 285, 332, 93, 
536         333, 334, 86, 73, 285, 154, 285, 93, 
537         333, 334, 86, 73, 285, 154, 285, 333, 
538         333, 86, 73, 285, 154, 285, 335, 90, 
539         321, 336, 285, 73, 285, 154, 285, 90, 
540         321, 336, 285, 73, 285, 154, 285, 315, 
541         319, 319, 76, 73, 285, 154, 285, 314, 
542         315, 319, 319, 76, 73, 285, 154, 285, 
543         285, 285, 285, 285, 285, 158, 285, 314, 
544         315, 316, 319, 76, 73, 285, 154, 285, 
545         285, 100, 285, 285, 285, 158, 285, 312, 
546         285, 337, 285, 321, 321, 285, 73, 285, 
547         154, 285, 285, 285, 285, 285, 312, 285, 
548         312, 285, 285, 285, 321, 321, 285, 73, 
549         285, 154, 285, 285, 285, 285, 285, 312, 
550         285, 312, 285, 285, 285, 321, 313, 285, 
551         73, 285, 154, 285, 285, 285, 285, 285, 
552         312, 285, 306, 307, 311, 311, 76, 73, 
553         285, 154, 285, 285, 285, 285, 285, 285, 
554         158, 285, 306, 307, 308, 311, 76, 73, 
555         285, 154, 285, 285, 102, 285, 285, 285, 
556         158, 285, 304, 285, 338, 285, 321, 321, 
557         285, 73, 285, 154, 285, 285, 285, 285, 
558         285, 304, 285, 304, 285, 285, 285, 321, 
559         321, 285, 73, 285, 154, 285, 285, 285, 
560         285, 285, 304, 285, 304, 285, 285, 285, 
561         321, 305, 285, 73, 285, 154, 285, 285, 
562         285, 285, 285, 304, 285, 298, 299, 303, 
563         303, 76, 73, 285, 154, 285, 285, 285, 
564         285, 285, 285, 158, 285, 298, 299, 300, 
565         303, 76, 73, 285, 154, 285, 285, 104, 
566         285, 285, 285, 158, 285, 296, 285, 339, 
567         285, 321, 321, 285, 73, 285, 154, 285, 
568         285, 285, 285, 285, 296, 285, 296, 285, 
569         285, 285, 321, 321, 285, 73, 285, 154, 
570         285, 285, 285, 285, 285, 296, 285, 296, 
571         285, 285, 285, 321, 297, 285, 73, 285, 
572         154, 285, 285, 285, 285, 285, 296, 285, 
573         290, 291, 295, 295, 76, 73, 285, 154, 
574         285, 285, 285, 285, 285, 285, 158, 285, 
575         290, 291, 292, 295, 76, 73, 285, 154, 
576         285, 285, 106, 285, 285, 285, 158, 285, 
577         288, 285, 340, 285, 321, 321, 285, 73, 
578         285, 154, 285, 285, 285, 285, 285, 288, 
579         285, 288, 285, 285, 285, 321, 321, 285, 
580         73, 285, 154, 285, 285, 285, 285, 285, 
581         288, 285, 288, 285, 285, 285, 321, 289, 
582         285, 73, 285, 154, 285, 285, 285, 285, 
583         285, 288, 285, 107, 75, 75, 76, 73, 
584         341, 341, 341, 341, 144, 341, 150, 151, 
585         287, 287, 76, 73, 285, 154, 285, 285, 
586         285, 285, 285, 285, 158, 285, 107, 75, 
587         75, 76, 73, 341, 343, 344, 345, 346, 
588         112, 109, 342, 347, 342, 342, 143, 342, 
589         342, 342, 348, 342, 349, 344, 346, 346, 
590         112, 109, 342, 347, 342, 342, 342, 342, 
591         342, 342, 348, 342, 344, 346, 346, 112, 
592         109, 342, 347, 342, 342, 342, 342, 342, 
593         342, 348, 342, 350, 342, 342, 342, 125, 
594         351, 342, 109, 342, 347, 342, 342, 342, 
595         342, 342, 350, 342, 352, 353, 354, 355, 
596         112, 109, 342, 347, 342, 342, 141, 342, 
597         342, 342, 348, 342, 356, 353, 357, 357, 
598         112, 109, 342, 347, 342, 342, 342, 342, 
599         342, 342, 348, 342, 353, 357, 357, 112, 
600         109, 342, 347, 342, 342, 342, 342, 342, 
601         342, 348, 342, 358, 342, 342, 342, 125, 
602         359, 342, 109, 342, 347, 342, 342, 342, 
603         342, 342, 358, 342, 360, 361, 362, 363, 
604         112, 109, 342, 347, 342, 342, 139, 342, 
605         342, 342, 348, 342, 364, 361, 365, 365, 
606         112, 109, 342, 347, 342, 342, 342, 342, 
607         342, 342, 348, 342, 361, 365, 365, 112, 
608         109, 342, 347, 342, 342, 342, 342, 342, 
609         342, 348, 342, 366, 342, 342, 342, 125, 
610         367, 342, 109, 342, 347, 342, 342, 342, 
611         342, 342, 366, 342, 368, 369, 370, 371, 
612         112, 109, 342, 347, 342, 342, 137, 342, 
613         342, 342, 348, 342, 372, 369, 373, 373, 
614         112, 109, 342, 347, 342, 342, 342, 342, 
615         342, 342, 348, 342, 369, 373, 373, 112, 
616         109, 342, 347, 342, 342, 342, 342, 342, 
617         342, 348, 342, 374, 342, 342, 342, 125, 
618         375, 342, 109, 342, 347, 342, 342, 342, 
619         342, 342, 374, 342, 376, 377, 378, 379, 
620         112, 109, 342, 347, 342, 342, 135, 342, 
621         342, 342, 348, 342, 380, 377, 381, 381, 
622         112, 109, 342, 347, 342, 342, 342, 342, 
623         342, 342, 348, 342, 377, 381, 381, 112, 
624         109, 342, 347, 342, 342, 342, 342, 342, 
625         342, 348, 342, 125, 382, 342, 109, 342, 
626         347, 342, 383, 383, 342, 109, 342, 347, 
627         342, 384, 342, 342, 385, 342, 347, 342, 
628         347, 342, 386, 342, 387, 342, 384, 342, 
629         342, 342, 342, 347, 342, 125, 342, 383, 
630         383, 342, 109, 342, 347, 342, 383, 382, 
631         342, 109, 342, 347, 342, 388, 134, 389, 
632         390, 115, 109, 342, 347, 342, 134, 389, 
633         390, 115, 109, 342, 347, 342, 389, 389, 
634         115, 109, 342, 347, 342, 391, 131, 392, 
635         393, 118, 109, 342, 347, 342, 131, 392, 
636         393, 118, 109, 342, 347, 342, 392, 392, 
637         118, 109, 342, 347, 342, 394, 128, 395, 
638         396, 121, 109, 342, 347, 342, 128, 395, 
639         396, 121, 109, 342, 347, 342, 395, 395, 
640         121, 109, 342, 347, 342, 397, 125, 383, 
641         398, 342, 109, 342, 347, 342, 125, 383, 
642         398, 342, 109, 342, 347, 342, 377, 381, 
643         381, 112, 109, 342, 347, 342, 376, 377, 
644         381, 381, 112, 109, 342, 347, 342, 342, 
645         342, 342, 342, 342, 348, 342, 376, 377, 
646         378, 381, 112, 109, 342, 347, 342, 342, 
647         135, 342, 342, 342, 348, 342, 374, 342, 
648         399, 342, 383, 383, 342, 109, 342, 347, 
649         342, 342, 342, 342, 342, 374, 342, 374, 
650         342, 342, 342, 383, 383, 342, 109, 342, 
651         347, 342, 342, 342, 342, 342, 374, 342, 
652         374, 342, 342, 342, 383, 375, 342, 109, 
653         342, 347, 342, 342, 342, 342, 342, 374, 
654         342, 368, 369, 373, 373, 112, 109, 342, 
655         347, 342, 342, 342, 342, 342, 342, 348, 
656         342, 368, 369, 370, 373, 112, 109, 342, 
657         347, 342, 342, 137, 342, 342, 342, 348, 
658         342, 366, 342, 400, 342, 383, 383, 342, 
659         109, 342, 347, 342, 342, 342, 342, 342, 
660         366, 342, 366, 342, 342, 342, 383, 383, 
661         342, 109, 342, 347, 342, 342, 342, 342, 
662         342, 366, 342, 366, 342, 342, 342, 383, 
663         367, 342, 109, 342, 347, 342, 342, 342, 
664         342, 342, 366, 342, 360, 361, 365, 365, 
665         112, 109, 342, 347, 342, 342, 342, 342, 
666         342, 342, 348, 342, 360, 361, 362, 365, 
667         112, 109, 342, 347, 342, 342, 139, 342, 
668         342, 342, 348, 342, 358, 342, 401, 342, 
669         383, 383, 342, 109, 342, 347, 342, 342, 
670         342, 342, 342, 358, 342, 358, 342, 342, 
671         342, 383, 383, 342, 109, 342, 347, 342, 
672         342, 342, 342, 342, 358, 342, 358, 342, 
673         342, 342, 383, 359, 342, 109, 342, 347, 
674         342, 342, 342, 342, 342, 358, 342, 352, 
675         353, 357, 357, 112, 109, 342, 347, 342, 
676         342, 342, 342, 342, 342, 348, 342, 352, 
677         353, 354, 357, 112, 109, 342, 347, 342, 
678         342, 141, 342, 342, 342, 348, 342, 350, 
679         342, 402, 342, 383, 383, 342, 109, 342, 
680         347, 342, 342, 342, 342, 342, 350, 342, 
681         350, 342, 342, 342, 383, 383, 342, 109, 
682         342, 347, 342, 342, 342, 342, 342, 350, 
683         342, 350, 342, 342, 342, 383, 351, 342, 
684         109, 342, 347, 342, 342, 342, 342, 342, 
685         350, 342, 343, 344, 346, 346, 112, 109, 
686         342, 347, 342, 342, 342, 342, 342, 342, 
687         348, 342, 148, 149, 150, 151, 403, 287, 
688         76, 73, 285, 154, 155, 155, 144, 285, 
689         285, 148, 158, 285, 162, 404, 164, 165, 
690         4, 1, 161, 166, 161, 161, 35, 161, 
691         161, 161, 167, 161, 170, 149, 150, 151, 
692         405, 406, 76, 407, 161, 408, 161, 155, 
693         144, 161, 161, 170, 158, 161, 107, 409, 
694         409, 76, 407, 161, 166, 161, 161, 144, 
695         161, 410, 161, 161, 411, 161, 408, 161, 
696         408, 161, 412, 161, 207, 161, 410, 161, 
697         161, 161, 161, 408, 161, 170, 161, 222, 
698         107, 409, 409, 76, 407, 161, 166, 161, 
699         161, 161, 161, 161, 170, 161, 414, 413, 
700         415, 415, 413, 146, 413, 416, 413, 415, 
701         415, 413, 146, 413, 416, 413, 417, 413, 
702         413, 418, 413, 416, 413, 416, 413, 419, 
703         413, 420, 413, 417, 413, 413, 413, 413, 
704         416, 413, 148, 341, 341, 341, 341, 341, 
705         341, 341, 341, 341, 155, 341, 341, 341, 
706         341, 148, 341, 0
707 };
708
709 static const short _indic_syllable_machine_trans_targs[] = {
710         138, 160, 166, 2, 167, 3, 5, 170, 
711         6, 8, 173, 9, 11, 176, 12, 14, 
712         15, 159, 17, 18, 175, 20, 21, 172, 
713         23, 24, 169, 179, 183, 184, 188, 189, 
714         193, 194, 198, 199, 138, 222, 228, 36, 
715         229, 37, 39, 232, 40, 42, 235, 43, 
716         45, 238, 46, 48, 49, 221, 51, 52, 
717         237, 54, 55, 234, 57, 58, 231, 241, 
718         245, 246, 250, 251, 255, 256, 260, 262, 
719         138, 283, 289, 70, 290, 138, 71, 73, 
720         293, 74, 76, 296, 77, 79, 299, 80, 
721         82, 83, 282, 85, 86, 298, 88, 89, 
722         295, 91, 92, 292, 302, 306, 307, 311, 
723         312, 316, 317, 321, 138, 346, 352, 103, 
724         353, 104, 106, 356, 107, 109, 359, 110, 
725         112, 362, 113, 115, 116, 345, 118, 119, 
726         361, 121, 122, 358, 124, 125, 355, 365, 
727         369, 370, 374, 375, 379, 380, 384, 385, 
728         323, 138, 398, 138, 139, 201, 263, 265, 
729         322, 324, 285, 325, 386, 387, 301, 396, 
730         403, 138, 140, 142, 33, 200, 162, 178, 
731         141, 32, 143, 196, 144, 146, 31, 195, 
732         145, 30, 147, 191, 148, 150, 29, 190, 
733         149, 28, 151, 186, 152, 154, 27, 185, 
734         153, 26, 155, 181, 156, 158, 25, 180, 
735         157, 1, 165, 0, 161, 164, 163, 138, 
736         168, 4, 22, 171, 7, 19, 174, 10, 
737         16, 177, 13, 182, 187, 192, 197, 138, 
738         202, 204, 67, 261, 224, 240, 203, 66, 
739         205, 258, 206, 208, 65, 257, 207, 64, 
740         209, 253, 210, 212, 63, 252, 211, 62, 
741         213, 248, 214, 216, 61, 247, 215, 60, 
742         217, 243, 218, 220, 59, 242, 219, 35, 
743         227, 34, 223, 226, 225, 138, 230, 38, 
744         56, 233, 41, 53, 236, 44, 50, 239, 
745         47, 244, 249, 254, 259, 138, 264, 100, 
746         266, 319, 267, 269, 99, 318, 268, 98, 
747         270, 314, 271, 273, 97, 313, 272, 96, 
748         274, 309, 275, 277, 95, 308, 276, 94, 
749         278, 304, 279, 281, 93, 303, 280, 69, 
750         288, 68, 284, 287, 286, 138, 291, 72, 
751         90, 294, 75, 87, 297, 78, 84, 300, 
752         81, 305, 310, 315, 320, 138, 138, 326, 
753         328, 134, 133, 348, 364, 327, 329, 382, 
754         330, 332, 132, 381, 331, 131, 333, 377, 
755         334, 336, 130, 376, 335, 129, 337, 372, 
756         338, 340, 128, 371, 339, 127, 341, 367, 
757         342, 344, 126, 366, 343, 102, 351, 101, 
758         347, 350, 349, 138, 354, 105, 123, 357, 
759         108, 120, 360, 111, 117, 363, 114, 368, 
760         373, 378, 383, 135, 388, 389, 395, 390, 
761         392, 136, 391, 394, 393, 138, 397, 137, 
762         400, 399, 402, 401, 138
763 };
764
765 static const char _indic_syllable_machine_trans_actions[] = {
766         1, 0, 2, 0, 2, 0, 0, 2, 
767         0, 0, 2, 0, 0, 2, 0, 0, 
768         0, 2, 0, 0, 2, 0, 0, 2, 
769         0, 0, 2, 2, 2, 2, 2, 2, 
770         2, 2, 2, 2, 3, 0, 2, 0, 
771         2, 0, 0, 2, 0, 0, 2, 0, 
772         0, 2, 0, 0, 0, 2, 0, 0, 
773         2, 0, 0, 2, 0, 0, 2, 2, 
774         2, 2, 2, 2, 2, 2, 2, 2, 
775         4, 0, 2, 0, 2, 5, 0, 0, 
776         2, 0, 0, 2, 0, 0, 2, 0, 
777         0, 0, 2, 0, 0, 2, 0, 0, 
778         2, 0, 0, 2, 6, 2, 6, 2, 
779         6, 2, 6, 2, 7, 0, 2, 0, 
780         2, 0, 0, 2, 0, 0, 2, 0, 
781         0, 2, 0, 0, 0, 2, 0, 0, 
782         2, 0, 0, 2, 0, 0, 2, 2, 
783         2, 2, 2, 2, 2, 2, 2, 2, 
784         6, 8, 0, 11, 2, 2, 6, 0, 
785         12, 12, 0, 2, 6, 2, 6, 2, 
786         0, 13, 2, 0, 0, 2, 0, 2, 
787         2, 0, 2, 2, 2, 0, 0, 2, 
788         2, 0, 2, 2, 2, 0, 0, 2, 
789         2, 0, 2, 2, 2, 0, 0, 2, 
790         2, 0, 2, 2, 2, 0, 0, 2, 
791         2, 0, 2, 0, 0, 0, 0, 14, 
792         2, 0, 0, 2, 0, 0, 2, 0, 
793         0, 2, 0, 2, 2, 2, 2, 15, 
794         2, 0, 0, 2, 0, 2, 2, 0, 
795         2, 2, 2, 0, 0, 2, 2, 0, 
796         2, 2, 2, 0, 0, 2, 2, 0, 
797         2, 2, 2, 0, 0, 2, 2, 0, 
798         2, 2, 2, 0, 0, 2, 2, 0, 
799         2, 0, 0, 0, 0, 16, 2, 0, 
800         0, 2, 0, 0, 2, 0, 0, 2, 
801         0, 2, 2, 2, 2, 17, 6, 0, 
802         6, 2, 6, 0, 0, 6, 6, 0, 
803         6, 2, 6, 0, 0, 6, 6, 0, 
804         6, 2, 6, 0, 0, 6, 6, 0, 
805         6, 2, 6, 0, 0, 6, 6, 0, 
806         2, 0, 0, 0, 0, 18, 2, 0, 
807         0, 2, 0, 0, 2, 0, 0, 2, 
808         0, 2, 2, 2, 2, 19, 20, 2, 
809         0, 0, 0, 0, 2, 2, 2, 2, 
810         2, 0, 0, 2, 2, 0, 2, 2, 
811         2, 0, 0, 2, 2, 0, 2, 2, 
812         2, 0, 0, 2, 2, 0, 2, 2, 
813         2, 0, 0, 2, 2, 0, 2, 0, 
814         0, 0, 0, 21, 2, 0, 0, 2, 
815         0, 0, 2, 0, 0, 2, 0, 2, 
816         2, 2, 2, 0, 0, 22, 22, 0, 
817         0, 0, 0, 0, 0, 23, 2, 0, 
818         0, 0, 0, 0, 24
819 };
820
821 static const char _indic_syllable_machine_to_state_actions[] = {
822         0, 0, 0, 0, 0, 0, 0, 0, 
823         0, 0, 0, 0, 0, 0, 0, 0, 
824         0, 0, 0, 0, 0, 0, 0, 0, 
825         0, 0, 0, 0, 0, 0, 0, 0, 
826         0, 0, 0, 0, 0, 0, 0, 0, 
827         0, 0, 0, 0, 0, 0, 0, 0, 
828         0, 0, 0, 0, 0, 0, 0, 0, 
829         0, 0, 0, 0, 0, 0, 0, 0, 
830         0, 0, 0, 0, 0, 0, 0, 0, 
831         0, 0, 0, 0, 0, 0, 0, 0, 
832         0, 0, 0, 0, 0, 0, 0, 0, 
833         0, 0, 0, 0, 0, 0, 0, 0, 
834         0, 0, 0, 0, 0, 0, 0, 0, 
835         0, 0, 0, 0, 0, 0, 0, 0, 
836         0, 0, 0, 0, 0, 0, 0, 0, 
837         0, 0, 0, 0, 0, 0, 0, 0, 
838         0, 0, 0, 0, 0, 0, 0, 0, 
839         0, 0, 9, 0, 0, 0, 0, 0, 
840         0, 0, 0, 0, 0, 0, 0, 0, 
841         0, 0, 0, 0, 0, 0, 0, 0, 
842         0, 0, 0, 0, 0, 0, 0, 0, 
843         0, 0, 0, 0, 0, 0, 0, 0, 
844         0, 0, 0, 0, 0, 0, 0, 0, 
845         0, 0, 0, 0, 0, 0, 0, 0, 
846         0, 0, 0, 0, 0, 0, 0, 0, 
847         0, 0, 0, 0, 0, 0, 0, 0, 
848         0, 0, 0, 0, 0, 0, 0, 0, 
849         0, 0, 0, 0, 0, 0, 0, 0, 
850         0, 0, 0, 0, 0, 0, 0, 0, 
851         0, 0, 0, 0, 0, 0, 0, 0, 
852         0, 0, 0, 0, 0, 0, 0, 0, 
853         0, 0, 0, 0, 0, 0, 0, 0, 
854         0, 0, 0, 0, 0, 0, 0, 0, 
855         0, 0, 0, 0, 0, 0, 0, 0, 
856         0, 0, 0, 0, 0, 0, 0, 0, 
857         0, 0, 0, 0, 0, 0, 0, 0, 
858         0, 0, 0, 0, 0, 0, 0, 0, 
859         0, 0, 0, 0, 0, 0, 0, 0, 
860         0, 0, 0, 0, 0, 0, 0, 0, 
861         0, 0, 0, 0, 0, 0, 0, 0, 
862         0, 0, 0, 0, 0, 0, 0, 0, 
863         0, 0, 0, 0, 0, 0, 0, 0, 
864         0, 0, 0, 0, 0, 0, 0, 0, 
865         0, 0, 0, 0, 0, 0, 0, 0, 
866         0, 0, 0, 0, 0, 0, 0, 0, 
867         0, 0, 0, 0, 0, 0, 0, 0, 
868         0, 0, 0, 0, 0, 0, 0, 0, 
869         0, 0, 0, 0, 0, 0, 0, 0, 
870         0, 0, 0, 0, 0, 0, 0, 0, 
871         0, 0, 0, 0, 0, 0, 0, 0, 
872         0, 0, 0, 0
873 };
874
875 static const char _indic_syllable_machine_from_state_actions[] = {
876         0, 0, 0, 0, 0, 0, 0, 0, 
877         0, 0, 0, 0, 0, 0, 0, 0, 
878         0, 0, 0, 0, 0, 0, 0, 0, 
879         0, 0, 0, 0, 0, 0, 0, 0, 
880         0, 0, 0, 0, 0, 0, 0, 0, 
881         0, 0, 0, 0, 0, 0, 0, 0, 
882         0, 0, 0, 0, 0, 0, 0, 0, 
883         0, 0, 0, 0, 0, 0, 0, 0, 
884         0, 0, 0, 0, 0, 0, 0, 0, 
885         0, 0, 0, 0, 0, 0, 0, 0, 
886         0, 0, 0, 0, 0, 0, 0, 0, 
887         0, 0, 0, 0, 0, 0, 0, 0, 
888         0, 0, 0, 0, 0, 0, 0, 0, 
889         0, 0, 0, 0, 0, 0, 0, 0, 
890         0, 0, 0, 0, 0, 0, 0, 0, 
891         0, 0, 0, 0, 0, 0, 0, 0, 
892         0, 0, 0, 0, 0, 0, 0, 0, 
893         0, 0, 10, 0, 0, 0, 0, 0, 
894         0, 0, 0, 0, 0, 0, 0, 0, 
895         0, 0, 0, 0, 0, 0, 0, 0, 
896         0, 0, 0, 0, 0, 0, 0, 0, 
897         0, 0, 0, 0, 0, 0, 0, 0, 
898         0, 0, 0, 0, 0, 0, 0, 0, 
899         0, 0, 0, 0, 0, 0, 0, 0, 
900         0, 0, 0, 0, 0, 0, 0, 0, 
901         0, 0, 0, 0, 0, 0, 0, 0, 
902         0, 0, 0, 0, 0, 0, 0, 0, 
903         0, 0, 0, 0, 0, 0, 0, 0, 
904         0, 0, 0, 0, 0, 0, 0, 0, 
905         0, 0, 0, 0, 0, 0, 0, 0, 
906         0, 0, 0, 0, 0, 0, 0, 0, 
907         0, 0, 0, 0, 0, 0, 0, 0, 
908         0, 0, 0, 0, 0, 0, 0, 0, 
909         0, 0, 0, 0, 0, 0, 0, 0, 
910         0, 0, 0, 0, 0, 0, 0, 0, 
911         0, 0, 0, 0, 0, 0, 0, 0, 
912         0, 0, 0, 0, 0, 0, 0, 0, 
913         0, 0, 0, 0, 0, 0, 0, 0, 
914         0, 0, 0, 0, 0, 0, 0, 0, 
915         0, 0, 0, 0, 0, 0, 0, 0, 
916         0, 0, 0, 0, 0, 0, 0, 0, 
917         0, 0, 0, 0, 0, 0, 0, 0, 
918         0, 0, 0, 0, 0, 0, 0, 0, 
919         0, 0, 0, 0, 0, 0, 0, 0, 
920         0, 0, 0, 0, 0, 0, 0, 0, 
921         0, 0, 0, 0, 0, 0, 0, 0, 
922         0, 0, 0, 0, 0, 0, 0, 0, 
923         0, 0, 0, 0, 0, 0, 0, 0, 
924         0, 0, 0, 0, 0, 0, 0, 0, 
925         0, 0, 0, 0, 0, 0, 0, 0, 
926         0, 0, 0, 0
927 };
928
929 static const short _indic_syllable_machine_eof_trans[] = {
930         1, 1, 1, 1, 1, 1, 1, 1, 
931         1, 1, 1, 1, 1, 1, 1, 1, 
932         1, 1, 1, 1, 1, 1, 1, 1, 
933         1, 1, 1, 1, 1, 1, 1, 1, 
934         1, 1, 37, 37, 37, 37, 37, 37, 
935         37, 37, 37, 37, 37, 37, 37, 37, 
936         37, 37, 37, 37, 37, 37, 37, 37, 
937         37, 37, 37, 37, 37, 37, 37, 37, 
938         37, 37, 37, 37, 73, 73, 78, 78, 
939         73, 73, 73, 73, 73, 73, 73, 73, 
940         73, 73, 73, 73, 73, 73, 73, 73, 
941         73, 73, 73, 73, 73, 73, 73, 73, 
942         73, 73, 73, 73, 73, 109, 109, 109, 
943         109, 109, 109, 109, 109, 109, 109, 109, 
944         109, 109, 109, 109, 109, 109, 109, 109, 
945         109, 109, 109, 109, 109, 109, 109, 109, 
946         109, 109, 109, 109, 109, 109, 109, 73, 
947         1, 146, 0, 162, 162, 162, 162, 162, 
948         162, 162, 162, 162, 162, 162, 162, 162, 
949         162, 162, 162, 162, 162, 162, 162, 162, 
950         162, 162, 162, 162, 162, 162, 162, 162, 
951         162, 162, 162, 162, 162, 162, 162, 162, 
952         162, 162, 162, 162, 162, 162, 162, 162, 
953         162, 162, 162, 162, 162, 162, 162, 162, 
954         162, 162, 162, 162, 162, 162, 162, 162, 
955         162, 224, 224, 224, 224, 224, 224, 224, 
956         224, 224, 224, 224, 224, 224, 224, 224, 
957         224, 224, 224, 224, 224, 224, 224, 224, 
958         224, 224, 224, 224, 224, 224, 224, 224, 
959         224, 224, 224, 224, 224, 224, 224, 224, 
960         224, 224, 224, 224, 224, 224, 224, 224, 
961         224, 224, 224, 224, 224, 224, 224, 224, 
962         224, 224, 224, 224, 224, 224, 224, 286, 
963         286, 286, 286, 286, 286, 286, 286, 286, 
964         286, 286, 286, 286, 286, 286, 286, 286, 
965         286, 286, 286, 286, 286, 286, 286, 286, 
966         286, 286, 286, 286, 286, 286, 286, 286, 
967         286, 286, 286, 286, 286, 286, 286, 286, 
968         286, 286, 286, 286, 286, 286, 286, 286, 
969         286, 286, 286, 286, 286, 286, 286, 286, 
970         286, 286, 342, 286, 342, 343, 343, 343, 
971         343, 343, 343, 343, 343, 343, 343, 343, 
972         343, 343, 343, 343, 343, 343, 343, 343, 
973         343, 343, 343, 343, 343, 343, 343, 343, 
974         343, 343, 343, 343, 343, 343, 343, 343, 
975         343, 343, 343, 343, 343, 343, 343, 343, 
976         343, 343, 343, 343, 343, 343, 343, 343, 
977         343, 343, 343, 343, 343, 343, 343, 343, 
978         343, 343, 286, 162, 162, 162, 162, 162, 
979         162, 162, 162, 162, 414, 414, 414, 414, 
980         414, 414, 414, 342
981 };
982
983 static const int indic_syllable_machine_start = 138;
984 static const int indic_syllable_machine_first_final = 138;
985 static const int indic_syllable_machine_error = -1;
986
987 static const int indic_syllable_machine_en_main = 138;
988
989
990 #line 36 "hb-ot-shape-complex-indic-machine.rl"
991
992
993
994 #line 93 "hb-ot-shape-complex-indic-machine.rl"
995
996
997 #define found_syllable(syllable_type) \
998   HB_STMT_START { \
999     if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \
1000     for (unsigned int i = ts; i < te; i++) \
1001       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
1002     syllable_serial++; \
1003     if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
1004   } HB_STMT_END
1005
1006 static void
1007 find_syllables (hb_buffer_t *buffer)
1008 {
1009   unsigned int p, pe, eof, ts, te, act;
1010   int cs;
1011   hb_glyph_info_t *info = buffer->info;
1012   
1013 #line 1014 "hb-ot-shape-complex-indic-machine.hh"
1014         {
1015         cs = indic_syllable_machine_start;
1016         ts = 0;
1017         te = 0;
1018         act = 0;
1019         }
1020
1021 #line 113 "hb-ot-shape-complex-indic-machine.rl"
1022
1023
1024   p = 0;
1025   pe = eof = buffer->len;
1026
1027   unsigned int syllable_serial = 1;
1028   
1029 #line 1030 "hb-ot-shape-complex-indic-machine.hh"
1030         {
1031         int _slen;
1032         int _trans;
1033         const unsigned char *_keys;
1034         const short *_inds;
1035         if ( p == pe )
1036                 goto _test_eof;
1037 _resume:
1038         switch ( _indic_syllable_machine_from_state_actions[cs] ) {
1039         case 10:
1040 #line 1 "NONE"
1041         {ts = p;}
1042         break;
1043 #line 1044 "hb-ot-shape-complex-indic-machine.hh"
1044         }
1045
1046         _keys = _indic_syllable_machine_trans_keys + (cs<<1);
1047         _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index_offsets[cs];
1048
1049         _slen = _indic_syllable_machine_key_spans[cs];
1050         _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) &&
1051                 ( info[p].indic_category()) <= _keys[1] ?
1052                 ( info[p].indic_category()) - _keys[0] : _slen ];
1053
1054 _eof_trans:
1055         cs = _indic_syllable_machine_trans_targs[_trans];
1056
1057         if ( _indic_syllable_machine_trans_actions[_trans] == 0 )
1058                 goto _again;
1059
1060         switch ( _indic_syllable_machine_trans_actions[_trans] ) {
1061         case 2:
1062 #line 1 "NONE"
1063         {te = p+1;}
1064         break;
1065         case 14:
1066 #line 84 "hb-ot-shape-complex-indic-machine.rl"
1067         {te = p+1;{ found_syllable (consonant_syllable); }}
1068         break;
1069         case 16:
1070 #line 85 "hb-ot-shape-complex-indic-machine.rl"
1071         {te = p+1;{ found_syllable (vowel_syllable); }}
1072         break;
1073         case 21:
1074 #line 86 "hb-ot-shape-complex-indic-machine.rl"
1075         {te = p+1;{ found_syllable (standalone_cluster); }}
1076         break;
1077         case 24:
1078 #line 87 "hb-ot-shape-complex-indic-machine.rl"
1079         {te = p+1;{ found_syllable (symbol_cluster); }}
1080         break;
1081         case 18:
1082 #line 88 "hb-ot-shape-complex-indic-machine.rl"
1083         {te = p+1;{ found_syllable (broken_cluster); }}
1084         break;
1085         case 11:
1086 #line 89 "hb-ot-shape-complex-indic-machine.rl"
1087         {te = p+1;{ found_syllable (non_indic_cluster); }}
1088         break;
1089         case 13:
1090 #line 84 "hb-ot-shape-complex-indic-machine.rl"
1091         {te = p;p--;{ found_syllable (consonant_syllable); }}
1092         break;
1093         case 15:
1094 #line 85 "hb-ot-shape-complex-indic-machine.rl"
1095         {te = p;p--;{ found_syllable (vowel_syllable); }}
1096         break;
1097         case 20:
1098 #line 86 "hb-ot-shape-complex-indic-machine.rl"
1099         {te = p;p--;{ found_syllable (standalone_cluster); }}
1100         break;
1101         case 23:
1102 #line 87 "hb-ot-shape-complex-indic-machine.rl"
1103         {te = p;p--;{ found_syllable (symbol_cluster); }}
1104         break;
1105         case 17:
1106 #line 88 "hb-ot-shape-complex-indic-machine.rl"
1107         {te = p;p--;{ found_syllable (broken_cluster); }}
1108         break;
1109         case 19:
1110 #line 89 "hb-ot-shape-complex-indic-machine.rl"
1111         {te = p;p--;{ found_syllable (non_indic_cluster); }}
1112         break;
1113         case 1:
1114 #line 84 "hb-ot-shape-complex-indic-machine.rl"
1115         {{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
1116         break;
1117         case 3:
1118 #line 85 "hb-ot-shape-complex-indic-machine.rl"
1119         {{p = ((te))-1;}{ found_syllable (vowel_syllable); }}
1120         break;
1121         case 7:
1122 #line 86 "hb-ot-shape-complex-indic-machine.rl"
1123         {{p = ((te))-1;}{ found_syllable (standalone_cluster); }}
1124         break;
1125         case 8:
1126 #line 87 "hb-ot-shape-complex-indic-machine.rl"
1127         {{p = ((te))-1;}{ found_syllable (symbol_cluster); }}
1128         break;
1129         case 4:
1130 #line 88 "hb-ot-shape-complex-indic-machine.rl"
1131         {{p = ((te))-1;}{ found_syllable (broken_cluster); }}
1132         break;
1133         case 5:
1134 #line 1 "NONE"
1135         {       switch( act ) {
1136         case 1:
1137         {{p = ((te))-1;} found_syllable (consonant_syllable); }
1138         break;
1139         case 5:
1140         {{p = ((te))-1;} found_syllable (broken_cluster); }
1141         break;
1142         case 6:
1143         {{p = ((te))-1;} found_syllable (non_indic_cluster); }
1144         break;
1145         }
1146         }
1147         break;
1148         case 22:
1149 #line 1 "NONE"
1150         {te = p+1;}
1151 #line 84 "hb-ot-shape-complex-indic-machine.rl"
1152         {act = 1;}
1153         break;
1154         case 6:
1155 #line 1 "NONE"
1156         {te = p+1;}
1157 #line 88 "hb-ot-shape-complex-indic-machine.rl"
1158         {act = 5;}
1159         break;
1160         case 12:
1161 #line 1 "NONE"
1162         {te = p+1;}
1163 #line 89 "hb-ot-shape-complex-indic-machine.rl"
1164         {act = 6;}
1165         break;
1166 #line 1167 "hb-ot-shape-complex-indic-machine.hh"
1167         }
1168
1169 _again:
1170         switch ( _indic_syllable_machine_to_state_actions[cs] ) {
1171         case 9:
1172 #line 1 "NONE"
1173         {ts = 0;}
1174         break;
1175 #line 1176 "hb-ot-shape-complex-indic-machine.hh"
1176         }
1177
1178         if ( ++p != pe )
1179                 goto _resume;
1180         _test_eof: {}
1181         if ( p == eof )
1182         {
1183         if ( _indic_syllable_machine_eof_trans[cs] > 0 ) {
1184                 _trans = _indic_syllable_machine_eof_trans[cs] - 1;
1185                 goto _eof_trans;
1186         }
1187         }
1188
1189         }
1190
1191 #line 121 "hb-ot-shape-complex-indic-machine.rl"
1192
1193 }
1194
1195 #endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */