From: Behdad Esfahbod Date: Sat, 22 Dec 2012 00:41:04 +0000 (-0500) Subject: [Indic] Insert dottedcircle after a lone Malayalam dot-reph X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=596740db04e7c1dadae0d8be6e401089fcaffc2d;p=platform%2Fupstream%2FlibHarfBuzzSharp.git [Indic] Insert dottedcircle after a lone Malayalam dot-reph --- diff --git a/src/hb-ot-shape-complex-indic-machine.hh b/src/hb-ot-shape-complex-indic-machine.hh index f97ec52..ed40b96 100644 --- a/src/hb-ot-shape-complex-indic-machine.hh +++ b/src/hb-ot-shape-complex-indic-machine.hh @@ -51,35 +51,29 @@ static const unsigned char _indic_syllable_machine_trans_keys[] = { 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, - 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, - 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, - 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, - 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, - 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, - 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, - 4u, 14u, 6u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, - 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, - 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, - 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, - 1u, 16u, 3u, 14u, 3u, 14u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, + 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, + 4u, 14u, 5u, 7u, 5u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, + 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 1u, 16u, 13u, 13u, 4u, 4u, 6u, 6u, + 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, + 6u, 6u, 16u, 16u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, - 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, - 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, - 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, - 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, - 1u, 16u, 1u, 16u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, - 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, - 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, - 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, - 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, - 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 1u, 16u, + 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, - 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 3u, 14u, 4u, 14u, 3u, 14u, + 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 3u, 14u, 3u, 14u, + 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, + 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, + 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, + 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, + 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, + 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, + 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, + 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, + 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, @@ -88,8 +82,21 @@ static const unsigned char _indic_syllable_machine_trans_keys[] = { 6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, - 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, - 1u, 16u, 3u, 17u, 1u, 16u, 0 + 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, + 3u, 14u, 4u, 14u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, + 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, + 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, + 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, + 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, + 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, + 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, + 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, + 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, + 1u, 16u, 1u, 16u, 3u, 14u, 1u, 16u, 3u, 17u, 1u, 16u, 4u, 14u, 1u, 16u, + 3u, 17u, 3u, 14u, 4u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 14u, 3u, 14u, + 1u, 16u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, + 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 8u, 14u, 3u, 17u, 3u, 9u, 8u, 9u, + 3u, 9u, 3u, 13u, 1u, 16u, 0 }; static const char _indic_syllable_machine_key_spans[] = { @@ -110,35 +117,29 @@ static const char _indic_syllable_machine_key_spans[] = { 3, 3, 1, 3, 3, 1, 3, 3, 1, 1, 1, 1, 4, 1, 1, 4, 1, 1, 4, 1, 1, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 16, - 15, 12, 11, 16, 15, 12, 11, 16, - 15, 12, 11, 16, 15, 12, 11, 16, - 15, 12, 11, 10, 7, 5, 1, 1, - 15, 7, 2, 7, 11, 12, 12, 11, - 10, 12, 11, 10, 12, 11, 10, 12, - 11, 9, 12, 11, 16, 12, 12, 16, - 16, 16, 16, 16, 12, 12, 16, 16, - 16, 16, 16, 12, 12, 16, 16, 16, - 16, 16, 12, 12, 16, 16, 16, 16, - 16, 12, 12, 12, 12, 11, 16, 15, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 3, 3, 3, 3, 1, 3, 3, + 1, 3, 3, 1, 16, 1, 1, 1, + 1, 4, 1, 1, 4, 1, 1, 4, + 1, 1, 16, 15, 12, 11, 16, 15, 12, 11, 16, 15, 12, 11, 16, 15, 12, 11, 16, 15, 12, 11, 10, 7, 5, 1, 1, 15, 7, 2, 7, 11, 12, 12, 11, 10, 12, 11, 10, 12, - 11, 10, 12, 11, 9, 12, 16, 12, - 12, 16, 16, 16, 16, 16, 12, 12, - 16, 16, 16, 16, 16, 12, 12, 16, - 16, 16, 16, 16, 12, 12, 16, 16, - 16, 16, 11, 16, 12, 12, 11, 16, - 15, 12, 11, 16, 15, 12, 11, 16, - 15, 12, 11, 16, 15, 12, 11, 10, - 7, 5, 1, 1, 15, 7, 2, 7, - 11, 12, 12, 11, 10, 12, 11, 10, - 12, 11, 10, 12, 11, 9, 12, 16, + 11, 10, 12, 11, 9, 12, 11, 16, 12, 12, 16, 16, 16, 16, 16, 12, 12, 16, 16, 16, 16, 16, 12, 12, 16, 16, 16, 16, 16, 12, 12, 16, - 16, 16, 16, 16, 11, 12, 11, 12, + 16, 16, 16, 16, 12, 12, 12, 12, + 11, 16, 15, 12, 11, 16, 15, 12, + 11, 16, 15, 12, 11, 16, 15, 12, + 11, 10, 7, 5, 1, 1, 15, 7, + 2, 7, 11, 12, 12, 11, 10, 12, + 11, 10, 12, 11, 10, 12, 11, 9, + 12, 16, 12, 12, 16, 16, 16, 16, + 16, 12, 12, 16, 16, 16, 16, 16, + 12, 12, 16, 16, 16, 16, 16, 12, + 12, 16, 16, 16, 16, 11, 16, 12, 12, 11, 16, 15, 12, 11, 16, 15, 12, 11, 16, 15, 12, 11, 16, 15, 12, 11, 10, 7, 5, 1, 1, 15, @@ -147,8 +148,21 @@ static const char _indic_syllable_machine_key_spans[] = { 9, 12, 16, 12, 12, 16, 16, 16, 16, 16, 12, 12, 16, 16, 16, 16, 16, 12, 12, 16, 16, 16, 16, 16, - 12, 12, 16, 16, 16, 16, 16, 12, - 16, 15, 16 + 12, 12, 16, 16, 16, 16, 16, 11, + 12, 11, 12, 12, 11, 16, 15, 12, + 11, 16, 15, 12, 11, 16, 15, 12, + 11, 16, 15, 12, 11, 10, 7, 5, + 1, 1, 15, 7, 2, 7, 11, 12, + 12, 11, 10, 12, 11, 10, 12, 11, + 10, 12, 11, 9, 12, 16, 12, 12, + 16, 16, 16, 16, 16, 12, 12, 16, + 16, 16, 16, 16, 12, 12, 16, 16, + 16, 16, 16, 12, 12, 16, 16, 16, + 16, 16, 12, 16, 15, 16, 11, 16, + 15, 12, 11, 5, 1, 1, 12, 12, + 16, 12, 11, 10, 12, 11, 10, 12, + 11, 10, 12, 11, 7, 15, 7, 2, + 7, 11, 16 }; static const short _indic_syllable_machine_index_offsets[] = { @@ -170,44 +184,51 @@ static const short _indic_syllable_machine_index_offsets[] = { 681, 683, 685, 687, 689, 694, 696, 698, 703, 705, 707, 712, 714, 716, 728, 740, 752, 764, 776, 788, 800, 812, 824, 836, - 853, 869, 882, 894, 911, 927, 940, 952, - 969, 985, 998, 1010, 1027, 1043, 1056, 1068, - 1085, 1101, 1114, 1126, 1137, 1145, 1151, 1153, - 1155, 1171, 1179, 1182, 1190, 1202, 1215, 1228, - 1240, 1251, 1264, 1276, 1287, 1300, 1312, 1323, - 1336, 1348, 1358, 1371, 1383, 1400, 1413, 1426, - 1443, 1460, 1477, 1494, 1511, 1524, 1537, 1554, - 1571, 1588, 1605, 1622, 1635, 1648, 1665, 1682, - 1699, 1716, 1733, 1746, 1759, 1776, 1793, 1810, - 1827, 1844, 1857, 1870, 1883, 1896, 1908, 1925, - 1941, 1954, 1966, 1983, 1999, 2012, 2024, 2041, - 2057, 2070, 2082, 2099, 2115, 2128, 2140, 2151, - 2159, 2165, 2167, 2169, 2185, 2193, 2196, 2204, - 2216, 2229, 2242, 2254, 2265, 2278, 2290, 2301, - 2314, 2326, 2337, 2350, 2362, 2372, 2385, 2402, - 2415, 2428, 2445, 2462, 2479, 2496, 2513, 2526, - 2539, 2556, 2573, 2590, 2607, 2624, 2637, 2650, - 2667, 2684, 2701, 2718, 2735, 2748, 2761, 2778, - 2795, 2812, 2829, 2841, 2858, 2871, 2884, 2896, - 2913, 2929, 2942, 2954, 2971, 2987, 3000, 3012, - 3029, 3045, 3058, 3070, 3087, 3103, 3116, 3128, - 3139, 3147, 3153, 3155, 3157, 3173, 3181, 3184, - 3192, 3204, 3217, 3230, 3242, 3253, 3266, 3278, - 3289, 3302, 3314, 3325, 3338, 3350, 3360, 3373, - 3390, 3403, 3416, 3433, 3450, 3467, 3484, 3501, - 3514, 3527, 3544, 3561, 3578, 3595, 3612, 3625, - 3638, 3655, 3672, 3689, 3706, 3723, 3736, 3749, - 3766, 3783, 3800, 3817, 3834, 3846, 3859, 3871, - 3884, 3897, 3909, 3926, 3942, 3955, 3967, 3984, - 4000, 4013, 4025, 4042, 4058, 4071, 4083, 4100, - 4116, 4129, 4141, 4152, 4160, 4166, 4168, 4170, - 4186, 4194, 4197, 4205, 4217, 4230, 4243, 4255, - 4266, 4279, 4291, 4302, 4315, 4327, 4338, 4351, - 4363, 4373, 4386, 4403, 4416, 4429, 4446, 4463, - 4480, 4497, 4514, 4527, 4540, 4557, 4574, 4591, - 4608, 4625, 4638, 4651, 4668, 4685, 4702, 4719, - 4736, 4749, 4762, 4779, 4796, 4813, 4830, 4847, - 4860, 4877, 4893 + 848, 860, 864, 868, 872, 876, 878, 882, + 886, 888, 892, 896, 898, 915, 917, 919, + 921, 923, 928, 930, 932, 937, 939, 941, + 946, 948, 950, 967, 983, 996, 1008, 1025, + 1041, 1054, 1066, 1083, 1099, 1112, 1124, 1141, + 1157, 1170, 1182, 1199, 1215, 1228, 1240, 1251, + 1259, 1265, 1267, 1269, 1285, 1293, 1296, 1304, + 1316, 1329, 1342, 1354, 1365, 1378, 1390, 1401, + 1414, 1426, 1437, 1450, 1462, 1472, 1485, 1497, + 1514, 1527, 1540, 1557, 1574, 1591, 1608, 1625, + 1638, 1651, 1668, 1685, 1702, 1719, 1736, 1749, + 1762, 1779, 1796, 1813, 1830, 1847, 1860, 1873, + 1890, 1907, 1924, 1941, 1958, 1971, 1984, 1997, + 2010, 2022, 2039, 2055, 2068, 2080, 2097, 2113, + 2126, 2138, 2155, 2171, 2184, 2196, 2213, 2229, + 2242, 2254, 2265, 2273, 2279, 2281, 2283, 2299, + 2307, 2310, 2318, 2330, 2343, 2356, 2368, 2379, + 2392, 2404, 2415, 2428, 2440, 2451, 2464, 2476, + 2486, 2499, 2516, 2529, 2542, 2559, 2576, 2593, + 2610, 2627, 2640, 2653, 2670, 2687, 2704, 2721, + 2738, 2751, 2764, 2781, 2798, 2815, 2832, 2849, + 2862, 2875, 2892, 2909, 2926, 2943, 2955, 2972, + 2985, 2998, 3010, 3027, 3043, 3056, 3068, 3085, + 3101, 3114, 3126, 3143, 3159, 3172, 3184, 3201, + 3217, 3230, 3242, 3253, 3261, 3267, 3269, 3271, + 3287, 3295, 3298, 3306, 3318, 3331, 3344, 3356, + 3367, 3380, 3392, 3403, 3416, 3428, 3439, 3452, + 3464, 3474, 3487, 3504, 3517, 3530, 3547, 3564, + 3581, 3598, 3615, 3628, 3641, 3658, 3675, 3692, + 3709, 3726, 3739, 3752, 3769, 3786, 3803, 3820, + 3837, 3850, 3863, 3880, 3897, 3914, 3931, 3948, + 3960, 3973, 3985, 3998, 4011, 4023, 4040, 4056, + 4069, 4081, 4098, 4114, 4127, 4139, 4156, 4172, + 4185, 4197, 4214, 4230, 4243, 4255, 4266, 4274, + 4280, 4282, 4284, 4300, 4308, 4311, 4319, 4331, + 4344, 4357, 4369, 4380, 4393, 4405, 4416, 4429, + 4441, 4452, 4465, 4477, 4487, 4500, 4517, 4530, + 4543, 4560, 4577, 4594, 4611, 4628, 4641, 4654, + 4671, 4688, 4705, 4722, 4739, 4752, 4765, 4782, + 4799, 4816, 4833, 4850, 4863, 4876, 4893, 4910, + 4927, 4944, 4961, 4974, 4991, 5007, 5024, 5036, + 5053, 5069, 5082, 5094, 5100, 5102, 5104, 5117, + 5130, 5147, 5160, 5172, 5183, 5196, 5208, 5219, + 5232, 5244, 5255, 5268, 5280, 5288, 5304, 5312, + 5315, 5323, 5335 }; static const short _indic_syllable_machine_indicies[] = { @@ -285,7 +306,7 @@ static const short _indic_syllable_machine_indicies[] = { 76, 76, 76, 76, 76, 76, 109, 76, 109, 80, 80, 81, 76, 76, 76, 76, 76, 110, 109, 76, 111, 80, 80, 81, - 76, 76, 76, 76, 76, 76, 111, 76, + 82, 82, 82, 82, 82, 82, 111, 82, 111, 80, 80, 81, 76, 76, 76, 76, 76, 112, 111, 76, 113, 80, 80, 81, 76, 76, 76, 76, 76, 76, 113, 76, @@ -315,577 +336,640 @@ static const short _indic_syllable_machine_indicies[] = { 114, 149, 148, 114, 150, 118, 118, 119, 114, 114, 114, 114, 114, 114, 150, 114, 150, 118, 118, 119, 114, 114, 114, 114, - 114, 151, 150, 114, 153, 154, 155, 156, - 157, 158, 81, 159, 160, 152, 161, 161, - 162, 163, 164, 165, 152, 167, 168, 169, - 170, 5, 171, 172, 173, 166, 166, 37, - 174, 166, 166, 153, 166, 175, 168, 176, - 176, 5, 171, 172, 173, 166, 166, 166, - 174, 166, 168, 176, 176, 5, 171, 172, - 173, 166, 166, 166, 174, 166, 177, 166, - 166, 166, 18, 178, 166, 171, 172, 166, - 166, 166, 166, 179, 166, 177, 166, 180, - 181, 182, 183, 5, 171, 172, 173, 166, - 166, 35, 184, 166, 166, 177, 166, 185, - 181, 186, 186, 5, 171, 172, 173, 166, - 166, 166, 184, 166, 181, 186, 186, 5, - 171, 172, 173, 166, 166, 166, 184, 166, - 187, 166, 166, 166, 18, 188, 166, 171, - 172, 166, 166, 166, 166, 179, 166, 187, - 166, 189, 190, 191, 192, 5, 171, 172, - 173, 166, 166, 33, 193, 166, 166, 187, - 166, 194, 190, 195, 195, 5, 171, 172, - 173, 166, 166, 166, 193, 166, 190, 195, - 195, 5, 171, 172, 173, 166, 166, 166, - 193, 166, 196, 166, 166, 166, 18, 197, - 166, 171, 172, 166, 166, 166, 166, 179, - 166, 196, 166, 198, 199, 200, 201, 5, - 171, 172, 173, 166, 166, 31, 202, 166, - 166, 196, 166, 203, 199, 204, 204, 5, - 171, 172, 173, 166, 166, 166, 202, 166, - 199, 204, 204, 5, 171, 172, 173, 166, - 166, 166, 202, 166, 205, 166, 166, 166, - 18, 206, 166, 171, 172, 166, 166, 166, - 166, 179, 166, 205, 166, 207, 208, 209, - 210, 5, 171, 172, 173, 166, 166, 29, - 211, 166, 166, 205, 166, 212, 208, 213, - 213, 5, 171, 172, 173, 166, 166, 166, - 211, 166, 208, 213, 213, 5, 171, 172, - 173, 166, 166, 166, 211, 166, 18, 214, - 166, 171, 172, 166, 166, 166, 166, 179, - 166, 171, 172, 166, 166, 166, 166, 179, - 166, 215, 166, 166, 166, 172, 166, 172, - 166, 216, 166, 217, 166, 218, 219, 166, - 171, 172, 166, 166, 166, 3, 166, 166, - 166, 1, 166, 2, 166, 166, 166, 166, - 171, 172, 166, 171, 172, 166, 217, 166, - 166, 166, 166, 171, 172, 166, 217, 166, - 218, 166, 166, 171, 172, 166, 166, 166, - 3, 166, 18, 166, 220, 220, 5, 171, - 172, 166, 166, 166, 166, 179, 166, 221, - 27, 222, 223, 8, 171, 172, 166, 166, - 166, 166, 179, 166, 27, 222, 223, 8, - 171, 172, 166, 166, 166, 166, 179, 166, - 222, 222, 8, 171, 172, 166, 166, 166, - 166, 179, 166, 224, 24, 225, 226, 11, - 171, 172, 166, 166, 166, 166, 179, 166, - 24, 225, 226, 11, 171, 172, 166, 166, - 166, 166, 179, 166, 225, 225, 11, 171, - 172, 166, 166, 166, 166, 179, 166, 227, - 21, 228, 229, 14, 171, 172, 166, 166, - 166, 166, 179, 166, 21, 228, 229, 14, - 171, 172, 166, 166, 166, 166, 179, 166, - 228, 228, 14, 171, 172, 166, 166, 166, - 166, 179, 166, 230, 18, 166, 231, 166, - 171, 172, 166, 166, 166, 166, 179, 166, - 18, 166, 231, 166, 171, 172, 166, 166, - 166, 166, 179, 166, 232, 166, 171, 172, - 166, 166, 166, 166, 179, 166, 18, 166, - 166, 166, 166, 171, 172, 166, 166, 166, - 166, 179, 166, 208, 213, 213, 5, 171, - 172, 166, 166, 166, 166, 211, 166, 1, - 2, 166, 166, 18, 214, 166, 171, 172, - 166, 166, 166, 166, 179, 166, 1, 166, - 207, 208, 213, 213, 5, 171, 172, 173, - 166, 166, 166, 211, 166, 207, 208, 209, - 213, 5, 171, 172, 173, 166, 166, 29, - 211, 166, 205, 166, 233, 166, 220, 220, - 5, 171, 172, 166, 166, 166, 166, 179, - 166, 205, 166, 205, 166, 166, 166, 166, - 166, 166, 171, 172, 166, 166, 166, 166, - 179, 166, 205, 166, 205, 166, 166, 166, - 166, 234, 166, 171, 172, 166, 166, 166, - 166, 179, 166, 205, 166, 205, 166, 233, - 166, 166, 166, 166, 171, 172, 166, 166, - 166, 166, 179, 166, 205, 166, 205, 2, - 166, 166, 18, 206, 166, 171, 172, 166, - 166, 166, 166, 179, 166, 205, 166, 198, - 199, 204, 204, 5, 171, 172, 173, 166, - 166, 166, 202, 166, 198, 199, 200, 204, - 5, 171, 172, 173, 166, 166, 31, 202, - 166, 196, 166, 235, 166, 220, 220, 5, - 171, 172, 166, 166, 166, 166, 179, 166, - 196, 166, 196, 166, 166, 166, 166, 166, - 166, 171, 172, 166, 166, 166, 166, 179, - 166, 196, 166, 196, 166, 166, 166, 166, - 236, 166, 171, 172, 166, 166, 166, 166, - 179, 166, 196, 166, 196, 166, 235, 166, - 166, 166, 166, 171, 172, 166, 166, 166, - 166, 179, 166, 196, 166, 196, 2, 166, - 166, 18, 197, 166, 171, 172, 166, 166, - 166, 166, 179, 166, 196, 166, 189, 190, - 195, 195, 5, 171, 172, 173, 166, 166, - 166, 193, 166, 189, 190, 191, 195, 5, - 171, 172, 173, 166, 166, 33, 193, 166, - 187, 166, 237, 166, 220, 220, 5, 171, - 172, 166, 166, 166, 166, 179, 166, 187, - 166, 187, 166, 166, 166, 166, 166, 166, - 171, 172, 166, 166, 166, 166, 179, 166, - 187, 166, 187, 166, 166, 166, 166, 238, - 166, 171, 172, 166, 166, 166, 166, 179, - 166, 187, 166, 187, 166, 237, 166, 166, - 166, 166, 171, 172, 166, 166, 166, 166, - 179, 166, 187, 166, 187, 2, 166, 166, - 18, 188, 166, 171, 172, 166, 166, 166, - 166, 179, 166, 187, 166, 180, 181, 186, - 186, 5, 171, 172, 173, 166, 166, 166, - 184, 166, 180, 181, 182, 186, 5, 171, - 172, 173, 166, 166, 35, 184, 166, 177, - 166, 239, 166, 220, 220, 5, 171, 172, - 166, 166, 166, 166, 179, 166, 177, 166, - 177, 166, 166, 166, 166, 166, 166, 171, - 172, 166, 166, 166, 166, 179, 166, 177, - 166, 177, 166, 166, 166, 166, 240, 166, - 171, 172, 166, 166, 166, 166, 179, 166, - 177, 166, 177, 166, 239, 166, 166, 166, - 166, 171, 172, 166, 166, 166, 166, 179, - 166, 177, 166, 177, 2, 166, 166, 18, - 178, 166, 171, 172, 166, 166, 166, 166, - 179, 166, 177, 166, 167, 168, 176, 176, - 5, 171, 172, 173, 166, 166, 166, 174, - 166, 167, 168, 169, 176, 5, 171, 172, - 173, 166, 166, 37, 174, 166, 242, 243, - 244, 245, 43, 246, 247, 241, 241, 241, - 75, 248, 241, 249, 243, 250, 245, 43, - 246, 247, 241, 241, 241, 241, 248, 241, - 243, 250, 245, 43, 246, 247, 241, 241, - 241, 241, 248, 241, 251, 241, 241, 241, - 56, 252, 241, 246, 247, 241, 241, 241, - 241, 253, 241, 251, 241, 254, 255, 256, - 257, 43, 246, 247, 241, 241, 241, 73, - 258, 241, 241, 251, 241, 259, 255, 260, - 260, 43, 246, 247, 241, 241, 241, 241, - 258, 241, 255, 260, 260, 43, 246, 247, - 241, 241, 241, 241, 258, 241, 261, 241, - 241, 241, 56, 262, 241, 246, 247, 241, - 241, 241, 241, 253, 241, 261, 241, 263, - 264, 265, 266, 43, 246, 247, 241, 241, - 241, 71, 267, 241, 241, 261, 241, 268, - 264, 269, 269, 43, 246, 247, 241, 241, - 241, 241, 267, 241, 264, 269, 269, 43, - 246, 247, 241, 241, 241, 241, 267, 241, - 270, 241, 241, 241, 56, 271, 241, 246, - 247, 241, 241, 241, 241, 253, 241, 270, - 241, 272, 273, 274, 275, 43, 246, 247, - 241, 241, 241, 69, 276, 241, 241, 270, - 241, 277, 273, 278, 278, 43, 246, 247, - 241, 241, 241, 241, 276, 241, 273, 278, - 278, 43, 246, 247, 241, 241, 241, 241, - 276, 241, 279, 241, 241, 241, 56, 280, - 241, 246, 247, 241, 241, 241, 241, 253, - 241, 279, 241, 281, 282, 283, 284, 43, - 246, 247, 241, 241, 241, 67, 285, 241, - 241, 279, 241, 286, 282, 287, 287, 43, - 246, 247, 241, 241, 241, 241, 285, 241, - 282, 287, 287, 43, 246, 247, 241, 241, - 241, 241, 285, 241, 56, 288, 241, 246, - 247, 241, 241, 241, 241, 253, 241, 246, - 247, 241, 241, 241, 241, 253, 241, 289, - 241, 241, 241, 247, 241, 247, 241, 290, - 241, 291, 241, 292, 293, 241, 246, 247, - 241, 241, 241, 41, 241, 241, 241, 39, - 241, 40, 241, 241, 241, 241, 246, 247, - 241, 246, 247, 241, 291, 241, 241, 241, - 241, 246, 247, 241, 291, 241, 292, 241, - 241, 246, 247, 241, 241, 241, 41, 241, - 56, 241, 294, 294, 43, 246, 247, 241, - 241, 241, 241, 253, 241, 295, 65, 296, - 297, 46, 246, 247, 241, 241, 241, 241, - 253, 241, 65, 296, 297, 46, 246, 247, - 241, 241, 241, 241, 253, 241, 296, 296, - 46, 246, 247, 241, 241, 241, 241, 253, - 241, 298, 62, 299, 300, 49, 246, 247, - 241, 241, 241, 241, 253, 241, 62, 299, - 300, 49, 246, 247, 241, 241, 241, 241, - 253, 241, 299, 299, 49, 246, 247, 241, - 241, 241, 241, 253, 241, 301, 59, 302, - 303, 52, 246, 247, 241, 241, 241, 241, - 253, 241, 59, 302, 303, 52, 246, 247, - 241, 241, 241, 241, 253, 241, 302, 302, - 52, 246, 247, 241, 241, 241, 241, 253, - 241, 304, 56, 241, 305, 241, 246, 247, - 241, 241, 241, 241, 253, 241, 56, 241, - 305, 241, 246, 247, 241, 241, 241, 241, - 253, 241, 306, 241, 246, 247, 241, 241, - 241, 241, 253, 241, 56, 241, 241, 241, - 241, 246, 247, 241, 241, 241, 241, 253, - 241, 39, 40, 241, 241, 56, 288, 241, - 246, 247, 241, 241, 241, 241, 253, 241, - 39, 241, 281, 282, 287, 287, 43, 246, - 247, 241, 241, 241, 241, 285, 241, 281, - 282, 283, 287, 43, 246, 247, 241, 241, - 241, 67, 285, 241, 279, 241, 307, 241, - 294, 294, 43, 246, 247, 241, 241, 241, - 241, 253, 241, 279, 241, 279, 241, 241, - 241, 241, 241, 241, 246, 247, 241, 241, - 241, 241, 253, 241, 279, 241, 279, 241, - 241, 241, 241, 308, 241, 246, 247, 241, - 241, 241, 241, 253, 241, 279, 241, 279, - 241, 307, 241, 241, 241, 241, 246, 247, - 241, 241, 241, 241, 253, 241, 279, 241, - 279, 40, 241, 241, 56, 280, 241, 246, - 247, 241, 241, 241, 241, 253, 241, 279, - 241, 272, 273, 278, 278, 43, 246, 247, - 241, 241, 241, 241, 276, 241, 272, 273, - 274, 278, 43, 246, 247, 241, 241, 241, - 69, 276, 241, 270, 241, 309, 241, 294, - 294, 43, 246, 247, 241, 241, 241, 241, - 253, 241, 270, 241, 270, 241, 241, 241, - 241, 241, 241, 246, 247, 241, 241, 241, - 241, 253, 241, 270, 241, 270, 241, 241, - 241, 241, 310, 241, 246, 247, 241, 241, - 241, 241, 253, 241, 270, 241, 270, 241, - 309, 241, 241, 241, 241, 246, 247, 241, - 241, 241, 241, 253, 241, 270, 241, 270, - 40, 241, 241, 56, 271, 241, 246, 247, - 241, 241, 241, 241, 253, 241, 270, 241, - 263, 264, 269, 269, 43, 246, 247, 241, - 241, 241, 241, 267, 241, 263, 264, 265, - 269, 43, 246, 247, 241, 241, 241, 71, - 267, 241, 261, 241, 311, 241, 294, 294, - 43, 246, 247, 241, 241, 241, 241, 253, - 241, 261, 241, 261, 241, 241, 241, 241, - 241, 241, 246, 247, 241, 241, 241, 241, - 253, 241, 261, 241, 261, 241, 241, 241, - 241, 312, 241, 246, 247, 241, 241, 241, - 241, 253, 241, 261, 241, 261, 241, 311, - 241, 241, 241, 241, 246, 247, 241, 241, - 241, 241, 253, 241, 261, 241, 261, 40, - 241, 241, 56, 262, 241, 246, 247, 241, - 241, 241, 241, 253, 241, 261, 241, 254, - 255, 260, 260, 43, 246, 247, 241, 241, - 241, 241, 258, 241, 254, 255, 256, 260, - 43, 246, 247, 241, 241, 241, 73, 258, - 241, 251, 241, 313, 241, 294, 294, 43, - 246, 247, 241, 241, 241, 241, 253, 241, - 251, 241, 251, 241, 241, 241, 241, 241, - 241, 246, 247, 241, 241, 241, 241, 253, - 241, 251, 241, 251, 241, 241, 241, 241, - 314, 241, 246, 247, 241, 241, 241, 241, - 253, 241, 251, 241, 251, 241, 313, 241, - 241, 241, 241, 246, 247, 241, 241, 241, - 241, 253, 241, 251, 241, 74, 42, 42, - 43, 241, 241, 241, 241, 241, 241, 74, - 241, 251, 40, 241, 241, 56, 252, 241, - 246, 247, 241, 241, 241, 241, 253, 241, - 251, 241, 242, 243, 250, 245, 43, 246, - 247, 241, 241, 241, 241, 248, 241, 316, - 156, 317, 317, 81, 159, 160, 315, 315, - 315, 315, 163, 315, 156, 317, 317, 81, - 159, 160, 315, 315, 315, 315, 163, 315, - 318, 315, 315, 315, 95, 319, 315, 159, - 160, 315, 315, 315, 315, 320, 315, 318, - 315, 321, 322, 323, 324, 81, 159, 160, - 315, 315, 315, 112, 325, 315, 315, 318, - 315, 326, 322, 327, 327, 81, 159, 160, - 315, 315, 315, 315, 325, 315, 322, 327, - 327, 81, 159, 160, 315, 315, 315, 315, - 325, 315, 328, 315, 315, 315, 95, 329, - 315, 159, 160, 315, 315, 315, 315, 320, - 315, 328, 315, 330, 331, 332, 333, 81, - 159, 160, 315, 315, 315, 110, 334, 315, - 315, 328, 315, 335, 331, 336, 336, 81, - 159, 160, 315, 315, 315, 315, 334, 315, - 331, 336, 336, 81, 159, 160, 315, 315, - 315, 315, 334, 315, 337, 315, 315, 315, - 95, 338, 315, 159, 160, 315, 315, 315, - 315, 320, 315, 337, 315, 339, 340, 341, - 342, 81, 159, 160, 315, 315, 315, 108, - 343, 315, 315, 337, 315, 344, 340, 345, - 345, 81, 159, 160, 315, 315, 315, 315, - 343, 315, 340, 345, 345, 81, 159, 160, - 315, 315, 315, 315, 343, 315, 346, 315, - 315, 315, 95, 347, 315, 159, 160, 315, - 315, 315, 315, 320, 315, 346, 315, 348, - 349, 350, 351, 81, 159, 160, 315, 315, - 315, 106, 352, 315, 315, 346, 315, 353, - 349, 354, 354, 81, 159, 160, 315, 315, - 315, 315, 352, 315, 349, 354, 354, 81, - 159, 160, 315, 315, 315, 315, 352, 315, - 95, 355, 315, 159, 160, 315, 315, 315, - 315, 320, 315, 159, 160, 315, 315, 315, - 315, 320, 315, 356, 315, 315, 315, 160, - 315, 160, 315, 357, 315, 358, 315, 359, - 360, 315, 159, 160, 315, 315, 315, 79, - 315, 315, 315, 77, 315, 78, 315, 315, - 315, 315, 159, 160, 315, 159, 160, 315, - 358, 315, 315, 315, 315, 159, 160, 315, - 358, 315, 359, 315, 315, 159, 160, 315, - 315, 315, 79, 315, 95, 315, 361, 361, - 81, 159, 160, 315, 315, 315, 315, 320, - 315, 362, 104, 363, 364, 85, 159, 160, - 315, 315, 315, 315, 320, 315, 104, 363, - 364, 85, 159, 160, 315, 315, 315, 315, - 320, 315, 363, 363, 85, 159, 160, 315, - 315, 315, 315, 320, 315, 365, 101, 366, - 367, 88, 159, 160, 315, 315, 315, 315, - 320, 315, 101, 366, 367, 88, 159, 160, - 315, 315, 315, 315, 320, 315, 366, 366, - 88, 159, 160, 315, 315, 315, 315, 320, - 315, 368, 98, 369, 370, 91, 159, 160, - 315, 315, 315, 315, 320, 315, 98, 369, - 370, 91, 159, 160, 315, 315, 315, 315, - 320, 315, 369, 369, 91, 159, 160, 315, - 315, 315, 315, 320, 315, 371, 95, 315, - 372, 315, 159, 160, 315, 315, 315, 315, - 320, 315, 95, 315, 372, 315, 159, 160, - 315, 315, 315, 315, 320, 315, 373, 315, - 159, 160, 315, 315, 315, 315, 320, 315, - 95, 315, 315, 315, 315, 159, 160, 315, - 315, 315, 315, 320, 315, 77, 78, 315, - 315, 95, 355, 315, 159, 160, 315, 315, - 315, 315, 320, 315, 77, 315, 348, 349, - 354, 354, 81, 159, 160, 315, 315, 315, - 315, 352, 315, 348, 349, 350, 354, 81, - 159, 160, 315, 315, 315, 106, 352, 315, - 346, 315, 374, 315, 361, 361, 81, 159, - 160, 315, 315, 315, 315, 320, 315, 346, - 315, 346, 315, 315, 315, 315, 315, 315, - 159, 160, 315, 315, 315, 315, 320, 315, - 346, 315, 346, 315, 315, 315, 315, 375, - 315, 159, 160, 315, 315, 315, 315, 320, - 315, 346, 315, 346, 315, 374, 315, 315, - 315, 315, 159, 160, 315, 315, 315, 315, - 320, 315, 346, 315, 346, 78, 315, 315, - 95, 347, 315, 159, 160, 315, 315, 315, - 315, 320, 315, 346, 315, 339, 340, 345, - 345, 81, 159, 160, 315, 315, 315, 315, - 343, 315, 339, 340, 341, 345, 81, 159, - 160, 315, 315, 315, 108, 343, 315, 337, - 315, 376, 315, 361, 361, 81, 159, 160, - 315, 315, 315, 315, 320, 315, 337, 315, - 337, 315, 315, 315, 315, 315, 315, 159, - 160, 315, 315, 315, 315, 320, 315, 337, - 315, 337, 315, 315, 315, 315, 377, 315, - 159, 160, 315, 315, 315, 315, 320, 315, - 337, 315, 337, 315, 376, 315, 315, 315, - 315, 159, 160, 315, 315, 315, 315, 320, - 315, 337, 315, 337, 78, 315, 315, 95, - 338, 315, 159, 160, 315, 315, 315, 315, - 320, 315, 337, 315, 330, 331, 336, 336, - 81, 159, 160, 315, 315, 315, 315, 334, - 315, 330, 331, 332, 336, 81, 159, 160, - 315, 315, 315, 110, 334, 315, 328, 315, - 378, 315, 361, 361, 81, 159, 160, 315, - 315, 315, 315, 320, 315, 328, 315, 328, - 315, 315, 315, 315, 315, 315, 159, 160, - 315, 315, 315, 315, 320, 315, 328, 315, - 328, 315, 315, 315, 315, 379, 315, 159, - 160, 315, 315, 315, 315, 320, 315, 328, - 315, 328, 315, 378, 315, 315, 315, 315, - 159, 160, 315, 315, 315, 315, 320, 315, - 328, 315, 328, 78, 315, 315, 95, 329, - 315, 159, 160, 315, 315, 315, 315, 320, - 315, 328, 315, 321, 322, 327, 327, 81, - 159, 160, 315, 315, 315, 315, 325, 315, - 321, 322, 323, 327, 81, 159, 160, 315, - 315, 315, 112, 325, 315, 318, 315, 380, - 315, 361, 361, 81, 159, 160, 315, 315, - 315, 315, 320, 315, 318, 315, 318, 315, - 315, 315, 315, 315, 315, 159, 160, 315, - 315, 315, 315, 320, 315, 318, 315, 318, - 315, 315, 315, 315, 381, 315, 159, 160, - 315, 315, 315, 315, 320, 315, 318, 315, - 318, 315, 380, 315, 315, 315, 315, 159, - 160, 315, 315, 315, 315, 320, 315, 318, - 315, 318, 78, 315, 315, 95, 319, 315, - 159, 160, 315, 315, 315, 315, 320, 315, - 318, 315, 113, 80, 80, 81, 382, 382, - 382, 382, 382, 162, 113, 382, 155, 156, - 317, 317, 81, 159, 160, 315, 315, 315, - 315, 163, 315, 113, 80, 80, 81, 382, - 382, 382, 382, 382, 382, 113, 382, 384, - 385, 386, 387, 119, 388, 389, 383, 383, - 383, 151, 390, 383, 391, 385, 387, 387, - 119, 388, 389, 383, 383, 383, 383, 390, - 383, 385, 387, 387, 119, 388, 389, 383, - 383, 383, 383, 390, 383, 392, 383, 383, - 383, 132, 393, 383, 388, 389, 383, 383, - 383, 383, 394, 383, 392, 383, 395, 396, - 397, 398, 119, 388, 389, 383, 383, 383, - 149, 399, 383, 383, 392, 383, 400, 396, - 401, 401, 119, 388, 389, 383, 383, 383, - 383, 399, 383, 396, 401, 401, 119, 388, - 389, 383, 383, 383, 383, 399, 383, 402, - 383, 383, 383, 132, 403, 383, 388, 389, - 383, 383, 383, 383, 394, 383, 402, 383, - 404, 405, 406, 407, 119, 388, 389, 383, - 383, 383, 147, 408, 383, 383, 402, 383, - 409, 405, 410, 410, 119, 388, 389, 383, - 383, 383, 383, 408, 383, 405, 410, 410, - 119, 388, 389, 383, 383, 383, 383, 408, - 383, 411, 383, 383, 383, 132, 412, 383, - 388, 389, 383, 383, 383, 383, 394, 383, - 411, 383, 413, 414, 415, 416, 119, 388, - 389, 383, 383, 383, 145, 417, 383, 383, - 411, 383, 418, 414, 419, 419, 119, 388, - 389, 383, 383, 383, 383, 417, 383, 414, - 419, 419, 119, 388, 389, 383, 383, 383, - 383, 417, 383, 420, 383, 383, 383, 132, - 421, 383, 388, 389, 383, 383, 383, 383, - 394, 383, 420, 383, 422, 423, 424, 425, - 119, 388, 389, 383, 383, 383, 143, 426, - 383, 383, 420, 383, 427, 423, 428, 428, - 119, 388, 389, 383, 383, 383, 383, 426, - 383, 423, 428, 428, 119, 388, 389, 383, - 383, 383, 383, 426, 383, 132, 429, 383, - 388, 389, 383, 383, 383, 383, 394, 383, - 388, 389, 383, 383, 383, 383, 394, 383, - 430, 383, 383, 383, 389, 383, 389, 383, - 431, 383, 432, 383, 433, 434, 383, 388, - 389, 383, 383, 383, 117, 383, 383, 383, - 115, 383, 116, 383, 383, 383, 383, 388, - 389, 383, 388, 389, 383, 432, 383, 383, - 383, 383, 388, 389, 383, 432, 383, 433, - 383, 383, 388, 389, 383, 383, 383, 117, - 383, 132, 383, 435, 435, 119, 388, 389, - 383, 383, 383, 383, 394, 383, 436, 141, - 437, 438, 122, 388, 389, 383, 383, 383, - 383, 394, 383, 141, 437, 438, 122, 388, - 389, 383, 383, 383, 383, 394, 383, 437, - 437, 122, 388, 389, 383, 383, 383, 383, - 394, 383, 439, 138, 440, 441, 125, 388, - 389, 383, 383, 383, 383, 394, 383, 138, - 440, 441, 125, 388, 389, 383, 383, 383, - 383, 394, 383, 440, 440, 125, 388, 389, - 383, 383, 383, 383, 394, 383, 442, 135, - 443, 444, 128, 388, 389, 383, 383, 383, - 383, 394, 383, 135, 443, 444, 128, 388, - 389, 383, 383, 383, 383, 394, 383, 443, - 443, 128, 388, 389, 383, 383, 383, 383, - 394, 383, 445, 132, 383, 446, 383, 388, - 389, 383, 383, 383, 383, 394, 383, 132, - 383, 446, 383, 388, 389, 383, 383, 383, - 383, 394, 383, 447, 383, 388, 389, 383, - 383, 383, 383, 394, 383, 132, 383, 383, - 383, 383, 388, 389, 383, 383, 383, 383, - 394, 383, 115, 116, 383, 383, 132, 429, - 383, 388, 389, 383, 383, 383, 383, 394, - 383, 115, 383, 422, 423, 428, 428, 119, - 388, 389, 383, 383, 383, 383, 426, 383, - 422, 423, 424, 428, 119, 388, 389, 383, - 383, 383, 143, 426, 383, 420, 383, 448, - 383, 435, 435, 119, 388, 389, 383, 383, - 383, 383, 394, 383, 420, 383, 420, 383, - 383, 383, 383, 383, 383, 388, 389, 383, - 383, 383, 383, 394, 383, 420, 383, 420, - 383, 383, 383, 383, 449, 383, 388, 389, - 383, 383, 383, 383, 394, 383, 420, 383, - 420, 383, 448, 383, 383, 383, 383, 388, - 389, 383, 383, 383, 383, 394, 383, 420, - 383, 420, 116, 383, 383, 132, 421, 383, - 388, 389, 383, 383, 383, 383, 394, 383, - 420, 383, 413, 414, 419, 419, 119, 388, - 389, 383, 383, 383, 383, 417, 383, 413, - 414, 415, 419, 119, 388, 389, 383, 383, - 383, 145, 417, 383, 411, 383, 450, 383, - 435, 435, 119, 388, 389, 383, 383, 383, - 383, 394, 383, 411, 383, 411, 383, 383, - 383, 383, 383, 383, 388, 389, 383, 383, - 383, 383, 394, 383, 411, 383, 411, 383, - 383, 383, 383, 451, 383, 388, 389, 383, - 383, 383, 383, 394, 383, 411, 383, 411, - 383, 450, 383, 383, 383, 383, 388, 389, - 383, 383, 383, 383, 394, 383, 411, 383, - 411, 116, 383, 383, 132, 412, 383, 388, - 389, 383, 383, 383, 383, 394, 383, 411, - 383, 404, 405, 410, 410, 119, 388, 389, - 383, 383, 383, 383, 408, 383, 404, 405, - 406, 410, 119, 388, 389, 383, 383, 383, - 147, 408, 383, 402, 383, 452, 383, 435, - 435, 119, 388, 389, 383, 383, 383, 383, - 394, 383, 402, 383, 402, 383, 383, 383, - 383, 383, 383, 388, 389, 383, 383, 383, - 383, 394, 383, 402, 383, 402, 383, 383, - 383, 383, 453, 383, 388, 389, 383, 383, - 383, 383, 394, 383, 402, 383, 402, 383, - 452, 383, 383, 383, 383, 388, 389, 383, - 383, 383, 383, 394, 383, 402, 383, 402, - 116, 383, 383, 132, 403, 383, 388, 389, - 383, 383, 383, 383, 394, 383, 402, 383, - 395, 396, 401, 401, 119, 388, 389, 383, - 383, 383, 383, 399, 383, 395, 396, 397, - 401, 119, 388, 389, 383, 383, 383, 149, - 399, 383, 392, 383, 454, 383, 435, 435, - 119, 388, 389, 383, 383, 383, 383, 394, - 383, 392, 383, 392, 383, 383, 383, 383, - 383, 383, 388, 389, 383, 383, 383, 383, - 394, 383, 392, 383, 392, 383, 383, 383, - 383, 455, 383, 388, 389, 383, 383, 383, - 383, 394, 383, 392, 383, 392, 383, 454, - 383, 383, 383, 383, 388, 389, 383, 383, - 383, 383, 394, 383, 392, 383, 392, 116, - 383, 383, 132, 393, 383, 388, 389, 383, - 383, 383, 383, 394, 383, 392, 383, 384, - 385, 387, 387, 119, 388, 389, 383, 383, - 383, 383, 390, 383, 153, 154, 382, 382, - 382, 382, 382, 382, 382, 382, 161, 161, - 382, 382, 382, 153, 382, 167, 456, 169, - 170, 5, 171, 172, 173, 166, 166, 37, - 174, 166, 166, 153, 166, 177, 154, 166, - 166, 18, 178, 166, 171, 172, 166, 161, - 161, 166, 179, 166, 177, 166, 0 + 114, 151, 150, 114, 113, 80, 80, 81, + 76, 76, 76, 76, 76, 152, 113, 76, + 111, 80, 80, 81, 0, 0, 0, 0, + 0, 153, 111, 0, 154, 154, 155, 0, + 6, 6, 155, 0, 156, 156, 157, 0, + 158, 158, 157, 0, 157, 0, 159, 159, + 160, 0, 161, 161, 160, 0, 160, 0, + 162, 162, 163, 0, 164, 164, 163, 0, + 163, 0, 165, 166, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 165, 0, 167, 0, 168, 0, 169, + 0, 170, 0, 171, 162, 162, 163, 0, + 172, 0, 173, 0, 174, 159, 159, 160, + 0, 175, 0, 176, 0, 177, 156, 156, + 157, 0, 178, 0, 179, 0, 181, 182, + 183, 184, 185, 186, 81, 187, 188, 180, + 189, 189, 152, 190, 191, 192, 180, 194, + 195, 196, 197, 5, 198, 199, 200, 193, + 193, 37, 201, 193, 193, 181, 193, 202, + 195, 203, 203, 5, 198, 199, 200, 193, + 193, 193, 201, 193, 195, 203, 203, 5, + 198, 199, 200, 193, 193, 193, 201, 193, + 204, 193, 193, 193, 18, 205, 193, 198, + 199, 193, 193, 193, 193, 206, 193, 204, + 193, 207, 208, 209, 210, 5, 198, 199, + 200, 193, 193, 35, 211, 193, 193, 204, + 193, 212, 208, 213, 213, 5, 198, 199, + 200, 193, 193, 193, 211, 193, 208, 213, + 213, 5, 198, 199, 200, 193, 193, 193, + 211, 193, 214, 193, 193, 193, 18, 215, + 193, 198, 199, 193, 193, 193, 193, 206, + 193, 214, 193, 216, 217, 218, 219, 5, + 198, 199, 200, 193, 193, 33, 220, 193, + 193, 214, 193, 221, 217, 222, 222, 5, + 198, 199, 200, 193, 193, 193, 220, 193, + 217, 222, 222, 5, 198, 199, 200, 193, + 193, 193, 220, 193, 223, 193, 193, 193, + 18, 224, 193, 198, 199, 193, 193, 193, + 193, 206, 193, 223, 193, 225, 226, 227, + 228, 5, 198, 199, 200, 193, 193, 31, + 229, 193, 193, 223, 193, 230, 226, 231, + 231, 5, 198, 199, 200, 193, 193, 193, + 229, 193, 226, 231, 231, 5, 198, 199, + 200, 193, 193, 193, 229, 193, 232, 193, + 193, 193, 18, 233, 193, 198, 199, 193, + 193, 193, 193, 206, 193, 232, 193, 234, + 235, 236, 237, 5, 198, 199, 200, 193, + 193, 29, 238, 193, 193, 232, 193, 239, + 235, 240, 240, 5, 198, 199, 200, 193, + 193, 193, 238, 193, 235, 240, 240, 5, + 198, 199, 200, 193, 193, 193, 238, 193, + 18, 241, 193, 198, 199, 193, 193, 193, + 193, 206, 193, 198, 199, 193, 193, 193, + 193, 206, 193, 242, 193, 193, 193, 199, + 193, 199, 193, 243, 193, 244, 193, 245, + 246, 193, 198, 199, 193, 193, 193, 3, + 193, 193, 193, 1, 193, 2, 193, 193, + 193, 193, 198, 199, 193, 198, 199, 193, + 244, 193, 193, 193, 193, 198, 199, 193, + 244, 193, 245, 193, 193, 198, 199, 193, + 193, 193, 3, 193, 18, 193, 247, 247, + 5, 198, 199, 193, 193, 193, 193, 206, + 193, 248, 27, 249, 250, 8, 198, 199, + 193, 193, 193, 193, 206, 193, 27, 249, + 250, 8, 198, 199, 193, 193, 193, 193, + 206, 193, 249, 249, 8, 198, 199, 193, + 193, 193, 193, 206, 193, 251, 24, 252, + 253, 11, 198, 199, 193, 193, 193, 193, + 206, 193, 24, 252, 253, 11, 198, 199, + 193, 193, 193, 193, 206, 193, 252, 252, + 11, 198, 199, 193, 193, 193, 193, 206, + 193, 254, 21, 255, 256, 14, 198, 199, + 193, 193, 193, 193, 206, 193, 21, 255, + 256, 14, 198, 199, 193, 193, 193, 193, + 206, 193, 255, 255, 14, 198, 199, 193, + 193, 193, 193, 206, 193, 257, 18, 193, + 258, 193, 198, 199, 193, 193, 193, 193, + 206, 193, 18, 193, 258, 193, 198, 199, + 193, 193, 193, 193, 206, 193, 259, 193, + 198, 199, 193, 193, 193, 193, 206, 193, + 18, 193, 193, 193, 193, 198, 199, 193, + 193, 193, 193, 206, 193, 235, 240, 240, + 5, 198, 199, 193, 193, 193, 193, 238, + 193, 1, 2, 193, 193, 18, 241, 193, + 198, 199, 193, 193, 193, 193, 206, 193, + 1, 193, 234, 235, 240, 240, 5, 198, + 199, 200, 193, 193, 193, 238, 193, 234, + 235, 236, 240, 5, 198, 199, 200, 193, + 193, 29, 238, 193, 232, 193, 260, 193, + 247, 247, 5, 198, 199, 193, 193, 193, + 193, 206, 193, 232, 193, 232, 193, 193, + 193, 193, 193, 193, 198, 199, 193, 193, + 193, 193, 206, 193, 232, 193, 232, 193, + 193, 193, 193, 261, 193, 198, 199, 193, + 193, 193, 193, 206, 193, 232, 193, 232, + 193, 260, 193, 193, 193, 193, 198, 199, + 193, 193, 193, 193, 206, 193, 232, 193, + 232, 2, 193, 193, 18, 233, 193, 198, + 199, 193, 193, 193, 193, 206, 193, 232, + 193, 225, 226, 231, 231, 5, 198, 199, + 200, 193, 193, 193, 229, 193, 225, 226, + 227, 231, 5, 198, 199, 200, 193, 193, + 31, 229, 193, 223, 193, 262, 193, 247, + 247, 5, 198, 199, 193, 193, 193, 193, + 206, 193, 223, 193, 223, 193, 193, 193, + 193, 193, 193, 198, 199, 193, 193, 193, + 193, 206, 193, 223, 193, 223, 193, 193, + 193, 193, 263, 193, 198, 199, 193, 193, + 193, 193, 206, 193, 223, 193, 223, 193, + 262, 193, 193, 193, 193, 198, 199, 193, + 193, 193, 193, 206, 193, 223, 193, 223, + 2, 193, 193, 18, 224, 193, 198, 199, + 193, 193, 193, 193, 206, 193, 223, 193, + 216, 217, 222, 222, 5, 198, 199, 200, + 193, 193, 193, 220, 193, 216, 217, 218, + 222, 5, 198, 199, 200, 193, 193, 33, + 220, 193, 214, 193, 264, 193, 247, 247, + 5, 198, 199, 193, 193, 193, 193, 206, + 193, 214, 193, 214, 193, 193, 193, 193, + 193, 193, 198, 199, 193, 193, 193, 193, + 206, 193, 214, 193, 214, 193, 193, 193, + 193, 265, 193, 198, 199, 193, 193, 193, + 193, 206, 193, 214, 193, 214, 193, 264, + 193, 193, 193, 193, 198, 199, 193, 193, + 193, 193, 206, 193, 214, 193, 214, 2, + 193, 193, 18, 215, 193, 198, 199, 193, + 193, 193, 193, 206, 193, 214, 193, 207, + 208, 213, 213, 5, 198, 199, 200, 193, + 193, 193, 211, 193, 207, 208, 209, 213, + 5, 198, 199, 200, 193, 193, 35, 211, + 193, 204, 193, 266, 193, 247, 247, 5, + 198, 199, 193, 193, 193, 193, 206, 193, + 204, 193, 204, 193, 193, 193, 193, 193, + 193, 198, 199, 193, 193, 193, 193, 206, + 193, 204, 193, 204, 193, 193, 193, 193, + 267, 193, 198, 199, 193, 193, 193, 193, + 206, 193, 204, 193, 204, 193, 266, 193, + 193, 193, 193, 198, 199, 193, 193, 193, + 193, 206, 193, 204, 193, 204, 2, 193, + 193, 18, 205, 193, 198, 199, 193, 193, + 193, 193, 206, 193, 204, 193, 194, 195, + 203, 203, 5, 198, 199, 200, 193, 193, + 193, 201, 193, 194, 195, 196, 203, 5, + 198, 199, 200, 193, 193, 37, 201, 193, + 269, 270, 271, 272, 43, 273, 274, 268, + 268, 268, 75, 275, 268, 276, 270, 277, + 272, 43, 273, 274, 268, 268, 268, 268, + 275, 268, 270, 277, 272, 43, 273, 274, + 268, 268, 268, 268, 275, 268, 278, 268, + 268, 268, 56, 279, 268, 273, 274, 268, + 268, 268, 268, 280, 268, 278, 268, 281, + 282, 283, 284, 43, 273, 274, 268, 268, + 268, 73, 285, 268, 268, 278, 268, 286, + 282, 287, 287, 43, 273, 274, 268, 268, + 268, 268, 285, 268, 282, 287, 287, 43, + 273, 274, 268, 268, 268, 268, 285, 268, + 288, 268, 268, 268, 56, 289, 268, 273, + 274, 268, 268, 268, 268, 280, 268, 288, + 268, 290, 291, 292, 293, 43, 273, 274, + 268, 268, 268, 71, 294, 268, 268, 288, + 268, 295, 291, 296, 296, 43, 273, 274, + 268, 268, 268, 268, 294, 268, 291, 296, + 296, 43, 273, 274, 268, 268, 268, 268, + 294, 268, 297, 268, 268, 268, 56, 298, + 268, 273, 274, 268, 268, 268, 268, 280, + 268, 297, 268, 299, 300, 301, 302, 43, + 273, 274, 268, 268, 268, 69, 303, 268, + 268, 297, 268, 304, 300, 305, 305, 43, + 273, 274, 268, 268, 268, 268, 303, 268, + 300, 305, 305, 43, 273, 274, 268, 268, + 268, 268, 303, 268, 306, 268, 268, 268, + 56, 307, 268, 273, 274, 268, 268, 268, + 268, 280, 268, 306, 268, 308, 309, 310, + 311, 43, 273, 274, 268, 268, 268, 67, + 312, 268, 268, 306, 268, 313, 309, 314, + 314, 43, 273, 274, 268, 268, 268, 268, + 312, 268, 309, 314, 314, 43, 273, 274, + 268, 268, 268, 268, 312, 268, 56, 315, + 268, 273, 274, 268, 268, 268, 268, 280, + 268, 273, 274, 268, 268, 268, 268, 280, + 268, 316, 268, 268, 268, 274, 268, 274, + 268, 317, 268, 318, 268, 319, 320, 268, + 273, 274, 268, 268, 268, 41, 268, 268, + 268, 39, 268, 40, 268, 268, 268, 268, + 273, 274, 268, 273, 274, 268, 318, 268, + 268, 268, 268, 273, 274, 268, 318, 268, + 319, 268, 268, 273, 274, 268, 268, 268, + 41, 268, 56, 268, 321, 321, 43, 273, + 274, 268, 268, 268, 268, 280, 268, 322, + 65, 323, 324, 46, 273, 274, 268, 268, + 268, 268, 280, 268, 65, 323, 324, 46, + 273, 274, 268, 268, 268, 268, 280, 268, + 323, 323, 46, 273, 274, 268, 268, 268, + 268, 280, 268, 325, 62, 326, 327, 49, + 273, 274, 268, 268, 268, 268, 280, 268, + 62, 326, 327, 49, 273, 274, 268, 268, + 268, 268, 280, 268, 326, 326, 49, 273, + 274, 268, 268, 268, 268, 280, 268, 328, + 59, 329, 330, 52, 273, 274, 268, 268, + 268, 268, 280, 268, 59, 329, 330, 52, + 273, 274, 268, 268, 268, 268, 280, 268, + 329, 329, 52, 273, 274, 268, 268, 268, + 268, 280, 268, 331, 56, 268, 332, 268, + 273, 274, 268, 268, 268, 268, 280, 268, + 56, 268, 332, 268, 273, 274, 268, 268, + 268, 268, 280, 268, 333, 268, 273, 274, + 268, 268, 268, 268, 280, 268, 56, 268, + 268, 268, 268, 273, 274, 268, 268, 268, + 268, 280, 268, 39, 40, 268, 268, 56, + 315, 268, 273, 274, 268, 268, 268, 268, + 280, 268, 39, 268, 308, 309, 314, 314, + 43, 273, 274, 268, 268, 268, 268, 312, + 268, 308, 309, 310, 314, 43, 273, 274, + 268, 268, 268, 67, 312, 268, 306, 268, + 334, 268, 321, 321, 43, 273, 274, 268, + 268, 268, 268, 280, 268, 306, 268, 306, + 268, 268, 268, 268, 268, 268, 273, 274, + 268, 268, 268, 268, 280, 268, 306, 268, + 306, 268, 268, 268, 268, 335, 268, 273, + 274, 268, 268, 268, 268, 280, 268, 306, + 268, 306, 268, 334, 268, 268, 268, 268, + 273, 274, 268, 268, 268, 268, 280, 268, + 306, 268, 306, 40, 268, 268, 56, 307, + 268, 273, 274, 268, 268, 268, 268, 280, + 268, 306, 268, 299, 300, 305, 305, 43, + 273, 274, 268, 268, 268, 268, 303, 268, + 299, 300, 301, 305, 43, 273, 274, 268, + 268, 268, 69, 303, 268, 297, 268, 336, + 268, 321, 321, 43, 273, 274, 268, 268, + 268, 268, 280, 268, 297, 268, 297, 268, + 268, 268, 268, 268, 268, 273, 274, 268, + 268, 268, 268, 280, 268, 297, 268, 297, + 268, 268, 268, 268, 337, 268, 273, 274, + 268, 268, 268, 268, 280, 268, 297, 268, + 297, 268, 336, 268, 268, 268, 268, 273, + 274, 268, 268, 268, 268, 280, 268, 297, + 268, 297, 40, 268, 268, 56, 298, 268, + 273, 274, 268, 268, 268, 268, 280, 268, + 297, 268, 290, 291, 296, 296, 43, 273, + 274, 268, 268, 268, 268, 294, 268, 290, + 291, 292, 296, 43, 273, 274, 268, 268, + 268, 71, 294, 268, 288, 268, 338, 268, + 321, 321, 43, 273, 274, 268, 268, 268, + 268, 280, 268, 288, 268, 288, 268, 268, + 268, 268, 268, 268, 273, 274, 268, 268, + 268, 268, 280, 268, 288, 268, 288, 268, + 268, 268, 268, 339, 268, 273, 274, 268, + 268, 268, 268, 280, 268, 288, 268, 288, + 268, 338, 268, 268, 268, 268, 273, 274, + 268, 268, 268, 268, 280, 268, 288, 268, + 288, 40, 268, 268, 56, 289, 268, 273, + 274, 268, 268, 268, 268, 280, 268, 288, + 268, 281, 282, 287, 287, 43, 273, 274, + 268, 268, 268, 268, 285, 268, 281, 282, + 283, 287, 43, 273, 274, 268, 268, 268, + 73, 285, 268, 278, 268, 340, 268, 321, + 321, 43, 273, 274, 268, 268, 268, 268, + 280, 268, 278, 268, 278, 268, 268, 268, + 268, 268, 268, 273, 274, 268, 268, 268, + 268, 280, 268, 278, 268, 278, 268, 268, + 268, 268, 341, 268, 273, 274, 268, 268, + 268, 268, 280, 268, 278, 268, 278, 268, + 340, 268, 268, 268, 268, 273, 274, 268, + 268, 268, 268, 280, 268, 278, 268, 74, + 42, 42, 43, 268, 268, 268, 268, 268, + 268, 74, 268, 278, 40, 268, 268, 56, + 279, 268, 273, 274, 268, 268, 268, 268, + 280, 268, 278, 268, 269, 270, 277, 272, + 43, 273, 274, 268, 268, 268, 268, 275, + 268, 343, 184, 344, 344, 81, 187, 188, + 342, 342, 342, 342, 190, 342, 184, 344, + 344, 81, 187, 188, 342, 342, 342, 342, + 190, 342, 345, 342, 342, 342, 95, 346, + 342, 187, 188, 342, 342, 342, 342, 347, + 342, 345, 342, 348, 349, 350, 351, 81, + 187, 188, 342, 342, 342, 112, 352, 342, + 342, 345, 342, 353, 349, 354, 354, 81, + 187, 188, 342, 342, 342, 342, 352, 342, + 349, 354, 354, 81, 187, 188, 342, 342, + 342, 342, 352, 342, 355, 342, 342, 342, + 95, 356, 342, 187, 188, 342, 342, 342, + 342, 347, 342, 355, 342, 357, 358, 359, + 360, 81, 187, 188, 342, 342, 342, 110, + 361, 342, 342, 355, 342, 362, 358, 363, + 363, 81, 187, 188, 342, 342, 342, 342, + 361, 342, 358, 363, 363, 81, 187, 188, + 342, 342, 342, 342, 361, 342, 364, 342, + 342, 342, 95, 365, 342, 187, 188, 342, + 342, 342, 342, 347, 342, 364, 342, 366, + 367, 368, 369, 81, 187, 188, 342, 342, + 342, 108, 370, 342, 342, 364, 342, 371, + 367, 372, 372, 81, 187, 188, 342, 342, + 342, 342, 370, 342, 367, 372, 372, 81, + 187, 188, 342, 342, 342, 342, 370, 342, + 373, 342, 342, 342, 95, 374, 342, 187, + 188, 342, 342, 342, 342, 347, 342, 373, + 342, 375, 376, 377, 378, 81, 187, 188, + 342, 342, 342, 106, 379, 342, 342, 373, + 342, 380, 376, 381, 381, 81, 187, 188, + 342, 342, 342, 342, 379, 342, 376, 381, + 381, 81, 187, 188, 342, 342, 342, 342, + 379, 342, 95, 382, 342, 187, 188, 342, + 342, 342, 342, 347, 342, 187, 188, 342, + 342, 342, 342, 347, 342, 383, 342, 342, + 342, 188, 342, 188, 342, 384, 342, 385, + 342, 386, 387, 342, 187, 188, 342, 342, + 342, 79, 342, 342, 342, 77, 342, 78, + 342, 342, 342, 342, 187, 188, 342, 187, + 188, 342, 385, 342, 342, 342, 342, 187, + 188, 342, 385, 342, 386, 342, 342, 187, + 188, 342, 342, 342, 79, 342, 95, 342, + 388, 388, 81, 187, 188, 342, 342, 342, + 342, 347, 342, 389, 104, 390, 391, 85, + 187, 188, 342, 342, 342, 342, 347, 342, + 104, 390, 391, 85, 187, 188, 342, 342, + 342, 342, 347, 342, 390, 390, 85, 187, + 188, 342, 342, 342, 342, 347, 342, 392, + 101, 393, 394, 88, 187, 188, 342, 342, + 342, 342, 347, 342, 101, 393, 394, 88, + 187, 188, 342, 342, 342, 342, 347, 342, + 393, 393, 88, 187, 188, 342, 342, 342, + 342, 347, 342, 395, 98, 396, 397, 91, + 187, 188, 342, 342, 342, 342, 347, 342, + 98, 396, 397, 91, 187, 188, 342, 342, + 342, 342, 347, 342, 396, 396, 91, 187, + 188, 342, 342, 342, 342, 347, 342, 398, + 95, 342, 399, 342, 187, 188, 342, 342, + 342, 342, 347, 342, 95, 342, 399, 342, + 187, 188, 342, 342, 342, 342, 347, 342, + 400, 342, 187, 188, 342, 342, 342, 342, + 347, 342, 95, 342, 342, 342, 342, 187, + 188, 342, 342, 342, 342, 347, 342, 77, + 78, 342, 342, 95, 382, 342, 187, 188, + 342, 342, 342, 342, 347, 342, 77, 342, + 375, 376, 381, 381, 81, 187, 188, 342, + 342, 342, 342, 379, 342, 375, 376, 377, + 381, 81, 187, 188, 342, 342, 342, 106, + 379, 342, 373, 342, 401, 342, 388, 388, + 81, 187, 188, 342, 342, 342, 342, 347, + 342, 373, 342, 373, 342, 342, 342, 342, + 342, 342, 187, 188, 342, 342, 342, 342, + 347, 342, 373, 342, 373, 342, 342, 342, + 342, 402, 342, 187, 188, 342, 342, 342, + 342, 347, 342, 373, 342, 373, 342, 401, + 342, 342, 342, 342, 187, 188, 342, 342, + 342, 342, 347, 342, 373, 342, 373, 78, + 342, 342, 95, 374, 342, 187, 188, 342, + 342, 342, 342, 347, 342, 373, 342, 366, + 367, 372, 372, 81, 187, 188, 342, 342, + 342, 342, 370, 342, 366, 367, 368, 372, + 81, 187, 188, 342, 342, 342, 108, 370, + 342, 364, 342, 403, 342, 388, 388, 81, + 187, 188, 342, 342, 342, 342, 347, 342, + 364, 342, 364, 342, 342, 342, 342, 342, + 342, 187, 188, 342, 342, 342, 342, 347, + 342, 364, 342, 364, 342, 342, 342, 342, + 404, 342, 187, 188, 342, 342, 342, 342, + 347, 342, 364, 342, 364, 342, 403, 342, + 342, 342, 342, 187, 188, 342, 342, 342, + 342, 347, 342, 364, 342, 364, 78, 342, + 342, 95, 365, 342, 187, 188, 342, 342, + 342, 342, 347, 342, 364, 342, 357, 358, + 363, 363, 81, 187, 188, 342, 342, 342, + 342, 361, 342, 357, 358, 359, 363, 81, + 187, 188, 342, 342, 342, 110, 361, 342, + 355, 342, 405, 342, 388, 388, 81, 187, + 188, 342, 342, 342, 342, 347, 342, 355, + 342, 355, 342, 342, 342, 342, 342, 342, + 187, 188, 342, 342, 342, 342, 347, 342, + 355, 342, 355, 342, 342, 342, 342, 406, + 342, 187, 188, 342, 342, 342, 342, 347, + 342, 355, 342, 355, 342, 405, 342, 342, + 342, 342, 187, 188, 342, 342, 342, 342, + 347, 342, 355, 342, 355, 78, 342, 342, + 95, 356, 342, 187, 188, 342, 342, 342, + 342, 347, 342, 355, 342, 348, 349, 354, + 354, 81, 187, 188, 342, 342, 342, 342, + 352, 342, 348, 349, 350, 354, 81, 187, + 188, 342, 342, 342, 112, 352, 342, 345, + 342, 407, 342, 388, 388, 81, 187, 188, + 342, 342, 342, 342, 347, 342, 345, 342, + 345, 342, 342, 342, 342, 342, 342, 187, + 188, 342, 342, 342, 342, 347, 342, 345, + 342, 345, 342, 342, 342, 342, 408, 342, + 187, 188, 342, 342, 342, 342, 347, 342, + 345, 342, 345, 342, 407, 342, 342, 342, + 342, 187, 188, 342, 342, 342, 342, 347, + 342, 345, 342, 345, 78, 342, 342, 95, + 346, 342, 187, 188, 342, 342, 342, 342, + 347, 342, 345, 342, 113, 80, 80, 81, + 409, 409, 409, 409, 409, 152, 113, 409, + 183, 184, 344, 344, 81, 187, 188, 342, + 342, 342, 342, 190, 342, 113, 80, 80, + 81, 409, 409, 409, 409, 409, 409, 113, + 409, 411, 412, 413, 414, 119, 415, 416, + 410, 410, 410, 151, 417, 410, 418, 412, + 414, 414, 119, 415, 416, 410, 410, 410, + 410, 417, 410, 412, 414, 414, 119, 415, + 416, 410, 410, 410, 410, 417, 410, 419, + 410, 410, 410, 132, 420, 410, 415, 416, + 410, 410, 410, 410, 421, 410, 419, 410, + 422, 423, 424, 425, 119, 415, 416, 410, + 410, 410, 149, 426, 410, 410, 419, 410, + 427, 423, 428, 428, 119, 415, 416, 410, + 410, 410, 410, 426, 410, 423, 428, 428, + 119, 415, 416, 410, 410, 410, 410, 426, + 410, 429, 410, 410, 410, 132, 430, 410, + 415, 416, 410, 410, 410, 410, 421, 410, + 429, 410, 431, 432, 433, 434, 119, 415, + 416, 410, 410, 410, 147, 435, 410, 410, + 429, 410, 436, 432, 437, 437, 119, 415, + 416, 410, 410, 410, 410, 435, 410, 432, + 437, 437, 119, 415, 416, 410, 410, 410, + 410, 435, 410, 438, 410, 410, 410, 132, + 439, 410, 415, 416, 410, 410, 410, 410, + 421, 410, 438, 410, 440, 441, 442, 443, + 119, 415, 416, 410, 410, 410, 145, 444, + 410, 410, 438, 410, 445, 441, 446, 446, + 119, 415, 416, 410, 410, 410, 410, 444, + 410, 441, 446, 446, 119, 415, 416, 410, + 410, 410, 410, 444, 410, 447, 410, 410, + 410, 132, 448, 410, 415, 416, 410, 410, + 410, 410, 421, 410, 447, 410, 449, 450, + 451, 452, 119, 415, 416, 410, 410, 410, + 143, 453, 410, 410, 447, 410, 454, 450, + 455, 455, 119, 415, 416, 410, 410, 410, + 410, 453, 410, 450, 455, 455, 119, 415, + 416, 410, 410, 410, 410, 453, 410, 132, + 456, 410, 415, 416, 410, 410, 410, 410, + 421, 410, 415, 416, 410, 410, 410, 410, + 421, 410, 457, 410, 410, 410, 416, 410, + 416, 410, 458, 410, 459, 410, 460, 461, + 410, 415, 416, 410, 410, 410, 117, 410, + 410, 410, 115, 410, 116, 410, 410, 410, + 410, 415, 416, 410, 415, 416, 410, 459, + 410, 410, 410, 410, 415, 416, 410, 459, + 410, 460, 410, 410, 415, 416, 410, 410, + 410, 117, 410, 132, 410, 462, 462, 119, + 415, 416, 410, 410, 410, 410, 421, 410, + 463, 141, 464, 465, 122, 415, 416, 410, + 410, 410, 410, 421, 410, 141, 464, 465, + 122, 415, 416, 410, 410, 410, 410, 421, + 410, 464, 464, 122, 415, 416, 410, 410, + 410, 410, 421, 410, 466, 138, 467, 468, + 125, 415, 416, 410, 410, 410, 410, 421, + 410, 138, 467, 468, 125, 415, 416, 410, + 410, 410, 410, 421, 410, 467, 467, 125, + 415, 416, 410, 410, 410, 410, 421, 410, + 469, 135, 470, 471, 128, 415, 416, 410, + 410, 410, 410, 421, 410, 135, 470, 471, + 128, 415, 416, 410, 410, 410, 410, 421, + 410, 470, 470, 128, 415, 416, 410, 410, + 410, 410, 421, 410, 472, 132, 410, 473, + 410, 415, 416, 410, 410, 410, 410, 421, + 410, 132, 410, 473, 410, 415, 416, 410, + 410, 410, 410, 421, 410, 474, 410, 415, + 416, 410, 410, 410, 410, 421, 410, 132, + 410, 410, 410, 410, 415, 416, 410, 410, + 410, 410, 421, 410, 115, 116, 410, 410, + 132, 456, 410, 415, 416, 410, 410, 410, + 410, 421, 410, 115, 410, 449, 450, 455, + 455, 119, 415, 416, 410, 410, 410, 410, + 453, 410, 449, 450, 451, 455, 119, 415, + 416, 410, 410, 410, 143, 453, 410, 447, + 410, 475, 410, 462, 462, 119, 415, 416, + 410, 410, 410, 410, 421, 410, 447, 410, + 447, 410, 410, 410, 410, 410, 410, 415, + 416, 410, 410, 410, 410, 421, 410, 447, + 410, 447, 410, 410, 410, 410, 476, 410, + 415, 416, 410, 410, 410, 410, 421, 410, + 447, 410, 447, 410, 475, 410, 410, 410, + 410, 415, 416, 410, 410, 410, 410, 421, + 410, 447, 410, 447, 116, 410, 410, 132, + 448, 410, 415, 416, 410, 410, 410, 410, + 421, 410, 447, 410, 440, 441, 446, 446, + 119, 415, 416, 410, 410, 410, 410, 444, + 410, 440, 441, 442, 446, 119, 415, 416, + 410, 410, 410, 145, 444, 410, 438, 410, + 477, 410, 462, 462, 119, 415, 416, 410, + 410, 410, 410, 421, 410, 438, 410, 438, + 410, 410, 410, 410, 410, 410, 415, 416, + 410, 410, 410, 410, 421, 410, 438, 410, + 438, 410, 410, 410, 410, 478, 410, 415, + 416, 410, 410, 410, 410, 421, 410, 438, + 410, 438, 410, 477, 410, 410, 410, 410, + 415, 416, 410, 410, 410, 410, 421, 410, + 438, 410, 438, 116, 410, 410, 132, 439, + 410, 415, 416, 410, 410, 410, 410, 421, + 410, 438, 410, 431, 432, 437, 437, 119, + 415, 416, 410, 410, 410, 410, 435, 410, + 431, 432, 433, 437, 119, 415, 416, 410, + 410, 410, 147, 435, 410, 429, 410, 479, + 410, 462, 462, 119, 415, 416, 410, 410, + 410, 410, 421, 410, 429, 410, 429, 410, + 410, 410, 410, 410, 410, 415, 416, 410, + 410, 410, 410, 421, 410, 429, 410, 429, + 410, 410, 410, 410, 480, 410, 415, 416, + 410, 410, 410, 410, 421, 410, 429, 410, + 429, 410, 479, 410, 410, 410, 410, 415, + 416, 410, 410, 410, 410, 421, 410, 429, + 410, 429, 116, 410, 410, 132, 430, 410, + 415, 416, 410, 410, 410, 410, 421, 410, + 429, 410, 422, 423, 428, 428, 119, 415, + 416, 410, 410, 410, 410, 426, 410, 422, + 423, 424, 428, 119, 415, 416, 410, 410, + 410, 149, 426, 410, 419, 410, 481, 410, + 462, 462, 119, 415, 416, 410, 410, 410, + 410, 421, 410, 419, 410, 419, 410, 410, + 410, 410, 410, 410, 415, 416, 410, 410, + 410, 410, 421, 410, 419, 410, 419, 410, + 410, 410, 410, 482, 410, 415, 416, 410, + 410, 410, 410, 421, 410, 419, 410, 419, + 410, 481, 410, 410, 410, 410, 415, 416, + 410, 410, 410, 410, 421, 410, 419, 410, + 419, 116, 410, 410, 132, 420, 410, 415, + 416, 410, 410, 410, 410, 421, 410, 419, + 410, 411, 412, 414, 414, 119, 415, 416, + 410, 410, 410, 410, 417, 410, 181, 182, + 183, 184, 483, 344, 81, 187, 188, 342, + 189, 189, 152, 190, 342, 181, 342, 194, + 484, 196, 197, 5, 198, 199, 200, 193, + 193, 37, 201, 193, 193, 181, 193, 204, + 182, 183, 184, 485, 486, 81, 487, 488, + 193, 189, 189, 152, 489, 193, 204, 193, + 113, 80, 80, 81, 198, 199, 193, 193, + 193, 152, 490, 193, 491, 2, 342, 342, + 342, 408, 342, 187, 188, 342, 342, 342, + 342, 347, 342, 491, 342, 492, 349, 493, + 494, 81, 487, 488, 193, 193, 193, 153, + 352, 193, 193, 491, 193, 495, 349, 354, + 354, 81, 487, 488, 193, 193, 193, 193, + 352, 193, 349, 354, 354, 81, 487, 488, + 193, 193, 193, 193, 352, 193, 496, 193, + 193, 193, 488, 193, 488, 193, 243, 193, + 492, 349, 354, 354, 81, 487, 488, 193, + 193, 193, 193, 352, 193, 492, 349, 493, + 354, 81, 487, 488, 193, 193, 193, 153, + 352, 193, 204, 193, 266, 113, 497, 497, + 155, 198, 199, 193, 193, 193, 193, 490, + 193, 204, 193, 498, 179, 499, 500, 157, + 487, 488, 193, 193, 193, 193, 501, 193, + 179, 499, 500, 157, 487, 488, 193, 193, + 193, 193, 501, 193, 499, 499, 157, 487, + 488, 193, 193, 193, 193, 501, 193, 502, + 176, 503, 504, 160, 487, 488, 193, 193, + 193, 193, 501, 193, 176, 503, 504, 160, + 487, 488, 193, 193, 193, 193, 501, 193, + 503, 503, 160, 487, 488, 193, 193, 193, + 193, 501, 193, 505, 173, 506, 507, 163, + 487, 488, 193, 193, 193, 193, 501, 193, + 173, 506, 507, 163, 487, 488, 193, 193, + 193, 193, 501, 193, 506, 506, 163, 487, + 488, 193, 193, 193, 193, 501, 193, 508, + 170, 193, 509, 193, 487, 488, 193, 193, + 193, 193, 501, 193, 170, 193, 509, 193, + 487, 488, 193, 193, 193, 193, 501, 193, + 487, 488, 193, 193, 193, 193, 501, 193, + 510, 193, 511, 512, 193, 487, 488, 193, + 193, 193, 167, 193, 193, 193, 165, 193, + 166, 193, 193, 193, 193, 487, 488, 193, + 487, 488, 193, 510, 193, 193, 193, 193, + 487, 488, 193, 510, 193, 511, 193, 193, + 487, 488, 193, 193, 193, 167, 193, 491, + 166, 342, 342, 95, 346, 342, 187, 188, + 342, 342, 342, 342, 347, 342, 491, 342, + 0 }; static const short _indic_syllable_machine_trans_targs[] = { - 143, 168, 170, 171, 3, 174, 4, 6, - 177, 7, 9, 180, 10, 12, 183, 13, - 15, 16, 164, 18, 19, 182, 21, 22, - 179, 24, 25, 176, 185, 189, 193, 196, - 200, 203, 207, 210, 214, 217, 143, 243, - 245, 246, 39, 249, 40, 42, 252, 43, - 45, 255, 46, 48, 258, 49, 51, 52, - 239, 54, 55, 257, 57, 58, 254, 60, - 61, 251, 260, 263, 267, 270, 274, 277, - 281, 284, 288, 292, 143, 316, 318, 319, - 75, 322, 143, 76, 78, 325, 79, 81, - 328, 82, 84, 331, 85, 87, 88, 312, - 90, 91, 330, 93, 94, 327, 96, 97, - 324, 333, 336, 340, 343, 347, 350, 354, - 357, 361, 143, 391, 393, 394, 110, 397, - 111, 113, 400, 114, 116, 403, 117, 119, - 406, 120, 122, 123, 387, 125, 126, 405, - 128, 129, 402, 131, 132, 399, 408, 411, - 415, 418, 422, 425, 429, 432, 436, 439, - 143, 144, 219, 293, 295, 364, 366, 313, - 315, 367, 365, 363, 440, 441, 143, 145, - 147, 35, 218, 165, 167, 187, 216, 146, - 34, 148, 212, 0, 149, 151, 33, 211, - 209, 150, 32, 152, 205, 153, 155, 31, - 204, 202, 154, 30, 156, 198, 157, 159, - 29, 197, 195, 158, 28, 160, 191, 161, - 163, 27, 190, 188, 162, 26, 173, 166, - 143, 169, 1, 172, 2, 175, 5, 23, - 178, 8, 20, 181, 11, 17, 184, 14, - 186, 192, 194, 199, 201, 206, 208, 213, - 215, 143, 220, 222, 71, 290, 240, 242, - 291, 221, 70, 223, 286, 36, 224, 226, - 69, 285, 283, 225, 68, 227, 279, 228, - 230, 67, 278, 276, 229, 66, 231, 272, - 232, 234, 65, 271, 269, 233, 64, 235, - 265, 236, 238, 63, 264, 262, 237, 62, - 248, 241, 143, 244, 37, 247, 38, 250, - 41, 59, 253, 44, 56, 256, 47, 53, - 259, 50, 261, 266, 268, 273, 275, 280, - 282, 287, 289, 143, 294, 106, 296, 359, - 72, 297, 299, 105, 358, 356, 298, 104, - 300, 352, 301, 303, 103, 351, 349, 302, - 102, 304, 345, 305, 307, 101, 344, 342, - 306, 100, 308, 338, 309, 311, 99, 337, - 335, 310, 98, 321, 314, 143, 317, 73, - 320, 74, 323, 77, 95, 326, 80, 92, - 329, 83, 89, 332, 86, 334, 339, 341, - 346, 348, 353, 355, 360, 362, 143, 143, - 368, 370, 142, 141, 388, 390, 438, 369, - 371, 434, 107, 372, 374, 140, 433, 431, - 373, 139, 375, 427, 376, 378, 138, 426, - 424, 377, 137, 379, 420, 380, 382, 136, - 419, 417, 381, 135, 383, 413, 384, 386, - 134, 412, 410, 385, 133, 396, 389, 143, - 392, 108, 395, 109, 398, 112, 130, 401, - 115, 127, 404, 118, 124, 407, 121, 409, - 414, 416, 421, 423, 428, 430, 435, 437, - 442 + 170, 195, 197, 198, 3, 201, 4, 6, + 204, 7, 9, 207, 10, 12, 210, 13, + 15, 16, 191, 18, 19, 209, 21, 22, + 206, 24, 25, 203, 212, 216, 220, 223, + 227, 230, 234, 237, 241, 244, 170, 270, + 272, 273, 39, 276, 40, 42, 279, 43, + 45, 282, 46, 48, 285, 49, 51, 52, + 266, 54, 55, 284, 57, 58, 281, 60, + 61, 278, 287, 290, 294, 297, 301, 304, + 308, 311, 315, 319, 170, 343, 345, 346, + 75, 349, 170, 76, 78, 352, 79, 81, + 355, 82, 84, 358, 85, 87, 88, 339, + 90, 91, 357, 93, 94, 354, 96, 97, + 351, 360, 363, 367, 370, 374, 377, 381, + 384, 388, 170, 418, 420, 421, 110, 424, + 111, 113, 427, 114, 116, 430, 117, 119, + 433, 120, 122, 123, 414, 125, 126, 432, + 128, 129, 429, 131, 132, 426, 435, 438, + 442, 445, 449, 452, 456, 459, 463, 466, + 392, 478, 146, 481, 148, 484, 149, 151, + 487, 152, 154, 490, 155, 493, 495, 496, + 159, 160, 492, 162, 163, 489, 165, 166, + 486, 168, 169, 483, 170, 171, 246, 320, + 322, 391, 393, 340, 342, 394, 390, 467, + 468, 170, 172, 174, 35, 245, 192, 194, + 214, 243, 173, 34, 175, 239, 0, 176, + 178, 33, 238, 236, 177, 32, 179, 232, + 180, 182, 31, 231, 229, 181, 30, 183, + 225, 184, 186, 29, 224, 222, 185, 28, + 187, 218, 188, 190, 27, 217, 215, 189, + 26, 200, 193, 170, 196, 1, 199, 2, + 202, 5, 23, 205, 8, 20, 208, 11, + 17, 211, 14, 213, 219, 221, 226, 228, + 233, 235, 240, 242, 170, 247, 249, 71, + 317, 267, 269, 318, 248, 70, 250, 313, + 36, 251, 253, 69, 312, 310, 252, 68, + 254, 306, 255, 257, 67, 305, 303, 256, + 66, 258, 299, 259, 261, 65, 298, 296, + 260, 64, 262, 292, 263, 265, 63, 291, + 289, 264, 62, 275, 268, 170, 271, 37, + 274, 38, 277, 41, 59, 280, 44, 56, + 283, 47, 53, 286, 50, 288, 293, 295, + 300, 302, 307, 309, 314, 316, 170, 321, + 106, 323, 386, 72, 324, 326, 105, 385, + 383, 325, 104, 327, 379, 328, 330, 103, + 378, 376, 329, 102, 331, 372, 332, 334, + 101, 371, 369, 333, 100, 335, 365, 336, + 338, 99, 364, 362, 337, 98, 348, 341, + 170, 344, 73, 347, 74, 350, 77, 95, + 353, 80, 92, 356, 83, 89, 359, 86, + 361, 366, 368, 373, 375, 380, 382, 387, + 389, 170, 170, 395, 397, 142, 141, 415, + 417, 465, 396, 398, 461, 107, 399, 401, + 140, 460, 458, 400, 139, 402, 454, 403, + 405, 138, 453, 451, 404, 137, 406, 447, + 407, 409, 136, 446, 444, 408, 135, 410, + 440, 411, 413, 134, 439, 437, 412, 133, + 423, 416, 170, 419, 108, 422, 109, 425, + 112, 130, 428, 115, 127, 431, 118, 124, + 434, 121, 436, 441, 443, 448, 450, 455, + 457, 462, 464, 143, 469, 470, 480, 475, + 477, 498, 471, 472, 473, 144, 479, 474, + 476, 145, 482, 147, 167, 156, 485, 150, + 164, 488, 153, 161, 491, 158, 494, 157, + 497 }; static const char _indic_syllable_machine_trans_actions[] = { @@ -908,44 +992,51 @@ static const char _indic_syllable_machine_trans_actions[] = { 2, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 10, 2, 2, 6, 2, 11, 11, 0, - 0, 2, 6, 2, 0, 2, 12, 2, - 2, 0, 2, 0, 0, 2, 2, 2, - 0, 2, 2, 0, 2, 2, 0, 2, - 2, 2, 0, 2, 2, 2, 2, 0, - 2, 2, 2, 0, 2, 2, 2, 2, - 0, 2, 2, 2, 0, 2, 2, 2, - 2, 0, 2, 2, 2, 0, 2, 0, - 13, 0, 0, 2, 0, 2, 0, 0, + 6, 8, 0, 2, 0, 2, 0, 0, + 2, 0, 0, 2, 0, 2, 0, 0, + 0, 0, 2, 0, 0, 2, 0, 0, + 2, 0, 0, 2, 11, 2, 2, 6, + 2, 12, 12, 0, 0, 2, 2, 6, + 2, 13, 2, 2, 0, 2, 0, 0, + 2, 2, 2, 0, 2, 2, 0, 2, + 2, 0, 2, 2, 2, 0, 2, 2, + 2, 2, 0, 2, 2, 2, 0, 2, + 2, 2, 2, 0, 2, 2, 2, 0, + 2, 2, 2, 2, 0, 2, 2, 2, + 0, 2, 0, 14, 0, 0, 2, 0, + 2, 0, 0, 2, 0, 0, 2, 0, + 0, 2, 0, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 15, 2, 2, 0, + 2, 0, 0, 2, 2, 0, 2, 2, + 0, 2, 2, 0, 2, 2, 2, 0, + 2, 2, 2, 2, 0, 2, 2, 2, + 0, 2, 2, 2, 2, 0, 2, 2, + 2, 0, 2, 2, 2, 2, 0, 2, + 2, 2, 0, 2, 0, 16, 0, 0, + 2, 0, 2, 0, 0, 2, 0, 0, + 2, 0, 0, 2, 0, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 17, 6, + 0, 6, 6, 0, 6, 2, 0, 6, + 2, 6, 0, 6, 6, 6, 2, 0, + 6, 2, 6, 0, 6, 6, 6, 2, + 0, 6, 2, 6, 0, 6, 6, 6, + 2, 0, 6, 2, 6, 0, 6, 0, + 18, 0, 0, 2, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 14, 2, 2, 0, 2, 0, 0, - 2, 2, 0, 2, 2, 0, 2, 2, + 2, 19, 20, 2, 2, 0, 0, 0, + 0, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, - 2, 0, 15, 0, 0, 2, 0, 2, + 2, 0, 21, 0, 0, 2, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 16, 6, 0, 6, 6, - 0, 6, 2, 0, 6, 2, 6, 0, - 6, 6, 6, 2, 0, 6, 2, 6, - 0, 6, 6, 6, 2, 0, 6, 2, - 6, 0, 6, 6, 6, 2, 0, 6, - 2, 6, 0, 6, 0, 17, 0, 0, - 2, 0, 2, 0, 0, 2, 0, 0, - 2, 0, 0, 2, 0, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 18, 19, - 2, 2, 0, 0, 0, 0, 2, 2, - 2, 2, 0, 2, 2, 0, 2, 2, - 2, 0, 2, 2, 2, 2, 0, 2, - 2, 2, 0, 2, 2, 2, 2, 0, - 2, 2, 2, 0, 2, 2, 2, 2, - 0, 2, 2, 2, 0, 2, 0, 20, - 0, 0, 2, 0, 2, 0, 0, 2, - 0, 0, 2, 0, 0, 2, 0, 2, - 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 0, 0, 8, 2, 0, + 0, 2, 2, 8, 8, 0, 8, 8, + 0, 0, 2, 0, 0, 0, 2, 0, + 0, 2, 0, 0, 2, 0, 0, 0, 2 }; @@ -967,7 +1058,14 @@ static const char _indic_syllable_machine_to_state_actions[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1026,7 +1124,14 @@ static const char _indic_syllable_machine_from_state_actions[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 10, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1081,56 +1186,63 @@ static const short _indic_syllable_machine_eof_trans[] = { 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 115, 115, 115, 115, 115, + 83, 77, 77, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 0, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 383, 316, 383, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 384, 384, - 383, 167, 167 + 115, 115, 115, 115, 115, 115, 115, 77, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 410, + 343, 410, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 343, 194, 194, 194, 343, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 343 }; -static const int indic_syllable_machine_start = 143; -static const int indic_syllable_machine_first_final = 143; +static const int indic_syllable_machine_start = 170; +static const int indic_syllable_machine_first_final = 170; static const int indic_syllable_machine_error = -1; -static const int indic_syllable_machine_en_main = 143; +static const int indic_syllable_machine_en_main = 170; #line 36 "../../src/hb-ot-shape-complex-indic-machine.rl" @@ -1157,7 +1269,7 @@ find_syllables (hb_buffer_t *buffer) int cs; hb_glyph_info_t *info = buffer->info; -#line 1161 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" +#line 1273 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" { cs = indic_syllable_machine_start; ts = 0; @@ -1174,7 +1286,7 @@ find_syllables (hb_buffer_t *buffer) unsigned int last = 0; unsigned int syllable_serial = 1; -#line 1178 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" +#line 1290 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" { int _slen; int _trans; @@ -1184,11 +1296,11 @@ find_syllables (hb_buffer_t *buffer) goto _test_eof; _resume: switch ( _indic_syllable_machine_from_state_actions[cs] ) { - case 9: + case 10: #line 1 "NONE" {ts = p;} break; -#line 1192 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" +#line 1304 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" } _keys = _indic_syllable_machine_trans_keys + (cs<<1); @@ -1210,43 +1322,43 @@ _eof_trans: #line 1 "NONE" {te = p+1;} break; - case 13: + case 14: #line 83 "../../src/hb-ot-shape-complex-indic-machine.rl" {te = p+1;{ found_syllable (consonant_syllable); }} break; - case 15: + case 16: #line 84 "../../src/hb-ot-shape-complex-indic-machine.rl" {te = p+1;{ found_syllable (vowel_syllable); }} break; - case 20: + case 21: #line 85 "../../src/hb-ot-shape-complex-indic-machine.rl" {te = p+1;{ found_syllable (standalone_cluster); }} break; - case 17: + case 18: #line 86 "../../src/hb-ot-shape-complex-indic-machine.rl" {te = p+1;{ found_syllable (broken_cluster); }} break; - case 10: + case 11: #line 87 "../../src/hb-ot-shape-complex-indic-machine.rl" {te = p+1;{ found_syllable (non_indic_cluster); }} break; - case 12: + case 13: #line 83 "../../src/hb-ot-shape-complex-indic-machine.rl" {te = p;p--;{ found_syllable (consonant_syllable); }} break; - case 14: + case 15: #line 84 "../../src/hb-ot-shape-complex-indic-machine.rl" {te = p;p--;{ found_syllable (vowel_syllable); }} break; - case 19: + case 20: #line 85 "../../src/hb-ot-shape-complex-indic-machine.rl" {te = p;p--;{ found_syllable (standalone_cluster); }} break; - case 16: + case 17: #line 86 "../../src/hb-ot-shape-complex-indic-machine.rl" {te = p;p--;{ found_syllable (broken_cluster); }} break; - case 18: + case 19: #line 87 "../../src/hb-ot-shape-complex-indic-machine.rl" {te = p;p--;{ found_syllable (non_indic_cluster); }} break; @@ -1269,6 +1381,9 @@ _eof_trans: case 5: #line 1 "NONE" { switch( act ) { + case 1: + {{p = ((te))-1;} found_syllable (consonant_syllable); } + break; case 4: {{p = ((te))-1;} found_syllable (broken_cluster); } break; @@ -1278,28 +1393,34 @@ _eof_trans: } } break; + case 8: +#line 1 "NONE" + {te = p+1;} +#line 83 "../../src/hb-ot-shape-complex-indic-machine.rl" + {act = 1;} + break; case 6: #line 1 "NONE" {te = p+1;} #line 86 "../../src/hb-ot-shape-complex-indic-machine.rl" {act = 4;} break; - case 11: + case 12: #line 1 "NONE" {te = p+1;} #line 87 "../../src/hb-ot-shape-complex-indic-machine.rl" {act = 5;} break; -#line 1294 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" +#line 1415 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" } _again: switch ( _indic_syllable_machine_to_state_actions[cs] ) { - case 8: + case 9: #line 1 "NONE" {ts = 0;} break; -#line 1303 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" +#line 1424 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp" } if ( ++p != pe ) diff --git a/src/hb-ot-shape-complex-indic-machine.rl b/src/hb-ot-shape-complex-indic-machine.rl index 5c73ebf..11115c9 100644 --- a/src/hb-ot-shape-complex-indic-machine.rl +++ b/src/hb-ot-shape-complex-indic-machine.rl @@ -76,7 +76,7 @@ halant_or_matra_group = (final_halant_group | (h.ZWJ)? matra_group{0,4}); consonant_syllable = Repha? (cn.halant_group){0,4} cn A? halant_or_matra_group? syllable_tail; vowel_syllable = reph? V.n? (ZWJ | (halant_group.cn){0,4} halant_or_matra_group? syllable_tail); standalone_cluster = reph? place_holder.n? (halant_group.cn){0,4} halant_or_matra_group? syllable_tail; -broken_cluster = n? (halant_group.cn){0,4} halant_or_matra_group syllable_tail; +broken_cluster = reph? n? (halant_group.cn){0,4} halant_or_matra_group syllable_tail; other = any; main := |* diff --git a/src/hb-ot-shape-complex-indic.cc b/src/hb-ot-shape-complex-indic.cc index 02cb173..1bc8a77 100644 --- a/src/hb-ot-shape-complex-indic.cc +++ b/src/hb-ot-shape-complex-indic.cc @@ -894,14 +894,23 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED, syllable_type_t syllable_type = (syllable_type_t) (syllable & 0x0F); if (unlikely (last_syllable != syllable && syllable_type == broken_cluster)) { + last_syllable = syllable; + hb_glyph_info_t info = dottedcircle; info.cluster = buffer->cur().cluster; info.mask = buffer->cur().mask; info.syllable() = buffer->cur().syllable(); + + /* Insert dottedcircle after possible Repha. */ + while (buffer->idx < buffer->len && + last_syllable == buffer->cur().syllable() && + buffer->cur().indic_category() == OT_Repha) + buffer->next_glyph (); + buffer->output_info (info); - last_syllable = syllable; } - buffer->next_glyph (); + else + buffer->next_glyph (); } buffer->swap_buffers ();