All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gherkin.lexer.Uk Maven / Gradle / Ivy

The newest version!

// line 1 "ragel/i18n/uk.java.rl"
package gherkin.lexer;

import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.ArrayList;
import java.util.regex.Pattern;
import gherkin.lexer.Lexer;
import gherkin.lexer.Listener;
import gherkin.lexer.LexingError;

public class Uk implements Lexer {
  
// line 150 "ragel/i18n/uk.java.rl"


  private final Listener listener;

  public Uk(Listener listener) {
    this.listener = listener;
  }

  
// line 26 "java/src/main/java/gherkin/lexer/Uk.java"
private static byte[] init__lexer_actions_0()
{
	return new byte [] {
	    0,    1,    0,    1,    1,    1,    2,    1,    3,    1,    4,    1,
	    5,    1,    6,    1,    7,    1,    8,    1,    9,    1,   10,    1,
	   11,    1,   12,    1,   13,    1,   16,    1,   17,    1,   18,    1,
	   19,    1,   20,    1,   21,    1,   22,    1,   23,    2,    2,   18,
	    2,    3,    4,    2,   13,    0,    2,   14,   15,    2,   17,    0,
	    2,   17,    1,    2,   17,   16,    2,   17,   19,    2,   18,    6,
	    2,   18,    7,    2,   18,    8,    2,   18,    9,    2,   18,   10,
	    2,   18,   16,    2,   20,   21,    2,   22,    0,    2,   22,    1,
	    2,   22,   16,    2,   22,   19,    3,    4,   14,   15,    3,    5,
	   14,   15,    3,   11,   14,   15,    3,   12,   14,   15,    3,   13,
	   14,   15,    3,   14,   15,   18,    3,   17,    0,   11,    3,   17,
	   14,   15,    4,    2,   14,   15,   18,    4,    3,    4,   14,   15,
	    4,   17,    0,   14,   15,    5,   17,    0,   11,   14,   15
	};
}

private static final byte _lexer_actions[] = init__lexer_actions_0();


private static short[] init__lexer_key_offsets_0()
{
	return new short [] {
	    0,    0,   12,   22,   23,   25,   27,   38,   39,   40,   42,   44,
	   49,   54,   59,   64,   68,   72,   74,   75,   76,   77,   78,   79,
	   80,   81,   82,   83,   84,   85,   86,   87,   88,   89,   94,  101,
	  106,  110,  116,  119,  121,  127,  138,  140,  141,  142,  143,  144,
	  145,  146,  147,  148,  149,  150,  151,  152,  153,  154,  155,  156,
	  157,  158,  159,  160,  161,  162,  163,  164,  165,  166,  167,  168,
	  169,  170,  171,  172,  173,  175,  176,  177,  178,  179,  180,  181,
	  182,  183,  184,  185,  186,  187,  188,  189,  190,  191,  192,  193,
	  194,  195,  204,  215,  217,  228,  231,  233,  235,  237,  239,  241,
	  243,  245,  247,  249,  251,  253,  255,  257,  259,  261,  263,  265,
	  267,  269,  271,  273,  275,  277,  279,  281,  283,  285,  287,  289,
	  291,  293,  295,  297,  299,  301,  303,  305,  307,  309,  311,  313,
	  315,  317,  319,  321,  323,  325,  327,  329,  331,  333,  336,  338,
	  340,  342,  344,  347,  349,  351,  353,  355,  357,  359,  361,  363,
	  365,  367,  369,  371,  373,  375,  377,  379,  381,  383,  385,  387,
	  389,  391,  393,  395,  397,  399,  401,  403,  405,  407,  409,  411,
	  413,  415,  417,  419,  421,  423,  425,  427,  429,  431,  433,  435,
	  437,  440,  443,  445,  447,  449,  451,  453,  455,  457,  459,  461,
	  463,  465,  467,  469,  471,  473,  475,  477,  479,  481,  483,  485,
	  487,  489,  491,  493,  495,  497,  499,  501,  503,  505,  507,  509,
	  511,  513,  515,  517,  518,  519,  520,  521,  523,  524,  525,  526,
	  527,  528,  529,  530,  531,  532,  533,  534,  541,  543,  545,  547,
	  549,  551,  553,  555,  557,  559,  561,  563,  565,  567,  569,  571,
	  573,  575,  577,  579,  581,  582,  583,  584,  585,  586,  587,  588,
	  589,  590,  591,  592,  593,  595,  596,  597,  598,  599,  601,  602,
	  603,  604,  605,  606,  607,  608,  609,  610,  611,  612,  613,  614,
	  615,  616,  617,  618,  619,  620,  621,  622,  623,  624,  625,  626,
	  627,  628,  629,  630,  631,  632,  633,  634,  635,  644,  655,  657,
	  660,  662,  664,  666,  668,  670,  672,  674,  676,  678,  680,  682,
	  684,  686,  688,  690,  692,  694,  696,  698,  700,  702,  704,  706,
	  708,  710,  712,  714,  716,  718,  720,  722,  724,  726,  728,  730,
	  732,  734,  736,  738,  740,  742,  744,  746,  748,  750,  752,  754,
	  756,  758,  760,  762,  765,  767,  769,  771,  773,  775,  777,  779,
	  781,  783,  785,  787,  789,  791,  793,  795,  797,  799,  801,  803,
	  806,  809,  811,  813,  815,  817,  819,  821,  823,  825,  827,  829,
	  831,  833,  835,  837,  839,  841,  843,  845,  847,  849,  851,  853,
	  855,  857,  859,  861,  863,  865,  867,  869,  871,  873,  875,  877,
	  879,  881,  883,  884,  885,  886,  887,  888,  889,  890,  891,  892,
	  893,  894,  895,  896,  897,  898,  907,  918,  920,  923,  925,  927,
	  929,  931,  933,  935,  937,  939,  941,  943,  945,  947,  949,  951,
	  953,  955,  957,  959,  961,  963,  965,  967,  969,  971,  973,  975,
	  977,  979,  981,  983,  985,  987,  989,  992,  994,  996,  998, 1000,
	 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020, 1022, 1024,
	 1026, 1028, 1030, 1032, 1034, 1036, 1038, 1040, 1042, 1044, 1046, 1048,
	 1050, 1052, 1054, 1056, 1058, 1060, 1062, 1065, 1067, 1069, 1071, 1073,
	 1076, 1078, 1080, 1082, 1084, 1086, 1088, 1090, 1092, 1094, 1096, 1098,
	 1100, 1102, 1104, 1106, 1108, 1110, 1112, 1114, 1116, 1118, 1120, 1122,
	 1124, 1126, 1128, 1130, 1132, 1134, 1136, 1138, 1140, 1142, 1144, 1146,
	 1148, 1150, 1152, 1154, 1156, 1158, 1160, 1162, 1164, 1167, 1170, 1172,
	 1174, 1176, 1178, 1180, 1182, 1184, 1186, 1188, 1190, 1192, 1194, 1196,
	 1198, 1200, 1202, 1204, 1206, 1208, 1210, 1212, 1214, 1216, 1218, 1220,
	 1222, 1224, 1226, 1228, 1230, 1232, 1234, 1236, 1238, 1240, 1242, 1244,
	 1245, 1247, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258,
	 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270,
	 1271, 1272, 1273, 1281, 1285, 1288, 1290, 1292, 1294, 1296, 1298, 1300,
	 1302, 1304, 1306, 1308, 1310, 1312, 1314, 1316, 1318, 1320, 1322, 1324,
	 1326, 1328, 1330, 1332, 1334, 1336, 1338, 1340, 1342, 1344, 1346, 1348,
	 1350, 1352, 1355, 1357, 1359, 1361, 1363, 1365, 1367, 1369, 1371, 1373,
	 1375, 1377, 1379, 1381, 1383, 1385, 1387, 1389, 1391, 1393, 1395, 1397,
	 1399, 1401, 1403, 1405, 1407, 1409, 1411, 1413, 1415, 1417, 1419, 1421,
	 1423, 1425, 1427, 1429, 1431, 1433, 1435, 1437, 1439, 1441, 1443, 1445,
	 1447, 1449, 1451, 1453, 1455, 1457, 1459, 1461, 1463, 1465, 1467, 1469,
	 1471, 1473, 1475, 1477, 1479, 1481, 1483, 1485, 1487, 1489, 1491, 1493,
	 1495, 1497, 1499, 1501, 1503, 1505, 1506, 1507, 1508, 1509
	};
}

private static final short _lexer_key_offsets[] = init__lexer_key_offsets_0();


private static byte[] init__lexer_trans_keys_0()
{
	return new byte [] {
	  -48,  -17,   10,   32,   34,   35,   37,   42,   64,  124,    9,   13,
	 -122, -112, -108, -102,  -99,  -97,  -95,  -94,  -92,  -81,   32,   10,
	   13,   10,   13,  -48,   10,   32,   34,   35,   37,   42,   64,  124,
	    9,   13,   34,   34,   10,   13,   10,   13,   10,   32,   34,    9,
	   13,   10,   32,   34,    9,   13,   10,   32,   34,    9,   13,   10,
	   32,   34,    9,   13,   10,   32,    9,   13,   10,   32,    9,   13,
	   10,   13,   10,   95,   70,   69,   65,   84,   85,   82,   69,   95,
	   69,   78,   68,   95,   37,   13,   32,   64,    9,   10,    9,   10,
	   13,   32,   64,   11,   12,   10,   32,   64,    9,   13,   32,  124,
	    9,   13,   10,   32,   92,  124,    9,   13,   10,   92,  124,   10,
	   92,   10,   32,   92,  124,    9,   13,  -48,   10,   32,   34,   35,
	   37,   42,   64,  124,    9,   13,  -48,   32,  -69,  -48,  -75,  -47,
	 -126,  -48,  -80,  -48,  -70,  -48,  -66,  -48,  -74,  -48,  -80,  -48,
	  -67,  -48,  -66,  -48,  -66,  -48,  -69,  -48,  -72,  -48,  -75,  -47,
	 -123,  -48,  -80,  -48,  -71,  -48,  -47,  -75,  -47, -128,  -48,  -75,
	  -48,  -76,  -47, -125,  -48,  -68,  -48,  -66,  -48,  -78,  -48,  -80,
	   58,   10,   10,  -48,   10,   32,   35,   37,   42,   64,    9,   13,
	 -122, -112, -108, -102,  -99,  -97,  -95,  -94,  -92,  -81,   10,   10,
	   32,  -48,   10,   32,   34,   35,   37,   42,   64,  124,    9,   13,
	  -48,   10,   32,  -69,   10,  -48,   10,  -75,   10,  -47,   10, -126,
	   10,  -48,   10,  -80,   10,  -48,   10,  -70,   10,  -48,   10,  -66,
	   10,  -48,   10,  -74,   10,  -48,   10,  -80,   10,  -48,   10,  -67,
	   10,  -48,   10,  -66,   10,  -48,   10,  -66,   10,  -48,   10,  -69,
	   10,  -48,   10,  -72,   10,  -48,   10,  -75,   10,  -47,   10, -123,
	   10,  -48,   10,  -80,   10,  -48,   10,  -71,   10,  -47,   10, -128,
	   10,  -48,   10,  -72,   10,  -48,   10,  -65,   10,  -47,   10, -125,
	   10,  -47,   10, -127,   10,  -47,   10, -126,   10,  -48,   10,  -72,
	   10,  -48,   10,  -68,   10,  -48,   10,  -66,   10,   10,   32,   44,
	   10,   32,  -47,   10, -119,   10,  -47,   10, -126, -122,   10,  -47,
	   10, -128,   10,  -47,   10, -125,   10,  -48,   10,  -70,   10,  -47,
	   10, -126,   10,  -47,   10, -125,   10,  -47,   10, -128,   10,  -48,
	   10,  -80,   10,   10,   32,  -47,   10, -127,   10,  -47,   10, -122,
	   10,  -48,   10,  -75,   10,  -48,   10,  -67,   10,  -48,   10,  -80,
	   10,  -47,   10, -128,   10,  -47,   10, -106,   10,  -47,   10, -114,
	   10,   10,   58,  -48,   10,  -75,   10,  -48,   10,  -67,   10,  -48,
	   10,  -80,   10,  -47,   10, -128,   10,  -47,   10, -106,   10,  -48,
	   10,  -71,   10,  -48,   10,  -80,  -66,   10,  -48,   10,   32,  -76,
	   10,  -47,   10, -106,   10,  -47,   10, -125,   10,  -48,   10,  -67,
	   10,  -48,   10,  -70,   10,  -47,   10, -122,   10,  -47,   10, -106,
	   10,  -48,   10,  -66,   10,  -48,   10,  -67,   10,  -48,   10,  -80,
	   10,  -48,   10,  -69,   10,  -48,   10,  -70,   10,   10,   95,   10,
	   70,   10,   69,   10,   65,   10,   84,   10,   85,   10,   82,   10,
	   69,   10,   95,   10,   69,   10,   78,   10,   68,   10,   95,   10,
	   37, -128,  -48,  -72,  -48,  -70,  -65,  -48,  -69,  -48,  -80,  -48,
	  -76,  -48,  -72,   58,   10,   10,  -48,   10,   32,   35,  124,    9,
	   13,  -92,   10,  -47,   10, -125,   10,  -48,   10,  -67,   10,  -48,
	   10,  -70,   10,  -47,   10, -122,   10,  -47,   10, -106,   10,  -48,
	   10,  -66,   10,  -48,   10,  -67,   10,  -48,   10,  -80,   10,  -48,
	   10,  -69,   10,   10,   58,  -47, -125,  -47, -127,  -47, -126,  -48,
	  -72,  -48,  -68,  -48,  -66,   32,   44,   32,  -47, -119,  -47, -126,
	 -122,  -47, -128,  -47, -125,  -48,  -70,  -47, -126,  -47, -125,  -47,
	 -128,  -48,  -80,   32,  -47, -127,  -47, -122,  -48,  -75,  -48,  -67,
	  -48,  -80,  -47, -128,  -47, -106,  -47, -114,   58,   10,   10,  -48,
	   10,   32,   35,   37,   42,   64,    9,   13, -122, -112, -108, -102,
	  -99,  -97,  -95,  -94,  -92,  -81,   10,   10,   32,  -48,   10,   32,
	  -69,   10,  -48,   10,  -75,   10,  -47,   10, -126,   10,  -48,   10,
	  -80,   10,  -48,   10,  -70,   10,  -48,   10,  -66,   10,  -48,   10,
	  -74,   10,  -48,   10,  -80,   10,  -48,   10,  -67,   10,  -48,   10,
	  -66,   10,  -48,   10,  -66,   10,  -48,   10,  -69,   10,  -48,   10,
	  -72,   10,  -48,   10,  -75,   10,  -47,   10, -123,   10,  -48,   10,
	  -80,   10,  -48,   10,  -71,   10,  -47,   10, -128,   10,  -48,   10,
	  -72,   10,  -48,   10,  -65,   10,  -47,   10, -125,   10,  -47,   10,
	 -127,   10,  -47,   10, -126,   10,  -48,   10,  -72,   10,  -48,   10,
	  -68,   10,  -48,   10,  -66,   10,   10,   32,   44,   10,   32,  -47,
	   10, -119,   10,  -47,   10, -122,   10,  -48,   10,  -75,   10,  -48,
	   10,  -67,   10,  -48,   10,  -80,   10,  -47,   10, -128,   10,  -47,
	   10, -106,   10,  -48,   10,  -71,   10,   10,   58,  -48,   10,  -80,
	  -66,   10,  -48,   10,   32,  -76,   10,  -47,   10, -106,   10,  -47,
	   10, -125,   10,  -48,   10,  -67,   10,  -48,   10,  -70,   10,  -47,
	   10, -122,   10,  -47,   10, -106,   10,  -48,   10,  -66,   10,  -48,
	   10,  -67,   10,  -48,   10,  -80,   10,  -48,   10,  -69,   10,  -48,
	   10,  -70,   10,   10,   95,   10,   70,   10,   69,   10,   65,   10,
	   84,   10,   85,   10,   82,   10,   69,   10,   95,   10,   69,   10,
	   78,   10,   68,   10,   95,   10,   37,  -48,  -75,  -48,  -67,  -48,
	  -80,  -47, -128,  -47, -106,  -48,  -71,   58,   10,   10,  -48,   10,
	   32,   35,   37,   42,   64,    9,   13, -122, -112, -108, -102,  -99,
	  -97,  -95,  -94,  -92,  -81,   10,   10,   32,  -48,   10,   32,  -69,
	   10,  -48,   10,  -75,   10,  -47,   10, -126,   10,  -48,   10,  -80,
	   10,  -48,   10,  -70,   10,  -48,   10,  -66,   10,  -48,   10,  -74,
	   10,  -48,   10,  -80,   10,  -48,   10,  -67,   10,  -48,   10,  -66,
	   10,  -48,   10,  -66,   10,  -48,   10,  -69,   10,  -48,   10,  -72,
	   10,  -48,   10,  -75,   10,  -47,   10, -123,   10,  -48,   10,  -80,
	   10,  -48,   10,  -71,   10,  -48,  -47,   10,  -75,   10,  -47,   10,
	 -128,   10,  -48,   10,  -75,   10,  -48,   10,  -76,   10,  -47,   10,
	 -125,   10,  -48,   10,  -68,   10,  -48,   10,  -66,   10,  -48,   10,
	  -78,   10,  -48,   10,  -80,   10,   10,   58, -128,   10,  -48,   10,
	  -72,   10,  -48,   10,  -65,   10,  -47,   10, -125,   10,  -47,   10,
	 -127,   10,  -47,   10, -126,   10,  -48,   10,  -72,   10,  -48,   10,
	  -68,   10,  -48,   10,  -66,   10,   10,   32,   44,   10,   32,  -47,
	   10, -119,   10,  -47,   10, -126, -122,   10,  -47,   10, -128,   10,
	  -47,   10, -125,   10,  -48,   10,  -70,   10,  -47,   10, -126,   10,
	  -47,   10, -125,   10,  -47,   10, -128,   10,  -48,   10,  -80,   10,
	   10,   32,  -47,   10, -127,   10,  -47,   10, -122,   10,  -48,   10,
	  -75,   10,  -48,   10,  -67,   10,  -48,   10,  -80,   10,  -47,   10,
	 -128,   10,  -47,   10, -106,   10,  -47,   10, -114,   10,  -48,   10,
	  -75,   10,  -48,   10,  -67,   10,  -48,   10,  -80,   10,  -47,   10,
	 -128,   10,  -47,   10, -106,   10,  -48,   10,  -71,   10,  -48,   10,
	  -80,  -66,   10,  -48,   10,   32,  -76,   10,  -47,   10, -106,   10,
	  -47,   10, -125,   10,  -48,   10,  -67,   10,  -48,   10,  -70,   10,
	  -47,   10, -122,   10,  -47,   10, -106,   10,  -48,   10,  -66,   10,
	  -48,   10,  -67,   10,  -48,   10,  -80,   10,  -48,   10,  -69,   10,
	  -48,   10,  -70,   10,   10,   95,   10,   70,   10,   69,   10,   65,
	   10,   84,   10,   85,   10,   82,   10,   69,   10,   95,   10,   69,
	   10,   78,   10,   68,   10,   95,   10,   37,  -48,  -80,  -66,  -48,
	   32,  -76,  -47, -106,  -47, -125,  -48,  -67,  -48,  -70,  -47, -122,
	  -47, -106,  -48,  -66,  -48,  -67,  -48,  -80,  -48,  -69,   58,   10,
	   10,  -48,   10,   32,   35,   37,   64,    9,   13,  -97,  -95,  -92,
	   10,  -48,  -47,   10,  -75,   10,  -47,   10, -128,   10,  -48,   10,
	  -75,   10,  -48,   10,  -76,   10,  -47,   10, -125,   10,  -48,   10,
	  -68,   10,  -48,   10,  -66,   10,  -48,   10,  -78,   10,  -48,   10,
	  -80,   10,   10,   58, -128,   10,  -48,   10,  -72,   10,  -48,   10,
	  -70,   10,  -48,   10,  -69,   10,  -48,   10,  -80,   10,  -48,   10,
	  -76,   10,  -48,   10,  -72,   10,  -47,   10, -126, -122,   10,  -47,
	   10, -128,   10,  -47,   10, -125,   10,  -48,   10,  -70,   10,  -47,
	   10, -126,   10,  -47,   10, -125,   10,  -47,   10, -128,   10,  -48,
	   10,  -80,   10,   10,   32,  -47,   10, -127,   10,  -47,   10, -122,
	   10,  -48,   10,  -75,   10,  -48,   10,  -67,   10,  -48,   10,  -80,
	   10,  -47,   10, -128,   10,  -47,   10, -106,   10,  -47,   10, -114,
	   10,  -48,   10,  -75,   10,  -48,   10,  -67,   10,  -48,   10,  -80,
	   10,  -47,   10, -128,   10,  -47,   10, -106,   10,  -48,   10,  -71,
	   10,  -47,   10, -125,   10,  -48,   10,  -67,   10,  -48,   10,  -70,
	   10,  -47,   10, -122,   10,  -47,   10, -106,   10,  -48,   10,  -66,
	   10,  -48,   10,  -67,   10,  -48,   10,  -80,   10,  -48,   10,  -69,
	   10,   10,   95,   10,   70,   10,   69,   10,   65,   10,   84,   10,
	   85,   10,   82,   10,   69,   10,   95,   10,   69,   10,   78,   10,
	   68,   10,   95,   10,   37,  -48,  -70,  -69,  -65,    0
	};
}

private static final byte _lexer_trans_keys[] = init__lexer_trans_keys_0();


private static byte[] init__lexer_single_lengths_0()
{
	return new byte [] {
	    0,   10,   10,    1,    2,    2,    9,    1,    1,    2,    2,    3,
	    3,    3,    3,    2,    2,    2,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    3,    5,    3,
	    2,    4,    3,    2,    4,    9,    2,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    7,   11,    2,    9,    3,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    3,    2,    2,
	    2,    2,    3,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    3,    3,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    1,    1,    1,    1,    2,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    5,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    2,    1,    1,    1,    1,    2,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    7,   11,    2,    3,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    3,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    3,
	    3,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    7,   11,    2,    3,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    3,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    3,    2,    2,    2,    2,    3,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    3,    3,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    1,
	    2,    2,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    6,    4,    3,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    3,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    1,    1,    1,    1,    0
	};
}

private static final byte _lexer_single_lengths[] = init__lexer_single_lengths_0();


private static byte[] init__lexer_range_lengths_0()
{
	return new byte [] {
	    0,    1,    0,    0,    0,    0,    1,    0,    0,    0,    0,    1,
	    1,    1,    1,    1,    1,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    1,    1,    1,
	    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,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    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,    0,    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,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    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,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    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,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    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,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    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,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
	};
}

private static final byte _lexer_range_lengths[] = init__lexer_range_lengths_0();


private static short[] init__lexer_index_offsets_0()
{
	return new short [] {
	    0,    0,   12,   23,   25,   28,   31,   42,   44,   46,   49,   52,
	   57,   62,   67,   72,   76,   80,   83,   85,   87,   89,   91,   93,
	   95,   97,   99,  101,  103,  105,  107,  109,  111,  113,  118,  125,
	  130,  134,  140,  144,  147,  153,  164,  167,  169,  171,  173,  175,
	  177,  179,  181,  183,  185,  187,  189,  191,  193,  195,  197,  199,
	  201,  203,  205,  207,  209,  211,  213,  215,  217,  219,  221,  223,
	  225,  227,  229,  231,  233,  236,  238,  240,  242,  244,  246,  248,
	  250,  252,  254,  256,  258,  260,  262,  264,  266,  268,  270,  272,
	  274,  276,  285,  297,  300,  311,  315,  318,  321,  324,  327,  330,
	  333,  336,  339,  342,  345,  348,  351,  354,  357,  360,  363,  366,
	  369,  372,  375,  378,  381,  384,  387,  390,  393,  396,  399,  402,
	  405,  408,  411,  414,  417,  420,  423,  426,  429,  432,  435,  438,
	  441,  444,  447,  450,  453,  456,  459,  462,  465,  468,  472,  475,
	  478,  481,  484,  488,  491,  494,  497,  500,  503,  506,  509,  512,
	  515,  518,  521,  524,  527,  530,  533,  536,  539,  542,  545,  548,
	  551,  554,  557,  560,  563,  566,  569,  572,  575,  578,  581,  584,
	  587,  590,  593,  596,  599,  602,  605,  608,  611,  614,  617,  620,
	  623,  627,  631,  634,  637,  640,  643,  646,  649,  652,  655,  658,
	  661,  664,  667,  670,  673,  676,  679,  682,  685,  688,  691,  694,
	  697,  700,  703,  706,  709,  712,  715,  718,  721,  724,  727,  730,
	  733,  736,  739,  742,  744,  746,  748,  750,  753,  755,  757,  759,
	  761,  763,  765,  767,  769,  771,  773,  775,  782,  785,  788,  791,
	  794,  797,  800,  803,  806,  809,  812,  815,  818,  821,  824,  827,
	  830,  833,  836,  839,  842,  844,  846,  848,  850,  852,  854,  856,
	  858,  860,  862,  864,  866,  869,  871,  873,  875,  877,  880,  882,
	  884,  886,  888,  890,  892,  894,  896,  898,  900,  902,  904,  906,
	  908,  910,  912,  914,  916,  918,  920,  922,  924,  926,  928,  930,
	  932,  934,  936,  938,  940,  942,  944,  946,  948,  957,  969,  972,
	  976,  979,  982,  985,  988,  991,  994,  997, 1000, 1003, 1006, 1009,
	 1012, 1015, 1018, 1021, 1024, 1027, 1030, 1033, 1036, 1039, 1042, 1045,
	 1048, 1051, 1054, 1057, 1060, 1063, 1066, 1069, 1072, 1075, 1078, 1081,
	 1084, 1087, 1090, 1093, 1096, 1099, 1102, 1105, 1108, 1111, 1114, 1117,
	 1120, 1123, 1126, 1129, 1133, 1136, 1139, 1142, 1145, 1148, 1151, 1154,
	 1157, 1160, 1163, 1166, 1169, 1172, 1175, 1178, 1181, 1184, 1187, 1190,
	 1194, 1198, 1201, 1204, 1207, 1210, 1213, 1216, 1219, 1222, 1225, 1228,
	 1231, 1234, 1237, 1240, 1243, 1246, 1249, 1252, 1255, 1258, 1261, 1264,
	 1267, 1270, 1273, 1276, 1279, 1282, 1285, 1288, 1291, 1294, 1297, 1300,
	 1303, 1306, 1309, 1311, 1313, 1315, 1317, 1319, 1321, 1323, 1325, 1327,
	 1329, 1331, 1333, 1335, 1337, 1339, 1348, 1360, 1363, 1367, 1370, 1373,
	 1376, 1379, 1382, 1385, 1388, 1391, 1394, 1397, 1400, 1403, 1406, 1409,
	 1412, 1415, 1418, 1421, 1424, 1427, 1430, 1433, 1436, 1439, 1442, 1445,
	 1448, 1451, 1454, 1457, 1460, 1463, 1466, 1470, 1473, 1476, 1479, 1482,
	 1485, 1488, 1491, 1494, 1497, 1500, 1503, 1506, 1509, 1512, 1515, 1518,
	 1521, 1524, 1527, 1530, 1533, 1536, 1539, 1542, 1545, 1548, 1551, 1554,
	 1557, 1560, 1563, 1566, 1569, 1572, 1575, 1579, 1582, 1585, 1588, 1591,
	 1595, 1598, 1601, 1604, 1607, 1610, 1613, 1616, 1619, 1622, 1625, 1628,
	 1631, 1634, 1637, 1640, 1643, 1646, 1649, 1652, 1655, 1658, 1661, 1664,
	 1667, 1670, 1673, 1676, 1679, 1682, 1685, 1688, 1691, 1694, 1697, 1700,
	 1703, 1706, 1709, 1712, 1715, 1718, 1721, 1724, 1727, 1731, 1735, 1738,
	 1741, 1744, 1747, 1750, 1753, 1756, 1759, 1762, 1765, 1768, 1771, 1774,
	 1777, 1780, 1783, 1786, 1789, 1792, 1795, 1798, 1801, 1804, 1807, 1810,
	 1813, 1816, 1819, 1822, 1825, 1828, 1831, 1834, 1837, 1840, 1843, 1846,
	 1848, 1851, 1854, 1856, 1858, 1860, 1862, 1864, 1866, 1868, 1870, 1872,
	 1874, 1876, 1878, 1880, 1882, 1884, 1886, 1888, 1890, 1892, 1894, 1896,
	 1898, 1900, 1902, 1910, 1915, 1919, 1922, 1925, 1928, 1931, 1934, 1937,
	 1940, 1943, 1946, 1949, 1952, 1955, 1958, 1961, 1964, 1967, 1970, 1973,
	 1976, 1979, 1982, 1985, 1988, 1991, 1994, 1997, 2000, 2003, 2006, 2009,
	 2012, 2015, 2019, 2022, 2025, 2028, 2031, 2034, 2037, 2040, 2043, 2046,
	 2049, 2052, 2055, 2058, 2061, 2064, 2067, 2070, 2073, 2076, 2079, 2082,
	 2085, 2088, 2091, 2094, 2097, 2100, 2103, 2106, 2109, 2112, 2115, 2118,
	 2121, 2124, 2127, 2130, 2133, 2136, 2139, 2142, 2145, 2148, 2151, 2154,
	 2157, 2160, 2163, 2166, 2169, 2172, 2175, 2178, 2181, 2184, 2187, 2190,
	 2193, 2196, 2199, 2202, 2205, 2208, 2211, 2214, 2217, 2220, 2223, 2226,
	 2229, 2232, 2235, 2238, 2241, 2244, 2246, 2248, 2250, 2252
	};
}

private static final short _lexer_index_offsets[] = init__lexer_index_offsets_0();


private static short[] init__lexer_indicies_0()
{
	return new short [] {
	    1,    2,    4,    3,    5,    6,    7,    8,    9,   10,    3,    0,
	   11,   12,   13,   14,   15,   16,   17,   18,   19,   20,    0,   21,
	    0,   23,   24,   22,   26,   27,   25,    1,    4,    3,    5,    6,
	    7,    8,    9,   10,    3,    0,   28,    0,   29,    0,   31,   32,
	   30,   34,   35,   33,   38,   37,   39,   37,   36,   42,   41,   43,
	   41,   40,   42,   41,   44,   41,   40,   42,   41,   45,   41,   40,
	   47,   46,   46,    0,    4,   48,   48,    0,   50,   51,   49,    4,
	    0,   52,    0,   53,    0,   54,    0,   55,    0,   56,    0,   57,
	    0,   58,    0,   59,    0,   60,    0,   61,    0,   62,    0,   63,
	    0,   64,    0,   65,    0,    0,    0,    0,    0,   66,   67,   68,
	   67,   67,   70,   69,   66,    4,   71,    9,   71,    0,   72,   73,
	   72,    0,   76,   75,   77,   78,   75,   74,    0,   80,   81,   79,
	    0,   80,   79,   76,   82,   80,   81,   82,   79,   83,   76,   84,
	   85,   86,   87,   88,   89,   90,   84,    0,   91,   92,    0,   93,
	    0,   94,    0,   11,    0,   95,    0,   96,    0,   97,    0,   98,
	    0,   99,    0,  100,    0,  101,    0,  102,    0,  103,    0,   11,
	    0,  104,    0,  105,    0,  106,    0,  107,    0,  108,    0,   11,
	    0,  109,    0,  110,    0,  111,    0,  112,    0,  113,    0,   11,
	    0,  114,    0,  115,    0,  116,    0,  117,    0,  118,    0,  119,
	    0,  120,    0,   11,    0,  121,  122,    0,  123,    0,  124,    0,
	  125,    0,  126,    0,  127,    0,  128,    0,  129,    0,  130,    0,
	  131,    0,  132,    0,  133,    0,  134,    0,  135,    0,  136,    0,
	  137,    0,  138,    0,  139,    0,  140,    0,  142,  141,  144,  143,
	  145,  144,  146,  147,  148,  149,  147,  146,  143,  150,  151,  152,
	  153,  154,  155,  156,  157,  158,  159,  144,  143,  144,  160,  143,
	  161,  163,  162,  164,  165,  166,  167,  168,  169,  162,    0,  170,
	  144,  171,  143,  172,  144,  143,  173,  144,  143,  150,  144,  143,
	  174,  144,  143,  175,  144,  143,  176,  144,  143,  177,  144,  143,
	  178,  144,  143,  179,  144,  143,  180,  144,  143,  181,  144,  143,
	  182,  144,  143,  150,  144,  143,  183,  144,  143,  184,  144,  143,
	  185,  144,  143,  186,  144,  143,  187,  144,  143,  150,  144,  143,
	  188,  144,  143,  189,  144,  143,  190,  144,  143,  191,  144,  143,
	  192,  144,  143,  150,  144,  143,  193,  144,  143,  194,  144,  143,
	  195,  144,  143,  196,  144,  143,  197,  144,  143,  198,  144,  143,
	  199,  144,  143,  150,  144,  143,  200,  144,  143,  201,  144,  143,
	  202,  144,  143,  203,  144,  143,  204,  144,  143,  205,  144,  143,
	  206,  144,  143,  207,  144,  143,  208,  144,  143,  209,  144,  143,
	  210,  144,  143,  211,  144,  143,  212,  144,  143,  213,  144,  143,
	  214,  144,  143,  215,  144,  143,  216,  144,  143,  217,  144,  143,
	  144,  160,  218,  143,  144,  219,  143,  220,  144,  143,  186,  144,
	  143,  221,  144,  143,  222,  223,  144,  143,  224,  144,  143,  225,
	  144,  143,  226,  144,  143,  227,  144,  143,  228,  144,  143,  229,
	  144,  143,  230,  144,  143,  231,  144,  143,  232,  144,  143,  233,
	  144,  143,  234,  144,  143,  235,  144,  143,  236,  144,  143,  237,
	  144,  143,  144,  238,  143,  239,  144,  143,  240,  144,  143,  241,
	  144,  143,  242,  144,  143,  243,  144,  143,  244,  144,  143,  245,
	  144,  143,  246,  144,  143,  247,  144,  143,  248,  144,  143,  249,
	  144,  143,  250,  144,  143,  251,  144,  143,  252,  144,  143,  253,
	  144,  143,  254,  144,  143,  144,  160,  143,  255,  144,  143,  256,
	  144,  143,  257,  144,  143,  258,  144,  143,  259,  144,  143,  260,
	  144,  143,  261,  144,  143,  262,  144,  143,  263,  144,  143,  264,
	  144,  143,  265,  144,  143,  254,  144,  143,  266,  144,  143,  150,
	  267,  144,  143,  268,  144,  160,  143,  269,  144,  143,  270,  144,
	  143,  150,  144,  143,  271,  144,  143,  272,  144,  143,  273,  144,
	  143,  274,  144,  143,  275,  144,  143,  276,  144,  143,  277,  144,
	  143,  278,  144,  143,  279,  144,  143,  280,  144,  143,  281,  144,
	  143,  282,  144,  143,  283,  144,  143,  284,  144,  143,  285,  144,
	  143,  286,  144,  143,  287,  144,  143,  254,  144,  143,  288,  144,
	  143,  219,  144,  143,  144,  289,  143,  144,  290,  143,  144,  291,
	  143,  144,  292,  143,  144,  293,  143,  144,  294,  143,  144,  295,
	  143,  144,  296,  143,  144,  297,  143,  144,  298,  143,  144,  299,
	  143,  144,  300,  143,  144,  301,  143,  144,  302,  143,  303,    0,
	  304,    0,  305,    0,  306,    0,  307,  308,    0,  309,    0,  310,
	    0,  311,    0,  312,    0,  313,    0,  314,    0,  315,    0,  316,
	    0,  317,    0,  319,  318,  321,  320,  322,  321,  323,  324,  324,
	  323,  320,  325,  321,  320,  326,  321,  320,  327,  321,  320,  328,
	  321,  320,  329,  321,  320,  330,  321,  320,  331,  321,  320,  332,
	  321,  320,  333,  321,  320,  334,  321,  320,  335,  321,  320,  336,
	  321,  320,  337,  321,  320,  338,  321,  320,  339,  321,  320,  340,
	  321,  320,  341,  321,  320,  342,  321,  320,  343,  321,  320,  321,
	  344,  320,  345,    0,  346,    0,  347,    0,  348,    0,  349,    0,
	  350,    0,  351,    0,  352,    0,  353,    0,  354,    0,  355,    0,
	  356,    0,   21,  357,    0,  358,    0,  359,    0,  107,    0,  360,
	    0,  361,  362,    0,  363,    0,  364,    0,  365,    0,  366,    0,
	  367,    0,  368,    0,  369,    0,  370,    0,  371,    0,  372,    0,
	  373,    0,  374,    0,  375,    0,  376,    0,  377,    0,  378,    0,
	  379,    0,  380,    0,  381,    0,  382,    0,  383,    0,  384,    0,
	  385,    0,  386,    0,  387,    0,  388,    0,  389,    0,  390,    0,
	  391,    0,  392,    0,  393,    0,  394,    0,  396,  395,  398,  397,
	  399,  398,  400,  401,  402,  403,  401,  400,  397,  404,  405,  406,
	  407,  408,  409,  410,  411,  412,  413,  398,  397,  398,  414,  397,
	  415,  398,  416,  397,  417,  398,  397,  418,  398,  397,  404,  398,
	  397,  419,  398,  397,  420,  398,  397,  421,  398,  397,  422,  398,
	  397,  423,  398,  397,  424,  398,  397,  425,  398,  397,  426,  398,
	  397,  427,  398,  397,  404,  398,  397,  428,  398,  397,  429,  398,
	  397,  430,  398,  397,  431,  398,  397,  432,  398,  397,  404,  398,
	  397,  433,  398,  397,  434,  398,  397,  435,  398,  397,  436,  398,
	  397,  437,  398,  397,  404,  398,  397,  438,  398,  397,  439,  398,
	  397,  440,  398,  397,  441,  398,  397,  442,  398,  397,  443,  398,
	  397,  444,  398,  397,  404,  398,  397,  445,  398,  397,  446,  398,
	  397,  447,  398,  397,  448,  398,  397,  449,  398,  397,  450,  398,
	  397,  451,  398,  397,  452,  398,  397,  453,  398,  397,  454,  398,
	  397,  455,  398,  397,  456,  398,  397,  457,  398,  397,  458,  398,
	  397,  459,  398,  397,  460,  398,  397,  461,  398,  397,  462,  398,
	  397,  398,  414,  463,  397,  398,  464,  397,  465,  398,  397,  431,
	  398,  397,  466,  398,  397,  467,  398,  397,  468,  398,  397,  469,
	  398,  397,  470,  398,  397,  471,  398,  397,  472,  398,  397,  473,
	  398,  397,  474,  398,  397,  475,  398,  397,  476,  398,  397,  477,
	  398,  397,  478,  398,  397,  479,  398,  397,  398,  414,  397,  480,
	  398,  397,  404,  481,  398,  397,  482,  398,  414,  397,  483,  398,
	  397,  484,  398,  397,  404,  398,  397,  485,  398,  397,  486,  398,
	  397,  487,  398,  397,  488,  398,  397,  489,  398,  397,  490,  398,
	  397,  491,  398,  397,  492,  398,  397,  493,  398,  397,  494,  398,
	  397,  495,  398,  397,  496,  398,  397,  497,  398,  397,  498,  398,
	  397,  499,  398,  397,  500,  398,  397,  501,  398,  397,  479,  398,
	  397,  502,  398,  397,  464,  398,  397,  398,  503,  397,  398,  504,
	  397,  398,  505,  397,  398,  506,  397,  398,  507,  397,  398,  508,
	  397,  398,  509,  397,  398,  510,  397,  398,  511,  397,  398,  512,
	  397,  398,  513,  397,  398,  514,  397,  398,  515,  397,  398,  516,
	  397,  517,    0,  518,    0,  519,    0,  520,    0,  521,    0,  522,
	    0,  523,    0,  524,    0,  525,    0,  526,    0,  527,    0,  528,
	    0,  529,    0,  531,  530,  533,  532,  534,  533,  535,  536,  537,
	  538,  536,  535,  532,  539,  540,  541,  542,  543,  544,  545,  546,
	  547,  548,  533,  532,  533,  549,  532,  550,  533,  551,  532,  552,
	  533,  532,  553,  533,  532,  539,  533,  532,  554,  533,  532,  555,
	  533,  532,  556,  533,  532,  557,  533,  532,  558,  533,  532,  559,
	  533,  532,  560,  533,  532,  561,  533,  532,  562,  533,  532,  539,
	  533,  532,  563,  533,  532,  564,  533,  532,  565,  533,  532,  566,
	  533,  532,  567,  533,  532,  539,  533,  532,  568,  533,  532,  569,
	  533,  532,  570,  533,  532,  571,  533,  532,  572,  533,  532,  539,
	  533,  532,  573,  533,  532,  574,  533,  532,  575,  533,  532,  576,
	  533,  532,  577,  533,  532,  578,  533,  532,  579,  533,  532,  539,
	  533,  532,  580,  581,  533,  532,  582,  533,  532,  583,  533,  532,
	  584,  533,  532,  585,  533,  532,  586,  533,  532,  587,  533,  532,
	  588,  533,  532,  589,  533,  532,  590,  533,  532,  591,  533,  532,
	  592,  533,  532,  593,  533,  532,  594,  533,  532,  595,  533,  532,
	  596,  533,  532,  597,  533,  532,  598,  533,  532,  533,  549,  532,
	  599,  533,  532,  600,  533,  532,  601,  533,  532,  602,  533,  532,
	  603,  533,  532,  604,  533,  532,  605,  533,  532,  606,  533,  532,
	  607,  533,  532,  608,  533,  532,  609,  533,  532,  610,  533,  532,
	  611,  533,  532,  612,  533,  532,  613,  533,  532,  614,  533,  532,
	  615,  533,  532,  533,  549,  616,  532,  533,  617,  532,  618,  533,
	  532,  566,  533,  532,  619,  533,  532,  620,  621,  533,  532,  622,
	  533,  532,  623,  533,  532,  624,  533,  532,  625,  533,  532,  626,
	  533,  532,  627,  533,  532,  628,  533,  532,  629,  533,  532,  630,
	  533,  532,  631,  533,  532,  632,  533,  532,  633,  533,  532,  634,
	  533,  532,  635,  533,  532,  533,  636,  532,  637,  533,  532,  638,
	  533,  532,  639,  533,  532,  640,  533,  532,  641,  533,  532,  642,
	  533,  532,  643,  533,  532,  644,  533,  532,  645,  533,  532,  646,
	  533,  532,  647,  533,  532,  648,  533,  532,  649,  533,  532,  650,
	  533,  532,  651,  533,  532,  598,  533,  532,  652,  533,  532,  653,
	  533,  532,  654,  533,  532,  655,  533,  532,  656,  533,  532,  657,
	  533,  532,  658,  533,  532,  659,  533,  532,  660,  533,  532,  661,
	  533,  532,  662,  533,  532,  598,  533,  532,  663,  533,  532,  539,
	  664,  533,  532,  665,  533,  549,  532,  666,  533,  532,  667,  533,
	  532,  539,  533,  532,  668,  533,  532,  669,  533,  532,  670,  533,
	  532,  671,  533,  532,  672,  533,  532,  673,  533,  532,  674,  533,
	  532,  675,  533,  532,  676,  533,  532,  677,  533,  532,  678,  533,
	  532,  679,  533,  532,  680,  533,  532,  681,  533,  532,  682,  533,
	  532,  683,  533,  532,  684,  533,  532,  598,  533,  532,  685,  533,
	  532,  617,  533,  532,  533,  686,  532,  533,  687,  532,  533,  688,
	  532,  533,  689,  532,  533,  690,  532,  533,  691,  532,  533,  692,
	  532,  533,  693,  532,  533,  694,  532,  533,  695,  532,  533,  696,
	  532,  533,  697,  532,  533,  698,  532,  533,  699,  532,  700,    0,
	   11,  701,    0,  702,   21,    0,  703,    0,  704,    0,   11,    0,
	  705,    0,  706,    0,  707,    0,  708,    0,  709,    0,  710,    0,
	  711,    0,  712,    0,  713,    0,  714,    0,  715,    0,  716,    0,
	  717,    0,  718,    0,  719,    0,  720,    0,  721,    0,  722,    0,
	  723,    0,  725,  724,  727,  726,  728,  727,  729,  730,  731,  730,
	  729,  726,  732,  733,  734,  727,  726,  735,  736,  727,  726,  737,
	  727,  726,  738,  727,  726,  739,  727,  726,  740,  727,  726,  741,
	  727,  726,  742,  727,  726,  743,  727,  726,  744,  727,  726,  745,
	  727,  726,  746,  727,  726,  747,  727,  726,  748,  727,  726,  749,
	  727,  726,  750,  727,  726,  751,  727,  726,  752,  727,  726,  753,
	  727,  726,  727,  754,  726,  755,  727,  726,  756,  727,  726,  757,
	  727,  726,  758,  727,  726,  759,  727,  726,  760,  727,  726,  761,
	  727,  726,  762,  727,  726,  763,  727,  726,  764,  727,  726,  765,
	  727,  726,  766,  727,  726,  753,  727,  726,  767,  727,  726,  768,
	  769,  727,  726,  770,  727,  726,  771,  727,  726,  772,  727,  726,
	  773,  727,  726,  774,  727,  726,  775,  727,  726,  776,  727,  726,
	  777,  727,  726,  778,  727,  726,  779,  727,  726,  780,  727,  726,
	  781,  727,  726,  782,  727,  726,  783,  727,  726,  727,  784,  726,
	  785,  727,  726,  786,  727,  726,  787,  727,  726,  788,  727,  726,
	  789,  727,  726,  790,  727,  726,  791,  727,  726,  792,  727,  726,
	  793,  727,  726,  794,  727,  726,  795,  727,  726,  796,  727,  726,
	  797,  727,  726,  798,  727,  726,  799,  727,  726,  753,  727,  726,
	  800,  727,  726,  801,  727,  726,  802,  727,  726,  803,  727,  726,
	  804,  727,  726,  805,  727,  726,  806,  727,  726,  807,  727,  726,
	  808,  727,  726,  809,  727,  726,  810,  727,  726,  753,  727,  726,
	  811,  727,  726,  812,  727,  726,  813,  727,  726,  814,  727,  726,
	  815,  727,  726,  816,  727,  726,  817,  727,  726,  818,  727,  726,
	  819,  727,  726,  820,  727,  726,  821,  727,  726,  822,  727,  726,
	  823,  727,  726,  824,  727,  726,  825,  727,  726,  826,  727,  726,
	  827,  727,  726,  753,  727,  726,  727,  828,  726,  727,  829,  726,
	  727,  830,  726,  727,  831,  726,  727,  832,  726,  727,  833,  726,
	  727,  834,  726,  727,  835,  726,  727,  836,  726,  727,  837,  726,
	  727,  838,  726,  727,  839,  726,  727,  840,  726,  727,  841,  726,
	  842,    0,  358,    0,  843,    0,    3,    0,  844,    0
	};
}

private static final short _lexer_indicies[] = init__lexer_indicies_0();


private static short[] init__lexer_trans_targs_0()
{
	return new short [] {
	    0,    2,  763,    6,    6,    7,   17,   19,    3,   33,   36,    3,
	   42,   56,   62,   68,   76,  296,  623,  629,  761,    4,    5,    6,
	   18,    5,    6,   18,    8,    9,   10,   11,   10,   10,   11,   10,
	   12,   12,   12,   13,   12,   12,   12,   13,   14,   15,   16,    6,
	   16,   17,    6,   18,   20,   21,   22,   23,   24,   25,   26,   27,
	   28,   29,   30,   31,   32,  765,   34,   35,    6,   34,   33,   35,
	   36,   37,   38,   40,   41,   39,   37,   38,   39,   37,   40,    2,
	   41,    7,   17,   19,    3,   33,   36,   43,   46,   44,   45,   47,
	   48,   49,   50,   51,   52,   53,   54,   55,   57,   58,   59,   60,
	   61,   63,   64,   65,   66,   67,   69,   70,   71,   72,   73,   74,
	   75,   77,  243,   78,   79,   80,   81,   82,   83,   84,   85,   86,
	   87,   88,   89,   90,   91,   92,   93,   94,   95,   96,   97,   96,
	   97,   98,   97,    6,  229,   99,   99,  101,  115,  121,  127,  135,
	  157,  203,  209,  227,  100,    2,    6,    6,    7,   17,   19,    3,
	   33,   36,  102,  105,  103,  104,  106,  107,  108,  109,  110,  111,
	  112,  113,  114,  116,  117,  118,  119,  120,  122,  123,  124,  125,
	  126,  128,  129,  130,  131,  132,  133,  134,  136,  137,  138,  139,
	  140,  141,  142,  143,  144,  145,  146,  147,  148,  149,  150,  151,
	  152,  153,  154,  155,  156,  158,  159,  191,  160,  161,  162,  163,
	  164,  165,  166,  167,  168,  169,  170,  171,  172,  173,  174,  175,
	  176,  177,  178,  179,  180,  181,  182,  183,  184,  185,  186,  187,
	  188,  189,  190,  192,  193,  194,  195,  196,  197,  198,  199,  200,
	  201,  202,  204,  205,  206,  207,  208,  210,  211,  212,  213,  214,
	  215,  216,  217,  218,  219,  220,  221,  222,  223,  224,  225,  226,
	  228,  230,  231,  232,  233,  234,  235,  236,  237,  238,  239,  240,
	  241,  242,    6,  244,  245,  246,  247,  248,  280,  249,  250,  251,
	  252,  253,  254,  255,  256,  257,  258,  259,  258,  259,  260,  259,
	    6,  261,  262,  263,  264,  265,  266,  267,  268,  269,  270,  271,
	  272,  273,  274,  275,  276,  277,  278,  279,  100,  281,  282,  283,
	  284,  285,  286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
	  297,  298,  446,  299,  300,  301,  302,  303,  304,  305,  306,  307,
	  308,  309,  310,  311,  312,  313,  314,  315,  316,  317,  318,  319,
	  320,  321,  322,  323,  324,  325,  326,  327,  328,  329,  330,  331,
	  332,  331,  332,  333,  332,    6,  432,  334,  334,  335,  349,  355,
	  361,  369,  391,  406,  412,  430,  100,  336,  339,  337,  338,  340,
	  341,  342,  343,  344,  345,  346,  347,  348,  350,  351,  352,  353,
	  354,  356,  357,  358,  359,  360,  362,  363,  364,  365,  366,  367,
	  368,  370,  371,  372,  373,  374,  375,  376,  377,  378,  379,  380,
	  381,  382,  383,  384,  385,  386,  387,  388,  389,  390,  392,  393,
	  394,  395,  396,  397,  398,  399,  400,  401,  402,  403,  404,  405,
	  407,  408,  409,  410,  411,  413,  414,  415,  416,  417,  418,  419,
	  420,  421,  422,  423,  424,  425,  426,  427,  428,  429,  431,  433,
	  434,  435,  436,  437,  438,  439,  440,  441,  442,  443,  444,  445,
	    6,  447,  448,  449,  450,  451,  452,  453,  454,  455,  456,  457,
	  458,  459,  460,  461,  460,  461,  462,  461,    6,  609,  463,  463,
	  464,  478,  484,  490,  498,  538,  583,  589,  607,  100,  465,  468,
	  466,  467,  469,  470,  471,  472,  473,  474,  475,  476,  477,  479,
	  480,  481,  482,  483,  485,  486,  487,  488,  489,  491,  492,  493,
	  494,  495,  496,  497,  499,  517,  500,  501,  502,  503,  504,  505,
	  506,  507,  508,  509,  510,  511,  512,  513,  514,  515,  516,  518,
	  519,  520,  521,  522,  523,  524,  525,  526,  527,  528,  529,  530,
	  531,  532,  533,  534,  535,  536,  537,  539,  540,  571,  541,  542,
	  543,  544,  545,  546,  547,  548,  549,  550,  551,  552,  553,  554,
	  555,  556,  557,  558,  559,  560,  561,  562,  563,  564,  565,  566,
	  567,  568,  569,  570,  572,  573,  574,  575,  576,  577,  578,  579,
	  580,  581,  582,  584,  585,  586,  587,  588,  590,  591,  592,  593,
	  594,  595,  596,  597,  598,  599,  600,  601,  602,  603,  604,  605,
	  606,  608,  610,  611,  612,  613,  614,  615,  616,  617,  618,  619,
	  620,  621,  622,    6,  624,  625,  626,  627,  628,  630,  631,  632,
	  633,  634,  635,  636,  637,  638,  639,  640,  641,  642,  643,  644,
	  645,  646,  647,  648,  649,  650,  649,  650,  651,  650,    6,  747,
	  652,  684,  729,  653,  671,  654,  655,  656,  657,  658,  659,  660,
	  661,  662,  663,  664,  665,  666,  667,  668,  669,  670,  100,  672,
	  673,  674,  675,  676,  677,  678,  679,  680,  681,  682,  683,  685,
	  686,  717,  687,  688,  689,  690,  691,  692,  693,  694,  695,  696,
	  697,  698,  699,  700,  701,  702,  703,  704,  705,  706,  707,  708,
	  709,  710,  711,  712,  713,  714,  715,  716,  718,  719,  720,  721,
	  722,  723,  724,  725,  726,  727,  728,  730,  731,  732,  733,  734,
	  735,  736,  737,  738,  739,  740,  741,  742,  743,  744,  745,  746,
	  748,  749,  750,  751,  752,  753,  754,  755,  756,  757,  758,  759,
	  760,    6,  762,  764,    0
	};
}

private static final short _lexer_trans_targs[] = init__lexer_trans_targs_0();


private static short[] init__lexer_trans_actions_0()
{
	return new short [] {
	   43,   29,    0,    0,   54,    3,    1,    0,   29,    1,   35,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   57,  149,
	  126,    0,  110,   23,    0,    0,    7,  139,   48,    0,  102,    9,
	    5,   45,  134,   45,    0,   33,  122,   33,   33,    0,   11,  106,
	    0,    0,  114,   25,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,   27,  118,   27,   51,    0,
	    0,    0,   37,   37,   54,   37,   87,    0,    0,   39,    0,   96,
	    0,   93,   90,   41,   96,   90,   99,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,   57,  144,    0,
	   54,   84,    0,   72,   33,   84,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,   15,   63,   31,  130,   60,   57,   31,   63,
	   57,   66,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,   15,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,   57,  144,    0,   54,   84,    0,
	   81,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,   21,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   57,
	  144,    0,   54,   84,    0,   78,   33,   84,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,   19,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	   19,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,   57,  144,    0,   54,   84,    0,   75,   33,   84,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,   17,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,   17,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,   57,  144,    0,   54,   84,    0,   69,   33,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   13,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,   13,    0,    0,    0
	};
}

private static final short _lexer_trans_actions[] = init__lexer_trans_actions_0();


private static short[] init__lexer_eof_actions_0()
{
	return new short [] {
	    0,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43
	};
}

private static final short _lexer_eof_actions[] = init__lexer_eof_actions_0();


static final int lexer_start = 1;
static final int lexer_first_final = 765;

static final int lexer_en_main = 1;


// line 159 "ragel/i18n/uk.java.rl"

  public void scan(String source)  {
    String input = source + "\n%_FEATURE_END_%";
    byte[] data = null;
    try {
      data = input.getBytes("UTF-8");
    } catch(UnsupportedEncodingException e) {
      throw new RuntimeException(e);
    }
    int cs, p = 0, pe = data.length;
    int eof = pe;

    int lineNumber = 1;
    int lastNewline = 0;

    int contentStart = -1;
    int currentLine = -1;
    int docstringContentTypeStart = -1;
    int docstringContentTypeEnd = -1;
    int startCol = -1;
    int nextKeywordStart = -1;
    int keywordStart = -1;
    String keyword = null;
    List currentRow = null;

    
// line 939 "java/src/main/java/gherkin/lexer/Uk.java"
	{
	cs = lexer_start;
	}

// line 185 "ragel/i18n/uk.java.rl"
    
// line 946 "java/src/main/java/gherkin/lexer/Uk.java"
	{
	int _klen;
	int _trans = 0;
	int _acts;
	int _nacts;
	int _keys;
	int _goto_targ = 0;

	_goto: while (true) {
	switch ( _goto_targ ) {
	case 0:
	if ( p == pe ) {
		_goto_targ = 4;
		continue _goto;
	}
	if ( cs == 0 ) {
		_goto_targ = 5;
		continue _goto;
	}
case 1:
	_match: do {
	_keys = _lexer_key_offsets[cs];
	_trans = _lexer_index_offsets[cs];
	_klen = _lexer_single_lengths[cs];
	if ( _klen > 0 ) {
		int _lower = _keys;
		int _mid;
		int _upper = _keys + _klen - 1;
		while (true) {
			if ( _upper < _lower )
				break;

			_mid = _lower + ((_upper-_lower) >> 1);
			if ( data[p] < _lexer_trans_keys[_mid] )
				_upper = _mid - 1;
			else if ( data[p] > _lexer_trans_keys[_mid] )
				_lower = _mid + 1;
			else {
				_trans += (_mid - _keys);
				break _match;
			}
		}
		_keys += _klen;
		_trans += _klen;
	}

	_klen = _lexer_range_lengths[cs];
	if ( _klen > 0 ) {
		int _lower = _keys;
		int _mid;
		int _upper = _keys + (_klen<<1) - 2;
		while (true) {
			if ( _upper < _lower )
				break;

			_mid = _lower + (((_upper-_lower) >> 1) & ~1);
			if ( data[p] < _lexer_trans_keys[_mid] )
				_upper = _mid - 2;
			else if ( data[p] > _lexer_trans_keys[_mid+1] )
				_lower = _mid + 2;
			else {
				_trans += ((_mid - _keys)>>1);
				break _match;
			}
		}
		_trans += _klen;
	}
	} while (false);

	_trans = _lexer_indicies[_trans];
	cs = _lexer_trans_targs[_trans];

	if ( _lexer_trans_actions[_trans] != 0 ) {
		_acts = _lexer_trans_actions[_trans];
		_nacts = (int) _lexer_actions[_acts++];
		while ( _nacts-- > 0 )
	{
			switch ( _lexer_actions[_acts++] )
			{
	case 0:
// line 16 "ragel/i18n/uk.java.rl"
	{
      contentStart = p;
      currentLine = lineNumber;
      if(keyword != null) {
        startCol = p - lastNewline - (keyword.length() + 1);
      }
    }
	break;
	case 1:
// line 24 "ragel/i18n/uk.java.rl"
	{
      currentLine = lineNumber;
      startCol = p - lastNewline;
    }
	break;
	case 2:
// line 29 "ragel/i18n/uk.java.rl"
	{
      contentStart = p;
    }
	break;
	case 3:
// line 33 "ragel/i18n/uk.java.rl"
	{
      docstringContentTypeStart = p;
    }
	break;
	case 4:
// line 37 "ragel/i18n/uk.java.rl"
	{
      docstringContentTypeEnd = p;
    }
	break;
	case 5:
// line 41 "ragel/i18n/uk.java.rl"
	{
      String con = unindent(startCol, substring(data, contentStart, nextKeywordStart-1).replaceFirst("(\\r?\\n)?([\\t ])*\\Z", "").replace("\\\"\\\"\\\"", "\"\"\""));
      String conType = substring(data, docstringContentTypeStart, docstringContentTypeEnd).trim();
      listener.docString(conType, con, currentLine);
    }
	break;
	case 6:
// line 47 "ragel/i18n/uk.java.rl"
	{
      String[] nameDescription = nameAndUnindentedDescription(startCol, keywordContent(data, p, eof, nextKeywordStart, contentStart));
      listener.feature(keyword, nameDescription[0], nameDescription[1], currentLine);
      if(nextKeywordStart != -1) p = nextKeywordStart - 1;
      nextKeywordStart = -1;
    }
	break;
	case 7:
// line 54 "ragel/i18n/uk.java.rl"
	{
      String[] nameDescription = nameAndUnindentedDescription(startCol, keywordContent(data, p, eof, nextKeywordStart, contentStart));
      listener.background(keyword, nameDescription[0], nameDescription[1], currentLine);
      if(nextKeywordStart != -1) p = nextKeywordStart - 1;
      nextKeywordStart = -1;
    }
	break;
	case 8:
// line 61 "ragel/i18n/uk.java.rl"
	{
      String[] nameDescription = nameAndUnindentedDescription(startCol, keywordContent(data, p, eof, nextKeywordStart, contentStart));
      listener.scenario(keyword, nameDescription[0], nameDescription[1], currentLine);
      if(nextKeywordStart != -1) p = nextKeywordStart - 1;
      nextKeywordStart = -1;
    }
	break;
	case 9:
// line 68 "ragel/i18n/uk.java.rl"
	{
      String[] nameDescription = nameAndUnindentedDescription(startCol, keywordContent(data, p, eof, nextKeywordStart, contentStart));
      listener.scenarioOutline(keyword, nameDescription[0], nameDescription[1], currentLine);
      if(nextKeywordStart != -1) p = nextKeywordStart - 1;
      nextKeywordStart = -1;
    }
	break;
	case 10:
// line 75 "ragel/i18n/uk.java.rl"
	{
      String[] nameDescription = nameAndUnindentedDescription(startCol, keywordContent(data, p, eof, nextKeywordStart, contentStart));
      listener.examples(keyword, nameDescription[0], nameDescription[1], currentLine);
      if(nextKeywordStart != -1) p = nextKeywordStart - 1;
      nextKeywordStart = -1;
    }
	break;
	case 11:
// line 82 "ragel/i18n/uk.java.rl"
	{
      listener.step(keyword, substring(data, contentStart, p).trim(), currentLine);
    }
	break;
	case 12:
// line 86 "ragel/i18n/uk.java.rl"
	{
      listener.comment(substring(data, contentStart, p).trim(), lineNumber);
      keywordStart = -1;
    }
	break;
	case 13:
// line 91 "ragel/i18n/uk.java.rl"
	{
      listener.tag(substring(data, contentStart, p).trim(), currentLine);
      keywordStart = -1;
    }
	break;
	case 14:
// line 96 "ragel/i18n/uk.java.rl"
	{
      lineNumber++;
    }
	break;
	case 15:
// line 100 "ragel/i18n/uk.java.rl"
	{
      lastNewline = p + 1;
    }
	break;
	case 16:
// line 104 "ragel/i18n/uk.java.rl"
	{
      if(keywordStart == -1) keywordStart = p;
    }
	break;
	case 17:
// line 108 "ragel/i18n/uk.java.rl"
	{
      keyword = substring(data, keywordStart, p).replaceFirst(":$","");
      keywordStart = -1;
    }
	break;
	case 18:
// line 113 "ragel/i18n/uk.java.rl"
	{
      nextKeywordStart = p;
    }
	break;
	case 19:
// line 117 "ragel/i18n/uk.java.rl"
	{
      p = p - 1;
      currentRow = new ArrayList();
      currentLine = lineNumber;
    }
	break;
	case 20:
// line 123 "ragel/i18n/uk.java.rl"
	{
      contentStart = p;
    }
	break;
	case 21:
// line 127 "ragel/i18n/uk.java.rl"
	{
      String con = substring(data, contentStart, p).trim();
      currentRow.add(con
        .replace("\\|", "|")
        .replace("\\n", "\n")
        .replace("\\\\", "\\")
      );
    }
	break;
	case 22:
// line 136 "ragel/i18n/uk.java.rl"
	{
      listener.row(currentRow, currentLine);
    }
	break;
	case 23:
// line 140 "ragel/i18n/uk.java.rl"
	{
      if(cs < lexer_first_final) {
        String content = currentLineContent(data, lastNewline);
        throw new LexingError("Lexing error on line " + lineNumber + ": '" + content + "'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.");
      } else {
        listener.eof();
      }
    }
	break;
// line 1207 "java/src/main/java/gherkin/lexer/Uk.java"
			}
		}
	}

case 2:
	if ( cs == 0 ) {
		_goto_targ = 5;
		continue _goto;
	}
	if ( ++p != pe ) {
		_goto_targ = 1;
		continue _goto;
	}
case 4:
	if ( p == eof )
	{
	int __acts = _lexer_eof_actions[cs];
	int __nacts = (int) _lexer_actions[__acts++];
	while ( __nacts-- > 0 ) {
		switch ( _lexer_actions[__acts++] ) {
	case 23:
// line 140 "ragel/i18n/uk.java.rl"
	{
      if(cs < lexer_first_final) {
        String content = currentLineContent(data, lastNewline);
        throw new LexingError("Lexing error on line " + lineNumber + ": '" + content + "'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.");
      } else {
        listener.eof();
      }
    }
	break;
// line 1239 "java/src/main/java/gherkin/lexer/Uk.java"
		}
	}
	}

case 5:
	}
	break; }
	}

// line 186 "ragel/i18n/uk.java.rl"
  }

  private String keywordContent(byte[] data, int p, int eof, int nextKeywordStart, int contentStart) {
    int endPoint = (nextKeywordStart == -1 || (p == eof)) ? p : nextKeywordStart;
    return substring(data, contentStart, endPoint);
  }

  private String[] nameAndUnindentedDescription(int startCol, String text) {
    String[] lines = text.split("\n");
    String name = lines.length > 0 ? lines[0].trim() : "";
    StringBuffer description = new StringBuffer();
    for(int i = 1; i < lines.length; i++) {
      description.append(lines[i]);
      description.append("\n");
    }
    return new String[]{name, unindent(startCol+2, description.toString()).replaceAll("\\s+$", "")};
  }

  private String unindent(int startCol, String text) {
    return Pattern.compile("^[\t ]{0," + startCol + "}", Pattern.MULTILINE).matcher(text).replaceAll("");
  }

  private String currentLineContent(byte[] data, int lastNewline) {
    return substring(data, lastNewline, data.length).trim();
  }

  private String substring(byte[] data, int start, int end) {
    try {
      return new String(data, start, end-start, "utf-8");
    } catch(java.io.UnsupportedEncodingException e) {
      throw new RuntimeException("Internal error", e);
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy