tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

hb-ot-shaper-use-machine.hh (37116B)


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