# -*- encoding:utf-8; warn-indent:false -*- # line 1 "lib/parser/lexer.rl" # line 3 "lib/parser/lexer.rl" # # === BEFORE YOU START === # # Read the Ruby Hacking Guide chapter 11, available in English at # http://whitequark.org/blog/2013/04/01/ruby-hacking-guide-ch-11-finite-state-lexer/ # # Remember two things about Ragel scanners: # # 1) Longest match wins. # # 2) If two matches have the same length, the first # in source code wins. # # General rules of making Ragel and Bison happy: # # * `p` (position) and `@te` contain the index of the character # they're pointing to ("current"), plus one. `@ts` contains the index # of the corresponding character. The code for extracting matched token is: # # @source[@ts...@te] # # * If your input is `foooooooobar` and the rule is: # # 'f' 'o'+ # # the result will be: # # foooooooobar # ^ ts=0 ^ p=te=9 # # * A Ragel lexer action should not emit more than one token, unless # you know what you are doing. # # * All Ragel commands (fnext, fgoto, ...) end with a semicolon. # # * If an action emits the token and transitions to another state, use # these Ragel commands: # # emit($whatever) # fnext $next_state; fbreak; # # If you perform `fgoto` in an action which does not emit a token nor # rewinds the stream pointer, the parser's side-effectful, # context-sensitive lookahead actions will break in a hard to detect # and debug way. # # * If an action does not emit a token: # # fgoto $next_state; # # * If an action features lookbehind, i.e. matches characters with the # intent of passing them to another action: # # p = @ts - 1 # fgoto $next_state; # # or, if the lookbehind consists of a single character: # # fhold; fgoto $next_state; # # * Ragel merges actions. So, if you have `e_lparen = '(' %act` and # `c_lparen = '('` and a lexer action `e_lparen | c_lparen`, the result # _will_ invoke the action `act`. # # e_something stands for "something with **e**mbedded action". # # * EOF is explicit and is matched by `c_eof`. If you want to introspect # the state of the lexer, add this rule to the state: # # c_eof => do_eof; # # * If you proceed past EOF, the lexer will complain: # # NoMethodError: undefined method `ord' for nil:NilClass # class Parser::Lexer # line 85 "lib/parser/lexer.rb" class << self attr_accessor :_lex_actions private :_lex_actions, :_lex_actions= end self._lex_actions = [ 0, 1, 0, 1, 16, 1, 32, 1, 33, 1, 35, 1, 36, 1, 37, 1, 38, 1, 40, 1, 41, 1, 42, 1, 43, 1, 44, 1, 45, 1, 46, 1, 47, 1, 48, 1, 49, 1, 50, 1, 51, 1, 53, 1, 54, 1, 55, 1, 56, 1, 57, 1, 58, 1, 59, 1, 60, 1, 61, 1, 63, 1, 64, 1, 65, 1, 67, 1, 68, 1, 69, 1, 70, 1, 73, 1, 74, 1, 75, 1, 76, 1, 77, 1, 78, 1, 79, 1, 80, 1, 81, 1, 85, 1, 86, 1, 87, 1, 88, 1, 89, 1, 90, 1, 92, 1, 93, 1, 94, 1, 95, 1, 96, 1, 97, 1, 98, 1, 99, 1, 100, 1, 101, 1, 102, 1, 103, 1, 104, 1, 105, 1, 106, 1, 107, 1, 108, 1, 109, 1, 112, 1, 113, 1, 114, 1, 115, 1, 117, 1, 118, 1, 119, 1, 123, 1, 124, 1, 125, 1, 126, 1, 128, 1, 129, 1, 134, 1, 135, 1, 136, 1, 137, 1, 138, 1, 139, 1, 140, 1, 141, 1, 142, 1, 143, 1, 144, 1, 145, 1, 147, 1, 148, 1, 149, 1, 151, 1, 152, 1, 153, 1, 154, 1, 155, 1, 162, 1, 163, 1, 164, 1, 165, 1, 166, 1, 167, 1, 168, 1, 169, 1, 170, 1, 171, 1, 172, 1, 173, 1, 174, 1, 176, 1, 177, 1, 178, 1, 179, 1, 180, 1, 181, 1, 184, 1, 185, 1, 186, 1, 188, 1, 190, 1, 191, 1, 192, 1, 193, 1, 194, 1, 195, 1, 196, 1, 197, 1, 198, 1, 200, 1, 201, 1, 202, 1, 203, 1, 217, 1, 220, 1, 221, 1, 222, 1, 223, 1, 225, 1, 226, 1, 228, 1, 230, 1, 231, 1, 232, 1, 233, 1, 235, 1, 236, 1, 238, 1, 239, 1, 241, 1, 242, 1, 243, 1, 245, 1, 248, 1, 249, 1, 250, 1, 251, 1, 252, 1, 253, 1, 254, 1, 255, 1, 256, 1, 257, 1, 258, 1, 259, 1, 262, 1, 263, 1, 264, 1, 265, 1, 266, 1, 267, 1, 268, 1, 269, 1, 270, 2, 0, 59, 2, 0, 73, 2, 0, 125, 2, 0, 126, 2, 0, 127, 2, 0, 170, 2, 0, 176, 2, 0, 177, 2, 0, 260, 2, 0, 261, 2, 0, 263, 2, 0, 264, 2, 0, 265, 2, 1, 52, 2, 1, 62, 2, 1, 185, 2, 2, 52, 2, 2, 62, 2, 2, 185, 2, 3, 52, 2, 3, 62, 2, 3, 185, 2, 7, 52, 2, 7, 62, 2, 7, 185, 2, 9, 52, 2, 9, 62, 2, 9, 185, 2, 10, 52, 2, 10, 62, 2, 10, 185, 2, 11, 52, 2, 11, 62, 2, 11, 185, 2, 12, 52, 2, 12, 62, 2, 12, 185, 2, 13, 52, 2, 13, 62, 2, 13, 185, 2, 14, 52, 2, 14, 62, 2, 14, 185, 2, 15, 52, 2, 15, 62, 2, 15, 185, 2, 16, 66, 2, 16, 72, 2, 18, 133, 2, 18, 146, 2, 18, 187, 2, 18, 234, 2, 19, 246, 2, 20, 116, 2, 20, 183, 2, 20, 189, 2, 20, 244, 2, 20, 255, 2, 21, 116, 2, 21, 183, 2, 21, 189, 2, 21, 244, 2, 22, 116, 2, 22, 183, 2, 22, 189, 2, 23, 116, 2, 23, 183, 2, 23, 189, 2, 24, 116, 2, 24, 183, 2, 24, 189, 2, 25, 116, 2, 25, 183, 2, 25, 189, 2, 26, 116, 2, 26, 183, 2, 26, 189, 2, 27, 183, 2, 28, 240, 2, 29, 132, 2, 29, 187, 2, 29, 247, 2, 30, 43, 2, 30, 130, 2, 30, 131, 2, 30, 187, 2, 31, 246, 2, 33, 0, 2, 34, 182, 2, 35, 41, 2, 36, 41, 2, 37, 41, 2, 38, 41, 2, 39, 41, 2, 40, 41, 2, 41, 218, 2, 41, 237, 2, 42, 219, 2, 42, 238, 2, 43, 0, 2, 43, 224, 2, 43, 245, 2, 46, 0, 2, 46, 39, 2, 46, 82, 2, 46, 83, 2, 46, 84, 2, 46, 120, 2, 46, 121, 2, 46, 122, 2, 46, 156, 2, 46, 157, 2, 46, 158, 2, 46, 159, 2, 46, 160, 2, 46, 161, 2, 46, 204, 2, 46, 205, 2, 46, 206, 2, 46, 207, 2, 46, 208, 2, 46, 209, 2, 46, 210, 2, 46, 211, 2, 46, 213, 2, 46, 214, 2, 46, 215, 2, 46, 216, 2, 123, 0, 3, 0, 17, 91, 3, 0, 17, 110, 3, 0, 17, 111, 3, 0, 17, 150, 3, 0, 17, 175, 3, 0, 17, 199, 3, 0, 17, 227, 3, 0, 17, 229, 3, 0, 71, 16, 3, 2, 4, 52, 3, 2, 4, 62, 3, 2, 4, 185, 3, 2, 5, 52, 3, 2, 5, 62, 3, 2, 5, 185, 3, 6, 5, 52, 3, 6, 5, 62, 3, 6, 5, 185, 3, 7, 5, 52, 3, 7, 5, 62, 3, 7, 5, 185, 3, 8, 4, 52, 3, 8, 4, 62, 3, 8, 4, 185, 3, 13, 14, 52, 3, 13, 14, 62, 3, 13, 14, 185, 3, 30, 43, 0, 3, 30, 43, 245, 3, 35, 41, 218, 3, 35, 41, 237, 3, 36, 41, 218, 3, 36, 41, 237, 3, 37, 41, 218, 3, 37, 41, 237, 3, 38, 41, 218, 3, 38, 41, 237, 3, 39, 41, 218, 3, 39, 41, 237, 3, 40, 41, 218, 3, 40, 41, 237, 3, 46, 0, 17, 3, 46, 32, 121, 3, 46, 41, 212, 3, 46, 42, 213, 3, 46, 42, 216, 4, 2, 4, 5, 52, 4, 2, 4, 5, 62, 4, 2, 4, 5, 185, 4, 8, 4, 5, 52, 4, 8, 4, 5, 62, 4, 8, 4, 5, 185, 4, 46, 39, 41, 212, 4, 46, 40, 41, 212 ] class << self attr_accessor :_lex_key_offsets private :_lex_key_offsets, :_lex_key_offsets= end self._lex_key_offsets = [ 0, 0, 4, 5, 6, 7, 8, 15, 16, 17, 18, 19, 20, 24, 46, 56, 65, 69, 74, 78, 83, 87, 90, 94, 101, 104, 106, 107, 113, 118, 128, 132, 144, 154, 164, 176, 188, 200, 212, 224, 236, 248, 257, 279, 289, 298, 302, 307, 311, 316, 320, 323, 327, 334, 337, 339, 340, 346, 351, 361, 365, 377, 387, 397, 409, 421, 433, 445, 457, 469, 481, 490, 512, 522, 531, 541, 570, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 599, 600, 601, 602, 603, 604, 605, 606, 610, 611, 612, 613, 614, 615, 622, 626, 633, 634, 656, 659, 667, 674, 675, 686, 699, 703, 708, 712, 717, 726, 731, 741, 745, 750, 754, 759, 763, 766, 770, 777, 780, 782, 783, 789, 794, 804, 808, 820, 830, 840, 852, 864, 876, 888, 900, 912, 924, 933, 946, 960, 974, 988, 1002, 1012, 1014, 1016, 1025, 1026, 1031, 1032, 1037, 1041, 1045, 1050, 1055, 1060, 1064, 1074, 1078, 1082, 1083, 1084, 1093, 1097, 1100, 1109, 1116, 1118, 1128, 1128, 1128, 1130, 1132, 1132, 1132, 1137, 1137, 1137, 1137, 1142, 1143, 1143, 1143, 1143, 1148, 1152, 1157, 1161, 1161, 1161, 1165, 1169, 1170, 1175, 1178, 1188, 1191, 1194, 1197, 1197, 1206, 1215, 1224, 1224, 1234, 1244, 1254, 1264, 1264, 1268, 1268, 1272, 1275, 1287, 1297, 1297, 1300, 1300, 1306, 1306, 1312, 1315, 1324, 1331, 1333, 1343, 1343, 1343, 1345, 1347, 1347, 1347, 1352, 1352, 1352, 1352, 1357, 1358, 1358, 1358, 1358, 1363, 1367, 1372, 1376, 1376, 1376, 1380, 1384, 1385, 1390, 1393, 1403, 1406, 1409, 1412, 1412, 1421, 1430, 1439, 1439, 1449, 1459, 1469, 1479, 1479, 1483, 1483, 1487, 1490, 1502, 1512, 1512, 1515, 1515, 1521, 1521, 1529, 1533, 1536, 1541, 1545, 1549, 1553, 1555, 1564, 1571, 1573, 1582, 1591, 1644, 1656, 1658, 1680, 1689, 1696, 1698, 1699, 1700, 1701, 1702, 1704, 1705, 1708, 1709, 1711, 1723, 1736, 1749, 1762, 1775, 1788, 1801, 1802, 1814, 1829, 1842, 1855, 1868, 1881, 1894, 1907, 1920, 1932, 1944, 1957, 1970, 1983, 1996, 2009, 2023, 2036, 2049, 2062, 2075, 2089, 2102, 2115, 2128, 2141, 2154, 2167, 2181, 2194, 2207, 2220, 2233, 2247, 2260, 2273, 2286, 2299, 2312, 2324, 2338, 2351, 2365, 2378, 2392, 2405, 2418, 2432, 2445, 2458, 2472, 2485, 2498, 2511, 2524, 2539, 2552, 2565, 2578, 2591, 2606, 2619, 2632, 2645, 2659, 2672, 2685, 2699, 2712, 2725, 2738, 2752, 2765, 2778, 2793, 2806, 2819, 2832, 2845, 2859, 2872, 2885, 2898, 2899, 2915, 2925, 2958, 2970, 2971, 2971, 2974, 2975, 2975, 2975, 2975, 2975, 2977, 2981, 2982, 2983, 2984, 2986, 2987, 2990, 2991, 2993, 3002, 3003, 3004, 3005, 3033, 3062, 3065, 3071, 3076, 3076, 3082, 3088, 3089, 3090, 3098, 3099, 3103, 3103, 3103, 3109, 3113, 3113, 3119, 3120, 3121, 3122, 3131, 3132, 3132, 3144, 3148, 3149, 3150, 3151, 3152, 3209, 3222, 3223, 3223, 3226, 3227, 3227, 3227, 3227, 3227, 3228, 3230, 3234, 3241, 3248, 3250, 3250, 3252, 3253, 3256, 3260, 3261, 3262, 3265, 3291, 3303, 3304, 3304, 3307, 3309, 3309, 3309, 3309, 3309, 3309, 3311, 3320, 3327, 3329, 3330, 3331, 3332, 3334, 3335, 3336, 3338, 3339, 3341, 3341, 3342, 3345, 3347, 3360, 3367, 3376, 3376, 3376, 3378, 3380, 3380, 3380, 3385, 3385, 3385, 3385, 3390, 3391, 3391, 3391, 3391, 3396, 3400, 3405, 3409, 3409, 3409, 3413, 3417, 3418, 3423, 3426, 3436, 3439, 3442, 3445, 3445, 3454, 3463, 3472, 3472, 3482, 3492, 3502, 3512, 3512, 3516, 3516, 3520, 3523, 3535, 3545, 3545, 3548, 3548, 3554, 3554, 3567, 3581, 3595, 3595, 3596, 3609, 3625, 3639, 3653, 3667, 3681, 3695, 3709, 3723, 3736, 3749, 3763, 3777, 3791, 3805, 3819, 3834, 3848, 3862, 3876, 3890, 3905, 3919, 3933, 3947, 3961, 3975, 3989, 4004, 4018, 4032, 4046, 4060, 4075, 4089, 4104, 4118, 4133, 4148, 4162, 4176, 4191, 4205, 4219, 4234, 4248, 4262, 4276, 4290, 4306, 4320, 4334, 4348, 4362, 4378, 4392, 4406, 4420, 4434, 4449, 4463, 4477, 4492, 4506, 4520, 4534, 4549, 4563, 4577, 4591, 4607, 4621, 4635, 4649, 4663, 4677, 4691, 4705, 4720, 4734, 4748, 4762, 4776, 4790, 4790, 4792, 4808, 4818, 4885, 4896, 4897, 4897, 4897, 4901, 4907, 4911, 4915, 4919, 4941, 4950, 4957, 4959, 4964, 4970, 4974, 4974, 4980, 4986, 4990, 4993, 4994, 5007, 5011, 5022, 5024, 5026, 5048, 5059, 5066, 5077, 5088, 5099, 5110, 5121, 5132, 5143, 5158, 5173, 5188, 5199, 5210, 5224, 5235, 5249, 5250, 5256, 5261, 5264, 5269, 5275, 5285, 5295, 5295, 5306, 5317, 5328, 5339, 5354, 5366, 5378, 5389, 5389, 5393, 5404, 5418, 5430, 5442, 5454, 5466, 5478, 5490, 5502, 5513, 5524, 5536, 5548, 5560, 5571, 5582, 5594, 5606, 5619, 5631, 5643, 5655, 5667, 5680, 5692, 5704, 5716, 5728, 5740, 5752, 5765, 5777, 5789, 5801, 5813, 5825, 5843, 5856, 5868, 5880, 5892, 5904, 5916, 5927, 5944, 5957, 5970, 5982, 5995, 6007, 6020, 6032, 6044, 6057, 6069, 6081, 6093, 6105, 6118, 6130, 6142, 6154, 6166, 6180, 6192, 6204, 6216, 6228, 6240, 6254, 6266, 6278, 6290, 6302, 6315, 6327, 6339, 6351, 6364, 6376, 6388, 6400, 6412, 6424, 6437, 6449, 6461, 6473, 6487, 6499, 6511, 6523, 6535, 6547, 6559, 6571, 6583, 6596, 6608, 6620, 6632, 6644, 6656, 6668, 6668, 6674, 6674, 6679, 6684, 6688 ] class << self attr_accessor :_lex_trans_keys private :_lex_trans_keys, :_lex_trans_keys= end self._lex_trans_keys = [ 0, 4, 10, 26, 101, 103, 105, 110, 0, 4, 10, 26, 32, 9, 13, 69, 78, 68, 95, 95, 0, 4, 10, 26, 35, 37, 45, 92, 96, 126, 0, 32, 33, 39, 40, 41, 42, 47, 48, 57, 58, 64, 91, 94, 123, 127, 64, 96, 0, 47, 58, 63, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 0, 4, 26, 45, 0, 4, 10, 26, 77, 0, 4, 26, 77, 0, 4, 26, 63, 92, 0, 4, 10, 26, 0, 4, 26, 0, 4, 26, 45, 0, 4, 10, 26, 67, 92, 99, 0, 4, 26, 67, 99, 45, 0, 4, 26, 63, 77, 92, 0, 4, 10, 26, 77, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 35, 37, 45, 92, 96, 126, 0, 32, 33, 39, 40, 41, 42, 47, 48, 57, 58, 64, 91, 94, 123, 127, 64, 96, 0, 47, 58, 63, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 0, 4, 26, 45, 0, 4, 10, 26, 77, 0, 4, 26, 77, 0, 4, 26, 63, 92, 0, 4, 10, 26, 0, 4, 26, 0, 4, 26, 45, 0, 4, 10, 26, 67, 92, 99, 0, 4, 26, 67, 99, 45, 0, 4, 26, 63, 77, 92, 0, 4, 10, 26, 77, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 35, 37, 45, 92, 96, 126, 0, 32, 33, 39, 40, 41, 42, 47, 48, 57, 58, 64, 91, 94, 123, 127, 64, 96, 0, 47, 58, 63, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 58, 96, 0, 47, 59, 64, 91, 94, 123, 127, 10, 32, 35, 37, 38, 40, 42, 43, 44, 45, 46, 47, 58, 60, 61, 62, 63, 91, 93, 94, 105, 114, 117, 119, 123, 124, 126, 9, 13, 0, 4, 10, 26, 60, 62, 102, 101, 115, 99, 117, 101, 110, 108, 116, 101, 115, 115, 105, 108, 104, 105, 108, 115, 99, 117, 101, 108, 116, 101, 115, 115, 105, 108, 105, 108, 0, 4, 26, 58, 98, 101, 103, 105, 110, 0, 4, 10, 26, 32, 9, 13, 0, 4, 10, 26, 0, 4, 26, 65, 90, 97, 122, 61, 35, 37, 45, 92, 96, 126, 0, 32, 33, 39, 40, 41, 42, 47, 48, 57, 58, 64, 91, 94, 123, 127, 61, 62, 126, 64, 96, 0, 63, 91, 94, 123, 127, 96, 0, 64, 91, 94, 123, 127, 93, 34, 39, 45, 61, 96, 0, 64, 91, 94, 123, 127, 0, 4, 10, 26, 96, 1, 47, 58, 64, 91, 94, 123, 127, 0, 4, 10, 26, 0, 4, 10, 26, 34, 0, 4, 10, 26, 0, 4, 10, 26, 39, 34, 39, 96, 0, 64, 91, 94, 123, 127, 0, 4, 10, 26, 96, 0, 4, 26, 67, 77, 99, 117, 120, 48, 55, 0, 4, 26, 45, 0, 4, 10, 26, 77, 0, 4, 26, 77, 0, 4, 26, 63, 92, 0, 4, 10, 26, 0, 4, 26, 0, 4, 26, 45, 0, 4, 10, 26, 67, 92, 99, 0, 4, 26, 67, 99, 45, 0, 4, 26, 63, 77, 92, 0, 4, 10, 26, 77, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 33, 58, 61, 63, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 71, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 73, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 78, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 68, 96, 0, 47, 59, 64, 91, 94, 123, 127, 58, 96, 0, 47, 59, 64, 91, 94, 123, 127, 48, 57, 48, 57, 96, 0, 47, 58, 64, 91, 94, 123, 127, 58, 10, 32, 60, 9, 13, 60, 9, 32, 46, 11, 13, 0, 4, 26, 46, 0, 4, 10, 26, 0, 4, 10, 26, 101, 0, 4, 10, 26, 110, 0, 4, 10, 26, 100, 0, 4, 10, 26, 0, 4, 10, 26, 32, 35, 61, 95, 9, 13, 10, 32, 9, 13, 0, 4, 10, 26, 98, 95, 0, 4, 10, 26, 32, 35, 92, 9, 13, 10, 32, 9, 13, 36, 64, 123, 96, 0, 47, 58, 64, 91, 94, 123, 127, 95, 48, 57, 65, 90, 97, 122, 48, 57, 0, 4, 26, 67, 77, 99, 117, 120, 48, 55, 48, 55, 48, 55, 0, 4, 26, 63, 92, 0, 4, 26, 63, 92, 45, 0, 4, 26, 63, 92, 0, 4, 26, 45, 0, 4, 26, 63, 92, 0, 4, 26, 92, 0, 4, 26, 92, 0, 4, 26, 45, 10, 0, 4, 26, 63, 92, 0, 4, 26, 0, 4, 26, 123, 48, 57, 65, 70, 97, 102, 0, 4, 26, 0, 4, 26, 0, 4, 26, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 0, 4, 26, 125, 0, 4, 26, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 10, 26, 35, 92, 36, 64, 123, 96, 0, 47, 58, 64, 91, 94, 123, 127, 95, 48, 57, 65, 90, 97, 122, 48, 57, 0, 4, 26, 67, 77, 99, 117, 120, 48, 55, 48, 55, 48, 55, 0, 4, 26, 63, 92, 0, 4, 26, 63, 92, 45, 0, 4, 26, 63, 92, 0, 4, 26, 45, 0, 4, 26, 63, 92, 0, 4, 26, 92, 0, 4, 26, 92, 0, 4, 26, 45, 10, 0, 4, 26, 63, 92, 0, 4, 26, 0, 4, 26, 123, 48, 57, 65, 70, 97, 102, 0, 4, 26, 0, 4, 26, 0, 4, 26, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 0, 4, 26, 125, 0, 4, 26, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 10, 26, 32, 92, 9, 13, 10, 32, 9, 13, 0, 4, 26, 0, 4, 10, 26, 92, 0, 4, 10, 26, 65, 90, 97, 122, 65, 90, 97, 122, 36, 64, 96, 0, 47, 58, 64, 91, 94, 123, 127, 95, 48, 57, 65, 90, 97, 122, 48, 57, 96, 0, 47, 58, 64, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 0, 4, 10, 26, 32, 33, 36, 37, 38, 42, 43, 45, 47, 58, 60, 61, 62, 66, 69, 91, 95, 97, 98, 99, 100, 101, 102, 105, 109, 110, 111, 114, 115, 116, 117, 119, 121, 124, 126, 1, 8, 9, 13, 14, 64, 65, 90, 92, 93, 94, 96, 123, 127, 33, 61, 63, 96, 0, 47, 58, 64, 91, 94, 123, 127, 61, 126, 35, 37, 45, 92, 96, 126, 0, 32, 33, 39, 40, 41, 42, 47, 48, 57, 58, 64, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 95, 48, 57, 65, 90, 97, 122, 48, 57, 38, 42, 64, 58, 60, 61, 62, 61, 62, 126, 61, 61, 62, 33, 61, 63, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 69, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 71, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 73, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 68, 96, 0, 47, 58, 64, 91, 94, 123, 127, 93, 33, 61, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 61, 63, 69, 70, 76, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 67, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 79, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 68, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 73, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 71, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 61, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 61, 63, 73, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 76, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 69, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 73, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 108, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 97, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 100, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 103, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 97, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 107, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 97, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 97, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 102, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 100, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 108, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 102, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 100, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 97, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 102, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 100, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 105, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 120, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 116, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 100, 115, 116, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 99, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 114, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 121, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 112, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 104, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 100, 108, 116, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 104, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 124, 0, 4, 9, 26, 32, 96, 1, 10, 11, 13, 14, 64, 91, 94, 123, 127, 58, 96, 0, 47, 59, 64, 91, 94, 123, 127, 0, 4, 10, 26, 32, 33, 35, 37, 38, 42, 43, 45, 47, 60, 61, 62, 91, 92, 93, 94, 96, 124, 126, 1, 8, 9, 13, 14, 64, 65, 90, 123, 127, 33, 61, 63, 96, 0, 47, 58, 64, 91, 94, 123, 127, 61, 61, 62, 126, 61, 61, 126, 0, 4, 10, 26, 38, 42, 64, 60, 61, 62, 61, 62, 126, 61, 61, 62, 96, 0, 47, 58, 64, 91, 94, 123, 127, 93, 10, 124, 0, 4, 10, 26, 32, 35, 37, 38, 40, 42, 44, 45, 46, 58, 60, 62, 91, 93, 94, 123, 124, 126, 9, 13, 43, 47, 61, 63, 10, 32, 35, 37, 38, 40, 42, 43, 44, 45, 46, 47, 58, 60, 61, 62, 63, 91, 93, 94, 105, 114, 117, 119, 123, 124, 126, 9, 13, 10, 32, 61, 10, 32, 38, 61, 9, 13, 10, 32, 61, 9, 13, 10, 32, 42, 61, 9, 13, 10, 32, 9, 13, 61, 62, 46, 46, 0, 4, 10, 26, 32, 61, 9, 13, 58, 10, 32, 9, 13, 10, 32, 61, 124, 9, 13, 0, 4, 10, 26, 10, 32, 42, 61, 9, 13, 58, 60, 62, 0, 4, 9, 26, 32, 100, 123, 11, 13, 111, 0, 4, 10, 26, 32, 35, 105, 114, 117, 119, 9, 13, 0, 4, 10, 26, 102, 101, 110, 104, 0, 4, 10, 26, 32, 33, 35, 37, 38, 40, 42, 43, 45, 46, 47, 58, 60, 61, 62, 63, 66, 69, 91, 92, 94, 95, 97, 98, 99, 100, 101, 102, 105, 109, 110, 111, 114, 115, 116, 117, 119, 121, 123, 124, 126, 1, 8, 9, 13, 14, 64, 65, 90, 93, 96, 125, 127, 33, 58, 61, 63, 96, 0, 47, 59, 64, 91, 94, 123, 127, 61, 61, 62, 126, 61, 61, 61, 126, 0, 4, 10, 26, 0, 4, 26, 65, 90, 97, 122, 0, 4, 26, 65, 90, 97, 122, 38, 61, 42, 61, 61, 61, 48, 57, 48, 57, 61, 62, 46, 46, 0, 4, 26, 33, 34, 36, 37, 38, 39, 42, 43, 45, 47, 58, 60, 61, 62, 64, 91, 94, 96, 124, 126, 0, 63, 92, 93, 123, 127, 33, 61, 63, 96, 0, 47, 58, 64, 91, 94, 123, 127, 61, 61, 62, 126, 61, 62, 61, 126, 96, 0, 47, 58, 64, 91, 94, 123, 127, 95, 48, 57, 65, 90, 97, 122, 48, 57, 38, 42, 64, 60, 61, 62, 61, 61, 62, 124, 60, 61, 62, 61, 62, 126, 61, 62, 0, 4, 10, 26, 32, 92, 95, 9, 13, 65, 90, 97, 122, 96, 0, 64, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 48, 55, 48, 55, 0, 4, 26, 63, 92, 0, 4, 26, 63, 92, 45, 0, 4, 26, 63, 92, 0, 4, 26, 45, 0, 4, 26, 63, 92, 0, 4, 26, 92, 0, 4, 26, 92, 0, 4, 26, 45, 10, 0, 4, 26, 63, 92, 0, 4, 26, 0, 4, 26, 123, 48, 57, 65, 70, 97, 102, 0, 4, 26, 0, 4, 26, 0, 4, 26, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 0, 4, 26, 125, 0, 4, 26, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 33, 58, 61, 63, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 69, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 78, 96, 0, 47, 59, 64, 91, 94, 123, 127, 10, 33, 58, 61, 63, 95, 0, 47, 59, 64, 91, 96, 123, 127, 33, 58, 61, 63, 69, 70, 76, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 78, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 67, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 79, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 68, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 73, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 78, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 71, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 95, 0, 47, 59, 64, 91, 96, 123, 127, 33, 58, 61, 63, 95, 0, 47, 59, 64, 91, 96, 123, 127, 33, 58, 61, 63, 73, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 76, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 69, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 73, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 78, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 110, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 105, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 97, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 115, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 100, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 114, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 103, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 105, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 110, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 97, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 107, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 97, 108, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 115, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 97, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 115, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 111, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 102, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 110, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 115, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 105, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 100, 115, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 117, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 114, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 97, 111, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 114, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 102, 110, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 111, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 100, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 117, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 105, 111, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 120, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 116, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 100, 115, 116, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 111, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 99, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 117, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 114, 117, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 121, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 114, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 117, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 112, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 104, 114, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 117, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 110, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 100, 108, 116, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 115, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 115, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 105, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 104, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 105, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 105, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 0, 47, 59, 64, 91, 94, 123, 127, 61, 124, 0, 4, 10, 26, 32, 96, 1, 8, 9, 13, 14, 64, 91, 94, 123, 127, 58, 96, 0, 47, 59, 64, 91, 94, 123, 127, 0, 4, 10, 26, 32, 33, 35, 36, 37, 38, 40, 41, 42, 44, 45, 46, 48, 58, 59, 60, 61, 62, 63, 64, 66, 69, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 109, 110, 111, 114, 115, 116, 117, 119, 121, 123, 124, 125, 126, 127, 1, 8, 9, 13, 14, 31, 34, 39, 43, 47, 49, 57, 65, 90, 33, 63, 96, 0, 47, 58, 64, 91, 94, 123, 127, 61, 9, 32, 11, 13, 10, 32, 61, 126, 9, 13, 10, 32, 9, 13, 10, 32, 9, 13, 0, 4, 10, 26, 35, 37, 45, 92, 96, 126, 0, 32, 33, 39, 40, 41, 42, 47, 48, 57, 58, 64, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 95, 48, 57, 65, 90, 97, 122, 48, 57, 10, 32, 61, 9, 13, 10, 32, 38, 61, 9, 13, 10, 32, 9, 13, 10, 32, 42, 61, 9, 13, 10, 32, 61, 62, 9, 13, 9, 32, 11, 13, 46, 48, 57, 46, 69, 95, 101, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 43, 45, 48, 57, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 48, 57, 48, 57, 46, 66, 68, 69, 79, 88, 95, 98, 100, 101, 111, 120, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 96, 0, 64, 91, 94, 123, 127, 95, 0, 47, 48, 49, 50, 64, 91, 96, 123, 127, 95, 0, 47, 48, 49, 50, 64, 91, 96, 123, 127, 95, 0, 47, 48, 49, 50, 64, 91, 96, 123, 127, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 95, 0, 47, 48, 57, 58, 64, 65, 70, 91, 96, 97, 102, 123, 127, 95, 0, 47, 48, 57, 58, 64, 65, 70, 91, 96, 97, 102, 123, 127, 95, 0, 47, 48, 57, 58, 64, 65, 70, 91, 96, 97, 102, 123, 127, 96, 0, 47, 48, 57, 58, 64, 91, 94, 123, 127, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 46, 69, 95, 101, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 96, 0, 47, 48, 57, 58, 64, 91, 94, 123, 127, 46, 69, 95, 101, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 58, 10, 32, 60, 61, 9, 13, 10, 32, 62, 9, 13, 61, 62, 126, 10, 32, 61, 9, 13, 10, 32, 61, 62, 9, 13, 64, 96, 0, 47, 58, 63, 91, 94, 123, 127, 58, 96, 0, 47, 59, 64, 91, 94, 123, 127, 58, 69, 96, 0, 47, 59, 64, 91, 94, 123, 127, 58, 71, 96, 0, 47, 59, 64, 91, 94, 123, 127, 58, 73, 96, 0, 47, 59, 64, 91, 94, 123, 127, 58, 78, 96, 0, 47, 59, 64, 91, 94, 123, 127, 43, 45, 58, 78, 96, 0, 47, 48, 57, 59, 64, 91, 94, 123, 127, 58, 95, 0, 47, 48, 57, 59, 64, 91, 96, 123, 127, 58, 96, 0, 47, 48, 57, 59, 64, 91, 94, 123, 127, 58, 68, 96, 0, 47, 59, 64, 91, 94, 123, 127, 0, 4, 10, 26, 33, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 63, 69, 70, 76, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 67, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 79, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 68, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 73, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 71, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 63, 73, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 76, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 69, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 63, 73, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 97, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 100, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 103, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 97, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 107, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 97, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 97, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 10, 32, 33, 60, 63, 96, 0, 8, 9, 13, 14, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 102, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 100, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 43, 45, 63, 96, 108, 110, 0, 47, 48, 57, 58, 64, 91, 94, 123, 127, 33, 63, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 33, 63, 96, 0, 47, 48, 57, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 102, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 100, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 97, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 102, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 100, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 105, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 120, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 116, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 116, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 100, 115, 116, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 99, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 114, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 121, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 102, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 112, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 104, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 100, 108, 116, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 102, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 104, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 100, 0, 47, 58, 64, 91, 94, 123, 127, 10, 32, 61, 124, 9, 13, 9, 32, 46, 11, 13, 9, 32, 46, 11, 13, 0, 4, 26, 46, 0, 4, 10, 26, 61, 0 ] class << self attr_accessor :_lex_single_lengths private :_lex_single_lengths, :_lex_single_lengths= end self._lex_single_lengths = [ 0, 4, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 4, 6, 2, 1, 4, 5, 4, 5, 4, 3, 4, 7, 3, 2, 1, 6, 5, 4, 4, 6, 4, 4, 6, 6, 6, 6, 6, 6, 6, 3, 6, 2, 1, 4, 5, 4, 5, 4, 3, 4, 7, 3, 2, 1, 6, 5, 4, 4, 6, 4, 4, 6, 6, 6, 6, 6, 6, 6, 3, 6, 2, 1, 2, 27, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 5, 4, 3, 1, 6, 3, 2, 1, 1, 5, 5, 4, 5, 4, 5, 3, 5, 8, 4, 5, 4, 5, 4, 3, 4, 7, 3, 2, 1, 6, 5, 4, 4, 6, 4, 4, 6, 6, 6, 6, 6, 6, 6, 3, 5, 6, 6, 6, 6, 2, 0, 0, 1, 1, 3, 1, 3, 4, 4, 5, 5, 5, 4, 8, 2, 4, 1, 1, 7, 2, 3, 1, 1, 0, 8, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 1, 0, 0, 0, 5, 4, 5, 4, 0, 0, 4, 4, 1, 5, 3, 4, 3, 3, 3, 0, 3, 3, 3, 0, 4, 4, 4, 4, 0, 4, 0, 4, 3, 6, 4, 0, 3, 0, 0, 0, 6, 3, 1, 1, 0, 8, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 1, 0, 0, 0, 5, 4, 5, 4, 0, 0, 4, 4, 1, 5, 3, 4, 3, 3, 3, 0, 3, 3, 3, 0, 4, 4, 4, 4, 0, 4, 0, 4, 3, 6, 4, 0, 3, 0, 0, 0, 6, 2, 3, 5, 4, 0, 0, 2, 1, 1, 0, 1, 1, 39, 4, 2, 6, 1, 1, 0, 1, 1, 1, 1, 2, 1, 3, 1, 0, 4, 5, 5, 5, 5, 5, 5, 1, 4, 7, 5, 5, 5, 5, 5, 5, 5, 4, 4, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 5, 4, 6, 5, 6, 5, 6, 5, 5, 6, 5, 5, 6, 5, 5, 5, 5, 7, 5, 5, 5, 5, 7, 5, 5, 5, 6, 5, 5, 6, 5, 5, 5, 6, 5, 5, 7, 5, 5, 5, 5, 6, 5, 5, 5, 1, 6, 2, 23, 4, 1, 0, 3, 1, 0, 0, 0, 0, 2, 4, 1, 1, 1, 2, 1, 3, 1, 0, 1, 1, 1, 1, 22, 27, 3, 4, 3, 0, 4, 2, 1, 1, 6, 1, 2, 0, 0, 4, 4, 0, 4, 1, 1, 1, 7, 1, 0, 10, 4, 1, 1, 1, 1, 45, 5, 1, 0, 3, 1, 0, 0, 0, 0, 1, 2, 4, 3, 3, 2, 0, 2, 1, 1, 0, 1, 1, 3, 20, 4, 1, 0, 3, 2, 0, 0, 0, 0, 0, 2, 1, 1, 0, 1, 1, 1, 2, 1, 1, 0, 1, 2, 0, 1, 3, 2, 7, 1, 1, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 1, 0, 0, 0, 5, 4, 5, 4, 0, 0, 4, 4, 1, 5, 3, 4, 3, 3, 3, 0, 3, 3, 3, 0, 4, 4, 4, 4, 0, 4, 0, 4, 3, 6, 4, 0, 3, 0, 0, 0, 5, 6, 6, 0, 1, 5, 8, 6, 6, 6, 6, 6, 6, 6, 5, 5, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 7, 6, 7, 6, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 6, 6, 8, 6, 6, 6, 6, 8, 6, 6, 6, 6, 7, 6, 6, 7, 6, 6, 6, 7, 6, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 0, 2, 6, 2, 53, 3, 1, 0, 0, 2, 4, 2, 2, 4, 6, 1, 1, 0, 3, 4, 2, 0, 4, 4, 2, 1, 1, 3, 2, 1, 0, 0, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 4, 1, 4, 3, 3, 3, 4, 2, 2, 0, 3, 3, 3, 3, 5, 2, 2, 3, 0, 4, 3, 6, 4, 4, 4, 4, 4, 4, 4, 3, 3, 4, 4, 4, 3, 3, 4, 4, 5, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 6, 5, 4, 4, 4, 4, 4, 3, 7, 3, 3, 4, 5, 4, 5, 4, 4, 5, 4, 4, 4, 4, 5, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 5, 4, 4, 4, 5, 4, 4, 4, 4, 4, 5, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 0, 4, 0, 3, 3, 4, 5 ] class << self attr_accessor :_lex_range_lengths private :_lex_range_lengths, :_lex_range_lengths= end self._lex_range_lengths = [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 8, 4, 4, 4, 1, 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, 1, 0, 2, 0, 8, 0, 3, 3, 0, 3, 4, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 1, 1, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 4, 3, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 3, 3, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 3, 0, 0, 0, 4, 3, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 3, 3, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 3, 0, 1, 1, 0, 0, 0, 2, 2, 0, 4, 3, 1, 4, 4, 7, 4, 0, 8, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 5, 4, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 3, 1, 0, 1, 1, 0, 1, 2, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 2, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 3, 4, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 3, 3, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 3, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 5, 4, 7, 4, 0, 0, 0, 1, 1, 1, 1, 0, 8, 4, 3, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 5, 1, 5, 1, 1, 5, 5, 3, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 5, 5, 5, 5, 5, 0, 1, 1, 0, 1, 1, 4, 4, 0, 4, 4, 4, 4, 5, 5, 5, 4, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 1, 0, 1, 1, 0, 0 ] class << self attr_accessor :_lex_index_offsets private :_lex_index_offsets, :_lex_index_offsets= end self._lex_index_offsets = [ 0, 0, 5, 7, 9, 11, 13, 20, 22, 24, 26, 28, 30, 35, 50, 57, 63, 68, 74, 79, 85, 90, 94, 99, 107, 111, 114, 116, 123, 129, 137, 142, 152, 160, 168, 178, 188, 198, 208, 218, 228, 238, 245, 260, 267, 273, 278, 284, 289, 295, 300, 304, 309, 317, 321, 324, 326, 333, 339, 347, 352, 362, 370, 378, 388, 398, 408, 418, 428, 438, 448, 455, 470, 477, 483, 490, 519, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 545, 547, 549, 551, 553, 555, 557, 559, 561, 563, 565, 567, 569, 572, 574, 576, 578, 580, 582, 584, 586, 591, 593, 595, 597, 599, 601, 608, 613, 619, 621, 636, 640, 646, 651, 653, 662, 672, 677, 683, 688, 694, 701, 707, 717, 722, 728, 733, 739, 744, 748, 753, 761, 765, 768, 770, 777, 783, 791, 796, 806, 814, 822, 832, 842, 852, 862, 872, 882, 892, 899, 909, 920, 931, 942, 953, 960, 962, 964, 970, 972, 977, 979, 984, 989, 994, 1000, 1006, 1012, 1017, 1027, 1031, 1036, 1038, 1040, 1049, 1053, 1057, 1063, 1068, 1070, 1080, 1081, 1082, 1084, 1086, 1087, 1088, 1094, 1095, 1096, 1097, 1103, 1105, 1106, 1107, 1108, 1114, 1119, 1125, 1130, 1131, 1132, 1137, 1142, 1144, 1150, 1154, 1162, 1166, 1170, 1174, 1175, 1182, 1189, 1196, 1197, 1205, 1213, 1221, 1229, 1230, 1235, 1236, 1241, 1245, 1255, 1263, 1264, 1268, 1269, 1273, 1274, 1281, 1285, 1291, 1296, 1298, 1308, 1309, 1310, 1312, 1314, 1315, 1316, 1322, 1323, 1324, 1325, 1331, 1333, 1334, 1335, 1336, 1342, 1347, 1353, 1358, 1359, 1360, 1365, 1370, 1372, 1378, 1382, 1390, 1394, 1398, 1402, 1403, 1410, 1417, 1424, 1425, 1433, 1441, 1449, 1457, 1458, 1463, 1464, 1469, 1473, 1483, 1491, 1492, 1496, 1497, 1501, 1502, 1510, 1514, 1518, 1524, 1529, 1532, 1535, 1538, 1544, 1549, 1551, 1557, 1563, 1610, 1619, 1622, 1637, 1643, 1648, 1650, 1652, 1654, 1656, 1658, 1661, 1663, 1667, 1669, 1671, 1680, 1690, 1700, 1710, 1720, 1730, 1740, 1742, 1751, 1763, 1773, 1783, 1793, 1803, 1813, 1823, 1833, 1842, 1851, 1861, 1871, 1881, 1891, 1901, 1912, 1922, 1932, 1942, 1952, 1963, 1973, 1983, 1993, 2003, 2013, 2023, 2034, 2044, 2054, 2064, 2074, 2085, 2095, 2105, 2115, 2125, 2135, 2144, 2155, 2165, 2176, 2186, 2197, 2207, 2217, 2228, 2238, 2248, 2259, 2269, 2279, 2289, 2299, 2311, 2321, 2331, 2341, 2351, 2363, 2373, 2383, 2393, 2404, 2414, 2424, 2435, 2445, 2455, 2465, 2476, 2486, 2496, 2508, 2518, 2528, 2538, 2548, 2559, 2569, 2579, 2589, 2591, 2603, 2610, 2639, 2648, 2650, 2651, 2655, 2657, 2658, 2659, 2660, 2661, 2664, 2669, 2671, 2673, 2675, 2678, 2680, 2684, 2686, 2688, 2694, 2696, 2698, 2700, 2726, 2755, 2759, 2765, 2770, 2771, 2777, 2782, 2784, 2786, 2794, 2796, 2800, 2801, 2802, 2808, 2813, 2814, 2820, 2822, 2824, 2826, 2835, 2837, 2838, 2850, 2855, 2857, 2859, 2861, 2863, 2915, 2925, 2927, 2928, 2932, 2934, 2935, 2936, 2937, 2938, 2940, 2943, 2948, 2954, 2960, 2963, 2964, 2967, 2969, 2972, 2975, 2977, 2979, 2983, 3007, 3016, 3018, 3019, 3023, 3026, 3027, 3028, 3029, 3030, 3031, 3034, 3040, 3045, 3047, 3049, 3051, 3053, 3056, 3058, 3060, 3062, 3064, 3067, 3068, 3070, 3074, 3077, 3088, 3093, 3099, 3100, 3101, 3103, 3105, 3106, 3107, 3113, 3114, 3115, 3116, 3122, 3124, 3125, 3126, 3127, 3133, 3138, 3144, 3149, 3150, 3151, 3156, 3161, 3163, 3169, 3173, 3181, 3185, 3189, 3193, 3194, 3201, 3208, 3215, 3216, 3224, 3232, 3240, 3248, 3249, 3254, 3255, 3260, 3264, 3274, 3282, 3283, 3287, 3288, 3292, 3293, 3303, 3314, 3325, 3326, 3328, 3338, 3351, 3362, 3373, 3384, 3395, 3406, 3417, 3428, 3438, 3448, 3459, 3470, 3481, 3492, 3503, 3515, 3526, 3537, 3548, 3559, 3571, 3582, 3593, 3604, 3615, 3626, 3637, 3649, 3660, 3671, 3682, 3693, 3705, 3716, 3728, 3739, 3751, 3763, 3774, 3785, 3797, 3808, 3819, 3831, 3842, 3853, 3864, 3875, 3888, 3899, 3910, 3921, 3932, 3945, 3956, 3967, 3978, 3989, 4001, 4012, 4023, 4035, 4046, 4057, 4068, 4080, 4091, 4102, 4113, 4126, 4137, 4148, 4159, 4170, 4181, 4192, 4203, 4215, 4226, 4237, 4248, 4259, 4270, 4271, 4274, 4286, 4293, 4354, 4362, 4364, 4365, 4366, 4370, 4376, 4380, 4384, 4389, 4404, 4410, 4415, 4417, 4422, 4428, 4432, 4433, 4439, 4445, 4449, 4452, 4454, 4463, 4467, 4474, 4476, 4478, 4496, 4503, 4508, 4515, 4522, 4529, 4536, 4543, 4550, 4557, 4566, 4575, 4584, 4591, 4598, 4608, 4615, 4625, 4627, 4633, 4638, 4642, 4647, 4653, 4660, 4667, 4668, 4676, 4684, 4692, 4700, 4711, 4719, 4727, 4735, 4736, 4741, 4749, 4760, 4769, 4778, 4787, 4796, 4805, 4814, 4823, 4831, 4839, 4848, 4857, 4866, 4874, 4882, 4891, 4900, 4910, 4919, 4928, 4937, 4946, 4956, 4965, 4974, 4983, 4992, 5001, 5010, 5020, 5029, 5038, 5047, 5056, 5065, 5078, 5088, 5097, 5106, 5115, 5124, 5133, 5141, 5154, 5163, 5172, 5181, 5191, 5200, 5210, 5219, 5228, 5238, 5247, 5256, 5265, 5274, 5284, 5293, 5302, 5311, 5320, 5331, 5340, 5349, 5358, 5367, 5376, 5387, 5396, 5405, 5414, 5423, 5433, 5442, 5451, 5460, 5470, 5479, 5488, 5497, 5506, 5515, 5525, 5534, 5543, 5552, 5563, 5572, 5581, 5590, 5599, 5608, 5617, 5626, 5635, 5645, 5654, 5663, 5672, 5681, 5690, 5699, 5700, 5706, 5707, 5712, 5717, 5722 ] class << self attr_accessor :_lex_indicies private :_lex_indicies, :_lex_indicies= end self._lex_indicies = [ 2, 2, 3, 2, 1, 4, 0, 5, 0, 6, 0, 7, 0, 8, 8, 9, 8, 8, 8, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, 15, 16, 15, 0, 17, 17, 20, 19, 19, 19, 17, 19, 17, 19, 21, 19, 17, 17, 18, 22, 17, 17, 17, 17, 17, 18, 17, 17, 17, 17, 17, 18, 17, 17, 17, 24, 23, 25, 25, 27, 25, 28, 26, 25, 25, 25, 29, 26, 25, 25, 25, 31, 32, 30, 25, 25, 34, 25, 33, 25, 25, 25, 33, 17, 17, 17, 35, 23, 25, 25, 37, 25, 38, 39, 40, 36, 25, 25, 25, 36, 41, 42, 25, 42, 25, 17, 17, 17, 44, 45, 46, 43, 17, 17, 27, 17, 29, 26, 48, 48, 48, 48, 49, 49, 49, 47, 48, 48, 48, 25, 49, 48, 48, 51, 48, 51, 53, 52, 52, 52, 50, 48, 48, 48, 56, 55, 55, 55, 54, 48, 48, 48, 48, 57, 57, 57, 47, 48, 48, 58, 48, 58, 60, 59, 59, 59, 47, 48, 48, 58, 48, 58, 60, 61, 61, 61, 47, 48, 48, 58, 48, 58, 60, 62, 62, 62, 47, 48, 48, 58, 48, 58, 60, 63, 63, 63, 47, 48, 48, 58, 48, 58, 60, 64, 64, 64, 47, 48, 48, 58, 48, 58, 60, 65, 65, 65, 47, 48, 48, 58, 48, 58, 60, 61, 61, 61, 54, 17, 17, 17, 67, 67, 67, 66, 68, 68, 71, 70, 70, 70, 68, 70, 68, 70, 72, 70, 68, 68, 69, 73, 68, 68, 68, 68, 68, 69, 68, 68, 68, 68, 68, 69, 68, 68, 68, 75, 74, 76, 76, 78, 76, 79, 77, 76, 76, 76, 80, 77, 76, 76, 76, 82, 83, 81, 76, 76, 85, 76, 84, 76, 76, 76, 84, 68, 68, 68, 86, 74, 76, 76, 88, 76, 89, 90, 91, 87, 76, 76, 76, 87, 92, 93, 76, 93, 76, 68, 68, 68, 95, 96, 97, 94, 68, 68, 78, 68, 80, 77, 99, 99, 99, 99, 100, 100, 100, 98, 99, 99, 99, 76, 100, 99, 99, 102, 99, 102, 104, 103, 103, 103, 101, 99, 99, 99, 107, 106, 106, 106, 105, 99, 99, 99, 99, 108, 108, 108, 98, 99, 99, 109, 99, 109, 111, 110, 110, 110, 98, 99, 99, 109, 99, 109, 111, 112, 112, 112, 98, 99, 99, 109, 99, 109, 111, 113, 113, 113, 98, 99, 99, 109, 99, 109, 111, 114, 114, 114, 98, 99, 99, 109, 99, 109, 111, 115, 115, 115, 98, 99, 99, 109, 99, 109, 111, 116, 116, 116, 98, 99, 99, 109, 99, 109, 111, 112, 112, 112, 105, 68, 68, 68, 118, 118, 118, 117, 121, 121, 122, 120, 120, 120, 121, 120, 121, 120, 123, 120, 121, 121, 119, 125, 121, 121, 121, 121, 121, 124, 121, 121, 121, 121, 121, 126, 129, 127, 127, 127, 127, 127, 128, 132, 131, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 139, 145, 146, 147, 139, 148, 149, 150, 151, 152, 153, 154, 148, 131, 130, 130, 130, 132, 130, 133, 155, 130, 148, 130, 139, 130, 156, 130, 157, 130, 158, 130, 159, 130, 139, 130, 160, 130, 161, 162, 130, 163, 130, 164, 130, 139, 130, 165, 130, 139, 130, 166, 130, 167, 130, 159, 130, 169, 168, 170, 168, 171, 168, 172, 168, 173, 174, 168, 175, 168, 176, 168, 172, 168, 177, 168, 172, 168, 178, 168, 171, 168, 179, 179, 179, 179, 180, 182, 181, 183, 181, 184, 181, 185, 181, 186, 181, 187, 187, 188, 187, 187, 187, 181, 191, 191, 192, 191, 190, 189, 189, 189, 194, 194, 193, 195, 179, 189, 189, 198, 197, 197, 197, 189, 197, 189, 197, 199, 197, 189, 189, 196, 200, 197, 197, 189, 201, 189, 189, 189, 189, 196, 189, 189, 189, 189, 196, 200, 189, 203, 204, 205, 195, 206, 189, 189, 189, 202, 189, 189, 209, 189, 208, 208, 208, 208, 208, 207, 189, 189, 211, 189, 210, 189, 189, 189, 189, 212, 203, 189, 189, 209, 189, 208, 189, 189, 189, 189, 212, 204, 203, 204, 206, 189, 189, 189, 202, 189, 189, 189, 189, 212, 206, 214, 214, 214, 216, 217, 218, 219, 220, 215, 213, 189, 189, 189, 222, 221, 223, 223, 225, 223, 226, 224, 223, 223, 223, 227, 224, 223, 223, 223, 229, 230, 228, 223, 223, 232, 223, 231, 223, 223, 223, 231, 189, 189, 189, 233, 221, 223, 223, 235, 223, 236, 237, 238, 234, 223, 223, 223, 234, 239, 240, 223, 240, 223, 189, 189, 189, 242, 243, 244, 241, 189, 189, 225, 189, 227, 224, 246, 246, 246, 246, 247, 247, 247, 245, 246, 246, 246, 223, 247, 246, 246, 249, 246, 249, 251, 250, 250, 250, 248, 246, 246, 246, 254, 253, 253, 253, 252, 246, 246, 246, 246, 255, 255, 255, 245, 246, 246, 256, 246, 256, 258, 257, 257, 257, 245, 246, 246, 256, 246, 256, 258, 259, 259, 259, 245, 246, 246, 256, 246, 256, 258, 260, 260, 260, 245, 246, 246, 256, 246, 256, 258, 261, 261, 261, 245, 246, 246, 256, 246, 256, 258, 262, 262, 262, 245, 246, 246, 256, 246, 256, 258, 263, 263, 263, 245, 246, 246, 256, 246, 256, 258, 259, 259, 259, 252, 189, 189, 189, 265, 265, 265, 264, 267, 268, 269, 270, 179, 179, 179, 179, 179, 266, 267, 268, 269, 270, 271, 189, 189, 189, 189, 189, 266, 267, 268, 269, 270, 272, 189, 189, 189, 189, 189, 266, 267, 268, 269, 270, 273, 189, 189, 189, 189, 189, 266, 267, 268, 269, 270, 273, 189, 189, 189, 189, 189, 266, 276, 274, 274, 274, 274, 274, 275, 278, 277, 280, 279, 281, 281, 281, 281, 281, 282, 283, 277, 286, 285, 287, 285, 284, 288, 284, 290, 290, 291, 290, 289, 289, 289, 289, 289, 292, 121, 121, 294, 121, 293, 121, 121, 294, 121, 295, 293, 121, 121, 294, 121, 296, 293, 121, 121, 294, 121, 297, 293, 121, 121, 298, 121, 297, 300, 300, 302, 300, 301, 303, 304, 305, 301, 299, 302, 301, 301, 306, 2, 2, 3, 2, 1, 308, 307, 309, 307, 311, 311, 313, 311, 312, 314, 315, 312, 310, 313, 312, 312, 316, 318, 319, 320, 317, 321, 321, 321, 321, 321, 18, 19, 19, 19, 19, 321, 21, 321, 323, 323, 323, 325, 326, 327, 328, 329, 324, 322, 330, 331, 333, 332, 334, 332, 332, 335, 335, 335, 335, 44, 336, 43, 337, 338, 339, 339, 339, 339, 44, 340, 43, 42, 339, 341, 342, 343, 343, 343, 343, 31, 344, 30, 339, 339, 339, 345, 23, 335, 335, 335, 31, 32, 30, 335, 335, 335, 347, 346, 348, 349, 349, 349, 349, 350, 346, 349, 349, 349, 345, 23, 351, 349, 349, 349, 349, 31, 32, 30, 337, 337, 337, 23, 352, 352, 352, 355, 354, 354, 354, 353, 352, 352, 352, 356, 352, 352, 352, 357, 352, 352, 352, 358, 352, 352, 352, 352, 359, 359, 359, 356, 352, 352, 352, 360, 360, 360, 357, 352, 352, 352, 361, 361, 361, 358, 362, 48, 48, 48, 356, 364, 364, 364, 363, 48, 48, 48, 366, 365, 365, 365, 50, 48, 48, 48, 56, 367, 367, 367, 54, 48, 48, 48, 48, 49, 49, 49, 47, 368, 48, 48, 48, 352, 49, 369, 48, 48, 48, 358, 367, 369, 369, 369, 358, 48, 48, 58, 48, 58, 60, 59, 59, 59, 47, 48, 48, 48, 368, 65, 65, 65, 47, 370, 370, 370, 370, 358, 371, 373, 373, 373, 372, 372, 375, 375, 376, 375, 377, 378, 374, 380, 381, 382, 379, 383, 383, 383, 383, 383, 69, 70, 70, 70, 70, 383, 72, 383, 385, 385, 385, 387, 388, 389, 390, 391, 386, 384, 392, 393, 395, 394, 396, 394, 394, 397, 397, 397, 397, 95, 398, 94, 399, 400, 401, 401, 401, 401, 95, 402, 94, 93, 401, 403, 404, 405, 405, 405, 405, 82, 406, 81, 401, 401, 401, 407, 74, 397, 397, 397, 82, 83, 81, 397, 397, 397, 409, 408, 410, 411, 411, 411, 411, 412, 408, 411, 411, 411, 407, 74, 413, 411, 411, 411, 411, 82, 83, 81, 399, 399, 399, 74, 414, 414, 414, 417, 416, 416, 416, 415, 414, 414, 414, 418, 414, 414, 414, 419, 414, 414, 414, 420, 414, 414, 414, 414, 421, 421, 421, 418, 414, 414, 414, 422, 422, 422, 419, 414, 414, 414, 423, 423, 423, 420, 424, 99, 99, 99, 418, 426, 426, 426, 425, 99, 99, 99, 428, 427, 427, 427, 101, 99, 99, 99, 107, 429, 429, 429, 105, 99, 99, 99, 99, 100, 100, 100, 98, 430, 99, 99, 99, 414, 100, 431, 99, 99, 99, 420, 429, 431, 431, 431, 420, 99, 99, 109, 99, 109, 111, 110, 110, 110, 98, 99, 99, 99, 430, 116, 116, 116, 98, 432, 432, 432, 432, 420, 433, 435, 435, 435, 434, 434, 437, 437, 439, 437, 438, 440, 438, 436, 439, 438, 438, 441, 442, 442, 442, 443, 445, 445, 446, 445, 447, 444, 448, 448, 450, 448, 449, 452, 452, 451, 452, 452, 453, 454, 455, 121, 456, 456, 456, 456, 456, 119, 120, 120, 120, 120, 456, 123, 456, 457, 457, 457, 457, 457, 124, 458, 458, 458, 458, 458, 126, 460, 460, 463, 460, 462, 464, 465, 466, 467, 468, 469, 469, 466, 470, 471, 472, 473, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 469, 461, 462, 461, 474, 461, 466, 461, 459, 497, 497, 497, 496, 496, 496, 496, 496, 459, 466, 466, 498, 499, 499, 502, 501, 501, 501, 499, 501, 499, 501, 503, 501, 499, 499, 500, 504, 504, 504, 504, 504, 500, 501, 501, 501, 501, 504, 503, 504, 466, 498, 466, 498, 466, 498, 506, 505, 466, 507, 498, 466, 498, 508, 466, 466, 499, 466, 498, 466, 498, 497, 497, 497, 496, 496, 496, 496, 496, 474, 497, 497, 497, 510, 509, 509, 509, 509, 509, 474, 497, 497, 497, 511, 509, 509, 509, 509, 509, 474, 497, 497, 497, 512, 509, 509, 509, 509, 509, 474, 497, 497, 497, 513, 509, 509, 509, 509, 509, 474, 497, 497, 497, 514, 509, 509, 509, 509, 509, 474, 497, 497, 497, 513, 509, 509, 509, 509, 509, 474, 508, 499, 497, 497, 497, 516, 515, 515, 515, 515, 459, 497, 497, 497, 517, 518, 519, 515, 515, 515, 515, 515, 459, 497, 497, 497, 520, 515, 515, 515, 515, 515, 459, 497, 497, 497, 521, 515, 515, 515, 515, 515, 459, 497, 497, 497, 522, 515, 515, 515, 515, 515, 459, 497, 497, 497, 523, 515, 515, 515, 515, 515, 459, 497, 497, 497, 524, 515, 515, 515, 515, 515, 459, 497, 497, 497, 525, 515, 515, 515, 515, 515, 459, 497, 497, 497, 526, 515, 515, 515, 515, 515, 459, 497, 497, 497, 527, 515, 515, 515, 515, 459, 497, 497, 497, 528, 515, 515, 515, 515, 459, 497, 497, 497, 529, 515, 515, 515, 515, 515, 459, 497, 497, 497, 530, 515, 515, 515, 515, 515, 459, 497, 497, 497, 526, 515, 515, 515, 515, 515, 459, 497, 497, 497, 531, 515, 515, 515, 515, 515, 459, 497, 497, 497, 530, 515, 515, 515, 515, 515, 459, 497, 497, 497, 515, 532, 533, 515, 515, 515, 515, 459, 497, 497, 497, 515, 534, 515, 515, 515, 515, 459, 497, 497, 497, 515, 535, 515, 515, 515, 515, 459, 497, 497, 497, 515, 528, 515, 515, 515, 515, 459, 497, 497, 497, 515, 528, 515, 515, 515, 515, 459, 497, 497, 497, 515, 536, 537, 515, 515, 515, 515, 459, 497, 497, 497, 515, 538, 515, 515, 515, 515, 459, 497, 497, 497, 515, 539, 515, 515, 515, 515, 459, 497, 497, 497, 515, 528, 515, 515, 515, 515, 459, 497, 497, 497, 515, 540, 515, 515, 515, 515, 459, 497, 497, 497, 515, 541, 515, 515, 515, 515, 459, 497, 497, 497, 515, 528, 515, 515, 515, 515, 459, 497, 497, 497, 515, 542, 543, 515, 515, 515, 515, 459, 497, 497, 497, 515, 544, 515, 515, 515, 515, 459, 497, 497, 497, 515, 528, 515, 515, 515, 515, 459, 497, 497, 497, 515, 545, 515, 515, 515, 515, 459, 497, 497, 497, 515, 535, 515, 515, 515, 515, 459, 497, 497, 497, 515, 546, 528, 515, 515, 515, 515, 459, 497, 497, 497, 515, 547, 515, 515, 515, 515, 459, 497, 497, 497, 548, 549, 548, 548, 548, 548, 459, 497, 497, 497, 515, 550, 515, 515, 515, 515, 459, 497, 497, 497, 515, 551, 515, 515, 515, 515, 459, 497, 497, 497, 515, 552, 515, 515, 515, 515, 459, 497, 497, 553, 515, 515, 515, 515, 515, 459, 497, 497, 497, 515, 554, 555, 515, 515, 515, 515, 459, 497, 497, 497, 515, 556, 515, 515, 515, 515, 459, 497, 497, 497, 515, 528, 557, 515, 515, 515, 515, 459, 497, 497, 497, 515, 528, 515, 515, 515, 515, 459, 497, 497, 497, 515, 528, 558, 515, 515, 515, 515, 459, 497, 497, 497, 515, 559, 515, 515, 515, 515, 459, 497, 497, 497, 515, 544, 515, 515, 515, 515, 459, 497, 497, 497, 515, 560, 488, 515, 515, 515, 515, 459, 497, 497, 497, 515, 542, 515, 515, 515, 515, 459, 497, 497, 497, 515, 528, 515, 515, 515, 515, 459, 497, 497, 497, 515, 528, 528, 515, 515, 515, 515, 459, 497, 497, 497, 515, 561, 515, 515, 515, 515, 459, 497, 497, 497, 515, 562, 515, 515, 515, 515, 459, 497, 497, 497, 515, 563, 515, 515, 515, 515, 459, 497, 497, 497, 515, 544, 515, 515, 515, 515, 459, 497, 497, 497, 515, 564, 565, 566, 515, 515, 515, 515, 459, 497, 497, 497, 515, 566, 515, 515, 515, 515, 459, 497, 497, 497, 515, 528, 515, 515, 515, 515, 459, 497, 497, 497, 515, 528, 515, 515, 515, 515, 459, 497, 497, 497, 515, 567, 515, 515, 515, 515, 459, 497, 497, 497, 515, 568, 569, 570, 515, 515, 515, 515, 459, 497, 497, 497, 515, 528, 515, 515, 515, 515, 459, 497, 497, 497, 515, 571, 515, 515, 515, 515, 459, 497, 497, 497, 515, 544, 515, 515, 515, 515, 459, 497, 497, 497, 515, 572, 573, 515, 515, 515, 515, 459, 497, 497, 497, 515, 528, 515, 515, 515, 515, 459, 497, 497, 497, 515, 539, 515, 515, 515, 515, 459, 497, 497, 497, 515, 574, 575, 515, 515, 515, 515, 459, 497, 497, 497, 515, 557, 515, 515, 515, 515, 459, 497, 497, 497, 515, 576, 515, 515, 515, 515, 459, 497, 497, 497, 515, 488, 515, 515, 515, 515, 459, 497, 497, 497, 515, 577, 571, 515, 515, 515, 515, 459, 497, 497, 497, 515, 539, 515, 515, 515, 515, 459, 497, 497, 497, 515, 578, 515, 515, 515, 515, 459, 497, 497, 497, 515, 579, 580, 581, 515, 515, 515, 515, 459, 497, 497, 497, 515, 557, 515, 515, 515, 515, 459, 497, 497, 497, 515, 545, 515, 515, 515, 515, 459, 497, 497, 497, 515, 565, 515, 515, 515, 515, 459, 497, 497, 497, 515, 582, 515, 515, 515, 515, 459, 497, 497, 497, 515, 539, 563, 515, 515, 515, 515, 459, 497, 497, 497, 515, 583, 515, 515, 515, 515, 459, 497, 497, 497, 515, 584, 515, 515, 515, 515, 459, 497, 497, 497, 515, 533, 515, 515, 515, 515, 459, 466, 498, 586, 586, 588, 586, 588, 587, 587, 588, 587, 587, 587, 585, 129, 589, 589, 589, 589, 589, 128, 591, 591, 594, 591, 593, 595, 596, 597, 598, 599, 600, 600, 597, 601, 602, 603, 605, 606, 592, 597, 597, 607, 600, 592, 593, 592, 604, 592, 590, 609, 610, 611, 608, 608, 608, 608, 608, 590, 613, 612, 614, 616, 617, 618, 615, 620, 619, 621, 622, 623, 612, 597, 597, 624, 625, 625, 625, 625, 596, 597, 624, 597, 624, 597, 624, 597, 626, 624, 597, 624, 628, 597, 597, 627, 597, 624, 597, 624, 629, 629, 629, 629, 629, 604, 628, 627, 630, 627, 597, 624, 632, 632, 132, 632, 633, 634, 148, 635, 636, 637, 139, 638, 141, 639, 640, 641, 139, 139, 148, 153, 154, 148, 633, 148, 139, 631, 132, 131, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 139, 145, 146, 147, 139, 148, 149, 150, 151, 152, 153, 154, 148, 131, 642, 645, 139, 139, 644, 647, 139, 148, 139, 139, 646, 647, 139, 139, 139, 646, 648, 647, 139, 650, 139, 139, 649, 647, 139, 139, 139, 646, 651, 643, 139, 643, 652, 652, 647, 652, 139, 139, 139, 644, 654, 653, 657, 656, 656, 655, 658, 659, 647, 139, 139, 148, 139, 643, 642, 642, 132, 642, 133, 660, 647, 139, 148, 139, 139, 643, 139, 653, 148, 642, 148, 642, 662, 662, 663, 662, 663, 664, 665, 663, 661, 667, 666, 668, 670, 670, 672, 670, 671, 673, 674, 675, 676, 677, 671, 669, 678, 678, 678, 678, 673, 172, 679, 680, 679, 681, 679, 682, 679, 684, 684, 686, 684, 685, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 707, 195, 685, 195, 702, 195, 195, 683, 267, 268, 269, 270, 179, 179, 179, 179, 179, 683, 728, 727, 729, 731, 732, 733, 730, 735, 734, 736, 737, 738, 727, 740, 739, 195, 195, 741, 191, 191, 192, 191, 190, 743, 743, 743, 744, 744, 742, 745, 745, 745, 194, 194, 193, 747, 195, 746, 748, 750, 195, 749, 195, 179, 195, 751, 746, 751, 195, 746, 752, 741, 195, 741, 741, 741, 741, 753, 755, 756, 757, 197, 758, 756, 759, 760, 760, 197, 761, 762, 763, 764, 765, 766, 197, 197, 767, 760, 741, 741, 741, 754, 769, 770, 771, 768, 768, 768, 768, 768, 754, 773, 772, 774, 776, 777, 778, 775, 780, 781, 779, 782, 783, 784, 785, 772, 197, 197, 768, 768, 768, 768, 768, 768, 196, 197, 197, 197, 197, 768, 199, 768, 197, 768, 197, 768, 197, 768, 197, 786, 768, 197, 768, 197, 768, 197, 768, 197, 768, 787, 788, 741, 789, 195, 741, 707, 195, 195, 741, 195, 747, 741, 791, 791, 793, 791, 792, 795, 794, 792, 794, 794, 790, 796, 796, 796, 796, 797, 798, 798, 798, 798, 798, 797, 799, 800, 802, 801, 803, 801, 801, 804, 804, 804, 804, 242, 805, 241, 806, 807, 808, 808, 808, 808, 242, 809, 241, 240, 808, 810, 811, 812, 812, 812, 812, 229, 813, 228, 808, 808, 808, 814, 221, 804, 804, 804, 229, 230, 228, 804, 804, 804, 816, 815, 817, 818, 818, 818, 818, 819, 815, 818, 818, 818, 814, 221, 820, 818, 818, 818, 818, 229, 230, 228, 806, 806, 806, 221, 821, 821, 821, 824, 823, 823, 823, 822, 821, 821, 821, 825, 821, 821, 821, 826, 821, 821, 821, 827, 821, 821, 821, 821, 828, 828, 828, 825, 821, 821, 821, 829, 829, 829, 826, 821, 821, 821, 830, 830, 830, 827, 831, 246, 246, 246, 825, 833, 833, 833, 832, 246, 246, 246, 835, 834, 834, 834, 248, 246, 246, 246, 254, 836, 836, 836, 252, 246, 246, 246, 246, 247, 247, 247, 245, 837, 246, 246, 246, 821, 247, 838, 246, 246, 246, 827, 836, 838, 838, 838, 827, 246, 246, 256, 246, 256, 258, 257, 257, 257, 245, 246, 246, 246, 837, 263, 263, 263, 245, 839, 839, 839, 839, 827, 840, 842, 842, 842, 841, 841, 267, 268, 269, 270, 179, 179, 179, 179, 179, 266, 267, 268, 269, 270, 843, 741, 741, 741, 741, 741, 266, 267, 268, 269, 270, 844, 741, 741, 741, 741, 741, 266, 845, 846, 741, 267, 268, 269, 270, 848, 847, 847, 847, 847, 683, 267, 268, 269, 270, 849, 850, 851, 847, 847, 847, 847, 847, 683, 267, 268, 269, 270, 852, 847, 847, 847, 847, 847, 683, 267, 268, 269, 270, 853, 847, 847, 847, 847, 847, 683, 267, 268, 269, 270, 854, 847, 847, 847, 847, 847, 683, 267, 268, 269, 270, 855, 847, 847, 847, 847, 847, 683, 267, 268, 269, 270, 856, 847, 847, 847, 847, 847, 683, 267, 268, 269, 270, 857, 847, 847, 847, 847, 847, 683, 267, 268, 269, 270, 858, 847, 847, 847, 847, 847, 683, 267, 268, 269, 270, 859, 847, 847, 847, 847, 683, 267, 268, 269, 270, 860, 847, 847, 847, 847, 683, 267, 268, 269, 270, 861, 847, 847, 847, 847, 847, 683, 267, 268, 269, 270, 862, 847, 847, 847, 847, 847, 683, 267, 268, 269, 270, 858, 847, 847, 847, 847, 847, 683, 267, 268, 269, 270, 863, 847, 847, 847, 847, 847, 683, 267, 268, 269, 270, 862, 847, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 864, 865, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 866, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 867, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 860, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 860, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 868, 869, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 870, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 871, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 860, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 872, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 873, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 860, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 874, 875, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 876, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 860, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 877, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 867, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 878, 860, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 860, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 879, 880, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 881, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 860, 878, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 860, 882, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 883, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 876, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 884, 718, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 874, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 860, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 885, 860, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 886, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 887, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 888, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 876, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 889, 890, 891, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 891, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 860, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 860, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 892, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 893, 894, 895, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 860, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 896, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 897, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 898, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 899, 900, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 860, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 871, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 901, 902, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 878, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 903, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 718, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 904, 905, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 871, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 876, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 906, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 907, 908, 909, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 878, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 910, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 911, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 885, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 912, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 885, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 913, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 871, 914, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 915, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 885, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 916, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 917, 847, 847, 847, 847, 683, 267, 268, 269, 270, 847, 865, 847, 847, 847, 847, 683, 918, 195, 747, 741, 920, 920, 923, 920, 922, 921, 921, 922, 921, 921, 921, 919, 276, 924, 924, 924, 924, 924, 275, 926, 926, 929, 926, 928, 930, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 944, 945, 946, 947, 948, 949, 950, 952, 953, 954, 955, 956, 934, 957, 931, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 934, 927, 927, 928, 927, 931, 934, 943, 951, 925, 977, 978, 277, 277, 277, 277, 277, 925, 980, 979, 981, 982, 928, 928, 928, 983, 986, 985, 987, 987, 985, 984, 990, 989, 989, 988, 986, 985, 985, 984, 991, 991, 991, 991, 932, 992, 992, 994, 993, 993, 993, 992, 993, 992, 993, 995, 993, 992, 992, 282, 996, 996, 996, 996, 996, 282, 993, 993, 993, 993, 996, 995, 996, 986, 985, 997, 985, 984, 986, 985, 934, 997, 985, 984, 1000, 999, 999, 998, 1001, 986, 985, 934, 997, 985, 984, 986, 985, 997, 1002, 985, 984, 1004, 1004, 1004, 1003, 1006, 280, 1005, 939, 1007, 1010, 1011, 1010, 1008, 280, 1008, 1008, 1008, 1009, 1012, 1012, 278, 277, 1013, 1008, 278, 1008, 1008, 1008, 1009, 278, 1014, 280, 1014, 1017, 1019, 1020, 1021, 1022, 1023, 1024, 1019, 1020, 1021, 1022, 1023, 1015, 1018, 1015, 1015, 1015, 1016, 1028, 1025, 1027, 1025, 1025, 1025, 1026, 1025, 1025, 1025, 1025, 1026, 1032, 1029, 1031, 1029, 1029, 1029, 1030, 1034, 1025, 1033, 1025, 1025, 1025, 1026, 1028, 1025, 1033, 1025, 1025, 1025, 1026, 1038, 1035, 1037, 1035, 1035, 1035, 1036, 1040, 1025, 1039, 1025, 1025, 1025, 1026, 1028, 1025, 1039, 1025, 1025, 1025, 1026, 1044, 1041, 1043, 1041, 1041, 1041, 1042, 1049, 1045, 1047, 1045, 1048, 1045, 1048, 1045, 1046, 1052, 1025, 1050, 1025, 1051, 1025, 1051, 1025, 1026, 1028, 1025, 1050, 1025, 1051, 1025, 1051, 1025, 1026, 1025, 1025, 1053, 1025, 1025, 1025, 1026, 1054, 1025, 1053, 1025, 1025, 1025, 1026, 1057, 1059, 1060, 1059, 1055, 1058, 1055, 1055, 1055, 1056, 1025, 1025, 1061, 1025, 1025, 1025, 1026, 1062, 1063, 1064, 1063, 1025, 1061, 1025, 1025, 1025, 1026, 1065, 1007, 986, 985, 934, 1066, 985, 984, 986, 985, 987, 985, 984, 1067, 987, 987, 1007, 986, 985, 987, 985, 984, 986, 985, 987, 934, 985, 984, 1068, 992, 992, 992, 992, 992, 282, 1069, 277, 277, 277, 277, 277, 951, 1070, 1069, 1072, 1071, 1071, 1071, 1071, 1071, 951, 1069, 1073, 1071, 1071, 1071, 1071, 1071, 951, 1069, 1074, 1071, 1071, 1071, 1071, 1071, 951, 1069, 1075, 1071, 1071, 1071, 1071, 1071, 951, 1012, 1012, 1069, 1077, 1071, 1071, 1076, 1071, 1071, 1071, 951, 1079, 1080, 1008, 1076, 1008, 1008, 1008, 1078, 1069, 1014, 1014, 1076, 1014, 1014, 1014, 951, 1069, 1075, 1071, 1071, 1071, 1071, 1071, 951, 1081, 992, 992, 1083, 992, 1082, 977, 978, 1085, 1084, 1084, 1084, 1084, 925, 977, 978, 1086, 1087, 1088, 1084, 1084, 1084, 1084, 1084, 925, 977, 978, 1089, 1084, 1084, 1084, 1084, 1084, 925, 977, 978, 1090, 1084, 1084, 1084, 1084, 1084, 925, 977, 978, 1091, 1084, 1084, 1084, 1084, 1084, 925, 977, 978, 1092, 1084, 1084, 1084, 1084, 1084, 925, 977, 978, 1093, 1084, 1084, 1084, 1084, 1084, 925, 977, 978, 1094, 1084, 1084, 1084, 1084, 1084, 925, 977, 978, 1095, 1084, 1084, 1084, 1084, 1084, 925, 977, 978, 1096, 1084, 1084, 1084, 1084, 925, 977, 978, 1097, 1084, 1084, 1084, 1084, 925, 977, 978, 1098, 1084, 1084, 1084, 1084, 1084, 925, 977, 978, 1099, 1084, 1084, 1084, 1084, 1084, 925, 977, 978, 1100, 1084, 1084, 1084, 1084, 1084, 925, 977, 978, 1101, 1084, 1084, 1084, 1084, 925, 977, 978, 1102, 1084, 1084, 1084, 1084, 925, 977, 978, 1103, 1084, 1084, 1084, 1084, 1084, 925, 977, 978, 1099, 1084, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1104, 1105, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1106, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1107, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1108, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1109, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1110, 1111, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1112, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1113, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1109, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1114, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1115, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1116, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1117, 1118, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1119, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1109, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1120, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1121, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1122, 1084, 1084, 1084, 1084, 925, 286, 285, 977, 287, 978, 1123, 1123, 285, 1123, 1123, 1123, 1123, 925, 977, 978, 1084, 1124, 1125, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1126, 1084, 1084, 1084, 1084, 925, 977, 978, 1127, 1128, 1127, 1127, 1127, 1127, 925, 977, 978, 1084, 1129, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1130, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1131, 1084, 1084, 1084, 1084, 925, 977, 1132, 1084, 1084, 1084, 1084, 1084, 925, 977, 1012, 1012, 978, 1084, 1134, 1135, 1084, 1133, 1084, 1084, 1084, 925, 1137, 1138, 1139, 1008, 1133, 1008, 1008, 1008, 1136, 977, 978, 1014, 1014, 1133, 1014, 1014, 1014, 925, 977, 978, 1084, 1140, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1109, 1141, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1109, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1102, 1142, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1143, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1119, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1144, 967, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1145, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1146, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1102, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1109, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1147, 1109, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1148, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1149, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1150, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1119, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1151, 1152, 1153, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1154, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1116, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1102, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1155, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1156, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1157, 1158, 1159, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1102, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1160, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1161, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1147, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1162, 1163, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1102, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1164, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1116, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1165, 1166, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1167, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1102, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1168, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1169, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1155, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1170, 1171, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1113, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1146, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1172, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1173, 1174, 1175, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1176, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1108, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1177, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1178, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1147, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1179, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1147, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1180, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1113, 1181, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1182, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1147, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1183, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1184, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1185, 1084, 1084, 1084, 1084, 925, 977, 978, 1084, 1155, 1084, 1084, 1084, 1084, 925, 1186, 986, 985, 997, 934, 985, 984, 1187, 1189, 1189, 1190, 1189, 1188, 290, 290, 291, 290, 1191, 1191, 1191, 1191, 1191, 292, 1192, 1192, 294, 1192, 1193, 293, 0 ] class << self attr_accessor :_lex_trans_targs private :_lex_trans_targs, :_lex_trans_targs= end self._lex_trans_targs = [ 176, 1, 176, 176, 3, 4, 5, 6, 176, 176, 8, 9, 10, 11, 12, 176, 176, 181, 184, 181, 185, 186, 15, 193, 194, 181, 197, 198, 204, 199, 200, 201, 20, 202, 203, 206, 208, 209, 210, 211, 212, 26, 19, 195, 196, 213, 28, 29, 227, 30, 225, 32, 40, 235, 226, 232, 229, 34, 33, 35, 234, 36, 37, 38, 39, 233, 236, 237, 239, 241, 239, 242, 243, 44, 250, 251, 239, 254, 255, 261, 256, 257, 258, 49, 259, 260, 263, 265, 266, 267, 268, 269, 55, 48, 252, 253, 270, 57, 58, 284, 59, 282, 61, 69, 292, 283, 289, 286, 63, 62, 64, 291, 65, 66, 67, 68, 290, 293, 294, 304, 303, 0, 305, 306, 307, 73, 308, 417, 74, 417, 443, 75, 443, 76, 445, 446, 448, 449, 447, 443, 450, 451, 453, 454, 77, 78, 455, 456, 447, 79, 80, 85, 92, 457, 458, 447, 81, 82, 83, 84, 86, 87, 90, 88, 89, 91, 93, 94, 468, 96, 97, 98, 468, 100, 103, 101, 102, 104, 106, 474, 474, 474, 109, 110, 111, 112, 113, 474, 474, 474, 114, 474, 474, 474, 488, 474, 510, 474, 511, 512, 518, 120, 123, 125, 127, 128, 129, 123, 124, 522, 124, 522, 126, 529, 530, 531, 131, 137, 142, 555, 156, 534, 535, 474, 538, 539, 545, 540, 541, 542, 135, 543, 544, 547, 549, 550, 551, 552, 553, 141, 134, 536, 537, 554, 143, 144, 568, 145, 566, 147, 155, 576, 567, 573, 570, 149, 148, 150, 575, 151, 152, 153, 154, 574, 577, 578, 157, 476, 107, 478, 483, 159, 160, 580, 671, 162, 671, 673, 698, 673, 696, 673, 684, 727, 673, 167, 167, 168, 673, 845, 169, 170, 845, 171, 848, 173, 174, 175, 848, 176, 176, 177, 177, 178, 179, 180, 176, 176, 2, 7, 181, 181, 182, 182, 183, 187, 181, 181, 13, 14, 181, 181, 188, 189, 190, 16, 22, 27, 214, 41, 181, 181, 181, 191, 192, 181, 17, 181, 181, 181, 18, 181, 181, 181, 21, 205, 207, 23, 181, 181, 24, 25, 181, 215, 219, 223, 216, 217, 218, 220, 221, 222, 181, 224, 31, 230, 231, 228, 181, 181, 181, 181, 181, 238, 239, 239, 239, 240, 244, 239, 42, 43, 239, 239, 245, 246, 247, 45, 51, 56, 271, 70, 239, 239, 239, 248, 249, 239, 46, 239, 239, 239, 47, 239, 239, 239, 50, 262, 264, 52, 239, 239, 53, 54, 239, 272, 276, 280, 273, 274, 275, 277, 278, 279, 239, 281, 60, 287, 288, 285, 239, 239, 239, 239, 239, 295, 296, 296, 297, 297, 298, 296, 296, 296, 299, 299, 299, 300, 299, 299, 299, 301, 302, 301, 71, 72, 303, 303, 303, 310, 309, 309, 309, 309, 311, 312, 309, 316, 317, 318, 319, 320, 322, 324, 325, 326, 330, 332, 333, 349, 354, 361, 366, 373, 380, 383, 384, 388, 382, 392, 400, 404, 406, 411, 413, 416, 309, 309, 309, 309, 313, 309, 314, 315, 309, 309, 309, 321, 323, 309, 327, 328, 329, 325, 331, 309, 334, 335, 344, 347, 336, 337, 338, 339, 340, 341, 342, 343, 310, 345, 346, 348, 350, 353, 351, 352, 355, 358, 356, 357, 359, 360, 362, 364, 363, 365, 367, 368, 309, 369, 370, 371, 372, 309, 374, 377, 375, 376, 378, 379, 381, 385, 386, 387, 389, 391, 390, 393, 394, 395, 397, 396, 398, 399, 401, 402, 403, 405, 407, 408, 409, 410, 412, 414, 415, 418, 417, 417, 417, 417, 420, 419, 419, 419, 419, 429, 430, 419, 431, 432, 433, 434, 436, 438, 439, 440, 441, 442, 419, 421, 423, 428, 419, 422, 419, 419, 424, 426, 427, 419, 425, 419, 419, 419, 419, 419, 435, 419, 437, 419, 419, 443, 443, 444, 459, 446, 460, 461, 450, 462, 463, 464, 443, 443, 443, 443, 443, 443, 443, 443, 447, 452, 443, 443, 443, 443, 443, 443, 443, 443, 443, 465, 465, 465, 466, 467, 465, 465, 465, 468, 468, 468, 468, 469, 470, 471, 472, 473, 468, 468, 95, 99, 105, 475, 474, 474, 484, 485, 486, 487, 489, 490, 491, 493, 494, 495, 497, 498, 521, 524, 525, 526, 580, 581, 582, 583, 584, 492, 585, 601, 606, 613, 618, 620, 626, 629, 630, 634, 628, 638, 647, 651, 654, 662, 666, 669, 670, 474, 477, 474, 474, 479, 481, 482, 474, 480, 474, 474, 474, 474, 108, 474, 474, 474, 115, 474, 474, 116, 474, 474, 492, 474, 496, 474, 499, 509, 474, 117, 513, 514, 515, 474, 516, 118, 519, 119, 121, 520, 474, 500, 502, 508, 474, 501, 474, 474, 503, 506, 507, 474, 504, 505, 474, 474, 474, 474, 517, 122, 523, 474, 474, 474, 474, 474, 527, 130, 474, 528, 474, 474, 474, 474, 532, 533, 474, 132, 474, 474, 474, 133, 474, 474, 474, 136, 546, 548, 138, 474, 474, 139, 140, 474, 556, 560, 564, 557, 558, 559, 561, 562, 563, 474, 565, 146, 571, 572, 569, 474, 474, 474, 474, 474, 579, 158, 161, 474, 474, 474, 586, 587, 596, 599, 588, 589, 590, 591, 592, 593, 594, 595, 475, 597, 598, 600, 602, 605, 603, 604, 607, 610, 608, 609, 611, 612, 614, 616, 615, 617, 619, 621, 623, 622, 624, 625, 627, 475, 631, 632, 633, 635, 637, 636, 639, 640, 641, 644, 642, 643, 475, 645, 646, 648, 649, 650, 652, 653, 655, 656, 657, 660, 658, 659, 661, 663, 664, 665, 667, 668, 474, 672, 671, 671, 671, 671, 671, 674, 673, 673, 678, 673, 679, 673, 682, 683, 687, 688, 689, 690, 691, 673, 692, 694, 701, 716, 719, 673, 720, 722, 724, 673, 725, 726, 728, 732, 736, 737, 673, 738, 756, 761, 768, 775, 782, 791, 796, 797, 801, 795, 806, 816, 822, 825, 834, 838, 842, 843, 844, 675, 677, 673, 676, 673, 673, 673, 673, 680, 680, 681, 673, 680, 680, 673, 673, 673, 685, 686, 673, 673, 673, 680, 680, 673, 693, 673, 693, 673, 695, 673, 673, 673, 697, 700, 163, 699, 673, 673, 673, 164, 702, 704, 707, 697, 710, 711, 714, 673, 673, 702, 703, 673, 673, 705, 703, 705, 706, 673, 673, 708, 703, 708, 709, 673, 673, 708, 703, 673, 673, 712, 712, 703, 712, 712, 713, 715, 714, 673, 673, 164, 716, 697, 717, 718, 164, 697, 717, 673, 721, 723, 165, 166, 673, 673, 729, 730, 731, 726, 733, 735, 726, 166, 734, 673, 673, 673, 673, 739, 740, 749, 754, 741, 742, 743, 744, 745, 746, 747, 748, 674, 750, 751, 752, 753, 674, 755, 757, 760, 758, 759, 674, 674, 762, 765, 763, 764, 766, 767, 674, 769, 771, 770, 772, 773, 774, 673, 776, 674, 777, 673, 778, 779, 780, 781, 677, 783, 785, 788, 674, 675, 677, 784, 786, 787, 789, 790, 792, 793, 794, 674, 798, 799, 800, 802, 804, 805, 803, 674, 807, 808, 809, 812, 810, 811, 813, 814, 815, 817, 819, 818, 820, 821, 823, 824, 826, 827, 829, 832, 828, 830, 831, 833, 835, 836, 837, 839, 840, 841, 673, 673, 845, 846, 847, 845, 848, 172 ] class << self attr_accessor :_lex_trans_actions private :_lex_trans_actions, :_lex_trans_actions= end self._lex_trans_actions = [ 357, 0, 343, 389, 0, 0, 0, 0, 345, 392, 0, 0, 0, 0, 0, 347, 395, 47, 0, 33, 0, 0, 0, 0, 29, 45, 0, 665, 0, 29, 0, 0, 0, 0, 665, 29, 0, 665, 0, 29, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 63, 0, 51, 0, 0, 0, 0, 29, 61, 0, 665, 0, 29, 0, 0, 0, 0, 665, 29, 0, 665, 0, 29, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 133, 0, 123, 177, 0, 371, 0, 0, 914, 0, 5, 914, 159, 914, 0, 0, 0, 0, 0, 0, 0, 686, 0, 0, 0, 0, 0, 0, 680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 263, 227, 259, 0, 0, 0, 0, 0, 233, 380, 261, 0, 231, 377, 211, 0, 235, 0, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 620, 0, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 29, 257, 0, 665, 0, 29, 0, 0, 0, 0, 665, 29, 0, 665, 0, 29, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 698, 275, 0, 265, 331, 0, 327, 0, 329, 0, 0, 325, 0, 1, 0, 277, 339, 0, 0, 333, 0, 386, 0, 0, 0, 383, 349, 351, 0, 1, 29, 29, 29, 353, 355, 0, 0, 37, 35, 0, 1, 29, 29, 41, 43, 0, 0, 31, 39, 3, 3, 3, 3, 3, 3, 3, 3, 407, 488, 434, 0, 0, 416, 0, 830, 425, 782, 0, 945, 818, 930, 0, 29, 0, 0, 806, 794, 0, 1, 470, 0, 0, 29, 0, 0, 0, 0, 0, 0, 452, 0, 0, 0, 0, 29, 479, 842, 398, 461, 443, 0, 55, 53, 359, 29, 29, 59, 0, 0, 49, 57, 3, 3, 3, 3, 3, 3, 3, 3, 410, 491, 437, 0, 0, 419, 0, 834, 428, 786, 0, 950, 822, 935, 0, 29, 0, 0, 810, 798, 0, 1, 473, 0, 0, 29, 0, 0, 0, 0, 0, 0, 455, 0, 0, 0, 0, 29, 482, 846, 401, 464, 446, 0, 67, 65, 0, 1, 0, 69, 71, 497, 75, 73, 362, 0, 77, 500, 778, 79, 0, 81, 0, 0, 85, 89, 87, 677, 105, 103, 101, 746, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 674, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 93, 115, 119, 0, 95, 0, 0, 113, 117, 99, 0, 0, 109, 0, 0, 0, 671, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 671, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 91, 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, 29, 129, 127, 125, 131, 0, 141, 139, 137, 750, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 518, 0, 533, 545, 0, 0, 0, 554, 0, 581, 572, 563, 147, 149, 0, 151, 0, 143, 754, 161, 163, 29, 29, 686, 0, 0, 686, 0, 0, 0, 175, 173, 153, 743, 179, 368, 608, 169, 683, 0, 167, 171, 155, 165, 157, 365, 596, 503, 611, 185, 187, 183, 0, 0, 189, 181, 506, 195, 197, 193, 758, 0, 0, 29, 29, 29, 199, 201, 0, 0, 0, 701, 237, 229, 910, 0, 29, 29, 689, 0, 0, 0, 0, 0, 0, 29, 29, 0, 704, 29, 704, 704, 704, 0, 0, 704, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 0, 704, 524, 0, 539, 551, 0, 0, 0, 560, 0, 587, 578, 569, 253, 0, 255, 209, 213, 0, 241, 249, 0, 614, 239, 689, 205, 0, 207, 0, 0, 215, 0, 0, 0, 0, 225, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 521, 0, 536, 548, 0, 0, 0, 557, 0, 0, 584, 590, 575, 566, 0, 0, 0, 623, 219, 223, 221, 374, 0, 0, 245, 0, 247, 413, 494, 440, 0, 0, 422, 0, 838, 431, 790, 0, 955, 826, 940, 0, 29, 0, 0, 814, 802, 0, 1, 476, 0, 0, 29, 0, 0, 0, 0, 0, 0, 458, 0, 0, 0, 0, 29, 485, 850, 404, 467, 449, 0, 0, 0, 599, 762, 251, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 698, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 695, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 692, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 509, 29, 271, 269, 267, 766, 273, 737, 297, 295, 0, 774, 0, 279, 0, 0, 0, 0, 0, 0, 0, 289, 0, 0, 29, 29, 0, 293, 0, 0, 0, 287, 29, 734, 734, 734, 0, 0, 285, 0, 0, 0, 0, 0, 737, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 740, 527, 0, 542, 530, 319, 662, 23, 656, 0, 315, 0, 1, 321, 323, 281, 0, 0, 309, 659, 858, 605, 854, 617, 23, 299, 0, 311, 0, 317, 653, 650, 922, 21, 0, 21, 305, 906, 902, 641, 17, 641, 641, 965, 641, 641, 641, 647, 644, 0, 19, 890, 886, 15, 635, 0, 19, 874, 870, 11, 629, 0, 19, 882, 878, 13, 632, 866, 862, 9, 626, 626, 0, 19, 19, 0, 19, 898, 894, 638, 668, 960, 638, 29, 19, 918, 19, 283, 0, 0, 0, 0, 593, 307, 734, 734, 734, 728, 731, 734, 922, 21, 922, 602, 291, 770, 313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 725, 0, 0, 0, 0, 728, 0, 0, 0, 0, 0, 710, 716, 0, 0, 0, 0, 0, 0, 719, 0, 0, 0, 0, 0, 29, 303, 0, 707, 0, 301, 0, 0, 0, 0, 722, 0, 0, 0, 922, 21, 926, 21, 0, 0, 0, 0, 0, 0, 0, 713, 0, 0, 0, 0, 0, 0, 0, 722, 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, 512, 515, 335, 29, 0, 337, 341, 0 ] class << self attr_accessor :_lex_to_state_actions private :_lex_to_state_actions, :_lex_to_state_actions= end self._lex_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, 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, 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, 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, 25, 0, 0, 0, 0, 25, 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, 0, 0, 0, 0, 25, 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, 0, 0, 0, 25, 0, 0, 25, 0, 25, 0, 25, 0, 0, 0, 0, 0, 25, 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, 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, 0, 25, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 25, 0, 0, 0, 0, 0, 25, 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, 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, 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, 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, 25, 0, 25, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 25 ] class << self attr_accessor :_lex_from_state_actions private :_lex_from_state_actions, :_lex_from_state_actions= end self._lex_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, 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, 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, 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, 27, 0, 0, 0, 0, 27, 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, 0, 0, 0, 0, 27, 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, 0, 0, 0, 27, 0, 0, 27, 0, 27, 0, 27, 0, 0, 0, 0, 0, 27, 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, 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, 0, 27, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 27, 0, 0, 0, 0, 0, 27, 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, 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, 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, 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, 27, 0, 27, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 27 ] class << self attr_accessor :_lex_eof_trans private :_lex_eof_trans, :_lex_eof_trans= end self._lex_eof_trans = [ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 18, 18, 18, 26, 26, 26, 26, 26, 18, 26, 26, 26, 26, 18, 18, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 18, 69, 69, 69, 69, 77, 77, 77, 77, 77, 69, 77, 77, 77, 77, 69, 69, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 69, 0, 0, 0, 128, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 180, 182, 182, 182, 182, 182, 182, 190, 190, 180, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 224, 224, 224, 224, 224, 190, 224, 224, 224, 224, 190, 190, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 190, 180, 190, 190, 190, 190, 275, 278, 280, 282, 278, 285, 285, 290, 290, 0, 0, 0, 0, 0, 0, 307, 308, 308, 308, 0, 317, 318, 322, 322, 322, 318, 331, 332, 333, 333, 333, 336, 336, 338, 339, 340, 340, 340, 342, 343, 344, 344, 340, 336, 336, 349, 350, 350, 350, 350, 350, 338, 353, 353, 353, 353, 353, 353, 353, 353, 363, 353, 353, 353, 353, 369, 353, 370, 353, 370, 353, 369, 371, 371, 372, 373, 373, 0, 380, 384, 384, 384, 380, 393, 394, 395, 395, 395, 398, 398, 400, 401, 402, 402, 402, 404, 405, 406, 406, 402, 398, 398, 411, 412, 412, 412, 412, 412, 400, 415, 415, 415, 415, 415, 415, 415, 415, 425, 415, 415, 415, 415, 431, 415, 432, 415, 432, 415, 431, 433, 433, 434, 435, 435, 0, 442, 443, 0, 449, 0, 454, 0, 457, 457, 457, 458, 459, 0, 497, 499, 500, 505, 505, 505, 499, 499, 499, 506, 499, 499, 500, 499, 499, 497, 510, 510, 510, 510, 510, 510, 500, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 549, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 499, 0, 590, 0, 609, 613, 615, 616, 620, 622, 623, 624, 613, 625, 626, 625, 625, 625, 625, 625, 628, 625, 625, 630, 628, 628, 625, 0, 643, 644, 647, 647, 649, 650, 647, 644, 644, 653, 654, 656, 659, 660, 644, 643, 661, 644, 654, 643, 643, 0, 667, 669, 0, 679, 680, 680, 680, 680, 0, 180, 728, 730, 731, 735, 737, 738, 739, 728, 740, 742, 742, 742, 746, 747, 749, 750, 180, 747, 747, 742, 742, 742, 742, 769, 773, 775, 776, 780, 783, 784, 785, 786, 773, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 742, 790, 742, 742, 742, 742, 797, 799, 800, 801, 802, 802, 802, 805, 805, 807, 808, 809, 809, 809, 811, 812, 813, 813, 809, 805, 805, 818, 819, 819, 819, 819, 819, 807, 822, 822, 822, 822, 822, 822, 822, 822, 832, 822, 822, 822, 822, 838, 822, 839, 822, 839, 822, 838, 840, 840, 841, 842, 842, 180, 742, 742, 846, 742, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 919, 742, 0, 925, 0, 278, 980, 982, 983, 984, 985, 989, 985, 992, 993, 997, 997, 997, 985, 985, 999, 1002, 985, 985, 1004, 1006, 1008, 1009, 278, 1009, 1015, 1015, 1016, 1026, 1026, 1030, 1026, 1026, 1036, 1026, 1026, 1042, 1046, 1026, 1026, 1026, 1026, 1056, 1026, 1026, 1008, 985, 985, 1008, 985, 985, 993, 278, 1071, 1072, 1072, 1072, 1072, 1072, 1009, 1015, 1072, 1082, 993, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1124, 1085, 1085, 1128, 1085, 1085, 1085, 1085, 1085, 1009, 1015, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1187, 985, 1188, 0, 1192, 1192, 0 ] class << self attr_accessor :lex_start end self.lex_start = 176; class << self attr_accessor :lex_error end self.lex_error = 0; class << self attr_accessor :lex_en_interp_words end self.lex_en_interp_words = 181; class << self attr_accessor :lex_en_interp_string end self.lex_en_interp_string = 239; class << self attr_accessor :lex_en_plain_words end self.lex_en_plain_words = 296; class << self attr_accessor :lex_en_plain_string end self.lex_en_plain_string = 299; class << self attr_accessor :lex_en_regexp_modifiers end self.lex_en_regexp_modifiers = 301; class << self attr_accessor :lex_en_expr_variable end self.lex_en_expr_variable = 303; class << self attr_accessor :lex_en_expr_fname end self.lex_en_expr_fname = 309; class << self attr_accessor :lex_en_expr_endfn end self.lex_en_expr_endfn = 417; class << self attr_accessor :lex_en_expr_dot end self.lex_en_expr_dot = 419; class << self attr_accessor :lex_en_expr_arg end self.lex_en_expr_arg = 443; class << self attr_accessor :lex_en_expr_endarg end self.lex_en_expr_endarg = 465; class << self attr_accessor :lex_en_expr_mid end self.lex_en_expr_mid = 468; class << self attr_accessor :lex_en_expr_beg end self.lex_en_expr_beg = 474; class << self attr_accessor :lex_en_expr_value end self.lex_en_expr_value = 671; class << self attr_accessor :lex_en_expr_end end self.lex_en_expr_end = 673; class << self attr_accessor :lex_en_leading_dot end self.lex_en_leading_dot = 845; class << self attr_accessor :lex_en_line_comment end self.lex_en_line_comment = 848; class << self attr_accessor :lex_en_line_begin end self.lex_en_line_begin = 176; # line 82 "lib/parser/lexer.rl" # % attr_reader :source_buffer attr_accessor :diagnostics attr_accessor :static_env attr_accessor :cond, :cmdarg attr_reader :comments def initialize(version) @version = version @static_env = nil reset end def reset(reset_state=true) # Ragel-related variables: if reset_state # Unit tests set state prior to resetting lexer. @cs = self.class.lex_en_line_begin @cond = StackState.new('cond') @cmdarg = StackState.new('cmdarg') end @p = 0 # stream position (saved manually in #advance) @ts = nil # token start @te = nil # token end @act = 0 # next action @stack = [] # state stack @top = 0 # state stack top pointer # Lexer state: @token_queue = [] @literal_stack = [] @comments = "" # collected comments @newline_s = nil # location of last encountered newline @num_base = nil # last numeric base @num_digits_s = nil # starting position of numeric digits @escape_s = nil # starting position of current sequence @escape = nil # last escaped sequence, as string # See below the section on parsing heredocs. @heredoc_e = nil @herebody_s = nil # Ruby 1.9 ->() lambdas emit a distinct token if do/{ is # encountered after a matching closing parenthesis. @paren_nest = 0 @lambda_stack = [] end def source_buffer=(source_buffer) @source_buffer = source_buffer if @source_buffer # Heredoc processing coupled with weird newline quirks # require three '\0' (EOF) chars to be appended; after # `p = @heredoc_s`, if `p` points at EOF, the FSM could # not bail out early enough and will crash. # # Patches accepted. # @source = @source_buffer.source.gsub(/\r\n/, "\n") + "\0\0\0" else @source = nil end end LEX_STATES = { :line_begin => lex_en_line_begin, :expr_dot => lex_en_expr_dot, :expr_fname => lex_en_expr_fname, :expr_value => lex_en_expr_value, :expr_beg => lex_en_expr_beg, :expr_mid => lex_en_expr_mid, :expr_arg => lex_en_expr_arg, :expr_end => lex_en_expr_end, :expr_endarg => lex_en_expr_endarg, :expr_endfn => lex_en_expr_endfn, } def state LEX_STATES.invert.fetch(@cs, @cs) end def state=(state) @cs = LEX_STATES.fetch(state) end # Return next token: [type, value]. def advance if @token_queue.any? return @token_queue.shift end # Ugly, but dependent on Ragel output. Consider refactoring it somehow. _lex_trans_keys = self.class.send :_lex_trans_keys _lex_actions = self.class.send :_lex_actions _lex_key_offsets = self.class.send :_lex_key_offsets _lex_index_offsets = self.class.send :_lex_index_offsets _lex_single_lengths = self.class.send :_lex_single_lengths _lex_range_lengths = self.class.send :_lex_range_lengths _lex_indicies = self.class.send :_lex_indicies _lex_trans_targs = self.class.send :_lex_trans_targs _lex_trans_actions = self.class.send :_lex_trans_actions _lex_to_state_actions = self.class.send :_lex_to_state_actions _lex_from_state_actions = self.class.send :_lex_from_state_actions p, pe, eof = @p, @source.length + 1, nil # line 3099 "lib/parser/lexer.rb" begin _klen, _trans, _keys, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true _trigger_goto = false if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if @cs == 0 _goto_level = _out next end end if _goto_level <= _resume _acts = _lex_from_state_actions[ @cs] _nacts = _lex_actions[_acts] _acts += 1 while _nacts > 0 _nacts -= 1 _acts += 1 case _lex_actions[_acts - 1] when 45 then # line 1 "NONE" begin @ts = p end # line 3133 "lib/parser/lexer.rb" end # from state action switch end if _trigger_goto next end _keys = _lex_key_offsets[ @cs] _trans = _lex_index_offsets[ @cs] _klen = _lex_single_lengths[ @cs] _break_match = false begin if _klen > 0 _lower = _keys _upper = _keys + _klen - 1 loop do break if _upper < _lower _mid = _lower + ( (_upper - _lower) >> 1 ) if ( @source[p].ord) < _lex_trans_keys[_mid] _upper = _mid - 1 elsif ( @source[p].ord) > _lex_trans_keys[_mid] _lower = _mid + 1 else _trans += (_mid - _keys) _break_match = true break end end # loop break if _break_match _keys += _klen _trans += _klen end _klen = _lex_range_lengths[ @cs] if _klen > 0 _lower = _keys _upper = _keys + (_klen << 1) - 2 loop do break if _upper < _lower _mid = _lower + (((_upper-_lower) >> 1) & ~1) if ( @source[p].ord) < _lex_trans_keys[_mid] _upper = _mid - 2 elsif ( @source[p].ord) > _lex_trans_keys[_mid+1] _lower = _mid + 2 else _trans += ((_mid - _keys) >> 1) _break_match = true break end end # loop break if _break_match _trans += _klen end end while false _trans = _lex_indicies[_trans] end if _goto_level <= _eof_trans @cs = _lex_trans_targs[_trans] if _lex_trans_actions[_trans] != 0 _acts = _lex_trans_actions[_trans] _nacts = _lex_actions[_acts] _acts += 1 while _nacts > 0 _nacts -= 1 _acts += 1 case _lex_actions[_acts - 1] when 0 then # line 358 "lib/parser/lexer.rl" begin # Record position of a newline for precise line and column reporting. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end when 1 then # line 486 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoints.split(/[ \t]/).each do |codepoint_str| codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 @escape = lambda do # TODO better location reporting diagnostic :error, Parser::ERRORS[:unicode_point_too_large], range(@escape_s, p) end break end @escape += codepoint.chr(Encoding::UTF_8) end end when 2 then # line 507 "lib/parser/lexer.rl" begin @escape = { 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" }.fetch(@source[p - 1].chr, @source[p - 1].chr) end when 3 then # line 515 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_escape] end end when 4 then # line 521 "lib/parser/lexer.rl" begin @escape = (@escape[0].ord & 0x9f).chr end when 5 then # line 525 "lib/parser/lexer.rl" begin @escape = (@escape[0].ord | 0x80).chr end when 6 then # line 531 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end when 7 then # line 536 "lib/parser/lexer.rl" begin @escape = "\x7f" end when 8 then # line 537 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end when 9 then # line 543 "lib/parser/lexer.rl" begin @escape = tok(@escape_s, p).to_i(8).chr end when 10 then # line 547 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr end when 11 then # line 550 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end when 12 then # line 555 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_hex_escape], range(@escape_s - 1, p + 2) end end when 13 then # line 570 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_unicode_escape], range(@escape_s - 1, p) end end when 14 then # line 584 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, Parser::ERRORS[:unterminated_unicode], range(p - 1, p) end end when 15 then # line 613 "lib/parser/lexer.rl" begin diagnostic :fatal, Parser::ERRORS[:escape_eof], range(p - 1, p) end when 16 then # line 620 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end when 17 then # line 660 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s - 1 @herebody_s = nil end end when 18 then # line 794 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) if literal literal.start_interp_brace end end when 19 then # line 802 "lib/parser/lexer.rl" begin if literal if literal.end_interp_brace_and_try_closing if version?(18, 19) emit(:tRCURLY, '}') else emit(:tSTRING_DEND, '}') end if literal.saved_herebody_s @herebody_s = literal.saved_herebody_s end p = p - 1; @cs = (stack_pop); begin p += 1 _trigger_goto = true _goto_level = _out break end end end end when 20 then # line 898 "lib/parser/lexer.rl" begin tm = p end when 21 then # line 899 "lib/parser/lexer.rl" begin tm = p - 2 end when 22 then # line 904 "lib/parser/lexer.rl" begin tm = p end when 23 then # line 905 "lib/parser/lexer.rl" begin tm = p - 2 end when 24 then # line 906 "lib/parser/lexer.rl" begin tm = p - 2 end when 25 then # line 907 "lib/parser/lexer.rl" begin tm = p - 2 end when 26 then # line 908 "lib/parser/lexer.rl" begin tm = p - 3 end when 27 then # line 913 "lib/parser/lexer.rl" begin tm = p - 2 end when 28 then # line 918 "lib/parser/lexer.rl" begin tm = p - 2 end when 29 then # line 924 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end when 30 then # line 931 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end when 31 then # line 937 "lib/parser/lexer.rl" begin @paren_nest -= 1 end when 32 then # line 1156 "lib/parser/lexer.rl" begin tm = p end when 33 then # line 1324 "lib/parser/lexer.rl" begin @heredoc_e = p end when 34 then # line 1325 "lib/parser/lexer.rl" begin new_herebody_s = p end when 35 then # line 1632 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end when 36 then # line 1634 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end when 37 then # line 1636 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end when 38 then # line 1638 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end when 39 then # line 1641 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end when 40 then # line 1643 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end when 41 then # line 1645 "lib/parser/lexer.rl" begin tm = p end when 42 then # line 1681 "lib/parser/lexer.rl" begin tm = p end when 43 then # line 1754 "lib/parser/lexer.rl" begin tm = p end when 46 then # line 1 "NONE" begin @te = p+1 end when 47 then # line 822 "lib/parser/lexer.rl" begin @te = p+1 begin literal.flush_string literal.extend_content emit(:tSTRING_DBEG, '#{') literal.saved_herebody_s = @herebody_s @herebody_s = nil literal.start_interp_brace begin @stack[ @top] = @cs @top+= 1 @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 48 then # line 770 "lib/parser/lexer.rl" begin @te = p+1 begin literal.flush_string literal.extend_content emit(:tSTRING_DVAR, nil, @ts, @ts + 1) p = @ts begin @stack[ @top] = @cs @top+= 1 @cs = 303 _trigger_goto = true _goto_level = _again break end end end when 49 then # line 725 "lib/parser/lexer.rl" begin @te = p+1 begin is_eof = eof_char? @source[p] if literal.heredoc? # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if literal.nest_and_try_closing(tok(@herebody_s, @te - 1), @herebody_s, @te - 1) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (< unknown_options.join } diagnostic :error, message end emit(:tREGEXP_OPT) @cs = 673; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 78 then # line 946 "lib/parser/lexer.rl" begin @te = p+1 begin if tok =~ /^\$([1-9][0-9]*)$/ emit(:tNTH_REF, tok(@ts + 1).to_i) elsif tok =~ /^\$([&`'+])$/ emit(:tBACK_REF) else emit(:tGVAR) end @cs = (stack_pop); begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 79 then # line 946 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tok =~ /^\$([1-9][0-9]*)$/ emit(:tNTH_REF, tok(@ts + 1).to_i) elsif tok =~ /^\$([&`'+])$/ emit(:tBACK_REF) else emit(:tGVAR) end @cs = (stack_pop); begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 80 then # line 959 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tok =~ /^@@[0-9]/ message = Parser::ERRORS[:cvar_name] % { :name => tok } diagnostic :error, message end emit(:tCVAR) @cs = (stack_pop); begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 81 then # line 970 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tok =~ /^@[0-9]/ message = Parser::ERRORS[:ivar_name] % { :name => tok } diagnostic :error, message end emit(:tIVAR) @cs = (stack_pop); begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 82 then # line 992 "lib/parser/lexer.rl" begin @act = 25; end when 83 then # line 996 "lib/parser/lexer.rl" begin @act = 26; end when 84 then # line 1000 "lib/parser/lexer.rl" begin @act = 27; end when 85 then # line 992 "lib/parser/lexer.rl" begin @te = p+1 begin emit(KEYWORDS[tok]); @cs = 417; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 86 then # line 1000 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tIDENTIFIER) @cs = 417; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 87 then # line 1004 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @stack[ @top] = @cs @top+= 1 @cs = 303 _trigger_goto = true _goto_level = _again break end end end when 88 then # line 1013 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 417; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 89 then # line 1017 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 90 then # line 1023 "lib/parser/lexer.rl" begin @te = p+1 end when 91 then # line 1024 "lib/parser/lexer.rl" begin @te = p+1 end when 92 then # line 1027 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 93 then # line 380 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 94 then # line 992 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(KEYWORDS[tok]); @cs = 417; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 95 then # line 996 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT) @cs = 417; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 96 then # line 1000 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) @cs = 417; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 97 then # line 1004 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @stack[ @top] = @cs @top+= 1 @cs = 303 _trigger_goto = true _goto_level = _again break end end end when 98 then # line 1013 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 417; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 99 then # line 1020 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 100 then # line 1027 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 101 then # line 1 "NONE" begin case @act when 25 then begin begin p = (( @te))-1; end emit(KEYWORDS[tok]); @cs = 417; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 26 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = 417; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 27 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) @cs = 417; begin p += 1 _trigger_goto = true _goto_level = _out break end end end end when 102 then # line 1039 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tLABEL, tok(@ts, @te - 1)) @cs = 673; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 103 then # line 1043 "lib/parser/lexer.rl" begin @te = p+1 end when 104 then # line 1046 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 105 then # line 380 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 106 then # line 1046 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 107 then # line 1046 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 108 then # line 1072 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 443; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 109 then # line 1076 "lib/parser/lexer.rl" begin @te = p+1 end when 110 then # line 1077 "lib/parser/lexer.rl" begin @te = p+1 end when 111 then # line 1078 "lib/parser/lexer.rl" begin @te = p+1 end when 112 then # line 1082 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 113 then # line 380 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 114 then # line 1057 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT) @cs = 443; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 115 then # line 1061 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) @cs = 443; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 116 then # line 1065 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tFID, tok(@ts, tm), @ts, tm) @cs = 443; p = tm - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 117 then # line 1072 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 443; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 118 then # line 1079 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 119 then # line 1082 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 120 then # line 1142 "lib/parser/lexer.rl" begin @act = 55; end when 121 then # line 1157 "lib/parser/lexer.rl" begin @act = 57; end when 122 then # line 1192 "lib/parser/lexer.rl" begin @act = 61; end when 123 then # line 1142 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 124 then # line 1169 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 125 then # line 1183 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 126 then # line 1192 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 127 then # line 1198 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 128 then # line 1201 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 129 then # line 380 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 130 then # line 1098 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN_ARG, '(', @te - 1, @te) @cs = 474; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 131 then # line 1104 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN2) @cs = 474; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 132 then # line 1110 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACK, '[', @te - 1, @te) @cs = 474; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 133 then # line 1116 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest p = @ts - 1 begin @cs = 673 _trigger_goto = true _goto_level = _again break end else emit(:tLCURLY, '{', @te - 1, @te) @cs = 671; begin p += 1 _trigger_goto = true _goto_level = _out break end end end end when 134 then # line 1133 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 135 then # line 1147 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :warning, Parser::ERRORS[:ambiguous_literal], range(@te - 1, @te) p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 136 then # line 1157 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin message = Parser::ERRORS[:ambiguous_prefix] % { :prefix => tok(tm, @te) } diagnostic :warning, message, range(tm, @te) p = tm - 1 begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 137 then # line 1174 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 138 then # line 1192 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 139 then # line 1201 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 140 then # line 1201 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 141 then # line 1 "NONE" begin case @act when 55 then begin begin p = (( @te))-1; end p = p - 1; p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end when 57 then begin begin p = (( @te))-1; end message = Parser::ERRORS[:ambiguous_prefix] % { :prefix => tok(tm, @te) } diagnostic :warning, message, range(tm, @te) p = tm - 1 begin @cs = 474 _trigger_goto = true _goto_level = _again break end end when 61 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end end when 142 then # line 1227 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:kDO_BLOCK) @cs = 671; end end when 143 then # line 1230 "lib/parser/lexer.rl" begin @te = p+1 end when 144 then # line 1233 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 145 then # line 380 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 146 then # line 1223 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACE_ARG) @cs = 671; end end when 147 then # line 1233 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 148 then # line 1245 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(KEYWORDS) @cs = 474; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 149 then # line 1249 "lib/parser/lexer.rl" begin @te = p+1 end when 150 then # line 1253 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 151 then # line 1256 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 152 then # line 380 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 153 then # line 1250 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 154 then # line 1256 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 155 then # line 1256 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 156 then # line 1429 "lib/parser/lexer.rl" begin @act = 91; end when 157 then # line 1435 "lib/parser/lexer.rl" begin @act = 92; end when 158 then # line 1440 "lib/parser/lexer.rl" begin @act = 93; end when 159 then # line 1469 "lib/parser/lexer.rl" begin @act = 95; end when 160 then # line 1475 "lib/parser/lexer.rl" begin @act = 96; end when 161 then # line 1513 "lib/parser/lexer.rl" begin @act = 102; end when 162 then # line 1273 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; if tok.start_with? '-' emit(:tUMINUS_NUM, '-', @ts, @ts + 1) @cs = 673; begin p += 1 _trigger_goto = true _goto_level = _out break end end end end when 163 then # line 1293 "lib/parser/lexer.rl" begin @te = p+1 begin type = delimiter = tok[0].chr p = p - 1; begin @cs = (push_literal(type, delimiter, @ts)) _trigger_goto = true _goto_level = _again break end end end when 164 then # line 1300 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok[0].chr, tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _trigger_goto = true _goto_level = _again break end end end when 165 then # line 1307 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok[0..-2], tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _trigger_goto = true _goto_level = _again break end end end when 166 then # line 1313 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :fatal, Parser::ERRORS[:string_eof], range(@ts, @ts + 1) end end when 167 then # line 1348 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok, tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _trigger_goto = true _goto_level = _again break end end end when 168 then # line 1362 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tSYMBOL, tok(@ts + 1), @ts) @cs = 673; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 169 then # line 1374 "lib/parser/lexer.rl" begin @te = p+1 begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tSTRING, value) end @cs = 673; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 170 then # line 1390 "lib/parser/lexer.rl" begin @te = p+1 begin escape = { " " => '\s', "\r" => '\r', "\n" => '\n', "\t" => '\t', "\v" => '\v', "\f" => '\f' }[tok[@ts + 1]] message = Parser::ERRORS[:invalid_escape_use] % { :escape => escape } diagnostic :warning, message, range(@ts, @ts + 1) p = @ts - 1 begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 171 then # line 1402 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :fatal, Parser::ERRORS[:incomplete_escape], range(@ts, @ts + 1) end end when 172 then # line 1429 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION_BEGIN) begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 173 then # line 1448 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; if version?(18) emit(:tIDENTIFIER, tok(@ts, @te - 2), @ts, @te - 2) p = p - 1; # continue as a symbol else emit(:tLABEL, tok(@ts, @te - 2), @ts, @te - 1) end begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 174 then # line 1491 "lib/parser/lexer.rl" begin @te = p+1 end when 175 then # line 1493 "lib/parser/lexer.rl" begin @te = p+1 end when 176 then # line 1496 "lib/parser/lexer.rl" begin @te = p+1 begin @comments << tok p = p - 1; end end when 177 then # line 1500 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 176 _trigger_goto = true _goto_level = _again break end end end when 178 then # line 1513 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 179 then # line 380 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 180 then # line 1283 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSTAR) begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 181 then # line 1307 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin type, delimiter = tok[0..-2], tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _trigger_goto = true _goto_level = _again break end end end when 182 then # line 1326 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin tok(@ts, @heredoc_e) =~ /^<<(-?)(["'`]?)(.*)\2$/ indent = !$1.empty? type = $2.empty? ? '"' : $2 delimiter = $3 @cs = (push_literal(type, delimiter, @ts, @heredoc_e, indent)); if @herebody_s.nil? @herebody_s = new_herebody_s end p = @herebody_s - 1 end end when 183 then # line 1354 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 673; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 184 then # line 1362 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1), @ts) @cs = 673; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 185 then # line 1374 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tSTRING, value) end @cs = 673; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 186 then # line 1409 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 187 then # line 1424 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION_BEGIN) begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 188 then # line 1429 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION_BEGIN) begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 189 then # line 1469 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 190 then # line 1475 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) if !version?(18) && !@static_env.nil? && @static_env.declared?(tok) @cs = 673; begin p += 1 _trigger_goto = true _goto_level = _out break end else @cs = 443; begin p += 1 _trigger_goto = true _goto_level = _out break end end end end when 191 then # line 1492 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 192 then # line 1513 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 193 then # line 1374 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tSTRING, value) end @cs = 673; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 194 then # line 1492 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end end when 195 then # line 1513 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = @ts - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 196 then # line 1 "NONE" begin case @act when 91 then begin begin p = (( @te))-1; end emit_table(PUNCTUATION_BEGIN) begin p += 1 _trigger_goto = true _goto_level = _out break end end when 92 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN) @cs = 468; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 93 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN) @cs = 671; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 95 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 673 _trigger_goto = true _goto_level = _again break end end when 96 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !version?(18) && !@static_env.nil? && @static_env.declared?(tok) @cs = 673; begin p += 1 _trigger_goto = true _goto_level = _out break end else @cs = 443; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 102 then begin begin p = (( @te))-1; end p = @ts - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end end when 197 then # line 1523 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 198 then # line 1527 "lib/parser/lexer.rl" begin @te = p+1 end when 199 then # line 1528 "lib/parser/lexer.rl" begin @te = p+1 end when 200 then # line 1531 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 201 then # line 380 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 202 then # line 1531 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 203 then # line 1531 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 474 _trigger_goto = true _goto_level = _again break end end end when 204 then # line 1550 "lib/parser/lexer.rl" begin @act = 110; end when 205 then # line 1581 "lib/parser/lexer.rl" begin @act = 111; end when 206 then # line 1591 "lib/parser/lexer.rl" begin @act = 113; end when 207 then # line 1596 "lib/parser/lexer.rl" begin @act = 114; end when 208 then # line 1600 "lib/parser/lexer.rl" begin @act = 115; end when 209 then # line 1604 "lib/parser/lexer.rl" begin @act = 116; end when 210 then # line 1615 "lib/parser/lexer.rl" begin @act = 117; end when 211 then # line 1625 "lib/parser/lexer.rl" begin @act = 118; end when 212 then # line 1646 "lib/parser/lexer.rl" begin @act = 119; end when 213 then # line 1682 "lib/parser/lexer.rl" begin @act = 120; end when 214 then # line 1720 "lib/parser/lexer.rl" begin @act = 122; end when 215 then # line 1739 "lib/parser/lexer.rl" begin @act = 126; end when 216 then # line 1743 "lib/parser/lexer.rl" begin @act = 127; end when 217 then # line 1585 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:kCLASS, 'class', @ts, @ts + 5) emit(:tLSHFT, '<<', @te - 2, @te) @cs = 671; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 218 then # line 1646 "lib/parser/lexer.rl" begin @te = p+1 begin unless (char = tok(tm, @te)).empty? diagnostic :fatal, Parser::ERRORS[:unexpected] % { :character => char }, range(tm, tm + 1) end digits = tok(@num_digits_s, tm) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_underscore], range(tm - 1, tm) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base), @ts, tm) p = tm - 1 begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 219 then # line 1682 "lib/parser/lexer.rl" begin @te = p+1 begin unless (char = tok(tm, @te)).empty? diagnostic :fatal, Parser::ERRORS[:unexpected] % { :character => char }, range(tm, tm + 1) end digits = tok(@ts, tm) if digits.start_with? '.' diagnostic :error, Parser::ERRORS[:no_dot_digit_literal] elsif digits =~ /^[eE]/ # The rule above allows to specify floats as just `e10', which is # certainly not a float. Send a patch if you can do this better. emit(:tIDENTIFIER, digits, @ts, tm) begin p += 1 _trigger_goto = true _goto_level = _out break end end emit(:tFLOAT, digits.to_f, @ts, tm) p = tm - 1 begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 220 then # line 1710 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok, tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _trigger_goto = true _goto_level = _again break end end end when 221 then # line 1728 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @stack[ @top] = @cs @top+= 1 @cs = 303 _trigger_goto = true _goto_level = _again break end end end when 222 then # line 1735 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 419; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 223 then # line 1759 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 224 then # line 1764 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tOP_ASGN, tok(@ts, @te - 1)) @cs = 474; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 225 then # line 1768 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 671; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 226 then # line 1776 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 474; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 227 then # line 1784 "lib/parser/lexer.rl" begin @te = p+1 end when 228 then # line 1786 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :error, Parser::ERRORS[:bare_backslash], range(@ts, @ts + 1) p = p - 1; end end when 229 then # line 1798 "lib/parser/lexer.rl" begin @te = p+1 begin begin @cs = 845 _trigger_goto = true _goto_level = _again break end end end when 230 then # line 1801 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 671; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 231 then # line 1805 "lib/parser/lexer.rl" begin @te = p+1 begin message = Parser::ERRORS[:unexpected] % { :character => tok.inspect } diagnostic :fatal, message end end when 232 then # line 380 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 233 then # line 1542 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION, @ts, @ts + 2) @lambda_stack.push @paren_nest begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 234 then # line 1550 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest @lambda_stack.pop if tok == '{' emit(:tLAMBEG) else # 'do' emit(:kDO_LAMBDA) end else if tok == '{' emit_table(PUNCTUATION) else # 'do' if @cond.active? emit(:kDO_COND) elsif @cmdarg.active? emit(:kDO_BLOCK) else emit(:kDO) end end end @cs = 671; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 235 then # line 1581 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS) @cs = 309; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 236 then # line 1596 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS) @cs = 671; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 237 then # line 1646 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin unless (char = tok(tm, @te)).empty? diagnostic :fatal, Parser::ERRORS[:unexpected] % { :character => char }, range(tm, tm + 1) end digits = tok(@num_digits_s, tm) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_underscore], range(tm - 1, tm) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base), @ts, tm) p = tm - 1 begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 238 then # line 1682 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin unless (char = tok(tm, @te)).empty? diagnostic :fatal, Parser::ERRORS[:unexpected] % { :character => char }, range(tm, tm + 1) end digits = tok(@ts, tm) if digits.start_with? '.' diagnostic :error, Parser::ERRORS[:no_dot_digit_literal] elsif digits =~ /^[eE]/ # The rule above allows to specify floats as just `e10', which is # certainly not a float. Send a patch if you can do this better. emit(:tIDENTIFIER, digits, @ts, tm) begin p += 1 _trigger_goto = true _goto_level = _out break end end emit(:tFLOAT, digits.to_f, @ts, tm) p = tm - 1 begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 239 then # line 1720 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT) begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 240 then # line 1724 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT, tok(@ts, tm), @ts, tm) p = tm - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 241 then # line 1728 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @stack[ @top] = @cs @top+= 1 @cs = 303 _trigger_goto = true _goto_level = _again break end end end when 242 then # line 1735 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 419; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 243 then # line 1739 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) @cs = 443; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 244 then # line 1743 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tFID, tok(@ts, tm), @ts, tm) p = tm - 1 @cs = 443; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 245 then # line 1755 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION, @ts, tm) @cs = 474; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 246 then # line 1759 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 247 then # line 1772 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 474; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 248 then # line 1776 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 474; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 249 then # line 1792 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 250 then # line 1795 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin @comments << tok(@ts, @te + 1) end end when 251 then # line 1805 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin message = Parser::ERRORS[:unexpected] % { :character => tok.inspect } diagnostic :fatal, message end end when 252 then # line 1596 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin emit_table(KEYWORDS) @cs = 671; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 253 then # line 1646 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin unless (char = tok(tm, @te)).empty? diagnostic :fatal, Parser::ERRORS[:unexpected] % { :character => char }, range(tm, tm + 1) end digits = tok(@num_digits_s, tm) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_underscore], range(tm - 1, tm) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base), @ts, tm) p = tm - 1 begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 254 then # line 1805 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin message = Parser::ERRORS[:unexpected] % { :character => tok.inspect } diagnostic :fatal, message end end when 255 then # line 1 "NONE" begin case @act when 110 then begin begin p = (( @te))-1; end if @lambda_stack.last == @paren_nest @lambda_stack.pop if tok == '{' emit(:tLAMBEG) else # 'do' emit(:kDO_LAMBDA) end else if tok == '{' emit_table(PUNCTUATION) else # 'do' if @cond.active? emit(:kDO_COND) elsif @cmdarg.active? emit(:kDO_BLOCK) else emit(:kDO) end end end @cs = 671; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 111 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 309; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 113 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 474; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 114 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 671; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 115 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 468; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 116 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) if version?(18) && tok == 'not' @cs = 474; begin p += 1 _trigger_goto = true _goto_level = _out break end else @cs = 443; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 117 then begin begin p = (( @te))-1; end if version?(18) emit(:tIDENTIFIER) else emit_table(KEYWORDS) end begin p += 1 _trigger_goto = true _goto_level = _out break end end when 118 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) begin p += 1 _trigger_goto = true _goto_level = _out break end end when 119 then begin begin p = (( @te))-1; end unless (char = tok(tm, @te)).empty? diagnostic :fatal, Parser::ERRORS[:unexpected] % { :character => char }, range(tm, tm + 1) end digits = tok(@num_digits_s, tm) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_underscore], range(tm - 1, tm) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base), @ts, tm) p = tm - 1 begin p += 1 _trigger_goto = true _goto_level = _out break end end when 120 then begin begin p = (( @te))-1; end unless (char = tok(tm, @te)).empty? diagnostic :fatal, Parser::ERRORS[:unexpected] % { :character => char }, range(tm, tm + 1) end digits = tok(@ts, tm) if digits.start_with? '.' diagnostic :error, Parser::ERRORS[:no_dot_digit_literal] elsif digits =~ /^[eE]/ # The rule above allows to specify floats as just `e10', which is # certainly not a float. Send a patch if you can do this better. emit(:tIDENTIFIER, digits, @ts, tm) begin p += 1 _trigger_goto = true _goto_level = _out break end end emit(:tFLOAT, digits.to_f, @ts, tm) p = tm - 1 begin p += 1 _trigger_goto = true _goto_level = _out break end end when 122 then begin begin p = (( @te))-1; end emit(:tCONSTANT) begin p += 1 _trigger_goto = true _goto_level = _out break end end when 126 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) @cs = 443; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 127 then begin begin p = (( @te))-1; end emit(:tFID, tok(@ts, tm), @ts, tm) p = tm - 1 @cs = 443; begin p += 1 _trigger_goto = true _goto_level = _out break end end end end when 256 then # line 1818 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 673 _trigger_goto = true _goto_level = _again break end end end when 257 then # line 1822 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tNL, nil, @newline_s, @newline_s + 1) @cs = 176; p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 258 then # line 1822 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tNL, nil, @newline_s, @newline_s + 1) @cs = 176; p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 259 then # line 1822 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin emit(:tNL, nil, @newline_s, @newline_s + 1) @cs = 176; p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 260 then # line 1832 "lib/parser/lexer.rl" begin @te = p+1 begin @comments << tok begin @cs = 176 _trigger_goto = true _goto_level = _again break end end end when 261 then # line 1836 "lib/parser/lexer.rl" begin @te = p+1 begin @comments << tok end end when 262 then # line 1839 "lib/parser/lexer.rl" begin @te = p+1 begin # TODO better location information here diagnostic :fatal, Parser::ERRORS[:embedded_document], range(p - 1, p) end end when 263 then # line 1850 "lib/parser/lexer.rl" begin @te = p+1 begin @comments << tok p = p - 1; end end when 264 then # line 1854 "lib/parser/lexer.rl" begin @te = p+1 begin @comments << tok(@ts, @te) begin @cs = 848 _trigger_goto = true _goto_level = _again break end end end when 265 then # line 1858 "lib/parser/lexer.rl" begin @te = p+1 begin p = pe - 1 end end when 266 then # line 1861 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 671 _trigger_goto = true _goto_level = _again break end end end when 267 then # line 380 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 268 then # line 1847 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 269 then # line 1861 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 671 _trigger_goto = true _goto_level = _again break end end end when 270 then # line 1861 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 671 _trigger_goto = true _goto_level = _again break end end end # line 7155 "lib/parser/lexer.rb" end # action switch end end if _trigger_goto next end end if _goto_level <= _again _acts = _lex_to_state_actions[ @cs] _nacts = _lex_actions[_acts] _acts += 1 while _nacts > 0 _nacts -= 1 _acts += 1 case _lex_actions[_acts - 1] when 44 then # line 1 "NONE" begin @ts = nil; end # line 7175 "lib/parser/lexer.rb" end # to state action switch end if _trigger_goto next end if @cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof if _lex_eof_trans[ @cs] > 0 _trans = _lex_eof_trans[ @cs] - 1; _goto_level = _eof_trans next; end end end if _goto_level <= _out break end end end # line 202 "lib/parser/lexer.rl" # % @p = p if @token_queue.any? @token_queue.shift elsif @cs == self.class.lex_error [ false, [ '$error', range(p - 1, p) ] ] else [ false, [ '$eof', range(p - 1, p) ] ] end end # Return the current collected comment block and clear the storage. def clear_comments comments = @comments @comments = "" comments end protected def eof_char?(char) [0x04, 0x1a, 0x00].include? char.ord end def version?(*versions) versions.include?(@version) end def stack_pop @top -= 1 @stack[@top] end def tok(s = @ts, e = @te) @source[s...e] end def range(s = @ts, e = @te) Parser::Source::Range.new(@source_buffer, s, e) end def emit(type, value = tok, s = @ts, e = @te) @token_queue << [ type, [ value, range(s, e) ] ] end def emit_table(table, s = @ts, e = @te) value = tok(s, e) emit(table[value], value, s, e) end def diagnostic(type, message, location=range, highlights=[]) @diagnostics.process( Parser::Diagnostic.new(type, message, location, highlights)) end # # === LITERAL STACK === # def push_literal(*args) new_literal = Literal.new(self, *args) @literal_stack.push(new_literal) if new_literal.words? if new_literal.interpolate? self.class.lex_en_interp_words else self.class.lex_en_plain_words end else if new_literal.interpolate? self.class.lex_en_interp_string else self.class.lex_en_plain_string end end end def literal @literal_stack.last end def pop_literal old_literal = @literal_stack.pop if old_literal.type == :tREGEXP_BEG # Fetch modifiers. self.class.lex_en_regexp_modifiers else self.class.lex_en_expr_end end end # Mapping of strings to parser tokens. PUNCTUATION = { '=' => :tEQL, '&' => :tAMPER2, '|' => :tPIPE, '!' => :tBANG, '^' => :tCARET, '+' => :tPLUS, '-' => :tMINUS, '*' => :tSTAR2, '/' => :tDIVIDE, '%' => :tPERCENT, '~' => :tTILDE, ',' => :tCOMMA, ';' => :tSEMI, '.' => :tDOT, '..' => :tDOT2, '...' => :tDOT3, '[' => :tLBRACK2, ']' => :tRBRACK, '(' => :tLPAREN2, ')' => :tRPAREN, '?' => :tEH, ':' => :tCOLON, '&&' => :tANDOP, '||' => :tOROP, '-@' => :tUMINUS, '+@' => :tUPLUS, '~@' => :tTILDE, '**' => :tPOW, '->' => :tLAMBDA, '=~' => :tMATCH, '!~' => :tNMATCH, '==' => :tEQ, '!=' => :tNEQ, '>' => :tGT, '>>' => :tRSHFT, '>=' => :tGEQ, '<' => :tLT, '<<' => :tLSHFT, '<=' => :tLEQ, '=>' => :tASSOC, '::' => :tCOLON2, '===' => :tEQQ, '<=>' => :tCMP, '[]' => :tAREF, '[]=' => :tASET, '{' => :tLCURLY, '}' => :tRCURLY, '`' => :tBACK_REF2, } PUNCTUATION_BEGIN = { '&' => :tAMPER, '*' => :tSTAR, '**' => :tDSTAR, '+' => :tUPLUS, '-' => :tUMINUS, '::' => :tCOLON3, '(' => :tLPAREN, '{' => :tLBRACE, '[' => :tLBRACK, } KEYWORDS = { 'if' => :kIF_MOD, 'unless' => :kUNLESS_MOD, 'while' => :kWHILE_MOD, 'until' => :kUNTIL_MOD, 'rescue' => :kRESCUE_MOD, 'defined?' => :kDEFINED, 'BEGIN' => :klBEGIN, 'END' => :klEND, } %w(class module def undef begin end then elsif else ensure case when for break next redo retry in do return yield super self nil true false and or not alias __FILE__ __LINE__ __ENCODING__).each do |keyword| KEYWORDS[keyword] = :"k#{keyword.upcase}" end KEYWORDS_BEGIN = { 'if' => :kIF, 'unless' => :kUNLESS, 'while' => :kWHILE, 'until' => :kUNTIL, 'rescue' => :kRESCUE } # line 1866 "lib/parser/lexer.rl" # % end