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-private.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, 1u, 16u, 8u, 13u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u,
38 	7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u,
39 	6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u,
40 	4u, 8u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
41 	4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 8u, 8u, 1u, 16u, 8u, 13u,
42 	5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u,
43 	7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u,
44 	6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u,
45 	4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
46 	4u, 14u, 4u, 14u, 8u, 8u, 1u, 16u, 8u, 13u, 5u, 8u, 5u, 7u, 7u, 7u,
47 	5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u,
48 	7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u,
49 	6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u,
50 	4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 8u, 8u, 1u, 16u,
51 	8u, 13u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u,
52 	5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u,
53 	4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u,
54 	16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
55 	4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 5u, 8u, 4u, 14u, 4u, 14u, 5u, 8u,
56 	5u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u,
57 	5u, 7u, 7u, 7u, 8u, 8u, 1u, 16u, 8u, 13u, 4u, 8u, 6u, 6u, 16u, 16u,
58 	4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u,
59 	16u, 16u, 8u, 8u, 1u, 19u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u,
60 	3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u,
61 	3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 5u, 14u, 5u, 14u,
62 	5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u,
63 	3u, 10u, 5u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
64 	3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
65 	5u, 14u, 3u, 14u, 1u, 16u, 4u, 14u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u,
66 	1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u,
67 	1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
68 	1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
69 	3u, 17u, 3u, 17u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 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, 5u, 14u, 5u, 14u, 5u, 10u,
72 	9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u, 3u, 10u,
73 	5u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
74 	4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
75 	3u, 14u, 1u, 16u, 4u, 14u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u,
76 	1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
77 	1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
78 	3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 1u, 16u,
79 	3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u,
80 	3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u,
81 	3u, 17u, 3u, 17u, 4u, 17u, 5u, 14u, 5u, 14u, 5u, 10u, 9u, 10u, 9u, 9u,
82 	9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u, 3u, 10u, 5u, 10u, 3u, 10u,
83 	3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
84 	3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 1u, 16u,
85 	4u, 14u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
86 	3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u,
87 	3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u,
88 	1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 3u, 17u, 4u, 14u,
89 	3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u,
90 	3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u,
91 	3u, 17u, 3u, 17u, 4u, 17u, 5u, 14u, 5u, 14u, 5u, 10u, 9u, 10u, 9u, 9u,
92 	9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u, 3u, 10u, 5u, 10u, 3u, 10u,
93 	3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
94 	3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 1u, 16u,
95 	4u, 14u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
96 	3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u,
97 	3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u,
98 	1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 1u, 17u, 3u, 17u,
99 	1u, 17u, 4u, 14u, 5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u,
100 	5u, 10u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 3u, 17u, 3u, 17u, 1u, 16u,
101 	3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
102 	5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 13u, 3u, 10u, 5u, 10u, 3u, 10u,
103 	3u, 13u, 1u, 16u, 3u, 10u, 5u, 10u, 5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u,
104 	9u, 10u, 9u, 9u, 5u, 10u, 1u, 16u, 0
105 };
106 
107 static const char _indic_syllable_machine_key_spans[] = {
108 	1, 16, 6, 4, 3, 1, 4, 3,
109 	1, 4, 3, 1, 4, 3, 1, 5,
110 	1, 1, 5, 1, 1, 5, 1, 1,
111 	5, 1, 1, 11, 11, 11, 11, 11,
112 	11, 11, 11, 11, 11, 1, 16, 6,
113 	4, 3, 1, 4, 3, 1, 4, 3,
114 	1, 4, 3, 1, 5, 1, 1, 5,
115 	1, 1, 5, 1, 1, 5, 1, 1,
116 	11, 11, 11, 11, 11, 11, 11, 11,
117 	11, 11, 1, 16, 6, 4, 3, 1,
118 	4, 3, 1, 4, 3, 1, 4, 3,
119 	1, 5, 1, 1, 5, 1, 1, 5,
120 	1, 1, 5, 1, 1, 11, 11, 11,
121 	11, 11, 11, 11, 11, 11, 1, 16,
122 	6, 4, 3, 1, 4, 3, 1, 4,
123 	3, 1, 4, 3, 1, 5, 1, 1,
124 	5, 1, 1, 5, 1, 1, 5, 1,
125 	1, 11, 11, 11, 11, 11, 11, 11,
126 	11, 11, 11, 11, 4, 11, 11, 4,
127 	3, 4, 3, 1, 4, 3, 1, 4,
128 	3, 1, 1, 16, 6, 5, 1, 1,
129 	5, 1, 1, 5, 1, 1, 5, 1,
130 	1, 1, 19, 15, 15, 14, 16, 15,
131 	15, 14, 16, 15, 15, 14, 16, 15,
132 	15, 14, 16, 15, 15, 14, 10, 10,
133 	6, 2, 1, 2, 2, 1, 6, 11,
134 	8, 6, 8, 11, 12, 12, 11, 10,
135 	12, 11, 10, 12, 11, 10, 12, 11,
136 	10, 12, 16, 11, 15, 15, 16, 16,
137 	16, 16, 16, 15, 15, 16, 16, 16,
138 	16, 16, 15, 15, 16, 16, 16, 16,
139 	16, 15, 15, 16, 16, 16, 16, 16,
140 	15, 15, 15, 15, 14, 16, 15, 15,
141 	14, 16, 15, 15, 14, 16, 15, 15,
142 	14, 16, 15, 15, 14, 10, 10, 6,
143 	2, 1, 2, 2, 1, 6, 11, 8,
144 	6, 8, 11, 12, 12, 11, 10, 12,
145 	11, 10, 12, 11, 10, 12, 11, 10,
146 	12, 16, 11, 15, 15, 16, 16, 16,
147 	16, 16, 15, 15, 16, 16, 16, 16,
148 	16, 15, 15, 16, 16, 16, 16, 16,
149 	15, 15, 16, 16, 16, 16, 11, 16,
150 	15, 15, 14, 16, 15, 15, 14, 16,
151 	15, 15, 14, 16, 15, 15, 14, 16,
152 	15, 15, 14, 10, 10, 6, 2, 1,
153 	2, 2, 1, 6, 11, 8, 6, 8,
154 	11, 12, 12, 11, 10, 12, 11, 10,
155 	12, 11, 10, 12, 11, 10, 12, 16,
156 	11, 15, 15, 16, 16, 16, 16, 16,
157 	15, 15, 16, 16, 16, 16, 16, 15,
158 	15, 16, 16, 16, 16, 16, 15, 15,
159 	16, 16, 16, 16, 16, 11, 15, 11,
160 	15, 15, 14, 16, 15, 15, 14, 16,
161 	15, 15, 14, 16, 15, 15, 14, 16,
162 	15, 15, 14, 10, 10, 6, 2, 1,
163 	2, 2, 1, 6, 11, 8, 6, 8,
164 	11, 12, 12, 11, 10, 12, 11, 10,
165 	12, 11, 10, 12, 11, 10, 12, 16,
166 	11, 15, 15, 16, 16, 16, 16, 16,
167 	15, 15, 16, 16, 16, 16, 16, 15,
168 	15, 16, 16, 16, 16, 16, 15, 15,
169 	16, 16, 16, 16, 16, 15, 17, 15,
170 	17, 11, 6, 2, 1, 2, 2, 1,
171 	6, 16, 15, 15, 14, 15, 15, 16,
172 	12, 11, 10, 12, 11, 10, 12, 11,
173 	10, 12, 11, 10, 11, 8, 6, 8,
174 	11, 16, 8, 6, 6, 2, 1, 2,
175 	2, 1, 6, 16
176 };
177 
178 static const short _indic_syllable_machine_index_offsets[] = {
179 	0, 2, 19, 26, 31, 35, 37, 42,
180 	46, 48, 53, 57, 59, 64, 68, 70,
181 	76, 78, 80, 86, 88, 90, 96, 98,
182 	100, 106, 108, 110, 122, 134, 146, 158,
183 	170, 182, 194, 206, 218, 230, 232, 249,
184 	256, 261, 265, 267, 272, 276, 278, 283,
185 	287, 289, 294, 298, 300, 306, 308, 310,
186 	316, 318, 320, 326, 328, 330, 336, 338,
187 	340, 352, 364, 376, 388, 400, 412, 424,
188 	436, 448, 460, 462, 479, 486, 491, 495,
189 	497, 502, 506, 508, 513, 517, 519, 524,
190 	528, 530, 536, 538, 540, 546, 548, 550,
191 	556, 558, 560, 566, 568, 570, 582, 594,
192 	606, 618, 630, 642, 654, 666, 678, 680,
193 	697, 704, 709, 713, 715, 720, 724, 726,
194 	731, 735, 737, 742, 746, 748, 754, 756,
195 	758, 764, 766, 768, 774, 776, 778, 784,
196 	786, 788, 800, 812, 824, 836, 848, 860,
197 	872, 884, 896, 908, 920, 925, 937, 949,
198 	954, 958, 963, 967, 969, 974, 978, 980,
199 	985, 989, 991, 993, 1010, 1017, 1023, 1025,
200 	1027, 1033, 1035, 1037, 1043, 1045, 1047, 1053,
201 	1055, 1057, 1059, 1079, 1095, 1111, 1126, 1143,
202 	1159, 1175, 1190, 1207, 1223, 1239, 1254, 1271,
203 	1287, 1303, 1318, 1335, 1351, 1367, 1382, 1393,
204 	1404, 1411, 1414, 1416, 1419, 1422, 1424, 1431,
205 	1443, 1452, 1459, 1468, 1480, 1493, 1506, 1518,
206 	1529, 1542, 1554, 1565, 1578, 1590, 1601, 1614,
207 	1626, 1637, 1650, 1667, 1679, 1695, 1711, 1728,
208 	1745, 1762, 1779, 1796, 1812, 1828, 1845, 1862,
209 	1879, 1896, 1913, 1929, 1945, 1962, 1979, 1996,
210 	2013, 2030, 2046, 2062, 2079, 2096, 2113, 2130,
211 	2147, 2163, 2179, 2195, 2211, 2226, 2243, 2259,
212 	2275, 2290, 2307, 2323, 2339, 2354, 2371, 2387,
213 	2403, 2418, 2435, 2451, 2467, 2482, 2493, 2504,
214 	2511, 2514, 2516, 2519, 2522, 2524, 2531, 2543,
215 	2552, 2559, 2568, 2580, 2593, 2606, 2618, 2629,
216 	2642, 2654, 2665, 2678, 2690, 2701, 2714, 2726,
217 	2737, 2750, 2767, 2779, 2795, 2811, 2828, 2845,
218 	2862, 2879, 2896, 2912, 2928, 2945, 2962, 2979,
219 	2996, 3013, 3029, 3045, 3062, 3079, 3096, 3113,
220 	3130, 3146, 3162, 3179, 3196, 3213, 3230, 3242,
221 	3259, 3275, 3291, 3306, 3323, 3339, 3355, 3370,
222 	3387, 3403, 3419, 3434, 3451, 3467, 3483, 3498,
223 	3515, 3531, 3547, 3562, 3573, 3584, 3591, 3594,
224 	3596, 3599, 3602, 3604, 3611, 3623, 3632, 3639,
225 	3648, 3660, 3673, 3686, 3698, 3709, 3722, 3734,
226 	3745, 3758, 3770, 3781, 3794, 3806, 3817, 3830,
227 	3847, 3859, 3875, 3891, 3908, 3925, 3942, 3959,
228 	3976, 3992, 4008, 4025, 4042, 4059, 4076, 4093,
229 	4109, 4125, 4142, 4159, 4176, 4193, 4210, 4226,
230 	4242, 4259, 4276, 4293, 4310, 4327, 4339, 4355,
231 	4367, 4383, 4399, 4414, 4431, 4447, 4463, 4478,
232 	4495, 4511, 4527, 4542, 4559, 4575, 4591, 4606,
233 	4623, 4639, 4655, 4670, 4681, 4692, 4699, 4702,
234 	4704, 4707, 4710, 4712, 4719, 4731, 4740, 4747,
235 	4756, 4768, 4781, 4794, 4806, 4817, 4830, 4842,
236 	4853, 4866, 4878, 4889, 4902, 4914, 4925, 4938,
237 	4955, 4967, 4983, 4999, 5016, 5033, 5050, 5067,
238 	5084, 5100, 5116, 5133, 5150, 5167, 5184, 5201,
239 	5217, 5233, 5250, 5267, 5284, 5301, 5318, 5334,
240 	5350, 5367, 5384, 5401, 5418, 5435, 5451, 5469,
241 	5485, 5503, 5515, 5522, 5525, 5527, 5530, 5533,
242 	5535, 5542, 5559, 5575, 5591, 5606, 5622, 5638,
243 	5655, 5668, 5680, 5691, 5704, 5716, 5727, 5740,
244 	5752, 5763, 5776, 5788, 5799, 5811, 5820, 5827,
245 	5836, 5848, 5865, 5874, 5881, 5888, 5891, 5893,
246 	5896, 5899, 5901, 5908
247 };
248 
249 static const short _indic_syllable_machine_indicies[] = {
250 	1, 0, 2, 3, 0, 0, 0, 0,
251 	0, 0, 0, 0, 0, 0, 0, 0,
252 	0, 2, 0, 1, 0, 0, 0, 0,
253 	4, 0, 5, 5, 6, 1, 0, 7,
254 	7, 6, 0, 6, 0, 8, 8, 9,
255 	1, 0, 10, 10, 9, 0, 9, 0,
256 	11, 11, 12, 1, 0, 13, 13, 12,
257 	0, 12, 0, 14, 14, 15, 1, 0,
258 	16, 16, 15, 0, 15, 0, 17, 0,
259 	0, 0, 1, 0, 18, 0, 19, 0,
260 	20, 14, 14, 15, 1, 0, 21, 0,
261 	22, 0, 23, 11, 11, 12, 1, 0,
262 	24, 0, 25, 0, 26, 8, 8, 9,
263 	1, 0, 27, 0, 28, 0, 29, 5,
264 	5, 6, 1, 0, 0, 0, 0, 0,
265 	29, 0, 29, 5, 5, 6, 1, 0,
266 	0, 0, 0, 30, 29, 0, 31, 5,
267 	5, 6, 1, 0, 0, 0, 0, 0,
268 	31, 0, 31, 5, 5, 6, 1, 0,
269 	0, 0, 0, 32, 31, 0, 33, 5,
270 	5, 6, 1, 0, 0, 0, 0, 0,
271 	33, 0, 33, 5, 5, 6, 1, 0,
272 	0, 0, 0, 34, 33, 0, 35, 5,
273 	5, 6, 1, 0, 0, 0, 0, 0,
274 	35, 0, 35, 5, 5, 6, 1, 0,
275 	0, 0, 0, 36, 35, 0, 37, 5,
276 	5, 6, 1, 0, 0, 0, 0, 0,
277 	37, 0, 37, 5, 5, 6, 1, 0,
278 	0, 0, 0, 38, 37, 0, 40, 39,
279 	41, 42, 39, 39, 39, 39, 39, 39,
280 	39, 39, 39, 39, 39, 39, 39, 41,
281 	39, 40, 39, 39, 39, 39, 43, 39,
282 	44, 44, 45, 40, 39, 46, 46, 45,
283 	39, 45, 39, 47, 47, 48, 40, 39,
284 	49, 49, 48, 39, 48, 39, 50, 50,
285 	51, 40, 39, 52, 52, 51, 39, 51,
286 	39, 53, 53, 54, 40, 39, 55, 55,
287 	54, 39, 54, 39, 56, 39, 39, 39,
288 	40, 39, 57, 39, 58, 39, 59, 53,
289 	53, 54, 40, 39, 60, 39, 61, 39,
290 	62, 50, 50, 51, 40, 39, 63, 39,
291 	64, 39, 65, 47, 47, 48, 40, 39,
292 	66, 39, 67, 39, 68, 44, 44, 45,
293 	40, 39, 39, 39, 39, 39, 68, 39,
294 	68, 44, 44, 45, 40, 39, 39, 39,
295 	39, 69, 68, 39, 70, 44, 44, 45,
296 	40, 39, 39, 39, 39, 39, 70, 39,
297 	70, 44, 44, 45, 40, 39, 39, 39,
298 	39, 71, 70, 39, 72, 44, 44, 45,
299 	40, 39, 39, 39, 39, 39, 72, 39,
300 	72, 44, 44, 45, 40, 39, 39, 39,
301 	39, 73, 72, 39, 74, 44, 44, 45,
302 	40, 39, 39, 39, 39, 39, 74, 39,
303 	74, 44, 44, 45, 40, 39, 39, 39,
304 	39, 75, 74, 39, 76, 44, 44, 45,
305 	40, 39, 39, 39, 39, 39, 76, 39,
306 	76, 44, 44, 45, 40, 39, 39, 39,
307 	39, 77, 76, 39, 79, 78, 80, 81,
308 	78, 78, 78, 78, 78, 78, 78, 78,
309 	78, 78, 78, 78, 78, 80, 78, 79,
310 	78, 78, 78, 78, 82, 78, 83, 83,
311 	84, 79, 78, 86, 86, 84, 85, 84,
312 	85, 87, 87, 88, 79, 78, 89, 89,
313 	88, 78, 88, 78, 90, 90, 91, 79,
314 	78, 92, 92, 91, 78, 91, 78, 93,
315 	93, 94, 79, 78, 95, 95, 94, 78,
316 	94, 78, 96, 78, 78, 78, 79, 78,
317 	97, 78, 98, 78, 99, 93, 93, 94,
318 	79, 78, 100, 78, 101, 78, 102, 90,
319 	90, 91, 79, 78, 103, 78, 104, 78,
320 	105, 87, 87, 88, 79, 78, 106, 78,
321 	107, 78, 108, 83, 83, 84, 79, 78,
322 	78, 78, 78, 78, 108, 78, 108, 83,
323 	83, 84, 79, 78, 78, 78, 78, 109,
324 	108, 78, 110, 83, 83, 84, 79, 78,
325 	78, 78, 78, 78, 110, 78, 110, 83,
326 	83, 84, 79, 78, 78, 78, 78, 111,
327 	110, 78, 112, 83, 83, 84, 79, 78,
328 	78, 78, 78, 78, 112, 78, 112, 83,
329 	83, 84, 79, 78, 78, 78, 78, 113,
330 	112, 78, 114, 83, 83, 84, 79, 78,
331 	78, 78, 78, 78, 114, 78, 114, 83,
332 	83, 84, 79, 78, 78, 78, 78, 115,
333 	114, 78, 116, 83, 83, 84, 79, 78,
334 	78, 78, 78, 78, 116, 78, 118, 117,
335 	119, 120, 117, 117, 117, 117, 117, 117,
336 	117, 117, 117, 117, 117, 117, 117, 119,
337 	117, 118, 117, 117, 117, 117, 121, 117,
338 	122, 122, 123, 118, 117, 124, 124, 123,
339 	117, 123, 117, 125, 125, 126, 118, 117,
340 	127, 127, 126, 117, 126, 117, 128, 128,
341 	129, 118, 117, 130, 130, 129, 117, 129,
342 	117, 131, 131, 132, 118, 117, 133, 133,
343 	132, 117, 132, 117, 134, 117, 117, 117,
344 	118, 117, 135, 117, 136, 117, 137, 131,
345 	131, 132, 118, 117, 138, 117, 139, 117,
346 	140, 128, 128, 129, 118, 117, 141, 117,
347 	142, 117, 143, 125, 125, 126, 118, 117,
348 	144, 117, 145, 117, 146, 122, 122, 123,
349 	118, 117, 117, 117, 117, 117, 146, 117,
350 	146, 122, 122, 123, 118, 117, 117, 117,
351 	117, 147, 146, 117, 148, 122, 122, 123,
352 	118, 117, 117, 117, 117, 117, 148, 117,
353 	148, 122, 122, 123, 118, 117, 117, 117,
354 	117, 149, 148, 117, 150, 122, 122, 123,
355 	118, 117, 117, 117, 117, 117, 150, 117,
356 	150, 122, 122, 123, 118, 117, 117, 117,
357 	117, 151, 150, 117, 152, 122, 122, 123,
358 	118, 117, 117, 117, 117, 117, 152, 117,
359 	152, 122, 122, 123, 118, 117, 117, 117,
360 	117, 153, 152, 117, 154, 122, 122, 123,
361 	118, 117, 117, 117, 117, 117, 154, 117,
362 	154, 122, 122, 123, 118, 117, 117, 117,
363 	117, 155, 154, 117, 116, 83, 83, 84,
364 	79, 78, 78, 78, 78, 156, 116, 78,
365 	86, 86, 84, 1, 0, 114, 83, 83,
366 	84, 157, 0, 0, 0, 0, 0, 114,
367 	0, 114, 83, 83, 84, 157, 0, 0,
368 	0, 0, 158, 114, 0, 159, 159, 160,
369 	1, 0, 7, 7, 160, 0, 161, 161,
370 	162, 157, 0, 163, 163, 162, 0, 162,
371 	0, 164, 164, 165, 157, 0, 166, 166,
372 	165, 0, 165, 0, 167, 167, 168, 157,
373 	0, 169, 169, 168, 0, 168, 0, 157,
374 	0, 170, 171, 0, 0, 0, 0, 0,
375 	0, 0, 0, 0, 0, 0, 0, 0,
376 	170, 0, 157, 0, 0, 0, 0, 172,
377 	0, 173, 0, 0, 0, 157, 0, 174,
378 	0, 175, 0, 176, 167, 167, 168, 157,
379 	0, 177, 0, 178, 0, 179, 164, 164,
380 	165, 157, 0, 180, 0, 181, 0, 182,
381 	161, 161, 162, 157, 0, 183, 0, 184,
382 	0, 186, 185, 188, 189, 190, 191, 192,
383 	193, 84, 79, 194, 195, 196, 196, 156,
384 	197, 198, 199, 200, 201, 202, 187, 204,
385 	205, 206, 207, 6, 1, 208, 209, 203,
386 	203, 38, 210, 203, 203, 211, 203, 212,
387 	205, 213, 213, 6, 1, 208, 209, 203,
388 	203, 203, 210, 203, 203, 211, 203, 205,
389 	213, 213, 6, 1, 208, 209, 203, 203,
390 	203, 210, 203, 203, 211, 203, 214, 203,
391 	203, 203, 19, 215, 203, 1, 208, 209,
392 	203, 203, 203, 216, 203, 214, 203, 217,
393 	218, 219, 220, 6, 1, 208, 209, 203,
394 	203, 36, 221, 203, 203, 211, 203, 222,
395 	218, 223, 223, 6, 1, 208, 209, 203,
396 	203, 203, 221, 203, 203, 211, 203, 218,
397 	223, 223, 6, 1, 208, 209, 203, 203,
398 	203, 221, 203, 203, 211, 203, 224, 203,
399 	203, 203, 19, 225, 203, 1, 208, 209,
400 	203, 203, 203, 216, 203, 224, 203, 226,
401 	227, 228, 229, 6, 1, 208, 209, 203,
402 	203, 34, 230, 203, 203, 211, 203, 231,
403 	227, 232, 232, 6, 1, 208, 209, 203,
404 	203, 203, 230, 203, 203, 211, 203, 227,
405 	232, 232, 6, 1, 208, 209, 203, 203,
406 	203, 230, 203, 203, 211, 203, 233, 203,
407 	203, 203, 19, 234, 203, 1, 208, 209,
408 	203, 203, 203, 216, 203, 233, 203, 235,
409 	236, 237, 238, 6, 1, 208, 209, 203,
410 	203, 32, 239, 203, 203, 211, 203, 240,
411 	236, 241, 241, 6, 1, 208, 209, 203,
412 	203, 203, 239, 203, 203, 211, 203, 236,
413 	241, 241, 6, 1, 208, 209, 203, 203,
414 	203, 239, 203, 203, 211, 203, 242, 203,
415 	203, 203, 19, 243, 203, 1, 208, 209,
416 	203, 203, 203, 216, 203, 242, 203, 244,
417 	245, 246, 247, 6, 1, 208, 209, 203,
418 	203, 30, 248, 203, 203, 211, 203, 249,
419 	245, 250, 250, 6, 1, 208, 209, 203,
420 	203, 203, 248, 203, 203, 211, 203, 245,
421 	250, 250, 6, 1, 208, 209, 203, 203,
422 	203, 248, 203, 203, 211, 203, 19, 251,
423 	203, 1, 208, 209, 203, 203, 203, 216,
424 	203, 252, 252, 203, 1, 208, 209, 203,
425 	203, 203, 216, 203, 253, 203, 203, 254,
426 	208, 209, 203, 208, 209, 203, 255, 203,
427 	208, 256, 203, 208, 257, 203, 208, 203,
428 	253, 203, 203, 203, 208, 209, 203, 258,
429 	203, 259, 260, 203, 1, 208, 209, 203,
430 	203, 4, 203, 3, 203, 252, 252, 203,
431 	1, 208, 209, 203, 252, 252, 203, 1,
432 	208, 209, 203, 258, 203, 252, 252, 203,
433 	1, 208, 209, 203, 258, 203, 259, 252,
434 	203, 1, 208, 209, 203, 203, 4, 203,
435 	19, 203, 261, 261, 6, 1, 208, 209,
436 	203, 203, 203, 216, 203, 262, 28, 263,
437 	264, 9, 1, 208, 209, 203, 203, 203,
438 	216, 203, 28, 263, 264, 9, 1, 208,
439 	209, 203, 203, 203, 216, 203, 263, 263,
440 	9, 1, 208, 209, 203, 203, 203, 216,
441 	203, 265, 25, 266, 267, 12, 1, 208,
442 	209, 203, 203, 203, 216, 203, 25, 266,
443 	267, 12, 1, 208, 209, 203, 203, 203,
444 	216, 203, 266, 266, 12, 1, 208, 209,
445 	203, 203, 203, 216, 203, 268, 22, 269,
446 	270, 15, 1, 208, 209, 203, 203, 203,
447 	216, 203, 22, 269, 270, 15, 1, 208,
448 	209, 203, 203, 203, 216, 203, 269, 269,
449 	15, 1, 208, 209, 203, 203, 203, 216,
450 	203, 271, 19, 252, 272, 203, 1, 208,
451 	209, 203, 203, 203, 216, 203, 19, 252,
452 	272, 203, 1, 208, 209, 203, 203, 203,
453 	216, 203, 252, 273, 203, 1, 208, 209,
454 	203, 203, 203, 216, 203, 19, 203, 252,
455 	252, 203, 1, 208, 209, 203, 203, 203,
456 	216, 203, 2, 3, 203, 203, 19, 251,
457 	203, 1, 208, 209, 203, 203, 203, 216,
458 	203, 2, 203, 245, 250, 250, 6, 1,
459 	208, 209, 203, 203, 203, 248, 203, 244,
460 	245, 250, 250, 6, 1, 208, 209, 203,
461 	203, 203, 248, 203, 203, 211, 203, 244,
462 	245, 246, 250, 6, 1, 208, 209, 203,
463 	203, 30, 248, 203, 203, 211, 203, 242,
464 	203, 274, 203, 261, 261, 6, 1, 208,
465 	209, 203, 203, 203, 216, 203, 242, 203,
466 	242, 203, 203, 203, 252, 252, 203, 1,
467 	208, 209, 203, 203, 203, 216, 203, 242,
468 	203, 242, 203, 203, 203, 252, 275, 203,
469 	1, 208, 209, 203, 203, 203, 216, 203,
470 	242, 203, 242, 203, 274, 203, 252, 252,
471 	203, 1, 208, 209, 203, 203, 203, 216,
472 	203, 242, 203, 242, 3, 203, 203, 19,
473 	243, 203, 1, 208, 209, 203, 203, 203,
474 	216, 203, 242, 203, 235, 236, 241, 241,
475 	6, 1, 208, 209, 203, 203, 203, 239,
476 	203, 203, 211, 203, 235, 236, 237, 241,
477 	6, 1, 208, 209, 203, 203, 32, 239,
478 	203, 203, 211, 203, 233, 203, 276, 203,
479 	261, 261, 6, 1, 208, 209, 203, 203,
480 	203, 216, 203, 233, 203, 233, 203, 203,
481 	203, 252, 252, 203, 1, 208, 209, 203,
482 	203, 203, 216, 203, 233, 203, 233, 203,
483 	203, 203, 252, 277, 203, 1, 208, 209,
484 	203, 203, 203, 216, 203, 233, 203, 233,
485 	203, 276, 203, 252, 252, 203, 1, 208,
486 	209, 203, 203, 203, 216, 203, 233, 203,
487 	233, 3, 203, 203, 19, 234, 203, 1,
488 	208, 209, 203, 203, 203, 216, 203, 233,
489 	203, 226, 227, 232, 232, 6, 1, 208,
490 	209, 203, 203, 203, 230, 203, 203, 211,
491 	203, 226, 227, 228, 232, 6, 1, 208,
492 	209, 203, 203, 34, 230, 203, 203, 211,
493 	203, 224, 203, 278, 203, 261, 261, 6,
494 	1, 208, 209, 203, 203, 203, 216, 203,
495 	224, 203, 224, 203, 203, 203, 252, 252,
496 	203, 1, 208, 209, 203, 203, 203, 216,
497 	203, 224, 203, 224, 203, 203, 203, 252,
498 	279, 203, 1, 208, 209, 203, 203, 203,
499 	216, 203, 224, 203, 224, 203, 278, 203,
500 	252, 252, 203, 1, 208, 209, 203, 203,
501 	203, 216, 203, 224, 203, 224, 3, 203,
502 	203, 19, 225, 203, 1, 208, 209, 203,
503 	203, 203, 216, 203, 224, 203, 217, 218,
504 	223, 223, 6, 1, 208, 209, 203, 203,
505 	203, 221, 203, 203, 211, 203, 217, 218,
506 	219, 223, 6, 1, 208, 209, 203, 203,
507 	36, 221, 203, 203, 211, 203, 214, 203,
508 	280, 203, 261, 261, 6, 1, 208, 209,
509 	203, 203, 203, 216, 203, 214, 203, 214,
510 	203, 203, 203, 252, 252, 203, 1, 208,
511 	209, 203, 203, 203, 216, 203, 214, 203,
512 	214, 203, 203, 203, 252, 281, 203, 1,
513 	208, 209, 203, 203, 203, 216, 203, 214,
514 	203, 214, 203, 280, 203, 252, 252, 203,
515 	1, 208, 209, 203, 203, 203, 216, 203,
516 	214, 203, 214, 3, 203, 203, 19, 215,
517 	203, 1, 208, 209, 203, 203, 203, 216,
518 	203, 214, 203, 204, 205, 213, 213, 6,
519 	1, 208, 209, 203, 203, 203, 210, 203,
520 	203, 211, 203, 204, 205, 206, 213, 6,
521 	1, 208, 209, 203, 203, 38, 210, 203,
522 	203, 211, 203, 283, 284, 285, 286, 45,
523 	40, 287, 288, 282, 282, 77, 289, 282,
524 	282, 290, 282, 291, 284, 292, 286, 45,
525 	40, 287, 288, 282, 282, 282, 289, 282,
526 	282, 290, 282, 284, 292, 286, 45, 40,
527 	287, 288, 282, 282, 282, 289, 282, 282,
528 	290, 282, 293, 282, 282, 282, 58, 294,
529 	282, 40, 287, 288, 282, 282, 282, 295,
530 	282, 293, 282, 296, 297, 298, 299, 45,
531 	40, 287, 288, 282, 282, 75, 300, 282,
532 	282, 290, 282, 301, 297, 302, 302, 45,
533 	40, 287, 288, 282, 282, 282, 300, 282,
534 	282, 290, 282, 297, 302, 302, 45, 40,
535 	287, 288, 282, 282, 282, 300, 282, 282,
536 	290, 282, 303, 282, 282, 282, 58, 304,
537 	282, 40, 287, 288, 282, 282, 282, 295,
538 	282, 303, 282, 305, 306, 307, 308, 45,
539 	40, 287, 288, 282, 282, 73, 309, 282,
540 	282, 290, 282, 310, 306, 311, 311, 45,
541 	40, 287, 288, 282, 282, 282, 309, 282,
542 	282, 290, 282, 306, 311, 311, 45, 40,
543 	287, 288, 282, 282, 282, 309, 282, 282,
544 	290, 282, 312, 282, 282, 282, 58, 313,
545 	282, 40, 287, 288, 282, 282, 282, 295,
546 	282, 312, 282, 314, 315, 316, 317, 45,
547 	40, 287, 288, 282, 282, 71, 318, 282,
548 	282, 290, 282, 319, 315, 320, 320, 45,
549 	40, 287, 288, 282, 282, 282, 318, 282,
550 	282, 290, 282, 315, 320, 320, 45, 40,
551 	287, 288, 282, 282, 282, 318, 282, 282,
552 	290, 282, 321, 282, 282, 282, 58, 322,
553 	282, 40, 287, 288, 282, 282, 282, 295,
554 	282, 321, 282, 323, 324, 325, 326, 45,
555 	40, 287, 288, 282, 282, 69, 327, 282,
556 	282, 290, 282, 328, 324, 329, 329, 45,
557 	40, 287, 288, 282, 282, 282, 327, 282,
558 	282, 290, 282, 324, 329, 329, 45, 40,
559 	287, 288, 282, 282, 282, 327, 282, 282,
560 	290, 282, 58, 330, 282, 40, 287, 288,
561 	282, 282, 282, 295, 282, 331, 331, 282,
562 	40, 287, 288, 282, 282, 282, 295, 282,
563 	332, 282, 282, 333, 287, 288, 282, 287,
564 	288, 282, 334, 282, 287, 335, 282, 287,
565 	336, 282, 287, 282, 332, 282, 282, 282,
566 	287, 288, 282, 337, 282, 338, 339, 282,
567 	40, 287, 288, 282, 282, 43, 282, 42,
568 	282, 331, 331, 282, 40, 287, 288, 282,
569 	331, 331, 282, 40, 287, 288, 282, 337,
570 	282, 331, 331, 282, 40, 287, 288, 282,
571 	337, 282, 338, 331, 282, 40, 287, 288,
572 	282, 282, 43, 282, 58, 282, 340, 340,
573 	45, 40, 287, 288, 282, 282, 282, 295,
574 	282, 341, 67, 342, 343, 48, 40, 287,
575 	288, 282, 282, 282, 295, 282, 67, 342,
576 	343, 48, 40, 287, 288, 282, 282, 282,
577 	295, 282, 342, 342, 48, 40, 287, 288,
578 	282, 282, 282, 295, 282, 344, 64, 345,
579 	346, 51, 40, 287, 288, 282, 282, 282,
580 	295, 282, 64, 345, 346, 51, 40, 287,
581 	288, 282, 282, 282, 295, 282, 345, 345,
582 	51, 40, 287, 288, 282, 282, 282, 295,
583 	282, 347, 61, 348, 349, 54, 40, 287,
584 	288, 282, 282, 282, 295, 282, 61, 348,
585 	349, 54, 40, 287, 288, 282, 282, 282,
586 	295, 282, 348, 348, 54, 40, 287, 288,
587 	282, 282, 282, 295, 282, 350, 58, 331,
588 	351, 282, 40, 287, 288, 282, 282, 282,
589 	295, 282, 58, 331, 351, 282, 40, 287,
590 	288, 282, 282, 282, 295, 282, 331, 352,
591 	282, 40, 287, 288, 282, 282, 282, 295,
592 	282, 58, 282, 331, 331, 282, 40, 287,
593 	288, 282, 282, 282, 295, 282, 41, 42,
594 	282, 282, 58, 330, 282, 40, 287, 288,
595 	282, 282, 282, 295, 282, 41, 282, 324,
596 	329, 329, 45, 40, 287, 288, 282, 282,
597 	282, 327, 282, 323, 324, 329, 329, 45,
598 	40, 287, 288, 282, 282, 282, 327, 282,
599 	282, 290, 282, 323, 324, 325, 329, 45,
600 	40, 287, 288, 282, 282, 69, 327, 282,
601 	282, 290, 282, 321, 282, 353, 282, 340,
602 	340, 45, 40, 287, 288, 282, 282, 282,
603 	295, 282, 321, 282, 321, 282, 282, 282,
604 	331, 331, 282, 40, 287, 288, 282, 282,
605 	282, 295, 282, 321, 282, 321, 282, 282,
606 	282, 331, 354, 282, 40, 287, 288, 282,
607 	282, 282, 295, 282, 321, 282, 321, 282,
608 	353, 282, 331, 331, 282, 40, 287, 288,
609 	282, 282, 282, 295, 282, 321, 282, 321,
610 	42, 282, 282, 58, 322, 282, 40, 287,
611 	288, 282, 282, 282, 295, 282, 321, 282,
612 	314, 315, 320, 320, 45, 40, 287, 288,
613 	282, 282, 282, 318, 282, 282, 290, 282,
614 	314, 315, 316, 320, 45, 40, 287, 288,
615 	282, 282, 71, 318, 282, 282, 290, 282,
616 	312, 282, 355, 282, 340, 340, 45, 40,
617 	287, 288, 282, 282, 282, 295, 282, 312,
618 	282, 312, 282, 282, 282, 331, 331, 282,
619 	40, 287, 288, 282, 282, 282, 295, 282,
620 	312, 282, 312, 282, 282, 282, 331, 356,
621 	282, 40, 287, 288, 282, 282, 282, 295,
622 	282, 312, 282, 312, 282, 355, 282, 331,
623 	331, 282, 40, 287, 288, 282, 282, 282,
624 	295, 282, 312, 282, 312, 42, 282, 282,
625 	58, 313, 282, 40, 287, 288, 282, 282,
626 	282, 295, 282, 312, 282, 305, 306, 311,
627 	311, 45, 40, 287, 288, 282, 282, 282,
628 	309, 282, 282, 290, 282, 305, 306, 307,
629 	311, 45, 40, 287, 288, 282, 282, 73,
630 	309, 282, 282, 290, 282, 303, 282, 357,
631 	282, 340, 340, 45, 40, 287, 288, 282,
632 	282, 282, 295, 282, 303, 282, 303, 282,
633 	282, 282, 331, 331, 282, 40, 287, 288,
634 	282, 282, 282, 295, 282, 303, 282, 303,
635 	282, 282, 282, 331, 358, 282, 40, 287,
636 	288, 282, 282, 282, 295, 282, 303, 282,
637 	303, 282, 357, 282, 331, 331, 282, 40,
638 	287, 288, 282, 282, 282, 295, 282, 303,
639 	282, 303, 42, 282, 282, 58, 304, 282,
640 	40, 287, 288, 282, 282, 282, 295, 282,
641 	303, 282, 296, 297, 302, 302, 45, 40,
642 	287, 288, 282, 282, 282, 300, 282, 282,
643 	290, 282, 296, 297, 298, 302, 45, 40,
644 	287, 288, 282, 282, 75, 300, 282, 282,
645 	290, 282, 293, 282, 359, 282, 340, 340,
646 	45, 40, 287, 288, 282, 282, 282, 295,
647 	282, 293, 282, 293, 282, 282, 282, 331,
648 	331, 282, 40, 287, 288, 282, 282, 282,
649 	295, 282, 293, 282, 293, 282, 282, 282,
650 	331, 360, 282, 40, 287, 288, 282, 282,
651 	282, 295, 282, 293, 282, 293, 282, 359,
652 	282, 331, 331, 282, 40, 287, 288, 282,
653 	282, 282, 295, 282, 293, 282, 76, 44,
654 	44, 45, 40, 282, 282, 282, 282, 282,
655 	76, 282, 293, 42, 282, 282, 58, 294,
656 	282, 40, 287, 288, 282, 282, 282, 295,
657 	282, 293, 282, 283, 284, 292, 286, 45,
658 	40, 287, 288, 282, 282, 282, 289, 282,
659 	282, 290, 282, 362, 191, 363, 363, 84,
660 	79, 194, 195, 361, 361, 361, 197, 361,
661 	361, 200, 361, 191, 363, 363, 84, 79,
662 	194, 195, 361, 361, 361, 197, 361, 361,
663 	200, 361, 364, 361, 361, 361, 98, 365,
664 	361, 79, 194, 195, 361, 361, 361, 366,
665 	361, 364, 361, 367, 368, 369, 370, 84,
666 	79, 194, 195, 361, 361, 115, 371, 361,
667 	361, 200, 361, 372, 368, 373, 373, 84,
668 	79, 194, 195, 361, 361, 361, 371, 361,
669 	361, 200, 361, 368, 373, 373, 84, 79,
670 	194, 195, 361, 361, 361, 371, 361, 361,
671 	200, 361, 374, 361, 361, 361, 98, 375,
672 	361, 79, 194, 195, 361, 361, 361, 366,
673 	361, 374, 361, 376, 377, 378, 379, 84,
674 	79, 194, 195, 361, 361, 113, 380, 361,
675 	361, 200, 361, 381, 377, 382, 382, 84,
676 	79, 194, 195, 361, 361, 361, 380, 361,
677 	361, 200, 361, 377, 382, 382, 84, 79,
678 	194, 195, 361, 361, 361, 380, 361, 361,
679 	200, 361, 383, 361, 361, 361, 98, 384,
680 	361, 79, 194, 195, 361, 361, 361, 366,
681 	361, 383, 361, 385, 386, 387, 388, 84,
682 	79, 194, 195, 361, 361, 111, 389, 361,
683 	361, 200, 361, 390, 386, 391, 391, 84,
684 	79, 194, 195, 361, 361, 361, 389, 361,
685 	361, 200, 361, 386, 391, 391, 84, 79,
686 	194, 195, 361, 361, 361, 389, 361, 361,
687 	200, 361, 392, 361, 361, 361, 98, 393,
688 	361, 79, 194, 195, 361, 361, 361, 366,
689 	361, 392, 361, 394, 395, 396, 397, 84,
690 	79, 194, 195, 361, 361, 109, 398, 361,
691 	361, 200, 361, 399, 395, 400, 400, 84,
692 	79, 194, 195, 361, 361, 361, 398, 361,
693 	361, 200, 361, 395, 400, 400, 84, 79,
694 	194, 195, 361, 361, 361, 398, 361, 361,
695 	200, 361, 98, 401, 361, 79, 194, 195,
696 	361, 361, 361, 366, 361, 402, 402, 361,
697 	79, 194, 195, 361, 361, 361, 366, 361,
698 	403, 361, 361, 404, 194, 195, 361, 194,
699 	195, 361, 405, 361, 194, 406, 361, 194,
700 	407, 361, 194, 361, 403, 361, 361, 361,
701 	194, 195, 361, 408, 361, 409, 410, 361,
702 	79, 194, 195, 361, 361, 82, 361, 81,
703 	361, 402, 402, 361, 79, 194, 195, 361,
704 	402, 402, 361, 79, 194, 195, 361, 408,
705 	361, 402, 402, 361, 79, 194, 195, 361,
706 	408, 361, 409, 402, 361, 79, 194, 195,
707 	361, 361, 82, 361, 98, 361, 411, 411,
708 	84, 79, 194, 195, 361, 361, 361, 366,
709 	361, 412, 107, 413, 414, 88, 79, 194,
710 	195, 361, 361, 361, 366, 361, 107, 413,
711 	414, 88, 79, 194, 195, 361, 361, 361,
712 	366, 361, 413, 413, 88, 79, 194, 195,
713 	361, 361, 361, 366, 361, 415, 104, 416,
714 	417, 91, 79, 194, 195, 361, 361, 361,
715 	366, 361, 104, 416, 417, 91, 79, 194,
716 	195, 361, 361, 361, 366, 361, 416, 416,
717 	91, 79, 194, 195, 361, 361, 361, 366,
718 	361, 418, 101, 419, 420, 94, 79, 194,
719 	195, 361, 361, 361, 366, 361, 101, 419,
720 	420, 94, 79, 194, 195, 361, 361, 361,
721 	366, 361, 419, 419, 94, 79, 194, 195,
722 	361, 361, 361, 366, 361, 421, 98, 402,
723 	422, 361, 79, 194, 195, 361, 361, 361,
724 	366, 361, 98, 402, 422, 361, 79, 194,
725 	195, 361, 361, 361, 366, 361, 402, 423,
726 	361, 79, 194, 195, 361, 361, 361, 366,
727 	361, 98, 361, 402, 402, 361, 79, 194,
728 	195, 361, 361, 361, 366, 361, 80, 81,
729 	361, 361, 98, 401, 361, 79, 194, 195,
730 	361, 361, 361, 366, 361, 80, 361, 395,
731 	400, 400, 84, 79, 194, 195, 361, 361,
732 	361, 398, 361, 394, 395, 400, 400, 84,
733 	79, 194, 195, 361, 361, 361, 398, 361,
734 	361, 200, 361, 394, 395, 396, 400, 84,
735 	79, 194, 195, 361, 361, 109, 398, 361,
736 	361, 200, 361, 392, 361, 424, 361, 411,
737 	411, 84, 79, 194, 195, 361, 361, 361,
738 	366, 361, 392, 361, 392, 361, 361, 361,
739 	402, 402, 361, 79, 194, 195, 361, 361,
740 	361, 366, 361, 392, 361, 392, 361, 361,
741 	361, 402, 425, 361, 79, 194, 195, 361,
742 	361, 361, 366, 361, 392, 361, 392, 361,
743 	424, 361, 402, 402, 361, 79, 194, 195,
744 	361, 361, 361, 366, 361, 392, 361, 392,
745 	81, 361, 361, 98, 393, 361, 79, 194,
746 	195, 361, 361, 361, 366, 361, 392, 361,
747 	385, 386, 391, 391, 84, 79, 194, 195,
748 	361, 361, 361, 389, 361, 361, 200, 361,
749 	385, 386, 387, 391, 84, 79, 194, 195,
750 	361, 361, 111, 389, 361, 361, 200, 361,
751 	383, 361, 426, 361, 411, 411, 84, 79,
752 	194, 195, 361, 361, 361, 366, 361, 383,
753 	361, 383, 361, 361, 361, 402, 402, 361,
754 	79, 194, 195, 361, 361, 361, 366, 361,
755 	383, 361, 383, 361, 361, 361, 402, 427,
756 	361, 79, 194, 195, 361, 361, 361, 366,
757 	361, 383, 361, 383, 361, 426, 361, 402,
758 	402, 361, 79, 194, 195, 361, 361, 361,
759 	366, 361, 383, 361, 383, 81, 361, 361,
760 	98, 384, 361, 79, 194, 195, 361, 361,
761 	361, 366, 361, 383, 361, 376, 377, 382,
762 	382, 84, 79, 194, 195, 361, 361, 361,
763 	380, 361, 361, 200, 361, 376, 377, 378,
764 	382, 84, 79, 194, 195, 361, 361, 113,
765 	380, 361, 361, 200, 361, 374, 361, 428,
766 	361, 411, 411, 84, 79, 194, 195, 361,
767 	361, 361, 366, 361, 374, 361, 374, 361,
768 	361, 361, 402, 402, 361, 79, 194, 195,
769 	361, 361, 361, 366, 361, 374, 361, 374,
770 	361, 361, 361, 402, 429, 361, 79, 194,
771 	195, 361, 361, 361, 366, 361, 374, 361,
772 	374, 361, 428, 361, 402, 402, 361, 79,
773 	194, 195, 361, 361, 361, 366, 361, 374,
774 	361, 374, 81, 361, 361, 98, 375, 361,
775 	79, 194, 195, 361, 361, 361, 366, 361,
776 	374, 361, 367, 368, 373, 373, 84, 79,
777 	194, 195, 361, 361, 361, 371, 361, 361,
778 	200, 361, 367, 368, 369, 373, 84, 79,
779 	194, 195, 361, 361, 115, 371, 361, 361,
780 	200, 361, 364, 361, 430, 361, 411, 411,
781 	84, 79, 194, 195, 361, 361, 361, 366,
782 	361, 364, 361, 364, 361, 361, 361, 402,
783 	402, 361, 79, 194, 195, 361, 361, 361,
784 	366, 361, 364, 361, 364, 361, 361, 361,
785 	402, 431, 361, 79, 194, 195, 361, 361,
786 	361, 366, 361, 364, 361, 364, 361, 430,
787 	361, 402, 402, 361, 79, 194, 195, 361,
788 	361, 361, 366, 361, 364, 361, 364, 81,
789 	361, 361, 98, 365, 361, 79, 194, 195,
790 	361, 361, 361, 366, 361, 364, 361, 116,
791 	83, 83, 84, 79, 432, 432, 432, 432,
792 	156, 116, 432, 190, 191, 363, 363, 84,
793 	79, 194, 195, 361, 361, 361, 197, 361,
794 	361, 200, 361, 116, 83, 83, 84, 79,
795 	432, 432, 432, 432, 432, 116, 432, 434,
796 	435, 436, 437, 123, 118, 438, 439, 433,
797 	433, 155, 440, 433, 433, 441, 433, 442,
798 	435, 437, 437, 123, 118, 438, 439, 433,
799 	433, 433, 440, 433, 433, 441, 433, 435,
800 	437, 437, 123, 118, 438, 439, 433, 433,
801 	433, 440, 433, 433, 441, 433, 443, 433,
802 	433, 433, 136, 444, 433, 118, 438, 439,
803 	433, 433, 433, 445, 433, 443, 433, 446,
804 	447, 448, 449, 123, 118, 438, 439, 433,
805 	433, 153, 450, 433, 433, 441, 433, 451,
806 	447, 452, 452, 123, 118, 438, 439, 433,
807 	433, 433, 450, 433, 433, 441, 433, 447,
808 	452, 452, 123, 118, 438, 439, 433, 433,
809 	433, 450, 433, 433, 441, 433, 453, 433,
810 	433, 433, 136, 454, 433, 118, 438, 439,
811 	433, 433, 433, 445, 433, 453, 433, 455,
812 	456, 457, 458, 123, 118, 438, 439, 433,
813 	433, 151, 459, 433, 433, 441, 433, 460,
814 	456, 461, 461, 123, 118, 438, 439, 433,
815 	433, 433, 459, 433, 433, 441, 433, 456,
816 	461, 461, 123, 118, 438, 439, 433, 433,
817 	433, 459, 433, 433, 441, 433, 462, 433,
818 	433, 433, 136, 463, 433, 118, 438, 439,
819 	433, 433, 433, 445, 433, 462, 433, 464,
820 	465, 466, 467, 123, 118, 438, 439, 433,
821 	433, 149, 468, 433, 433, 441, 433, 469,
822 	465, 470, 470, 123, 118, 438, 439, 433,
823 	433, 433, 468, 433, 433, 441, 433, 465,
824 	470, 470, 123, 118, 438, 439, 433, 433,
825 	433, 468, 433, 433, 441, 433, 471, 433,
826 	433, 433, 136, 472, 433, 118, 438, 439,
827 	433, 433, 433, 445, 433, 471, 433, 473,
828 	474, 475, 476, 123, 118, 438, 439, 433,
829 	433, 147, 477, 433, 433, 441, 433, 478,
830 	474, 479, 479, 123, 118, 438, 439, 433,
831 	433, 433, 477, 433, 433, 441, 433, 474,
832 	479, 479, 123, 118, 438, 439, 433, 433,
833 	433, 477, 433, 433, 441, 433, 136, 480,
834 	433, 118, 438, 439, 433, 433, 433, 445,
835 	433, 481, 481, 433, 118, 438, 439, 433,
836 	433, 433, 445, 433, 482, 433, 433, 483,
837 	438, 439, 433, 438, 439, 433, 484, 433,
838 	438, 485, 433, 438, 486, 433, 438, 433,
839 	482, 433, 433, 433, 438, 439, 433, 487,
840 	433, 488, 489, 433, 118, 438, 439, 433,
841 	433, 121, 433, 120, 433, 481, 481, 433,
842 	118, 438, 439, 433, 481, 481, 433, 118,
843 	438, 439, 433, 487, 433, 481, 481, 433,
844 	118, 438, 439, 433, 487, 433, 488, 481,
845 	433, 118, 438, 439, 433, 433, 121, 433,
846 	136, 433, 490, 490, 123, 118, 438, 439,
847 	433, 433, 433, 445, 433, 491, 145, 492,
848 	493, 126, 118, 438, 439, 433, 433, 433,
849 	445, 433, 145, 492, 493, 126, 118, 438,
850 	439, 433, 433, 433, 445, 433, 492, 492,
851 	126, 118, 438, 439, 433, 433, 433, 445,
852 	433, 494, 142, 495, 496, 129, 118, 438,
853 	439, 433, 433, 433, 445, 433, 142, 495,
854 	496, 129, 118, 438, 439, 433, 433, 433,
855 	445, 433, 495, 495, 129, 118, 438, 439,
856 	433, 433, 433, 445, 433, 497, 139, 498,
857 	499, 132, 118, 438, 439, 433, 433, 433,
858 	445, 433, 139, 498, 499, 132, 118, 438,
859 	439, 433, 433, 433, 445, 433, 498, 498,
860 	132, 118, 438, 439, 433, 433, 433, 445,
861 	433, 500, 136, 481, 501, 433, 118, 438,
862 	439, 433, 433, 433, 445, 433, 136, 481,
863 	501, 433, 118, 438, 439, 433, 433, 433,
864 	445, 433, 481, 502, 433, 118, 438, 439,
865 	433, 433, 433, 445, 433, 136, 433, 481,
866 	481, 433, 118, 438, 439, 433, 433, 433,
867 	445, 433, 119, 120, 433, 433, 136, 480,
868 	433, 118, 438, 439, 433, 433, 433, 445,
869 	433, 119, 433, 474, 479, 479, 123, 118,
870 	438, 439, 433, 433, 433, 477, 433, 473,
871 	474, 479, 479, 123, 118, 438, 439, 433,
872 	433, 433, 477, 433, 433, 441, 433, 473,
873 	474, 475, 479, 123, 118, 438, 439, 433,
874 	433, 147, 477, 433, 433, 441, 433, 471,
875 	433, 503, 433, 490, 490, 123, 118, 438,
876 	439, 433, 433, 433, 445, 433, 471, 433,
877 	471, 433, 433, 433, 481, 481, 433, 118,
878 	438, 439, 433, 433, 433, 445, 433, 471,
879 	433, 471, 433, 433, 433, 481, 504, 433,
880 	118, 438, 439, 433, 433, 433, 445, 433,
881 	471, 433, 471, 433, 503, 433, 481, 481,
882 	433, 118, 438, 439, 433, 433, 433, 445,
883 	433, 471, 433, 471, 120, 433, 433, 136,
884 	472, 433, 118, 438, 439, 433, 433, 433,
885 	445, 433, 471, 433, 464, 465, 470, 470,
886 	123, 118, 438, 439, 433, 433, 433, 468,
887 	433, 433, 441, 433, 464, 465, 466, 470,
888 	123, 118, 438, 439, 433, 433, 149, 468,
889 	433, 433, 441, 433, 462, 433, 505, 433,
890 	490, 490, 123, 118, 438, 439, 433, 433,
891 	433, 445, 433, 462, 433, 462, 433, 433,
892 	433, 481, 481, 433, 118, 438, 439, 433,
893 	433, 433, 445, 433, 462, 433, 462, 433,
894 	433, 433, 481, 506, 433, 118, 438, 439,
895 	433, 433, 433, 445, 433, 462, 433, 462,
896 	433, 505, 433, 481, 481, 433, 118, 438,
897 	439, 433, 433, 433, 445, 433, 462, 433,
898 	462, 120, 433, 433, 136, 463, 433, 118,
899 	438, 439, 433, 433, 433, 445, 433, 462,
900 	433, 455, 456, 461, 461, 123, 118, 438,
901 	439, 433, 433, 433, 459, 433, 433, 441,
902 	433, 455, 456, 457, 461, 123, 118, 438,
903 	439, 433, 433, 151, 459, 433, 433, 441,
904 	433, 453, 433, 507, 433, 490, 490, 123,
905 	118, 438, 439, 433, 433, 433, 445, 433,
906 	453, 433, 453, 433, 433, 433, 481, 481,
907 	433, 118, 438, 439, 433, 433, 433, 445,
908 	433, 453, 433, 453, 433, 433, 433, 481,
909 	508, 433, 118, 438, 439, 433, 433, 433,
910 	445, 433, 453, 433, 453, 433, 507, 433,
911 	481, 481, 433, 118, 438, 439, 433, 433,
912 	433, 445, 433, 453, 433, 453, 120, 433,
913 	433, 136, 454, 433, 118, 438, 439, 433,
914 	433, 433, 445, 433, 453, 433, 446, 447,
915 	452, 452, 123, 118, 438, 439, 433, 433,
916 	433, 450, 433, 433, 441, 433, 446, 447,
917 	448, 452, 123, 118, 438, 439, 433, 433,
918 	153, 450, 433, 433, 441, 433, 443, 433,
919 	509, 433, 490, 490, 123, 118, 438, 439,
920 	433, 433, 433, 445, 433, 443, 433, 443,
921 	433, 433, 433, 481, 481, 433, 118, 438,
922 	439, 433, 433, 433, 445, 433, 443, 433,
923 	443, 433, 433, 433, 481, 510, 433, 118,
924 	438, 439, 433, 433, 433, 445, 433, 443,
925 	433, 443, 433, 509, 433, 481, 481, 433,
926 	118, 438, 439, 433, 433, 433, 445, 433,
927 	443, 433, 443, 120, 433, 433, 136, 444,
928 	433, 118, 438, 439, 433, 433, 433, 445,
929 	433, 443, 433, 434, 435, 437, 437, 123,
930 	118, 438, 439, 433, 433, 433, 440, 433,
931 	433, 441, 433, 188, 189, 190, 191, 511,
932 	363, 84, 79, 194, 195, 196, 196, 156,
933 	197, 361, 188, 200, 361, 204, 512, 206,
934 	207, 6, 1, 208, 209, 203, 203, 38,
935 	210, 203, 203, 211, 203, 214, 189, 190,
936 	191, 513, 514, 84, 157, 515, 516, 203,
937 	196, 156, 517, 203, 214, 200, 203, 116,
938 	518, 518, 84, 157, 208, 209, 203, 203,
939 	156, 519, 203, 520, 203, 203, 521, 515,
940 	516, 203, 515, 516, 203, 255, 203, 515,
941 	522, 203, 515, 523, 203, 515, 203, 520,
942 	203, 203, 203, 515, 516, 203, 524, 3,
943 	361, 361, 402, 431, 361, 79, 194, 195,
944 	361, 361, 361, 366, 361, 524, 361, 525,
945 	368, 526, 527, 84, 157, 515, 516, 203,
946 	203, 158, 371, 203, 203, 200, 203, 528,
947 	368, 529, 529, 84, 157, 515, 516, 203,
948 	203, 203, 371, 203, 203, 200, 203, 368,
949 	529, 529, 84, 157, 515, 516, 203, 203,
950 	203, 371, 203, 203, 200, 203, 525, 368,
951 	529, 529, 84, 157, 515, 516, 203, 203,
952 	203, 371, 203, 203, 200, 203, 525, 368,
953 	526, 529, 84, 157, 515, 516, 203, 203,
954 	158, 371, 203, 203, 200, 203, 214, 203,
955 	280, 116, 530, 530, 160, 157, 208, 209,
956 	203, 203, 203, 519, 203, 214, 203, 531,
957 	184, 532, 533, 162, 157, 515, 516, 203,
958 	203, 203, 534, 203, 184, 532, 533, 162,
959 	157, 515, 516, 203, 203, 203, 534, 203,
960 	532, 532, 162, 157, 515, 516, 203, 203,
961 	203, 534, 203, 535, 181, 536, 537, 165,
962 	157, 515, 516, 203, 203, 203, 534, 203,
963 	181, 536, 537, 165, 157, 515, 516, 203,
964 	203, 203, 534, 203, 536, 536, 165, 157,
965 	515, 516, 203, 203, 203, 534, 203, 538,
966 	178, 539, 540, 168, 157, 515, 516, 203,
967 	203, 203, 534, 203, 178, 539, 540, 168,
968 	157, 515, 516, 203, 203, 203, 534, 203,
969 	539, 539, 168, 157, 515, 516, 203, 203,
970 	203, 534, 203, 541, 175, 542, 543, 203,
971 	157, 515, 516, 203, 203, 203, 534, 203,
972 	175, 542, 543, 203, 157, 515, 516, 203,
973 	203, 203, 534, 203, 542, 542, 203, 157,
974 	515, 516, 203, 203, 203, 534, 203, 544,
975 	203, 545, 546, 203, 157, 515, 516, 203,
976 	203, 172, 203, 171, 203, 542, 542, 203,
977 	157, 515, 516, 203, 542, 542, 203, 157,
978 	515, 516, 203, 544, 203, 542, 542, 203,
979 	157, 515, 516, 203, 544, 203, 545, 542,
980 	203, 157, 515, 516, 203, 203, 172, 203,
981 	524, 171, 361, 361, 98, 365, 361, 79,
982 	194, 195, 361, 361, 361, 366, 361, 524,
983 	361, 548, 547, 549, 549, 547, 186, 550,
984 	551, 547, 549, 549, 547, 186, 550, 551,
985 	547, 552, 547, 547, 553, 550, 551, 547,
986 	550, 551, 547, 554, 547, 550, 555, 547,
987 	550, 556, 547, 550, 547, 552, 547, 547,
988 	547, 550, 551, 547, 188, 432, 432, 432,
989 	432, 432, 432, 432, 432, 432, 196, 432,
990 	432, 432, 432, 188, 432, 0
991 };
992 
993 static const short _indic_syllable_machine_trans_targs[] = {
994 	178, 200, 207, 209, 210, 4, 213, 5,
995 	7, 216, 8, 10, 219, 11, 13, 222,
996 	14, 16, 17, 199, 19, 20, 221, 22,
997 	23, 218, 25, 26, 215, 224, 228, 232,
998 	235, 239, 242, 246, 249, 253, 256, 178,
999 	279, 286, 288, 289, 41, 292, 42, 44,
1000 	295, 45, 47, 298, 48, 50, 301, 51,
1001 	53, 54, 278, 56, 57, 300, 59, 60,
1002 	297, 62, 63, 294, 303, 307, 311, 314,
1003 	318, 321, 325, 328, 332, 336, 178, 357,
1004 	364, 366, 367, 78, 370, 178, 79, 81,
1005 	373, 82, 84, 376, 85, 87, 379, 88,
1006 	90, 91, 356, 93, 94, 378, 96, 97,
1007 	375, 99, 100, 372, 381, 385, 389, 392,
1008 	396, 399, 403, 406, 410, 178, 437, 444,
1009 	446, 447, 114, 450, 115, 117, 453, 118,
1010 	120, 456, 121, 123, 459, 124, 126, 127,
1011 	436, 129, 130, 458, 132, 133, 455, 135,
1012 	136, 452, 461, 465, 469, 472, 476, 479,
1013 	483, 486, 490, 493, 414, 498, 509, 152,
1014 	512, 154, 515, 155, 157, 518, 158, 160,
1015 	521, 161, 524, 526, 527, 166, 167, 523,
1016 	169, 170, 520, 172, 173, 517, 175, 176,
1017 	514, 178, 532, 178, 179, 258, 337, 339,
1018 	413, 415, 359, 360, 416, 412, 494, 495,
1019 	384, 530, 539, 178, 180, 182, 36, 257,
1020 	202, 203, 255, 227, 181, 35, 183, 251,
1021 	1, 184, 186, 34, 250, 248, 185, 33,
1022 	187, 244, 188, 190, 32, 243, 241, 189,
1023 	31, 191, 237, 192, 194, 30, 236, 234,
1024 	193, 29, 195, 230, 196, 198, 28, 229,
1025 	226, 197, 27, 212, 0, 201, 206, 178,
1026 	204, 205, 208, 2, 211, 3, 214, 6,
1027 	24, 217, 9, 21, 220, 12, 18, 223,
1028 	15, 225, 231, 233, 238, 240, 245, 247,
1029 	252, 254, 178, 259, 261, 73, 334, 281,
1030 	282, 335, 306, 260, 72, 262, 330, 38,
1031 	263, 265, 71, 329, 327, 264, 70, 266,
1032 	323, 267, 269, 69, 322, 320, 268, 68,
1033 	270, 316, 271, 273, 67, 315, 313, 272,
1034 	66, 274, 309, 275, 277, 65, 308, 305,
1035 	276, 64, 291, 37, 280, 285, 178, 283,
1036 	284, 287, 39, 290, 40, 293, 43, 61,
1037 	296, 46, 58, 299, 49, 55, 302, 52,
1038 	304, 310, 312, 317, 319, 324, 326, 331,
1039 	333, 178, 338, 109, 340, 408, 75, 341,
1040 	343, 108, 407, 405, 342, 107, 344, 401,
1041 	345, 347, 106, 400, 398, 346, 105, 348,
1042 	394, 349, 351, 104, 393, 391, 350, 103,
1043 	352, 387, 353, 355, 102, 386, 383, 354,
1044 	101, 369, 74, 358, 363, 178, 361, 362,
1045 	365, 76, 368, 77, 371, 80, 98, 374,
1046 	83, 95, 377, 86, 92, 380, 89, 382,
1047 	388, 390, 395, 397, 402, 404, 409, 411,
1048 	178, 178, 417, 419, 146, 145, 439, 440,
1049 	492, 464, 418, 420, 488, 111, 421, 423,
1050 	144, 487, 485, 422, 143, 424, 481, 425,
1051 	427, 142, 480, 478, 426, 141, 428, 474,
1052 	429, 431, 140, 473, 471, 430, 139, 432,
1053 	467, 433, 435, 138, 466, 463, 434, 137,
1054 	449, 110, 438, 443, 178, 441, 442, 445,
1055 	112, 448, 113, 451, 116, 134, 454, 119,
1056 	131, 457, 122, 128, 460, 125, 462, 468,
1057 	470, 475, 477, 482, 484, 489, 491, 147,
1058 	496, 497, 511, 500, 501, 529, 148, 505,
1059 	499, 504, 502, 503, 506, 507, 150, 510,
1060 	508, 149, 151, 513, 153, 174, 163, 516,
1061 	156, 171, 519, 159, 168, 522, 162, 165,
1062 	525, 164, 528, 178, 531, 177, 534, 535,
1063 	533, 538, 178, 536, 537
1064 };
1065 
1066 static const char _indic_syllable_machine_trans_actions[] = {
1067 	1, 0, 2, 2, 2, 0, 2, 0,
1068 	0, 2, 0, 0, 2, 0, 0, 2,
1069 	0, 0, 0, 2, 0, 0, 2, 0,
1070 	0, 2, 0, 0, 2, 2, 2, 2,
1071 	2, 2, 2, 2, 2, 2, 2, 3,
1072 	0, 2, 2, 2, 0, 2, 0, 0,
1073 	2, 0, 0, 2, 0, 0, 2, 0,
1074 	0, 0, 2, 0, 0, 2, 0, 0,
1075 	2, 0, 0, 2, 2, 2, 2, 2,
1076 	2, 2, 2, 2, 2, 2, 4, 0,
1077 	2, 2, 2, 0, 2, 5, 0, 0,
1078 	2, 0, 0, 2, 0, 0, 2, 0,
1079 	0, 0, 2, 0, 0, 2, 0, 0,
1080 	2, 0, 0, 2, 2, 6, 2, 6,
1081 	2, 6, 2, 6, 2, 7, 0, 2,
1082 	2, 2, 0, 2, 0, 0, 2, 0,
1083 	0, 2, 0, 0, 2, 0, 0, 0,
1084 	2, 0, 0, 2, 0, 0, 2, 0,
1085 	0, 2, 2, 2, 2, 2, 2, 2,
1086 	2, 2, 2, 2, 6, 0, 8, 0,
1087 	2, 0, 2, 0, 0, 2, 0, 0,
1088 	2, 0, 2, 2, 2, 0, 0, 2,
1089 	0, 0, 2, 0, 0, 2, 0, 0,
1090 	2, 9, 0, 12, 2, 2, 6, 2,
1091 	13, 13, 0, 0, 2, 2, 6, 2,
1092 	6, 2, 0, 14, 2, 2, 0, 2,
1093 	0, 0, 2, 2, 2, 0, 2, 2,
1094 	0, 2, 2, 0, 2, 2, 2, 0,
1095 	2, 2, 2, 2, 0, 2, 2, 2,
1096 	0, 2, 2, 2, 2, 0, 2, 2,
1097 	2, 0, 2, 2, 2, 2, 0, 2,
1098 	2, 2, 0, 2, 0, 0, 0, 15,
1099 	0, 0, 2, 0, 2, 0, 2, 0,
1100 	0, 2, 0, 0, 2, 0, 0, 2,
1101 	0, 2, 2, 2, 2, 2, 2, 2,
1102 	2, 2, 16, 2, 2, 0, 2, 0,
1103 	0, 2, 2, 2, 0, 2, 2, 0,
1104 	2, 2, 0, 2, 2, 2, 0, 2,
1105 	2, 2, 2, 0, 2, 2, 2, 0,
1106 	2, 2, 2, 2, 0, 2, 2, 2,
1107 	0, 2, 2, 2, 2, 0, 2, 2,
1108 	2, 0, 2, 0, 0, 0, 17, 0,
1109 	0, 2, 0, 2, 0, 2, 0, 0,
1110 	2, 0, 0, 2, 0, 0, 2, 0,
1111 	2, 2, 2, 2, 2, 2, 2, 2,
1112 	2, 18, 6, 0, 6, 6, 0, 6,
1113 	2, 0, 6, 2, 6, 0, 6, 6,
1114 	6, 2, 0, 6, 2, 6, 0, 6,
1115 	6, 6, 2, 0, 6, 2, 6, 0,
1116 	6, 6, 6, 2, 0, 6, 2, 6,
1117 	0, 6, 0, 0, 0, 19, 0, 0,
1118 	2, 0, 2, 0, 2, 0, 0, 2,
1119 	0, 0, 2, 0, 0, 2, 0, 2,
1120 	2, 2, 2, 2, 2, 2, 2, 2,
1121 	20, 21, 2, 2, 0, 0, 0, 0,
1122 	2, 2, 2, 2, 2, 0, 2, 2,
1123 	0, 2, 2, 2, 0, 2, 2, 2,
1124 	2, 0, 2, 2, 2, 0, 2, 2,
1125 	2, 2, 0, 2, 2, 2, 0, 2,
1126 	2, 2, 2, 0, 2, 2, 2, 0,
1127 	2, 0, 0, 0, 22, 0, 0, 2,
1128 	0, 2, 0, 2, 0, 0, 2, 0,
1129 	0, 2, 0, 0, 2, 0, 2, 2,
1130 	2, 2, 2, 2, 2, 2, 2, 0,
1131 	0, 8, 2, 0, 0, 2, 0, 2,
1132 	0, 0, 0, 0, 8, 8, 0, 8,
1133 	8, 0, 0, 2, 0, 0, 0, 2,
1134 	0, 0, 2, 0, 0, 2, 0, 0,
1135 	2, 0, 2, 23, 2, 0, 0, 0,
1136 	0, 0, 24, 0, 0
1137 };
1138 
1139 static const char _indic_syllable_machine_to_state_actions[] = {
1140 	0, 0, 0, 0, 0, 0, 0, 0,
1141 	0, 0, 0, 0, 0, 0, 0, 0,
1142 	0, 0, 0, 0, 0, 0, 0, 0,
1143 	0, 0, 0, 0, 0, 0, 0, 0,
1144 	0, 0, 0, 0, 0, 0, 0, 0,
1145 	0, 0, 0, 0, 0, 0, 0, 0,
1146 	0, 0, 0, 0, 0, 0, 0, 0,
1147 	0, 0, 0, 0, 0, 0, 0, 0,
1148 	0, 0, 0, 0, 0, 0, 0, 0,
1149 	0, 0, 0, 0, 0, 0, 0, 0,
1150 	0, 0, 0, 0, 0, 0, 0, 0,
1151 	0, 0, 0, 0, 0, 0, 0, 0,
1152 	0, 0, 0, 0, 0, 0, 0, 0,
1153 	0, 0, 0, 0, 0, 0, 0, 0,
1154 	0, 0, 0, 0, 0, 0, 0, 0,
1155 	0, 0, 0, 0, 0, 0, 0, 0,
1156 	0, 0, 0, 0, 0, 0, 0, 0,
1157 	0, 0, 0, 0, 0, 0, 0, 0,
1158 	0, 0, 0, 0, 0, 0, 0, 0,
1159 	0, 0, 0, 0, 0, 0, 0, 0,
1160 	0, 0, 0, 0, 0, 0, 0, 0,
1161 	0, 0, 0, 0, 0, 0, 0, 0,
1162 	0, 0, 10, 0, 0, 0, 0, 0,
1163 	0, 0, 0, 0, 0, 0, 0, 0,
1164 	0, 0, 0, 0, 0, 0, 0, 0,
1165 	0, 0, 0, 0, 0, 0, 0, 0,
1166 	0, 0, 0, 0, 0, 0, 0, 0,
1167 	0, 0, 0, 0, 0, 0, 0, 0,
1168 	0, 0, 0, 0, 0, 0, 0, 0,
1169 	0, 0, 0, 0, 0, 0, 0, 0,
1170 	0, 0, 0, 0, 0, 0, 0, 0,
1171 	0, 0, 0, 0, 0, 0, 0, 0,
1172 	0, 0, 0, 0, 0, 0, 0, 0,
1173 	0, 0, 0, 0, 0, 0, 0, 0,
1174 	0, 0, 0, 0, 0, 0, 0, 0,
1175 	0, 0, 0, 0, 0, 0, 0, 0,
1176 	0, 0, 0, 0, 0, 0, 0, 0,
1177 	0, 0, 0, 0, 0, 0, 0, 0,
1178 	0, 0, 0, 0, 0, 0, 0, 0,
1179 	0, 0, 0, 0, 0, 0, 0, 0,
1180 	0, 0, 0, 0, 0, 0, 0, 0,
1181 	0, 0, 0, 0, 0, 0, 0, 0,
1182 	0, 0, 0, 0, 0, 0, 0, 0,
1183 	0, 0, 0, 0, 0, 0, 0, 0,
1184 	0, 0, 0, 0, 0, 0, 0, 0,
1185 	0, 0, 0, 0, 0, 0, 0, 0,
1186 	0, 0, 0, 0, 0, 0, 0, 0,
1187 	0, 0, 0, 0, 0, 0, 0, 0,
1188 	0, 0, 0, 0, 0, 0, 0, 0,
1189 	0, 0, 0, 0, 0, 0, 0, 0,
1190 	0, 0, 0, 0, 0, 0, 0, 0,
1191 	0, 0, 0, 0, 0, 0, 0, 0,
1192 	0, 0, 0, 0, 0, 0, 0, 0,
1193 	0, 0, 0, 0, 0, 0, 0, 0,
1194 	0, 0, 0, 0, 0, 0, 0, 0,
1195 	0, 0, 0, 0, 0, 0, 0, 0,
1196 	0, 0, 0, 0, 0, 0, 0, 0,
1197 	0, 0, 0, 0, 0, 0, 0, 0,
1198 	0, 0, 0, 0, 0, 0, 0, 0,
1199 	0, 0, 0, 0, 0, 0, 0, 0,
1200 	0, 0, 0, 0, 0, 0, 0, 0,
1201 	0, 0, 0, 0, 0, 0, 0, 0,
1202 	0, 0, 0, 0, 0, 0, 0, 0,
1203 	0, 0, 0, 0, 0, 0, 0, 0,
1204 	0, 0, 0, 0, 0, 0, 0, 0,
1205 	0, 0, 0, 0, 0, 0, 0, 0,
1206 	0, 0, 0, 0, 0, 0, 0, 0,
1207 	0, 0, 0, 0
1208 };
1209 
1210 static const char _indic_syllable_machine_from_state_actions[] = {
1211 	0, 0, 0, 0, 0, 0, 0, 0,
1212 	0, 0, 0, 0, 0, 0, 0, 0,
1213 	0, 0, 0, 0, 0, 0, 0, 0,
1214 	0, 0, 0, 0, 0, 0, 0, 0,
1215 	0, 0, 0, 0, 0, 0, 0, 0,
1216 	0, 0, 0, 0, 0, 0, 0, 0,
1217 	0, 0, 0, 0, 0, 0, 0, 0,
1218 	0, 0, 0, 0, 0, 0, 0, 0,
1219 	0, 0, 0, 0, 0, 0, 0, 0,
1220 	0, 0, 0, 0, 0, 0, 0, 0,
1221 	0, 0, 0, 0, 0, 0, 0, 0,
1222 	0, 0, 0, 0, 0, 0, 0, 0,
1223 	0, 0, 0, 0, 0, 0, 0, 0,
1224 	0, 0, 0, 0, 0, 0, 0, 0,
1225 	0, 0, 0, 0, 0, 0, 0, 0,
1226 	0, 0, 0, 0, 0, 0, 0, 0,
1227 	0, 0, 0, 0, 0, 0, 0, 0,
1228 	0, 0, 0, 0, 0, 0, 0, 0,
1229 	0, 0, 0, 0, 0, 0, 0, 0,
1230 	0, 0, 0, 0, 0, 0, 0, 0,
1231 	0, 0, 0, 0, 0, 0, 0, 0,
1232 	0, 0, 0, 0, 0, 0, 0, 0,
1233 	0, 0, 11, 0, 0, 0, 0, 0,
1234 	0, 0, 0, 0, 0, 0, 0, 0,
1235 	0, 0, 0, 0, 0, 0, 0, 0,
1236 	0, 0, 0, 0, 0, 0, 0, 0,
1237 	0, 0, 0, 0, 0, 0, 0, 0,
1238 	0, 0, 0, 0, 0, 0, 0, 0,
1239 	0, 0, 0, 0, 0, 0, 0, 0,
1240 	0, 0, 0, 0, 0, 0, 0, 0,
1241 	0, 0, 0, 0, 0, 0, 0, 0,
1242 	0, 0, 0, 0, 0, 0, 0, 0,
1243 	0, 0, 0, 0, 0, 0, 0, 0,
1244 	0, 0, 0, 0, 0, 0, 0, 0,
1245 	0, 0, 0, 0, 0, 0, 0, 0,
1246 	0, 0, 0, 0, 0, 0, 0, 0,
1247 	0, 0, 0, 0, 0, 0, 0, 0,
1248 	0, 0, 0, 0, 0, 0, 0, 0,
1249 	0, 0, 0, 0, 0, 0, 0, 0,
1250 	0, 0, 0, 0, 0, 0, 0, 0,
1251 	0, 0, 0, 0, 0, 0, 0, 0,
1252 	0, 0, 0, 0, 0, 0, 0, 0,
1253 	0, 0, 0, 0, 0, 0, 0, 0,
1254 	0, 0, 0, 0, 0, 0, 0, 0,
1255 	0, 0, 0, 0, 0, 0, 0, 0,
1256 	0, 0, 0, 0, 0, 0, 0, 0,
1257 	0, 0, 0, 0, 0, 0, 0, 0,
1258 	0, 0, 0, 0, 0, 0, 0, 0,
1259 	0, 0, 0, 0, 0, 0, 0, 0,
1260 	0, 0, 0, 0, 0, 0, 0, 0,
1261 	0, 0, 0, 0, 0, 0, 0, 0,
1262 	0, 0, 0, 0, 0, 0, 0, 0,
1263 	0, 0, 0, 0, 0, 0, 0, 0,
1264 	0, 0, 0, 0, 0, 0, 0, 0,
1265 	0, 0, 0, 0, 0, 0, 0, 0,
1266 	0, 0, 0, 0, 0, 0, 0, 0,
1267 	0, 0, 0, 0, 0, 0, 0, 0,
1268 	0, 0, 0, 0, 0, 0, 0, 0,
1269 	0, 0, 0, 0, 0, 0, 0, 0,
1270 	0, 0, 0, 0, 0, 0, 0, 0,
1271 	0, 0, 0, 0, 0, 0, 0, 0,
1272 	0, 0, 0, 0, 0, 0, 0, 0,
1273 	0, 0, 0, 0, 0, 0, 0, 0,
1274 	0, 0, 0, 0, 0, 0, 0, 0,
1275 	0, 0, 0, 0, 0, 0, 0, 0,
1276 	0, 0, 0, 0, 0, 0, 0, 0,
1277 	0, 0, 0, 0, 0, 0, 0, 0,
1278 	0, 0, 0, 0
1279 };
1280 
1281 static const short _indic_syllable_machine_eof_trans[] = {
1282 	1, 1, 1, 1, 1, 1, 1, 1,
1283 	1, 1, 1, 1, 1, 1, 1, 1,
1284 	1, 1, 1, 1, 1, 1, 1, 1,
1285 	1, 1, 1, 1, 1, 1, 1, 1,
1286 	1, 1, 1, 1, 1, 40, 40, 40,
1287 	40, 40, 40, 40, 40, 40, 40, 40,
1288 	40, 40, 40, 40, 40, 40, 40, 40,
1289 	40, 40, 40, 40, 40, 40, 40, 40,
1290 	40, 40, 40, 40, 40, 40, 40, 40,
1291 	40, 40, 79, 79, 79, 79, 86, 86,
1292 	79, 79, 79, 79, 79, 79, 79, 79,
1293 	79, 79, 79, 79, 79, 79, 79, 79,
1294 	79, 79, 79, 79, 79, 79, 79, 79,
1295 	79, 79, 79, 79, 79, 79, 118, 118,
1296 	118, 118, 118, 118, 118, 118, 118, 118,
1297 	118, 118, 118, 118, 118, 118, 118, 118,
1298 	118, 118, 118, 118, 118, 118, 118, 118,
1299 	118, 118, 118, 118, 118, 118, 118, 118,
1300 	118, 118, 118, 79, 1, 1, 1, 1,
1301 	1, 1, 1, 1, 1, 1, 1, 1,
1302 	1, 1, 1, 1, 1, 1, 1, 1,
1303 	1, 1, 1, 1, 1, 1, 1, 1,
1304 	1, 186, 0, 204, 204, 204, 204, 204,
1305 	204, 204, 204, 204, 204, 204, 204, 204,
1306 	204, 204, 204, 204, 204, 204, 204, 204,
1307 	204, 204, 204, 204, 204, 204, 204, 204,
1308 	204, 204, 204, 204, 204, 204, 204, 204,
1309 	204, 204, 204, 204, 204, 204, 204, 204,
1310 	204, 204, 204, 204, 204, 204, 204, 204,
1311 	204, 204, 204, 204, 204, 204, 204, 204,
1312 	204, 204, 204, 204, 204, 204, 204, 204,
1313 	204, 204, 204, 204, 204, 204, 204, 204,
1314 	204, 204, 283, 283, 283, 283, 283, 283,
1315 	283, 283, 283, 283, 283, 283, 283, 283,
1316 	283, 283, 283, 283, 283, 283, 283, 283,
1317 	283, 283, 283, 283, 283, 283, 283, 283,
1318 	283, 283, 283, 283, 283, 283, 283, 283,
1319 	283, 283, 283, 283, 283, 283, 283, 283,
1320 	283, 283, 283, 283, 283, 283, 283, 283,
1321 	283, 283, 283, 283, 283, 283, 283, 283,
1322 	283, 283, 283, 283, 283, 283, 283, 283,
1323 	283, 283, 283, 283, 283, 283, 283, 283,
1324 	283, 362, 362, 362, 362, 362, 362, 362,
1325 	362, 362, 362, 362, 362, 362, 362, 362,
1326 	362, 362, 362, 362, 362, 362, 362, 362,
1327 	362, 362, 362, 362, 362, 362, 362, 362,
1328 	362, 362, 362, 362, 362, 362, 362, 362,
1329 	362, 362, 362, 362, 362, 362, 362, 362,
1330 	362, 362, 362, 362, 362, 362, 362, 362,
1331 	362, 362, 362, 362, 362, 362, 362, 362,
1332 	362, 362, 362, 362, 362, 362, 362, 362,
1333 	362, 362, 362, 362, 362, 433, 362, 433,
1334 	434, 434, 434, 434, 434, 434, 434, 434,
1335 	434, 434, 434, 434, 434, 434, 434, 434,
1336 	434, 434, 434, 434, 434, 434, 434, 434,
1337 	434, 434, 434, 434, 434, 434, 434, 434,
1338 	434, 434, 434, 434, 434, 434, 434, 434,
1339 	434, 434, 434, 434, 434, 434, 434, 434,
1340 	434, 434, 434, 434, 434, 434, 434, 434,
1341 	434, 434, 434, 434, 434, 434, 434, 434,
1342 	434, 434, 434, 434, 434, 434, 434, 434,
1343 	434, 434, 434, 434, 434, 434, 362, 204,
1344 	204, 204, 204, 204, 204, 204, 204, 204,
1345 	204, 362, 204, 204, 204, 204, 204, 204,
1346 	204, 204, 204, 204, 204, 204, 204, 204,
1347 	204, 204, 204, 204, 204, 204, 204, 204,
1348 	204, 362, 548, 548, 548, 548, 548, 548,
1349 	548, 548, 548, 433
1350 };
1351 
1352 static const int indic_syllable_machine_start = 178;
1353 static const int indic_syllable_machine_first_final = 178;
1354 static const int indic_syllable_machine_error = -1;
1355 
1356 static const int indic_syllable_machine_en_main = 178;
1357 
1358 
1359 #line 36 "hb-ot-shape-complex-indic-machine.rl"
1360 
1361 
1362 
1363 #line 97 "hb-ot-shape-complex-indic-machine.rl"
1364 
1365 
1366 #define found_syllable(syllable_type) \
1367   HB_STMT_START { \
1368     if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
1369     for (unsigned int i = last; i < p+1; i++) \
1370       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
1371     last = p+1; \
1372     syllable_serial++; \
1373     if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
1374   } HB_STMT_END
1375 
1376 static void
find_syllables(hb_buffer_t * buffer)1377 find_syllables (hb_buffer_t *buffer)
1378 {
1379   unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED;
1380   int cs;
1381   hb_glyph_info_t *info = buffer->info;
1382 
1383 #line 1384 "hb-ot-shape-complex-indic-machine.hh"
1384 	{
1385 	cs = indic_syllable_machine_start;
1386 	ts = 0;
1387 	te = 0;
1388 	act = 0;
1389 	}
1390 
1391 #line 118 "hb-ot-shape-complex-indic-machine.rl"
1392 
1393 
1394   p = 0;
1395   pe = eof = buffer->len;
1396 
1397   unsigned int last = 0;
1398   unsigned int syllable_serial = 1;
1399 
1400 #line 1401 "hb-ot-shape-complex-indic-machine.hh"
1401 	{
1402 	int _slen;
1403 	int _trans;
1404 	const unsigned char *_keys;
1405 	const short *_inds;
1406 	if ( p == pe )
1407 		goto _test_eof;
1408 _resume:
1409 	switch ( _indic_syllable_machine_from_state_actions[cs] ) {
1410 	case 11:
1411 #line 1 "NONE"
1412 	{ts = p;}
1413 	break;
1414 #line 1415 "hb-ot-shape-complex-indic-machine.hh"
1415 	}
1416 
1417 	_keys = _indic_syllable_machine_trans_keys + (cs<<1);
1418 	_inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index_offsets[cs];
1419 
1420 	_slen = _indic_syllable_machine_key_spans[cs];
1421 	_trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) &&
1422 		( info[p].indic_category()) <= _keys[1] ?
1423 		( info[p].indic_category()) - _keys[0] : _slen ];
1424 
1425 _eof_trans:
1426 	cs = _indic_syllable_machine_trans_targs[_trans];
1427 
1428 	if ( _indic_syllable_machine_trans_actions[_trans] == 0 )
1429 		goto _again;
1430 
1431 	switch ( _indic_syllable_machine_trans_actions[_trans] ) {
1432 	case 2:
1433 #line 1 "NONE"
1434 	{te = p+1;}
1435 	break;
1436 	case 15:
1437 #line 88 "hb-ot-shape-complex-indic-machine.rl"
1438 	{te = p+1;{ found_syllable (consonant_syllable); }}
1439 	break;
1440 	case 17:
1441 #line 89 "hb-ot-shape-complex-indic-machine.rl"
1442 	{te = p+1;{ found_syllable (vowel_syllable); }}
1443 	break;
1444 	case 22:
1445 #line 90 "hb-ot-shape-complex-indic-machine.rl"
1446 	{te = p+1;{ found_syllable (standalone_cluster); }}
1447 	break;
1448 	case 24:
1449 #line 91 "hb-ot-shape-complex-indic-machine.rl"
1450 	{te = p+1;{ found_syllable (symbol_cluster); }}
1451 	break;
1452 	case 19:
1453 #line 92 "hb-ot-shape-complex-indic-machine.rl"
1454 	{te = p+1;{ found_syllable (broken_cluster); }}
1455 	break;
1456 	case 12:
1457 #line 93 "hb-ot-shape-complex-indic-machine.rl"
1458 	{te = p+1;{ found_syllable (non_indic_cluster); }}
1459 	break;
1460 	case 14:
1461 #line 88 "hb-ot-shape-complex-indic-machine.rl"
1462 	{te = p;p--;{ found_syllable (consonant_syllable); }}
1463 	break;
1464 	case 16:
1465 #line 89 "hb-ot-shape-complex-indic-machine.rl"
1466 	{te = p;p--;{ found_syllable (vowel_syllable); }}
1467 	break;
1468 	case 21:
1469 #line 90 "hb-ot-shape-complex-indic-machine.rl"
1470 	{te = p;p--;{ found_syllable (standalone_cluster); }}
1471 	break;
1472 	case 23:
1473 #line 91 "hb-ot-shape-complex-indic-machine.rl"
1474 	{te = p;p--;{ found_syllable (symbol_cluster); }}
1475 	break;
1476 	case 18:
1477 #line 92 "hb-ot-shape-complex-indic-machine.rl"
1478 	{te = p;p--;{ found_syllable (broken_cluster); }}
1479 	break;
1480 	case 20:
1481 #line 93 "hb-ot-shape-complex-indic-machine.rl"
1482 	{te = p;p--;{ found_syllable (non_indic_cluster); }}
1483 	break;
1484 	case 1:
1485 #line 88 "hb-ot-shape-complex-indic-machine.rl"
1486 	{{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
1487 	break;
1488 	case 3:
1489 #line 89 "hb-ot-shape-complex-indic-machine.rl"
1490 	{{p = ((te))-1;}{ found_syllable (vowel_syllable); }}
1491 	break;
1492 	case 7:
1493 #line 90 "hb-ot-shape-complex-indic-machine.rl"
1494 	{{p = ((te))-1;}{ found_syllable (standalone_cluster); }}
1495 	break;
1496 	case 9:
1497 #line 91 "hb-ot-shape-complex-indic-machine.rl"
1498 	{{p = ((te))-1;}{ found_syllable (symbol_cluster); }}
1499 	break;
1500 	case 4:
1501 #line 92 "hb-ot-shape-complex-indic-machine.rl"
1502 	{{p = ((te))-1;}{ found_syllable (broken_cluster); }}
1503 	break;
1504 	case 5:
1505 #line 1 "NONE"
1506 	{	switch( act ) {
1507 	case 1:
1508 	{{p = ((te))-1;} found_syllable (consonant_syllable); }
1509 	break;
1510 	case 5:
1511 	{{p = ((te))-1;} found_syllable (broken_cluster); }
1512 	break;
1513 	case 6:
1514 	{{p = ((te))-1;} found_syllable (non_indic_cluster); }
1515 	break;
1516 	}
1517 	}
1518 	break;
1519 	case 8:
1520 #line 1 "NONE"
1521 	{te = p+1;}
1522 #line 88 "hb-ot-shape-complex-indic-machine.rl"
1523 	{act = 1;}
1524 	break;
1525 	case 6:
1526 #line 1 "NONE"
1527 	{te = p+1;}
1528 #line 92 "hb-ot-shape-complex-indic-machine.rl"
1529 	{act = 5;}
1530 	break;
1531 	case 13:
1532 #line 1 "NONE"
1533 	{te = p+1;}
1534 #line 93 "hb-ot-shape-complex-indic-machine.rl"
1535 	{act = 6;}
1536 	break;
1537 #line 1538 "hb-ot-shape-complex-indic-machine.hh"
1538 	}
1539 
1540 _again:
1541 	switch ( _indic_syllable_machine_to_state_actions[cs] ) {
1542 	case 10:
1543 #line 1 "NONE"
1544 	{ts = 0;}
1545 	break;
1546 #line 1547 "hb-ot-shape-complex-indic-machine.hh"
1547 	}
1548 
1549 	if ( ++p != pe )
1550 		goto _resume;
1551 	_test_eof: {}
1552 	if ( p == eof )
1553 	{
1554 	if ( _indic_syllable_machine_eof_trans[cs] > 0 ) {
1555 		_trans = _indic_syllable_machine_eof_trans[cs] - 1;
1556 		goto _eof_trans;
1557 	}
1558 	}
1559 
1560 	}
1561 
1562 #line 127 "hb-ot-shape-complex-indic-machine.rl"
1563 
1564 }
1565 
1566 #endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */
1567