From e2ac3a83d2079fb91be4296e856084e58d8df6a8 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Mon, 12 Oct 2020 13:14:43 +0530 Subject: [PATCH 01/13] More general parserr support for LOAD and planning for unsharded keyspaces Signed-off-by: GuptaManan100 --- go/vt/sqlparser/ast.go | 2 +- go/vt/sqlparser/parse_test.go | 9 + go/vt/sqlparser/sql.go | 1832 +++++++++-------- go/vt/sqlparser/sql.y | 4 +- go/vt/vtgate/planbuilder/builder.go | 25 +- go/vt/vtgate/planbuilder/bypass.go | 17 - .../planbuilder/testdata/bypass_cases.txt | 8 +- .../testdata/unsupported_cases.txt | 5 - 8 files changed, 961 insertions(+), 941 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 46bdf48c60d..546e7799914 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -242,8 +242,8 @@ type ( // DDLAction is an enum for DDL.Action DDLAction int8 + // Load represents a LOAD statement Load struct { - InfileS3 string } // ParenSelect is a parenthesized SELECT statement. diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index c2433d673b9..c187b76c06d 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1054,6 +1054,15 @@ var ( }, { input: "load data from s3 'x.txt'", output: "AST node missing for Load type", + }, { + input: "load data from s3 manifest 'x.txt'", + output: "AST node missing for Load type", + }, { + input: "load data from s3 file 'x.txt'", + output: "AST node missing for Load type", + }, { + input: "load data infile 'x.txt' into table 'c'", + output: "AST node missing for Load type", }, { input: "load data from s3 'x.txt' into table x", output: "AST node missing for Load type", diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index daedd447800..589569ffed1 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -902,11 +902,11 @@ var yyExca = [...]int{ -1, 955, 125, 713, -2, 709, - -1, 1043, + -1, 1042, 61, 58, 63, 58, -2, 62, - -1, 1397, + -1, 1394, 5, 626, 18, 626, 20, 626, @@ -917,448 +917,495 @@ var yyExca = [...]int{ const yyPrivate = 57344 -const yyLast = 18842 +const yyLast = 18945 var yyAct = [...]int{ - 405, 1440, 1643, 1321, 1600, 1633, 1515, 349, 624, 1223, - 1065, 1549, 1243, 364, 1377, 1413, 744, 1037, 1374, 751, - 704, 378, 1378, 1061, 605, 1108, 1272, 1224, 1064, 1210, - 1074, 1502, 1383, 1389, 1034, 1094, 1340, 1159, 876, 1289, - 94, 335, 895, 942, 295, 949, 318, 295, 447, 71, - 1298, 1078, 94, 622, 295, 789, 782, 1016, 1039, 423, - 1023, 771, 754, 749, 975, 351, 919, 1088, 573, 408, - 1104, 73, 3, 29, 414, 788, 1045, 69, 614, 74, - 340, 772, 94, 761, 905, 94, 295, 786, 295, 68, - 444, 8, 431, 7, 718, 1636, 347, 336, 6, 1620, - 339, 779, 717, 31, 32, 33, 62, 35, 36, 594, - 1631, 1608, 76, 77, 78, 79, 80, 81, 283, 1628, - 1441, 281, 1619, 66, 1607, 1357, 1470, 578, 37, 56, - 57, 1407, 59, 1408, 1409, 1127, 1055, 60, 1260, 429, - 433, 1259, 31, 409, 1261, 62, 35, 36, 338, 1126, - 1056, 1057, 341, 337, 790, 46, 791, 1280, 390, 61, - 396, 397, 394, 395, 393, 392, 391, 1087, 344, 441, - 291, 287, 288, 289, 398, 399, 632, 1505, 637, 1323, - 633, 630, 631, 1095, 96, 97, 98, 96, 97, 98, - 1461, 96, 97, 98, 1459, 1125, 328, 904, 61, 330, - 326, 864, 635, 952, 1575, 666, 665, 675, 676, 668, - 669, 670, 671, 672, 673, 674, 667, 625, 626, 677, - 284, 627, 863, 1325, 1341, 39, 40, 42, 41, 44, - 861, 58, 1630, 1593, 1627, 1324, 1601, 906, 907, 908, - 636, 1320, 865, 1017, 1647, 1416, 282, 595, 1122, 1119, - 1120, 1550, 1118, 1651, 45, 65, 64, 1558, 862, 54, - 55, 43, 611, 620, 613, 1343, 1552, 285, 1244, 1246, - 580, 435, 1326, 869, 640, 47, 48, 852, 49, 50, - 51, 52, 295, 585, 586, 1129, 1132, 295, 1081, 596, - 1400, 1399, 1398, 295, 576, 1317, 610, 612, 290, 295, - 603, 1319, 1345, 609, 1349, 583, 1344, 1081, 1342, 298, - 94, 286, 1139, 1347, 1582, 1138, 1256, 689, 690, 94, - 590, 1484, 1346, 1406, 1215, 1124, 1188, 1178, 1095, 1175, - 1167, 94, 94, 1051, 765, 1348, 1350, 1551, 667, 702, - 601, 677, 638, 96, 97, 98, 995, 1123, 1062, 1606, - 1245, 666, 665, 675, 676, 668, 669, 670, 671, 672, - 673, 674, 667, 677, 1645, 677, 619, 1646, 63, 1644, - 1559, 1557, 639, 96, 97, 98, 654, 822, 621, 651, - 652, 615, 896, 616, 617, 1576, 607, 891, 587, 608, - 588, 1128, 657, 589, 84, 657, 1080, 656, 654, 597, - 598, 599, 1591, 1567, 646, 1387, 1130, 63, 1160, 1318, - 1359, 1316, 687, 792, 657, 1080, 1174, 670, 671, 672, - 673, 674, 667, 650, 649, 677, 647, 1427, 741, 976, - 854, 648, 94, 85, 1596, 295, 658, 295, 295, 1278, - 94, 689, 690, 689, 690, 976, 94, 1185, 444, 787, - 655, 656, 654, 705, 665, 675, 676, 668, 669, 670, - 671, 672, 673, 674, 667, 810, 758, 677, 657, 1611, - 1652, 770, 341, 897, 606, 655, 656, 654, 892, 1511, - 1510, 715, 742, 755, 579, 1293, 721, 723, 926, 727, - 729, 743, 732, 657, 720, 722, 724, 726, 728, 730, - 731, 1292, 924, 925, 923, 1281, 823, 61, 747, 750, - 668, 669, 670, 671, 672, 673, 674, 667, 1653, 922, - 677, 691, 692, 693, 694, 695, 696, 697, 698, 699, - 700, 439, 836, 839, 840, 841, 842, 843, 844, 1613, - 845, 846, 847, 848, 849, 824, 825, 826, 827, 808, - 809, 837, 1592, 811, 1528, 812, 813, 814, 815, 816, - 817, 818, 819, 820, 821, 828, 829, 830, 831, 832, - 833, 834, 835, 295, 1084, 581, 582, 850, 94, 997, - 853, 1085, 855, 295, 295, 94, 94, 94, 1152, 1153, - 1154, 295, 1508, 434, 1173, 295, 1172, 1474, 295, 874, - 875, 1290, 295, 1197, 94, 96, 97, 98, 889, 94, - 94, 94, 295, 94, 94, 655, 656, 654, 1000, 1001, - 881, 867, 591, 996, 753, 418, 94, 94, 838, 880, - 1564, 851, 1563, 657, 914, 916, 917, 1423, 858, 859, - 860, 915, 655, 656, 654, 1555, 1629, 655, 656, 654, - 878, 1019, 96, 97, 98, 1361, 944, 879, 1615, 418, - 657, 1082, 883, 884, 885, 657, 887, 888, 1555, 1604, - 1555, 418, 899, 436, 437, 655, 656, 654, 943, 893, - 894, 70, 920, 1020, 96, 97, 98, 945, 1263, 1555, - 1583, 1555, 1554, 657, 1500, 1499, 870, 1486, 418, 1375, - 882, 94, 1386, 367, 366, 369, 370, 371, 372, 1483, - 418, 953, 368, 373, 901, 1433, 1432, 31, 964, 967, - 1429, 1430, 1429, 1428, 977, 959, 921, 900, 1008, 418, - 1020, 418, 653, 418, 94, 94, 799, 798, 1386, 1211, - 418, 954, 1218, 1047, 72, 1211, 909, 910, 911, 912, - 1480, 955, 1219, 94, 1047, 31, 1250, 1009, 1046, 653, - 295, 1566, 705, 94, 1431, 1020, 1264, 295, 1054, 295, - 1191, 1190, 1008, 61, 953, 1046, 998, 295, 295, 295, - 868, 956, 985, 986, 784, 94, 946, 947, 94, 1020, - 1535, 1008, 1048, 444, 1050, 1386, 444, 61, 1621, 94, - 94, 962, 963, 1048, 1014, 1046, 1517, 1066, 1008, 1089, - 1491, 61, 1109, 1419, 955, 1010, 990, 1025, 1028, 1029, - 1030, 1026, 1267, 1027, 1031, 411, 1002, 31, 918, 1390, - 1391, 927, 928, 929, 930, 931, 932, 933, 934, 935, - 936, 937, 938, 939, 940, 941, 1012, 1105, 1035, 1096, - 1097, 1098, 1100, 295, 94, 1099, 94, 1049, 1131, 1322, - 1518, 1053, 295, 295, 295, 295, 295, 1112, 1069, 295, - 295, 1638, 1052, 295, 94, 1110, 1090, 1091, 1092, 1093, - 1044, 61, 1396, 61, 1634, 1060, 1421, 1393, 981, 1375, - 1294, 295, 1101, 1102, 1103, 902, 872, 295, 295, 295, - 1235, 1395, 1232, 295, 94, 1236, 418, 1114, 980, 1116, - 960, 961, 1231, 1625, 966, 969, 970, 1106, 1107, 1237, - 1145, 1029, 1030, 1618, 1149, 1367, 406, 1143, 675, 676, - 668, 669, 670, 671, 672, 673, 674, 667, 1200, 984, - 677, 752, 987, 988, 1623, 920, 666, 665, 675, 676, - 668, 669, 670, 671, 672, 673, 674, 667, 1233, 1209, - 677, 1208, 407, 1234, 1366, 989, 95, 1199, 1285, 972, - 296, 1331, 745, 296, 797, 604, 1277, 1598, 95, 1597, - 296, 1478, 417, 973, 746, 1533, 1275, 1269, 1513, 921, - 1155, 666, 665, 675, 676, 668, 669, 670, 671, 672, - 673, 674, 667, 993, 1115, 677, 871, 1198, 95, 1033, - 295, 95, 296, 415, 296, 412, 413, 1477, 416, 1204, - 72, 295, 295, 295, 295, 295, 1168, 1225, 424, 1476, - 409, 1370, 1207, 295, 1169, 1211, 634, 295, 1179, 1184, - 1206, 295, 425, 1176, 1213, 1216, 295, 295, 1640, 1639, - 295, 295, 295, 756, 757, 427, 898, 426, 766, 759, - 740, 1640, 1203, 1262, 1580, 94, 1506, 994, 411, 1186, - 1214, 1212, 70, 1066, 1268, 1265, 75, 67, 1273, 1273, - 1251, 1, 1226, 317, 1253, 1229, 1632, 1442, 1220, 1201, - 1202, 750, 1238, 1156, 1157, 1158, 1514, 1121, 1599, 1248, - 878, 1249, 1548, 1227, 1228, 1274, 1230, 1254, 1242, 1412, - 1257, 1072, 1063, 94, 94, 83, 571, 82, 1284, 1590, - 1286, 1287, 1288, 890, 618, 1071, 1282, 1283, 1270, 1271, - 1070, 1025, 1028, 1029, 1030, 1026, 424, 1027, 1031, 1556, - 1291, 1390, 1391, 94, 1279, 1086, 1504, 1420, 1276, 1595, - 425, 805, 803, 804, 1164, 1165, 802, 807, 806, 1297, - 801, 421, 422, 427, 310, 426, 903, 1296, 94, 327, - 1313, 1032, 793, 1111, 943, 1182, 1337, 760, 86, 1315, - 1314, 1117, 1083, 307, 628, 629, 1339, 1328, 1338, 312, - 280, 1329, 685, 1205, 1330, 1308, 1327, 1362, 1258, 445, - 438, 1381, 1358, 992, 999, 748, 295, 1475, 296, 1369, - 1183, 1352, 1336, 296, 714, 974, 94, 1351, 775, 296, - 350, 913, 94, 94, 1337, 296, 1225, 954, 1376, 365, - 362, 1304, 1305, 1306, 363, 1003, 95, 955, 1217, 1365, - 659, 1379, 348, 342, 774, 95, 767, 1024, 94, 1022, - 1021, 295, 780, 1385, 1392, 1388, 773, 95, 95, 1007, - 420, 971, 1574, 1394, 1469, 94, 419, 94, 94, 53, - 34, 1273, 1273, 1066, 332, 1066, 642, 1411, 1360, 1402, - 1401, 1404, 428, 1405, 28, 1403, 1426, 23, 22, 21, - 20, 1373, 19, 1410, 25, 295, 18, 1417, 1418, 1415, - 17, 16, 592, 1307, 1371, 38, 1424, 1425, 1312, 1309, - 1300, 1310, 1303, 27, 1299, 295, 26, 15, 1301, 1302, - 14, 94, 13, 1443, 94, 94, 94, 295, 12, 1332, - 1333, 11, 1311, 1473, 10, 9, 5, 4, 645, 24, - 1435, 703, 2, 0, 1353, 1354, 0, 1355, 1356, 0, - 0, 0, 0, 1448, 1449, 1436, 0, 1438, 95, 1363, - 1364, 296, 0, 296, 296, 0, 95, 0, 0, 0, - 0, 1457, 95, 0, 666, 665, 675, 676, 668, 669, - 670, 671, 672, 673, 674, 667, 0, 0, 677, 0, - 0, 0, 0, 0, 1225, 1479, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1487, 0, 0, 0, 1454, - 1455, 94, 1456, 1452, 1488, 1458, 0, 1460, 0, 1066, - 94, 1265, 1497, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1498, 0, 94, 0, 0, 0, 0, - 0, 0, 94, 0, 0, 0, 1422, 0, 0, 0, - 1516, 0, 0, 0, 1471, 0, 1521, 0, 0, 0, - 0, 0, 0, 0, 1507, 0, 1509, 0, 0, 1519, - 0, 0, 0, 341, 0, 0, 0, 0, 0, 0, - 1489, 0, 1501, 1490, 94, 94, 1492, 94, 1512, 0, - 0, 1520, 94, 0, 94, 94, 94, 295, 1532, 296, - 1450, 94, 1379, 1534, 95, 0, 0, 0, 0, 296, - 296, 95, 95, 95, 1546, 0, 1553, 296, 94, 295, - 1560, 296, 0, 1541, 296, 1542, 1544, 1545, 296, 0, - 95, 1561, 0, 1562, 0, 95, 95, 95, 296, 95, - 95, 0, 0, 0, 1527, 0, 0, 0, 0, 1568, - 1581, 1589, 95, 95, 1536, 0, 94, 1379, 0, 1587, - 1588, 0, 1540, 0, 0, 0, 0, 94, 94, 1531, - 341, 0, 1547, 1602, 0, 1516, 1066, 0, 1603, 0, - 0, 0, 0, 94, 0, 0, 0, 0, 1225, 0, - 1609, 96, 97, 98, 295, 0, 0, 0, 0, 0, - 0, 0, 94, 0, 0, 0, 0, 0, 1617, 0, - 0, 0, 957, 958, 0, 0, 0, 0, 0, 1624, - 1622, 0, 94, 1472, 0, 0, 0, 95, 0, 0, - 0, 0, 0, 1522, 1523, 1524, 1525, 1526, 1637, 0, - 0, 1529, 1530, 1648, 0, 299, 0, 0, 0, 1467, - 0, 991, 0, 1626, 302, 0, 0, 0, 0, 0, - 95, 95, 311, 0, 666, 665, 675, 676, 668, 669, - 670, 671, 672, 673, 674, 667, 0, 0, 677, 95, - 0, 0, 0, 0, 0, 0, 296, 0, 0, 95, - 0, 0, 0, 296, 0, 296, 309, 0, 0, 0, - 0, 0, 316, 296, 296, 296, 0, 0, 0, 0, - 0, 95, 0, 0, 95, 379, 30, 0, 0, 0, - 0, 1466, 0, 0, 0, 95, 95, 0, 0, 0, - 0, 0, 300, 666, 665, 675, 676, 668, 669, 670, - 671, 672, 673, 674, 667, 0, 30, 677, 1465, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, - 303, 0, 314, 315, 322, 0, 0, 0, 306, 308, - 319, 304, 305, 324, 323, 0, 301, 321, 320, 296, - 95, 0, 95, 0, 0, 410, 0, 0, 296, 296, - 296, 296, 296, 0, 0, 296, 296, 0, 0, 296, - 95, 0, 0, 0, 1641, 666, 665, 675, 676, 668, - 669, 670, 671, 672, 673, 674, 667, 296, 0, 677, - 0, 0, 0, 296, 296, 296, 0, 0, 0, 296, - 95, 0, 666, 665, 675, 676, 668, 669, 670, 671, - 672, 673, 674, 667, 0, 0, 677, 0, 0, 0, - 0, 0, 0, 0, 1162, 0, 0, 0, 1163, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1170, - 1171, 0, 0, 0, 0, 1177, 0, 0, 1180, 1181, - 0, 0, 0, 0, 0, 0, 1187, 0, 0, 0, - 1189, 0, 0, 1192, 1193, 1194, 1195, 1196, 0, 0, - 0, 0, 0, 0, 0, 661, 0, 664, 0, 0, - 0, 0, 376, 678, 679, 680, 681, 682, 683, 684, - 1464, 662, 663, 660, 666, 665, 675, 676, 668, 669, - 670, 671, 672, 673, 674, 667, 296, 0, 677, 0, - 0, 0, 0, 1240, 1241, 0, 0, 296, 296, 296, - 296, 296, 93, 0, 0, 0, 0, 0, 0, 296, - 0, 0, 0, 296, 329, 0, 0, 296, 0, 0, - 0, 0, 296, 296, 0, 0, 296, 296, 296, 666, + 405, 1640, 1630, 1437, 1319, 1221, 349, 1597, 1064, 1546, + 1499, 1512, 1241, 364, 1374, 1410, 1036, 744, 1093, 378, + 751, 1222, 1060, 414, 1371, 73, 3, 1270, 1375, 704, + 1033, 1073, 1107, 942, 1380, 1338, 1063, 1208, 876, 605, + 94, 1158, 1296, 335, 295, 949, 318, 295, 1386, 1287, + 71, 1077, 94, 447, 295, 1015, 777, 789, 1022, 1038, + 782, 749, 754, 975, 895, 919, 772, 351, 573, 408, + 786, 771, 779, 29, 788, 761, 1103, 69, 1044, 717, + 347, 74, 94, 614, 905, 94, 295, 718, 295, 340, + 68, 8, 7, 6, 594, 1633, 423, 1617, 1628, 336, + 293, 283, 339, 1605, 281, 1625, 1438, 1616, 1604, 1355, + 331, 622, 1467, 578, 76, 77, 78, 79, 80, 81, + 1258, 1405, 1406, 1257, 1055, 1056, 1259, 31, 624, 1404, + 62, 35, 36, 1054, 338, 291, 287, 288, 289, 429, + 433, 337, 575, 409, 577, 1278, 790, 1126, 791, 637, + 1086, 390, 441, 396, 397, 394, 395, 393, 392, 391, + 1321, 1125, 96, 97, 98, 1502, 1094, 398, 399, 1458, + 1572, 666, 665, 675, 676, 668, 669, 670, 671, 672, + 673, 674, 667, 61, 632, 677, 1456, 328, 633, 630, + 631, 904, 330, 326, 952, 864, 96, 97, 98, 96, + 97, 98, 635, 284, 625, 626, 627, 1124, 863, 1323, + 444, 636, 861, 1627, 1624, 1598, 1322, 1590, 1318, 1016, + 620, 1413, 31, 32, 33, 62, 35, 36, 1648, 282, + 595, 1547, 580, 611, 1080, 613, 865, 906, 907, 908, + 1555, 435, 66, 1324, 862, 1644, 1549, 37, 56, 57, + 285, 59, 1242, 1244, 869, 640, 60, 1087, 852, 1080, + 1121, 1118, 1119, 290, 1117, 1397, 1396, 610, 612, 1395, + 96, 97, 98, 576, 46, 583, 298, 286, 61, 689, + 690, 1579, 295, 585, 586, 1481, 1403, 295, 1315, 596, + 1213, 1187, 1138, 295, 1317, 1137, 1177, 1128, 1131, 295, + 603, 1174, 1166, 609, 1050, 765, 702, 601, 667, 1061, + 94, 677, 1254, 677, 926, 896, 994, 1548, 615, 94, + 607, 657, 84, 619, 656, 654, 891, 1588, 924, 925, + 923, 94, 94, 1603, 1243, 621, 654, 1123, 584, 590, + 1094, 657, 1079, 593, 39, 40, 42, 41, 44, 600, + 58, 1573, 657, 1556, 1554, 602, 1564, 638, 646, 1122, + 608, 85, 1173, 1384, 792, 1642, 822, 1079, 1643, 650, + 1641, 976, 1357, 45, 65, 64, 1083, 854, 54, 55, + 43, 651, 652, 1084, 597, 598, 599, 1276, 616, 617, + 758, 976, 63, 1184, 47, 48, 787, 49, 50, 51, + 52, 1593, 1316, 1127, 1314, 1610, 897, 587, 606, 588, + 689, 690, 589, 1464, 687, 689, 690, 892, 1129, 61, + 1608, 655, 656, 654, 649, 647, 648, 418, 1508, 741, + 639, 922, 94, 434, 1507, 295, 742, 295, 295, 657, + 94, 1649, 96, 97, 98, 1291, 94, 1151, 1152, 1153, + 1290, 740, 1279, 705, 810, 666, 665, 675, 676, 668, + 669, 670, 671, 672, 673, 674, 667, 770, 431, 677, + 1589, 720, 722, 724, 726, 728, 730, 731, 439, 721, + 723, 1525, 727, 729, 1505, 732, 1471, 63, 1288, 1650, + 889, 769, 881, 743, 781, 823, 1424, 666, 665, 675, + 676, 668, 669, 670, 671, 672, 673, 674, 667, 867, + 591, 677, 1159, 436, 437, 1561, 579, 999, 1000, 1560, + 755, 836, 839, 840, 841, 842, 843, 844, 341, 845, + 846, 847, 848, 849, 824, 825, 826, 827, 808, 809, + 837, 1420, 811, 1081, 812, 813, 814, 815, 816, 817, + 818, 819, 820, 821, 828, 829, 830, 831, 832, 833, + 834, 835, 670, 671, 672, 673, 674, 667, 444, 70, + 677, 1552, 1626, 295, 655, 656, 654, 850, 94, 1383, + 853, 1339, 855, 295, 295, 94, 94, 94, 655, 656, + 654, 295, 657, 996, 1372, 295, 1359, 1383, 295, 874, + 875, 1477, 295, 1209, 94, 653, 657, 581, 582, 94, + 94, 94, 295, 94, 94, 753, 1209, 838, 655, 656, + 654, 1563, 1341, 914, 916, 917, 94, 94, 418, 800, + 915, 96, 97, 98, 1428, 1306, 657, 995, 1019, 856, + 857, 96, 97, 98, 880, 944, 61, 866, 96, 97, + 98, 781, 1261, 1019, 873, 878, 655, 656, 654, 1343, + 1262, 1347, 418, 1342, 1053, 1340, 1383, 870, 886, 1618, + 1345, 1302, 1303, 1304, 657, 1612, 418, 1190, 943, 1344, + 920, 367, 366, 369, 370, 371, 372, 945, 1189, 851, + 368, 373, 1346, 1348, 899, 72, 858, 859, 860, 1552, + 1601, 94, 666, 665, 675, 676, 668, 669, 670, 671, + 672, 673, 674, 667, 1007, 879, 677, 964, 967, 901, + 883, 884, 885, 977, 887, 888, 959, 1045, 921, 1552, + 418, 1552, 1580, 1008, 94, 94, 997, 893, 894, 1552, + 1551, 954, 1007, 1305, 1497, 1496, 1483, 418, 1310, 1307, + 1298, 1308, 1301, 94, 1297, 1248, 955, 1045, 1299, 1300, + 295, 406, 705, 94, 411, 989, 868, 295, 31, 295, + 946, 947, 1309, 1480, 418, 1001, 784, 295, 295, 295, + 1514, 956, 985, 986, 1007, 94, 1430, 1429, 94, 1426, + 1427, 1426, 1425, 1007, 418, 1019, 418, 653, 418, 94, + 94, 95, 1034, 1532, 1013, 296, 799, 798, 296, 1018, + 1088, 31, 658, 95, 1488, 296, 1010, 1108, 1416, 955, + 61, 1387, 1388, 1014, 61, 1017, 1046, 1046, 1265, 1104, + 1099, 953, 1095, 1096, 1097, 1042, 31, 1098, 1011, 1393, + 1320, 1019, 1515, 95, 1111, 1635, 95, 296, 341, 296, + 1631, 1043, 1009, 295, 94, 1051, 94, 715, 1130, 1048, + 1052, 1216, 295, 295, 295, 295, 295, 61, 1068, 295, + 295, 1217, 1418, 295, 94, 1047, 1047, 1049, 1045, 1390, + 1372, 1292, 1109, 902, 747, 750, 1463, 872, 1233, 1392, + 1231, 295, 61, 1234, 953, 1232, 1230, 295, 295, 295, + 1229, 960, 961, 295, 94, 966, 969, 970, 1235, 1112, + 1028, 1029, 1198, 444, 1622, 1172, 444, 1171, 1132, 1133, + 1134, 1135, 1136, 1105, 1106, 1139, 1140, 1065, 1615, 1141, + 984, 424, 1364, 987, 988, 1144, 655, 656, 654, 1148, + 752, 1620, 1207, 920, 1206, 425, 407, 1143, 1363, 1197, + 972, 1470, 1283, 797, 657, 1147, 756, 757, 427, 1149, + 426, 604, 1275, 1595, 973, 1113, 1594, 1115, 1530, 1273, + 666, 665, 675, 676, 668, 669, 670, 671, 672, 673, + 674, 667, 1267, 1168, 677, 1142, 1475, 1032, 1510, 1154, + 992, 921, 666, 665, 675, 676, 668, 669, 670, 671, + 672, 673, 674, 667, 1114, 871, 677, 1196, 415, 295, + 1024, 1027, 1028, 1029, 1025, 745, 1026, 1030, 1474, 1202, + 295, 295, 295, 295, 295, 1223, 1167, 746, 412, 413, + 409, 416, 295, 72, 1205, 1473, 295, 1367, 1183, 1211, + 295, 1218, 1204, 296, 1209, 295, 295, 634, 296, 295, + 295, 295, 1214, 1178, 296, 1637, 1636, 1637, 1175, 1201, + 296, 1240, 1260, 898, 94, 766, 1089, 1090, 1091, 1092, + 1210, 95, 1263, 1266, 759, 1249, 882, 1271, 1271, 1251, + 95, 1577, 1100, 1101, 1102, 1503, 993, 1225, 1226, 1236, + 1228, 1224, 95, 95, 1227, 411, 70, 75, 1247, 1246, + 67, 1, 1250, 900, 878, 1272, 1212, 317, 1280, 1281, + 1252, 1255, 94, 94, 1629, 1439, 1282, 1511, 1284, 1285, + 1286, 1120, 909, 910, 911, 912, 980, 1268, 1269, 666, 665, 675, 676, 668, 669, 670, 671, 672, 673, 674, - 667, 95, 0, 677, 446, 0, 0, 574, 0, 0, - 0, 0, 0, 0, 666, 665, 675, 676, 668, 669, - 670, 671, 672, 673, 674, 667, 0, 0, 677, 0, - 0, 0, 0, 0, 0, 623, 0, 0, 0, 1161, - 0, 0, 0, 0, 623, 0, 0, 0, 0, 95, - 95, 0, 0, 0, 0, 0, 0, 0, 30, 666, + 667, 1596, 94, 677, 1545, 1163, 1164, 1409, 1071, 1289, + 675, 676, 668, 669, 670, 671, 672, 673, 674, 667, + 1295, 1311, 677, 1062, 83, 571, 1181, 94, 82, 1587, + 890, 618, 1070, 943, 1069, 1553, 1277, 962, 963, 1085, + 1501, 1417, 1274, 1592, 805, 803, 1337, 804, 1336, 802, + 807, 806, 1065, 95, 801, 310, 296, 1328, 296, 296, + 417, 95, 1356, 903, 295, 327, 1349, 95, 1326, 1350, + 1031, 1334, 1327, 793, 94, 1110, 760, 86, 1313, 1312, + 94, 94, 1373, 1223, 1294, 1116, 954, 1082, 307, 668, + 669, 670, 671, 672, 673, 674, 667, 1376, 1370, 677, + 628, 955, 629, 312, 280, 685, 94, 1203, 1256, 295, + 445, 438, 1378, 1325, 991, 998, 748, 1472, 1366, 1382, + 1365, 1059, 1182, 94, 714, 94, 94, 974, 775, 1271, + 1271, 350, 913, 1408, 365, 362, 1391, 363, 1002, 1400, + 1398, 1215, 659, 348, 1423, 1399, 342, 1401, 774, 1402, + 767, 1023, 1021, 295, 1020, 1335, 1414, 1415, 1412, 1407, + 780, 1389, 1385, 1421, 1422, 773, 1006, 420, 971, 1571, + 1466, 419, 53, 295, 34, 332, 1360, 642, 428, 94, + 28, 1440, 94, 94, 94, 295, 1024, 1027, 1028, 1029, + 1025, 23, 1026, 1030, 296, 22, 1387, 1388, 21, 95, + 1432, 20, 1335, 19, 296, 296, 95, 95, 95, 1431, + 25, 18, 296, 379, 30, 1433, 296, 1435, 17, 296, + 1449, 16, 592, 296, 38, 95, 1445, 1446, 27, 1434, + 95, 95, 95, 296, 95, 95, 1454, 26, 15, 14, + 13, 1444, 12, 11, 30, 424, 10, 95, 95, 9, + 1223, 1065, 5, 1065, 4, 645, 24, 703, 1476, 425, + 2, 0, 0, 1484, 0, 1485, 0, 0, 94, 0, + 421, 422, 427, 0, 426, 0, 1263, 94, 0, 0, + 1494, 0, 0, 410, 0, 0, 0, 0, 0, 0, + 0, 0, 94, 0, 0, 0, 0, 0, 1495, 94, + 0, 0, 0, 0, 1504, 1185, 1506, 0, 0, 0, + 0, 0, 0, 1518, 0, 0, 0, 0, 0, 0, + 0, 0, 95, 0, 1199, 1200, 750, 1516, 0, 0, + 0, 1517, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 94, 94, 0, 94, 0, 0, 0, 0, 94, + 1524, 94, 94, 94, 295, 95, 95, 1376, 94, 1538, + 0, 1539, 1541, 1542, 1529, 1533, 1531, 0, 1537, 0, + 1543, 0, 0, 1550, 95, 94, 295, 1557, 1544, 0, + 0, 296, 0, 0, 95, 1565, 0, 1558, 296, 1559, + 296, 0, 0, 96, 97, 98, 1065, 0, 296, 296, + 296, 0, 0, 1509, 0, 0, 95, 1578, 1586, 95, + 0, 0, 1376, 94, 0, 1585, 1584, 0, 0, 0, + 95, 95, 0, 0, 94, 94, 0, 1513, 0, 0, + 0, 0, 1566, 1600, 0, 1599, 0, 0, 0, 0, + 94, 0, 0, 1606, 1223, 0, 0, 299, 0, 0, + 0, 295, 0, 0, 0, 0, 302, 1451, 1452, 94, + 1453, 0, 0, 1455, 311, 1457, 1614, 0, 0, 0, + 0, 0, 0, 0, 296, 95, 0, 95, 1621, 94, + 1619, 0, 0, 296, 296, 296, 296, 296, 0, 1623, + 296, 296, 1634, 0, 296, 95, 0, 0, 309, 1645, + 0, 0, 0, 0, 316, 0, 0, 1609, 0, 0, + 0, 0, 296, 1358, 0, 0, 0, 0, 296, 296, + 296, 0, 0, 623, 296, 95, 0, 0, 0, 1498, + 0, 0, 623, 0, 300, 0, 0, 0, 1368, 0, + 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0, 0, 1513, 1065, 0, 0, 0, 0, 0, 686, + 688, 313, 303, 0, 314, 315, 322, 0, 0, 0, + 306, 308, 319, 304, 305, 324, 323, 0, 301, 321, + 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 701, 0, 0, 0, 706, 707, 708, 709, 710, 711, + 712, 713, 0, 716, 719, 719, 719, 725, 719, 719, + 725, 719, 733, 734, 735, 736, 737, 738, 739, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, + 296, 0, 1469, 0, 0, 0, 0, 0, 0, 0, + 0, 296, 296, 296, 296, 296, 0, 0, 0, 0, + 776, 0, 0, 296, 0, 1462, 0, 296, 0, 0, + 0, 296, 0, 0, 0, 0, 296, 296, 0, 0, + 296, 296, 296, 666, 665, 675, 676, 668, 669, 670, + 671, 672, 673, 674, 667, 95, 376, 677, 1468, 1461, + 957, 958, 665, 675, 676, 668, 669, 670, 671, 672, + 673, 674, 667, 0, 0, 677, 341, 0, 0, 0, + 0, 0, 0, 1486, 0, 0, 1487, 0, 0, 1489, + 0, 0, 0, 0, 0, 0, 93, 0, 0, 990, + 0, 0, 0, 95, 95, 0, 0, 0, 329, 666, 665, 675, 676, 668, 669, 670, 671, 672, 673, 674, - 667, 686, 688, 677, 0, 0, 0, 0, 0, 95, - 0, 0, 0, 1334, 1335, 0, 0, 0, 0, 0, + 667, 0, 0, 677, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 446, 0, + 0, 574, 0, 666, 665, 675, 676, 668, 669, 670, + 671, 672, 673, 674, 667, 1329, 0, 677, 95, 0, + 0, 623, 0, 0, 0, 0, 0, 0, 623, 623, + 623, 0, 1528, 341, 0, 666, 665, 675, 676, 668, + 669, 670, 671, 672, 673, 674, 667, 623, 0, 677, + 0, 0, 623, 623, 623, 296, 623, 623, 0, 0, + 0, 0, 0, 0, 0, 95, 661, 0, 664, 623, + 623, 95, 95, 0, 678, 679, 680, 681, 682, 683, + 684, 1160, 662, 663, 660, 666, 665, 675, 676, 668, + 669, 670, 671, 672, 673, 674, 667, 95, 0, 677, + 296, 666, 665, 675, 676, 668, 669, 670, 671, 672, + 673, 674, 667, 0, 95, 677, 95, 95, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 296, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1161, 0, 296, 0, 1162, 0, 0, 0, + 95, 0, 0, 95, 95, 95, 296, 1169, 1170, 0, + 0, 0, 0, 1176, 0, 0, 1179, 1180, 0, 0, + 0, 0, 0, 0, 1186, 0, 0, 0, 1188, 0, + 0, 1191, 1192, 1193, 1194, 1195, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1035, 0, 0, 0, 0, 0, 446, 0, 0, 0, + 0, 0, 0, 0, 0, 446, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 641, 643, 0, + 1238, 1239, 0, 0, 0, 0, 0, 0, 0, 95, + 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 701, 0, 95, 0, 706, 707, 708, 709, - 710, 711, 712, 713, 0, 716, 719, 719, 719, 725, - 719, 719, 725, 719, 733, 734, 735, 736, 737, 738, - 739, 0, 0, 0, 0, 0, 30, 0, 0, 0, - 0, 0, 296, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 95, 0, 0, 0, 0, 0, 95, 95, - 0, 1397, 776, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, + 95, 0, 0, 0, 0, 0, 0, 623, 0, 623, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 95, 0, 0, 296, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 623, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 95, 0, 95, 95, 0, 0, 0, 0, 0, + 0, 0, 95, 95, 0, 95, 0, 0, 0, 0, + 95, 0, 95, 95, 95, 296, 0, 0, 763, 95, + 0, 0, 0, 0, 0, 0, 446, 0, 0, 0, + 0, 0, 794, 0, 0, 0, 95, 296, 0, 0, + 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1332, 1333, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1165, 0, 0, + 410, 0, 0, 0, 95, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 95, 95, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 296, 0, 0, 0, 0, 0, 0, 0, + 95, 0, 776, 0, 0, 0, 0, 1394, 0, 1219, + 1220, 0, 0, 776, 776, 776, 776, 776, 0, 0, + 95, 0, 0, 0, 0, 0, 0, 0, 0, 1035, + 0, 1245, 0, 0, 0, 0, 0, 0, 776, 0, + 0, 0, 776, 0, 446, 0, 0, 0, 0, 0, + 0, 446, 446, 446, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 446, 0, 0, 0, 0, 446, 446, 446, 0, 446, + 446, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 446, 446, 0, 0, 0, 0, 0, 0, + 0, 1448, 0, 0, 0, 1450, 623, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1459, 1460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 623, 0, 0, 0, 0, + 0, 0, 0, 0, 1478, 1479, 0, 1482, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 296, 446, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 296, 0, 641, 643, 1451, 0, 95, 0, 1453, - 95, 95, 95, 296, 0, 0, 0, 0, 0, 0, - 1462, 1463, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1493, 0, 948, 0, 446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1481, - 1482, 0, 1485, 623, 0, 0, 0, 0, 0, 0, - 623, 623, 623, 0, 0, 0, 0, 0, 0, 0, - 1496, 0, 0, 0, 0, 0, 0, 0, 0, 623, - 0, 0, 0, 0, 623, 623, 623, 0, 623, 623, - 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, - 0, 623, 623, 0, 763, 0, 95, 0, 0, 0, - 0, 0, 446, 0, 0, 0, 0, 0, 794, 0, - 0, 95, 0, 0, 0, 0, 0, 0, 95, 0, + 0, 0, 0, 978, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 982, 983, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1377, 0, 30, 0, 0, 0, 0, 0, 1003, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 763, + 0, 0, 446, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 776, 0, 0, 0, 0, 0, 0, 0, + 0, 446, 0, 0, 446, 0, 0, 1540, 0, 0, + 0, 0, 0, 0, 0, 446, 574, 0, 0, 0, + 0, 0, 0, 691, 692, 693, 694, 695, 696, 697, + 698, 699, 700, 0, 0, 0, 1567, 1568, 1569, 1570, + 0, 1574, 0, 1575, 1576, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1581, 0, 1582, 1583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 446, 0, 446, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1602, 0, + 446, 0, 0, 0, 0, 0, 0, 0, 0, 1465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1543, 0, 0, 0, 0, 0, 0, 0, - 95, 95, 0, 95, 0, 0, 0, 0, 95, 0, - 95, 95, 95, 296, 0, 0, 0, 95, 0, 0, - 0, 1570, 1571, 1572, 1573, 0, 1577, 0, 1578, 1579, - 0, 0, 0, 0, 95, 296, 0, 0, 0, 0, - 0, 1584, 0, 1585, 1586, 0, 0, 0, 0, 0, + 0, 0, 0, 1611, 0, 0, 0, 0, 0, 0, + 1150, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1490, + 1491, 1492, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1646, 1647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 95, 1605, 0, 0, 0, 0, 0, 0, - 446, 0, 1036, 95, 95, 0, 0, 446, 446, 446, - 0, 0, 0, 0, 0, 0, 0, 0, 1614, 95, - 0, 0, 0, 0, 0, 0, 446, 0, 0, 0, - 296, 446, 446, 446, 0, 446, 446, 0, 95, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 446, 446, - 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, - 1649, 1650, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 623, - 0, 623, 0, 377, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 623, + 377, 0, 0, 0, 0, 623, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 948, 0, 446, 0, 294, 0, 0, - 325, 0, 0, 0, 0, 0, 0, 294, 0, 978, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 982, 983, 0, 0, - 432, 432, 0, 0, 0, 0, 0, 0, 0, 294, - 0, 294, 0, 0, 0, 1004, 0, 0, 0, 1166, - 0, 0, 410, 0, 0, 763, 0, 0, 446, 0, + 0, 0, 0, 0, 294, 0, 0, 325, 0, 0, + 0, 1377, 0, 30, 294, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 978, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 432, 432, 0, + 0, 0, 0, 0, 1562, 0, 294, 0, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 446, 0, 0, + 0, 0, 0, 0, 0, 0, 1377, 0, 0, 0, 446, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 574, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 776, 0, 0, 0, 0, - 0, 0, 1221, 1222, 0, 0, 776, 776, 776, 776, - 776, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1036, 0, 1247, 0, 0, 0, 0, 0, - 0, 776, 0, 0, 0, 776, 446, 0, 446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 777, 0, 0, 0, 446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1151, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 293, 0, 0, 623, - 0, 0, 0, 0, 0, 0, 331, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1293, 446, + 918, 0, 0, 927, 928, 929, 930, 931, 932, 933, + 934, 935, 936, 937, 938, 939, 940, 941, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 446, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1632, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 446, 0, 0, 0, 0, 0, 0, + 981, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 294, 0, 0, 623, 0, - 294, 0, 0, 0, 0, 0, 294, 0, 575, 0, - 577, 0, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 446, 0, 0, 978, 0, 0, 1379, 1381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 294, 0, 0, 0, 0, 294, 0, 0, + 0, 0, 1381, 294, 0, 0, 0, 0, 0, 294, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, + 0, 446, 1411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 978, 0, 0, 1380, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1436, 0, 0, 1441, 1442, + 1443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 776, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 432, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 294, 0, - 294, 783, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1295, 446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 446, 0, 0, 0, 0, - 0, 0, 0, 0, 584, 0, 0, 0, 0, 593, - 0, 0, 0, 1468, 0, 600, 0, 0, 0, 0, - 446, 602, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 432, 0, 0, 0, 1155, 1156, 1157, 0, 0, + 978, 0, 0, 0, 0, 294, 0, 294, 783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1493, 1494, 1495, 0, 0, 0, + 0, 0, 0, 0, 446, 0, 0, 0, 0, 0, + 0, 0, 0, 1500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, 0, - 0, 978, 0, 0, 1382, 1384, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 294, 0, 0, 0, - 623, 0, 0, 0, 0, 0, 294, 294, 0, 0, - 1384, 0, 0, 0, 294, 0, 0, 0, 294, 0, - 0, 294, 0, 0, 0, 877, 0, 446, 0, 446, - 1414, 0, 0, 0, 0, 294, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1380, 0, 30, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 769, 0, 0, - 781, 0, 0, 0, 0, 0, 0, 0, 0, 1565, - 0, 0, 0, 1439, 0, 0, 1444, 1445, 1446, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1380, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 432, 877, 0, 0, 0, - 432, 432, 0, 0, 432, 432, 432, 0, 0, 0, - 979, 0, 0, 0, 0, 0, 0, 0, 0, 978, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 432, - 432, 432, 432, 432, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 446, 0, 0, 0, 0, 0, 0, - 0, 0, 1503, 294, 0, 0, 0, 0, 0, 877, - 294, 0, 294, 0, 0, 0, 1635, 446, 0, 0, - 294, 1041, 294, 0, 446, 800, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 856, 857, 0, 0, 0, - 0, 0, 0, 866, 0, 0, 0, 781, 0, 0, - 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 886, 0, 1537, 1538, 0, 1539, - 0, 0, 0, 0, 1503, 0, 1503, 1503, 1503, 0, - 0, 0, 0, 1414, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 294, 0, 0, 0, - 1503, 0, 0, 0, 0, 294, 294, 294, 294, 294, - 0, 0, 294, 294, 0, 0, 294, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 294, 0, 0, 0, 1594, 0, - 1146, 1147, 294, 0, 0, 0, 294, 0, 0, 446, - 446, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 978, 0, 1610, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1616, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 432, 432, 0, 0, 0, 0, - 0, 0, 0, 0, 1503, 0, 0, 0, 0, 0, - 0, 0, 1011, 0, 0, 432, 0, 0, 0, 1015, - 0, 1018, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1043, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 432, 294, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 979, 294, 294, 294, 294, 294, 0, - 0, 0, 0, 0, 0, 0, 1239, 0, 0, 0, - 294, 0, 0, 0, 1041, 0, 0, 0, 0, 294, - 294, 0, 0, 294, 1255, 877, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1113, 0, 0, 0, 0, - 0, 0, 0, 0, 1133, 1134, 1135, 1136, 1137, 0, - 0, 1140, 1141, 0, 0, 1142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1144, 0, 0, 0, 0, 0, 0, - 0, 1148, 0, 0, 0, 1150, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1534, 1535, 0, + 1536, 0, 0, 0, 0, 1500, 0, 1500, 1500, 1500, + 0, 0, 0, 0, 1411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1500, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 294, 294, 0, 0, 0, 0, 0, + 0, 294, 0, 0, 0, 294, 0, 0, 294, 1591, + 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, + 446, 446, 294, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 978, 0, 1607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1330, 1331, 0, 0, 0, 1500, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1351, 1352, 0, 1353, 1354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1361, 1362, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 432, 877, 0, 0, 0, 432, 432, 0, + 0, 432, 432, 432, 0, 0, 0, 979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 432, 432, 432, 432, 432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, + 294, 0, 0, 0, 0, 0, 877, 294, 0, 294, + 0, 0, 0, 0, 0, 0, 1419, 294, 1040, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 294, 0, 0, 0, 0, 1252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 294, 0, + 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, + 0, 0, 294, 294, 294, 294, 294, 0, 0, 294, + 294, 0, 0, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 294, 0, + 0, 294, 0, 0, 0, 0, 0, 1145, 1146, 294, + 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 432, 432, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1519, 1520, 1521, 1522, 1523, 0, 0, 0, + 1526, 1527, 432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 979, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 432, 294, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 979, + 294, 294, 294, 294, 294, 0, 0, 0, 0, 0, + 0, 0, 1237, 0, 0, 0, 294, 0, 0, 0, + 1040, 0, 0, 0, 0, 294, 294, 0, 0, 294, + 1253, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1041, 0, 0, 0, 0, 0, 0, 1434, 0, 0, + 0, 0, 0, 0, 0, 0, 432, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 877, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 294, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 979, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 294, 0, 0, 0, 0, 1437, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 979, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 557, 545, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1040, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 294, 0, 0, 557, + 545, 0, 0, 501, 560, 474, 491, 568, 492, 495, + 532, 459, 514, 188, 489, 0, 478, 454, 485, 455, + 476, 503, 129, 507, 473, 547, 517, 559, 158, 0, + 479, 534, 228, 122, 165, 566, 161, 523, 0, 236, + 176, 0, 0, 0, 505, 549, 512, 542, 500, 533, + 464, 522, 561, 490, 530, 562, 0, 0, 979, 96, + 97, 98, 0, 1066, 1067, 0, 0, 0, 0, 0, + 118, 294, 527, 556, 487, 529, 531, 570, 453, 524, + 0, 457, 460, 567, 552, 482, 483, 1264, 0, 0, + 0, 0, 0, 0, 504, 513, 539, 498, 0, 0, + 0, 0, 0, 0, 0, 0, 480, 0, 521, 0, + 0, 0, 461, 458, 0, 0, 0, 0, 502, 0, + 0, 0, 463, 0, 481, 540, 0, 451, 138, 544, + 551, 499, 297, 555, 497, 496, 558, 207, 0, 240, + 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, + 219, 548, 477, 486, 123, 484, 217, 195, 257, 520, + 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, + 275, 233, 103, 242, 254, 119, 227, 0, 0, 0, + 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, + 136, 125, 187, 249, 250, 124, 278, 111, 263, 107, + 112, 262, 181, 245, 253, 175, 168, 106, 251, 173, + 167, 156, 132, 144, 205, 164, 206, 145, 178, 177, + 179, 0, 456, 0, 237, 260, 279, 116, 472, 244, + 271, 274, 0, 209, 117, 137, 131, 204, 135, 159, + 270, 272, 273, 180, 113, 147, 234, 155, 163, 212, + 277, 194, 218, 120, 259, 235, 468, 471, 466, 467, + 515, 516, 563, 564, 565, 541, 462, 0, 469, 470, + 0, 546, 553, 554, 519, 99, 108, 160, 276, 210, + 134, 261, 452, 465, 127, 475, 0, 0, 488, 493, + 494, 506, 508, 509, 510, 511, 518, 525, 526, 528, + 535, 536, 537, 538, 543, 550, 569, 101, 102, 109, + 115, 121, 126, 130, 133, 139, 143, 146, 148, 149, + 150, 153, 166, 169, 170, 171, 172, 182, 183, 184, + 186, 189, 190, 191, 192, 193, 196, 198, 199, 200, + 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, + 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, + 258, 265, 268, 141, 255, 269, 557, 545, 0, 0, 501, 560, 474, 491, 568, 492, 495, 532, 459, 514, 188, 489, 0, 478, 454, 485, 455, 476, 503, 129, 507, 473, 547, 517, 559, 158, 0, 479, 534, 228, 122, 165, 566, 161, 523, 0, 236, 176, 0, 0, 0, 505, 549, 512, 542, 500, 533, 464, 522, 561, 490, 530, 562, 0, 0, 0, 96, 97, 98, 0, - 1067, 1068, 0, 0, 0, 0, 0, 118, 0, 527, + 1066, 1067, 0, 0, 0, 0, 0, 118, 0, 527, 556, 487, 529, 531, 570, 453, 524, 0, 457, 460, - 567, 552, 482, 483, 1266, 0, 0, 0, 0, 0, + 567, 552, 482, 483, 0, 0, 0, 0, 0, 0, 0, 504, 513, 539, 498, 0, 0, 0, 0, 0, - 0, 1569, 0, 480, 0, 521, 0, 0, 0, 461, + 0, 0, 0, 480, 0, 521, 0, 0, 0, 461, 458, 0, 0, 0, 0, 502, 0, 0, 0, 463, 0, 481, 540, 0, 451, 138, 544, 551, 499, 297, 555, 497, 496, 558, 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, 548, 477, 486, 123, 484, 217, 195, 257, 520, 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, - 242, 254, 119, 227, 0, 0, 1612, 105, 252, 239, + 242, 254, 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, 107, 112, 262, 181, 245, 253, 175, 168, 106, 251, 173, 167, 156, 132, @@ -1383,7 +1430,7 @@ var yyAct = [...]int{ 517, 559, 158, 0, 479, 534, 228, 122, 165, 566, 161, 523, 0, 236, 176, 0, 0, 0, 505, 549, 512, 542, 500, 533, 464, 522, 561, 490, 530, 562, - 0, 0, 0, 96, 97, 98, 0, 1067, 1068, 0, + 61, 0, 0, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 527, 556, 487, 529, 531, 570, 453, 524, 0, 457, 460, 567, 552, 482, 483, 0, 0, 0, 0, 0, 0, 0, 504, 513, @@ -1419,12 +1466,12 @@ var yyAct = [...]int{ 455, 476, 503, 129, 507, 473, 547, 517, 559, 158, 0, 479, 534, 228, 122, 165, 566, 161, 523, 0, 236, 176, 0, 0, 0, 505, 549, 512, 542, 500, - 533, 464, 522, 561, 490, 530, 562, 61, 0, 0, + 533, 464, 522, 561, 490, 530, 562, 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 527, 556, 487, 529, 531, 570, 453, 524, 0, 457, 460, 567, 552, 482, 483, 0, 0, 0, 0, 0, 0, 0, 504, 513, 539, 498, 0, - 0, 0, 0, 0, 0, 0, 0, 480, 0, 521, + 0, 0, 0, 0, 0, 1369, 0, 480, 0, 521, 0, 0, 0, 461, 458, 0, 0, 0, 0, 502, 0, 0, 0, 463, 0, 481, 540, 0, 451, 138, 544, 551, 499, 297, 555, 497, 496, 558, 207, 0, @@ -1461,7 +1508,7 @@ var yyAct = [...]int{ 527, 556, 487, 529, 531, 570, 453, 524, 0, 457, 460, 567, 552, 482, 483, 0, 0, 0, 0, 0, 0, 0, 504, 513, 539, 498, 0, 0, 0, 0, - 0, 0, 1372, 0, 480, 0, 521, 0, 0, 0, + 0, 0, 1254, 0, 480, 0, 521, 0, 0, 0, 461, 458, 0, 0, 0, 0, 502, 0, 0, 0, 463, 0, 481, 540, 0, 451, 138, 544, 551, 499, 297, 555, 497, 496, 558, 207, 0, 240, 142, 157, @@ -1497,7 +1544,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 118, 0, 527, 556, 487, 529, 531, 570, 453, 524, 0, 457, 460, 567, 552, 482, 483, 0, 0, 0, 0, 0, 0, 0, 504, - 513, 539, 498, 0, 0, 0, 0, 0, 0, 1256, + 513, 539, 498, 0, 0, 0, 0, 0, 0, 1012, 0, 480, 0, 521, 0, 0, 0, 461, 458, 0, 0, 0, 0, 502, 0, 0, 0, 463, 0, 481, 540, 0, 451, 138, 544, 551, 499, 297, 555, 497, @@ -1534,7 +1581,7 @@ var yyAct = [...]int{ 0, 0, 118, 0, 527, 556, 487, 529, 531, 570, 453, 524, 0, 457, 460, 567, 552, 482, 483, 0, 0, 0, 0, 0, 0, 0, 504, 513, 539, 498, - 0, 0, 0, 0, 0, 0, 1013, 0, 480, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 480, 0, 521, 0, 0, 0, 461, 458, 0, 0, 0, 0, 502, 0, 0, 0, 463, 0, 481, 540, 0, 451, 138, 544, 551, 499, 297, 555, 497, 496, 558, 207, @@ -1580,12 +1627,12 @@ var yyAct = [...]int{ 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, - 125, 187, 249, 250, 124, 278, 111, 263, 107, 112, + 125, 187, 249, 250, 124, 278, 111, 263, 107, 449, 262, 181, 245, 253, 175, 168, 106, 251, 173, 167, 156, 132, 144, 205, 164, 206, 145, 178, 177, 179, 0, 456, 0, 237, 260, 279, 116, 472, 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, 159, 270, - 272, 273, 180, 113, 147, 234, 155, 163, 212, 277, + 272, 273, 450, 448, 443, 442, 155, 163, 212, 277, 194, 218, 120, 259, 235, 468, 471, 466, 467, 515, 516, 563, 564, 565, 541, 462, 0, 469, 470, 0, 546, 553, 554, 519, 99, 108, 160, 276, 210, 134, @@ -1615,7 +1662,7 @@ var yyAct = [...]int{ 100, 110, 0, 140, 185, 215, 219, 548, 477, 486, 123, 484, 217, 195, 257, 520, 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, - 254, 119, 227, 0, 0, 0, 105, 252, 239, 174, + 785, 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, 107, 449, 262, 181, 245, 253, 175, 168, 106, 251, 173, 167, 156, 132, 144, @@ -1651,7 +1698,7 @@ var yyAct = [...]int{ 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, 548, 477, 486, 123, 484, 217, 195, 257, 520, 197, 216, 162, 246, 208, 256, 266, - 267, 243, 264, 275, 233, 103, 242, 785, 119, 227, + 267, 243, 264, 275, 233, 103, 242, 440, 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, 107, 449, 262, 181, 245, 253, 175, 168, @@ -1670,89 +1717,17 @@ var yyAct = [...]int{ 182, 183, 184, 186, 189, 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, - 241, 247, 248, 258, 265, 268, 141, 255, 269, 557, - 545, 0, 0, 501, 560, 474, 491, 568, 492, 495, - 532, 459, 514, 188, 489, 0, 478, 454, 485, 455, - 476, 503, 129, 507, 473, 547, 517, 559, 158, 0, - 479, 534, 228, 122, 165, 566, 161, 523, 0, 236, - 176, 0, 0, 0, 505, 549, 512, 542, 500, 533, - 464, 522, 561, 490, 530, 562, 0, 0, 0, 96, - 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, - 118, 0, 527, 556, 487, 529, 531, 570, 453, 524, - 0, 457, 460, 567, 552, 482, 483, 0, 0, 0, - 0, 0, 0, 0, 504, 513, 539, 498, 0, 0, - 0, 0, 0, 0, 0, 0, 480, 0, 521, 0, - 0, 0, 461, 458, 0, 0, 0, 0, 502, 0, - 0, 0, 463, 0, 481, 540, 0, 451, 138, 544, - 551, 499, 297, 555, 497, 496, 558, 207, 0, 240, - 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, - 219, 548, 477, 486, 123, 484, 217, 195, 257, 520, - 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, - 275, 233, 103, 242, 440, 119, 227, 0, 0, 0, - 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, - 136, 125, 187, 249, 250, 124, 278, 111, 263, 107, - 449, 262, 181, 245, 253, 175, 168, 106, 251, 173, - 167, 156, 132, 144, 205, 164, 206, 145, 178, 177, - 179, 0, 456, 0, 237, 260, 279, 116, 472, 244, - 271, 274, 0, 209, 117, 137, 131, 204, 135, 159, - 270, 272, 273, 450, 448, 443, 442, 155, 163, 212, - 277, 194, 218, 120, 259, 235, 468, 471, 466, 467, - 515, 516, 563, 564, 565, 541, 462, 0, 469, 470, - 0, 546, 553, 554, 519, 99, 108, 160, 276, 210, - 134, 261, 452, 465, 127, 475, 0, 0, 488, 493, - 494, 506, 508, 509, 510, 511, 518, 525, 526, 528, - 535, 536, 537, 538, 543, 550, 569, 101, 102, 109, - 115, 121, 126, 130, 133, 139, 143, 146, 148, 149, - 150, 153, 166, 169, 170, 171, 172, 182, 183, 184, - 186, 189, 190, 191, 192, 193, 196, 198, 199, 200, - 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, - 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, - 258, 265, 268, 141, 255, 269, 188, 0, 0, 950, - 0, 346, 0, 0, 0, 129, 0, 345, 0, 0, - 0, 158, 0, 951, 0, 228, 122, 165, 389, 161, - 0, 0, 236, 176, 0, 0, 0, 0, 0, 380, - 381, 0, 0, 0, 0, 0, 0, 0, 0, 61, - 0, 0, 96, 97, 98, 367, 366, 369, 370, 371, - 372, 0, 0, 118, 368, 373, 374, 375, 0, 0, - 0, 0, 343, 360, 0, 388, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 357, 358, 430, 0, 0, - 0, 403, 0, 359, 0, 0, 352, 353, 355, 354, - 356, 361, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 138, 402, 0, 0, 297, 0, 0, 400, 0, - 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, - 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, - 195, 257, 0, 197, 216, 162, 246, 208, 256, 266, - 267, 243, 264, 275, 233, 103, 242, 254, 119, 227, - 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, - 0, 213, 128, 136, 125, 187, 249, 250, 124, 278, - 111, 263, 107, 112, 262, 181, 245, 253, 175, 168, - 106, 251, 173, 167, 156, 132, 144, 205, 164, 206, - 145, 178, 177, 179, 0, 0, 0, 237, 260, 279, - 116, 0, 244, 271, 274, 0, 209, 117, 137, 131, - 204, 135, 159, 270, 272, 273, 180, 113, 147, 234, - 155, 163, 212, 277, 194, 218, 120, 259, 235, 390, - 401, 396, 397, 394, 395, 393, 392, 391, 404, 382, - 383, 384, 385, 387, 0, 398, 399, 386, 99, 108, - 160, 276, 210, 134, 261, 0, 0, 127, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 109, 115, 121, 126, 130, 133, 139, 143, - 146, 148, 149, 150, 153, 166, 169, 170, 171, 172, - 182, 183, 184, 186, 189, 190, 191, 192, 193, 196, - 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, - 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, - 0, 0, 0, 0, 346, 0, 0, 0, 129, 0, - 345, 0, 0, 0, 158, 0, 0, 0, 228, 122, + 0, 0, 950, 0, 346, 0, 0, 0, 129, 0, + 345, 0, 0, 0, 158, 0, 951, 0, 228, 122, 165, 389, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 380, 381, 0, 0, 0, 0, 0, 0, - 1058, 0, 61, 0, 0, 96, 97, 98, 367, 366, + 0, 0, 61, 0, 0, 96, 97, 98, 367, 366, 369, 370, 371, 372, 0, 0, 118, 368, 373, 374, - 375, 1059, 0, 0, 0, 343, 360, 0, 388, 0, + 375, 0, 0, 0, 0, 343, 360, 0, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 357, 358, - 0, 0, 0, 0, 403, 0, 359, 0, 0, 352, + 430, 0, 0, 0, 403, 0, 359, 0, 0, 352, 353, 355, 354, 356, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 402, 0, 0, 297, 0, 0, 400, 0, 207, 0, 240, 142, 157, 114, 154, @@ -1782,9 +1757,9 @@ var yyAct = [...]int{ 0, 129, 0, 345, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 389, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 380, 381, 0, 0, 0, - 0, 0, 0, 0, 0, 61, 0, 418, 96, 97, + 0, 0, 0, 1057, 0, 61, 0, 0, 96, 97, 98, 367, 366, 369, 370, 371, 372, 0, 0, 118, - 368, 373, 374, 375, 0, 0, 0, 0, 343, 360, + 368, 373, 374, 375, 1058, 0, 0, 0, 343, 360, 0, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 357, 358, 0, 0, 0, 0, 403, 0, 359, @@ -1818,11 +1793,11 @@ var yyAct = [...]int{ 158, 0, 0, 0, 228, 122, 165, 389, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, - 0, 96, 97, 98, 367, 366, 369, 370, 371, 372, + 418, 96, 97, 98, 367, 366, 369, 370, 371, 372, 0, 0, 118, 368, 373, 374, 375, 0, 0, 0, 0, 343, 360, 0, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 357, 358, 430, 0, 0, 0, + 0, 0, 0, 0, 357, 358, 0, 0, 0, 0, 403, 0, 359, 0, 0, 352, 353, 355, 354, 356, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 402, 0, 0, 297, 0, 0, 400, 0, 207, @@ -1853,7 +1828,7 @@ var yyAct = [...]int{ 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 389, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 61, 0, 0, 96, 97, 98, 367, 968, 369, + 0, 61, 0, 0, 96, 97, 98, 367, 366, 369, 370, 371, 372, 0, 0, 118, 368, 373, 374, 375, 0, 0, 0, 0, 343, 360, 0, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1889,7 +1864,7 @@ var yyAct = [...]int{ 228, 122, 165, 389, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 96, 97, 98, - 367, 965, 369, 370, 371, 372, 0, 0, 118, 368, + 367, 968, 369, 370, 371, 372, 0, 0, 118, 368, 373, 374, 375, 0, 0, 0, 0, 343, 360, 0, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1919,43 +1894,43 @@ var yyAct = [...]int{ 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, - 268, 141, 255, 269, 411, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, - 0, 0, 346, 0, 0, 0, 129, 0, 345, 0, - 0, 0, 158, 0, 0, 0, 228, 122, 165, 389, - 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, - 380, 381, 0, 0, 0, 0, 0, 0, 0, 0, - 61, 0, 0, 96, 97, 98, 367, 366, 369, 370, - 371, 372, 0, 0, 118, 368, 373, 374, 375, 0, - 0, 0, 0, 343, 360, 0, 388, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 357, 358, 0, 0, - 0, 0, 403, 0, 359, 0, 0, 352, 353, 355, - 354, 356, 361, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 138, 402, 0, 0, 297, 0, 0, 400, - 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, - 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, - 217, 195, 257, 0, 197, 216, 162, 246, 208, 256, - 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, - 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, - 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, - 278, 111, 263, 107, 112, 262, 181, 245, 253, 175, - 168, 106, 251, 173, 167, 156, 132, 144, 205, 164, - 206, 145, 178, 177, 179, 0, 0, 0, 237, 260, - 279, 116, 0, 244, 271, 274, 0, 209, 117, 137, - 131, 204, 135, 159, 270, 272, 273, 180, 113, 147, - 234, 155, 163, 212, 277, 194, 218, 120, 259, 235, - 390, 401, 396, 397, 394, 395, 393, 392, 391, 404, - 382, 383, 384, 385, 387, 0, 398, 399, 386, 99, - 108, 160, 276, 210, 134, 261, 0, 0, 127, 0, + 268, 141, 255, 269, 188, 0, 0, 0, 0, 346, + 0, 0, 0, 129, 0, 345, 0, 0, 0, 158, + 0, 0, 0, 228, 122, 165, 389, 161, 0, 0, + 236, 176, 0, 0, 0, 0, 0, 380, 381, 0, + 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, + 96, 97, 98, 367, 965, 369, 370, 371, 372, 0, + 0, 118, 368, 373, 374, 375, 0, 0, 0, 0, + 343, 360, 0, 388, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 357, 358, 430, 0, 0, 0, 403, + 0, 359, 0, 0, 352, 353, 355, 354, 356, 361, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 402, 0, 0, 297, 0, 0, 400, 0, 207, 0, + 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, + 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, + 0, 197, 216, 162, 246, 208, 256, 266, 267, 243, + 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, + 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, + 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, + 107, 112, 262, 181, 245, 253, 175, 168, 106, 251, + 173, 167, 156, 132, 144, 205, 164, 206, 145, 178, + 177, 179, 0, 0, 0, 237, 260, 279, 116, 0, + 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, + 159, 270, 272, 273, 180, 113, 147, 234, 155, 163, + 212, 277, 194, 218, 120, 259, 235, 390, 401, 396, + 397, 394, 395, 393, 392, 391, 404, 382, 383, 384, + 385, 387, 0, 398, 399, 386, 99, 108, 160, 276, + 210, 134, 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, + 109, 115, 121, 126, 130, 133, 139, 143, 146, 148, + 149, 150, 153, 166, 169, 170, 171, 172, 182, 183, + 184, 186, 189, 190, 191, 192, 193, 196, 198, 199, + 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, + 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, + 248, 258, 265, 268, 141, 255, 269, 411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 109, 115, 121, 126, 130, 133, 139, - 143, 146, 148, 149, 150, 153, 166, 169, 170, 171, - 172, 182, 183, 184, 186, 189, 190, 191, 192, 193, - 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, - 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, - 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, 0, 0, 0, 0, 346, 0, 0, 0, 129, 0, 345, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 389, 161, 0, 0, 236, 176, 0, 0, @@ -1991,13 +1966,13 @@ var yyAct = [...]int{ 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, - 141, 255, 269, 188, 0, 0, 0, 0, 0, 0, - 0, 0, 129, 0, 0, 0, 0, 0, 158, 0, + 141, 255, 269, 188, 0, 0, 0, 0, 346, 0, + 0, 0, 129, 0, 345, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 389, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 96, 97, 98, 367, 366, 369, 370, 371, 372, 0, 0, - 118, 368, 373, 374, 375, 0, 0, 0, 0, 0, + 118, 368, 373, 374, 375, 0, 0, 0, 0, 343, 360, 0, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 357, 358, 0, 0, 0, 0, 403, 0, @@ -2005,7 +1980,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 138, 402, 0, 0, 297, 0, 0, 400, 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, - 219, 0, 0, 0, 123, 0, 217, 195, 257, 1642, + 219, 0, 0, 0, 123, 0, 217, 195, 257, 0, 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, @@ -2031,7 +2006,7 @@ var yyAct = [...]int{ 0, 158, 0, 0, 0, 228, 122, 165, 389, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, 0, 61, - 0, 418, 96, 97, 98, 367, 366, 369, 370, 371, + 0, 0, 96, 97, 98, 367, 366, 369, 370, 371, 372, 0, 0, 118, 368, 373, 374, 375, 0, 0, 0, 0, 0, 360, 0, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2041,7 +2016,7 @@ var yyAct = [...]int{ 0, 138, 402, 0, 0, 297, 0, 0, 400, 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, - 195, 257, 0, 197, 216, 162, 246, 208, 256, 266, + 195, 257, 1639, 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, 278, @@ -2066,7 +2041,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 389, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 380, 381, 0, 0, 0, 0, 0, 0, - 0, 0, 61, 0, 0, 96, 97, 98, 367, 366, + 0, 0, 61, 0, 418, 96, 97, 98, 367, 366, 369, 370, 371, 372, 0, 0, 118, 368, 373, 374, 375, 0, 0, 0, 0, 0, 360, 0, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2099,17 +2074,17 @@ var yyAct = [...]int{ 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, - 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, - 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 122, 165, 389, 161, 0, 0, 236, 176, + 0, 0, 0, 0, 0, 380, 381, 0, 0, 0, + 0, 0, 0, 0, 0, 61, 0, 0, 96, 97, + 98, 367, 366, 369, 370, 371, 372, 0, 0, 118, + 368, 373, 374, 375, 0, 0, 0, 0, 0, 360, + 0, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 666, 665, 675, - 676, 668, 669, 670, 671, 672, 673, 674, 667, 0, - 0, 677, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, - 0, 297, 0, 0, 0, 0, 207, 0, 240, 142, + 0, 357, 358, 0, 0, 0, 0, 403, 0, 359, + 0, 0, 352, 353, 355, 354, 356, 361, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 138, 402, 0, + 0, 297, 0, 0, 400, 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, 0, 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, @@ -2121,9 +2096,9 @@ var yyAct = [...]int{ 0, 0, 0, 237, 260, 279, 116, 0, 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, 159, 270, 272, 273, 180, 113, 147, 234, 155, 163, 212, 277, - 194, 218, 120, 259, 235, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 99, 108, 160, 276, 210, 134, + 194, 218, 120, 259, 235, 390, 401, 396, 397, 394, + 395, 393, 392, 391, 404, 382, 383, 384, 385, 387, + 0, 398, 399, 386, 99, 108, 160, 276, 210, 134, 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 109, 115, @@ -2132,17 +2107,17 @@ var yyAct = [...]int{ 189, 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, - 265, 268, 141, 255, 269, 188, 0, 0, 0, 762, + 265, 268, 141, 255, 269, 188, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 96, 97, 98, 0, 764, 0, 0, 0, 0, - 0, 0, 118, 0, 0, 0, 0, 0, 655, 656, - 654, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 657, 0, 0, 0, + 0, 96, 97, 98, 0, 0, 0, 0, 0, 0, + 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 666, 665, 675, 676, 668, 669, 670, 671, 672, 673, + 674, 667, 0, 0, 677, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 297, 0, 0, 0, 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, @@ -2168,19 +2143,19 @@ var yyAct = [...]int{ 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, 0, - 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, + 0, 0, 762, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96, 97, 98, 0, 0, 0, + 0, 0, 0, 0, 96, 97, 98, 0, 764, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, - 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 655, 656, 654, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 138, 90, 91, 0, 87, 0, 0, - 0, 92, 207, 0, 240, 142, 157, 114, 154, 100, + 0, 0, 0, 138, 0, 0, 0, 297, 0, 0, + 0, 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, 0, 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, @@ -2192,7 +2167,7 @@ var yyAct = [...]int{ 260, 279, 116, 0, 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, 159, 270, 272, 273, 180, 113, 147, 234, 155, 163, 212, 277, 194, 218, 120, 259, - 235, 0, 89, 0, 0, 0, 0, 0, 0, 0, + 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 108, 160, 276, 210, 134, 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2204,19 +2179,19 @@ var yyAct = [...]int{ 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, 0, 0, 0, 0, 0, 0, 0, 0, - 129, 1081, 0, 0, 0, 0, 158, 0, 0, 0, + 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, + 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 138, 0, 0, 1080, - 297, 0, 0, 0, 1077, 1075, 0, 1076, 142, 157, - 114, 154, 100, 110, 1073, 1079, 185, 215, 219, 0, + 0, 0, 0, 0, 0, 0, 138, 90, 91, 0, + 87, 0, 0, 0, 92, 207, 0, 240, 142, 157, + 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, 0, 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, 252, @@ -2227,7 +2202,7 @@ var yyAct = [...]int{ 0, 0, 237, 260, 279, 116, 0, 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, 159, 270, 272, 273, 180, 113, 147, 234, 155, 163, 212, 277, 194, - 218, 120, 259, 235, 0, 0, 0, 0, 0, 0, + 218, 120, 259, 235, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 108, 160, 276, 210, 134, 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, @@ -2238,20 +2213,20 @@ var yyAct = [...]int{ 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, - 268, 141, 255, 269, 188, 0, 0, 0, 1040, 0, - 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, + 268, 141, 255, 269, 188, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 1080, 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 97, 98, 0, 1042, 0, 0, 0, 0, 0, + 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, - 0, 0, 0, 297, 0, 0, 0, 0, 207, 0, - 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, + 0, 0, 1079, 297, 0, 0, 0, 1076, 1074, 0, + 1075, 142, 157, 114, 154, 100, 110, 1072, 1078, 185, 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, 0, 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, @@ -2273,49 +2248,49 @@ var yyAct = [...]int{ 184, 186, 189, 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, - 248, 258, 265, 268, 141, 255, 269, 31, 0, 0, + 248, 258, 265, 268, 141, 255, 269, 188, 0, 0, + 0, 1039, 0, 0, 0, 0, 129, 0, 0, 0, + 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, + 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 129, - 0, 0, 0, 0, 0, 158, 0, 0, 0, 228, - 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, + 0, 0, 0, 96, 97, 98, 0, 1041, 0, 0, + 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 61, 0, 0, 96, 97, 98, 0, - 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 138, 0, 0, 0, 297, 0, 0, 0, + 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, + 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, + 217, 195, 257, 0, 197, 216, 162, 246, 208, 256, + 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, + 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, + 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, + 278, 111, 263, 107, 112, 262, 181, 245, 253, 175, + 168, 106, 251, 173, 167, 156, 132, 144, 205, 164, + 206, 145, 178, 177, 179, 0, 0, 0, 237, 260, + 279, 116, 0, 244, 271, 274, 0, 209, 117, 137, + 131, 204, 135, 159, 270, 272, 273, 180, 113, 147, + 234, 155, 163, 212, 277, 194, 218, 120, 259, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 138, 0, 0, 0, 297, - 0, 0, 0, 0, 207, 0, 240, 142, 157, 114, - 154, 100, 110, 0, 140, 185, 215, 219, 0, 0, - 0, 123, 0, 217, 195, 257, 0, 197, 216, 162, - 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, - 242, 254, 119, 227, 0, 0, 0, 105, 252, 239, - 174, 151, 152, 104, 0, 213, 128, 136, 125, 187, - 249, 250, 124, 278, 111, 263, 107, 112, 262, 181, - 245, 253, 175, 168, 106, 251, 173, 167, 156, 132, - 144, 205, 164, 206, 145, 178, 177, 179, 0, 0, - 0, 237, 260, 279, 116, 0, 244, 271, 274, 0, - 209, 117, 137, 131, 204, 135, 159, 270, 272, 273, - 180, 113, 147, 234, 155, 163, 212, 277, 194, 218, - 120, 259, 235, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, + 108, 160, 276, 210, 134, 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 99, 108, 160, 276, 210, 134, 261, 0, - 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 101, 102, 109, 115, 121, 126, - 130, 133, 139, 143, 146, 148, 149, 150, 153, 166, - 169, 170, 171, 172, 182, 183, 184, 186, 189, 190, - 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, - 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, - 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, - 141, 255, 269, 188, 0, 0, 0, 1040, 0, 0, + 0, 101, 102, 109, 115, 121, 126, 130, 133, 139, + 143, 146, 148, 149, 150, 153, 166, 169, 170, 171, + 172, 182, 183, 184, 186, 189, 190, 191, 192, 193, + 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, + 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, + 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, + 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, - 97, 98, 0, 1042, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 61, 0, 0, 96, + 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2325,7 +2300,7 @@ var yyAct = [...]int{ 0, 0, 297, 0, 0, 0, 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, 0, - 1038, 216, 162, 246, 208, 256, 266, 267, 243, 264, + 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, 107, @@ -2346,12 +2321,12 @@ var yyAct = [...]int{ 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, 0, 0, 0, - 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, + 1039, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 97, 98, 0, 0, 1005, 0, 0, - 1006, 0, 0, 118, 0, 0, 0, 0, 0, 0, + 0, 0, 96, 97, 98, 0, 1041, 0, 0, 0, + 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2360,7 +2335,7 @@ var yyAct = [...]int{ 0, 138, 0, 0, 0, 297, 0, 0, 0, 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, - 195, 257, 0, 197, 216, 162, 246, 208, 256, 266, + 195, 257, 0, 1037, 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, 278, @@ -2382,11 +2357,11 @@ var yyAct = [...]int{ 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, - 796, 0, 0, 0, 158, 0, 0, 0, 228, 122, + 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 97, 98, 0, 795, - 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, + 0, 0, 0, 0, 0, 96, 97, 98, 0, 0, + 1004, 0, 0, 1005, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2417,11 +2392,11 @@ var yyAct = [...]int{ 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, 0, 0, 0, 0, 0, 0, 0, - 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, + 0, 129, 0, 796, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 418, 96, 97, - 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, + 98, 0, 795, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2455,8 +2430,8 @@ var yyAct = [...]int{ 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, - 0, 96, 97, 98, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 418, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2491,7 +2466,7 @@ var yyAct = [...]int{ 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96, 97, 98, 0, 1042, 0, + 0, 61, 0, 0, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2527,7 +2502,7 @@ var yyAct = [...]int{ 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, - 0, 764, 0, 0, 0, 0, 0, 0, 118, 0, + 0, 1041, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2557,44 +2532,44 @@ var yyAct = [...]int{ 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, - 268, 141, 255, 269, 778, 0, 0, 0, 0, 0, - 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, - 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, - 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, - 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, + 268, 141, 255, 269, 188, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, + 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, + 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 97, 98, 0, 764, 0, 0, 0, 0, 0, + 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, - 297, 0, 0, 0, 0, 207, 0, 240, 142, 157, - 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, - 0, 0, 123, 0, 217, 195, 257, 0, 197, 216, - 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, - 103, 242, 254, 119, 227, 0, 0, 0, 105, 252, - 239, 174, 151, 152, 104, 0, 213, 128, 136, 125, - 187, 249, 250, 124, 278, 111, 263, 107, 112, 262, - 181, 245, 253, 175, 168, 106, 251, 173, 167, 156, - 132, 144, 205, 164, 206, 145, 178, 177, 179, 0, - 0, 0, 237, 260, 279, 116, 0, 244, 271, 274, - 0, 209, 117, 137, 131, 204, 135, 159, 270, 272, - 273, 180, 113, 147, 234, 155, 163, 212, 277, 194, - 218, 120, 259, 235, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 0, 0, 0, 297, 0, 0, 0, 0, 207, 0, + 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, + 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, + 0, 197, 216, 162, 246, 208, 256, 266, 267, 243, + 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, + 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, + 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, + 107, 112, 262, 181, 245, 253, 175, 168, 106, 251, + 173, 167, 156, 132, 144, 205, 164, 206, 145, 178, + 177, 179, 0, 0, 0, 237, 260, 279, 116, 0, + 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, + 159, 270, 272, 273, 180, 113, 147, 234, 155, 163, + 212, 277, 194, 218, 120, 259, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 99, 108, 160, 276, 210, 134, 261, - 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 99, 108, 160, 276, + 210, 134, 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 109, 115, 121, - 126, 130, 133, 139, 143, 146, 148, 149, 150, 153, - 166, 169, 170, 171, 172, 182, 183, 184, 186, 189, - 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, - 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, - 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, - 268, 141, 255, 269, 188, 0, 0, 0, 0, 0, - 0, 0, 768, 129, 0, 0, 0, 0, 0, 158, + 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, + 109, 115, 121, 126, 130, 133, 139, 143, 146, 148, + 149, 150, 153, 166, 169, 170, 171, 172, 182, 183, + 184, 186, 189, 190, 191, 192, 193, 196, 198, 199, + 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, + 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, + 248, 258, 265, 268, 141, 255, 269, 778, 0, 0, + 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2629,11 +2604,11 @@ var yyAct = [...]int{ 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, 0, 0, - 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, + 0, 0, 0, 0, 0, 768, 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 96, 97, 98, 0, 644, 0, 0, + 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2669,10 +2644,10 @@ var yyAct = [...]int{ 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, 0, - 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, + 644, 0, 0, 0, 0, 0, 0, 118, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 297, @@ -2707,10 +2682,10 @@ var yyAct = [...]int{ 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 334, 0, 138, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 297, 0, 0, 0, 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, 0, @@ -2734,7 +2709,7 @@ var yyAct = [...]int{ 186, 189, 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, - 258, 265, 268, 333, 255, 269, 188, 0, 0, 0, + 258, 265, 268, 141, 255, 269, 188, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, @@ -2745,8 +2720,8 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 138, 0, 292, 0, 297, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 334, + 0, 138, 0, 0, 0, 297, 0, 0, 0, 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, 0, 197, 216, 162, 246, 208, 256, 266, @@ -2769,7 +2744,7 @@ var yyAct = [...]int{ 182, 183, 184, 186, 189, 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, - 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, + 241, 247, 248, 258, 265, 268, 333, 255, 269, 188, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, @@ -2781,7 +2756,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 138, 0, 0, 0, 297, 0, + 0, 0, 0, 0, 138, 0, 292, 0, 297, 0, 0, 0, 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, 0, 197, 216, 162, 246, @@ -2805,20 +2780,55 @@ var yyAct = [...]int{ 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, - 255, 269, + 255, 269, 188, 0, 0, 0, 0, 0, 0, 0, + 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, + 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, + 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, + 0, 297, 0, 0, 0, 0, 207, 0, 240, 142, + 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, + 0, 0, 0, 123, 0, 217, 195, 257, 0, 197, + 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, + 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, + 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, + 125, 187, 249, 250, 124, 278, 111, 263, 107, 112, + 262, 181, 245, 253, 175, 168, 106, 251, 173, 167, + 156, 132, 144, 205, 164, 206, 145, 178, 177, 179, + 0, 0, 0, 237, 260, 279, 116, 0, 244, 271, + 274, 0, 209, 117, 137, 131, 204, 135, 159, 270, + 272, 273, 180, 113, 147, 234, 155, 163, 212, 277, + 194, 218, 120, 259, 235, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 99, 108, 160, 276, 210, 134, + 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 101, 102, 109, 115, + 121, 126, 130, 133, 139, 143, 146, 148, 149, 150, + 153, 166, 169, 170, 171, 172, 182, 183, 184, 186, + 189, 190, 191, 192, 193, 196, 198, 199, 200, 201, + 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, + 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, + 265, 268, 141, 255, 269, } var yyPact = [...]int{ - 97, -1000, -284, 1067, -1000, -1000, -1000, -1000, -1000, -1000, + 216, -1000, -283, 1091, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1004, - 821, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 332, 12449, - -17, 175, 35, 18117, 173, 1526, 18470, -1000, 20, -1000, - 11, 18470, 16, 17764, -1000, -1000, -82, -87, -1000, 10331, - 923, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 819, - 994, 995, 1001, 676, 1114, -1000, 8906, 8906, 131, 131, - 131, 7494, -1000, -1000, 17411, 18470, 157, 18470, -144, 129, - 129, 129, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1017, + 805, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 260, 12552, + -34, 141, 0, 18220, 140, 1468, 18573, -1000, 13, -1000, + 2, 18573, 9, 17867, -1000, -1000, -94, -101, -1000, 10434, + 907, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 758, + 1007, 990, 1014, 564, 1363, -1000, 9009, 9009, 101, 101, + 101, 7597, -1000, -1000, 17514, 18573, 136, 18573, -158, 91, + 91, 91, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2837,23 +2847,23 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 169, 18470, 540, 540, 260, 553, 18470, 106, 540, 106, - 106, 106, 18470, -1000, 215, -1000, -1000, -1000, 18470, 540, - 944, 373, 126, 280, 280, 280, -1000, 229, -1000, 4925, - 43, 47, -59, 1023, 27, 5, -1000, 373, 4925, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 135, -1000, -1000, - 18470, 17058, 136, 330, -1000, -1000, -1000, -1000, -1000, -1000, - 696, 368, -1000, 10331, 1820, 735, 735, -1000, -1000, 191, - -1000, -1000, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, - 11390, 11390, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 735, 214, -1000, 9978, - 735, 735, 735, 735, 735, 735, 735, 735, 10331, 735, - 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 735, 735, -1000, -1000, 1048, 1004, -1000, - 821, -1000, -1000, -1000, 952, 10331, 10331, 1004, -1000, 898, - 8906, -1000, -1000, 1006, -1000, -1000, -1000, -1000, 391, 1047, - -1000, 12096, 209, 1046, 16705, -1000, 15286, 16352, 721, 7127, - -99, -1000, -1000, -1000, 320, 14580, -1000, -1000, -1000, 943, + 139, 18573, 566, 566, 279, 441, 18573, 89, 566, 89, + 89, 89, 18573, -1000, 182, -1000, -1000, -1000, 18573, 566, + 930, 307, 97, 217, 217, 217, -1000, 186, -1000, 5028, + 30, 32, -51, 1034, 27, -24, -1000, 307, 5028, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 116, -1000, -1000, + 18573, 17161, 121, 276, -1000, -1000, -1000, -1000, -1000, -1000, + 542, 536, -1000, 10434, 1891, 584, 584, -1000, -1000, 153, + -1000, -1000, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, + 11493, 11493, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 584, 181, -1000, 10081, + 584, 584, 584, 584, 584, 584, 584, 584, 10434, 584, + 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, + 584, 584, 584, 584, 584, -1000, -1000, -1000, 1017, -1000, + 805, -1000, -1000, -1000, 995, 10434, 10434, 1017, -1000, 897, + 9009, -1000, -1000, 909, -1000, -1000, -1000, -1000, 315, 1062, + -1000, 12199, 180, 1053, 16808, -1000, 15389, 16455, 713, 7230, + -107, -1000, -1000, -1000, 271, 14683, -1000, -1000, -1000, 922, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2866,140 +2876,140 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 673, 18470, -1000, 346, -1000, 540, 4925, 139, 540, - 345, 540, 18470, 18470, 4925, 4925, 4925, 58, 86, 65, - 18470, 552, 717, 134, 18470, 982, 836, 18470, 540, 540, - -1000, 6393, -1000, 4925, 373, -1000, 551, 10331, 4925, 4925, - 4925, 18470, 4925, 4925, -1000, 539, -1000, -1000, 375, -1000, - -1000, -1000, -1000, -1000, -1000, 4925, 4925, 370, 1044, 370, - -1000, -1000, -1000, -1000, 10331, 280, -1000, 835, -1000, -1000, - 14, -1000, -1000, -1000, -1000, -1000, 1067, -1000, -1000, -1000, - -133, -1000, -1000, 10331, 10331, 10331, 10331, 556, 295, 11390, - 445, 401, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, - 11390, 11390, 11390, 11390, 11390, 11390, 11390, 587, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 540, -1000, 1062, 635, - 635, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 11743, 7847, 6393, 676, 669, 1004, 8906, 8906, 10331, 10331, - 9612, 9259, 8906, 947, 340, 368, 18470, -1000, -1000, 11037, - -1000, -1000, -1000, -1000, -1000, 561, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 18470, 18470, 8906, 8906, 8906, 8906, 8906, - 927, 995, 676, 1006, 976, 1057, 243, 560, 713, -1000, - 593, 995, 14227, 745, -1000, 1006, -1000, -1000, -1000, 18470, - -1000, -1000, 15992, -1000, -1000, 6026, 18470, 77, 18470, -1000, - 620, 767, -1000, -1000, -1000, 986, 13521, 13874, 18470, 742, - 731, -1000, -1000, 208, 6760, -99, -1000, 6760, 705, -1000, - -118, -106, 8200, 230, -1000, -1000, -1000, -1000, 4558, 12802, - 597, 496, -64, -1000, -1000, -1000, 747, -1000, 747, 747, - 747, 747, -23, -23, -23, -23, -1000, -1000, -1000, -1000, - -1000, 793, 790, -1000, 747, 747, 747, -1000, -1000, -1000, + -1000, 743, 18573, -1000, 335, -1000, 566, 5028, 120, 566, + 292, 566, 18573, 18573, 5028, 5028, 5028, 40, 72, 59, + 18573, 440, 703, 115, 18573, 981, 827, 18573, 566, 566, + -1000, 6496, -1000, 5028, 307, -1000, 423, 10434, 5028, 5028, + 5028, 18573, 5028, 5028, -1000, 421, -1000, -1000, 314, -1000, + -1000, -1000, -1000, -1000, -1000, 5028, 5028, 303, 1051, 303, + -1000, -1000, -1000, -1000, 10434, 217, -1000, 823, -1000, -1000, + 8, -1000, -1000, -1000, -1000, -1000, 1091, -1000, -1000, -1000, + -133, -1000, -1000, 10434, 10434, 10434, 10434, 545, 221, 11493, + 357, 227, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, + 11493, 11493, 11493, 11493, 11493, 11493, 11493, 576, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 566, -1000, 1089, 613, + 613, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 11846, 7950, 6496, 564, 734, 1017, 9009, 9009, 10434, 10434, + 9715, 9362, 9009, 928, 282, 536, 18573, -1000, -1000, 11140, + -1000, -1000, -1000, -1000, -1000, 363, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 18573, 18573, 9009, 9009, 9009, 9009, 9009, + -1000, 990, 564, 909, 963, 1076, 213, 574, 673, -1000, + 492, 990, 14330, 721, -1000, 909, -1000, -1000, -1000, 18573, + -1000, -1000, 16095, -1000, -1000, 6129, 18573, 53, 18573, -1000, + 778, 960, -1000, -1000, -1000, 964, 13624, 13977, 18573, 815, + 814, -1000, -1000, 179, 6863, -107, -1000, 6863, 601, -1000, + -121, -132, 8303, 191, -1000, -1000, -1000, -1000, 4661, 12905, + 479, 298, -81, -1000, -1000, -1000, 748, -1000, 748, 748, + 748, 748, -40, -40, -40, -40, -1000, -1000, -1000, -1000, + -1000, 775, 768, -1000, 748, 748, 748, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 785, 785, 785, 750, 750, - 806, -1000, 18470, 4925, 980, 4925, -1000, 119, -1000, -1000, - -1000, 18470, 18470, 18470, 18470, 18470, 182, -1000, 18470, 18470, - 712, -1000, 18470, 4925, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 368, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 18470, -1000, -1000, -1000, -1000, 373, 18470, 18470, 18470, 373, - 368, -1000, 18470, 18470, -1000, -1000, -1000, -1000, -1000, 368, - 295, 314, 292, -1000, -1000, 510, -1000, -1000, 1875, -1000, - -1000, -1000, -1000, 445, 11390, 11390, 11390, 247, 1875, 1945, - 822, 349, 245, 307, 307, 223, 223, 223, 223, 223, - 402, 402, -1000, -1000, -1000, 561, -1000, -1000, -1000, 561, - 8906, 8906, 709, 735, 205, -1000, 819, -1000, -1000, 995, - 665, 665, 533, 393, 317, 1031, 665, 315, 1026, 665, - 665, 8906, -1000, -1000, 356, -1000, 10331, 561, -1000, 201, - -1000, 842, 708, 707, 665, 561, 561, 665, 665, 534, - 952, -1000, -1000, 930, -1000, 893, 10331, 10331, 10331, -1000, - -1000, -1000, 952, 1020, -1000, 920, 918, 1022, 8906, 15286, - 1006, -1000, -1000, -1000, 199, 1022, 711, 735, -1000, 18470, - 15286, 15286, 15286, 15286, 15286, -1000, 862, 852, -1000, 908, - 850, 869, 18470, -1000, 667, 676, 13521, 210, 735, -1000, - 15639, -1000, -1000, 77, 695, 15286, 18470, -1000, -1000, 15286, - 18470, 5659, -1000, 705, -99, -117, -1000, -1000, -1000, -1000, - 368, -1000, 619, 703, 4191, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 760, 540, -1000, 958, 259, 278, 540, 957, - -1000, -1000, -1000, 946, -1000, 361, -75, -1000, -1000, 435, - -23, -23, -1000, -1000, 230, 937, 230, 230, 230, 532, - 532, -1000, -1000, -1000, -1000, 431, -1000, -1000, -1000, 415, - -1000, 830, 18470, 4925, -1000, -1000, -1000, -1000, 1166, 1166, - 272, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 75, 798, -1000, -1000, -1000, -1000, 7, 51, - 133, -1000, 4925, -1000, 370, -1000, -1000, -1000, 370, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 247, 1875, 887, -1000, - 11390, 11390, -1000, -1000, 665, 665, 8906, 6393, 1004, 952, - -1000, -1000, 105, 587, 105, 11390, 11390, -1000, 11390, 11390, - -1000, -156, 728, 318, -1000, 10331, 565, -1000, 6393, -1000, - 11390, 11390, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 926, - 879, 368, 368, -1000, -1000, 18470, -1000, -1000, -1000, -1000, - 1017, 10331, -1000, 702, -1000, 5292, 995, 829, 18470, 735, - 1067, 13521, 18470, 732, -1000, 312, 767, 769, 827, 1081, - -1000, -1000, -1000, -1000, 851, -1000, 832, -1000, -1000, -1000, - -1000, -1000, 676, -1000, 155, 154, 153, 18470, -1000, 1022, - 15286, 726, -1000, 726, -1000, 198, -1000, -1000, -1000, -124, - -126, -1000, -1000, -1000, 4558, -1000, 4558, 18470, 92, -1000, - 540, 540, -1000, -1000, -1000, 751, 826, 11390, -1000, -1000, - -1000, 573, 230, 230, -1000, 308, -1000, -1000, -1000, 659, - -1000, 657, 701, 652, 18470, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 767, 767, 767, 755, 755, + 783, -1000, 18573, 5028, 980, 5028, -1000, 131, -1000, -1000, + -1000, 18573, 18573, 18573, 18573, 18573, 162, -1000, 18573, 18573, + 664, -1000, 18573, 5028, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 536, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 18573, -1000, -1000, -1000, -1000, 307, 18573, 18573, 18573, 307, + 536, -1000, 18573, 18573, -1000, -1000, -1000, -1000, -1000, 536, + 221, 241, 252, -1000, -1000, 369, -1000, -1000, 1025, -1000, + -1000, -1000, -1000, 357, 11493, 11493, 11493, 351, 1025, 1907, + 1044, 1727, 195, 452, 452, 193, 193, 193, 193, 193, + 1121, 1121, -1000, -1000, -1000, 363, -1000, -1000, -1000, 363, + 9009, 9009, 651, 584, 177, -1000, 758, -1000, -1000, 990, + 730, 730, 854, 339, 289, 1046, 730, 284, 1041, 730, + 730, 9009, -1000, -1000, 302, -1000, 10434, 363, -1000, 166, + -1000, 598, 625, 614, 730, 363, 363, 730, 730, 995, + -1000, -1000, 912, -1000, 867, 10434, 10434, 10434, -1000, -1000, + -1000, 995, 1022, -1000, 903, 901, 1031, 9009, 15389, 909, + -1000, -1000, -1000, 165, 1031, 830, 584, -1000, 18573, 15389, + 15389, 15389, 15389, 15389, -1000, 850, 846, -1000, 840, 838, + 858, 18573, -1000, 732, 564, 13624, 194, 584, -1000, 15742, + -1000, -1000, 53, 694, 15389, 18573, -1000, -1000, 15389, 18573, + 5762, -1000, 601, -107, -135, -1000, -1000, -1000, -1000, 536, + -1000, 583, 597, 4294, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 766, 566, -1000, 953, 230, 205, 566, 940, -1000, + -1000, -1000, 932, -1000, 309, -87, -1000, -1000, 382, -40, + -40, -1000, -1000, 191, 921, 191, 191, 191, 419, 419, + -1000, -1000, -1000, -1000, 380, -1000, -1000, -1000, 375, -1000, + 821, 18573, 5028, -1000, -1000, -1000, -1000, 606, 606, 265, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 18470, -1000, -1000, -1000, -1000, -1000, - 18470, -164, 540, 18470, 18470, 18470, 18470, -1000, 373, 373, - -1000, 11390, 1875, 1875, -1000, -1000, 561, -1000, 995, -1000, - 561, 747, 747, -1000, 747, 750, -1000, 747, 3, 747, - -1, 561, 561, 1900, 1728, 1701, 1629, 735, -151, -1000, - 368, 10331, -1000, 1560, 1270, -1000, 528, -1000, -1000, 1014, - 1000, 368, -1000, -1000, -1000, 953, 639, 687, -1000, -1000, - 8553, 646, 196, 634, -1000, 1004, 18470, 10331, -1000, -1000, - 10331, 748, -1000, 10331, -1000, -1000, -1000, 1004, 735, 735, - 735, 634, 1004, 726, -1000, -1000, 206, -1000, -1000, -1000, - 4191, -1000, 631, -1000, 747, -1000, 957, -1000, -1000, 18470, - -51, 1056, 1875, -1000, -1000, -1000, -1000, -1000, -23, 523, - -23, 410, -1000, 409, 4925, -1000, -1000, -1000, -1000, 961, - -1000, 6393, -1000, -1000, 744, 799, -1000, -1000, -1000, -1000, - 1875, -1000, 952, -1000, -1000, 122, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 11390, 11390, 11390, 11390, 11390, 995, - 485, 368, 11390, 11390, -1000, -1000, 10331, 10331, 956, -1000, - 735, -1000, 749, 18470, 18470, -1000, 18470, 995, -1000, 368, - 368, 18470, 368, 14933, 18470, 18470, 13155, 995, -1000, 190, - 18470, -1000, 628, -1000, 228, -1000, -104, 230, -1000, 230, - 568, 566, -1000, 735, 698, -1000, 310, 18470, 18470, -1000, - -1000, -1000, 842, 842, 842, 842, 101, 561, -1000, 842, - 842, 368, 696, 1054, -1000, 735, 1067, 189, -1000, -1000, - -1000, 626, 607, -1000, 607, 607, 210, -1000, 190, -1000, - 540, 309, 483, -1000, 78, 18470, 358, 950, -1000, 948, - -1000, -1000, -1000, -1000, -1000, 70, 6393, 4558, 605, -1000, - -1000, -1000, -1000, -1000, 561, 67, -174, -1000, -1000, -1000, - 18470, 687, 18470, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 399, -1000, -1000, 18470, -1000, -1000, 470, -1000, -1000, 595, - -1000, 18470, -1000, -1000, 798, -1000, 877, -161, -187, 675, - -1000, -1000, 736, -1000, -1000, 70, 903, -164, -1000, 867, - -1000, 18470, -1000, 66, -1000, -165, 582, 63, -175, 824, - 735, -191, 811, -1000, 1038, 10684, -1000, -1000, 1051, 213, - 213, 842, 561, -1000, -1000, -1000, 103, 440, -1000, -1000, - -1000, -1000, -1000, -1000, + -1000, 52, 779, -1000, -1000, -1000, -1000, -12, 37, 104, + -1000, 5028, -1000, 303, -1000, -1000, -1000, 303, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 351, 1025, 1841, -1000, 11493, + 11493, -1000, -1000, 730, 730, 9009, 6496, 1017, 995, -1000, + -1000, 462, 576, 462, 11493, 11493, -1000, 11493, 11493, -1000, + -172, 679, 280, -1000, 10434, 506, -1000, 6496, -1000, 11493, + 11493, -1000, -1000, -1000, -1000, -1000, -1000, 910, 886, 536, + 536, -1000, -1000, 18573, -1000, -1000, -1000, -1000, 1023, 10434, + -1000, 575, -1000, 5395, 990, 820, 18573, 584, 1091, 13624, + 18573, 603, -1000, 270, 960, 761, 819, 1276, -1000, -1000, + -1000, -1000, 839, -1000, 789, -1000, -1000, -1000, -1000, -1000, + 564, -1000, 132, 129, 128, 18573, -1000, 1031, 15389, 590, + -1000, 590, -1000, 161, -1000, -1000, -1000, -126, -138, -1000, + -1000, -1000, 4661, -1000, 4661, 18573, 68, -1000, 566, 566, + -1000, -1000, -1000, 756, 812, 11493, -1000, -1000, -1000, 477, + 191, 191, -1000, 377, -1000, -1000, -1000, 728, -1000, 726, + 571, 723, 18573, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 18573, -1000, -1000, -1000, -1000, -1000, 18573, -178, + 566, 18573, 18573, 18573, 18573, -1000, 307, 307, -1000, 11493, + 1025, 1025, -1000, -1000, 363, -1000, 990, -1000, 363, 748, + 748, -1000, 748, 755, -1000, 748, -5, 748, -22, 363, + 363, 1809, 1775, 866, 393, 584, -165, -1000, 536, 10434, + -1000, 1709, 888, 417, -1000, -1000, 1020, 1001, 536, -1000, + -1000, -1000, 958, 534, 538, -1000, -1000, 8656, 710, 160, + 683, -1000, 1017, 18573, 10434, -1000, -1000, 10434, 752, -1000, + 10434, -1000, -1000, -1000, 1017, 584, 584, 584, 683, 1017, + 590, -1000, -1000, 202, -1000, -1000, -1000, 4294, -1000, 681, + -1000, 748, -1000, 940, -1000, -1000, 18573, -63, 1075, 1025, + -1000, -1000, -1000, -1000, -1000, -40, 415, -40, 364, -1000, + 358, 5028, -1000, -1000, -1000, -1000, 961, -1000, 6496, -1000, + -1000, 718, 781, -1000, -1000, -1000, -1000, 1025, -1000, 995, + -1000, -1000, 134, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 11493, 11493, 11493, 11493, 11493, 990, 412, 536, 11493, + 11493, -1000, -1000, 10434, 10434, 939, -1000, 584, -1000, 762, + 18573, 18573, -1000, 18573, 990, -1000, 536, 536, 18573, 536, + 15036, 18573, 18573, 13258, 990, -1000, 170, 18573, -1000, 676, + -1000, 211, -1000, -111, 191, -1000, 191, 455, 451, -1000, + 584, 558, -1000, 263, 18573, 18573, -1000, -1000, -1000, 598, + 598, 598, 598, 67, 363, -1000, 598, 598, 536, 542, + 1071, -1000, 584, 1091, 156, -1000, -1000, -1000, 668, 666, + -1000, 666, 666, 194, -1000, 170, -1000, 566, 234, 401, + -1000, 62, 18573, 325, 937, -1000, 934, -1000, -1000, -1000, + -1000, -1000, 49, 6496, 4661, 636, -1000, -1000, -1000, -1000, + -1000, 363, 51, -182, -1000, -1000, -1000, 18573, 538, 18573, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 350, -1000, -1000, + 18573, -1000, -1000, 336, -1000, -1000, 612, -1000, 18573, -1000, + -1000, 779, -1000, 882, -176, -189, 516, -1000, -1000, 607, + -1000, -1000, 49, 900, -178, -1000, 868, -1000, 18573, -1000, + 46, -1000, -179, 508, 44, -187, 790, 584, -191, 785, + -1000, 1045, 10787, -1000, -1000, 1047, 214, 214, 598, 363, + -1000, -1000, -1000, 78, 411, -1000, -1000, -1000, -1000, -1000, + -1000, } var yyPgo = [...]int{ - 0, 1342, 1341, 71, 73, 69, 1339, 1338, 1337, 1336, - 98, 93, 91, 1335, 1334, 1331, 1328, 1322, 1320, 1317, - 1316, 1313, 1305, 1302, 1301, 1300, 1296, 1294, 1292, 1290, - 1289, 1288, 1287, 1284, 79, 1282, 1276, 1274, 1270, 77, - 1269, 1266, 1264, 1262, 1261, 37, 203, 45, 62, 1260, - 59, 92, 1259, 34, 61, 81, 1256, 33, 1255, 1254, - 101, 1252, 1250, 60, 1249, 1247, 2782, 1246, 56, 1244, - 12, 29, 1243, 1242, 1240, 1238, 96, 168, 1235, 1234, - 13, 1230, 1229, 94, 1221, 66, 20, 14, 21, 22, - 1220, 65, 1218, 7, 1215, 64, 1214, 1210, 1209, 1207, - 19, 1205, 63, 1204, 74, 1203, 16, 1201, 31, 57, - 32, 18, 9, 1200, 1199, 27, 87, 55, 75, 1198, - 1193, 1192, 593, 1190, 1189, 42, 1185, 1184, 1183, 24, - 78, 109, 484, 1182, 1181, 1180, 1179, 1178, 48, 926, - 1912, 8, 83, 1177, 1173, 1172, 2573, 38, 58, 17, - 1171, 1169, 1166, 41, 53, 43, 449, 1164, 36, 1160, - 1158, 1157, 1156, 1153, 1152, 1151, 67, 1149, 1148, 1147, - 35, 23, 70, 25, 1146, 1145, 1144, 1139, 39, 68, - 1130, 1125, 51, 1124, 1123, 26, 1119, 1117, 1116, 1115, - 1112, 28, 10, 1111, 15, 1109, 11, 1102, 30, 1098, - 4, 1097, 6, 1096, 1, 0, 1087, 3, 50, 2, - 1086, 5, 1083, 1081, 1077, 1715, 908, 76, 1076, 102, + 0, 1400, 1397, 25, 73, 69, 1396, 1395, 1394, 1392, + 93, 92, 91, 1389, 1386, 1383, 1382, 1380, 1379, 1378, + 1377, 1368, 1364, 1362, 1361, 1358, 1351, 1350, 1343, 1341, + 1338, 1335, 1331, 1320, 81, 1318, 1317, 1315, 1314, 77, + 1312, 1311, 1310, 1309, 1308, 41, 194, 45, 62, 1307, + 96, 468, 1306, 30, 71, 66, 1305, 48, 1302, 1301, + 72, 1300, 1294, 58, 1292, 1291, 56, 1290, 60, 1288, + 12, 37, 1286, 1283, 1282, 1281, 80, 2280, 1278, 1277, + 13, 1275, 1274, 87, 1272, 65, 29, 14, 19, 28, + 1271, 67, 1268, 6, 1267, 63, 1264, 1262, 1258, 1257, + 20, 1256, 61, 1255, 23, 1254, 17, 1252, 10, 55, + 34, 24, 5, 1251, 1250, 21, 70, 57, 74, 1248, + 1247, 1245, 433, 1244, 1243, 64, 1242, 1240, 1228, 39, + 83, 94, 516, 1227, 1225, 1219, 1218, 1217, 53, 761, + 1826, 128, 75, 1216, 1215, 1213, 2780, 38, 59, 16, + 1210, 1205, 1203, 43, 111, 33, 396, 1195, 35, 1194, + 1191, 1190, 1189, 1187, 1185, 1184, 257, 1183, 1182, 1181, + 18, 22, 76, 32, 1180, 1179, 1176, 1175, 49, 68, + 1174, 1172, 51, 1171, 1170, 27, 1169, 1168, 1165, 1164, + 1163, 36, 8, 1148, 15, 1147, 9, 1144, 31, 1141, + 7, 1121, 11, 1117, 3, 0, 1115, 4, 42, 1, + 1114, 2, 1107, 1101, 1100, 1353, 1126, 78, 1097, 79, } var yyR1 = [...]int{ @@ -3112,7 +3122,7 @@ var yyR2 = [...]int{ 0, 2, 0, 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, - 0, 1, 1, 1, 2, 6, 5, 6, 6, 7, + 0, 1, 1, 1, 2, 3, 5, 6, 6, 7, 4, 6, 5, 7, 8, 1, 3, 7, 8, 1, 1, 9, 9, 8, 7, 7, 1, 1, 1, 3, 1, 3, 0, 4, 3, 5, 4, 1, 3, 3, @@ -3289,7 +3299,7 @@ var yyChk = [...]int{ -215, -215, -215, -215, -96, -51, -215, -219, -83, -215, -219, -83, -219, -83, -219, -215, -219, -83, -219, -83, -219, -219, -83, -215, -215, -215, -215, -215, -215, -215, - 12, -100, -3, -34, -106, 20, 32, -51, -101, -102, + -153, -100, -3, -34, -106, 20, 32, -51, -101, -102, -51, -100, 43, -46, -48, -50, 47, 48, 75, 12, -143, -142, 23, -140, 69, 125, 12, -67, 27, -66, -53, -54, -55, -56, -69, -92, -215, -66, 12, -60, @@ -3313,74 +3323,74 @@ var yyChk = [...]int{ 22, 36, -46, -141, -147, -138, -39, -216, -216, -100, -46, -46, -51, -51, -93, 69, -46, -93, 69, -46, -46, -44, 22, 36, -94, -95, 89, -93, -140, -146, - -216, -77, -140, -140, -46, -47, -47, -46, -46, 38, - -104, -216, -105, 27, 10, 103, 63, 19, 63, -103, - 25, 26, -104, -78, -140, 70, 73, -52, 63, 12, - -50, -66, -142, 110, -147, -66, -109, 166, -66, 31, - 63, -62, -64, -63, -65, 50, 54, 56, 51, 52, - 53, 57, -150, 23, -53, -3, -215, -149, 166, -148, - 23, -146, 69, -66, -60, -217, 63, 12, 61, -217, - 63, 125, -116, -118, 63, 254, 256, 257, 60, 81, - -51, -171, 118, -190, -191, -192, -141, 69, 70, -179, - -180, -181, -193, 152, -198, 143, 145, 142, -182, 153, - 137, 29, 64, -133, 78, 85, -175, 231, -166, 62, - -166, -166, -166, -166, -170, 206, -170, -170, -170, 62, - 62, -166, -166, -166, -172, 62, -172, -172, -173, 62, - -173, -144, 61, -66, -154, 24, -154, -134, 133, 130, - 131, -201, 129, 228, 206, 76, 30, 16, 272, 166, - 287, -205, 167, -66, -66, -66, -66, -66, 133, 130, - -66, -66, -66, -154, -66, -129, -146, -146, -66, -129, - -66, -140, 78, 79, 80, -85, -77, -77, -77, -45, - 161, 84, -216, -216, -46, -46, -215, 125, -5, -104, - -216, -216, 63, 61, 23, 12, 12, -216, 12, 12, - -216, -216, -46, -97, -95, 91, -51, -216, 125, -216, - 63, 63, -216, -216, -216, -216, -216, 69, -106, 37, - 45, -51, -51, -102, -106, -120, 20, 12, 41, 41, - -71, 13, -48, -53, -50, 125, -71, -75, 31, 41, - -3, -215, -215, -112, -115, -93, -54, -55, -55, -54, - -55, 50, 50, 50, 55, 50, 55, 50, -63, -146, - -216, -216, -3, -70, 58, 140, 59, -215, -148, -109, - 61, -53, -66, -53, -68, -146, 110, -117, -119, 258, - 255, 261, -205, 69, 63, -192, 93, 62, -205, 29, - -182, -182, -185, -205, -185, 29, -168, 30, 78, -176, - 232, 70, -170, -170, -171, 31, -171, -171, -171, -178, - 69, -178, 70, 70, 60, -140, -154, -153, -208, 148, - 144, 152, 153, 146, 65, 66, 67, 137, 29, 143, - 145, 166, 142, -208, -135, -136, 139, 23, 137, 29, - 166, -207, 61, 172, 228, 172, 139, -154, -125, -125, - -45, 84, -77, -77, -216, -216, -47, -141, -100, -106, - -158, 119, 203, 160, 201, 197, 217, 208, 230, 199, - 231, -155, -158, -77, -77, -77, -77, 281, -100, 92, - -51, 90, -141, -77, -77, -153, 38, 46, -66, -98, - 14, -51, 110, -104, -111, 60, -112, -87, -89, -88, - -215, -107, -140, -110, -140, -71, 63, 93, -58, -57, - 60, 61, -59, 60, -57, 50, 50, -216, 137, 137, - 137, -110, -71, -53, -71, -71, 125, 255, 259, 260, - -191, -192, -195, -194, -140, -198, 153, -185, -185, 62, - -169, 60, -77, 64, -171, -171, -205, 119, 64, 63, - 64, 63, 64, 63, -66, -153, -153, -66, -153, -140, - -204, 284, -206, -205, -140, -140, -140, -66, -129, -129, - -77, -216, -104, -216, -166, -166, -166, -173, -166, 191, - -166, 191, -216, -216, 20, 20, 20, 20, -215, -42, - 277, -51, 63, 63, 69, -99, 15, 17, 28, -111, - 63, -216, -216, 63, 125, -216, 63, -100, -115, -51, - -51, 62, -51, -215, -215, -215, -216, -100, -71, 64, - 63, -166, -108, -140, -174, 228, 10, -170, 69, -170, - 70, 70, -154, 27, -203, -202, -141, 62, 61, -106, - -170, -205, -77, -77, -77, -77, -77, -104, 69, -77, - -77, -51, -86, 29, -89, 41, -3, -140, -140, -140, - -104, -108, -108, -216, -108, -108, -149, -104, -197, -196, - 61, 147, 76, -194, 64, 63, -177, 143, 29, 142, - -80, -171, -171, 64, 64, -215, 63, 93, -108, -66, - -216, -216, -216, -216, -43, 103, 284, -216, -216, -216, - 10, -87, 125, 64, -216, -216, -216, -70, -196, -205, - -186, 93, 69, 155, -140, -167, 76, 29, 29, -199, - -200, 166, -202, -192, 64, -216, 282, 57, 285, -112, - -140, 70, -66, 69, -216, 63, -140, -207, 46, 283, - 286, 62, -200, 41, -204, 46, -108, 168, 284, 64, - 169, 285, -210, -211, 60, -215, 286, -211, 60, 11, - 10, -77, 165, -209, 156, 151, 154, 31, -209, -216, - -216, 150, 30, 78, + -216, -77, -140, -140, -46, -47, -47, -46, -46, -104, + -216, -105, 27, 10, 103, 63, 19, 63, -103, 25, + 26, -104, -78, -140, 70, 73, -52, 63, 12, -50, + -66, -142, 110, -147, -66, -109, 166, -66, 31, 63, + -62, -64, -63, -65, 50, 54, 56, 51, 52, 53, + 57, -150, 23, -53, -3, -215, -149, 166, -148, 23, + -146, 69, -66, -60, -217, 63, 12, 61, -217, 63, + 125, -116, -118, 63, 254, 256, 257, 60, 81, -51, + -171, 118, -190, -191, -192, -141, 69, 70, -179, -180, + -181, -193, 152, -198, 143, 145, 142, -182, 153, 137, + 29, 64, -133, 78, 85, -175, 231, -166, 62, -166, + -166, -166, -166, -170, 206, -170, -170, -170, 62, 62, + -166, -166, -166, -172, 62, -172, -172, -173, 62, -173, + -144, 61, -66, -154, 24, -154, -134, 133, 130, 131, + -201, 129, 228, 206, 76, 30, 16, 272, 166, 287, + -205, 167, -66, -66, -66, -66, -66, 133, 130, -66, + -66, -66, -154, -66, -129, -146, -146, -66, -129, -66, + -140, 78, 79, 80, -85, -77, -77, -77, -45, 161, + 84, -216, -216, -46, -46, -215, 125, -5, -104, -216, + -216, 63, 61, 23, 12, 12, -216, 12, 12, -216, + -216, -46, -97, -95, 91, -51, -216, 125, -216, 63, + 63, -216, -216, -216, -216, -216, -106, 37, 45, -51, + -51, -102, -106, -120, 20, 12, 41, 41, -71, 13, + -48, -53, -50, 125, -71, -75, 31, 41, -3, -215, + -215, -112, -115, -93, -54, -55, -55, -54, -55, 50, + 50, 50, 55, 50, 55, 50, -63, -146, -216, -216, + -3, -70, 58, 140, 59, -215, -148, -109, 61, -53, + -66, -53, -68, -146, 110, -117, -119, 258, 255, 261, + -205, 69, 63, -192, 93, 62, -205, 29, -182, -182, + -185, -205, -185, 29, -168, 30, 78, -176, 232, 70, + -170, -170, -171, 31, -171, -171, -171, -178, 69, -178, + 70, 70, 60, -140, -154, -153, -208, 148, 144, 152, + 153, 146, 65, 66, 67, 137, 29, 143, 145, 166, + 142, -208, -135, -136, 139, 23, 137, 29, 166, -207, + 61, 172, 228, 172, 139, -154, -125, -125, -45, 84, + -77, -77, -216, -216, -47, -141, -100, -106, -158, 119, + 203, 160, 201, 197, 217, 208, 230, 199, 231, -155, + -158, -77, -77, -77, -77, 281, -100, 92, -51, 90, + -141, -77, -77, 38, 46, -66, -98, 14, -51, 110, + -104, -111, 60, -112, -87, -89, -88, -215, -107, -140, + -110, -140, -71, 63, 93, -58, -57, 60, 61, -59, + 60, -57, 50, 50, -216, 137, 137, 137, -110, -71, + -53, -71, -71, 125, 255, 259, 260, -191, -192, -195, + -194, -140, -198, 153, -185, -185, 62, -169, 60, -77, + 64, -171, -171, -205, 119, 64, 63, 64, 63, 64, + 63, -66, -153, -153, -66, -153, -140, -204, 284, -206, + -205, -140, -140, -140, -66, -129, -129, -77, -216, -104, + -216, -166, -166, -166, -173, -166, 191, -166, 191, -216, + -216, 20, 20, 20, 20, -215, -42, 277, -51, 63, + 63, 69, -99, 15, 17, 28, -111, 63, -216, -216, + 63, 125, -216, 63, -100, -115, -51, -51, 62, -51, + -215, -215, -215, -216, -100, -71, 64, 63, -166, -108, + -140, -174, 228, 10, -170, 69, -170, 70, 70, -154, + 27, -203, -202, -141, 62, 61, -106, -170, -205, -77, + -77, -77, -77, -77, -104, 69, -77, -77, -51, -86, + 29, -89, 41, -3, -140, -140, -140, -104, -108, -108, + -216, -108, -108, -149, -104, -197, -196, 61, 147, 76, + -194, 64, 63, -177, 143, 29, 142, -80, -171, -171, + 64, 64, -215, 63, 93, -108, -66, -216, -216, -216, + -216, -43, 103, 284, -216, -216, -216, 10, -87, 125, + 64, -216, -216, -216, -70, -196, -205, -186, 93, 69, + 155, -140, -167, 76, 29, 29, -199, -200, 166, -202, + -192, 64, -216, 282, 57, 285, -112, -140, 70, -66, + 69, -216, 63, -140, -207, 46, 283, 286, 62, -200, + 41, -204, 46, -108, 168, 284, 64, 169, 285, -210, + -211, 60, -215, 286, -211, 60, 11, 10, -77, 165, + -209, 156, 151, 154, 31, -209, -216, -216, 150, 30, + 78, } var yyDef = [...]int{ @@ -3424,7 +3434,7 @@ var yyDef = [...]int{ 615, 616, 617, 618, 469, 470, 608, 0, 658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 0, 569, 569, 569, 569, 569, 569, 569, 569, 0, 0, - 0, 0, 0, 0, 0, -2, -2, 0, 626, 45, + 0, 0, 0, 0, 0, -2, -2, 1018, 626, 45, 0, 367, 372, 373, 638, 0, 0, 626, 1017, 0, 0, -2, -2, 383, 389, 390, 391, 392, 368, 0, 395, 399, 0, 0, 0, 682, 0, 0, 64, 0, @@ -3458,7 +3468,7 @@ var yyDef = [...]int{ 0, 0, 0, 377, 0, 600, 0, 553, 561, 0, 554, 562, 555, 563, 556, 0, 557, 564, 558, 565, 559, 560, 566, 0, 0, 0, 380, 380, 0, 0, - 0, 634, 0, 382, 641, 0, 0, 635, 627, 628, + 35, 634, 0, 382, 641, 0, 0, 635, 627, 628, 631, 634, 0, 404, 393, 384, 387, 388, 370, 0, 396, 400, 0, 402, 403, 0, 0, 62, 0, 448, 0, 406, 408, 409, 410, 430, 0, 432, 0, 0, @@ -3482,74 +3492,74 @@ var yyDef = [...]int{ 0, 0, 381, 609, 0, -2, 0, 499, 657, 634, 0, 0, 0, 0, 504, 611, 0, 504, 611, 0, 0, 0, 378, 379, 606, 603, 0, 0, 608, 0, - 570, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 638, 46, 36, 0, 639, 0, 0, 0, 0, 630, - 632, 633, 638, 0, 619, 0, 0, 457, 0, 0, - 385, 42, 401, 397, 0, 457, 0, 0, 447, 0, - 0, 0, 0, 0, 0, 437, 0, 0, 440, 0, - 0, 0, 0, 431, 0, 0, 0, 452, 932, 433, - 0, 435, 436, -2, 0, 0, 0, 56, 57, 0, - 0, 0, 663, 65, 0, 0, 70, 71, 664, 665, - 666, 667, 0, 94, 225, 227, 230, 231, 232, 98, - 99, 100, 0, 0, 212, 942, 975, 206, 206, 875, - 204, 205, 96, 166, 164, 0, 161, 160, 106, 0, - 172, 172, 129, 130, 175, 0, 175, 175, 175, 0, - 0, 123, 124, 125, 117, 0, 118, 119, 120, 0, - 121, 0, 0, 1019, 83, 680, 84, 1018, 0, 0, - 696, 239, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 0, 85, 243, 245, 244, 248, 0, 0, - 0, 270, 1019, 274, 320, 297, 321, 322, 320, 299, - 306, 337, 482, 484, 486, 473, 494, 477, 0, 474, - 0, 0, 468, 536, 0, 0, 380, 0, 626, 638, - 540, 541, 0, 0, 0, 0, 0, 577, 0, 0, - 578, 0, 626, 0, 604, 0, 0, 552, 0, 571, - 0, 0, 572, 573, 574, 575, 576, 1018, 38, 0, - 0, 636, 637, 629, 37, 0, 675, 676, 620, 621, - 622, 0, 394, 405, 386, 0, 634, 651, 0, 0, - 644, 0, 0, 457, 659, 0, 407, 426, 428, 0, - 423, 438, 439, 441, 0, 443, 0, 445, 446, 411, - 412, 413, 0, 414, 0, 0, 0, 0, 434, 457, - 0, 457, 59, 457, 61, 0, 451, 68, 69, 0, - 0, 75, 176, 177, 0, 228, 0, 0, 0, 194, - 206, 206, 197, 207, 198, 0, 168, 0, 165, 102, - 162, 0, 175, 175, 131, 0, 132, 133, 134, 0, - 150, 0, 0, 0, 0, 705, 82, 233, 1018, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 1018, 0, 1018, 697, 698, 699, 700, - 0, 88, 0, 0, 0, 0, 0, 273, 323, 323, - 475, 0, 495, 478, 537, 538, 0, 610, 634, 40, - 0, 152, 152, 589, 152, 156, 592, 152, 594, 152, - 597, 0, 0, 0, 0, 0, 0, 0, 601, 551, - 607, 0, 609, 0, 0, 35, 0, 640, 39, 624, - 0, 458, 398, 43, 47, 0, 651, 643, 653, 655, - 0, 0, 647, 0, 418, 626, 0, 0, 420, 427, - 0, 0, 421, 0, 422, 442, 444, -2, 0, 0, - 0, 0, 626, 457, 54, 55, 0, 72, 73, 74, - 226, 229, 0, 208, 152, 211, 0, 195, 196, 0, - 170, 0, 167, 153, 127, 128, 173, 174, 172, 0, - 172, 0, 157, 0, 1019, 234, 235, 236, 237, 0, - 242, 0, 86, 87, 0, 0, 247, 271, 293, 298, - 479, 539, 638, 542, 586, 172, 590, 591, 593, 595, - 596, 598, 544, 543, 0, 0, 0, 0, 0, 634, - 0, 605, 0, 0, 642, 44, 0, 0, 0, 48, - 0, 656, 0, 0, 0, 63, 0, 634, 660, 661, - 424, 0, 429, 0, 0, 0, 432, 634, 53, 186, - 0, 210, 0, 416, 178, 171, 0, 175, 151, 175, - 0, 0, 80, 0, 89, 90, 0, 0, 0, 41, - 587, 588, 0, 0, 0, 0, 579, 0, 602, 0, - 0, 625, 623, 0, 654, 0, 646, 649, 648, 419, - 51, 0, 0, 454, 0, 0, 452, 52, 185, 187, - 0, 192, 0, 209, 0, 0, 183, 0, 180, 182, - 169, 140, 141, 155, 158, 0, 0, 0, 0, 249, - 545, 547, 546, 548, 0, 0, 0, 550, 567, 568, - 0, 645, 0, 425, 453, 455, 456, 415, 188, 189, - 0, 193, 191, 0, 417, 101, 0, 179, 181, 0, - 265, 0, 91, 92, 85, 549, 0, 0, 0, 652, - 650, 190, 0, 184, 264, 0, 0, 88, 580, 0, - 583, 0, 266, 0, 246, 581, 0, 0, 0, 213, - 0, 0, 214, 215, 0, 0, 582, 216, 0, 0, - 0, 0, 0, 217, 219, 220, 0, 0, 218, 267, - 268, 221, 222, 223, + 570, 0, 0, 0, 0, 0, 0, 0, 0, 638, + 46, 36, 0, 639, 0, 0, 0, 0, 630, 632, + 633, 638, 0, 619, 0, 0, 457, 0, 0, 385, + 42, 401, 397, 0, 457, 0, 0, 447, 0, 0, + 0, 0, 0, 0, 437, 0, 0, 440, 0, 0, + 0, 0, 431, 0, 0, 0, 452, 932, 433, 0, + 435, 436, -2, 0, 0, 0, 56, 57, 0, 0, + 0, 663, 65, 0, 0, 70, 71, 664, 665, 666, + 667, 0, 94, 225, 227, 230, 231, 232, 98, 99, + 100, 0, 0, 212, 942, 975, 206, 206, 875, 204, + 205, 96, 166, 164, 0, 161, 160, 106, 0, 172, + 172, 129, 130, 175, 0, 175, 175, 175, 0, 0, + 123, 124, 125, 117, 0, 118, 119, 120, 0, 121, + 0, 0, 1019, 83, 680, 84, 1018, 0, 0, 696, + 239, 683, 684, 685, 686, 687, 688, 689, 690, 691, + 692, 0, 85, 243, 245, 244, 248, 0, 0, 0, + 270, 1019, 274, 320, 297, 321, 322, 320, 299, 306, + 337, 482, 484, 486, 473, 494, 477, 0, 474, 0, + 0, 468, 536, 0, 0, 380, 0, 626, 638, 540, + 541, 0, 0, 0, 0, 0, 577, 0, 0, 578, + 0, 626, 0, 604, 0, 0, 552, 0, 571, 0, + 0, 572, 573, 574, 575, 576, 38, 0, 0, 636, + 637, 629, 37, 0, 675, 676, 620, 621, 622, 0, + 394, 405, 386, 0, 634, 651, 0, 0, 644, 0, + 0, 457, 659, 0, 407, 426, 428, 0, 423, 438, + 439, 441, 0, 443, 0, 445, 446, 411, 412, 413, + 0, 414, 0, 0, 0, 0, 434, 457, 0, 457, + 59, 457, 61, 0, 451, 68, 69, 0, 0, 75, + 176, 177, 0, 228, 0, 0, 0, 194, 206, 206, + 197, 207, 198, 0, 168, 0, 165, 102, 162, 0, + 175, 175, 131, 0, 132, 133, 134, 0, 150, 0, + 0, 0, 0, 705, 82, 233, 1018, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 1018, 0, 1018, 697, 698, 699, 700, 0, 88, + 0, 0, 0, 0, 0, 273, 323, 323, 475, 0, + 495, 478, 537, 538, 0, 610, 634, 40, 0, 152, + 152, 589, 152, 156, 592, 152, 594, 152, 597, 0, + 0, 0, 0, 0, 0, 0, 601, 551, 607, 0, + 609, 0, 0, 0, 640, 39, 624, 0, 458, 398, + 43, 47, 0, 651, 643, 653, 655, 0, 0, 647, + 0, 418, 626, 0, 0, 420, 427, 0, 0, 421, + 0, 422, 442, 444, -2, 0, 0, 0, 0, 626, + 457, 54, 55, 0, 72, 73, 74, 226, 229, 0, + 208, 152, 211, 0, 195, 196, 0, 170, 0, 167, + 153, 127, 128, 173, 174, 172, 0, 172, 0, 157, + 0, 1019, 234, 235, 236, 237, 0, 242, 0, 86, + 87, 0, 0, 247, 271, 293, 298, 479, 539, 638, + 542, 586, 172, 590, 591, 593, 595, 596, 598, 544, + 543, 0, 0, 0, 0, 0, 634, 0, 605, 0, + 0, 642, 44, 0, 0, 0, 48, 0, 656, 0, + 0, 0, 63, 0, 634, 660, 661, 424, 0, 429, + 0, 0, 0, 432, 634, 53, 186, 0, 210, 0, + 416, 178, 171, 0, 175, 151, 175, 0, 0, 80, + 0, 89, 90, 0, 0, 0, 41, 587, 588, 0, + 0, 0, 0, 579, 0, 602, 0, 0, 625, 623, + 0, 654, 0, 646, 649, 648, 419, 51, 0, 0, + 454, 0, 0, 452, 52, 185, 187, 0, 192, 0, + 209, 0, 0, 183, 0, 180, 182, 169, 140, 141, + 155, 158, 0, 0, 0, 0, 249, 545, 547, 546, + 548, 0, 0, 0, 550, 567, 568, 0, 645, 0, + 425, 453, 455, 456, 415, 188, 189, 0, 193, 191, + 0, 417, 101, 0, 179, 181, 0, 265, 0, 91, + 92, 85, 549, 0, 0, 0, 652, 650, 190, 0, + 184, 264, 0, 0, 88, 580, 0, 583, 0, 266, + 0, 246, 581, 0, 0, 0, 213, 0, 0, 214, + 215, 0, 0, 582, 216, 0, 0, 0, 0, 0, + 217, 219, 220, 0, 0, 218, 267, 268, 221, 222, + 223, } var yyTok1 = [...]int{ @@ -4009,10 +4019,10 @@ yydefault: yyVAL.statement = &OtherAdmin{} } case 35: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:426 { - yyVAL.statement = &Load{InfileS3: string(yyDollar[5].bytes)} + yyVAL.statement = &Load{} } case 36: yyDollar = yyS[yypt-5 : yypt+1] diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 07376a85669..13f21e4027b 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -422,9 +422,9 @@ do_statement: } load_statement: - LOAD DATA FROM S3 STRING skip_to_end + LOAD DATA skip_to_end { - $$ = &Load{InfileS3 : string($5)} + $$ = &Load{} } select_statement: diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index 2f9073625a3..9515cdf0e09 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -338,7 +338,7 @@ func createInstructionFor(query string, stmt sqlparser.Statement, vschema Contex case *sqlparser.Set: return buildSetPlan(stmt, vschema) case *sqlparser.Load: - return buildPlanForBypassUsingQuery(query, vschema) + return buildLoadPlan(query, vschema) case *sqlparser.DBDDL: return nil, vterrors.Errorf(vtrpcpb.Code_UNIMPLEMENTED, "unsupported: Database DDL %v", sqlparser.String(stmt)) case *sqlparser.Show, *sqlparser.SetTransaction: @@ -373,3 +373,26 @@ func buildShowTableStatusPlan(stmt *sqlparser.ShowTableStatus, vschema ContextVS SingleShardOnly: true, }, nil } + +func buildLoadPlan(query string, vschema ContextVSchema) (engine.Primitive, error) { + keyspace, err := vschema.DefaultKeyspace() + if err != nil { + return nil, err + } + + destination := vschema.Destination() + if destination == nil { + if keyspace.Sharded { + return nil, vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "set bypass destination first for a sharded keyspace") + } + destination = key.DestinationAnyShard{} + } + + return &engine.Send{ + Keyspace: keyspace, + TargetDestination: destination, + Query: query, + IsDML: true, + SingleShardOnly: true, + }, nil +} diff --git a/go/vt/vtgate/planbuilder/bypass.go b/go/vt/vtgate/planbuilder/bypass.go index 9e4c31ae73e..9b7fbc0a039 100644 --- a/go/vt/vtgate/planbuilder/bypass.go +++ b/go/vt/vtgate/planbuilder/bypass.go @@ -44,20 +44,3 @@ func buildPlanForBypass(stmt sqlparser.Statement, vschema ContextVSchema) (engin SingleShardOnly: false, }, nil } - -func buildPlanForBypassUsingQuery(query string, vschema ContextVSchema) (engine.Primitive, error) { - if vschema.Destination() == nil { - return nil, vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "set bypass destination first") - } - keyspace, err := vschema.DefaultKeyspace() - if err != nil { - return nil, err - } - return &engine.Send{ - Keyspace: keyspace, - TargetDestination: vschema.Destination(), - Query: query, - IsDML: false, - SingleShardOnly: false, - }, nil -} diff --git a/go/vt/vtgate/planbuilder/testdata/bypass_cases.txt b/go/vt/vtgate/planbuilder/testdata/bypass_cases.txt index c50c22da1f9..c7345318933 100644 --- a/go/vt/vtgate/planbuilder/testdata/bypass_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/bypass_cases.txt @@ -134,9 +134,9 @@ "Sharded": false }, "TargetDestination": "Shard(-80)", - "IsDML": false, + "IsDML": true, "Query": "load data from s3 'x.txt' into table x", - "SingleShardOnly": false + "SingleShardOnly": true } } @@ -151,8 +151,8 @@ "Sharded": false }, "TargetDestination": "Shard(-80)", - "IsDML": false, + "IsDML": true, "Query": "load data from s3 'x.txt'", - "SingleShardOnly": false + "SingleShardOnly": true } } diff --git a/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt b/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt index 78cf1d08b1b..ea0753ee9f0 100644 --- a/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt @@ -444,8 +444,3 @@ "select * from user order by id limit 100 into outfile s3 'out_file_name'" "unsupported: non bypass query with into outfile s3" -"load data from s3 'x.txt' into table x" -"set bypass destination first" - -"load data from s3 'x.txt'" -"set bypass destination first" From 3b833ab91e56e876f929c79aea95de91c33e64b3 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Mon, 12 Oct 2020 13:35:36 +0530 Subject: [PATCH 02/13] Plan support for LOAD on vttablet Signed-off-by: GuptaManan100 --- go/vt/vttablet/tabletserver/planbuilder/plan.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/go/vt/vttablet/tabletserver/planbuilder/plan.go b/go/vt/vttablet/tabletserver/planbuilder/plan.go index c033006f32d..2f0867f6ba3 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/plan.go +++ b/go/vt/vttablet/tabletserver/planbuilder/plan.go @@ -207,6 +207,8 @@ func Build(statement sqlparser.Statement, tables map[string]*schema.Table, isRes PlanID: PlanShowTables, FullQuery: GenerateFullQuery(stmt), } + case *sqlparser.Load: + plan, err = &Plan{PlanID: PlanDDL}, nil default: return nil, vterrors.New(vtrpcpb.Code_INVALID_ARGUMENT, "invalid SQL") } From 8af801778981fd178cc2ae0dc28f5801ccce2440 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Tue, 13 Oct 2020 15:30:34 +0530 Subject: [PATCH 03/13] Added additional parsing support for Select into constructs Signed-off-by: GuptaManan100 --- go/vt/sqlparser/ast.go | 32 +- go/vt/sqlparser/ast_funcs.go | 13 + go/vt/sqlparser/constants.go | 12 + go/vt/sqlparser/parse_test.go | 14 +- go/vt/sqlparser/sql.go | 7010 +++++++++++++++++---------------- go/vt/sqlparser/sql.y | 154 +- go/vt/sqlparser/token.go | 17 +- 7 files changed, 3834 insertions(+), 3418 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 546e7799914..7b033e69fa3 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -69,9 +69,23 @@ type ( OrderBy OrderBy Limit *Limit Lock Lock - IntoOutfileS3 string + Into *SelectInto } + // SelectInto is a struct that represent the INTO part of a select query + SelectInto struct { + Type SelectIntoType + FileName string + Charset string + FormatOption string + ExportOption string + Manifest string + Overwrite string + } + + // SelectIntoType is an enum for SelectInto.Type + SelectIntoType int8 + // Lock is an enum for the type of lock in the statement Lock int8 @@ -985,14 +999,11 @@ func (node *Select) Format(buf *TrackedBuffer) { addIf(node.StraightJoinHint, StraightJoinHint) addIf(node.SQLCalcFoundRows, SQLCalcFoundRowsStr) - buf.astPrintf(node, "select %v%s%v from %v%v%v%v%v%v%s", + buf.astPrintf(node, "select %v%s%v from %v%v%v%v%v%v%s%v", node.Comments, options, node.SelectExprs, node.From, node.Where, node.GroupBy, node.Having, node.OrderBy, - node.Limit, node.Lock.ToString()) - if node.IntoOutfileS3 != "" { - buf.astPrintf(node, " into outfile s3 '%s'", node.IntoOutfileS3) - } + node.Limit, node.Lock.ToString(), node.Into) } // Format formats the node. @@ -2083,3 +2094,12 @@ func (node *ShowTableStatus) Format(buf *TrackedBuffer) { } buf.astPrintf(node, "%v", node.Filter) } + +// Format formats the node. +func (node *SelectInto) Format(buf *TrackedBuffer) { + buf.astPrintf(node, "%s'%s'", node.Type.ToString(), node.FileName) + if node.Charset != "" { + buf.astPrintf(node, " character set %s", node.Charset) + } + buf.astPrintf(node, "%s%s%s%s", node.FormatOption, node.ExportOption, node.Manifest, node.Overwrite) +} diff --git a/go/vt/sqlparser/ast_funcs.go b/go/vt/sqlparser/ast_funcs.go index e04eef8cc81..b644c2b25a1 100644 --- a/go/vt/sqlparser/ast_funcs.go +++ b/go/vt/sqlparser/ast_funcs.go @@ -1118,6 +1118,19 @@ func (ty ExplainType) ToString() string { } } +func (sel SelectIntoType) ToString() string { + switch sel { + case IntoOutfile: + return IntoOutfileStr + case IntoOutfileS3: + return IntoOutfileS3Str + case IntoDumpfile: + return IntoDumpfileStr + default: + return "Unknown Select Into Type" + } +} + // AtCount represents the '@' count in ColIdent type AtCount int diff --git a/go/vt/sqlparser/constants.go b/go/vt/sqlparser/constants.go index bf3d9edc596..f2d7dfbdc21 100644 --- a/go/vt/sqlparser/constants.go +++ b/go/vt/sqlparser/constants.go @@ -156,6 +156,11 @@ const ( NaturalLanguageModeWithQueryExpansionStr = " in natural language mode with query expansion" QueryExpansionStr = " with query expansion" + // INTO OUTFILE + IntoOutfileStr = " into outfile " + IntoOutfileS3Str = " into outfile s3 " + IntoDumpfileStr = " into dumpfile " + // Order.Direction AscScr = "asc" DescScr = "desc" @@ -373,3 +378,10 @@ const ( TraditionalType AnalyzeType ) + +// Constant for Enum Type - SelectIntoType +const ( + IntoOutfile SelectIntoType = iota + IntoOutfileS3 + IntoDumpfile +) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index c187b76c06d..9aafa120f75 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -26,6 +26,8 @@ import ( "sync" "testing" + "gotest.tools/assert" + "github.com/stretchr/testify/require" ) @@ -2123,13 +2125,19 @@ func TestConvert(t *testing.T) { } } -func TestIntoOutfileS3(t *testing.T) { +func TestSelectInto(t *testing.T) { validSQL := []struct { input string output string }{{ input: "select * from t order by name limit 100 into outfile s3 'out_file_name'", output: "select * from t order by name asc limit 100 into outfile s3 'out_file_name'", + }, { + input: "select * from t into dumpfile 'out_file_name'", + }, { + input: "select * from t into outfile 'out_file_name' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'", + }, { + input: "select * from t into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off", }, { input: "select * from (select * from t union select * from t2) as t3 where t3.name in (select col from t4) into outfile s3 'out_file_name'", }, { @@ -2149,9 +2157,7 @@ func TestIntoOutfileS3(t *testing.T) { continue } out := String(tree) - if out != tcase.output { - t.Errorf("out: %s, want %s", out, tcase.output) - } + assert.Equal(t, tcase.output, out) } invalidSQL := []struct { diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 589569ffed1..08da14fcf16 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -121,6 +121,7 @@ type yySymType struct { matchExprOption MatchExprOption orderDirection OrderDirection explainType ExplainType + selectInto *SelectInto } const LEX_ERROR = 57346 @@ -160,321 +161,332 @@ const OUTFILE = 57379 const S3 = 57380 const DATA = 57381 const LOAD = 57382 -const VALUES = 57383 -const LAST_INSERT_ID = 57384 -const NEXT = 57385 -const VALUE = 57386 -const SHARE = 57387 -const MODE = 57388 -const SQL_NO_CACHE = 57389 -const SQL_CACHE = 57390 -const SQL_CALC_FOUND_ROWS = 57391 -const JOIN = 57392 -const STRAIGHT_JOIN = 57393 -const LEFT = 57394 -const RIGHT = 57395 -const INNER = 57396 -const OUTER = 57397 -const CROSS = 57398 -const NATURAL = 57399 -const USE = 57400 -const FORCE = 57401 -const ON = 57402 -const USING = 57403 -const ID = 57404 -const AT_ID = 57405 -const AT_AT_ID = 57406 -const HEX = 57407 -const STRING = 57408 -const INTEGRAL = 57409 -const FLOAT = 57410 -const HEXNUM = 57411 -const VALUE_ARG = 57412 -const LIST_ARG = 57413 -const COMMENT = 57414 -const COMMENT_KEYWORD = 57415 -const BIT_LITERAL = 57416 -const NULL = 57417 -const TRUE = 57418 -const FALSE = 57419 -const OFF = 57420 -const OR = 57421 -const XOR = 57422 -const AND = 57423 -const NOT = 57424 -const BETWEEN = 57425 -const CASE = 57426 -const WHEN = 57427 -const THEN = 57428 -const ELSE = 57429 -const END = 57430 -const LE = 57431 -const GE = 57432 -const NE = 57433 -const NULL_SAFE_EQUAL = 57434 -const IS = 57435 -const LIKE = 57436 -const REGEXP = 57437 -const IN = 57438 -const SHIFT_LEFT = 57439 -const SHIFT_RIGHT = 57440 -const DIV = 57441 -const MOD = 57442 -const UNARY = 57443 -const COLLATE = 57444 -const BINARY = 57445 -const UNDERSCORE_BINARY = 57446 -const UNDERSCORE_UTF8MB4 = 57447 -const UNDERSCORE_UTF8 = 57448 -const UNDERSCORE_LATIN1 = 57449 -const INTERVAL = 57450 -const JSON_EXTRACT_OP = 57451 -const JSON_UNQUOTE_EXTRACT_OP = 57452 -const CREATE = 57453 -const ALTER = 57454 -const DROP = 57455 -const RENAME = 57456 -const ANALYZE = 57457 -const ADD = 57458 -const FLUSH = 57459 -const SCHEMA = 57460 -const TABLE = 57461 -const INDEX = 57462 -const VIEW = 57463 -const TO = 57464 -const IGNORE = 57465 -const IF = 57466 -const UNIQUE = 57467 -const PRIMARY = 57468 -const COLUMN = 57469 -const SPATIAL = 57470 -const FULLTEXT = 57471 -const KEY_BLOCK_SIZE = 57472 -const CHECK = 57473 -const INDEXES = 57474 -const ACTION = 57475 -const CASCADE = 57476 -const CONSTRAINT = 57477 -const FOREIGN = 57478 -const NO = 57479 -const REFERENCES = 57480 -const RESTRICT = 57481 -const SHOW = 57482 -const DESCRIBE = 57483 -const EXPLAIN = 57484 -const DATE = 57485 -const ESCAPE = 57486 -const REPAIR = 57487 -const OPTIMIZE = 57488 -const TRUNCATE = 57489 -const MAXVALUE = 57490 -const PARTITION = 57491 -const REORGANIZE = 57492 -const LESS = 57493 -const THAN = 57494 -const PROCEDURE = 57495 -const TRIGGER = 57496 -const VINDEX = 57497 -const VINDEXES = 57498 -const STATUS = 57499 -const VARIABLES = 57500 -const WARNINGS = 57501 -const SEQUENCE = 57502 -const BEGIN = 57503 -const START = 57504 -const TRANSACTION = 57505 -const COMMIT = 57506 -const ROLLBACK = 57507 -const SAVEPOINT = 57508 -const RELEASE = 57509 -const WORK = 57510 -const BIT = 57511 -const TINYINT = 57512 -const SMALLINT = 57513 -const MEDIUMINT = 57514 -const INT = 57515 -const INTEGER = 57516 -const BIGINT = 57517 -const INTNUM = 57518 -const REAL = 57519 -const DOUBLE = 57520 -const FLOAT_TYPE = 57521 -const DECIMAL = 57522 -const NUMERIC = 57523 -const TIME = 57524 -const TIMESTAMP = 57525 -const DATETIME = 57526 -const YEAR = 57527 -const CHAR = 57528 -const VARCHAR = 57529 -const BOOL = 57530 -const CHARACTER = 57531 -const VARBINARY = 57532 -const NCHAR = 57533 -const TEXT = 57534 -const TINYTEXT = 57535 -const MEDIUMTEXT = 57536 -const LONGTEXT = 57537 -const BLOB = 57538 -const TINYBLOB = 57539 -const MEDIUMBLOB = 57540 -const LONGBLOB = 57541 -const JSON = 57542 -const ENUM = 57543 -const GEOMETRY = 57544 -const POINT = 57545 -const LINESTRING = 57546 -const POLYGON = 57547 -const GEOMETRYCOLLECTION = 57548 -const MULTIPOINT = 57549 -const MULTILINESTRING = 57550 -const MULTIPOLYGON = 57551 -const NULLX = 57552 -const AUTO_INCREMENT = 57553 -const APPROXNUM = 57554 -const SIGNED = 57555 -const UNSIGNED = 57556 -const ZEROFILL = 57557 -const COLLATION = 57558 -const DATABASES = 57559 -const TABLES = 57560 -const VITESS_METADATA = 57561 -const VSCHEMA = 57562 -const FULL = 57563 -const PROCESSLIST = 57564 -const COLUMNS = 57565 -const FIELDS = 57566 -const ENGINES = 57567 -const PLUGINS = 57568 -const EXTENDED = 57569 -const KEYSPACES = 57570 -const VITESS_KEYSPACES = 57571 -const VITESS_SHARDS = 57572 -const VITESS_TABLETS = 57573 -const NAMES = 57574 -const CHARSET = 57575 -const GLOBAL = 57576 -const SESSION = 57577 -const ISOLATION = 57578 -const LEVEL = 57579 -const READ = 57580 -const WRITE = 57581 -const ONLY = 57582 -const REPEATABLE = 57583 -const COMMITTED = 57584 -const UNCOMMITTED = 57585 -const SERIALIZABLE = 57586 -const CURRENT_TIMESTAMP = 57587 -const DATABASE = 57588 -const CURRENT_DATE = 57589 -const CURRENT_TIME = 57590 -const LOCALTIME = 57591 -const LOCALTIMESTAMP = 57592 -const UTC_DATE = 57593 -const UTC_TIME = 57594 -const UTC_TIMESTAMP = 57595 -const REPLACE = 57596 -const CONVERT = 57597 -const CAST = 57598 -const SUBSTR = 57599 -const SUBSTRING = 57600 -const GROUP_CONCAT = 57601 -const SEPARATOR = 57602 -const TIMESTAMPADD = 57603 -const TIMESTAMPDIFF = 57604 -const MATCH = 57605 -const AGAINST = 57606 -const BOOLEAN = 57607 -const LANGUAGE = 57608 -const WITH = 57609 -const QUERY = 57610 -const EXPANSION = 57611 -const UNUSED = 57612 -const ARRAY = 57613 -const CUME_DIST = 57614 -const DESCRIPTION = 57615 -const DENSE_RANK = 57616 -const EMPTY = 57617 -const EXCEPT = 57618 -const FIRST_VALUE = 57619 -const GROUPING = 57620 -const GROUPS = 57621 -const JSON_TABLE = 57622 -const LAG = 57623 -const LAST_VALUE = 57624 -const LATERAL = 57625 -const LEAD = 57626 -const MEMBER = 57627 -const NTH_VALUE = 57628 -const NTILE = 57629 -const OF = 57630 -const OVER = 57631 -const PERCENT_RANK = 57632 -const RANK = 57633 -const RECURSIVE = 57634 -const ROW_NUMBER = 57635 -const SYSTEM = 57636 -const WINDOW = 57637 -const ACTIVE = 57638 -const ADMIN = 57639 -const BUCKETS = 57640 -const CLONE = 57641 -const COMPONENT = 57642 -const DEFINITION = 57643 -const ENFORCED = 57644 -const EXCLUDE = 57645 -const FOLLOWING = 57646 -const GEOMCOLLECTION = 57647 -const GET_MASTER_PUBLIC_KEY = 57648 -const HISTOGRAM = 57649 -const HISTORY = 57650 -const INACTIVE = 57651 -const INVISIBLE = 57652 -const LOCKED = 57653 -const MASTER_COMPRESSION_ALGORITHMS = 57654 -const MASTER_PUBLIC_KEY_PATH = 57655 -const MASTER_TLS_CIPHERSUITES = 57656 -const MASTER_ZSTD_COMPRESSION_LEVEL = 57657 -const NESTED = 57658 -const NETWORK_NAMESPACE = 57659 -const NOWAIT = 57660 -const NULLS = 57661 -const OJ = 57662 -const OLD = 57663 -const OPTIONAL = 57664 -const ORDINALITY = 57665 -const ORGANIZATION = 57666 -const OTHERS = 57667 -const PATH = 57668 -const PERSIST = 57669 -const PERSIST_ONLY = 57670 -const PRECEDING = 57671 -const PRIVILEGE_CHECKS_USER = 57672 -const PROCESS = 57673 -const RANDOM = 57674 -const REFERENCE = 57675 -const REQUIRE_ROW_FORMAT = 57676 -const RESOURCE = 57677 -const RESPECT = 57678 -const RESTART = 57679 -const RETAIN = 57680 -const REUSE = 57681 -const ROLE = 57682 -const SECONDARY = 57683 -const SECONDARY_ENGINE = 57684 -const SECONDARY_LOAD = 57685 -const SECONDARY_UNLOAD = 57686 -const SKIP = 57687 -const SRID = 57688 -const THREAD_PRIORITY = 57689 -const TIES = 57690 -const UNBOUNDED = 57691 -const VCPU = 57692 -const VISIBLE = 57693 -const FORMAT = 57694 -const TREE = 57695 -const VITESS = 57696 -const TRADITIONAL = 57697 +const LINES = 57383 +const TERMINATED = 57384 +const ESCAPED = 57385 +const ENCLOSED = 57386 +const DUMPFILE = 57387 +const CSV = 57388 +const HEADER = 57389 +const MANIFEST = 57390 +const OVERWRITE = 57391 +const STARTING = 57392 +const OPTIONALLY = 57393 +const VALUES = 57394 +const LAST_INSERT_ID = 57395 +const NEXT = 57396 +const VALUE = 57397 +const SHARE = 57398 +const MODE = 57399 +const SQL_NO_CACHE = 57400 +const SQL_CACHE = 57401 +const SQL_CALC_FOUND_ROWS = 57402 +const JOIN = 57403 +const STRAIGHT_JOIN = 57404 +const LEFT = 57405 +const RIGHT = 57406 +const INNER = 57407 +const OUTER = 57408 +const CROSS = 57409 +const NATURAL = 57410 +const USE = 57411 +const FORCE = 57412 +const ON = 57413 +const USING = 57414 +const ID = 57415 +const AT_ID = 57416 +const AT_AT_ID = 57417 +const HEX = 57418 +const STRING = 57419 +const INTEGRAL = 57420 +const FLOAT = 57421 +const HEXNUM = 57422 +const VALUE_ARG = 57423 +const LIST_ARG = 57424 +const COMMENT = 57425 +const COMMENT_KEYWORD = 57426 +const BIT_LITERAL = 57427 +const NULL = 57428 +const TRUE = 57429 +const FALSE = 57430 +const OFF = 57431 +const OR = 57432 +const XOR = 57433 +const AND = 57434 +const NOT = 57435 +const BETWEEN = 57436 +const CASE = 57437 +const WHEN = 57438 +const THEN = 57439 +const ELSE = 57440 +const END = 57441 +const LE = 57442 +const GE = 57443 +const NE = 57444 +const NULL_SAFE_EQUAL = 57445 +const IS = 57446 +const LIKE = 57447 +const REGEXP = 57448 +const IN = 57449 +const SHIFT_LEFT = 57450 +const SHIFT_RIGHT = 57451 +const DIV = 57452 +const MOD = 57453 +const UNARY = 57454 +const COLLATE = 57455 +const BINARY = 57456 +const UNDERSCORE_BINARY = 57457 +const UNDERSCORE_UTF8MB4 = 57458 +const UNDERSCORE_UTF8 = 57459 +const UNDERSCORE_LATIN1 = 57460 +const INTERVAL = 57461 +const JSON_EXTRACT_OP = 57462 +const JSON_UNQUOTE_EXTRACT_OP = 57463 +const CREATE = 57464 +const ALTER = 57465 +const DROP = 57466 +const RENAME = 57467 +const ANALYZE = 57468 +const ADD = 57469 +const FLUSH = 57470 +const SCHEMA = 57471 +const TABLE = 57472 +const INDEX = 57473 +const VIEW = 57474 +const TO = 57475 +const IGNORE = 57476 +const IF = 57477 +const UNIQUE = 57478 +const PRIMARY = 57479 +const COLUMN = 57480 +const SPATIAL = 57481 +const FULLTEXT = 57482 +const KEY_BLOCK_SIZE = 57483 +const CHECK = 57484 +const INDEXES = 57485 +const ACTION = 57486 +const CASCADE = 57487 +const CONSTRAINT = 57488 +const FOREIGN = 57489 +const NO = 57490 +const REFERENCES = 57491 +const RESTRICT = 57492 +const SHOW = 57493 +const DESCRIBE = 57494 +const EXPLAIN = 57495 +const DATE = 57496 +const ESCAPE = 57497 +const REPAIR = 57498 +const OPTIMIZE = 57499 +const TRUNCATE = 57500 +const MAXVALUE = 57501 +const PARTITION = 57502 +const REORGANIZE = 57503 +const LESS = 57504 +const THAN = 57505 +const PROCEDURE = 57506 +const TRIGGER = 57507 +const VINDEX = 57508 +const VINDEXES = 57509 +const STATUS = 57510 +const VARIABLES = 57511 +const WARNINGS = 57512 +const SEQUENCE = 57513 +const BEGIN = 57514 +const START = 57515 +const TRANSACTION = 57516 +const COMMIT = 57517 +const ROLLBACK = 57518 +const SAVEPOINT = 57519 +const RELEASE = 57520 +const WORK = 57521 +const BIT = 57522 +const TINYINT = 57523 +const SMALLINT = 57524 +const MEDIUMINT = 57525 +const INT = 57526 +const INTEGER = 57527 +const BIGINT = 57528 +const INTNUM = 57529 +const REAL = 57530 +const DOUBLE = 57531 +const FLOAT_TYPE = 57532 +const DECIMAL = 57533 +const NUMERIC = 57534 +const TIME = 57535 +const TIMESTAMP = 57536 +const DATETIME = 57537 +const YEAR = 57538 +const CHAR = 57539 +const VARCHAR = 57540 +const BOOL = 57541 +const CHARACTER = 57542 +const VARBINARY = 57543 +const NCHAR = 57544 +const TEXT = 57545 +const TINYTEXT = 57546 +const MEDIUMTEXT = 57547 +const LONGTEXT = 57548 +const BLOB = 57549 +const TINYBLOB = 57550 +const MEDIUMBLOB = 57551 +const LONGBLOB = 57552 +const JSON = 57553 +const ENUM = 57554 +const GEOMETRY = 57555 +const POINT = 57556 +const LINESTRING = 57557 +const POLYGON = 57558 +const GEOMETRYCOLLECTION = 57559 +const MULTIPOINT = 57560 +const MULTILINESTRING = 57561 +const MULTIPOLYGON = 57562 +const NULLX = 57563 +const AUTO_INCREMENT = 57564 +const APPROXNUM = 57565 +const SIGNED = 57566 +const UNSIGNED = 57567 +const ZEROFILL = 57568 +const COLLATION = 57569 +const DATABASES = 57570 +const TABLES = 57571 +const VITESS_METADATA = 57572 +const VSCHEMA = 57573 +const FULL = 57574 +const PROCESSLIST = 57575 +const COLUMNS = 57576 +const FIELDS = 57577 +const ENGINES = 57578 +const PLUGINS = 57579 +const EXTENDED = 57580 +const KEYSPACES = 57581 +const VITESS_KEYSPACES = 57582 +const VITESS_SHARDS = 57583 +const VITESS_TABLETS = 57584 +const NAMES = 57585 +const CHARSET = 57586 +const GLOBAL = 57587 +const SESSION = 57588 +const ISOLATION = 57589 +const LEVEL = 57590 +const READ = 57591 +const WRITE = 57592 +const ONLY = 57593 +const REPEATABLE = 57594 +const COMMITTED = 57595 +const UNCOMMITTED = 57596 +const SERIALIZABLE = 57597 +const CURRENT_TIMESTAMP = 57598 +const DATABASE = 57599 +const CURRENT_DATE = 57600 +const CURRENT_TIME = 57601 +const LOCALTIME = 57602 +const LOCALTIMESTAMP = 57603 +const UTC_DATE = 57604 +const UTC_TIME = 57605 +const UTC_TIMESTAMP = 57606 +const REPLACE = 57607 +const CONVERT = 57608 +const CAST = 57609 +const SUBSTR = 57610 +const SUBSTRING = 57611 +const GROUP_CONCAT = 57612 +const SEPARATOR = 57613 +const TIMESTAMPADD = 57614 +const TIMESTAMPDIFF = 57615 +const MATCH = 57616 +const AGAINST = 57617 +const BOOLEAN = 57618 +const LANGUAGE = 57619 +const WITH = 57620 +const QUERY = 57621 +const EXPANSION = 57622 +const UNUSED = 57623 +const ARRAY = 57624 +const CUME_DIST = 57625 +const DESCRIPTION = 57626 +const DENSE_RANK = 57627 +const EMPTY = 57628 +const EXCEPT = 57629 +const FIRST_VALUE = 57630 +const GROUPING = 57631 +const GROUPS = 57632 +const JSON_TABLE = 57633 +const LAG = 57634 +const LAST_VALUE = 57635 +const LATERAL = 57636 +const LEAD = 57637 +const MEMBER = 57638 +const NTH_VALUE = 57639 +const NTILE = 57640 +const OF = 57641 +const OVER = 57642 +const PERCENT_RANK = 57643 +const RANK = 57644 +const RECURSIVE = 57645 +const ROW_NUMBER = 57646 +const SYSTEM = 57647 +const WINDOW = 57648 +const ACTIVE = 57649 +const ADMIN = 57650 +const BUCKETS = 57651 +const CLONE = 57652 +const COMPONENT = 57653 +const DEFINITION = 57654 +const ENFORCED = 57655 +const EXCLUDE = 57656 +const FOLLOWING = 57657 +const GEOMCOLLECTION = 57658 +const GET_MASTER_PUBLIC_KEY = 57659 +const HISTOGRAM = 57660 +const HISTORY = 57661 +const INACTIVE = 57662 +const INVISIBLE = 57663 +const LOCKED = 57664 +const MASTER_COMPRESSION_ALGORITHMS = 57665 +const MASTER_PUBLIC_KEY_PATH = 57666 +const MASTER_TLS_CIPHERSUITES = 57667 +const MASTER_ZSTD_COMPRESSION_LEVEL = 57668 +const NESTED = 57669 +const NETWORK_NAMESPACE = 57670 +const NOWAIT = 57671 +const NULLS = 57672 +const OJ = 57673 +const OLD = 57674 +const OPTIONAL = 57675 +const ORDINALITY = 57676 +const ORGANIZATION = 57677 +const OTHERS = 57678 +const PATH = 57679 +const PERSIST = 57680 +const PERSIST_ONLY = 57681 +const PRECEDING = 57682 +const PRIVILEGE_CHECKS_USER = 57683 +const PROCESS = 57684 +const RANDOM = 57685 +const REFERENCE = 57686 +const REQUIRE_ROW_FORMAT = 57687 +const RESOURCE = 57688 +const RESPECT = 57689 +const RESTART = 57690 +const RETAIN = 57691 +const REUSE = 57692 +const ROLE = 57693 +const SECONDARY = 57694 +const SECONDARY_ENGINE = 57695 +const SECONDARY_LOAD = 57696 +const SECONDARY_UNLOAD = 57697 +const SKIP = 57698 +const SRID = 57699 +const THREAD_PRIORITY = 57700 +const TIES = 57701 +const UNBOUNDED = 57702 +const VCPU = 57703 +const VISIBLE = 57704 +const FORMAT = 57705 +const TREE = 57706 +const VITESS = 57707 +const TRADITIONAL = 57708 var yyToknames = [...]string{ "$end", @@ -517,6 +529,17 @@ var yyToknames = [...]string{ "S3", "DATA", "LOAD", + "LINES", + "TERMINATED", + "ESCAPED", + "ENCLOSED", + "DUMPFILE", + "CSV", + "HEADER", + "MANIFEST", + "OVERWRITE", + "STARTING", + "OPTIONALLY", "VALUES", "LAST_INSERT_ID", "NEXT", @@ -864,1971 +887,1973 @@ var yyExca = [...]int{ -2, 0, -1, 45, 34, 314, - 137, 314, - 149, 314, - 174, 328, - 175, 328, + 148, 314, + 160, 314, + 185, 328, + 186, 328, -2, 316, -1, 50, - 139, 338, + 150, 338, -2, 336, -1, 74, - 43, 374, + 54, 374, -2, 382, - -1, 405, - 125, 710, - -2, 706, - -1, 406, - 125, 711, - -2, 707, - -1, 421, - 43, 375, + -1, 416, + 136, 738, + -2, 734, + -1, 417, + 136, 739, + -2, 735, + -1, 432, + 54, 375, -2, 387, - -1, 422, - 43, 376, + -1, 433, + 54, 376, -2, 388, - -1, 442, - 93, 969, + -1, 453, + 104, 1006, -2, 76, - -1, 443, - 93, 882, + -1, 454, + 104, 914, -2, 77, - -1, 448, - 93, 848, - -2, 669, - -1, 450, - 93, 915, - -2, 671, - -1, 955, - 125, 713, - -2, 709, - -1, 1042, - 61, 58, - 63, 58, + -1, 459, + 104, 876, + -2, 697, + -1, 461, + 104, 950, + -2, 699, + -1, 966, + 136, 741, + -2, 737, + -1, 1053, + 72, 58, + 74, 58, -2, 62, - -1, 1394, + -1, 1408, 5, 626, 18, 626, 20, 626, 32, 626, - 64, 626, + 75, 626, -2, 413, + -1, 1600, + 44, 669, + -2, 667, } const yyPrivate = 57344 -const yyLast = 18945 +const yyLast = 18934 var yyAct = [...]int{ - 405, 1640, 1630, 1437, 1319, 1221, 349, 1597, 1064, 1546, - 1499, 1512, 1241, 364, 1374, 1410, 1036, 744, 1093, 378, - 751, 1222, 1060, 414, 1371, 73, 3, 1270, 1375, 704, - 1033, 1073, 1107, 942, 1380, 1338, 1063, 1208, 876, 605, - 94, 1158, 1296, 335, 295, 949, 318, 295, 1386, 1287, - 71, 1077, 94, 447, 295, 1015, 777, 789, 1022, 1038, - 782, 749, 754, 975, 895, 919, 772, 351, 573, 408, - 786, 771, 779, 29, 788, 761, 1103, 69, 1044, 717, - 347, 74, 94, 614, 905, 94, 295, 718, 295, 340, - 68, 8, 7, 6, 594, 1633, 423, 1617, 1628, 336, - 293, 283, 339, 1605, 281, 1625, 1438, 1616, 1604, 1355, - 331, 622, 1467, 578, 76, 77, 78, 79, 80, 81, - 1258, 1405, 1406, 1257, 1055, 1056, 1259, 31, 624, 1404, - 62, 35, 36, 1054, 338, 291, 287, 288, 289, 429, - 433, 337, 575, 409, 577, 1278, 790, 1126, 791, 637, - 1086, 390, 441, 396, 397, 394, 395, 393, 392, 391, - 1321, 1125, 96, 97, 98, 1502, 1094, 398, 399, 1458, - 1572, 666, 665, 675, 676, 668, 669, 670, 671, 672, - 673, 674, 667, 61, 632, 677, 1456, 328, 633, 630, - 631, 904, 330, 326, 952, 864, 96, 97, 98, 96, - 97, 98, 635, 284, 625, 626, 627, 1124, 863, 1323, - 444, 636, 861, 1627, 1624, 1598, 1322, 1590, 1318, 1016, - 620, 1413, 31, 32, 33, 62, 35, 36, 1648, 282, - 595, 1547, 580, 611, 1080, 613, 865, 906, 907, 908, - 1555, 435, 66, 1324, 862, 1644, 1549, 37, 56, 57, - 285, 59, 1242, 1244, 869, 640, 60, 1087, 852, 1080, - 1121, 1118, 1119, 290, 1117, 1397, 1396, 610, 612, 1395, - 96, 97, 98, 576, 46, 583, 298, 286, 61, 689, - 690, 1579, 295, 585, 586, 1481, 1403, 295, 1315, 596, - 1213, 1187, 1138, 295, 1317, 1137, 1177, 1128, 1131, 295, - 603, 1174, 1166, 609, 1050, 765, 702, 601, 667, 1061, - 94, 677, 1254, 677, 926, 896, 994, 1548, 615, 94, - 607, 657, 84, 619, 656, 654, 891, 1588, 924, 925, - 923, 94, 94, 1603, 1243, 621, 654, 1123, 584, 590, - 1094, 657, 1079, 593, 39, 40, 42, 41, 44, 600, - 58, 1573, 657, 1556, 1554, 602, 1564, 638, 646, 1122, - 608, 85, 1173, 1384, 792, 1642, 822, 1079, 1643, 650, - 1641, 976, 1357, 45, 65, 64, 1083, 854, 54, 55, - 43, 651, 652, 1084, 597, 598, 599, 1276, 616, 617, - 758, 976, 63, 1184, 47, 48, 787, 49, 50, 51, - 52, 1593, 1316, 1127, 1314, 1610, 897, 587, 606, 588, - 689, 690, 589, 1464, 687, 689, 690, 892, 1129, 61, - 1608, 655, 656, 654, 649, 647, 648, 418, 1508, 741, - 639, 922, 94, 434, 1507, 295, 742, 295, 295, 657, - 94, 1649, 96, 97, 98, 1291, 94, 1151, 1152, 1153, - 1290, 740, 1279, 705, 810, 666, 665, 675, 676, 668, - 669, 670, 671, 672, 673, 674, 667, 770, 431, 677, - 1589, 720, 722, 724, 726, 728, 730, 731, 439, 721, - 723, 1525, 727, 729, 1505, 732, 1471, 63, 1288, 1650, - 889, 769, 881, 743, 781, 823, 1424, 666, 665, 675, - 676, 668, 669, 670, 671, 672, 673, 674, 667, 867, - 591, 677, 1159, 436, 437, 1561, 579, 999, 1000, 1560, - 755, 836, 839, 840, 841, 842, 843, 844, 341, 845, - 846, 847, 848, 849, 824, 825, 826, 827, 808, 809, - 837, 1420, 811, 1081, 812, 813, 814, 815, 816, 817, - 818, 819, 820, 821, 828, 829, 830, 831, 832, 833, - 834, 835, 670, 671, 672, 673, 674, 667, 444, 70, - 677, 1552, 1626, 295, 655, 656, 654, 850, 94, 1383, - 853, 1339, 855, 295, 295, 94, 94, 94, 655, 656, - 654, 295, 657, 996, 1372, 295, 1359, 1383, 295, 874, - 875, 1477, 295, 1209, 94, 653, 657, 581, 582, 94, - 94, 94, 295, 94, 94, 753, 1209, 838, 655, 656, - 654, 1563, 1341, 914, 916, 917, 94, 94, 418, 800, - 915, 96, 97, 98, 1428, 1306, 657, 995, 1019, 856, - 857, 96, 97, 98, 880, 944, 61, 866, 96, 97, - 98, 781, 1261, 1019, 873, 878, 655, 656, 654, 1343, - 1262, 1347, 418, 1342, 1053, 1340, 1383, 870, 886, 1618, - 1345, 1302, 1303, 1304, 657, 1612, 418, 1190, 943, 1344, - 920, 367, 366, 369, 370, 371, 372, 945, 1189, 851, - 368, 373, 1346, 1348, 899, 72, 858, 859, 860, 1552, - 1601, 94, 666, 665, 675, 676, 668, 669, 670, 671, - 672, 673, 674, 667, 1007, 879, 677, 964, 967, 901, - 883, 884, 885, 977, 887, 888, 959, 1045, 921, 1552, - 418, 1552, 1580, 1008, 94, 94, 997, 893, 894, 1552, - 1551, 954, 1007, 1305, 1497, 1496, 1483, 418, 1310, 1307, - 1298, 1308, 1301, 94, 1297, 1248, 955, 1045, 1299, 1300, - 295, 406, 705, 94, 411, 989, 868, 295, 31, 295, - 946, 947, 1309, 1480, 418, 1001, 784, 295, 295, 295, - 1514, 956, 985, 986, 1007, 94, 1430, 1429, 94, 1426, - 1427, 1426, 1425, 1007, 418, 1019, 418, 653, 418, 94, - 94, 95, 1034, 1532, 1013, 296, 799, 798, 296, 1018, - 1088, 31, 658, 95, 1488, 296, 1010, 1108, 1416, 955, - 61, 1387, 1388, 1014, 61, 1017, 1046, 1046, 1265, 1104, - 1099, 953, 1095, 1096, 1097, 1042, 31, 1098, 1011, 1393, - 1320, 1019, 1515, 95, 1111, 1635, 95, 296, 341, 296, - 1631, 1043, 1009, 295, 94, 1051, 94, 715, 1130, 1048, - 1052, 1216, 295, 295, 295, 295, 295, 61, 1068, 295, - 295, 1217, 1418, 295, 94, 1047, 1047, 1049, 1045, 1390, - 1372, 1292, 1109, 902, 747, 750, 1463, 872, 1233, 1392, - 1231, 295, 61, 1234, 953, 1232, 1230, 295, 295, 295, - 1229, 960, 961, 295, 94, 966, 969, 970, 1235, 1112, - 1028, 1029, 1198, 444, 1622, 1172, 444, 1171, 1132, 1133, - 1134, 1135, 1136, 1105, 1106, 1139, 1140, 1065, 1615, 1141, - 984, 424, 1364, 987, 988, 1144, 655, 656, 654, 1148, - 752, 1620, 1207, 920, 1206, 425, 407, 1143, 1363, 1197, - 972, 1470, 1283, 797, 657, 1147, 756, 757, 427, 1149, - 426, 604, 1275, 1595, 973, 1113, 1594, 1115, 1530, 1273, - 666, 665, 675, 676, 668, 669, 670, 671, 672, 673, - 674, 667, 1267, 1168, 677, 1142, 1475, 1032, 1510, 1154, - 992, 921, 666, 665, 675, 676, 668, 669, 670, 671, - 672, 673, 674, 667, 1114, 871, 677, 1196, 415, 295, - 1024, 1027, 1028, 1029, 1025, 745, 1026, 1030, 1474, 1202, - 295, 295, 295, 295, 295, 1223, 1167, 746, 412, 413, - 409, 416, 295, 72, 1205, 1473, 295, 1367, 1183, 1211, - 295, 1218, 1204, 296, 1209, 295, 295, 634, 296, 295, - 295, 295, 1214, 1178, 296, 1637, 1636, 1637, 1175, 1201, - 296, 1240, 1260, 898, 94, 766, 1089, 1090, 1091, 1092, - 1210, 95, 1263, 1266, 759, 1249, 882, 1271, 1271, 1251, - 95, 1577, 1100, 1101, 1102, 1503, 993, 1225, 1226, 1236, - 1228, 1224, 95, 95, 1227, 411, 70, 75, 1247, 1246, - 67, 1, 1250, 900, 878, 1272, 1212, 317, 1280, 1281, - 1252, 1255, 94, 94, 1629, 1439, 1282, 1511, 1284, 1285, - 1286, 1120, 909, 910, 911, 912, 980, 1268, 1269, 666, - 665, 675, 676, 668, 669, 670, 671, 672, 673, 674, - 667, 1596, 94, 677, 1545, 1163, 1164, 1409, 1071, 1289, - 675, 676, 668, 669, 670, 671, 672, 673, 674, 667, - 1295, 1311, 677, 1062, 83, 571, 1181, 94, 82, 1587, - 890, 618, 1070, 943, 1069, 1553, 1277, 962, 963, 1085, - 1501, 1417, 1274, 1592, 805, 803, 1337, 804, 1336, 802, - 807, 806, 1065, 95, 801, 310, 296, 1328, 296, 296, - 417, 95, 1356, 903, 295, 327, 1349, 95, 1326, 1350, - 1031, 1334, 1327, 793, 94, 1110, 760, 86, 1313, 1312, - 94, 94, 1373, 1223, 1294, 1116, 954, 1082, 307, 668, - 669, 670, 671, 672, 673, 674, 667, 1376, 1370, 677, - 628, 955, 629, 312, 280, 685, 94, 1203, 1256, 295, - 445, 438, 1378, 1325, 991, 998, 748, 1472, 1366, 1382, - 1365, 1059, 1182, 94, 714, 94, 94, 974, 775, 1271, - 1271, 350, 913, 1408, 365, 362, 1391, 363, 1002, 1400, - 1398, 1215, 659, 348, 1423, 1399, 342, 1401, 774, 1402, - 767, 1023, 1021, 295, 1020, 1335, 1414, 1415, 1412, 1407, - 780, 1389, 1385, 1421, 1422, 773, 1006, 420, 971, 1571, - 1466, 419, 53, 295, 34, 332, 1360, 642, 428, 94, - 28, 1440, 94, 94, 94, 295, 1024, 1027, 1028, 1029, - 1025, 23, 1026, 1030, 296, 22, 1387, 1388, 21, 95, - 1432, 20, 1335, 19, 296, 296, 95, 95, 95, 1431, - 25, 18, 296, 379, 30, 1433, 296, 1435, 17, 296, - 1449, 16, 592, 296, 38, 95, 1445, 1446, 27, 1434, - 95, 95, 95, 296, 95, 95, 1454, 26, 15, 14, - 13, 1444, 12, 11, 30, 424, 10, 95, 95, 9, - 1223, 1065, 5, 1065, 4, 645, 24, 703, 1476, 425, - 2, 0, 0, 1484, 0, 1485, 0, 0, 94, 0, - 421, 422, 427, 0, 426, 0, 1263, 94, 0, 0, - 1494, 0, 0, 410, 0, 0, 0, 0, 0, 0, - 0, 0, 94, 0, 0, 0, 0, 0, 1495, 94, - 0, 0, 0, 0, 1504, 1185, 1506, 0, 0, 0, - 0, 0, 0, 1518, 0, 0, 0, 0, 0, 0, - 0, 0, 95, 0, 1199, 1200, 750, 1516, 0, 0, - 0, 1517, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 94, 94, 0, 94, 0, 0, 0, 0, 94, - 1524, 94, 94, 94, 295, 95, 95, 1376, 94, 1538, - 0, 1539, 1541, 1542, 1529, 1533, 1531, 0, 1537, 0, - 1543, 0, 0, 1550, 95, 94, 295, 1557, 1544, 0, - 0, 296, 0, 0, 95, 1565, 0, 1558, 296, 1559, - 296, 0, 0, 96, 97, 98, 1065, 0, 296, 296, - 296, 0, 0, 1509, 0, 0, 95, 1578, 1586, 95, - 0, 0, 1376, 94, 0, 1585, 1584, 0, 0, 0, - 95, 95, 0, 0, 94, 94, 0, 1513, 0, 0, - 0, 0, 1566, 1600, 0, 1599, 0, 0, 0, 0, - 94, 0, 0, 1606, 1223, 0, 0, 299, 0, 0, - 0, 295, 0, 0, 0, 0, 302, 1451, 1452, 94, - 1453, 0, 0, 1455, 311, 1457, 1614, 0, 0, 0, - 0, 0, 0, 0, 296, 95, 0, 95, 1621, 94, - 1619, 0, 0, 296, 296, 296, 296, 296, 0, 1623, - 296, 296, 1634, 0, 296, 95, 0, 0, 309, 1645, - 0, 0, 0, 0, 316, 0, 0, 1609, 0, 0, - 0, 0, 296, 1358, 0, 0, 0, 0, 296, 296, - 296, 0, 0, 623, 296, 95, 0, 0, 0, 1498, - 0, 0, 623, 0, 300, 0, 0, 0, 1368, 0, - 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, - 0, 0, 1513, 1065, 0, 0, 0, 0, 0, 686, - 688, 313, 303, 0, 314, 315, 322, 0, 0, 0, - 306, 308, 319, 304, 305, 324, 323, 0, 301, 321, - 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 701, 0, 0, 0, 706, 707, 708, 709, 710, 711, - 712, 713, 0, 716, 719, 719, 719, 725, 719, 719, - 725, 719, 733, 734, 735, 736, 737, 738, 739, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, - 296, 0, 1469, 0, 0, 0, 0, 0, 0, 0, - 0, 296, 296, 296, 296, 296, 0, 0, 0, 0, - 776, 0, 0, 296, 0, 1462, 0, 296, 0, 0, - 0, 296, 0, 0, 0, 0, 296, 296, 0, 0, - 296, 296, 296, 666, 665, 675, 676, 668, 669, 670, - 671, 672, 673, 674, 667, 95, 376, 677, 1468, 1461, - 957, 958, 665, 675, 676, 668, 669, 670, 671, 672, - 673, 674, 667, 0, 0, 677, 341, 0, 0, 0, - 0, 0, 0, 1486, 0, 0, 1487, 0, 0, 1489, - 0, 0, 0, 0, 0, 0, 93, 0, 0, 990, - 0, 0, 0, 95, 95, 0, 0, 0, 329, 666, - 665, 675, 676, 668, 669, 670, 671, 672, 673, 674, - 667, 0, 0, 677, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 95, 0, 0, 0, 0, 446, 0, - 0, 574, 0, 666, 665, 675, 676, 668, 669, 670, - 671, 672, 673, 674, 667, 1329, 0, 677, 95, 0, - 0, 623, 0, 0, 0, 0, 0, 0, 623, 623, - 623, 0, 1528, 341, 0, 666, 665, 675, 676, 668, - 669, 670, 671, 672, 673, 674, 667, 623, 0, 677, - 0, 0, 623, 623, 623, 296, 623, 623, 0, 0, - 0, 0, 0, 0, 0, 95, 661, 0, 664, 623, - 623, 95, 95, 0, 678, 679, 680, 681, 682, 683, - 684, 1160, 662, 663, 660, 666, 665, 675, 676, 668, - 669, 670, 671, 672, 673, 674, 667, 95, 0, 677, - 296, 666, 665, 675, 676, 668, 669, 670, 671, 672, - 673, 674, 667, 0, 95, 677, 95, 95, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 296, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1161, 0, 296, 0, 1162, 0, 0, 0, - 95, 0, 0, 95, 95, 95, 296, 1169, 1170, 0, - 0, 0, 0, 1176, 0, 0, 1179, 1180, 0, 0, - 0, 0, 0, 0, 1186, 0, 0, 0, 1188, 0, - 0, 1191, 1192, 1193, 1194, 1195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1035, 0, 0, 0, 0, 0, 446, 0, 0, 0, - 0, 0, 0, 0, 0, 446, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 641, 643, 0, - 1238, 1239, 0, 0, 0, 0, 0, 0, 0, 95, - 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 416, 1696, 1451, 1622, 1600, 1686, 1331, 1654, 360, 1233, + 1514, 1544, 1527, 1565, 1253, 1075, 1388, 375, 1047, 425, + 1424, 715, 389, 635, 755, 73, 3, 1234, 1389, 1385, + 616, 1118, 1400, 1084, 1350, 1169, 346, 1394, 1282, 1074, + 94, 887, 1220, 953, 306, 1308, 329, 306, 458, 1299, + 762, 906, 94, 960, 306, 800, 1049, 1026, 1088, 633, + 1033, 1104, 1044, 986, 783, 1071, 765, 760, 793, 362, + 782, 434, 419, 930, 799, 625, 29, 1114, 584, 772, + 71, 351, 94, 797, 358, 94, 306, 728, 306, 69, + 1055, 74, 347, 790, 729, 350, 1098, 916, 68, 1597, + 8, 7, 1546, 605, 1689, 455, 6, 294, 963, 1651, + 292, 1684, 1630, 1677, 401, 1452, 407, 408, 405, 406, + 404, 403, 402, 1650, 76, 77, 78, 79, 80, 81, + 409, 410, 1629, 1481, 1367, 1137, 31, 589, 1418, 62, + 35, 36, 1270, 440, 444, 1269, 420, 1065, 1271, 1136, + 349, 1591, 677, 676, 686, 687, 679, 680, 681, 682, + 683, 684, 685, 678, 1351, 452, 688, 1419, 1420, 1066, + 1067, 302, 298, 299, 300, 801, 643, 802, 641, 642, + 644, 641, 642, 348, 96, 97, 98, 648, 1290, 1097, + 1517, 1333, 96, 97, 98, 96, 97, 98, 1632, 1105, + 1472, 1470, 339, 61, 915, 1353, 1135, 341, 337, 295, + 646, 31, 32, 33, 62, 35, 36, 875, 636, 637, + 638, 1335, 872, 1683, 1676, 1623, 1330, 1027, 874, 1700, + 606, 66, 1615, 1427, 1704, 293, 37, 56, 57, 1566, + 59, 591, 1355, 446, 1359, 60, 1354, 1334, 1352, 647, + 917, 918, 919, 1357, 1568, 622, 296, 624, 876, 1132, + 1129, 1130, 1356, 1128, 873, 1336, 863, 631, 1091, 1254, + 1256, 880, 651, 1411, 46, 1358, 1360, 1091, 61, 1410, + 1409, 587, 594, 1574, 309, 297, 1327, 1604, 1149, 621, + 623, 1148, 1329, 306, 596, 597, 1139, 1142, 306, 301, + 607, 700, 701, 1072, 306, 1496, 1318, 1417, 1225, 1198, + 306, 614, 1177, 1188, 620, 96, 97, 98, 1061, 776, + 713, 94, 612, 678, 688, 1567, 688, 1185, 1266, 1005, + 94, 626, 1592, 1105, 668, 1613, 1134, 84, 1583, 1398, + 907, 803, 94, 94, 39, 40, 42, 41, 44, 661, + 58, 1255, 1369, 1314, 1315, 1316, 987, 1628, 1133, 649, + 1698, 902, 987, 1699, 1195, 1697, 96, 97, 98, 657, + 618, 865, 1633, 45, 65, 64, 85, 1094, 54, 55, + 43, 630, 619, 1288, 1095, 662, 663, 1090, 601, 650, + 1618, 627, 628, 632, 47, 48, 1090, 49, 50, 51, + 52, 1705, 1138, 1642, 608, 609, 610, 1575, 1573, 769, + 1523, 1328, 63, 1326, 96, 97, 98, 1140, 667, 665, + 310, 925, 927, 928, 445, 1317, 639, 698, 926, 313, + 1322, 1319, 1310, 1320, 1313, 668, 1309, 322, 700, 701, + 1311, 1312, 908, 94, 660, 658, 306, 753, 306, 306, + 659, 94, 700, 701, 1321, 751, 598, 94, 599, 665, + 1706, 600, 1522, 903, 61, 1678, 1303, 716, 1438, 617, + 752, 320, 798, 1302, 455, 668, 933, 327, 679, 680, + 681, 682, 683, 684, 685, 678, 1679, 63, 688, 1291, + 731, 733, 735, 737, 739, 741, 742, 732, 734, 1670, + 738, 740, 937, 743, 447, 448, 766, 311, 1375, 1681, + 781, 1162, 1163, 1164, 754, 1184, 935, 936, 934, 417, + 1671, 1680, 677, 676, 686, 687, 679, 680, 681, 682, + 683, 684, 685, 678, 324, 314, 688, 325, 326, 333, + 764, 1672, 1662, 317, 319, 330, 315, 316, 335, 334, + 1376, 312, 332, 331, 450, 1644, 666, 667, 665, 95, + 1183, 590, 1182, 307, 1371, 1614, 307, 1478, 429, 1540, + 1520, 95, 1580, 307, 668, 1485, 96, 97, 98, 1170, + 955, 666, 667, 665, 306, 666, 667, 665, 861, 94, + 1579, 864, 1377, 866, 306, 306, 94, 94, 94, 668, + 1300, 95, 306, 668, 95, 307, 306, 307, 900, 306, + 885, 886, 892, 306, 878, 94, 96, 97, 98, 602, + 94, 94, 94, 306, 94, 94, 676, 686, 687, 679, + 680, 681, 682, 683, 684, 685, 678, 94, 94, 688, + 378, 377, 380, 381, 382, 383, 891, 1434, 862, 379, + 384, 70, 592, 593, 1092, 869, 870, 871, 1010, 1011, + 429, 889, 677, 676, 686, 687, 679, 680, 681, 682, + 683, 684, 685, 678, 890, 1386, 688, 1007, 1397, 894, + 895, 896, 1397, 898, 899, 1492, 96, 97, 98, 954, + 1273, 664, 910, 1221, 931, 1582, 904, 905, 956, 881, + 677, 676, 686, 687, 679, 680, 681, 682, 683, 684, + 685, 678, 94, 1057, 688, 681, 682, 683, 684, 685, + 678, 429, 912, 688, 1571, 1682, 666, 667, 665, 72, + 975, 978, 1006, 1646, 429, 1442, 988, 964, 666, 667, + 665, 932, 1571, 1626, 668, 94, 94, 1571, 429, 1571, + 1605, 666, 667, 665, 1030, 965, 668, 1571, 1570, 1512, + 1511, 1260, 966, 1056, 94, 1498, 429, 970, 1030, 668, + 31, 306, 1000, 1058, 94, 1060, 716, 1274, 306, 1064, + 306, 1201, 1012, 1495, 429, 957, 958, 1018, 306, 306, + 306, 1444, 1443, 1440, 1441, 1228, 94, 1440, 1439, 94, + 964, 996, 997, 1029, 967, 1018, 429, 1030, 429, 1200, + 94, 94, 307, 1045, 664, 429, 1229, 307, 1024, 455, + 810, 809, 455, 307, 31, 966, 971, 972, 1019, 307, + 977, 980, 981, 1076, 422, 1057, 1018, 61, 1020, 1221, + 95, 1035, 1038, 1039, 1040, 1036, 1030, 1037, 1041, 95, + 1056, 1401, 1402, 1022, 31, 995, 1008, 879, 998, 999, + 795, 95, 95, 61, 306, 94, 1663, 94, 1529, 1141, + 1551, 1063, 1099, 306, 306, 306, 306, 306, 1503, 1062, + 306, 306, 1059, 1054, 306, 94, 1106, 1107, 1108, 1079, + 1018, 61, 1120, 1119, 1430, 1058, 1477, 1056, 1401, 1402, + 1397, 61, 306, 1332, 1484, 1277, 1115, 1110, 306, 306, + 306, 1109, 1530, 1122, 306, 94, 1100, 1101, 1102, 1103, + 1691, 61, 1687, 1432, 1124, 1404, 1126, 1386, 1304, 913, + 883, 1407, 1111, 1112, 1113, 1116, 1117, 1155, 1245, 1406, + 991, 1159, 1242, 1246, 1153, 677, 676, 686, 687, 679, + 680, 681, 682, 683, 684, 685, 678, 931, 1243, 688, + 1241, 1667, 95, 1244, 1649, 307, 1378, 307, 307, 1247, + 95, 1039, 1040, 1210, 763, 1665, 95, 686, 687, 679, + 680, 681, 682, 683, 684, 685, 678, 1219, 1218, 688, + 1179, 677, 676, 686, 687, 679, 680, 681, 682, 683, + 684, 685, 678, 1638, 932, 688, 1635, 1669, 1165, 1035, + 1038, 1039, 1040, 1036, 428, 1037, 1041, 1653, 1655, 1661, + 306, 1208, 1660, 1601, 1599, 1207, 418, 435, 983, 1209, + 1295, 306, 306, 306, 306, 306, 756, 1214, 1235, 808, + 1178, 436, 984, 306, 420, 615, 1620, 306, 757, 1194, + 1287, 306, 1230, 1619, 1549, 1285, 306, 306, 1279, 1490, + 306, 306, 306, 767, 768, 438, 1525, 437, 1226, 1003, + 1174, 1175, 1252, 1272, 1125, 94, 1213, 882, 1043, 423, + 424, 426, 1223, 1674, 1278, 1222, 1673, 1217, 1283, 1283, + 1275, 1192, 1224, 1658, 1639, 1216, 1237, 1238, 1076, 1240, + 1489, 1236, 1248, 307, 1239, 427, 72, 1258, 95, 1488, + 889, 1259, 1381, 307, 307, 95, 95, 95, 1261, 1221, + 1267, 307, 1263, 94, 94, 307, 645, 1284, 307, 1264, + 1693, 1692, 307, 1189, 95, 1186, 909, 777, 770, 95, + 95, 95, 307, 95, 95, 1280, 1281, 1693, 1483, 1602, + 1518, 1004, 422, 94, 75, 70, 95, 95, 67, 1, + 1301, 328, 1292, 1293, 1307, 1685, 1453, 1526, 1131, 1621, + 1294, 435, 1296, 1297, 1298, 1323, 1564, 1423, 94, 1082, + 1073, 83, 582, 1306, 954, 436, 82, 1612, 901, 677, + 676, 686, 687, 679, 680, 681, 682, 683, 684, 685, + 678, 1347, 1340, 688, 1349, 629, 1338, 432, 433, 438, + 1339, 437, 1337, 1081, 1080, 1572, 306, 1289, 1096, 1362, + 1516, 1431, 1372, 1286, 1617, 816, 94, 1361, 814, 1348, + 1346, 95, 94, 94, 815, 813, 818, 1235, 1387, 817, + 965, 812, 321, 1368, 914, 338, 1384, 966, 1042, 1347, + 804, 1121, 1390, 771, 86, 1325, 1324, 1127, 94, 1093, + 318, 306, 640, 323, 95, 95, 291, 696, 1215, 1268, + 456, 449, 1405, 1392, 1659, 94, 1396, 94, 94, 1636, + 1634, 1283, 1283, 95, 1598, 1545, 1637, 1596, 1668, 1652, + 307, 1002, 1422, 95, 1009, 1412, 1437, 307, 1076, 307, + 1076, 759, 1413, 1487, 1415, 306, 1416, 307, 307, 307, + 390, 30, 1426, 1380, 1421, 95, 1193, 355, 95, 1428, + 1429, 725, 985, 1414, 786, 306, 361, 924, 376, 95, + 95, 94, 373, 1454, 94, 94, 94, 306, 374, 1013, + 1227, 30, 670, 359, 353, 1446, 785, 778, 1034, 1032, + 1031, 791, 1403, 1399, 784, 1017, 431, 982, 1435, 1436, + 1447, 1590, 1449, 1480, 430, 53, 34, 343, 1463, 1459, + 1460, 653, 439, 28, 23, 22, 21, 20, 19, 25, + 421, 18, 17, 307, 95, 16, 95, 1468, 603, 38, + 27, 26, 307, 307, 307, 307, 307, 15, 14, 307, + 307, 13, 12, 307, 95, 11, 1235, 10, 9, 5, + 4, 656, 24, 714, 2, 0, 0, 1491, 0, 0, + 0, 307, 94, 0, 0, 1500, 0, 307, 307, 307, + 0, 94, 0, 307, 95, 0, 0, 1275, 1486, 0, + 0, 387, 0, 0, 0, 1076, 94, 1499, 1465, 1466, + 0, 1467, 0, 94, 1469, 0, 1471, 1510, 0, 0, + 0, 0, 0, 0, 1509, 0, 0, 1533, 0, 0, + 0, 0, 0, 0, 0, 0, 1528, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 0, 0, 1531, 0, + 0, 0, 0, 340, 0, 0, 94, 94, 0, 94, + 1539, 1519, 0, 1521, 94, 1524, 94, 94, 94, 306, + 0, 1548, 0, 94, 1557, 1390, 1558, 1560, 1561, 1556, + 1552, 1550, 1513, 457, 0, 0, 585, 1562, 1532, 1563, + 94, 306, 0, 1569, 0, 0, 1576, 0, 0, 307, + 1584, 0, 0, 0, 0, 0, 0, 1543, 0, 0, + 307, 307, 307, 307, 307, 0, 0, 0, 0, 0, + 0, 0, 307, 0, 0, 0, 307, 1611, 1603, 0, + 307, 0, 94, 0, 1390, 307, 307, 1609, 1610, 307, + 307, 307, 0, 94, 94, 1577, 0, 1578, 0, 0, + 0, 0, 0, 0, 95, 1624, 0, 0, 0, 1625, + 0, 0, 0, 0, 0, 94, 1528, 1076, 1631, 0, + 0, 1235, 1640, 0, 0, 0, 306, 0, 0, 0, + 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, + 0, 634, 0, 1648, 0, 0, 0, 0, 0, 1657, + 634, 1656, 95, 95, 0, 0, 0, 0, 0, 0, + 1664, 1666, 0, 0, 30, 968, 969, 0, 0, 0, + 0, 0, 0, 0, 94, 0, 0, 697, 699, 0, + 0, 0, 95, 0, 1675, 0, 0, 0, 0, 0, + 0, 702, 703, 704, 705, 706, 707, 708, 709, 710, + 711, 1690, 0, 0, 1001, 1701, 0, 95, 712, 0, + 0, 0, 717, 718, 719, 720, 721, 722, 723, 724, + 0, 727, 730, 730, 730, 736, 730, 730, 736, 730, + 744, 745, 746, 747, 748, 749, 750, 0, 0, 0, + 1476, 0, 30, 0, 0, 307, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, + 0, 95, 95, 0, 0, 0, 0, 0, 787, 0, + 0, 0, 457, 1475, 0, 0, 0, 0, 0, 0, + 0, 457, 0, 0, 0, 0, 0, 95, 0, 0, + 307, 0, 0, 652, 654, 0, 0, 0, 0, 0, + 672, 0, 675, 0, 95, 0, 95, 95, 689, 690, + 691, 692, 693, 694, 695, 0, 673, 674, 671, 677, + 676, 686, 687, 679, 680, 681, 682, 683, 684, 685, + 678, 0, 0, 688, 307, 677, 676, 686, 687, 679, + 680, 681, 682, 683, 684, 685, 678, 0, 0, 688, + 0, 0, 0, 0, 307, 0, 0, 0, 0, 0, + 95, 0, 0, 95, 95, 95, 307, 0, 677, 676, + 686, 687, 679, 680, 681, 682, 683, 684, 685, 678, + 0, 0, 688, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, + 0, 0, 457, 0, 0, 0, 0, 1172, 805, 634, + 0, 1173, 0, 0, 0, 0, 634, 634, 634, 0, + 0, 0, 1180, 1181, 0, 0, 0, 0, 1187, 0, + 0, 1190, 1191, 0, 0, 634, 0, 0, 0, 1197, + 634, 634, 634, 1199, 634, 634, 1202, 1203, 1204, 1205, + 1206, 95, 0, 0, 0, 0, 0, 634, 634, 0, + 95, 0, 0, 1341, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, + 0, 0, 95, 677, 676, 686, 687, 679, 680, 681, + 682, 683, 684, 685, 678, 1250, 1251, 688, 929, 0, + 0, 938, 939, 940, 941, 942, 943, 944, 945, 946, + 947, 948, 949, 950, 951, 952, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 95, 95, 0, 95, 0, + 0, 0, 0, 95, 0, 95, 95, 95, 307, 0, + 457, 0, 95, 0, 0, 0, 0, 457, 457, 457, + 0, 0, 0, 0, 0, 0, 0, 0, 992, 95, + 307, 0, 0, 0, 0, 0, 457, 0, 0, 0, + 0, 457, 457, 457, 0, 457, 457, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 457, 457, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 95, 0, 0, 0, 0, 0, 0, 1046, 0, + 0, 0, 95, 95, 0, 0, 788, 0, 0, 0, + 0, 0, 0, 0, 0, 1344, 1345, 0, 0, 0, + 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 307, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, - 95, 0, 0, 0, 0, 0, 0, 623, 0, 623, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 623, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 95, 95, 0, 95, 0, 0, 0, 0, - 95, 0, 95, 95, 95, 296, 0, 0, 763, 95, - 0, 0, 0, 0, 0, 0, 446, 0, 0, 0, - 0, 0, 794, 0, 0, 0, 95, 296, 0, 0, - 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1332, 1333, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1165, 0, 0, - 410, 0, 0, 0, 95, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 95, 95, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 296, 0, 0, 0, 0, 0, 0, 0, - 95, 0, 776, 0, 0, 0, 0, 1394, 0, 1219, - 1220, 0, 0, 776, 776, 776, 776, 776, 0, 0, - 95, 0, 0, 0, 0, 0, 0, 0, 0, 1035, - 0, 1245, 0, 0, 0, 0, 0, 0, 776, 0, - 0, 0, 776, 0, 446, 0, 0, 0, 0, 0, - 0, 446, 446, 446, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 446, 0, 0, 0, 0, 446, 446, 446, 0, 446, - 446, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 446, 446, 0, 0, 0, 0, 0, 0, - 0, 1448, 0, 0, 0, 1450, 623, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1459, 1460, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 623, 0, 0, 0, 0, - 0, 0, 0, 0, 1478, 1479, 0, 1482, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1493, 0, 948, 0, 446, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 978, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 982, 983, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1377, 0, 30, 0, 0, 0, 0, 0, 1003, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 763, - 0, 0, 446, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 776, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 0, 0, 446, 0, 0, 1540, 0, 0, - 0, 0, 0, 0, 0, 446, 574, 0, 0, 0, - 0, 0, 0, 691, 692, 693, 694, 695, 696, 697, - 698, 699, 700, 0, 0, 0, 1567, 1568, 1569, 1570, - 0, 1574, 0, 1575, 1576, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1581, 0, 1582, 1583, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 446, 0, 446, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1602, 0, - 446, 0, 0, 0, 0, 0, 0, 0, 0, 1465, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1611, 0, 0, 0, 0, 0, 0, - 1150, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1490, - 1491, 1492, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1646, 1647, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 377, 0, 0, 0, 0, 623, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 294, 0, 0, 325, 0, 0, - 0, 1377, 0, 30, 294, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 978, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 432, 432, 0, - 0, 0, 0, 0, 1562, 0, 294, 0, 294, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1377, 0, 0, 0, - 446, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1293, 446, - 918, 0, 0, 927, 928, 929, 930, 931, 932, 933, - 934, 935, 936, 937, 938, 939, 940, 941, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 446, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1632, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 446, 0, 0, 0, 0, 0, 0, - 981, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 446, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 446, 0, 0, 978, 0, 0, 1379, 1381, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 294, 0, 0, 0, 0, 294, 0, 0, - 0, 0, 1381, 294, 0, 0, 0, 0, 0, 294, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, - 0, 446, 1411, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1436, 0, 0, 1441, 1442, - 1443, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 432, 0, 0, 0, 1155, 1156, 1157, 0, 0, - 978, 0, 0, 0, 0, 294, 0, 294, 783, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 446, 0, 0, 0, 0, 0, - 0, 0, 0, 1500, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 446, 0, - 0, 0, 0, 0, 0, 446, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1534, 1535, 0, - 1536, 0, 0, 0, 0, 1500, 0, 1500, 1500, 1500, - 0, 0, 0, 0, 1411, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1500, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 294, 294, 0, 0, 0, 0, 0, - 0, 294, 0, 0, 0, 294, 0, 0, 294, 1591, - 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, - 446, 446, 294, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 978, 0, 1607, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1613, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1330, 1331, 0, 0, 0, 1500, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1351, 1352, 0, 1353, 1354, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1361, 1362, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 432, 877, 0, 0, 0, 432, 432, 0, - 0, 432, 432, 432, 0, 0, 0, 979, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 432, 432, 432, 432, - 432, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 294, 0, 0, 0, 0, 0, 877, 294, 0, 294, - 0, 0, 0, 0, 0, 0, 1419, 294, 1040, 294, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1447, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, - 0, 0, 294, 294, 294, 294, 294, 0, 0, 294, - 294, 0, 0, 294, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 294, 0, 0, 0, 0, 0, 1145, 1146, 294, - 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 432, 432, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1519, 1520, 1521, 1522, 1523, 0, 0, 0, - 1526, 1527, 432, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 432, 294, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 979, - 294, 294, 294, 294, 294, 0, 0, 0, 0, 0, - 0, 0, 1237, 0, 0, 0, 294, 0, 0, 0, - 1040, 0, 0, 0, 0, 294, 294, 0, 0, 294, - 1253, 877, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1638, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 432, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 877, 0, + 304, 0, 0, 959, 0, 457, 0, 0, 0, 0, + 342, 0, 0, 0, 0, 0, 0, 0, 0, 989, + 0, 0, 0, 0, 0, 634, 0, 634, 0, 0, + 0, 0, 0, 95, 0, 0, 993, 994, 442, 0, + 0, 0, 586, 1408, 588, 634, 0, 0, 0, 1171, + 0, 0, 0, 0, 0, 1014, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 774, 0, 0, 457, 677, + 676, 686, 687, 679, 680, 681, 682, 683, 684, 685, + 678, 0, 0, 688, 0, 0, 0, 457, 0, 0, + 457, 0, 0, 0, 0, 0, 0, 0, 352, 0, + 0, 457, 585, 1166, 1167, 1168, 677, 676, 686, 687, + 679, 680, 681, 682, 683, 684, 685, 678, 0, 0, + 688, 0, 0, 0, 0, 1176, 0, 0, 421, 0, + 0, 0, 0, 0, 0, 0, 0, 1462, 0, 0, + 0, 1464, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1473, 1474, 388, 0, 457, 0, 457, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 457, 0, 0, 0, + 787, 0, 1493, 1494, 0, 1497, 0, 1231, 1232, 0, + 0, 787, 787, 787, 787, 787, 0, 0, 305, 0, + 0, 336, 0, 1508, 0, 0, 1161, 1046, 305, 1257, + 0, 0, 0, 0, 0, 0, 787, 0, 0, 0, + 787, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 443, 443, 0, 0, 0, 0, 0, 0, 0, + 305, 0, 305, 0, 0, 0, 0, 0, 0, 595, + 0, 0, 0, 0, 604, 0, 0, 0, 0, 0, + 611, 0, 0, 0, 0, 0, 613, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 634, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1559, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 634, 0, 0, 0, 0, 0, 0, + 0, 989, 0, 0, 0, 1586, 1587, 1588, 1589, 0, + 1593, 0, 1594, 1595, 0, 0, 0, 0, 1342, 1343, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1606, + 0, 1607, 1608, 1363, 1364, 0, 1365, 1366, 0, 0, + 0, 0, 0, 0, 0, 0, 457, 0, 1373, 1374, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1627, 0, 0, 0, 0, 0, 0, 0, 0, + 1391, 0, 30, 669, 0, 0, 0, 0, 0, 0, + 0, 0, 780, 0, 0, 792, 0, 0, 0, 0, + 0, 0, 1645, 0, 1305, 457, 0, 0, 0, 0, + 0, 787, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 0, 0, 0, 0, 0, 0, 0, 726, 0, + 0, 0, 0, 0, 457, 0, 0, 305, 0, 0, + 0, 0, 305, 0, 0, 1433, 0, 0, 305, 0, + 0, 0, 0, 0, 305, 758, 761, 0, 0, 457, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1702, 1703, 0, 0, 0, + 457, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1461, + 0, 0, 0, 0, 0, 0, 0, 457, 0, 0, + 989, 0, 0, 1393, 1395, 0, 0, 0, 1479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 294, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 979, 0, 0, + 811, 0, 0, 0, 0, 0, 0, 0, 0, 1395, + 867, 868, 0, 0, 0, 0, 0, 0, 877, 0, + 0, 0, 792, 0, 0, 884, 457, 0, 457, 1425, + 1505, 1506, 1507, 0, 0, 0, 0, 0, 0, 897, + 0, 0, 0, 0, 0, 0, 443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 305, 0, 305, 794, 0, 0, 634, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, + 0, 0, 1450, 0, 0, 1455, 1456, 1457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1534, 1535, 1536, 1537, 1538, 0, 0, + 0, 1541, 1542, 1391, 0, 30, 0, 893, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 911, 0, 1581, 0, 0, 989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 920, 921, 922, 923, 0, 0, 0, + 0, 0, 1391, 457, 0, 0, 0, 0, 0, 0, + 0, 0, 1515, 0, 0, 0, 0, 1021, 0, 0, + 0, 0, 0, 0, 1025, 0, 1028, 457, 305, 0, + 0, 0, 0, 0, 457, 0, 1053, 0, 305, 305, + 0, 0, 0, 0, 0, 0, 305, 0, 973, 974, + 305, 0, 0, 305, 0, 0, 0, 888, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 305, 0, 0, + 0, 0, 833, 0, 0, 0, 0, 1553, 1554, 0, + 1555, 0, 0, 0, 0, 1515, 0, 1515, 1515, 1515, + 0, 0, 0, 0, 1425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 294, 0, 0, 0, 0, + 1123, 1515, 0, 0, 0, 0, 0, 0, 0, 1143, + 1144, 1145, 1146, 1147, 0, 0, 1150, 1151, 0, 0, + 1152, 0, 1070, 0, 1688, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1694, 0, 1154, 0, + 0, 0, 0, 1616, 0, 0, 1158, 443, 888, 0, + 1160, 0, 443, 443, 457, 457, 443, 443, 443, 0, + 0, 821, 990, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 989, 0, 1641, 0, 0, 0, + 0, 443, 443, 443, 443, 443, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1647, 0, 0, 0, 0, + 0, 0, 834, 0, 0, 305, 0, 0, 0, 0, + 0, 888, 305, 0, 305, 0, 0, 0, 0, 0, + 0, 0, 305, 1051, 305, 0, 0, 0, 847, 850, + 851, 852, 853, 854, 855, 1515, 856, 857, 858, 859, + 860, 835, 836, 837, 838, 819, 820, 848, 0, 822, + 0, 823, 824, 825, 826, 827, 828, 829, 830, 831, + 832, 839, 840, 841, 842, 843, 844, 845, 846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1262, 0, 0, 0, 0, 305, 0, + 0, 0, 0, 0, 0, 0, 1196, 305, 305, 305, + 305, 305, 0, 0, 305, 305, 0, 0, 305, 0, + 0, 0, 0, 0, 849, 1211, 1212, 761, 0, 0, + 0, 0, 0, 0, 0, 0, 305, 0, 0, 0, + 0, 0, 1156, 1157, 305, 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 443, 443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1040, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 294, 0, 0, 557, - 545, 0, 0, 501, 560, 474, 491, 568, 492, 495, - 532, 459, 514, 188, 489, 0, 478, 454, 485, 455, - 476, 503, 129, 507, 473, 547, 517, 559, 158, 0, - 479, 534, 228, 122, 165, 566, 161, 523, 0, 236, - 176, 0, 0, 0, 505, 549, 512, 542, 500, 533, - 464, 522, 561, 490, 530, 562, 0, 0, 979, 96, - 97, 98, 0, 1066, 1067, 0, 0, 0, 0, 0, - 118, 294, 527, 556, 487, 529, 531, 570, 453, 524, - 0, 457, 460, 567, 552, 482, 483, 1264, 0, 0, - 0, 0, 0, 0, 504, 513, 539, 498, 0, 0, - 0, 0, 0, 0, 0, 0, 480, 0, 521, 0, - 0, 0, 461, 458, 0, 0, 0, 0, 502, 0, - 0, 0, 463, 0, 481, 540, 0, 451, 138, 544, - 551, 499, 297, 555, 497, 496, 558, 207, 0, 240, - 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, - 219, 548, 477, 486, 123, 484, 217, 195, 257, 520, - 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, - 275, 233, 103, 242, 254, 119, 227, 0, 0, 0, - 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, - 136, 125, 187, 249, 250, 124, 278, 111, 263, 107, - 112, 262, 181, 245, 253, 175, 168, 106, 251, 173, - 167, 156, 132, 144, 205, 164, 206, 145, 178, 177, - 179, 0, 456, 0, 237, 260, 279, 116, 472, 244, - 271, 274, 0, 209, 117, 137, 131, 204, 135, 159, - 270, 272, 273, 180, 113, 147, 234, 155, 163, 212, - 277, 194, 218, 120, 259, 235, 468, 471, 466, 467, - 515, 516, 563, 564, 565, 541, 462, 0, 469, 470, - 0, 546, 553, 554, 519, 99, 108, 160, 276, 210, - 134, 261, 452, 465, 127, 475, 0, 0, 488, 493, - 494, 506, 508, 509, 510, 511, 518, 525, 526, 528, - 535, 536, 537, 538, 543, 550, 569, 101, 102, 109, - 115, 121, 126, 130, 133, 139, 143, 146, 148, 149, - 150, 153, 166, 169, 170, 171, 172, 182, 183, 184, - 186, 189, 190, 191, 192, 193, 196, 198, 199, 200, - 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, - 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, - 258, 265, 268, 141, 255, 269, 557, 545, 0, 0, - 501, 560, 474, 491, 568, 492, 495, 532, 459, 514, - 188, 489, 0, 478, 454, 485, 455, 476, 503, 129, - 507, 473, 547, 517, 559, 158, 0, 479, 534, 228, - 122, 165, 566, 161, 523, 0, 236, 176, 0, 0, - 0, 505, 549, 512, 542, 500, 533, 464, 522, 561, - 490, 530, 562, 0, 0, 0, 96, 97, 98, 0, - 1066, 1067, 0, 0, 0, 0, 0, 118, 0, 527, - 556, 487, 529, 531, 570, 453, 524, 0, 457, 460, - 567, 552, 482, 483, 0, 0, 0, 0, 0, 0, - 0, 504, 513, 539, 498, 0, 0, 0, 0, 0, - 0, 0, 0, 480, 0, 521, 0, 0, 0, 461, - 458, 0, 0, 0, 0, 502, 0, 0, 0, 463, - 0, 481, 540, 0, 451, 138, 544, 551, 499, 297, - 555, 497, 496, 558, 207, 0, 240, 142, 157, 114, - 154, 100, 110, 0, 140, 185, 215, 219, 548, 477, - 486, 123, 484, 217, 195, 257, 520, 197, 216, 162, - 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, - 242, 254, 119, 227, 0, 0, 0, 105, 252, 239, - 174, 151, 152, 104, 0, 213, 128, 136, 125, 187, - 249, 250, 124, 278, 111, 263, 107, 112, 262, 181, - 245, 253, 175, 168, 106, 251, 173, 167, 156, 132, - 144, 205, 164, 206, 145, 178, 177, 179, 0, 456, - 0, 237, 260, 279, 116, 472, 244, 271, 274, 0, - 209, 117, 137, 131, 204, 135, 159, 270, 272, 273, - 180, 113, 147, 234, 155, 163, 212, 277, 194, 218, - 120, 259, 235, 468, 471, 466, 467, 515, 516, 563, - 564, 565, 541, 462, 0, 469, 470, 0, 546, 553, - 554, 519, 99, 108, 160, 276, 210, 134, 261, 452, - 465, 127, 475, 0, 0, 488, 493, 494, 506, 508, - 509, 510, 511, 518, 525, 526, 528, 535, 536, 537, - 538, 543, 550, 569, 101, 102, 109, 115, 121, 126, - 130, 133, 139, 143, 146, 148, 149, 150, 153, 166, - 169, 170, 171, 172, 182, 183, 184, 186, 189, 190, - 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, - 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, - 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, - 141, 255, 269, 557, 545, 0, 0, 501, 560, 474, - 491, 568, 492, 495, 532, 459, 514, 188, 489, 0, - 478, 454, 485, 455, 476, 503, 129, 507, 473, 547, - 517, 559, 158, 0, 479, 534, 228, 122, 165, 566, - 161, 523, 0, 236, 176, 0, 0, 0, 505, 549, - 512, 542, 500, 533, 464, 522, 561, 490, 530, 562, - 61, 0, 0, 96, 97, 98, 0, 0, 0, 0, - 0, 0, 0, 0, 118, 0, 527, 556, 487, 529, - 531, 570, 453, 524, 0, 457, 460, 567, 552, 482, - 483, 0, 0, 0, 0, 0, 0, 0, 504, 513, - 539, 498, 0, 0, 0, 0, 0, 0, 0, 0, - 480, 0, 521, 0, 0, 0, 461, 458, 0, 0, - 0, 0, 502, 0, 0, 0, 463, 0, 481, 540, - 0, 451, 138, 544, 551, 499, 297, 555, 497, 496, - 558, 207, 0, 240, 142, 157, 114, 154, 100, 110, - 0, 140, 185, 215, 219, 548, 477, 486, 123, 484, - 217, 195, 257, 520, 197, 216, 162, 246, 208, 256, - 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, - 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, - 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, - 278, 111, 263, 107, 112, 262, 181, 245, 253, 175, - 168, 106, 251, 173, 167, 156, 132, 144, 205, 164, - 206, 145, 178, 177, 179, 0, 456, 0, 237, 260, - 279, 116, 472, 244, 271, 274, 0, 209, 117, 137, - 131, 204, 135, 159, 270, 272, 273, 180, 113, 147, - 234, 155, 163, 212, 277, 194, 218, 120, 259, 235, - 468, 471, 466, 467, 515, 516, 563, 564, 565, 541, - 462, 0, 469, 470, 0, 546, 553, 554, 519, 99, - 108, 160, 276, 210, 134, 261, 452, 465, 127, 475, - 0, 0, 488, 493, 494, 506, 508, 509, 510, 511, - 518, 525, 526, 528, 535, 536, 537, 538, 543, 550, - 569, 101, 102, 109, 115, 121, 126, 130, 133, 139, - 143, 146, 148, 149, 150, 153, 166, 169, 170, 171, - 172, 182, 183, 184, 186, 189, 190, 191, 192, 193, - 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, - 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, - 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, - 557, 545, 0, 0, 501, 560, 474, 491, 568, 492, - 495, 532, 459, 514, 188, 489, 0, 478, 454, 485, - 455, 476, 503, 129, 507, 473, 547, 517, 559, 158, - 0, 479, 534, 228, 122, 165, 566, 161, 523, 0, - 236, 176, 0, 0, 0, 505, 549, 512, 542, 500, - 533, 464, 522, 561, 490, 530, 562, 0, 0, 0, + 0, 0, 1379, 443, 305, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 990, 305, 305, 305, 305, 305, + 0, 0, 0, 0, 0, 0, 0, 1249, 0, 0, + 0, 305, 0, 0, 0, 1051, 0, 0, 0, 0, + 305, 305, 0, 0, 305, 1265, 888, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1370, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1382, 1445, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1448, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1458, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 443, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 888, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 990, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1482, 0, 0, 0, 0, 305, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 352, 0, 0, 0, 0, 0, 0, 1501, 0, 0, + 1502, 0, 0, 1504, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 305, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 305, + 0, 0, 0, 0, 0, 0, 0, 1585, 0, 0, + 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1547, 352, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 990, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1643, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1051, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 305, 0, 568, 556, 0, + 0, 512, 571, 485, 502, 579, 503, 506, 543, 470, + 525, 195, 500, 0, 489, 465, 496, 466, 487, 514, + 131, 518, 484, 558, 528, 570, 163, 0, 490, 545, + 237, 123, 171, 169, 255, 136, 132, 130, 122, 152, + 175, 205, 252, 199, 577, 166, 534, 0, 245, 183, + 0, 0, 0, 516, 560, 523, 553, 511, 544, 475, + 533, 572, 501, 541, 573, 0, 0, 990, 96, 97, + 98, 0, 1077, 1078, 0, 0, 0, 0, 0, 118, + 305, 538, 567, 498, 540, 542, 581, 464, 535, 0, + 468, 471, 578, 563, 493, 494, 1276, 0, 0, 0, + 0, 0, 0, 515, 524, 550, 509, 0, 0, 0, + 0, 0, 0, 0, 0, 491, 0, 532, 0, 0, + 0, 472, 469, 0, 0, 0, 0, 513, 0, 0, + 0, 474, 0, 492, 551, 0, 462, 142, 555, 562, + 510, 308, 566, 508, 507, 569, 216, 0, 249, 146, + 162, 114, 159, 100, 110, 0, 144, 192, 224, 228, + 559, 488, 497, 124, 495, 226, 203, 268, 531, 206, + 225, 167, 257, 217, 267, 277, 278, 253, 275, 286, + 242, 103, 251, 265, 119, 236, 0, 0, 0, 105, + 263, 248, 181, 156, 157, 104, 0, 222, 129, 140, + 126, 194, 260, 261, 125, 289, 111, 274, 107, 112, + 273, 188, 256, 264, 182, 174, 106, 262, 180, 173, + 161, 135, 148, 214, 170, 215, 149, 185, 184, 186, + 0, 467, 0, 246, 271, 290, 116, 483, 254, 282, + 285, 0, 218, 117, 141, 134, 213, 139, 164, 281, + 283, 284, 187, 113, 151, 243, 160, 168, 221, 288, + 202, 227, 120, 270, 244, 479, 482, 477, 478, 526, + 527, 574, 575, 576, 552, 473, 0, 480, 481, 0, + 557, 564, 565, 530, 99, 108, 165, 287, 219, 138, + 272, 463, 476, 128, 486, 0, 0, 499, 504, 505, + 517, 519, 520, 521, 522, 529, 536, 537, 539, 546, + 547, 548, 549, 554, 561, 580, 101, 102, 109, 115, + 121, 127, 133, 137, 143, 147, 150, 153, 154, 155, + 158, 172, 176, 177, 178, 179, 189, 190, 191, 193, + 196, 197, 198, 200, 201, 204, 207, 208, 209, 210, + 211, 212, 220, 223, 229, 230, 231, 232, 233, 234, + 235, 238, 239, 240, 241, 247, 250, 258, 259, 269, + 276, 279, 145, 266, 280, 568, 556, 0, 0, 512, + 571, 485, 502, 579, 503, 506, 543, 470, 525, 195, + 500, 0, 489, 465, 496, 466, 487, 514, 131, 518, + 484, 558, 528, 570, 163, 0, 490, 545, 237, 123, + 171, 169, 255, 136, 132, 130, 122, 152, 175, 205, + 252, 199, 577, 166, 534, 0, 245, 183, 0, 0, + 0, 516, 560, 523, 553, 511, 544, 475, 533, 572, + 501, 541, 573, 0, 0, 0, 96, 97, 98, 0, + 1077, 1078, 0, 0, 0, 0, 0, 118, 0, 538, + 567, 498, 540, 542, 581, 464, 535, 0, 468, 471, + 578, 563, 493, 494, 0, 0, 0, 0, 0, 0, + 0, 515, 524, 550, 509, 0, 0, 0, 0, 0, + 0, 0, 0, 491, 0, 532, 0, 0, 0, 472, + 469, 0, 0, 0, 0, 513, 0, 0, 0, 474, + 0, 492, 551, 0, 462, 142, 555, 562, 510, 308, + 566, 508, 507, 569, 216, 0, 249, 146, 162, 114, + 159, 100, 110, 0, 144, 192, 224, 228, 559, 488, + 497, 124, 495, 226, 203, 268, 531, 206, 225, 167, + 257, 217, 267, 277, 278, 253, 275, 286, 242, 103, + 251, 265, 119, 236, 0, 0, 0, 105, 263, 248, + 181, 156, 157, 104, 0, 222, 129, 140, 126, 194, + 260, 261, 125, 289, 111, 274, 107, 112, 273, 188, + 256, 264, 182, 174, 106, 262, 180, 173, 161, 135, + 148, 214, 170, 215, 149, 185, 184, 186, 0, 467, + 0, 246, 271, 290, 116, 483, 254, 282, 285, 0, + 218, 117, 141, 134, 213, 139, 164, 281, 283, 284, + 187, 113, 151, 243, 160, 168, 221, 288, 202, 227, + 120, 270, 244, 479, 482, 477, 478, 526, 527, 574, + 575, 576, 552, 473, 0, 480, 481, 0, 557, 564, + 565, 530, 99, 108, 165, 287, 219, 138, 272, 463, + 476, 128, 486, 0, 0, 499, 504, 505, 517, 519, + 520, 521, 522, 529, 536, 537, 539, 546, 547, 548, + 549, 554, 561, 580, 101, 102, 109, 115, 121, 127, + 133, 137, 143, 147, 150, 153, 154, 155, 158, 172, + 176, 177, 178, 179, 189, 190, 191, 193, 196, 197, + 198, 200, 201, 204, 207, 208, 209, 210, 211, 212, + 220, 223, 229, 230, 231, 232, 233, 234, 235, 238, + 239, 240, 241, 247, 250, 258, 259, 269, 276, 279, + 145, 266, 280, 568, 556, 0, 0, 512, 571, 485, + 502, 579, 503, 506, 543, 470, 525, 195, 500, 0, + 489, 465, 496, 466, 487, 514, 131, 518, 484, 558, + 528, 570, 163, 0, 490, 545, 237, 123, 171, 169, + 255, 136, 132, 130, 122, 152, 175, 205, 252, 199, + 577, 166, 534, 0, 245, 183, 0, 0, 0, 516, + 560, 523, 553, 511, 544, 475, 533, 572, 501, 541, + 573, 61, 0, 0, 96, 97, 98, 0, 0, 0, + 0, 0, 0, 0, 0, 118, 0, 538, 567, 498, + 540, 542, 581, 464, 535, 0, 468, 471, 578, 563, + 493, 494, 0, 0, 0, 0, 0, 0, 0, 515, + 524, 550, 509, 0, 0, 0, 0, 0, 0, 0, + 0, 491, 0, 532, 0, 0, 0, 472, 469, 0, + 0, 0, 0, 513, 0, 0, 0, 474, 0, 492, + 551, 0, 462, 142, 555, 562, 510, 308, 566, 508, + 507, 569, 216, 0, 249, 146, 162, 114, 159, 100, + 110, 0, 144, 192, 224, 228, 559, 488, 497, 124, + 495, 226, 203, 268, 531, 206, 225, 167, 257, 217, + 267, 277, 278, 253, 275, 286, 242, 103, 251, 265, + 119, 236, 0, 0, 0, 105, 263, 248, 181, 156, + 157, 104, 0, 222, 129, 140, 126, 194, 260, 261, + 125, 289, 111, 274, 107, 112, 273, 188, 256, 264, + 182, 174, 106, 262, 180, 173, 161, 135, 148, 214, + 170, 215, 149, 185, 184, 186, 0, 467, 0, 246, + 271, 290, 116, 483, 254, 282, 285, 0, 218, 117, + 141, 134, 213, 139, 164, 281, 283, 284, 187, 113, + 151, 243, 160, 168, 221, 288, 202, 227, 120, 270, + 244, 479, 482, 477, 478, 526, 527, 574, 575, 576, + 552, 473, 0, 480, 481, 0, 557, 564, 565, 530, + 99, 108, 165, 287, 219, 138, 272, 463, 476, 128, + 486, 0, 0, 499, 504, 505, 517, 519, 520, 521, + 522, 529, 536, 537, 539, 546, 547, 548, 549, 554, + 561, 580, 101, 102, 109, 115, 121, 127, 133, 137, + 143, 147, 150, 153, 154, 155, 158, 172, 176, 177, + 178, 179, 189, 190, 191, 193, 196, 197, 198, 200, + 201, 204, 207, 208, 209, 210, 211, 212, 220, 223, + 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, + 241, 247, 250, 258, 259, 269, 276, 279, 145, 266, + 280, 568, 556, 0, 0, 512, 571, 485, 502, 579, + 503, 506, 543, 470, 525, 195, 500, 0, 489, 465, + 496, 466, 487, 514, 131, 518, 484, 558, 528, 570, + 163, 0, 490, 545, 237, 123, 171, 169, 255, 136, + 132, 130, 122, 152, 175, 205, 252, 199, 577, 166, + 534, 0, 245, 183, 0, 0, 0, 516, 560, 523, + 553, 511, 544, 475, 533, 572, 501, 541, 573, 0, + 0, 0, 96, 97, 98, 0, 0, 0, 0, 0, + 0, 0, 0, 118, 0, 538, 567, 498, 540, 542, + 581, 464, 535, 0, 468, 471, 578, 563, 493, 494, + 0, 0, 0, 0, 0, 0, 0, 515, 524, 550, + 509, 0, 0, 0, 0, 0, 0, 1383, 0, 491, + 0, 532, 0, 0, 0, 472, 469, 0, 0, 0, + 0, 513, 0, 0, 0, 474, 0, 492, 551, 0, + 462, 142, 555, 562, 510, 308, 566, 508, 507, 569, + 216, 0, 249, 146, 162, 114, 159, 100, 110, 0, + 144, 192, 224, 228, 559, 488, 497, 124, 495, 226, + 203, 268, 531, 206, 225, 167, 257, 217, 267, 277, + 278, 253, 275, 286, 242, 103, 251, 265, 119, 236, + 0, 0, 0, 105, 263, 248, 181, 156, 157, 104, + 0, 222, 129, 140, 126, 194, 260, 261, 125, 289, + 111, 274, 107, 112, 273, 188, 256, 264, 182, 174, + 106, 262, 180, 173, 161, 135, 148, 214, 170, 215, + 149, 185, 184, 186, 0, 467, 0, 246, 271, 290, + 116, 483, 254, 282, 285, 0, 218, 117, 141, 134, + 213, 139, 164, 281, 283, 284, 187, 113, 151, 243, + 160, 168, 221, 288, 202, 227, 120, 270, 244, 479, + 482, 477, 478, 526, 527, 574, 575, 576, 552, 473, + 0, 480, 481, 0, 557, 564, 565, 530, 99, 108, + 165, 287, 219, 138, 272, 463, 476, 128, 486, 0, + 0, 499, 504, 505, 517, 519, 520, 521, 522, 529, + 536, 537, 539, 546, 547, 548, 549, 554, 561, 580, + 101, 102, 109, 115, 121, 127, 133, 137, 143, 147, + 150, 153, 154, 155, 158, 172, 176, 177, 178, 179, + 189, 190, 191, 193, 196, 197, 198, 200, 201, 204, + 207, 208, 209, 210, 211, 212, 220, 223, 229, 230, + 231, 232, 233, 234, 235, 238, 239, 240, 241, 247, + 250, 258, 259, 269, 276, 279, 145, 266, 280, 568, + 556, 0, 0, 512, 571, 485, 502, 579, 503, 506, + 543, 470, 525, 195, 500, 0, 489, 465, 496, 466, + 487, 514, 131, 518, 484, 558, 528, 570, 163, 0, + 490, 545, 237, 123, 171, 169, 255, 136, 132, 130, + 122, 152, 175, 205, 252, 199, 577, 166, 534, 0, + 245, 183, 0, 0, 0, 516, 560, 523, 553, 511, + 544, 475, 533, 572, 501, 541, 573, 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, - 0, 118, 0, 527, 556, 487, 529, 531, 570, 453, - 524, 0, 457, 460, 567, 552, 482, 483, 0, 0, - 0, 0, 0, 0, 0, 504, 513, 539, 498, 0, - 0, 0, 0, 0, 0, 1369, 0, 480, 0, 521, - 0, 0, 0, 461, 458, 0, 0, 0, 0, 502, - 0, 0, 0, 463, 0, 481, 540, 0, 451, 138, - 544, 551, 499, 297, 555, 497, 496, 558, 207, 0, - 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, - 215, 219, 548, 477, 486, 123, 484, 217, 195, 257, - 520, 197, 216, 162, 246, 208, 256, 266, 267, 243, - 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, - 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, - 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, - 107, 112, 262, 181, 245, 253, 175, 168, 106, 251, - 173, 167, 156, 132, 144, 205, 164, 206, 145, 178, - 177, 179, 0, 456, 0, 237, 260, 279, 116, 472, - 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, - 159, 270, 272, 273, 180, 113, 147, 234, 155, 163, - 212, 277, 194, 218, 120, 259, 235, 468, 471, 466, - 467, 515, 516, 563, 564, 565, 541, 462, 0, 469, - 470, 0, 546, 553, 554, 519, 99, 108, 160, 276, - 210, 134, 261, 452, 465, 127, 475, 0, 0, 488, - 493, 494, 506, 508, 509, 510, 511, 518, 525, 526, - 528, 535, 536, 537, 538, 543, 550, 569, 101, 102, - 109, 115, 121, 126, 130, 133, 139, 143, 146, 148, - 149, 150, 153, 166, 169, 170, 171, 172, 182, 183, - 184, 186, 189, 190, 191, 192, 193, 196, 198, 199, - 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, - 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, - 248, 258, 265, 268, 141, 255, 269, 557, 545, 0, - 0, 501, 560, 474, 491, 568, 492, 495, 532, 459, - 514, 188, 489, 0, 478, 454, 485, 455, 476, 503, - 129, 507, 473, 547, 517, 559, 158, 0, 479, 534, - 228, 122, 165, 566, 161, 523, 0, 236, 176, 0, - 0, 0, 505, 549, 512, 542, 500, 533, 464, 522, - 561, 490, 530, 562, 0, 0, 0, 96, 97, 98, - 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, - 527, 556, 487, 529, 531, 570, 453, 524, 0, 457, - 460, 567, 552, 482, 483, 0, 0, 0, 0, 0, - 0, 0, 504, 513, 539, 498, 0, 0, 0, 0, - 0, 0, 1254, 0, 480, 0, 521, 0, 0, 0, - 461, 458, 0, 0, 0, 0, 502, 0, 0, 0, - 463, 0, 481, 540, 0, 451, 138, 544, 551, 499, - 297, 555, 497, 496, 558, 207, 0, 240, 142, 157, - 114, 154, 100, 110, 0, 140, 185, 215, 219, 548, - 477, 486, 123, 484, 217, 195, 257, 520, 197, 216, - 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, - 103, 242, 254, 119, 227, 0, 0, 0, 105, 252, - 239, 174, 151, 152, 104, 0, 213, 128, 136, 125, - 187, 249, 250, 124, 278, 111, 263, 107, 112, 262, - 181, 245, 253, 175, 168, 106, 251, 173, 167, 156, - 132, 144, 205, 164, 206, 145, 178, 177, 179, 0, - 456, 0, 237, 260, 279, 116, 472, 244, 271, 274, - 0, 209, 117, 137, 131, 204, 135, 159, 270, 272, - 273, 180, 113, 147, 234, 155, 163, 212, 277, 194, - 218, 120, 259, 235, 468, 471, 466, 467, 515, 516, - 563, 564, 565, 541, 462, 0, 469, 470, 0, 546, - 553, 554, 519, 99, 108, 160, 276, 210, 134, 261, - 452, 465, 127, 475, 0, 0, 488, 493, 494, 506, - 508, 509, 510, 511, 518, 525, 526, 528, 535, 536, - 537, 538, 543, 550, 569, 101, 102, 109, 115, 121, - 126, 130, 133, 139, 143, 146, 148, 149, 150, 153, - 166, 169, 170, 171, 172, 182, 183, 184, 186, 189, - 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, - 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, - 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, - 268, 141, 255, 269, 557, 545, 0, 0, 501, 560, - 474, 491, 568, 492, 495, 532, 459, 514, 188, 489, - 0, 478, 454, 485, 455, 476, 503, 129, 507, 473, - 547, 517, 559, 158, 0, 479, 534, 228, 122, 165, - 566, 161, 523, 0, 236, 176, 0, 0, 0, 505, - 549, 512, 542, 500, 533, 464, 522, 561, 490, 530, - 562, 0, 0, 0, 96, 97, 98, 0, 0, 0, - 0, 0, 0, 0, 0, 118, 0, 527, 556, 487, - 529, 531, 570, 453, 524, 0, 457, 460, 567, 552, - 482, 483, 0, 0, 0, 0, 0, 0, 0, 504, - 513, 539, 498, 0, 0, 0, 0, 0, 0, 1012, - 0, 480, 0, 521, 0, 0, 0, 461, 458, 0, - 0, 0, 0, 502, 0, 0, 0, 463, 0, 481, - 540, 0, 451, 138, 544, 551, 499, 297, 555, 497, - 496, 558, 207, 0, 240, 142, 157, 114, 154, 100, - 110, 0, 140, 185, 215, 219, 548, 477, 486, 123, - 484, 217, 195, 257, 520, 197, 216, 162, 246, 208, - 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, - 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, - 152, 104, 0, 213, 128, 136, 125, 187, 249, 250, - 124, 278, 111, 263, 107, 112, 262, 181, 245, 253, - 175, 168, 106, 251, 173, 167, 156, 132, 144, 205, - 164, 206, 145, 178, 177, 179, 0, 456, 0, 237, - 260, 279, 116, 472, 244, 271, 274, 0, 209, 117, - 137, 131, 204, 135, 159, 270, 272, 273, 180, 113, - 147, 234, 155, 163, 212, 277, 194, 218, 120, 259, - 235, 468, 471, 466, 467, 515, 516, 563, 564, 565, - 541, 462, 0, 469, 470, 0, 546, 553, 554, 519, - 99, 108, 160, 276, 210, 134, 261, 452, 465, 127, - 475, 0, 0, 488, 493, 494, 506, 508, 509, 510, - 511, 518, 525, 526, 528, 535, 536, 537, 538, 543, - 550, 569, 101, 102, 109, 115, 121, 126, 130, 133, - 139, 143, 146, 148, 149, 150, 153, 166, 169, 170, - 171, 172, 182, 183, 184, 186, 189, 190, 191, 192, - 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, - 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, - 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, - 269, 557, 545, 0, 0, 501, 560, 474, 491, 568, - 492, 495, 532, 459, 514, 188, 489, 0, 478, 454, - 485, 455, 476, 503, 129, 507, 473, 547, 517, 559, - 158, 0, 479, 534, 228, 122, 165, 566, 161, 523, - 0, 236, 176, 0, 0, 0, 505, 549, 512, 542, - 500, 533, 464, 522, 561, 490, 530, 562, 0, 0, - 0, 96, 97, 98, 0, 0, 0, 0, 0, 0, - 0, 0, 118, 0, 527, 556, 487, 529, 531, 570, - 453, 524, 0, 457, 460, 567, 552, 482, 483, 0, - 0, 0, 0, 0, 0, 0, 504, 513, 539, 498, - 0, 0, 0, 0, 0, 0, 0, 0, 480, 0, - 521, 0, 0, 0, 461, 458, 0, 0, 0, 0, - 502, 0, 0, 0, 463, 0, 481, 540, 0, 451, - 138, 544, 551, 499, 297, 555, 497, 496, 558, 207, - 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, - 185, 215, 219, 548, 477, 486, 123, 484, 217, 195, - 257, 520, 197, 216, 162, 246, 208, 256, 266, 267, - 243, 264, 275, 233, 103, 242, 254, 119, 227, 0, - 0, 0, 105, 252, 239, 174, 151, 152, 104, 0, - 213, 128, 136, 125, 187, 249, 250, 124, 278, 111, - 263, 107, 112, 262, 181, 245, 253, 175, 168, 106, - 251, 173, 167, 156, 132, 144, 205, 164, 206, 145, - 178, 177, 179, 0, 456, 0, 237, 260, 279, 116, - 472, 244, 271, 274, 0, 209, 117, 137, 131, 204, - 135, 159, 270, 272, 273, 180, 113, 147, 234, 155, - 163, 212, 277, 194, 218, 120, 259, 235, 468, 471, - 466, 467, 515, 516, 563, 564, 565, 541, 462, 0, - 469, 470, 0, 546, 553, 554, 519, 99, 108, 160, - 276, 210, 134, 261, 452, 465, 127, 475, 0, 0, - 488, 493, 494, 506, 508, 509, 510, 511, 518, 525, - 526, 528, 535, 536, 537, 538, 543, 550, 569, 101, - 102, 109, 115, 121, 126, 130, 133, 139, 143, 146, - 148, 149, 150, 153, 166, 169, 170, 171, 172, 182, - 183, 184, 186, 189, 190, 191, 192, 193, 196, 198, - 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, - 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, - 247, 248, 258, 265, 268, 141, 255, 269, 557, 545, - 0, 0, 501, 560, 474, 491, 568, 492, 495, 532, - 459, 514, 188, 489, 0, 478, 454, 485, 455, 476, - 503, 129, 507, 473, 547, 517, 559, 158, 0, 479, - 534, 228, 122, 165, 566, 161, 523, 0, 236, 176, - 0, 0, 0, 505, 549, 512, 542, 500, 533, 464, - 522, 561, 490, 530, 562, 0, 0, 0, 96, 97, + 0, 118, 0, 538, 567, 498, 540, 542, 581, 464, + 535, 0, 468, 471, 578, 563, 493, 494, 0, 0, + 0, 0, 0, 0, 0, 515, 524, 550, 509, 0, + 0, 0, 0, 0, 0, 1266, 0, 491, 0, 532, + 0, 0, 0, 472, 469, 0, 0, 0, 0, 513, + 0, 0, 0, 474, 0, 492, 551, 0, 462, 142, + 555, 562, 510, 308, 566, 508, 507, 569, 216, 0, + 249, 146, 162, 114, 159, 100, 110, 0, 144, 192, + 224, 228, 559, 488, 497, 124, 495, 226, 203, 268, + 531, 206, 225, 167, 257, 217, 267, 277, 278, 253, + 275, 286, 242, 103, 251, 265, 119, 236, 0, 0, + 0, 105, 263, 248, 181, 156, 157, 104, 0, 222, + 129, 140, 126, 194, 260, 261, 125, 289, 111, 274, + 107, 112, 273, 188, 256, 264, 182, 174, 106, 262, + 180, 173, 161, 135, 148, 214, 170, 215, 149, 185, + 184, 186, 0, 467, 0, 246, 271, 290, 116, 483, + 254, 282, 285, 0, 218, 117, 141, 134, 213, 139, + 164, 281, 283, 284, 187, 113, 151, 243, 160, 168, + 221, 288, 202, 227, 120, 270, 244, 479, 482, 477, + 478, 526, 527, 574, 575, 576, 552, 473, 0, 480, + 481, 0, 557, 564, 565, 530, 99, 108, 165, 287, + 219, 138, 272, 463, 476, 128, 486, 0, 0, 499, + 504, 505, 517, 519, 520, 521, 522, 529, 536, 537, + 539, 546, 547, 548, 549, 554, 561, 580, 101, 102, + 109, 115, 121, 127, 133, 137, 143, 147, 150, 153, + 154, 155, 158, 172, 176, 177, 178, 179, 189, 190, + 191, 193, 196, 197, 198, 200, 201, 204, 207, 208, + 209, 210, 211, 212, 220, 223, 229, 230, 231, 232, + 233, 234, 235, 238, 239, 240, 241, 247, 250, 258, + 259, 269, 276, 279, 145, 266, 280, 568, 556, 0, + 0, 512, 571, 485, 502, 579, 503, 506, 543, 470, + 525, 195, 500, 0, 489, 465, 496, 466, 487, 514, + 131, 518, 484, 558, 528, 570, 163, 0, 490, 545, + 237, 123, 171, 169, 255, 136, 132, 130, 122, 152, + 175, 205, 252, 199, 577, 166, 534, 0, 245, 183, + 0, 0, 0, 516, 560, 523, 553, 511, 544, 475, + 533, 572, 501, 541, 573, 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, - 0, 527, 556, 487, 529, 531, 570, 453, 524, 0, - 457, 460, 567, 552, 482, 483, 0, 0, 0, 0, - 0, 0, 0, 504, 513, 539, 498, 0, 0, 0, - 0, 0, 0, 0, 0, 480, 0, 521, 0, 0, - 0, 461, 458, 0, 0, 0, 0, 502, 0, 0, - 0, 463, 0, 481, 540, 0, 451, 138, 544, 551, - 499, 297, 555, 497, 496, 558, 207, 0, 240, 142, - 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, - 548, 477, 486, 123, 484, 217, 195, 257, 520, 197, - 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, - 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, - 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, - 125, 187, 249, 250, 124, 278, 111, 263, 107, 449, - 262, 181, 245, 253, 175, 168, 106, 251, 173, 167, - 156, 132, 144, 205, 164, 206, 145, 178, 177, 179, - 0, 456, 0, 237, 260, 279, 116, 472, 244, 271, - 274, 0, 209, 117, 137, 131, 204, 135, 159, 270, - 272, 273, 450, 448, 443, 442, 155, 163, 212, 277, - 194, 218, 120, 259, 235, 468, 471, 466, 467, 515, - 516, 563, 564, 565, 541, 462, 0, 469, 470, 0, - 546, 553, 554, 519, 99, 108, 160, 276, 210, 134, - 261, 452, 465, 127, 475, 0, 0, 488, 493, 494, - 506, 508, 509, 510, 511, 518, 525, 526, 528, 535, - 536, 537, 538, 543, 550, 569, 101, 102, 109, 115, - 121, 126, 130, 133, 139, 143, 146, 148, 149, 150, - 153, 166, 169, 170, 171, 172, 182, 183, 184, 186, - 189, 190, 191, 192, 193, 196, 198, 199, 200, 201, - 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, - 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, - 265, 268, 141, 255, 269, 557, 545, 0, 0, 501, - 560, 474, 491, 568, 492, 495, 532, 459, 514, 188, - 489, 0, 478, 454, 485, 455, 476, 503, 129, 507, - 473, 547, 517, 559, 158, 0, 479, 534, 228, 122, - 165, 566, 161, 523, 0, 236, 176, 0, 0, 0, - 505, 549, 512, 542, 500, 533, 464, 522, 561, 490, - 530, 562, 0, 0, 0, 96, 97, 98, 0, 0, - 0, 0, 0, 0, 0, 0, 118, 0, 527, 556, - 487, 529, 531, 570, 453, 524, 0, 457, 460, 567, - 552, 482, 483, 0, 0, 0, 0, 0, 0, 0, - 504, 513, 539, 498, 0, 0, 0, 0, 0, 0, - 0, 0, 480, 0, 521, 0, 0, 0, 461, 458, - 0, 0, 0, 0, 502, 0, 0, 0, 463, 0, - 481, 540, 0, 451, 138, 544, 551, 499, 297, 555, - 497, 496, 558, 207, 0, 240, 142, 157, 114, 154, - 100, 110, 0, 140, 185, 215, 219, 548, 477, 486, - 123, 484, 217, 195, 257, 520, 197, 216, 162, 246, - 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, - 785, 119, 227, 0, 0, 0, 105, 252, 239, 174, - 151, 152, 104, 0, 213, 128, 136, 125, 187, 249, - 250, 124, 278, 111, 263, 107, 449, 262, 181, 245, - 253, 175, 168, 106, 251, 173, 167, 156, 132, 144, - 205, 164, 206, 145, 178, 177, 179, 0, 456, 0, - 237, 260, 279, 116, 472, 244, 271, 274, 0, 209, - 117, 137, 131, 204, 135, 159, 270, 272, 273, 450, - 448, 443, 442, 155, 163, 212, 277, 194, 218, 120, - 259, 235, 468, 471, 466, 467, 515, 516, 563, 564, - 565, 541, 462, 0, 469, 470, 0, 546, 553, 554, - 519, 99, 108, 160, 276, 210, 134, 261, 452, 465, - 127, 475, 0, 0, 488, 493, 494, 506, 508, 509, - 510, 511, 518, 525, 526, 528, 535, 536, 537, 538, - 543, 550, 569, 101, 102, 109, 115, 121, 126, 130, - 133, 139, 143, 146, 148, 149, 150, 153, 166, 169, - 170, 171, 172, 182, 183, 184, 186, 189, 190, 191, - 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, - 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, - 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, - 255, 269, 557, 545, 0, 0, 501, 560, 474, 491, - 568, 492, 495, 532, 459, 514, 188, 489, 0, 478, - 454, 485, 455, 476, 503, 129, 507, 473, 547, 517, - 559, 158, 0, 479, 534, 228, 122, 165, 566, 161, - 523, 0, 236, 176, 0, 0, 0, 505, 549, 512, - 542, 500, 533, 464, 522, 561, 490, 530, 562, 0, + 0, 538, 567, 498, 540, 542, 581, 464, 535, 0, + 468, 471, 578, 563, 493, 494, 0, 0, 0, 0, + 0, 0, 0, 515, 524, 550, 509, 0, 0, 0, + 0, 0, 0, 1023, 0, 491, 0, 532, 0, 0, + 0, 472, 469, 0, 0, 0, 0, 513, 0, 0, + 0, 474, 0, 492, 551, 0, 462, 142, 555, 562, + 510, 308, 566, 508, 507, 569, 216, 0, 249, 146, + 162, 114, 159, 100, 110, 0, 144, 192, 224, 228, + 559, 488, 497, 124, 495, 226, 203, 268, 531, 206, + 225, 167, 257, 217, 267, 277, 278, 253, 275, 286, + 242, 103, 251, 265, 119, 236, 0, 0, 0, 105, + 263, 248, 181, 156, 157, 104, 0, 222, 129, 140, + 126, 194, 260, 261, 125, 289, 111, 274, 107, 112, + 273, 188, 256, 264, 182, 174, 106, 262, 180, 173, + 161, 135, 148, 214, 170, 215, 149, 185, 184, 186, + 0, 467, 0, 246, 271, 290, 116, 483, 254, 282, + 285, 0, 218, 117, 141, 134, 213, 139, 164, 281, + 283, 284, 187, 113, 151, 243, 160, 168, 221, 288, + 202, 227, 120, 270, 244, 479, 482, 477, 478, 526, + 527, 574, 575, 576, 552, 473, 0, 480, 481, 0, + 557, 564, 565, 530, 99, 108, 165, 287, 219, 138, + 272, 463, 476, 128, 486, 0, 0, 499, 504, 505, + 517, 519, 520, 521, 522, 529, 536, 537, 539, 546, + 547, 548, 549, 554, 561, 580, 101, 102, 109, 115, + 121, 127, 133, 137, 143, 147, 150, 153, 154, 155, + 158, 172, 176, 177, 178, 179, 189, 190, 191, 193, + 196, 197, 198, 200, 201, 204, 207, 208, 209, 210, + 211, 212, 220, 223, 229, 230, 231, 232, 233, 234, + 235, 238, 239, 240, 241, 247, 250, 258, 259, 269, + 276, 279, 145, 266, 280, 568, 556, 0, 0, 512, + 571, 485, 502, 579, 503, 506, 543, 470, 525, 195, + 500, 0, 489, 465, 496, 466, 487, 514, 131, 518, + 484, 558, 528, 570, 163, 0, 490, 545, 237, 123, + 171, 169, 255, 136, 132, 130, 122, 152, 175, 205, + 252, 199, 577, 166, 534, 0, 245, 183, 0, 0, + 0, 516, 560, 523, 553, 511, 544, 475, 533, 572, + 501, 541, 573, 0, 0, 0, 96, 97, 98, 0, + 0, 0, 0, 0, 0, 0, 0, 118, 0, 538, + 567, 498, 540, 542, 581, 464, 535, 0, 468, 471, + 578, 563, 493, 494, 0, 0, 0, 0, 0, 0, + 0, 515, 524, 550, 509, 0, 0, 0, 0, 0, + 0, 0, 0, 491, 0, 532, 0, 0, 0, 472, + 469, 0, 0, 0, 0, 513, 0, 0, 0, 474, + 0, 492, 551, 0, 462, 142, 555, 562, 510, 308, + 566, 508, 507, 569, 216, 0, 249, 146, 162, 114, + 159, 100, 110, 0, 144, 192, 224, 228, 559, 488, + 497, 124, 495, 226, 203, 268, 531, 206, 225, 167, + 257, 217, 267, 277, 278, 253, 275, 286, 242, 103, + 251, 265, 119, 236, 0, 0, 0, 105, 263, 248, + 181, 156, 157, 104, 0, 222, 129, 140, 126, 194, + 260, 261, 125, 289, 111, 274, 107, 112, 273, 188, + 256, 264, 182, 174, 106, 262, 180, 173, 161, 135, + 148, 214, 170, 215, 149, 185, 184, 186, 0, 467, + 0, 246, 271, 290, 116, 483, 254, 282, 285, 0, + 218, 117, 141, 134, 213, 139, 164, 281, 283, 284, + 187, 113, 151, 243, 160, 168, 221, 288, 202, 227, + 120, 270, 244, 479, 482, 477, 478, 526, 527, 574, + 575, 576, 552, 473, 0, 480, 481, 0, 557, 564, + 565, 530, 99, 108, 165, 287, 219, 138, 272, 463, + 476, 128, 486, 0, 0, 499, 504, 505, 517, 519, + 520, 521, 522, 529, 536, 537, 539, 546, 547, 548, + 549, 554, 561, 580, 101, 102, 109, 115, 121, 127, + 133, 137, 143, 147, 150, 153, 154, 155, 158, 172, + 176, 177, 178, 179, 189, 190, 191, 193, 196, 197, + 198, 200, 201, 204, 207, 208, 209, 210, 211, 212, + 220, 223, 229, 230, 231, 232, 233, 234, 235, 238, + 239, 240, 241, 247, 250, 258, 259, 269, 276, 279, + 145, 266, 280, 568, 556, 0, 0, 512, 571, 485, + 502, 579, 503, 506, 543, 470, 525, 195, 500, 0, + 489, 465, 496, 466, 487, 514, 131, 518, 484, 558, + 528, 570, 163, 0, 490, 545, 237, 123, 171, 169, + 255, 136, 132, 130, 122, 152, 175, 205, 252, 199, + 577, 166, 534, 0, 245, 183, 0, 0, 0, 516, + 560, 523, 553, 511, 544, 475, 533, 572, 501, 541, + 573, 0, 0, 0, 96, 97, 98, 0, 0, 0, + 0, 0, 0, 0, 0, 118, 0, 538, 567, 498, + 540, 542, 581, 464, 535, 0, 468, 471, 578, 563, + 493, 494, 0, 0, 0, 0, 0, 0, 0, 515, + 524, 550, 509, 0, 0, 0, 0, 0, 0, 0, + 0, 491, 0, 532, 0, 0, 0, 472, 469, 0, + 0, 0, 0, 513, 0, 0, 0, 474, 0, 492, + 551, 0, 462, 142, 555, 562, 510, 308, 566, 508, + 507, 569, 216, 0, 249, 146, 162, 114, 159, 100, + 110, 0, 144, 192, 224, 228, 559, 488, 497, 124, + 495, 226, 203, 268, 531, 206, 225, 167, 257, 217, + 267, 277, 278, 253, 275, 286, 242, 103, 251, 265, + 119, 236, 0, 0, 0, 105, 263, 248, 181, 156, + 157, 104, 0, 222, 129, 140, 126, 194, 260, 261, + 125, 289, 111, 274, 107, 460, 273, 188, 256, 264, + 182, 174, 106, 262, 180, 173, 161, 135, 148, 214, + 170, 215, 149, 185, 184, 186, 0, 467, 0, 246, + 271, 290, 116, 483, 254, 282, 285, 0, 218, 117, + 141, 134, 213, 139, 164, 281, 283, 284, 461, 459, + 454, 453, 160, 168, 221, 288, 202, 227, 120, 270, + 244, 479, 482, 477, 478, 526, 527, 574, 575, 576, + 552, 473, 0, 480, 481, 0, 557, 564, 565, 530, + 99, 108, 165, 287, 219, 138, 272, 463, 476, 128, + 486, 0, 0, 499, 504, 505, 517, 519, 520, 521, + 522, 529, 536, 537, 539, 546, 547, 548, 549, 554, + 561, 580, 101, 102, 109, 115, 121, 127, 133, 137, + 143, 147, 150, 153, 154, 155, 158, 172, 176, 177, + 178, 179, 189, 190, 191, 193, 196, 197, 198, 200, + 201, 204, 207, 208, 209, 210, 211, 212, 220, 223, + 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, + 241, 247, 250, 258, 259, 269, 276, 279, 145, 266, + 280, 568, 556, 0, 0, 512, 571, 485, 502, 579, + 503, 506, 543, 470, 525, 195, 500, 0, 489, 465, + 496, 466, 487, 514, 131, 518, 484, 558, 528, 570, + 163, 0, 490, 545, 237, 123, 171, 169, 255, 136, + 132, 130, 122, 152, 175, 205, 252, 199, 577, 166, + 534, 0, 245, 183, 0, 0, 0, 516, 560, 523, + 553, 511, 544, 475, 533, 572, 501, 541, 573, 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, 0, - 0, 0, 0, 118, 0, 527, 556, 487, 529, 531, - 570, 453, 524, 0, 457, 460, 567, 552, 482, 483, - 0, 0, 0, 0, 0, 0, 0, 504, 513, 539, - 498, 0, 0, 0, 0, 0, 0, 0, 0, 480, - 0, 521, 0, 0, 0, 461, 458, 0, 0, 0, - 0, 502, 0, 0, 0, 463, 0, 481, 540, 0, - 451, 138, 544, 551, 499, 297, 555, 497, 496, 558, - 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, - 140, 185, 215, 219, 548, 477, 486, 123, 484, 217, - 195, 257, 520, 197, 216, 162, 246, 208, 256, 266, - 267, 243, 264, 275, 233, 103, 242, 440, 119, 227, - 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, - 0, 213, 128, 136, 125, 187, 249, 250, 124, 278, - 111, 263, 107, 449, 262, 181, 245, 253, 175, 168, - 106, 251, 173, 167, 156, 132, 144, 205, 164, 206, - 145, 178, 177, 179, 0, 456, 0, 237, 260, 279, - 116, 472, 244, 271, 274, 0, 209, 117, 137, 131, - 204, 135, 159, 270, 272, 273, 450, 448, 443, 442, - 155, 163, 212, 277, 194, 218, 120, 259, 235, 468, - 471, 466, 467, 515, 516, 563, 564, 565, 541, 462, - 0, 469, 470, 0, 546, 553, 554, 519, 99, 108, - 160, 276, 210, 134, 261, 452, 465, 127, 475, 0, - 0, 488, 493, 494, 506, 508, 509, 510, 511, 518, - 525, 526, 528, 535, 536, 537, 538, 543, 550, 569, - 101, 102, 109, 115, 121, 126, 130, 133, 139, 143, - 146, 148, 149, 150, 153, 166, 169, 170, 171, 172, - 182, 183, 184, 186, 189, 190, 191, 192, 193, 196, - 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, - 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, - 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, - 0, 0, 950, 0, 346, 0, 0, 0, 129, 0, - 345, 0, 0, 0, 158, 0, 951, 0, 228, 122, - 165, 389, 161, 0, 0, 236, 176, 0, 0, 0, - 0, 0, 380, 381, 0, 0, 0, 0, 0, 0, - 0, 0, 61, 0, 0, 96, 97, 98, 367, 366, - 369, 370, 371, 372, 0, 0, 118, 368, 373, 374, - 375, 0, 0, 0, 0, 343, 360, 0, 388, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 357, 358, - 430, 0, 0, 0, 403, 0, 359, 0, 0, 352, - 353, 355, 354, 356, 361, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 138, 402, 0, 0, 297, 0, - 0, 400, 0, 207, 0, 240, 142, 157, 114, 154, - 100, 110, 0, 140, 185, 215, 219, 0, 0, 0, - 123, 0, 217, 195, 257, 0, 197, 216, 162, 246, - 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, - 254, 119, 227, 0, 0, 0, 105, 252, 239, 174, - 151, 152, 104, 0, 213, 128, 136, 125, 187, 249, - 250, 124, 278, 111, 263, 107, 112, 262, 181, 245, - 253, 175, 168, 106, 251, 173, 167, 156, 132, 144, - 205, 164, 206, 145, 178, 177, 179, 0, 0, 0, - 237, 260, 279, 116, 0, 244, 271, 274, 0, 209, - 117, 137, 131, 204, 135, 159, 270, 272, 273, 180, - 113, 147, 234, 155, 163, 212, 277, 194, 218, 120, - 259, 235, 390, 401, 396, 397, 394, 395, 393, 392, - 391, 404, 382, 383, 384, 385, 387, 0, 398, 399, - 386, 99, 108, 160, 276, 210, 134, 261, 0, 0, - 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 101, 102, 109, 115, 121, 126, 130, - 133, 139, 143, 146, 148, 149, 150, 153, 166, 169, - 170, 171, 172, 182, 183, 184, 186, 189, 190, 191, - 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, - 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, - 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, - 255, 269, 188, 0, 0, 0, 0, 346, 0, 0, - 0, 129, 0, 345, 0, 0, 0, 158, 0, 0, - 0, 228, 122, 165, 389, 161, 0, 0, 236, 176, - 0, 0, 0, 0, 0, 380, 381, 0, 0, 0, - 0, 0, 0, 1057, 0, 61, 0, 0, 96, 97, - 98, 367, 366, 369, 370, 371, 372, 0, 0, 118, - 368, 373, 374, 375, 1058, 0, 0, 0, 343, 360, - 0, 388, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 357, 358, 0, 0, 0, 0, 403, 0, 359, - 0, 0, 352, 353, 355, 354, 356, 361, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 138, 402, 0, - 0, 297, 0, 0, 400, 0, 207, 0, 240, 142, - 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, - 0, 0, 0, 123, 0, 217, 195, 257, 0, 197, - 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, - 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, - 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, - 125, 187, 249, 250, 124, 278, 111, 263, 107, 112, - 262, 181, 245, 253, 175, 168, 106, 251, 173, 167, - 156, 132, 144, 205, 164, 206, 145, 178, 177, 179, - 0, 0, 0, 237, 260, 279, 116, 0, 244, 271, - 274, 0, 209, 117, 137, 131, 204, 135, 159, 270, - 272, 273, 180, 113, 147, 234, 155, 163, 212, 277, - 194, 218, 120, 259, 235, 390, 401, 396, 397, 394, - 395, 393, 392, 391, 404, 382, 383, 384, 385, 387, - 0, 398, 399, 386, 99, 108, 160, 276, 210, 134, - 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 118, 0, 538, 567, 498, 540, 542, + 581, 464, 535, 0, 468, 471, 578, 563, 493, 494, + 0, 0, 0, 0, 0, 0, 0, 515, 524, 550, + 509, 0, 0, 0, 0, 0, 0, 0, 0, 491, + 0, 532, 0, 0, 0, 472, 469, 0, 0, 0, + 0, 513, 0, 0, 0, 474, 0, 492, 551, 0, + 462, 142, 555, 562, 510, 308, 566, 508, 507, 569, + 216, 0, 249, 146, 162, 114, 159, 100, 110, 0, + 144, 192, 224, 228, 559, 488, 497, 124, 495, 226, + 203, 268, 531, 206, 225, 167, 257, 217, 267, 277, + 278, 253, 275, 286, 242, 103, 251, 796, 119, 236, + 0, 0, 0, 105, 263, 248, 181, 156, 157, 104, + 0, 222, 129, 140, 126, 194, 260, 261, 125, 289, + 111, 274, 107, 460, 273, 188, 256, 264, 182, 174, + 106, 262, 180, 173, 161, 135, 148, 214, 170, 215, + 149, 185, 184, 186, 0, 467, 0, 246, 271, 290, + 116, 483, 254, 282, 285, 0, 218, 117, 141, 134, + 213, 139, 164, 281, 283, 284, 461, 459, 454, 453, + 160, 168, 221, 288, 202, 227, 120, 270, 244, 479, + 482, 477, 478, 526, 527, 574, 575, 576, 552, 473, + 0, 480, 481, 0, 557, 564, 565, 530, 99, 108, + 165, 287, 219, 138, 272, 463, 476, 128, 486, 0, + 0, 499, 504, 505, 517, 519, 520, 521, 522, 529, + 536, 537, 539, 546, 547, 548, 549, 554, 561, 580, + 101, 102, 109, 115, 121, 127, 133, 137, 143, 147, + 150, 153, 154, 155, 158, 172, 176, 177, 178, 179, + 189, 190, 191, 193, 196, 197, 198, 200, 201, 204, + 207, 208, 209, 210, 211, 212, 220, 223, 229, 230, + 231, 232, 233, 234, 235, 238, 239, 240, 241, 247, + 250, 258, 259, 269, 276, 279, 145, 266, 280, 568, + 556, 0, 0, 512, 571, 485, 502, 579, 503, 506, + 543, 470, 525, 195, 500, 0, 489, 465, 496, 466, + 487, 514, 131, 518, 484, 558, 528, 570, 163, 0, + 490, 545, 237, 123, 171, 169, 255, 136, 132, 130, + 122, 152, 175, 205, 252, 199, 577, 166, 534, 0, + 245, 183, 0, 0, 0, 516, 560, 523, 553, 511, + 544, 475, 533, 572, 501, 541, 573, 0, 0, 0, + 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, + 0, 118, 0, 538, 567, 498, 540, 542, 581, 464, + 535, 0, 468, 471, 578, 563, 493, 494, 0, 0, + 0, 0, 0, 0, 0, 515, 524, 550, 509, 0, + 0, 0, 0, 0, 0, 0, 0, 491, 0, 532, + 0, 0, 0, 472, 469, 0, 0, 0, 0, 513, + 0, 0, 0, 474, 0, 492, 551, 0, 462, 142, + 555, 562, 510, 308, 566, 508, 507, 569, 216, 0, + 249, 146, 162, 114, 159, 100, 110, 0, 144, 192, + 224, 228, 559, 488, 497, 124, 495, 226, 203, 268, + 531, 206, 225, 167, 257, 217, 267, 277, 278, 253, + 275, 286, 242, 103, 251, 451, 119, 236, 0, 0, + 0, 105, 263, 248, 181, 156, 157, 104, 0, 222, + 129, 140, 126, 194, 260, 261, 125, 289, 111, 274, + 107, 460, 273, 188, 256, 264, 182, 174, 106, 262, + 180, 173, 161, 135, 148, 214, 170, 215, 149, 185, + 184, 186, 0, 467, 0, 246, 271, 290, 116, 483, + 254, 282, 285, 0, 218, 117, 141, 134, 213, 139, + 164, 281, 283, 284, 461, 459, 454, 453, 160, 168, + 221, 288, 202, 227, 120, 270, 244, 479, 482, 477, + 478, 526, 527, 574, 575, 576, 552, 473, 0, 480, + 481, 0, 557, 564, 565, 530, 99, 108, 165, 287, + 219, 138, 272, 463, 476, 128, 486, 0, 0, 499, + 504, 505, 517, 519, 520, 521, 522, 529, 536, 537, + 539, 546, 547, 548, 549, 554, 561, 580, 101, 102, + 109, 115, 121, 127, 133, 137, 143, 147, 150, 153, + 154, 155, 158, 172, 176, 177, 178, 179, 189, 190, + 191, 193, 196, 197, 198, 200, 201, 204, 207, 208, + 209, 210, 211, 212, 220, 223, 229, 230, 231, 232, + 233, 234, 235, 238, 239, 240, 241, 247, 250, 258, + 259, 269, 276, 279, 145, 266, 280, 195, 0, 0, + 961, 0, 357, 0, 0, 0, 131, 0, 356, 0, + 0, 0, 163, 0, 962, 0, 237, 123, 171, 169, + 255, 136, 132, 130, 122, 152, 175, 205, 252, 199, + 400, 166, 0, 0, 245, 183, 0, 0, 0, 0, + 0, 391, 392, 0, 0, 0, 0, 0, 0, 0, + 0, 61, 0, 0, 96, 97, 98, 378, 377, 380, + 381, 382, 383, 0, 0, 118, 379, 384, 385, 386, + 0, 0, 0, 0, 354, 371, 0, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 368, 369, 441, + 0, 0, 0, 414, 0, 370, 0, 0, 363, 364, + 366, 365, 367, 372, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 142, 413, 0, 0, 308, 0, 0, + 411, 0, 216, 0, 249, 146, 162, 114, 159, 100, + 110, 0, 144, 192, 224, 228, 0, 0, 0, 124, + 0, 226, 203, 268, 0, 206, 225, 167, 257, 217, + 267, 277, 278, 253, 275, 286, 242, 103, 251, 265, + 119, 236, 0, 0, 0, 105, 263, 248, 181, 156, + 157, 104, 0, 222, 129, 140, 126, 194, 260, 261, + 125, 289, 111, 274, 107, 112, 273, 188, 256, 264, + 182, 174, 106, 262, 180, 173, 161, 135, 148, 214, + 170, 215, 149, 185, 184, 186, 0, 0, 0, 246, + 271, 290, 116, 0, 254, 282, 285, 0, 218, 117, + 141, 134, 213, 139, 164, 281, 283, 284, 187, 113, + 151, 243, 160, 168, 221, 288, 202, 227, 120, 270, + 244, 401, 412, 407, 408, 405, 406, 404, 403, 402, + 415, 393, 394, 395, 396, 398, 0, 409, 410, 397, + 99, 108, 165, 287, 219, 138, 272, 0, 0, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 101, 102, 109, 115, 121, 127, 133, 137, + 143, 147, 150, 153, 154, 155, 158, 172, 176, 177, + 178, 179, 189, 190, 191, 193, 196, 197, 198, 200, + 201, 204, 207, 208, 209, 210, 211, 212, 220, 223, + 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, + 241, 247, 250, 258, 259, 269, 276, 279, 145, 266, + 280, 195, 0, 0, 0, 0, 357, 0, 0, 0, + 131, 0, 356, 0, 0, 0, 163, 0, 0, 0, + 237, 123, 171, 169, 255, 136, 132, 130, 122, 152, + 175, 205, 252, 199, 400, 166, 0, 0, 245, 183, + 0, 0, 0, 0, 0, 391, 392, 0, 0, 0, + 0, 0, 0, 1068, 0, 61, 0, 0, 96, 97, + 98, 378, 377, 380, 381, 382, 383, 0, 0, 118, + 379, 384, 385, 386, 1069, 0, 0, 0, 354, 371, + 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 368, 369, 0, 0, 0, 0, 414, 0, 370, + 0, 0, 363, 364, 366, 365, 367, 372, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 142, 413, 0, + 0, 308, 0, 0, 411, 0, 216, 0, 249, 146, + 162, 114, 159, 100, 110, 0, 144, 192, 224, 228, + 0, 0, 0, 124, 0, 226, 203, 268, 0, 206, + 225, 167, 257, 217, 267, 277, 278, 253, 275, 286, + 242, 103, 251, 265, 119, 236, 0, 0, 0, 105, + 263, 248, 181, 156, 157, 104, 0, 222, 129, 140, + 126, 194, 260, 261, 125, 289, 111, 274, 107, 112, + 273, 188, 256, 264, 182, 174, 106, 262, 180, 173, + 161, 135, 148, 214, 170, 215, 149, 185, 184, 186, + 0, 0, 0, 246, 271, 290, 116, 0, 254, 282, + 285, 0, 218, 117, 141, 134, 213, 139, 164, 281, + 283, 284, 187, 113, 151, 243, 160, 168, 221, 288, + 202, 227, 120, 270, 244, 401, 412, 407, 408, 405, + 406, 404, 403, 402, 415, 393, 394, 395, 396, 398, + 0, 409, 410, 397, 99, 108, 165, 287, 219, 138, + 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 109, 115, - 121, 126, 130, 133, 139, 143, 146, 148, 149, 150, - 153, 166, 169, 170, 171, 172, 182, 183, 184, 186, - 189, 190, 191, 192, 193, 196, 198, 199, 200, 201, - 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, - 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, - 265, 268, 141, 255, 269, 188, 0, 0, 0, 0, - 346, 0, 0, 0, 129, 0, 345, 0, 0, 0, - 158, 0, 0, 0, 228, 122, 165, 389, 161, 0, - 0, 236, 176, 0, 0, 0, 0, 0, 380, 381, - 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, - 418, 96, 97, 98, 367, 366, 369, 370, 371, 372, - 0, 0, 118, 368, 373, 374, 375, 0, 0, 0, - 0, 343, 360, 0, 388, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 357, 358, 0, 0, 0, 0, - 403, 0, 359, 0, 0, 352, 353, 355, 354, 356, - 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 138, 402, 0, 0, 297, 0, 0, 400, 0, 207, - 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, - 185, 215, 219, 0, 0, 0, 123, 0, 217, 195, - 257, 0, 197, 216, 162, 246, 208, 256, 266, 267, - 243, 264, 275, 233, 103, 242, 254, 119, 227, 0, - 0, 0, 105, 252, 239, 174, 151, 152, 104, 0, - 213, 128, 136, 125, 187, 249, 250, 124, 278, 111, - 263, 107, 112, 262, 181, 245, 253, 175, 168, 106, - 251, 173, 167, 156, 132, 144, 205, 164, 206, 145, - 178, 177, 179, 0, 0, 0, 237, 260, 279, 116, - 0, 244, 271, 274, 0, 209, 117, 137, 131, 204, - 135, 159, 270, 272, 273, 180, 113, 147, 234, 155, - 163, 212, 277, 194, 218, 120, 259, 235, 390, 401, - 396, 397, 394, 395, 393, 392, 391, 404, 382, 383, - 384, 385, 387, 0, 398, 399, 386, 99, 108, 160, - 276, 210, 134, 261, 0, 0, 127, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, - 102, 109, 115, 121, 126, 130, 133, 139, 143, 146, - 148, 149, 150, 153, 166, 169, 170, 171, 172, 182, - 183, 184, 186, 189, 190, 191, 192, 193, 196, 198, - 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, - 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, - 247, 248, 258, 265, 268, 141, 255, 269, 188, 0, - 0, 0, 0, 346, 0, 0, 0, 129, 0, 345, - 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, - 389, 161, 0, 0, 236, 176, 0, 0, 0, 0, - 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 61, 0, 0, 96, 97, 98, 367, 366, 369, - 370, 371, 372, 0, 0, 118, 368, 373, 374, 375, - 0, 0, 0, 0, 343, 360, 0, 388, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 357, 358, 430, - 0, 0, 0, 403, 0, 359, 0, 0, 352, 353, - 355, 354, 356, 361, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 138, 402, 0, 0, 297, 0, 0, - 400, 0, 207, 0, 240, 142, 157, 114, 154, 100, - 110, 0, 140, 185, 215, 219, 0, 0, 0, 123, - 0, 217, 195, 257, 0, 197, 216, 162, 246, 208, - 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, - 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, - 152, 104, 0, 213, 128, 136, 125, 187, 249, 250, - 124, 278, 111, 263, 107, 112, 262, 181, 245, 253, - 175, 168, 106, 251, 173, 167, 156, 132, 144, 205, - 164, 206, 145, 178, 177, 179, 0, 0, 0, 237, - 260, 279, 116, 0, 244, 271, 274, 0, 209, 117, - 137, 131, 204, 135, 159, 270, 272, 273, 180, 113, - 147, 234, 155, 163, 212, 277, 194, 218, 120, 259, - 235, 390, 401, 396, 397, 394, 395, 393, 392, 391, - 404, 382, 383, 384, 385, 387, 0, 398, 399, 386, - 99, 108, 160, 276, 210, 134, 261, 0, 0, 127, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 101, 102, 109, 115, 121, 126, 130, 133, - 139, 143, 146, 148, 149, 150, 153, 166, 169, 170, - 171, 172, 182, 183, 184, 186, 189, 190, 191, 192, - 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, - 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, - 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, - 269, 188, 0, 0, 0, 0, 346, 0, 0, 0, - 129, 0, 345, 0, 0, 0, 158, 0, 0, 0, - 228, 122, 165, 389, 161, 0, 0, 236, 176, 0, - 0, 0, 0, 0, 380, 381, 0, 0, 0, 0, - 0, 0, 0, 0, 61, 0, 0, 96, 97, 98, - 367, 968, 369, 370, 371, 372, 0, 0, 118, 368, - 373, 374, 375, 0, 0, 0, 0, 343, 360, 0, - 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 357, 358, 430, 0, 0, 0, 403, 0, 359, 0, - 0, 352, 353, 355, 354, 356, 361, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 138, 402, 0, 0, - 297, 0, 0, 400, 0, 207, 0, 240, 142, 157, - 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, - 0, 0, 123, 0, 217, 195, 257, 0, 197, 216, - 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, - 103, 242, 254, 119, 227, 0, 0, 0, 105, 252, - 239, 174, 151, 152, 104, 0, 213, 128, 136, 125, - 187, 249, 250, 124, 278, 111, 263, 107, 112, 262, - 181, 245, 253, 175, 168, 106, 251, 173, 167, 156, - 132, 144, 205, 164, 206, 145, 178, 177, 179, 0, - 0, 0, 237, 260, 279, 116, 0, 244, 271, 274, - 0, 209, 117, 137, 131, 204, 135, 159, 270, 272, - 273, 180, 113, 147, 234, 155, 163, 212, 277, 194, - 218, 120, 259, 235, 390, 401, 396, 397, 394, 395, - 393, 392, 391, 404, 382, 383, 384, 385, 387, 0, - 398, 399, 386, 99, 108, 160, 276, 210, 134, 261, - 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 109, 115, 121, - 126, 130, 133, 139, 143, 146, 148, 149, 150, 153, - 166, 169, 170, 171, 172, 182, 183, 184, 186, 189, - 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, - 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, - 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, - 268, 141, 255, 269, 188, 0, 0, 0, 0, 346, - 0, 0, 0, 129, 0, 345, 0, 0, 0, 158, - 0, 0, 0, 228, 122, 165, 389, 161, 0, 0, - 236, 176, 0, 0, 0, 0, 0, 380, 381, 0, + 121, 127, 133, 137, 143, 147, 150, 153, 154, 155, + 158, 172, 176, 177, 178, 179, 189, 190, 191, 193, + 196, 197, 198, 200, 201, 204, 207, 208, 209, 210, + 211, 212, 220, 223, 229, 230, 231, 232, 233, 234, + 235, 238, 239, 240, 241, 247, 250, 258, 259, 269, + 276, 279, 145, 266, 280, 195, 0, 0, 0, 0, + 357, 0, 0, 0, 131, 0, 356, 0, 0, 0, + 163, 0, 0, 0, 237, 123, 171, 169, 255, 136, + 132, 130, 122, 152, 175, 205, 252, 199, 400, 166, + 0, 0, 245, 183, 0, 0, 0, 0, 0, 391, + 392, 0, 0, 0, 0, 0, 0, 0, 0, 61, + 0, 429, 96, 97, 98, 378, 377, 380, 381, 382, + 383, 0, 0, 118, 379, 384, 385, 386, 0, 0, + 0, 0, 354, 371, 0, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 368, 369, 0, 0, 0, + 0, 414, 0, 370, 0, 0, 363, 364, 366, 365, + 367, 372, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 142, 413, 0, 0, 308, 0, 0, 411, 0, + 216, 0, 249, 146, 162, 114, 159, 100, 110, 0, + 144, 192, 224, 228, 0, 0, 0, 124, 0, 226, + 203, 268, 0, 206, 225, 167, 257, 217, 267, 277, + 278, 253, 275, 286, 242, 103, 251, 265, 119, 236, + 0, 0, 0, 105, 263, 248, 181, 156, 157, 104, + 0, 222, 129, 140, 126, 194, 260, 261, 125, 289, + 111, 274, 107, 112, 273, 188, 256, 264, 182, 174, + 106, 262, 180, 173, 161, 135, 148, 214, 170, 215, + 149, 185, 184, 186, 0, 0, 0, 246, 271, 290, + 116, 0, 254, 282, 285, 0, 218, 117, 141, 134, + 213, 139, 164, 281, 283, 284, 187, 113, 151, 243, + 160, 168, 221, 288, 202, 227, 120, 270, 244, 401, + 412, 407, 408, 405, 406, 404, 403, 402, 415, 393, + 394, 395, 396, 398, 0, 409, 410, 397, 99, 108, + 165, 287, 219, 138, 272, 0, 0, 128, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 101, 102, 109, 115, 121, 127, 133, 137, 143, 147, + 150, 153, 154, 155, 158, 172, 176, 177, 178, 179, + 189, 190, 191, 193, 196, 197, 198, 200, 201, 204, + 207, 208, 209, 210, 211, 212, 220, 223, 229, 230, + 231, 232, 233, 234, 235, 238, 239, 240, 241, 247, + 250, 258, 259, 269, 276, 279, 145, 266, 280, 195, + 0, 0, 0, 0, 357, 0, 0, 0, 131, 0, + 356, 0, 0, 0, 163, 0, 0, 0, 237, 123, + 171, 169, 255, 136, 132, 130, 122, 152, 175, 205, + 252, 199, 400, 166, 0, 0, 245, 183, 0, 0, + 0, 0, 0, 391, 392, 0, 0, 0, 0, 0, + 0, 0, 0, 61, 0, 0, 96, 97, 98, 378, + 377, 380, 381, 382, 383, 0, 0, 118, 379, 384, + 385, 386, 0, 0, 0, 0, 354, 371, 0, 399, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, + 369, 441, 0, 0, 0, 414, 0, 370, 0, 0, + 363, 364, 366, 365, 367, 372, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 142, 413, 0, 0, 308, + 0, 0, 411, 0, 216, 0, 249, 146, 162, 114, + 159, 100, 110, 0, 144, 192, 224, 228, 0, 0, + 0, 124, 0, 226, 203, 268, 0, 206, 225, 167, + 257, 217, 267, 277, 278, 253, 275, 286, 242, 103, + 251, 265, 119, 236, 0, 0, 0, 105, 263, 248, + 181, 156, 157, 104, 0, 222, 129, 140, 126, 194, + 260, 261, 125, 289, 111, 274, 107, 112, 273, 188, + 256, 264, 182, 174, 106, 262, 180, 173, 161, 135, + 148, 214, 170, 215, 149, 185, 184, 186, 0, 0, + 0, 246, 271, 290, 116, 0, 254, 282, 285, 0, + 218, 117, 141, 134, 213, 139, 164, 281, 283, 284, + 187, 113, 151, 243, 160, 168, 221, 288, 202, 227, + 120, 270, 244, 401, 412, 407, 408, 405, 406, 404, + 403, 402, 415, 393, 394, 395, 396, 398, 0, 409, + 410, 397, 99, 108, 165, 287, 219, 138, 272, 0, + 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 101, 102, 109, 115, 121, 127, + 133, 137, 143, 147, 150, 153, 154, 155, 158, 172, + 176, 177, 178, 179, 189, 190, 191, 193, 196, 197, + 198, 200, 201, 204, 207, 208, 209, 210, 211, 212, + 220, 223, 229, 230, 231, 232, 233, 234, 235, 238, + 239, 240, 241, 247, 250, 258, 259, 269, 276, 279, + 145, 266, 280, 195, 0, 0, 0, 0, 357, 0, + 0, 0, 131, 0, 356, 0, 0, 0, 163, 0, + 0, 0, 237, 123, 171, 169, 255, 136, 132, 130, + 122, 152, 175, 205, 252, 199, 400, 166, 0, 0, + 245, 183, 0, 0, 0, 0, 0, 391, 392, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, - 96, 97, 98, 367, 965, 369, 370, 371, 372, 0, - 0, 118, 368, 373, 374, 375, 0, 0, 0, 0, - 343, 360, 0, 388, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 357, 358, 430, 0, 0, 0, 403, - 0, 359, 0, 0, 352, 353, 355, 354, 356, 361, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, - 402, 0, 0, 297, 0, 0, 400, 0, 207, 0, - 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, - 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, - 0, 197, 216, 162, 246, 208, 256, 266, 267, 243, - 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, - 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, - 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, - 107, 112, 262, 181, 245, 253, 175, 168, 106, 251, - 173, 167, 156, 132, 144, 205, 164, 206, 145, 178, - 177, 179, 0, 0, 0, 237, 260, 279, 116, 0, - 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, - 159, 270, 272, 273, 180, 113, 147, 234, 155, 163, - 212, 277, 194, 218, 120, 259, 235, 390, 401, 396, - 397, 394, 395, 393, 392, 391, 404, 382, 383, 384, - 385, 387, 0, 398, 399, 386, 99, 108, 160, 276, - 210, 134, 261, 0, 0, 127, 0, 0, 0, 0, + 96, 97, 98, 378, 979, 380, 381, 382, 383, 0, + 0, 118, 379, 384, 385, 386, 0, 0, 0, 0, + 354, 371, 0, 399, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 368, 369, 441, 0, 0, 0, 414, + 0, 370, 0, 0, 363, 364, 366, 365, 367, 372, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, + 413, 0, 0, 308, 0, 0, 411, 0, 216, 0, + 249, 146, 162, 114, 159, 100, 110, 0, 144, 192, + 224, 228, 0, 0, 0, 124, 0, 226, 203, 268, + 0, 206, 225, 167, 257, 217, 267, 277, 278, 253, + 275, 286, 242, 103, 251, 265, 119, 236, 0, 0, + 0, 105, 263, 248, 181, 156, 157, 104, 0, 222, + 129, 140, 126, 194, 260, 261, 125, 289, 111, 274, + 107, 112, 273, 188, 256, 264, 182, 174, 106, 262, + 180, 173, 161, 135, 148, 214, 170, 215, 149, 185, + 184, 186, 0, 0, 0, 246, 271, 290, 116, 0, + 254, 282, 285, 0, 218, 117, 141, 134, 213, 139, + 164, 281, 283, 284, 187, 113, 151, 243, 160, 168, + 221, 288, 202, 227, 120, 270, 244, 401, 412, 407, + 408, 405, 406, 404, 403, 402, 415, 393, 394, 395, + 396, 398, 0, 409, 410, 397, 99, 108, 165, 287, + 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, - 109, 115, 121, 126, 130, 133, 139, 143, 146, 148, - 149, 150, 153, 166, 169, 170, 171, 172, 182, 183, - 184, 186, 189, 190, 191, 192, 193, 196, 198, 199, - 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, - 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, - 248, 258, 265, 268, 141, 255, 269, 411, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 188, 0, 0, 0, 0, 346, 0, 0, 0, 129, - 0, 345, 0, 0, 0, 158, 0, 0, 0, 228, - 122, 165, 389, 161, 0, 0, 236, 176, 0, 0, - 0, 0, 0, 380, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 61, 0, 0, 96, 97, 98, 367, - 366, 369, 370, 371, 372, 0, 0, 118, 368, 373, - 374, 375, 0, 0, 0, 0, 343, 360, 0, 388, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 357, - 358, 0, 0, 0, 0, 403, 0, 359, 0, 0, - 352, 353, 355, 354, 356, 361, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 138, 402, 0, 0, 297, - 0, 0, 400, 0, 207, 0, 240, 142, 157, 114, - 154, 100, 110, 0, 140, 185, 215, 219, 0, 0, - 0, 123, 0, 217, 195, 257, 0, 197, 216, 162, - 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, - 242, 254, 119, 227, 0, 0, 0, 105, 252, 239, - 174, 151, 152, 104, 0, 213, 128, 136, 125, 187, - 249, 250, 124, 278, 111, 263, 107, 112, 262, 181, - 245, 253, 175, 168, 106, 251, 173, 167, 156, 132, - 144, 205, 164, 206, 145, 178, 177, 179, 0, 0, - 0, 237, 260, 279, 116, 0, 244, 271, 274, 0, - 209, 117, 137, 131, 204, 135, 159, 270, 272, 273, - 180, 113, 147, 234, 155, 163, 212, 277, 194, 218, - 120, 259, 235, 390, 401, 396, 397, 394, 395, 393, - 392, 391, 404, 382, 383, 384, 385, 387, 0, 398, - 399, 386, 99, 108, 160, 276, 210, 134, 261, 0, - 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 101, 102, 109, 115, 121, 126, - 130, 133, 139, 143, 146, 148, 149, 150, 153, 166, - 169, 170, 171, 172, 182, 183, 184, 186, 189, 190, - 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, - 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, - 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, - 141, 255, 269, 188, 0, 0, 0, 0, 346, 0, - 0, 0, 129, 0, 345, 0, 0, 0, 158, 0, - 0, 0, 228, 122, 165, 389, 161, 0, 0, 236, - 176, 0, 0, 0, 0, 0, 380, 381, 0, 0, + 109, 115, 121, 127, 133, 137, 143, 147, 150, 153, + 154, 155, 158, 172, 176, 177, 178, 179, 189, 190, + 191, 193, 196, 197, 198, 200, 201, 204, 207, 208, + 209, 210, 211, 212, 220, 223, 229, 230, 231, 232, + 233, 234, 235, 238, 239, 240, 241, 247, 250, 258, + 259, 269, 276, 279, 145, 266, 280, 195, 0, 0, + 0, 0, 357, 0, 0, 0, 131, 0, 356, 0, + 0, 0, 163, 0, 0, 0, 237, 123, 171, 169, + 255, 136, 132, 130, 122, 152, 175, 205, 252, 199, + 400, 166, 0, 0, 245, 183, 0, 0, 0, 0, + 0, 391, 392, 0, 0, 0, 0, 0, 0, 0, + 0, 61, 0, 0, 96, 97, 98, 378, 976, 380, + 381, 382, 383, 0, 0, 118, 379, 384, 385, 386, + 0, 0, 0, 0, 354, 371, 0, 399, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 368, 369, 441, + 0, 0, 0, 414, 0, 370, 0, 0, 363, 364, + 366, 365, 367, 372, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 142, 413, 0, 0, 308, 0, 0, + 411, 0, 216, 0, 249, 146, 162, 114, 159, 100, + 110, 0, 144, 192, 224, 228, 0, 0, 0, 124, + 0, 226, 203, 268, 0, 206, 225, 167, 257, 217, + 267, 277, 278, 253, 275, 286, 242, 103, 251, 265, + 119, 236, 0, 0, 0, 105, 263, 248, 181, 156, + 157, 104, 0, 222, 129, 140, 126, 194, 260, 261, + 125, 289, 111, 274, 107, 112, 273, 188, 256, 264, + 182, 174, 106, 262, 180, 173, 161, 135, 148, 214, + 170, 215, 149, 185, 184, 186, 0, 0, 0, 246, + 271, 290, 116, 0, 254, 282, 285, 0, 218, 117, + 141, 134, 213, 139, 164, 281, 283, 284, 187, 113, + 151, 243, 160, 168, 221, 288, 202, 227, 120, 270, + 244, 401, 412, 407, 408, 405, 406, 404, 403, 402, + 415, 393, 394, 395, 396, 398, 0, 409, 410, 397, + 99, 108, 165, 287, 219, 138, 272, 0, 0, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 101, 102, 109, 115, 121, 127, 133, 137, + 143, 147, 150, 153, 154, 155, 158, 172, 176, 177, + 178, 179, 189, 190, 191, 193, 196, 197, 198, 200, + 201, 204, 207, 208, 209, 210, 211, 212, 220, 223, + 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, + 241, 247, 250, 258, 259, 269, 276, 279, 145, 266, + 280, 422, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 195, 0, 0, 0, 0, 357, + 0, 0, 0, 131, 0, 356, 0, 0, 0, 163, + 0, 0, 0, 237, 123, 171, 169, 255, 136, 132, + 130, 122, 152, 175, 205, 252, 199, 400, 166, 0, + 0, 245, 183, 0, 0, 0, 0, 0, 391, 392, + 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, + 0, 96, 97, 98, 378, 377, 380, 381, 382, 383, + 0, 0, 118, 379, 384, 385, 386, 0, 0, 0, + 0, 354, 371, 0, 399, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 368, 369, 0, 0, 0, 0, + 414, 0, 370, 0, 0, 363, 364, 366, 365, 367, + 372, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 142, 413, 0, 0, 308, 0, 0, 411, 0, 216, + 0, 249, 146, 162, 114, 159, 100, 110, 0, 144, + 192, 224, 228, 0, 0, 0, 124, 0, 226, 203, + 268, 0, 206, 225, 167, 257, 217, 267, 277, 278, + 253, 275, 286, 242, 103, 251, 265, 119, 236, 0, + 0, 0, 105, 263, 248, 181, 156, 157, 104, 0, + 222, 129, 140, 126, 194, 260, 261, 125, 289, 111, + 274, 107, 112, 273, 188, 256, 264, 182, 174, 106, + 262, 180, 173, 161, 135, 148, 214, 170, 215, 149, + 185, 184, 186, 0, 0, 0, 246, 271, 290, 116, + 0, 254, 282, 285, 0, 218, 117, 141, 134, 213, + 139, 164, 281, 283, 284, 187, 113, 151, 243, 160, + 168, 221, 288, 202, 227, 120, 270, 244, 401, 412, + 407, 408, 405, 406, 404, 403, 402, 415, 393, 394, + 395, 396, 398, 0, 409, 410, 397, 99, 108, 165, + 287, 219, 138, 272, 0, 0, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, + 102, 109, 115, 121, 127, 133, 137, 143, 147, 150, + 153, 154, 155, 158, 172, 176, 177, 178, 179, 189, + 190, 191, 193, 196, 197, 198, 200, 201, 204, 207, + 208, 209, 210, 211, 212, 220, 223, 229, 230, 231, + 232, 233, 234, 235, 238, 239, 240, 241, 247, 250, + 258, 259, 269, 276, 279, 145, 266, 280, 195, 0, + 0, 0, 0, 357, 0, 0, 0, 131, 0, 356, + 0, 0, 0, 163, 0, 0, 0, 237, 123, 171, + 169, 255, 136, 132, 130, 122, 152, 175, 205, 252, + 199, 400, 166, 0, 0, 245, 183, 0, 0, 0, + 0, 0, 391, 392, 0, 0, 0, 0, 0, 0, + 0, 0, 61, 0, 0, 96, 97, 98, 378, 377, + 380, 381, 382, 383, 0, 0, 118, 379, 384, 385, + 386, 0, 0, 0, 0, 354, 371, 0, 399, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 368, 369, + 0, 0, 0, 0, 414, 0, 370, 0, 0, 363, + 364, 366, 365, 367, 372, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 142, 413, 0, 0, 308, 0, + 0, 411, 0, 216, 0, 249, 146, 162, 114, 159, + 100, 110, 0, 144, 192, 224, 228, 0, 0, 0, + 124, 0, 226, 203, 268, 0, 206, 225, 167, 257, + 217, 267, 277, 278, 253, 275, 286, 242, 103, 251, + 265, 119, 236, 0, 0, 0, 105, 263, 248, 181, + 156, 157, 104, 0, 222, 129, 140, 126, 194, 260, + 261, 125, 289, 111, 274, 107, 112, 273, 188, 256, + 264, 182, 174, 106, 262, 180, 173, 161, 135, 148, + 214, 170, 215, 149, 185, 184, 186, 0, 0, 0, + 246, 271, 290, 116, 0, 254, 282, 285, 0, 218, + 117, 141, 134, 213, 139, 164, 281, 283, 284, 187, + 113, 151, 243, 160, 168, 221, 288, 202, 227, 120, + 270, 244, 401, 412, 407, 408, 405, 406, 404, 403, + 402, 415, 393, 394, 395, 396, 398, 0, 409, 410, + 397, 99, 108, 165, 287, 219, 138, 272, 0, 0, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 101, 102, 109, 115, 121, 127, 133, + 137, 143, 147, 150, 153, 154, 155, 158, 172, 176, + 177, 178, 179, 189, 190, 191, 193, 196, 197, 198, + 200, 201, 204, 207, 208, 209, 210, 211, 212, 220, + 223, 229, 230, 231, 232, 233, 234, 235, 238, 239, + 240, 241, 247, 250, 258, 259, 269, 276, 279, 145, + 266, 280, 195, 0, 0, 0, 0, 0, 0, 0, + 0, 131, 0, 0, 0, 0, 0, 163, 0, 0, + 0, 237, 123, 171, 169, 255, 136, 132, 130, 122, + 152, 175, 205, 252, 199, 400, 166, 0, 0, 245, + 183, 0, 0, 0, 0, 0, 391, 392, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 96, - 97, 98, 367, 366, 369, 370, 371, 372, 0, 0, - 118, 368, 373, 374, 375, 0, 0, 0, 0, 343, - 360, 0, 388, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 357, 358, 0, 0, 0, 0, 403, 0, - 359, 0, 0, 352, 353, 355, 354, 356, 361, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 138, 402, - 0, 0, 297, 0, 0, 400, 0, 207, 0, 240, - 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, - 219, 0, 0, 0, 123, 0, 217, 195, 257, 0, - 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, - 275, 233, 103, 242, 254, 119, 227, 0, 0, 0, - 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, - 136, 125, 187, 249, 250, 124, 278, 111, 263, 107, - 112, 262, 181, 245, 253, 175, 168, 106, 251, 173, - 167, 156, 132, 144, 205, 164, 206, 145, 178, 177, - 179, 0, 0, 0, 237, 260, 279, 116, 0, 244, - 271, 274, 0, 209, 117, 137, 131, 204, 135, 159, - 270, 272, 273, 180, 113, 147, 234, 155, 163, 212, - 277, 194, 218, 120, 259, 235, 390, 401, 396, 397, - 394, 395, 393, 392, 391, 404, 382, 383, 384, 385, - 387, 0, 398, 399, 386, 99, 108, 160, 276, 210, - 134, 261, 0, 0, 127, 0, 0, 0, 0, 0, + 97, 98, 378, 377, 380, 381, 382, 383, 0, 0, + 118, 379, 384, 385, 386, 0, 0, 0, 0, 0, + 371, 0, 399, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 368, 369, 0, 0, 0, 0, 414, 0, + 370, 0, 0, 363, 364, 366, 365, 367, 372, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 142, 413, + 0, 0, 308, 0, 0, 411, 0, 216, 0, 249, + 146, 162, 114, 159, 100, 110, 0, 144, 192, 224, + 228, 0, 0, 0, 124, 0, 226, 203, 268, 1695, + 206, 225, 167, 257, 217, 267, 277, 278, 253, 275, + 286, 242, 103, 251, 265, 119, 236, 0, 0, 0, + 105, 263, 248, 181, 156, 157, 104, 0, 222, 129, + 140, 126, 194, 260, 261, 125, 289, 111, 274, 107, + 112, 273, 188, 256, 264, 182, 174, 106, 262, 180, + 173, 161, 135, 148, 214, 170, 215, 149, 185, 184, + 186, 0, 0, 0, 246, 271, 290, 116, 0, 254, + 282, 285, 0, 218, 117, 141, 134, 213, 139, 164, + 281, 283, 284, 187, 113, 151, 243, 160, 168, 221, + 288, 202, 227, 120, 270, 244, 401, 412, 407, 408, + 405, 406, 404, 403, 402, 415, 393, 394, 395, 396, + 398, 0, 409, 410, 397, 99, 108, 165, 287, 219, + 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 109, - 115, 121, 126, 130, 133, 139, 143, 146, 148, 149, - 150, 153, 166, 169, 170, 171, 172, 182, 183, 184, - 186, 189, 190, 191, 192, 193, 196, 198, 199, 200, - 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, - 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, - 258, 265, 268, 141, 255, 269, 188, 0, 0, 0, - 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, - 0, 158, 0, 0, 0, 228, 122, 165, 389, 161, - 0, 0, 236, 176, 0, 0, 0, 0, 0, 380, - 381, 0, 0, 0, 0, 0, 0, 0, 0, 61, - 0, 0, 96, 97, 98, 367, 366, 369, 370, 371, - 372, 0, 0, 118, 368, 373, 374, 375, 0, 0, - 0, 0, 0, 360, 0, 388, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 357, 358, 0, 0, 0, - 0, 403, 0, 359, 0, 0, 352, 353, 355, 354, - 356, 361, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 138, 402, 0, 0, 297, 0, 0, 400, 0, - 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, - 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, - 195, 257, 1639, 197, 216, 162, 246, 208, 256, 266, - 267, 243, 264, 275, 233, 103, 242, 254, 119, 227, - 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, - 0, 213, 128, 136, 125, 187, 249, 250, 124, 278, - 111, 263, 107, 112, 262, 181, 245, 253, 175, 168, - 106, 251, 173, 167, 156, 132, 144, 205, 164, 206, - 145, 178, 177, 179, 0, 0, 0, 237, 260, 279, - 116, 0, 244, 271, 274, 0, 209, 117, 137, 131, - 204, 135, 159, 270, 272, 273, 180, 113, 147, 234, - 155, 163, 212, 277, 194, 218, 120, 259, 235, 390, - 401, 396, 397, 394, 395, 393, 392, 391, 404, 382, - 383, 384, 385, 387, 0, 398, 399, 386, 99, 108, - 160, 276, 210, 134, 261, 0, 0, 127, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 109, 115, 121, 126, 130, 133, 139, 143, - 146, 148, 149, 150, 153, 166, 169, 170, 171, 172, - 182, 183, 184, 186, 189, 190, 191, 192, 193, 196, - 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, - 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, - 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, - 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, - 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, - 165, 389, 161, 0, 0, 236, 176, 0, 0, 0, - 0, 0, 380, 381, 0, 0, 0, 0, 0, 0, - 0, 0, 61, 0, 418, 96, 97, 98, 367, 366, - 369, 370, 371, 372, 0, 0, 118, 368, 373, 374, - 375, 0, 0, 0, 0, 0, 360, 0, 388, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 357, 358, - 0, 0, 0, 0, 403, 0, 359, 0, 0, 352, - 353, 355, 354, 356, 361, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 138, 402, 0, 0, 297, 0, - 0, 400, 0, 207, 0, 240, 142, 157, 114, 154, - 100, 110, 0, 140, 185, 215, 219, 0, 0, 0, - 123, 0, 217, 195, 257, 0, 197, 216, 162, 246, - 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, - 254, 119, 227, 0, 0, 0, 105, 252, 239, 174, - 151, 152, 104, 0, 213, 128, 136, 125, 187, 249, - 250, 124, 278, 111, 263, 107, 112, 262, 181, 245, - 253, 175, 168, 106, 251, 173, 167, 156, 132, 144, - 205, 164, 206, 145, 178, 177, 179, 0, 0, 0, - 237, 260, 279, 116, 0, 244, 271, 274, 0, 209, - 117, 137, 131, 204, 135, 159, 270, 272, 273, 180, - 113, 147, 234, 155, 163, 212, 277, 194, 218, 120, - 259, 235, 390, 401, 396, 397, 394, 395, 393, 392, - 391, 404, 382, 383, 384, 385, 387, 0, 398, 399, - 386, 99, 108, 160, 276, 210, 134, 261, 0, 0, - 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 101, 102, 109, 115, 121, 126, 130, - 133, 139, 143, 146, 148, 149, 150, 153, 166, 169, - 170, 171, 172, 182, 183, 184, 186, 189, 190, 191, - 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, - 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, - 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, - 255, 269, 188, 0, 0, 0, 0, 0, 0, 0, - 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, - 0, 228, 122, 165, 389, 161, 0, 0, 236, 176, - 0, 0, 0, 0, 0, 380, 381, 0, 0, 0, - 0, 0, 0, 0, 0, 61, 0, 0, 96, 97, - 98, 367, 366, 369, 370, 371, 372, 0, 0, 118, - 368, 373, 374, 375, 0, 0, 0, 0, 0, 360, - 0, 388, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 357, 358, 0, 0, 0, 0, 403, 0, 359, - 0, 0, 352, 353, 355, 354, 356, 361, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 138, 402, 0, - 0, 297, 0, 0, 400, 0, 207, 0, 240, 142, - 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, - 0, 0, 0, 123, 0, 217, 195, 257, 0, 197, - 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, - 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, - 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, - 125, 187, 249, 250, 124, 278, 111, 263, 107, 112, - 262, 181, 245, 253, 175, 168, 106, 251, 173, 167, - 156, 132, 144, 205, 164, 206, 145, 178, 177, 179, - 0, 0, 0, 237, 260, 279, 116, 0, 244, 271, - 274, 0, 209, 117, 137, 131, 204, 135, 159, 270, - 272, 273, 180, 113, 147, 234, 155, 163, 212, 277, - 194, 218, 120, 259, 235, 390, 401, 396, 397, 394, - 395, 393, 392, 391, 404, 382, 383, 384, 385, 387, - 0, 398, 399, 386, 99, 108, 160, 276, 210, 134, - 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, + 115, 121, 127, 133, 137, 143, 147, 150, 153, 154, + 155, 158, 172, 176, 177, 178, 179, 189, 190, 191, + 193, 196, 197, 198, 200, 201, 204, 207, 208, 209, + 210, 211, 212, 220, 223, 229, 230, 231, 232, 233, + 234, 235, 238, 239, 240, 241, 247, 250, 258, 259, + 269, 276, 279, 145, 266, 280, 195, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, + 0, 163, 0, 0, 0, 237, 123, 171, 169, 255, + 136, 132, 130, 122, 152, 175, 205, 252, 199, 400, + 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, + 391, 392, 0, 0, 0, 0, 0, 0, 0, 0, + 61, 0, 429, 96, 97, 98, 378, 377, 380, 381, + 382, 383, 0, 0, 118, 379, 384, 385, 386, 0, + 0, 0, 0, 0, 371, 0, 399, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 368, 369, 0, 0, + 0, 0, 414, 0, 370, 0, 0, 363, 364, 366, + 365, 367, 372, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 142, 413, 0, 0, 308, 0, 0, 411, + 0, 216, 0, 249, 146, 162, 114, 159, 100, 110, + 0, 144, 192, 224, 228, 0, 0, 0, 124, 0, + 226, 203, 268, 0, 206, 225, 167, 257, 217, 267, + 277, 278, 253, 275, 286, 242, 103, 251, 265, 119, + 236, 0, 0, 0, 105, 263, 248, 181, 156, 157, + 104, 0, 222, 129, 140, 126, 194, 260, 261, 125, + 289, 111, 274, 107, 112, 273, 188, 256, 264, 182, + 174, 106, 262, 180, 173, 161, 135, 148, 214, 170, + 215, 149, 185, 184, 186, 0, 0, 0, 246, 271, + 290, 116, 0, 254, 282, 285, 0, 218, 117, 141, + 134, 213, 139, 164, 281, 283, 284, 187, 113, 151, + 243, 160, 168, 221, 288, 202, 227, 120, 270, 244, + 401, 412, 407, 408, 405, 406, 404, 403, 402, 415, + 393, 394, 395, 396, 398, 0, 409, 410, 397, 99, + 108, 165, 287, 219, 138, 272, 0, 0, 128, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 101, 102, 109, 115, 121, 127, 133, 137, 143, + 147, 150, 153, 154, 155, 158, 172, 176, 177, 178, + 179, 189, 190, 191, 193, 196, 197, 198, 200, 201, + 204, 207, 208, 209, 210, 211, 212, 220, 223, 229, + 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, + 247, 250, 258, 259, 269, 276, 279, 145, 266, 280, + 195, 0, 0, 0, 0, 0, 0, 0, 0, 131, + 0, 0, 0, 0, 0, 163, 0, 0, 0, 237, + 123, 171, 169, 255, 136, 132, 130, 122, 152, 175, + 205, 252, 199, 400, 166, 0, 0, 245, 183, 0, + 0, 0, 0, 0, 391, 392, 0, 0, 0, 0, + 0, 0, 0, 0, 61, 0, 0, 96, 97, 98, + 378, 377, 380, 381, 382, 383, 0, 0, 118, 379, + 384, 385, 386, 0, 0, 0, 0, 0, 371, 0, + 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 368, 369, 0, 0, 0, 0, 414, 0, 370, 0, + 0, 363, 364, 366, 365, 367, 372, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 142, 413, 0, 0, + 308, 0, 0, 411, 0, 216, 0, 249, 146, 162, + 114, 159, 100, 110, 0, 144, 192, 224, 228, 0, + 0, 0, 124, 0, 226, 203, 268, 0, 206, 225, + 167, 257, 217, 267, 277, 278, 253, 275, 286, 242, + 103, 251, 265, 119, 236, 0, 0, 0, 105, 263, + 248, 181, 156, 157, 104, 0, 222, 129, 140, 126, + 194, 260, 261, 125, 289, 111, 274, 107, 112, 273, + 188, 256, 264, 182, 174, 106, 262, 180, 173, 161, + 135, 148, 214, 170, 215, 149, 185, 184, 186, 0, + 0, 0, 246, 271, 290, 116, 0, 254, 282, 285, + 0, 218, 117, 141, 134, 213, 139, 164, 281, 283, + 284, 187, 113, 151, 243, 160, 168, 221, 288, 202, + 227, 120, 270, 244, 401, 412, 407, 408, 405, 406, + 404, 403, 402, 415, 393, 394, 395, 396, 398, 0, + 409, 410, 397, 99, 108, 165, 287, 219, 138, 272, + 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 101, 102, 109, 115, - 121, 126, 130, 133, 139, 143, 146, 148, 149, 150, - 153, 166, 169, 170, 171, 172, 182, 183, 184, 186, - 189, 190, 191, 192, 193, 196, 198, 199, 200, 201, - 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, - 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, - 265, 268, 141, 255, 269, 188, 0, 0, 0, 0, - 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, - 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, - 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 101, 102, 109, 115, 121, + 127, 133, 137, 143, 147, 150, 153, 154, 155, 158, + 172, 176, 177, 178, 179, 189, 190, 191, 193, 196, + 197, 198, 200, 201, 204, 207, 208, 209, 210, 211, + 212, 220, 223, 229, 230, 231, 232, 233, 234, 235, + 238, 239, 240, 241, 247, 250, 258, 259, 269, 276, + 279, 145, 266, 280, 195, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 0, 0, 0, 0, 0, 163, + 0, 0, 0, 237, 123, 171, 169, 255, 136, 132, + 130, 122, 152, 175, 205, 252, 199, 0, 166, 0, + 0, 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 666, 665, 675, 676, 668, 669, 670, 671, 672, 673, - 674, 667, 0, 0, 677, 0, 0, 0, 0, 0, + 677, 676, 686, 687, 679, 680, 681, 682, 683, 684, + 685, 678, 0, 0, 688, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 138, 0, 0, 0, 297, 0, 0, 0, 0, 207, - 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, - 185, 215, 219, 0, 0, 0, 123, 0, 217, 195, - 257, 0, 197, 216, 162, 246, 208, 256, 266, 267, - 243, 264, 275, 233, 103, 242, 254, 119, 227, 0, - 0, 0, 105, 252, 239, 174, 151, 152, 104, 0, - 213, 128, 136, 125, 187, 249, 250, 124, 278, 111, - 263, 107, 112, 262, 181, 245, 253, 175, 168, 106, - 251, 173, 167, 156, 132, 144, 205, 164, 206, 145, - 178, 177, 179, 0, 0, 0, 237, 260, 279, 116, - 0, 244, 271, 274, 0, 209, 117, 137, 131, 204, - 135, 159, 270, 272, 273, 180, 113, 147, 234, 155, - 163, 212, 277, 194, 218, 120, 259, 235, 0, 0, + 142, 0, 0, 0, 308, 0, 0, 0, 0, 216, + 0, 249, 146, 162, 114, 159, 100, 110, 0, 144, + 192, 224, 228, 0, 0, 0, 124, 0, 226, 203, + 268, 0, 206, 225, 167, 257, 217, 267, 277, 278, + 253, 275, 286, 242, 103, 251, 265, 119, 236, 0, + 0, 0, 105, 263, 248, 181, 156, 157, 104, 0, + 222, 129, 140, 126, 194, 260, 261, 125, 289, 111, + 274, 107, 112, 273, 188, 256, 264, 182, 174, 106, + 262, 180, 173, 161, 135, 148, 214, 170, 215, 149, + 185, 184, 186, 0, 0, 0, 246, 271, 290, 116, + 0, 254, 282, 285, 0, 218, 117, 141, 134, 213, + 139, 164, 281, 283, 284, 187, 113, 151, 243, 160, + 168, 221, 288, 202, 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 99, 108, 160, - 276, 210, 134, 261, 0, 0, 127, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 99, 108, 165, + 287, 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, - 102, 109, 115, 121, 126, 130, 133, 139, 143, 146, - 148, 149, 150, 153, 166, 169, 170, 171, 172, 182, - 183, 184, 186, 189, 190, 191, 192, 193, 196, 198, - 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, - 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, - 247, 248, 258, 265, 268, 141, 255, 269, 188, 0, - 0, 0, 762, 0, 0, 0, 0, 129, 0, 0, - 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, - 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96, 97, 98, 0, 764, 0, - 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, - 0, 655, 656, 654, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 657, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 138, 0, 0, 0, 297, 0, 0, - 0, 0, 207, 0, 240, 142, 157, 114, 154, 100, - 110, 0, 140, 185, 215, 219, 0, 0, 0, 123, - 0, 217, 195, 257, 0, 197, 216, 162, 246, 208, - 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, - 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, - 152, 104, 0, 213, 128, 136, 125, 187, 249, 250, - 124, 278, 111, 263, 107, 112, 262, 181, 245, 253, - 175, 168, 106, 251, 173, 167, 156, 132, 144, 205, - 164, 206, 145, 178, 177, 179, 0, 0, 0, 237, - 260, 279, 116, 0, 244, 271, 274, 0, 209, 117, - 137, 131, 204, 135, 159, 270, 272, 273, 180, 113, - 147, 234, 155, 163, 212, 277, 194, 218, 120, 259, - 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 99, 108, 160, 276, 210, 134, 261, 0, 0, 127, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 101, 102, 109, 115, 121, 126, 130, 133, - 139, 143, 146, 148, 149, 150, 153, 166, 169, 170, - 171, 172, 182, 183, 184, 186, 189, 190, 191, 192, - 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, - 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, - 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, - 269, 188, 0, 0, 0, 0, 0, 0, 0, 0, - 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, - 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, - 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, - 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, + 102, 109, 115, 121, 127, 133, 137, 143, 147, 150, + 153, 154, 155, 158, 172, 176, 177, 178, 179, 189, + 190, 191, 193, 196, 197, 198, 200, 201, 204, 207, + 208, 209, 210, 211, 212, 220, 223, 229, 230, 231, + 232, 233, 234, 235, 238, 239, 240, 241, 247, 250, + 258, 259, 269, 276, 279, 145, 266, 280, 195, 0, + 0, 0, 773, 0, 0, 0, 0, 131, 0, 0, + 0, 0, 0, 163, 0, 0, 0, 237, 123, 171, + 169, 255, 136, 132, 130, 122, 152, 175, 205, 252, + 199, 0, 166, 0, 0, 245, 183, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 96, 97, 98, 0, 775, + 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, + 0, 0, 666, 667, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 668, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 142, 0, 0, 0, 308, 0, + 0, 0, 0, 216, 0, 249, 146, 162, 114, 159, + 100, 110, 0, 144, 192, 224, 228, 0, 0, 0, + 124, 0, 226, 203, 268, 0, 206, 225, 167, 257, + 217, 267, 277, 278, 253, 275, 286, 242, 103, 251, + 265, 119, 236, 0, 0, 0, 105, 263, 248, 181, + 156, 157, 104, 0, 222, 129, 140, 126, 194, 260, + 261, 125, 289, 111, 274, 107, 112, 273, 188, 256, + 264, 182, 174, 106, 262, 180, 173, 161, 135, 148, + 214, 170, 215, 149, 185, 184, 186, 0, 0, 0, + 246, 271, 290, 116, 0, 254, 282, 285, 0, 218, + 117, 141, 134, 213, 139, 164, 281, 283, 284, 187, + 113, 151, 243, 160, 168, 221, 288, 202, 227, 120, + 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 99, 108, 165, 287, 219, 138, 272, 0, 0, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 101, 102, 109, 115, 121, 127, 133, + 137, 143, 147, 150, 153, 154, 155, 158, 172, 176, + 177, 178, 179, 189, 190, 191, 193, 196, 197, 198, + 200, 201, 204, 207, 208, 209, 210, 211, 212, 220, + 223, 229, 230, 231, 232, 233, 234, 235, 238, 239, + 240, 241, 247, 250, 258, 259, 269, 276, 279, 145, + 266, 280, 195, 0, 0, 0, 0, 0, 0, 0, + 0, 131, 0, 0, 0, 0, 0, 163, 0, 0, + 0, 237, 123, 171, 169, 255, 136, 132, 130, 122, + 152, 175, 205, 252, 199, 0, 166, 0, 0, 245, + 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, + 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, + 118, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 138, 90, 91, 0, - 87, 0, 0, 0, 92, 207, 0, 240, 142, 157, - 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, - 0, 0, 123, 0, 217, 195, 257, 0, 197, 216, - 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, - 103, 242, 254, 119, 227, 0, 0, 0, 105, 252, - 239, 174, 151, 152, 104, 0, 213, 128, 136, 125, - 187, 249, 250, 124, 278, 111, 263, 107, 112, 262, - 181, 245, 253, 175, 168, 106, 251, 173, 167, 156, - 132, 144, 205, 164, 206, 145, 178, 177, 179, 0, - 0, 0, 237, 260, 279, 116, 0, 244, 271, 274, - 0, 209, 117, 137, 131, 204, 135, 159, 270, 272, - 273, 180, 113, 147, 234, 155, 163, 212, 277, 194, - 218, 120, 259, 235, 0, 89, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 142, 90, + 91, 0, 87, 0, 0, 0, 92, 216, 0, 249, + 146, 162, 114, 159, 100, 110, 0, 144, 192, 224, + 228, 0, 0, 0, 124, 0, 226, 203, 268, 0, + 206, 225, 167, 257, 217, 267, 277, 278, 253, 275, + 286, 242, 103, 251, 265, 119, 236, 0, 0, 0, + 105, 263, 248, 181, 156, 157, 104, 0, 222, 129, + 140, 126, 194, 260, 261, 125, 289, 111, 274, 107, + 112, 273, 188, 256, 264, 182, 174, 106, 262, 180, + 173, 161, 135, 148, 214, 170, 215, 149, 185, 184, + 186, 0, 0, 0, 246, 271, 290, 116, 0, 254, + 282, 285, 0, 218, 117, 141, 134, 213, 139, 164, + 281, 283, 284, 187, 113, 151, 243, 160, 168, 221, + 288, 202, 227, 120, 270, 244, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 99, 108, 160, 276, 210, 134, 261, - 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 99, 108, 165, 287, 219, + 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 109, 115, 121, - 126, 130, 133, 139, 143, 146, 148, 149, 150, 153, - 166, 169, 170, 171, 172, 182, 183, 184, 186, 189, - 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, - 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, - 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, - 268, 141, 255, 269, 188, 0, 0, 0, 0, 0, - 0, 0, 0, 129, 1080, 0, 0, 0, 0, 158, - 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, - 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 101, 102, 109, + 115, 121, 127, 133, 137, 143, 147, 150, 153, 154, + 155, 158, 172, 176, 177, 178, 179, 189, 190, 191, + 193, 196, 197, 198, 200, 201, 204, 207, 208, 209, + 210, 211, 212, 220, 223, 229, 230, 231, 232, 233, + 234, 235, 238, 239, 240, 241, 247, 250, 258, 259, + 269, 276, 279, 145, 266, 280, 195, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 1091, 0, 0, 0, + 0, 163, 0, 0, 0, 237, 123, 171, 169, 255, + 136, 132, 130, 122, 152, 175, 205, 252, 199, 0, + 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, - 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, + 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, - 0, 0, 1079, 297, 0, 0, 0, 1076, 1074, 0, - 1075, 142, 157, 114, 154, 100, 110, 1072, 1078, 185, - 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, - 0, 197, 216, 162, 246, 208, 256, 266, 267, 243, - 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, - 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, - 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, - 107, 112, 262, 181, 245, 253, 175, 168, 106, 251, - 173, 167, 156, 132, 144, 205, 164, 206, 145, 178, - 177, 179, 0, 0, 0, 237, 260, 279, 116, 0, - 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, - 159, 270, 272, 273, 180, 113, 147, 234, 155, 163, - 212, 277, 194, 218, 120, 259, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 99, 108, 160, 276, - 210, 134, 261, 0, 0, 127, 0, 0, 0, 0, + 0, 0, 142, 0, 0, 1090, 308, 0, 0, 0, + 1087, 1085, 0, 1086, 146, 162, 114, 159, 100, 110, + 1083, 1089, 192, 224, 228, 0, 0, 0, 124, 0, + 226, 203, 268, 0, 206, 225, 167, 257, 217, 267, + 277, 278, 253, 275, 286, 242, 103, 251, 265, 119, + 236, 0, 0, 0, 105, 263, 248, 181, 156, 157, + 104, 0, 222, 129, 140, 126, 194, 260, 261, 125, + 289, 111, 274, 107, 112, 273, 188, 256, 264, 182, + 174, 106, 262, 180, 173, 161, 135, 148, 214, 170, + 215, 149, 185, 184, 186, 0, 0, 0, 246, 271, + 290, 116, 0, 254, 282, 285, 0, 218, 117, 141, + 134, 213, 139, 164, 281, 283, 284, 187, 113, 151, + 243, 160, 168, 221, 288, 202, 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, - 109, 115, 121, 126, 130, 133, 139, 143, 146, 148, - 149, 150, 153, 166, 169, 170, 171, 172, 182, 183, - 184, 186, 189, 190, 191, 192, 193, 196, 198, 199, - 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, - 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, - 248, 258, 265, 268, 141, 255, 269, 188, 0, 0, - 0, 1039, 0, 0, 0, 0, 129, 0, 0, 0, - 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, - 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 96, 97, 98, 0, 1041, 0, 0, - 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, + 108, 165, 287, 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 101, 102, 109, 115, 121, 127, 133, 137, 143, + 147, 150, 153, 154, 155, 158, 172, 176, 177, 178, + 179, 189, 190, 191, 193, 196, 197, 198, 200, 201, + 204, 207, 208, 209, 210, 211, 212, 220, 223, 229, + 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, + 247, 250, 258, 259, 269, 276, 279, 145, 266, 280, + 195, 0, 0, 0, 1050, 0, 0, 0, 0, 131, + 0, 0, 0, 0, 0, 163, 0, 0, 0, 237, + 123, 171, 169, 255, 136, 132, 130, 122, 152, 175, + 205, 252, 199, 0, 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, + 0, 1052, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 138, 0, 0, 0, 297, 0, 0, 0, - 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, - 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, - 217, 195, 257, 0, 197, 216, 162, 246, 208, 256, - 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, - 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, - 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, - 278, 111, 263, 107, 112, 262, 181, 245, 253, 175, - 168, 106, 251, 173, 167, 156, 132, 144, 205, 164, - 206, 145, 178, 177, 179, 0, 0, 0, 237, 260, - 279, 116, 0, 244, 271, 274, 0, 209, 117, 137, - 131, 204, 135, 159, 270, 272, 273, 180, 113, 147, - 234, 155, 163, 212, 277, 194, 218, 120, 259, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, - 108, 160, 276, 210, 134, 261, 0, 0, 127, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 109, 115, 121, 126, 130, 133, 139, - 143, 146, 148, 149, 150, 153, 166, 169, 170, 171, - 172, 182, 183, 184, 186, 189, 190, 191, 192, 193, - 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, - 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, - 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, - 0, 0, 129, 0, 0, 0, 0, 0, 158, 0, - 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, - 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 61, 0, 0, 96, - 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, + 308, 0, 0, 0, 0, 216, 0, 249, 146, 162, + 114, 159, 100, 110, 0, 144, 192, 224, 228, 0, + 0, 0, 124, 0, 226, 203, 268, 0, 206, 225, + 167, 257, 217, 267, 277, 278, 253, 275, 286, 242, + 103, 251, 265, 119, 236, 0, 0, 0, 105, 263, + 248, 181, 156, 157, 104, 0, 222, 129, 140, 126, + 194, 260, 261, 125, 289, 111, 274, 107, 112, 273, + 188, 256, 264, 182, 174, 106, 262, 180, 173, 161, + 135, 148, 214, 170, 215, 149, 185, 184, 186, 0, + 0, 0, 246, 271, 290, 116, 0, 254, 282, 285, + 0, 218, 117, 141, 134, 213, 139, 164, 281, 283, + 284, 187, 113, 151, 243, 160, 168, 221, 288, 202, + 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 99, 108, 165, 287, 219, 138, 272, + 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, - 0, 0, 297, 0, 0, 0, 0, 207, 0, 240, - 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, - 219, 0, 0, 0, 123, 0, 217, 195, 257, 0, - 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, - 275, 233, 103, 242, 254, 119, 227, 0, 0, 0, - 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, - 136, 125, 187, 249, 250, 124, 278, 111, 263, 107, - 112, 262, 181, 245, 253, 175, 168, 106, 251, 173, - 167, 156, 132, 144, 205, 164, 206, 145, 178, 177, - 179, 0, 0, 0, 237, 260, 279, 116, 0, 244, - 271, 274, 0, 209, 117, 137, 131, 204, 135, 159, - 270, 272, 273, 180, 113, 147, 234, 155, 163, 212, - 277, 194, 218, 120, 259, 235, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 101, 102, 109, 115, 121, + 127, 133, 137, 143, 147, 150, 153, 154, 155, 158, + 172, 176, 177, 178, 179, 189, 190, 191, 193, 196, + 197, 198, 200, 201, 204, 207, 208, 209, 210, 211, + 212, 220, 223, 229, 230, 231, 232, 233, 234, 235, + 238, 239, 240, 241, 247, 250, 258, 259, 269, 276, + 279, 145, 266, 280, 31, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, + 0, 0, 163, 0, 0, 0, 237, 123, 171, 169, + 255, 136, 132, 130, 122, 152, 175, 205, 252, 199, + 0, 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 99, 108, 160, 276, 210, - 134, 261, 0, 0, 127, 0, 0, 0, 0, 0, + 0, 61, 0, 0, 96, 97, 98, 0, 0, 0, + 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 101, 102, 109, - 115, 121, 126, 130, 133, 139, 143, 146, 148, 149, - 150, 153, 166, 169, 170, 171, 172, 182, 183, 184, - 186, 189, 190, 191, 192, 193, 196, 198, 199, 200, - 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, - 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, - 258, 265, 268, 141, 255, 269, 188, 0, 0, 0, - 1039, 0, 0, 0, 0, 129, 0, 0, 0, 0, - 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, - 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 97, 98, 0, 1041, 0, 0, 0, - 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 142, 0, 0, 0, 308, 0, 0, + 0, 0, 216, 0, 249, 146, 162, 114, 159, 100, + 110, 0, 144, 192, 224, 228, 0, 0, 0, 124, + 0, 226, 203, 268, 0, 206, 225, 167, 257, 217, + 267, 277, 278, 253, 275, 286, 242, 103, 251, 265, + 119, 236, 0, 0, 0, 105, 263, 248, 181, 156, + 157, 104, 0, 222, 129, 140, 126, 194, 260, 261, + 125, 289, 111, 274, 107, 112, 273, 188, 256, 264, + 182, 174, 106, 262, 180, 173, 161, 135, 148, 214, + 170, 215, 149, 185, 184, 186, 0, 0, 0, 246, + 271, 290, 116, 0, 254, 282, 285, 0, 218, 117, + 141, 134, 213, 139, 164, 281, 283, 284, 187, 113, + 151, 243, 160, 168, 221, 288, 202, 227, 120, 270, + 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 138, 0, 0, 0, 297, 0, 0, 0, 0, - 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, - 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, - 195, 257, 0, 1037, 216, 162, 246, 208, 256, 266, - 267, 243, 264, 275, 233, 103, 242, 254, 119, 227, - 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, - 0, 213, 128, 136, 125, 187, 249, 250, 124, 278, - 111, 263, 107, 112, 262, 181, 245, 253, 175, 168, - 106, 251, 173, 167, 156, 132, 144, 205, 164, 206, - 145, 178, 177, 179, 0, 0, 0, 237, 260, 279, - 116, 0, 244, 271, 274, 0, 209, 117, 137, 131, - 204, 135, 159, 270, 272, 273, 180, 113, 147, 234, - 155, 163, 212, 277, 194, 218, 120, 259, 235, 0, + 99, 108, 165, 287, 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 99, 108, - 160, 276, 210, 134, 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 101, 102, 109, 115, 121, 127, 133, 137, + 143, 147, 150, 153, 154, 155, 158, 172, 176, 177, + 178, 179, 189, 190, 191, 193, 196, 197, 198, 200, + 201, 204, 207, 208, 209, 210, 211, 212, 220, 223, + 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, + 241, 247, 250, 258, 259, 269, 276, 279, 145, 266, + 280, 195, 0, 0, 0, 1050, 0, 0, 0, 0, + 131, 0, 0, 0, 0, 0, 163, 0, 0, 0, + 237, 123, 171, 169, 255, 136, 132, 130, 122, 152, + 175, 205, 252, 199, 0, 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 109, 115, 121, 126, 130, 133, 139, 143, - 146, 148, 149, 150, 153, 166, 169, 170, 171, 172, - 182, 183, 184, 186, 189, 190, 191, 192, 193, 196, - 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, - 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, - 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, - 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, - 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, - 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, + 98, 0, 1052, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 97, 98, 0, 0, - 1004, 0, 0, 1005, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, + 0, 308, 0, 0, 0, 0, 216, 0, 249, 146, + 162, 114, 159, 100, 110, 0, 144, 192, 224, 228, + 0, 0, 0, 124, 0, 226, 203, 268, 0, 1048, + 225, 167, 257, 217, 267, 277, 278, 253, 275, 286, + 242, 103, 251, 265, 119, 236, 0, 0, 0, 105, + 263, 248, 181, 156, 157, 104, 0, 222, 129, 140, + 126, 194, 260, 261, 125, 289, 111, 274, 107, 112, + 273, 188, 256, 264, 182, 174, 106, 262, 180, 173, + 161, 135, 148, 214, 170, 215, 149, 185, 184, 186, + 0, 0, 0, 246, 271, 290, 116, 0, 254, 282, + 285, 0, 218, 117, 141, 134, 213, 139, 164, 281, + 283, 284, 187, 113, 151, 243, 160, 168, 221, 288, + 202, 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 138, 0, 0, 0, 297, 0, - 0, 0, 0, 207, 0, 240, 142, 157, 114, 154, - 100, 110, 0, 140, 185, 215, 219, 0, 0, 0, - 123, 0, 217, 195, 257, 0, 197, 216, 162, 246, - 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, - 254, 119, 227, 0, 0, 0, 105, 252, 239, 174, - 151, 152, 104, 0, 213, 128, 136, 125, 187, 249, - 250, 124, 278, 111, 263, 107, 112, 262, 181, 245, - 253, 175, 168, 106, 251, 173, 167, 156, 132, 144, - 205, 164, 206, 145, 178, 177, 179, 0, 0, 0, - 237, 260, 279, 116, 0, 244, 271, 274, 0, 209, - 117, 137, 131, 204, 135, 159, 270, 272, 273, 180, - 113, 147, 234, 155, 163, 212, 277, 194, 218, 120, - 259, 235, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 99, 108, 165, 287, 219, 138, + 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 99, 108, 160, 276, 210, 134, 261, 0, 0, - 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 101, 102, 109, 115, + 121, 127, 133, 137, 143, 147, 150, 153, 154, 155, + 158, 172, 176, 177, 178, 179, 189, 190, 191, 193, + 196, 197, 198, 200, 201, 204, 207, 208, 209, 210, + 211, 212, 220, 223, 229, 230, 231, 232, 233, 234, + 235, 238, 239, 240, 241, 247, 250, 258, 259, 269, + 276, 279, 145, 266, 280, 195, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, + 163, 0, 0, 0, 237, 123, 171, 169, 255, 136, + 132, 130, 122, 152, 175, 205, 252, 199, 0, 166, + 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 96, 97, 98, 0, 0, 1015, 0, 0, + 1016, 0, 0, 118, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 142, 0, 0, 0, 308, 0, 0, 0, 0, + 216, 0, 249, 146, 162, 114, 159, 100, 110, 0, + 144, 192, 224, 228, 0, 0, 0, 124, 0, 226, + 203, 268, 0, 206, 225, 167, 257, 217, 267, 277, + 278, 253, 275, 286, 242, 103, 251, 265, 119, 236, + 0, 0, 0, 105, 263, 248, 181, 156, 157, 104, + 0, 222, 129, 140, 126, 194, 260, 261, 125, 289, + 111, 274, 107, 112, 273, 188, 256, 264, 182, 174, + 106, 262, 180, 173, 161, 135, 148, 214, 170, 215, + 149, 185, 184, 186, 0, 0, 0, 246, 271, 290, + 116, 0, 254, 282, 285, 0, 218, 117, 141, 134, + 213, 139, 164, 281, 283, 284, 187, 113, 151, 243, + 160, 168, 221, 288, 202, 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 101, 102, 109, 115, 121, 126, 130, - 133, 139, 143, 146, 148, 149, 150, 153, 166, 169, - 170, 171, 172, 182, 183, 184, 186, 189, 190, 191, - 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, - 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, - 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, - 255, 269, 188, 0, 0, 0, 0, 0, 0, 0, - 0, 129, 0, 796, 0, 0, 0, 158, 0, 0, - 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, + 0, 0, 0, 0, 0, 0, 0, 0, 99, 108, + 165, 287, 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, - 98, 0, 795, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 101, 102, 109, 115, 121, 127, 133, 137, 143, 147, + 150, 153, 154, 155, 158, 172, 176, 177, 178, 179, + 189, 190, 191, 193, 196, 197, 198, 200, 201, 204, + 207, 208, 209, 210, 211, 212, 220, 223, 229, 230, + 231, 232, 233, 234, 235, 238, 239, 240, 241, 247, + 250, 258, 259, 269, 276, 279, 145, 266, 280, 195, + 0, 0, 0, 0, 0, 0, 0, 0, 131, 0, + 807, 0, 0, 0, 163, 0, 0, 0, 237, 123, + 171, 169, 255, 136, 132, 130, 122, 152, 175, 205, + 252, 199, 0, 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 97, 98, 0, + 806, 0, 0, 0, 0, 0, 0, 118, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 142, 0, 0, 0, 308, + 0, 0, 0, 0, 216, 0, 249, 146, 162, 114, + 159, 100, 110, 0, 144, 192, 224, 228, 0, 0, + 0, 124, 0, 226, 203, 268, 0, 206, 225, 167, + 257, 217, 267, 277, 278, 253, 275, 286, 242, 103, + 251, 265, 119, 236, 0, 0, 0, 105, 263, 248, + 181, 156, 157, 104, 0, 222, 129, 140, 126, 194, + 260, 261, 125, 289, 111, 274, 107, 112, 273, 188, + 256, 264, 182, 174, 106, 262, 180, 173, 161, 135, + 148, 214, 170, 215, 149, 185, 184, 186, 0, 0, + 0, 246, 271, 290, 116, 0, 254, 282, 285, 0, + 218, 117, 141, 134, 213, 139, 164, 281, 283, 284, + 187, 113, 151, 243, 160, 168, 221, 288, 202, 227, + 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 99, 108, 165, 287, 219, 138, 272, 0, + 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 101, 102, 109, 115, 121, 127, + 133, 137, 143, 147, 150, 153, 154, 155, 158, 172, + 176, 177, 178, 179, 189, 190, 191, 193, 196, 197, + 198, 200, 201, 204, 207, 208, 209, 210, 211, 212, + 220, 223, 229, 230, 231, 232, 233, 234, 235, 238, + 239, 240, 241, 247, 250, 258, 259, 269, 276, 279, + 145, 266, 280, 195, 0, 0, 0, 0, 0, 0, + 0, 0, 131, 0, 0, 0, 0, 0, 163, 0, + 0, 0, 237, 123, 171, 169, 255, 136, 132, 130, + 122, 152, 175, 205, 252, 199, 0, 166, 0, 0, + 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 429, + 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, + 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, - 0, 297, 0, 0, 0, 0, 207, 0, 240, 142, - 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, - 0, 0, 0, 123, 0, 217, 195, 257, 0, 197, - 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, - 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, - 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, - 125, 187, 249, 250, 124, 278, 111, 263, 107, 112, - 262, 181, 245, 253, 175, 168, 106, 251, 173, 167, - 156, 132, 144, 205, 164, 206, 145, 178, 177, 179, - 0, 0, 0, 237, 260, 279, 116, 0, 244, 271, - 274, 0, 209, 117, 137, 131, 204, 135, 159, 270, - 272, 273, 180, 113, 147, 234, 155, 163, 212, 277, - 194, 218, 120, 259, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 99, 108, 160, 276, 210, 134, - 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, + 0, 0, 0, 308, 0, 0, 0, 0, 216, 0, + 249, 146, 162, 114, 159, 100, 110, 0, 144, 192, + 224, 228, 0, 0, 0, 124, 0, 226, 203, 268, + 0, 206, 225, 167, 257, 217, 267, 277, 278, 253, + 275, 286, 242, 103, 251, 265, 119, 236, 0, 0, + 0, 105, 263, 248, 181, 156, 157, 104, 0, 222, + 129, 140, 126, 194, 260, 261, 125, 289, 111, 274, + 107, 112, 273, 188, 256, 264, 182, 174, 106, 262, + 180, 173, 161, 135, 148, 214, 170, 215, 149, 185, + 184, 186, 0, 0, 0, 246, 271, 290, 116, 0, + 254, 282, 285, 0, 218, 117, 141, 134, 213, 139, + 164, 281, 283, 284, 187, 113, 151, 243, 160, 168, + 221, 288, 202, 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 101, 102, 109, 115, - 121, 126, 130, 133, 139, 143, 146, 148, 149, 150, - 153, 166, 169, 170, 171, 172, 182, 183, 184, 186, - 189, 190, 191, 192, 193, 196, 198, 199, 200, 201, - 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, - 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, - 265, 268, 141, 255, 269, 188, 0, 0, 0, 0, - 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, - 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, - 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 418, 96, 97, 98, 0, 0, 0, 0, 0, 0, - 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 99, 108, 165, 287, + 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, + 109, 115, 121, 127, 133, 137, 143, 147, 150, 153, + 154, 155, 158, 172, 176, 177, 178, 179, 189, 190, + 191, 193, 196, 197, 198, 200, 201, 204, 207, 208, + 209, 210, 211, 212, 220, 223, 229, 230, 231, 232, + 233, 234, 235, 238, 239, 240, 241, 247, 250, 258, + 259, 269, 276, 279, 145, 266, 280, 195, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, + 0, 0, 163, 0, 0, 0, 237, 123, 171, 169, + 255, 136, 132, 130, 122, 152, 175, 205, 252, 199, + 0, 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 61, 0, 0, 96, 97, 98, 0, 0, 0, + 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 138, 0, 0, 0, 297, 0, 0, 0, 0, 207, - 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, - 185, 215, 219, 0, 0, 0, 123, 0, 217, 195, - 257, 0, 197, 216, 162, 246, 208, 256, 266, 267, - 243, 264, 275, 233, 103, 242, 254, 119, 227, 0, - 0, 0, 105, 252, 239, 174, 151, 152, 104, 0, - 213, 128, 136, 125, 187, 249, 250, 124, 278, 111, - 263, 107, 112, 262, 181, 245, 253, 175, 168, 106, - 251, 173, 167, 156, 132, 144, 205, 164, 206, 145, - 178, 177, 179, 0, 0, 0, 237, 260, 279, 116, - 0, 244, 271, 274, 0, 209, 117, 137, 131, 204, - 135, 159, 270, 272, 273, 180, 113, 147, 234, 155, - 163, 212, 277, 194, 218, 120, 259, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 99, 108, 160, - 276, 210, 134, 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, - 102, 109, 115, 121, 126, 130, 133, 139, 143, 146, - 148, 149, 150, 153, 166, 169, 170, 171, 172, 182, - 183, 184, 186, 189, 190, 191, 192, 193, 196, 198, - 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, - 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, - 247, 248, 258, 265, 268, 141, 255, 269, 188, 0, - 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, - 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, - 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, + 0, 0, 0, 142, 0, 0, 0, 308, 0, 0, + 0, 0, 216, 0, 249, 146, 162, 114, 159, 100, + 110, 0, 144, 192, 224, 228, 0, 0, 0, 124, + 0, 226, 203, 268, 0, 206, 225, 167, 257, 217, + 267, 277, 278, 253, 275, 286, 242, 103, 251, 265, + 119, 236, 0, 0, 0, 105, 263, 248, 181, 156, + 157, 104, 0, 222, 129, 140, 126, 194, 260, 261, + 125, 289, 111, 274, 107, 112, 273, 188, 256, 264, + 182, 174, 106, 262, 180, 173, 161, 135, 148, 214, + 170, 215, 149, 185, 184, 186, 0, 0, 0, 246, + 271, 290, 116, 0, 254, 282, 285, 0, 218, 117, + 141, 134, 213, 139, 164, 281, 283, 284, 187, 113, + 151, 243, 160, 168, 221, 288, 202, 227, 120, 270, + 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 61, 0, 0, 96, 97, 98, 0, 0, 0, - 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, + 99, 108, 165, 287, 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 101, 102, 109, 115, 121, 127, 133, 137, + 143, 147, 150, 153, 154, 155, 158, 172, 176, 177, + 178, 179, 189, 190, 191, 193, 196, 197, 198, 200, + 201, 204, 207, 208, 209, 210, 211, 212, 220, 223, + 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, + 241, 247, 250, 258, 259, 269, 276, 279, 145, 266, + 280, 195, 0, 0, 0, 0, 0, 0, 0, 0, + 131, 0, 0, 0, 0, 0, 163, 0, 0, 0, + 237, 123, 171, 169, 255, 136, 132, 130, 122, 152, + 175, 205, 252, 199, 0, 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, + 98, 0, 1052, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 138, 0, 0, 0, 297, 0, 0, - 0, 0, 207, 0, 240, 142, 157, 114, 154, 100, - 110, 0, 140, 185, 215, 219, 0, 0, 0, 123, - 0, 217, 195, 257, 0, 197, 216, 162, 246, 208, - 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, - 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, - 152, 104, 0, 213, 128, 136, 125, 187, 249, 250, - 124, 278, 111, 263, 107, 112, 262, 181, 245, 253, - 175, 168, 106, 251, 173, 167, 156, 132, 144, 205, - 164, 206, 145, 178, 177, 179, 0, 0, 0, 237, - 260, 279, 116, 0, 244, 271, 274, 0, 209, 117, - 137, 131, 204, 135, 159, 270, 272, 273, 180, 113, - 147, 234, 155, 163, 212, 277, 194, 218, 120, 259, - 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 99, 108, 160, 276, 210, 134, 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 101, 102, 109, 115, 121, 126, 130, 133, - 139, 143, 146, 148, 149, 150, 153, 166, 169, 170, - 171, 172, 182, 183, 184, 186, 189, 190, 191, 192, - 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, - 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, - 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, - 269, 188, 0, 0, 0, 0, 0, 0, 0, 0, - 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, - 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, + 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, + 0, 308, 0, 0, 0, 0, 216, 0, 249, 146, + 162, 114, 159, 100, 110, 0, 144, 192, 224, 228, + 0, 0, 0, 124, 0, 226, 203, 268, 0, 206, + 225, 167, 257, 217, 267, 277, 278, 253, 275, 286, + 242, 103, 251, 265, 119, 236, 0, 0, 0, 105, + 263, 248, 181, 156, 157, 104, 0, 222, 129, 140, + 126, 194, 260, 261, 125, 289, 111, 274, 107, 112, + 273, 188, 256, 264, 182, 174, 106, 262, 180, 173, + 161, 135, 148, 214, 170, 215, 149, 185, 184, 186, + 0, 0, 0, 246, 271, 290, 116, 0, 254, 282, + 285, 0, 218, 117, 141, 134, 213, 139, 164, 281, + 283, 284, 187, 113, 151, 243, 160, 168, 221, 288, + 202, 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, - 0, 1041, 0, 0, 0, 0, 0, 0, 118, 0, + 0, 0, 0, 0, 99, 108, 165, 287, 219, 138, + 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 101, 102, 109, 115, + 121, 127, 133, 137, 143, 147, 150, 153, 154, 155, + 158, 172, 176, 177, 178, 179, 189, 190, 191, 193, + 196, 197, 198, 200, 201, 204, 207, 208, 209, 210, + 211, 212, 220, 223, 229, 230, 231, 232, 233, 234, + 235, 238, 239, 240, 241, 247, 250, 258, 259, 269, + 276, 279, 145, 266, 280, 195, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, + 163, 0, 0, 0, 237, 123, 171, 169, 255, 136, + 132, 130, 122, 152, 175, 205, 252, 199, 0, 166, + 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 96, 97, 98, 0, 775, 0, 0, 0, + 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, - 297, 0, 0, 0, 0, 207, 0, 240, 142, 157, - 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, - 0, 0, 123, 0, 217, 195, 257, 0, 197, 216, - 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, - 103, 242, 254, 119, 227, 0, 0, 0, 105, 252, - 239, 174, 151, 152, 104, 0, 213, 128, 136, 125, - 187, 249, 250, 124, 278, 111, 263, 107, 112, 262, - 181, 245, 253, 175, 168, 106, 251, 173, 167, 156, - 132, 144, 205, 164, 206, 145, 178, 177, 179, 0, - 0, 0, 237, 260, 279, 116, 0, 244, 271, 274, - 0, 209, 117, 137, 131, 204, 135, 159, 270, 272, - 273, 180, 113, 147, 234, 155, 163, 212, 277, 194, - 218, 120, 259, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 99, 108, 160, 276, 210, 134, 261, - 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, + 0, 142, 0, 0, 0, 308, 0, 0, 0, 0, + 216, 0, 249, 146, 162, 114, 159, 100, 110, 0, + 144, 192, 224, 228, 0, 0, 0, 124, 0, 226, + 203, 268, 0, 206, 225, 167, 257, 217, 267, 277, + 278, 253, 275, 286, 242, 103, 251, 265, 119, 236, + 0, 0, 0, 105, 263, 248, 181, 156, 157, 104, + 0, 222, 129, 140, 126, 194, 260, 261, 125, 289, + 111, 274, 107, 112, 273, 188, 256, 264, 182, 174, + 106, 262, 180, 173, 161, 135, 148, 214, 170, 215, + 149, 185, 184, 186, 0, 0, 0, 246, 271, 290, + 116, 0, 254, 282, 285, 0, 218, 117, 141, 134, + 213, 139, 164, 281, 283, 284, 187, 113, 151, 243, + 160, 168, 221, 288, 202, 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 109, 115, 121, - 126, 130, 133, 139, 143, 146, 148, 149, 150, 153, - 166, 169, 170, 171, 172, 182, 183, 184, 186, 189, - 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, - 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, - 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, - 268, 141, 255, 269, 188, 0, 0, 0, 0, 0, - 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, - 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, - 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 97, 98, 0, 764, 0, 0, 0, 0, 0, - 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 99, 108, + 165, 287, 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 101, 102, 109, 115, 121, 127, 133, 137, 143, 147, + 150, 153, 154, 155, 158, 172, 176, 177, 178, 179, + 189, 190, 191, 193, 196, 197, 198, 200, 201, 204, + 207, 208, 209, 210, 211, 212, 220, 223, 229, 230, + 231, 232, 233, 234, 235, 238, 239, 240, 241, 247, + 250, 258, 259, 269, 276, 279, 145, 266, 280, 789, + 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, + 0, 163, 0, 0, 0, 237, 123, 171, 169, 255, + 136, 132, 130, 122, 152, 175, 205, 252, 199, 0, + 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, + 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, - 0, 0, 0, 297, 0, 0, 0, 0, 207, 0, - 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, - 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, - 0, 197, 216, 162, 246, 208, 256, 266, 267, 243, - 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, - 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, - 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, - 107, 112, 262, 181, 245, 253, 175, 168, 106, 251, - 173, 167, 156, 132, 144, 205, 164, 206, 145, 178, - 177, 179, 0, 0, 0, 237, 260, 279, 116, 0, - 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, - 159, 270, 272, 273, 180, 113, 147, 234, 155, 163, - 212, 277, 194, 218, 120, 259, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 99, 108, 160, 276, - 210, 134, 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, - 109, 115, 121, 126, 130, 133, 139, 143, 146, 148, - 149, 150, 153, 166, 169, 170, 171, 172, 182, 183, - 184, 186, 189, 190, 191, 192, 193, 196, 198, 199, - 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, - 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, - 248, 258, 265, 268, 141, 255, 269, 778, 0, 0, - 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, - 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, - 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, - 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, - 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 142, 0, 0, 0, 308, 0, 0, 0, + 0, 216, 0, 249, 146, 162, 114, 159, 100, 110, + 0, 144, 192, 224, 228, 0, 0, 0, 124, 0, + 226, 203, 268, 0, 206, 225, 167, 257, 217, 267, + 277, 278, 253, 275, 286, 242, 103, 251, 265, 119, + 236, 0, 0, 0, 105, 263, 248, 181, 156, 157, + 104, 0, 222, 129, 140, 126, 194, 260, 261, 125, + 289, 111, 274, 107, 112, 273, 188, 256, 264, 182, + 174, 106, 262, 180, 173, 161, 135, 148, 214, 170, + 215, 149, 185, 184, 186, 0, 0, 0, 246, 271, + 290, 116, 0, 254, 282, 285, 0, 218, 117, 141, + 134, 213, 139, 164, 281, 283, 284, 187, 113, 151, + 243, 160, 168, 221, 288, 202, 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, + 108, 165, 287, 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, - 0, 0, 0, 297, 0, 0, 0, 0, 207, 0, - 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, - 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, - 0, 197, 216, 162, 246, 208, 256, 266, 267, 243, - 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, - 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, - 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, - 107, 112, 262, 181, 245, 253, 175, 168, 106, 251, - 173, 167, 156, 132, 144, 205, 164, 206, 145, 178, - 177, 179, 0, 0, 0, 237, 260, 279, 116, 0, - 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, - 159, 270, 272, 273, 180, 113, 147, 234, 155, 163, - 212, 277, 194, 218, 120, 259, 235, 0, 0, 0, + 0, 101, 102, 109, 115, 121, 127, 133, 137, 143, + 147, 150, 153, 154, 155, 158, 172, 176, 177, 178, + 179, 189, 190, 191, 193, 196, 197, 198, 200, 201, + 204, 207, 208, 209, 210, 211, 212, 220, 223, 229, + 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, + 247, 250, 258, 259, 269, 276, 279, 145, 266, 280, + 195, 0, 0, 0, 0, 0, 0, 0, 779, 131, + 0, 0, 0, 0, 0, 163, 0, 0, 0, 237, + 123, 171, 169, 255, 136, 132, 130, 122, 152, 175, + 205, 252, 199, 0, 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 99, 108, 160, 276, - 210, 134, 261, 0, 0, 127, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, + 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, - 109, 115, 121, 126, 130, 133, 139, 143, 146, 148, - 149, 150, 153, 166, 169, 170, 171, 172, 182, 183, - 184, 186, 189, 190, 191, 192, 193, 196, 198, 199, - 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, - 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, - 248, 258, 265, 268, 141, 255, 269, 188, 0, 0, - 0, 0, 0, 0, 0, 768, 129, 0, 0, 0, - 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, - 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, - 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, + 308, 0, 0, 0, 0, 216, 0, 249, 146, 162, + 114, 159, 100, 110, 0, 144, 192, 224, 228, 0, + 0, 0, 124, 0, 226, 203, 268, 0, 206, 225, + 167, 257, 217, 267, 277, 278, 253, 275, 286, 242, + 103, 251, 265, 119, 236, 0, 0, 0, 105, 263, + 248, 181, 156, 157, 104, 0, 222, 129, 140, 126, + 194, 260, 261, 125, 289, 111, 274, 107, 112, 273, + 188, 256, 264, 182, 174, 106, 262, 180, 173, 161, + 135, 148, 214, 170, 215, 149, 185, 184, 186, 0, + 0, 0, 246, 271, 290, 116, 0, 254, 282, 285, + 0, 218, 117, 141, 134, 213, 139, 164, 281, 283, + 284, 187, 113, 151, 243, 160, 168, 221, 288, 202, + 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 99, 108, 165, 287, 219, 138, 272, + 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 138, 0, 0, 0, 297, 0, 0, 0, - 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, - 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, - 217, 195, 257, 0, 197, 216, 162, 246, 208, 256, - 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, - 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, - 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, - 278, 111, 263, 107, 112, 262, 181, 245, 253, 175, - 168, 106, 251, 173, 167, 156, 132, 144, 205, 164, - 206, 145, 178, 177, 179, 0, 0, 0, 237, 260, - 279, 116, 0, 244, 271, 274, 0, 209, 117, 137, - 131, 204, 135, 159, 270, 272, 273, 180, 113, 147, - 234, 155, 163, 212, 277, 194, 218, 120, 259, 235, + 0, 0, 0, 0, 0, 101, 102, 109, 115, 121, + 127, 133, 137, 143, 147, 150, 153, 154, 155, 158, + 172, 176, 177, 178, 179, 189, 190, 191, 193, 196, + 197, 198, 200, 201, 204, 207, 208, 209, 210, 211, + 212, 220, 223, 229, 230, 231, 232, 233, 234, 235, + 238, 239, 240, 241, 247, 250, 258, 259, 269, 276, + 279, 145, 266, 280, 195, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 0, 0, 0, 0, 0, 163, + 0, 0, 0, 237, 123, 171, 169, 255, 136, 132, + 130, 122, 152, 175, 205, 252, 199, 0, 166, 0, + 0, 245, 183, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 96, 97, 98, 0, 655, 0, 0, 0, 0, + 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, - 108, 160, 276, 210, 134, 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 109, 115, 121, 126, 130, 133, 139, - 143, 146, 148, 149, 150, 153, 166, 169, 170, 171, - 172, 182, 183, 184, 186, 189, 190, 191, 192, 193, - 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, - 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, - 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 129, - 0, 0, 0, 0, 0, 158, 0, 0, 0, 228, - 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 96, 97, 98, 0, - 644, 0, 0, 0, 0, 0, 0, 118, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 138, 0, 0, 0, 297, - 0, 0, 0, 0, 207, 0, 240, 142, 157, 114, - 154, 100, 110, 0, 140, 185, 215, 219, 0, 0, - 0, 123, 0, 217, 195, 257, 0, 197, 216, 162, - 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, - 242, 254, 119, 227, 0, 0, 0, 105, 252, 239, - 174, 151, 152, 104, 0, 213, 128, 136, 125, 187, - 249, 250, 124, 278, 111, 263, 107, 112, 262, 181, - 245, 253, 175, 168, 106, 251, 173, 167, 156, 132, - 144, 205, 164, 206, 145, 178, 177, 179, 0, 0, - 0, 237, 260, 279, 116, 0, 244, 271, 274, 0, - 209, 117, 137, 131, 204, 135, 159, 270, 272, 273, - 180, 113, 147, 234, 155, 163, 212, 277, 194, 218, - 120, 259, 235, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 99, 108, 160, 276, 210, 134, 261, 0, - 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 101, 102, 109, 115, 121, 126, - 130, 133, 139, 143, 146, 148, 149, 150, 153, 166, - 169, 170, 171, 172, 182, 183, 184, 186, 189, 190, - 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, - 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, - 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, - 141, 255, 269, 188, 0, 0, 0, 0, 0, 0, - 0, 0, 129, 0, 0, 0, 0, 0, 158, 0, - 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, - 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, - 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 572, 0, 0, 0, 0, + 142, 0, 0, 0, 308, 0, 0, 0, 0, 216, + 0, 249, 146, 162, 114, 159, 100, 110, 0, 144, + 192, 224, 228, 0, 0, 0, 124, 0, 226, 203, + 268, 0, 206, 225, 167, 257, 217, 267, 277, 278, + 253, 275, 286, 242, 103, 251, 265, 119, 236, 0, + 0, 0, 105, 263, 248, 181, 156, 157, 104, 0, + 222, 129, 140, 126, 194, 260, 261, 125, 289, 111, + 274, 107, 112, 273, 188, 256, 264, 182, 174, 106, + 262, 180, 173, 161, 135, 148, 214, 170, 215, 149, + 185, 184, 186, 0, 0, 0, 246, 271, 290, 116, + 0, 254, 282, 285, 0, 218, 117, 141, 134, 213, + 139, 164, 281, 283, 284, 187, 113, 151, 243, 160, + 168, 221, 288, 202, 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 99, 108, 165, + 287, 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, - 0, 0, 297, 0, 0, 0, 0, 207, 0, 240, - 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, - 219, 0, 0, 0, 123, 0, 217, 195, 257, 0, - 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, - 275, 233, 103, 242, 254, 119, 227, 0, 0, 0, - 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, - 136, 125, 187, 249, 250, 124, 278, 111, 263, 107, - 112, 262, 181, 245, 253, 175, 168, 106, 251, 173, - 167, 156, 132, 144, 205, 164, 206, 145, 178, 177, - 179, 0, 0, 0, 237, 260, 279, 116, 0, 244, - 271, 274, 0, 209, 117, 137, 131, 204, 135, 159, - 270, 272, 273, 180, 113, 147, 234, 155, 163, 212, - 277, 194, 218, 120, 259, 235, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, + 102, 109, 115, 121, 127, 133, 137, 143, 147, 150, + 153, 154, 155, 158, 172, 176, 177, 178, 179, 189, + 190, 191, 193, 196, 197, 198, 200, 201, 204, 207, + 208, 209, 210, 211, 212, 220, 223, 229, 230, 231, + 232, 233, 234, 235, 238, 239, 240, 241, 247, 250, + 258, 259, 269, 276, 279, 145, 266, 280, 195, 0, + 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, + 0, 0, 0, 163, 0, 0, 0, 237, 123, 171, + 169, 255, 136, 132, 130, 122, 152, 175, 205, 252, + 199, 0, 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 99, 108, 160, 276, 210, - 134, 261, 0, 0, 127, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 96, 97, 98, 0, 0, + 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 101, 102, 109, - 115, 121, 126, 130, 133, 139, 143, 146, 148, 149, - 150, 153, 166, 169, 170, 171, 172, 182, 183, 184, - 186, 189, 190, 191, 192, 193, 196, 198, 199, 200, - 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, - 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, - 258, 265, 268, 141, 255, 269, 188, 0, 0, 0, - 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, - 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, - 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 97, 98, 0, 0, 0, 0, 0, - 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, + 0, 583, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 142, 0, 0, 0, 308, 0, + 0, 0, 0, 216, 0, 249, 146, 162, 114, 159, + 100, 110, 0, 144, 192, 224, 228, 0, 0, 0, + 124, 0, 226, 203, 268, 0, 206, 225, 167, 257, + 217, 267, 277, 278, 253, 275, 286, 242, 103, 251, + 265, 119, 236, 0, 0, 0, 105, 263, 248, 181, + 156, 157, 104, 0, 222, 129, 140, 126, 194, 260, + 261, 125, 289, 111, 274, 107, 112, 273, 188, 256, + 264, 182, 174, 106, 262, 180, 173, 161, 135, 148, + 214, 170, 215, 149, 185, 184, 186, 0, 0, 0, + 246, 271, 290, 116, 0, 254, 282, 285, 0, 218, + 117, 141, 134, 213, 139, 164, 281, 283, 284, 187, + 113, 151, 243, 160, 168, 221, 288, 202, 227, 120, + 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 99, 108, 165, 287, 219, 138, 272, 0, 0, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 101, 102, 109, 115, 121, 127, 133, + 137, 143, 147, 150, 153, 154, 155, 158, 172, 176, + 177, 178, 179, 189, 190, 191, 193, 196, 197, 198, + 200, 201, 204, 207, 208, 209, 210, 211, 212, 220, + 223, 229, 230, 231, 232, 233, 234, 235, 238, 239, + 240, 241, 247, 250, 258, 259, 269, 276, 279, 145, + 266, 280, 195, 0, 0, 0, 0, 0, 0, 0, + 0, 131, 0, 0, 0, 0, 0, 163, 0, 0, + 0, 237, 123, 171, 169, 255, 136, 132, 130, 122, + 152, 175, 205, 252, 199, 0, 166, 0, 0, 245, + 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, + 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, + 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 334, - 0, 138, 0, 0, 0, 297, 0, 0, 0, 0, - 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, - 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, - 195, 257, 0, 197, 216, 162, 246, 208, 256, 266, - 267, 243, 264, 275, 233, 103, 242, 254, 119, 227, - 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, - 0, 213, 128, 136, 125, 187, 249, 250, 124, 278, - 111, 263, 107, 112, 262, 181, 245, 253, 175, 168, - 106, 251, 173, 167, 156, 132, 144, 205, 164, 206, - 145, 178, 177, 179, 0, 0, 0, 237, 260, 279, - 116, 0, 244, 271, 274, 0, 209, 117, 137, 131, - 204, 135, 159, 270, 272, 273, 180, 113, 147, 234, - 155, 163, 212, 277, 194, 218, 120, 259, 235, 0, + 0, 0, 0, 0, 0, 0, 345, 0, 142, 0, + 0, 0, 308, 0, 0, 0, 0, 216, 0, 249, + 146, 162, 114, 159, 100, 110, 0, 144, 192, 224, + 228, 0, 0, 0, 124, 0, 226, 203, 268, 0, + 206, 225, 167, 257, 217, 267, 277, 278, 253, 275, + 286, 242, 103, 251, 265, 119, 236, 0, 0, 0, + 105, 263, 248, 181, 156, 157, 104, 0, 222, 129, + 140, 126, 194, 260, 261, 125, 289, 111, 274, 107, + 112, 273, 188, 256, 264, 182, 174, 106, 262, 180, + 173, 161, 135, 148, 214, 170, 215, 149, 185, 184, + 186, 0, 0, 0, 246, 271, 290, 116, 0, 254, + 282, 285, 0, 218, 117, 141, 134, 213, 139, 164, + 281, 283, 284, 187, 113, 151, 243, 160, 168, 221, + 288, 202, 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 99, 108, - 160, 276, 210, 134, 261, 0, 0, 127, 0, 0, + 0, 0, 0, 0, 0, 99, 108, 165, 287, 219, + 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 101, 102, 109, + 115, 121, 127, 133, 137, 143, 147, 150, 153, 154, + 155, 158, 172, 176, 177, 178, 179, 189, 190, 191, + 193, 196, 197, 198, 200, 201, 204, 207, 208, 209, + 210, 211, 212, 220, 223, 229, 230, 231, 232, 233, + 234, 235, 238, 239, 240, 241, 247, 250, 258, 259, + 269, 276, 279, 344, 266, 280, 195, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, + 0, 163, 0, 0, 0, 237, 123, 171, 169, 255, + 136, 132, 130, 122, 152, 175, 205, 252, 199, 0, + 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 109, 115, 121, 126, 130, 133, 139, 143, - 146, 148, 149, 150, 153, 166, 169, 170, 171, 172, - 182, 183, 184, 186, 189, 190, 191, 192, 193, 196, - 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, - 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, - 241, 247, 248, 258, 265, 268, 333, 255, 269, 188, - 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, - 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, - 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, + 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, + 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 97, 98, 0, 0, - 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 142, 0, 303, 0, 308, 0, 0, 0, + 0, 216, 0, 249, 146, 162, 114, 159, 100, 110, + 0, 144, 192, 224, 228, 0, 0, 0, 124, 0, + 226, 203, 268, 0, 206, 225, 167, 257, 217, 267, + 277, 278, 253, 275, 286, 242, 103, 251, 265, 119, + 236, 0, 0, 0, 105, 263, 248, 181, 156, 157, + 104, 0, 222, 129, 140, 126, 194, 260, 261, 125, + 289, 111, 274, 107, 112, 273, 188, 256, 264, 182, + 174, 106, 262, 180, 173, 161, 135, 148, 214, 170, + 215, 149, 185, 184, 186, 0, 0, 0, 246, 271, + 290, 116, 0, 254, 282, 285, 0, 218, 117, 141, + 134, 213, 139, 164, 281, 283, 284, 187, 113, 151, + 243, 160, 168, 221, 288, 202, 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 138, 0, 292, 0, 297, 0, - 0, 0, 0, 207, 0, 240, 142, 157, 114, 154, - 100, 110, 0, 140, 185, 215, 219, 0, 0, 0, - 123, 0, 217, 195, 257, 0, 197, 216, 162, 246, - 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, - 254, 119, 227, 0, 0, 0, 105, 252, 239, 174, - 151, 152, 104, 0, 213, 128, 136, 125, 187, 249, - 250, 124, 278, 111, 263, 107, 112, 262, 181, 245, - 253, 175, 168, 106, 251, 173, 167, 156, 132, 144, - 205, 164, 206, 145, 178, 177, 179, 0, 0, 0, - 237, 260, 279, 116, 0, 244, 271, 274, 0, 209, - 117, 137, 131, 204, 135, 159, 270, 272, 273, 180, - 113, 147, 234, 155, 163, 212, 277, 194, 218, 120, - 259, 235, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, + 108, 165, 287, 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 99, 108, 160, 276, 210, 134, 261, 0, 0, - 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 101, 102, 109, 115, 121, 126, 130, - 133, 139, 143, 146, 148, 149, 150, 153, 166, 169, - 170, 171, 172, 182, 183, 184, 186, 189, 190, 191, - 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, - 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, - 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, - 255, 269, 188, 0, 0, 0, 0, 0, 0, 0, - 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, - 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, + 0, 101, 102, 109, 115, 121, 127, 133, 137, 143, + 147, 150, 153, 154, 155, 158, 172, 176, 177, 178, + 179, 189, 190, 191, 193, 196, 197, 198, 200, 201, + 204, 207, 208, 209, 210, 211, 212, 220, 223, 229, + 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, + 247, 250, 258, 259, 269, 276, 279, 145, 266, 280, + 195, 0, 0, 0, 0, 0, 0, 0, 0, 131, + 0, 0, 0, 0, 0, 163, 0, 0, 0, 237, + 123, 171, 169, 255, 136, 132, 130, 122, 152, 175, + 205, 252, 199, 0, 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, - 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, + 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, + 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, - 0, 297, 0, 0, 0, 0, 207, 0, 240, 142, - 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, - 0, 0, 0, 123, 0, 217, 195, 257, 0, 197, - 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, - 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, - 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, - 125, 187, 249, 250, 124, 278, 111, 263, 107, 112, - 262, 181, 245, 253, 175, 168, 106, 251, 173, 167, - 156, 132, 144, 205, 164, 206, 145, 178, 177, 179, - 0, 0, 0, 237, 260, 279, 116, 0, 244, 271, - 274, 0, 209, 117, 137, 131, 204, 135, 159, 270, - 272, 273, 180, 113, 147, 234, 155, 163, 212, 277, - 194, 218, 120, 259, 235, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, + 308, 0, 0, 0, 0, 216, 0, 249, 146, 162, + 114, 159, 100, 110, 0, 144, 192, 224, 228, 0, + 0, 0, 124, 0, 226, 203, 268, 0, 206, 225, + 167, 257, 217, 267, 277, 278, 253, 275, 286, 242, + 103, 251, 265, 119, 236, 0, 0, 0, 105, 263, + 248, 181, 156, 157, 104, 0, 222, 129, 140, 126, + 194, 260, 261, 125, 289, 111, 274, 107, 112, 273, + 188, 256, 264, 182, 174, 106, 262, 180, 173, 161, + 135, 148, 214, 170, 215, 149, 185, 184, 186, 0, + 0, 0, 246, 271, 290, 116, 0, 254, 282, 285, + 0, 218, 117, 141, 134, 213, 139, 164, 281, 283, + 284, 187, 113, 151, 243, 160, 168, 221, 288, 202, + 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 99, 108, 160, 276, 210, 134, - 261, 0, 0, 127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 99, 108, 165, 287, 219, 138, 272, + 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 101, 102, 109, 115, - 121, 126, 130, 133, 139, 143, 146, 148, 149, 150, - 153, 166, 169, 170, 171, 172, 182, 183, 184, 186, - 189, 190, 191, 192, 193, 196, 198, 199, 200, 201, - 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, - 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, - 265, 268, 141, 255, 269, + 0, 0, 0, 0, 0, 101, 102, 109, 115, 121, + 127, 133, 137, 143, 147, 150, 153, 154, 155, 158, + 172, 176, 177, 178, 179, 189, 190, 191, 193, 196, + 197, 198, 200, 201, 204, 207, 208, 209, 210, 211, + 212, 220, 223, 229, 230, 231, 232, 233, 234, 235, + 238, 239, 240, 241, 247, 250, 258, 259, 269, 276, + 279, 145, 266, 280, } var yyPact = [...]int{ - 216, -1000, -283, 1091, -1000, -1000, -1000, -1000, -1000, -1000, + 205, -1000, -286, 1150, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1017, - 805, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 260, 12552, - -34, 141, 0, 18220, 140, 1468, 18573, -1000, 13, -1000, - 2, 18573, 9, 17867, -1000, -1000, -94, -101, -1000, 10434, - 907, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 758, - 1007, 990, 1014, 564, 1363, -1000, 9009, 9009, 101, 101, - 101, 7597, -1000, -1000, 17514, 18573, 136, 18573, -158, 91, - 91, 91, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1090, + 848, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 264, 12343, + -39, 138, 25, 18187, 137, 290, 18551, -1000, 17, -1000, + 6, 18551, 13, 17823, -1000, -1000, -63, -96, -1000, 10159, + 987, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 828, + 1058, 1063, 1088, 646, 1149, -1000, 8690, 8690, 92, 92, + 92, 7234, -1000, -1000, 17459, 18551, 133, 18551, -145, 89, + 89, 89, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2847,24 +2872,25 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 139, 18573, 566, 566, 279, 441, 18573, 89, 566, 89, - 89, 89, 18573, -1000, 182, -1000, -1000, -1000, 18573, 566, - 930, 307, 97, 217, 217, 217, -1000, 186, -1000, 5028, - 30, 32, -51, 1034, 27, -24, -1000, 307, 5028, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 116, -1000, -1000, - 18573, 17161, 121, 276, -1000, -1000, -1000, -1000, -1000, -1000, - 542, 536, -1000, 10434, 1891, 584, 584, -1000, -1000, 153, - -1000, -1000, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, - 11493, 11493, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 584, 181, -1000, 10081, - 584, 584, 584, 584, 584, 584, 584, 584, 10434, 584, - 584, 584, 584, 584, 584, 584, 584, 584, 584, 584, - 584, 584, 584, 584, 584, -1000, -1000, -1000, 1017, -1000, - 805, -1000, -1000, -1000, 995, 10434, 10434, 1017, -1000, 897, - 9009, -1000, -1000, 909, -1000, -1000, -1000, -1000, 315, 1062, - -1000, 12199, 180, 1053, 16808, -1000, 15389, 16455, 713, 7230, - -107, -1000, -1000, -1000, 271, 14683, -1000, -1000, -1000, 922, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 135, 18551, 540, 540, 317, 539, 18551, 78, 540, + 78, 78, 78, 18551, -1000, 186, -1000, -1000, -1000, 18551, + 540, 1014, 357, 108, 219, 219, 219, -1000, 233, -1000, + 4588, 33, 35, -70, 1113, 24, 3, -1000, 357, 4588, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 122, -1000, + -1000, 18551, 17095, 130, 245, -1000, -1000, -1000, -1000, -1000, + -1000, 617, 645, -1000, 10159, 1694, 790, 790, -1000, -1000, + 164, -1000, -1000, 11251, 11251, 11251, 11251, 11251, 11251, 11251, + 11251, 11251, 11251, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 790, 184, -1000, + 9795, 790, 790, 790, 790, 790, 790, 790, 790, 10159, + 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, + 790, 790, 790, 790, 790, 790, -1000, -1000, -1000, 1090, + -1000, 848, -1000, -1000, -1000, 1016, 10159, 10159, 1090, -1000, + 920, 8690, -1000, -1000, 1005, -1000, -1000, -1000, -1000, 323, + 1126, -1000, 11979, 183, 1125, 16731, -1000, 15268, 16367, 786, + 6856, -89, -1000, -1000, -1000, 237, 14540, -1000, -1000, -1000, + 1008, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2876,190 +2902,196 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 743, 18573, -1000, 335, -1000, 566, 5028, 120, 566, - 292, 566, 18573, 18573, 5028, 5028, 5028, 40, 72, 59, - 18573, 440, 703, 115, 18573, 981, 827, 18573, 566, 566, - -1000, 6496, -1000, 5028, 307, -1000, 423, 10434, 5028, 5028, - 5028, 18573, 5028, 5028, -1000, 421, -1000, -1000, 314, -1000, - -1000, -1000, -1000, -1000, -1000, 5028, 5028, 303, 1051, 303, - -1000, -1000, -1000, -1000, 10434, 217, -1000, 823, -1000, -1000, - 8, -1000, -1000, -1000, -1000, -1000, 1091, -1000, -1000, -1000, - -133, -1000, -1000, 10434, 10434, 10434, 10434, 545, 221, 11493, - 357, 227, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, - 11493, 11493, 11493, 11493, 11493, 11493, 11493, 576, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 566, -1000, 1089, 613, - 613, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 11846, 7950, 6496, 564, 734, 1017, 9009, 9009, 10434, 10434, - 9715, 9362, 9009, 928, 282, 536, 18573, -1000, -1000, 11140, - -1000, -1000, -1000, -1000, -1000, 363, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 18573, 18573, 9009, 9009, 9009, 9009, 9009, - -1000, 990, 564, 909, 963, 1076, 213, 574, 673, -1000, - 492, 990, 14330, 721, -1000, 909, -1000, -1000, -1000, 18573, - -1000, -1000, 16095, -1000, -1000, 6129, 18573, 53, 18573, -1000, - 778, 960, -1000, -1000, -1000, 964, 13624, 13977, 18573, 815, - 814, -1000, -1000, 179, 6863, -107, -1000, 6863, 601, -1000, - -121, -132, 8303, 191, -1000, -1000, -1000, -1000, 4661, 12905, - 479, 298, -81, -1000, -1000, -1000, 748, -1000, 748, 748, - 748, 748, -40, -40, -40, -40, -1000, -1000, -1000, -1000, - -1000, 775, 768, -1000, 748, 748, 748, -1000, -1000, -1000, + -1000, -1000, 746, 18551, -1000, 2901, -1000, 540, 4588, 117, + 540, 275, 540, 18551, 18551, 4588, 4588, 4588, 39, 81, + 70, 18551, 534, 783, 121, 18551, 1053, 859, 18551, 540, + 540, -1000, 6100, -1000, 4588, 357, -1000, 532, 10159, 4588, + 4588, 4588, 18551, 4588, 4588, -1000, 528, -1000, -1000, 349, + -1000, -1000, -1000, -1000, -1000, -1000, 4588, 4588, 328, 1124, + 328, -1000, -1000, -1000, -1000, 10159, 219, -1000, 858, -1000, + -1000, 10, -1000, -1000, -1000, -1000, -1000, 1150, -1000, -1000, + -1000, -131, -1000, -1000, 10159, 10159, 10159, 10159, 332, 223, + 11251, 391, 404, 11251, 11251, 11251, 11251, 11251, 11251, 11251, + 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 500, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 540, -1000, 1146, + 561, 561, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 11615, 7598, 6100, 646, 740, 1090, 8690, 8690, 10159, + 10159, 9418, 9054, 8690, 1006, 256, 645, 18551, -1000, -1000, + 10887, -1000, -1000, -1000, -1000, -1000, 493, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 18551, 18551, 8690, 8690, 8690, 8690, + 8690, -1000, 1063, 646, 1005, 1042, 1141, 215, 658, 782, + -1000, 633, 1063, 14176, 816, -1000, 1005, -1000, -1000, -1000, + 18551, -1000, -1000, 15996, -1000, -1000, 5722, 18551, 50, 18551, + -1000, 772, 948, -1000, -1000, -1000, 1055, 13448, 13812, 18551, + 823, 701, -1000, -1000, 182, 6478, -89, -1000, 6478, 705, + -1000, -118, -98, 7962, 174, -1000, -1000, -1000, -1000, 4210, + 12707, 579, 288, -53, -1000, -1000, -1000, 799, -1000, 799, + 799, 799, 799, -18, -18, -18, -18, -1000, -1000, -1000, + -1000, -1000, 838, 834, -1000, 799, 799, 799, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 767, 767, 767, 755, 755, - 783, -1000, 18573, 5028, 980, 5028, -1000, 131, -1000, -1000, - -1000, 18573, 18573, 18573, 18573, 18573, 162, -1000, 18573, 18573, - 664, -1000, 18573, 5028, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 536, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 18573, -1000, -1000, -1000, -1000, 307, 18573, 18573, 18573, 307, - 536, -1000, 18573, 18573, -1000, -1000, -1000, -1000, -1000, 536, - 221, 241, 252, -1000, -1000, 369, -1000, -1000, 1025, -1000, - -1000, -1000, -1000, 357, 11493, 11493, 11493, 351, 1025, 1907, - 1044, 1727, 195, 452, 452, 193, 193, 193, 193, 193, - 1121, 1121, -1000, -1000, -1000, 363, -1000, -1000, -1000, 363, - 9009, 9009, 651, 584, 177, -1000, 758, -1000, -1000, 990, - 730, 730, 854, 339, 289, 1046, 730, 284, 1041, 730, - 730, 9009, -1000, -1000, 302, -1000, 10434, 363, -1000, 166, - -1000, 598, 625, 614, 730, 363, 363, 730, 730, 995, - -1000, -1000, 912, -1000, 867, 10434, 10434, 10434, -1000, -1000, - -1000, 995, 1022, -1000, 903, 901, 1031, 9009, 15389, 909, - -1000, -1000, -1000, 165, 1031, 830, 584, -1000, 18573, 15389, - 15389, 15389, 15389, 15389, -1000, 850, 846, -1000, 840, 838, - 858, 18573, -1000, 732, 564, 13624, 194, 584, -1000, 15742, - -1000, -1000, 53, 694, 15389, 18573, -1000, -1000, 15389, 18573, - 5762, -1000, 601, -107, -135, -1000, -1000, -1000, -1000, 536, - -1000, 583, 597, 4294, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 766, 566, -1000, 953, 230, 205, 566, 940, -1000, - -1000, -1000, 932, -1000, 309, -87, -1000, -1000, 382, -40, - -40, -1000, -1000, 191, 921, 191, 191, 191, 419, 419, - -1000, -1000, -1000, -1000, 380, -1000, -1000, -1000, 375, -1000, - 821, 18573, 5028, -1000, -1000, -1000, -1000, 606, 606, 265, + -1000, -1000, -1000, -1000, -1000, -1000, 833, 833, 833, 820, + 820, 841, -1000, 18551, 4588, 1050, 4588, -1000, 119, -1000, + -1000, -1000, 18551, 18551, 18551, 18551, 18551, 147, -1000, 18551, + 18551, 776, -1000, 18551, 4588, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 645, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 18551, -1000, -1000, -1000, -1000, 357, 18551, 18551, 18551, + 357, 645, -1000, 18551, 18551, -1000, -1000, -1000, -1000, -1000, + 645, 223, 324, 364, -1000, -1000, 422, -1000, -1000, 2141, + -1000, -1000, -1000, -1000, 391, 11251, 11251, 11251, 407, 2141, + 2104, 860, 510, 195, 594, 594, 197, 197, 197, 197, + 197, 359, 359, -1000, -1000, -1000, 493, -1000, -1000, -1000, + 493, 8690, 8690, 762, 790, 176, -1000, 828, -1000, -1000, + 1063, 731, 731, 488, 492, 315, 1123, 731, 301, 1121, + 731, 731, 8690, -1000, -1000, 262, -1000, 10159, 493, -1000, + 173, -1000, 585, 735, 707, 731, 493, 493, 731, 731, + 1016, -1000, -1000, 984, -1000, 917, 10159, 10159, 10159, -1000, + -1000, -1000, 1016, 1075, -1000, 936, 935, 1106, 8690, 15268, + 1005, -1000, -1000, -1000, 172, 1106, 764, 790, -1000, 18551, + 15268, 15268, 15268, 15268, 15268, -1000, 899, 881, -1000, 897, + 877, 908, 18551, -1000, 733, 646, 13448, 200, 790, -1000, + 15632, -1000, -1000, 50, 689, 15268, 18551, -1000, -1000, 15268, + 18551, 5344, -1000, 705, -89, -124, -1000, -1000, -1000, -1000, + 645, -1000, 610, 703, 3832, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 832, 540, -1000, 1029, 248, 239, 540, 1026, + -1000, -1000, -1000, 1020, -1000, 294, -55, -1000, -1000, 408, + -18, -18, -1000, -1000, 174, 999, 174, 174, 174, 520, + 520, -1000, -1000, -1000, -1000, 392, -1000, -1000, -1000, 385, + -1000, 857, 18551, 4588, -1000, -1000, -1000, -1000, 277, 277, + 263, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 49, 831, -1000, -1000, -1000, -1000, 8, 38, + 115, -1000, 4588, -1000, 328, -1000, -1000, -1000, 328, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 407, 2141, 1858, -1000, + 11251, 11251, -1000, -1000, 731, 731, 8690, 6100, 1090, 1016, + -1000, -1000, 34, 500, 34, 11251, 11251, -1000, 11251, 11251, + -1000, -158, 713, 249, -1000, 10159, 463, -1000, 6100, -1000, + 11251, 11251, -1000, -1000, -1000, -1000, -1000, -1000, 470, 512, + 909, 645, 645, -1000, -1000, 18551, -1000, -1000, -1000, -1000, + 1098, 10159, -1000, 694, -1000, 4966, 1063, 856, 18551, 790, + 1150, 13448, 18551, 826, -1000, 235, 948, 827, 854, 780, + -1000, -1000, -1000, -1000, 878, -1000, 870, -1000, -1000, -1000, + -1000, -1000, 646, -1000, 132, 131, 125, 18551, -1000, 1106, + 15268, 680, -1000, 680, -1000, 171, -1000, -1000, -1000, -128, + -103, -1000, -1000, -1000, 4210, -1000, 4210, 18551, 69, -1000, + 540, 540, -1000, -1000, -1000, 821, 852, 11251, -1000, -1000, + -1000, 572, 174, 174, -1000, 338, -1000, -1000, -1000, 723, + -1000, 719, 661, 717, 18551, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 52, 779, -1000, -1000, -1000, -1000, -12, 37, 104, - -1000, 5028, -1000, 303, -1000, -1000, -1000, 303, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 351, 1025, 1841, -1000, 11493, - 11493, -1000, -1000, 730, 730, 9009, 6496, 1017, 995, -1000, - -1000, 462, 576, 462, 11493, 11493, -1000, 11493, 11493, -1000, - -172, 679, 280, -1000, 10434, 506, -1000, 6496, -1000, 11493, - 11493, -1000, -1000, -1000, -1000, -1000, -1000, 910, 886, 536, - 536, -1000, -1000, 18573, -1000, -1000, -1000, -1000, 1023, 10434, - -1000, 575, -1000, 5395, 990, 820, 18573, 584, 1091, 13624, - 18573, 603, -1000, 270, 960, 761, 819, 1276, -1000, -1000, - -1000, -1000, 839, -1000, 789, -1000, -1000, -1000, -1000, -1000, - 564, -1000, 132, 129, 128, 18573, -1000, 1031, 15389, 590, - -1000, 590, -1000, 161, -1000, -1000, -1000, -126, -138, -1000, - -1000, -1000, 4661, -1000, 4661, 18573, 68, -1000, 566, 566, - -1000, -1000, -1000, 756, 812, 11493, -1000, -1000, -1000, 477, - 191, 191, -1000, 377, -1000, -1000, -1000, 728, -1000, 726, - 571, 723, 18573, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 18573, -1000, -1000, -1000, -1000, -1000, 18573, -178, - 566, 18573, 18573, 18573, 18573, -1000, 307, 307, -1000, 11493, - 1025, 1025, -1000, -1000, 363, -1000, 990, -1000, 363, 748, - 748, -1000, 748, 755, -1000, 748, -5, 748, -22, 363, - 363, 1809, 1775, 866, 393, 584, -165, -1000, 536, 10434, - -1000, 1709, 888, 417, -1000, -1000, 1020, 1001, 536, -1000, - -1000, -1000, 958, 534, 538, -1000, -1000, 8656, 710, 160, - 683, -1000, 1017, 18573, 10434, -1000, -1000, 10434, 752, -1000, - 10434, -1000, -1000, -1000, 1017, 584, 584, 584, 683, 1017, - 590, -1000, -1000, 202, -1000, -1000, -1000, 4294, -1000, 681, - -1000, 748, -1000, 940, -1000, -1000, 18573, -63, 1075, 1025, - -1000, -1000, -1000, -1000, -1000, -40, 415, -40, 364, -1000, - 358, 5028, -1000, -1000, -1000, -1000, 961, -1000, 6496, -1000, - -1000, 718, 781, -1000, -1000, -1000, -1000, 1025, -1000, 995, - -1000, -1000, 134, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 11493, 11493, 11493, 11493, 11493, 990, 412, 536, 11493, - 11493, -1000, -1000, 10434, 10434, 939, -1000, 584, -1000, 762, - 18573, 18573, -1000, 18573, 990, -1000, 536, 536, 18573, 536, - 15036, 18573, 18573, 13258, 990, -1000, 170, 18573, -1000, 676, - -1000, 211, -1000, -111, 191, -1000, 191, 455, 451, -1000, - 584, 558, -1000, 263, 18573, 18573, -1000, -1000, -1000, 598, - 598, 598, 598, 67, 363, -1000, 598, 598, 536, 542, - 1071, -1000, 584, 1091, 156, -1000, -1000, -1000, 668, 666, - -1000, 666, 666, 194, -1000, 170, -1000, 566, 234, 401, - -1000, 62, 18573, 325, 937, -1000, 934, -1000, -1000, -1000, - -1000, -1000, 49, 6496, 4661, 636, -1000, -1000, -1000, -1000, - -1000, 363, 51, -182, -1000, -1000, -1000, 18573, 538, 18573, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 350, -1000, -1000, - 18573, -1000, -1000, 336, -1000, -1000, 612, -1000, 18573, -1000, - -1000, 779, -1000, 882, -176, -189, 516, -1000, -1000, 607, - -1000, -1000, 49, 900, -178, -1000, 868, -1000, 18573, -1000, - 46, -1000, -179, 508, 44, -187, 790, 584, -191, 785, - -1000, 1045, 10787, -1000, -1000, 1047, 214, 214, 598, 363, - -1000, -1000, -1000, 78, 411, -1000, -1000, -1000, -1000, -1000, - -1000, + -1000, -1000, -1000, -1000, 18551, -1000, -1000, -1000, -1000, -1000, + 18551, -180, 540, 18551, 18551, 18551, 18551, -1000, 357, 357, + -1000, 11251, 2141, 2141, -1000, -1000, 493, -1000, 1063, -1000, + 493, 799, 799, -1000, 799, 820, -1000, 799, -1, 799, + -2, 493, 493, 1743, 1710, 876, 547, 790, -155, -1000, + 645, 10159, -1000, 1074, 830, 495, -18, -1000, -1000, -1000, + 1094, 1083, 645, -1000, -1000, -1000, 1031, 604, 611, -1000, + -1000, 8326, 709, 169, 691, -1000, 1090, 18551, 10159, -1000, + -1000, 10159, 805, -1000, 10159, -1000, -1000, -1000, 1090, 790, + 790, 790, 691, 1090, 680, -1000, -1000, 207, -1000, -1000, + -1000, 3832, -1000, 685, -1000, 799, -1000, 1026, -1000, -1000, + 18551, -49, 1140, 2141, -1000, -1000, -1000, -1000, -1000, -18, + 490, -18, 381, -1000, 329, 4588, -1000, -1000, -1000, -1000, + 1039, -1000, 6100, -1000, -1000, 795, 840, -1000, -1000, -1000, + -1000, 2141, -1000, 1016, -1000, -1000, 116, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 11251, 11251, 11251, 11251, 11251, + 1063, 489, 645, 11251, 11251, -18, -73, -1000, 10159, 10159, + 1025, -1000, 790, -1000, 818, 18551, 18551, -1000, 18551, 1063, + -1000, 645, 645, 18551, 645, 14904, 18551, 18551, 13071, 1063, + -1000, 167, 18551, -1000, 683, -1000, 254, -1000, -159, 174, + -1000, 174, 515, 497, -1000, 790, 621, -1000, 234, 18551, + 18551, -1000, -1000, -1000, 585, 585, 585, 585, 37, 493, + -1000, 585, 585, -281, -1000, 983, 981, 645, 617, 1139, + -1000, 790, 1150, 151, -1000, -1000, -1000, 675, 673, -1000, + 673, 673, 200, -1000, 167, -1000, 540, 231, 485, -1000, + 66, 18551, 303, 1024, -1000, 1017, -1000, -1000, -1000, -1000, + -1000, 48, 6100, 4210, 668, -1000, -1000, -1000, -1000, -1000, + 493, 64, -184, -1000, -1000, -1000, -73, 152, -1000, 956, + 952, 1077, 18551, 611, 18551, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 322, -1000, -1000, 18551, -1000, -1000, 475, -1000, + -1000, 659, -1000, 18551, -1000, -1000, 831, -1000, 907, -171, + -188, 969, 971, 971, 981, 1076, 979, 975, -1000, 462, + 608, -1000, -1000, 793, -1000, -1000, 48, 923, -180, -1000, + 904, -1000, 958, 428, -1000, -1000, -1000, -1000, 461, -1000, + 1069, 1066, -1000, 18551, -1000, 45, -1000, -182, -1000, 394, + -1000, -1000, -1000, 441, 429, 650, 43, -185, -1000, -1000, + -1000, -1000, 851, 790, -193, 849, -1000, 1120, 10523, -1000, + -1000, 1137, 198, 198, 585, 493, -1000, -1000, -1000, 73, + 371, -1000, -1000, -1000, -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1400, 1397, 25, 73, 69, 1396, 1395, 1394, 1392, - 93, 92, 91, 1389, 1386, 1383, 1382, 1380, 1379, 1378, - 1377, 1368, 1364, 1362, 1361, 1358, 1351, 1350, 1343, 1341, - 1338, 1335, 1331, 1320, 81, 1318, 1317, 1315, 1314, 77, - 1312, 1311, 1310, 1309, 1308, 41, 194, 45, 62, 1307, - 96, 468, 1306, 30, 71, 66, 1305, 48, 1302, 1301, - 72, 1300, 1294, 58, 1292, 1291, 56, 1290, 60, 1288, - 12, 37, 1286, 1283, 1282, 1281, 80, 2280, 1278, 1277, - 13, 1275, 1274, 87, 1272, 65, 29, 14, 19, 28, - 1271, 67, 1268, 6, 1267, 63, 1264, 1262, 1258, 1257, - 20, 1256, 61, 1255, 23, 1254, 17, 1252, 10, 55, - 34, 24, 5, 1251, 1250, 21, 70, 57, 74, 1248, - 1247, 1245, 433, 1244, 1243, 64, 1242, 1240, 1228, 39, - 83, 94, 516, 1227, 1225, 1219, 1218, 1217, 53, 761, - 1826, 128, 75, 1216, 1215, 1213, 2780, 38, 59, 16, - 1210, 1205, 1203, 43, 111, 33, 396, 1195, 35, 1194, - 1191, 1190, 1189, 1187, 1185, 1184, 257, 1183, 1182, 1181, - 18, 22, 76, 32, 1180, 1179, 1176, 1175, 49, 68, - 1174, 1172, 51, 1171, 1170, 27, 1169, 1168, 1165, 1164, - 1163, 36, 8, 1148, 15, 1147, 9, 1144, 31, 1141, - 7, 1121, 11, 1117, 3, 0, 1115, 4, 42, 1, - 1114, 2, 1107, 1101, 1100, 1353, 1126, 78, 1097, 79, + 0, 1414, 1413, 25, 76, 72, 1412, 1411, 1410, 1409, + 106, 101, 100, 1408, 1407, 1405, 1402, 1401, 1398, 1397, + 1391, 1390, 1389, 1388, 1385, 1382, 1381, 1379, 1378, 1377, + 1376, 1375, 1374, 1373, 91, 1372, 1371, 1367, 1366, 89, + 1365, 1364, 1363, 1361, 1357, 35, 108, 53, 66, 1356, + 71, 2188, 1355, 62, 70, 64, 1354, 32, 1353, 1352, + 93, 1351, 1350, 60, 1349, 1348, 2106, 1347, 68, 1346, + 14, 42, 1344, 1343, 1342, 1340, 84, 1317, 1339, 1338, + 17, 1332, 1328, 94, 1327, 73, 21, 16, 22, 28, + 1326, 69, 1324, 8, 1322, 63, 1321, 1316, 1313, 1303, + 50, 1301, 67, 1294, 19, 1291, 7, 11, 1289, 1288, + 1287, 1286, 1285, 1284, 4, 1280, 1279, 1274, 24, 1273, + 10, 57, 37, 29, 9, 1271, 1270, 27, 83, 55, + 74, 1269, 1268, 1267, 424, 1266, 1263, 51, 1262, 102, + 1260, 30, 75, 103, 561, 1259, 1257, 1256, 1255, 1254, + 48, 519, 1441, 23, 79, 1253, 1251, 1250, 2304, 41, + 56, 18, 1248, 1245, 1244, 36, 59, 43, 472, 1242, + 34, 1241, 1239, 1236, 1235, 1234, 1228, 1225, 96, 1224, + 1223, 1221, 61, 65, 77, 31, 1220, 1218, 1217, 1215, + 49, 78, 1214, 1213, 58, 1205, 1188, 38, 1187, 1186, + 1182, 1181, 1180, 39, 15, 1179, 20, 1177, 13, 1176, + 33, 1169, 3, 1168, 12, 1167, 2, 0, 1166, 6, + 45, 1, 1165, 5, 1161, 1159, 1158, 1310, 940, 90, + 1154, 87, } var yyR1 = [...]int{ - 0, 213, 214, 214, 1, 1, 1, 1, 1, 1, + 0, 225, 226, 226, 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, 205, 205, 205, 21, 33, 3, 3, 3, 3, + 1, 217, 217, 217, 21, 33, 3, 3, 3, 3, 2, 2, 8, 9, 4, 5, 5, 10, 10, 38, - 38, 11, 12, 12, 12, 12, 217, 217, 60, 60, - 61, 61, 109, 109, 13, 14, 14, 118, 118, 117, - 117, 117, 119, 119, 119, 119, 156, 156, 15, 15, - 15, 15, 15, 15, 15, 207, 207, 206, 204, 204, - 203, 203, 202, 22, 187, 189, 189, 188, 188, 188, - 188, 179, 159, 159, 159, 159, 162, 162, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 161, 161, 161, - 161, 161, 163, 163, 163, 163, 163, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 165, 165, 165, 165, 165, 165, 165, 165, - 178, 178, 166, 166, 172, 172, 173, 173, 173, 175, - 175, 176, 176, 133, 133, 133, 168, 168, 169, 169, - 174, 174, 170, 170, 170, 171, 171, 171, 177, 177, - 177, 177, 177, 167, 167, 180, 180, 197, 197, 196, - 196, 196, 186, 186, 193, 193, 193, 193, 193, 183, - 183, 183, 184, 184, 182, 182, 185, 185, 195, 195, - 194, 181, 181, 198, 198, 198, 198, 210, 211, 209, - 209, 209, 209, 209, 190, 190, 190, 191, 191, 191, - 192, 192, 192, 16, 16, 16, 16, 16, 16, 16, + 38, 11, 12, 12, 12, 12, 229, 229, 60, 60, + 61, 61, 121, 121, 13, 14, 14, 130, 130, 129, + 129, 129, 131, 131, 131, 131, 168, 168, 15, 15, + 15, 15, 15, 15, 15, 219, 219, 218, 216, 216, + 215, 215, 214, 22, 199, 201, 201, 200, 200, 200, + 200, 191, 171, 171, 171, 171, 174, 174, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 173, 173, 173, + 173, 173, 175, 175, 175, 175, 175, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 177, 177, 177, 177, 177, 177, 177, 177, + 190, 190, 178, 178, 184, 184, 185, 185, 185, 187, + 187, 188, 188, 145, 145, 145, 180, 180, 181, 181, + 186, 186, 182, 182, 182, 183, 183, 183, 189, 189, + 189, 189, 189, 179, 179, 192, 192, 209, 209, 208, + 208, 208, 198, 198, 205, 205, 205, 205, 205, 195, + 195, 195, 196, 196, 194, 194, 197, 197, 207, 207, + 206, 193, 193, 210, 210, 210, 210, 222, 223, 221, + 221, 221, 221, 221, 202, 202, 202, 203, 203, 203, + 204, 204, 204, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 201, 199, 199, 200, 200, 17, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 213, 211, 211, 212, 212, 17, 23, 23, 18, 18, 18, 18, 18, 19, 19, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 126, 126, 212, 212, 128, 128, 124, 124, 127, 127, - 125, 125, 125, 129, 129, 129, 130, 130, 157, 157, - 157, 26, 26, 28, 28, 29, 30, 30, 151, 151, - 152, 152, 31, 32, 37, 37, 37, 37, 37, 37, + 138, 138, 224, 224, 140, 140, 136, 136, 139, 139, + 137, 137, 137, 141, 141, 141, 142, 142, 169, 169, + 169, 26, 26, 28, 28, 29, 30, 30, 163, 163, + 164, 164, 31, 32, 37, 37, 37, 37, 37, 37, 40, 40, 40, 7, 7, 7, 7, 36, 36, 36, - 6, 6, 27, 27, 27, 27, 20, 218, 34, 35, + 6, 6, 27, 27, 27, 27, 20, 230, 34, 35, 35, 39, 39, 39, 41, 41, 41, 44, 44, 44, 47, 47, 49, 49, 49, 49, 49, 50, 50, 50, - 50, 50, 50, 46, 46, 48, 48, 48, 48, 143, - 143, 143, 142, 142, 52, 52, 53, 53, 54, 54, - 55, 55, 55, 92, 69, 69, 108, 108, 110, 110, + 50, 50, 50, 46, 46, 48, 48, 48, 48, 155, + 155, 155, 154, 154, 52, 52, 53, 53, 54, 54, + 55, 55, 55, 92, 69, 69, 120, 120, 122, 122, 56, 56, 56, 56, 57, 57, 58, 58, 59, 59, - 150, 150, 149, 149, 149, 148, 148, 62, 62, 62, + 162, 162, 161, 161, 161, 160, 160, 62, 62, 62, 64, 63, 63, 63, 63, 65, 65, 67, 67, 66, 66, 68, 70, 70, 70, 70, 70, 71, 71, 51, - 51, 51, 51, 51, 51, 51, 51, 121, 121, 73, + 51, 51, 51, 51, 51, 51, 51, 133, 133, 73, 73, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 84, 84, 84, 84, 84, 84, 74, 74, 74, 74, 74, 74, 74, 45, 45, 85, 85, 85, 91, @@ -3069,53 +3101,57 @@ var yyR1 = [...]int{ 77, 77, 77, 77, 77, 77, 81, 81, 81, 81, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 219, - 219, 83, 82, 82, 82, 82, 82, 82, 82, 43, - 43, 43, 43, 43, 155, 155, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 96, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 231, + 231, 83, 82, 82, 82, 82, 82, 82, 82, 43, + 43, 43, 43, 43, 167, 167, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 96, 96, 42, 42, 94, 94, 95, 97, 97, 93, 93, 93, 76, 76, 76, 76, 76, 76, 76, 76, 78, 78, 78, 98, 98, 99, 99, 100, 100, 101, 101, - 102, 103, 103, 103, 104, 104, 104, 104, 106, 106, - 106, 105, 105, 75, 75, 75, 75, 107, 107, 107, - 107, 111, 111, 87, 87, 89, 89, 88, 90, 112, - 112, 115, 113, 113, 116, 116, 116, 116, 116, 114, - 114, 114, 145, 145, 145, 120, 120, 131, 131, 132, - 132, 122, 122, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 123, 123, 123, 135, 135, 135, 136, - 136, 137, 137, 137, 144, 144, 140, 140, 141, 141, - 146, 146, 147, 147, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 215, 216, 153, 154, - 154, 154, + 102, 103, 103, 103, 104, 104, 104, 104, 118, 118, + 118, 105, 105, 105, 105, 110, 110, 110, 106, 106, + 108, 108, 108, 109, 109, 109, 107, 113, 113, 115, + 115, 114, 114, 112, 112, 117, 117, 116, 116, 111, + 111, 75, 75, 75, 75, 119, 119, 119, 119, 123, + 123, 87, 87, 89, 89, 88, 90, 124, 124, 127, + 125, 125, 128, 128, 128, 128, 128, 126, 126, 126, + 157, 157, 157, 132, 132, 143, 143, 144, 144, 134, + 134, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 135, 135, 135, 147, 147, 147, 148, 148, 149, + 149, 149, 156, 156, 152, 152, 153, 153, 158, 158, + 159, 159, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 227, 228, 165, 166, 166, + 166, } var yyR2 = [...]int{ @@ -3183,13 +3219,16 @@ var yyR2 = [...]int{ 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 0, 3, 0, 2, 0, 3, 1, 3, 2, 0, 1, 1, 0, 2, 4, 4, 0, 2, - 4, 0, 4, 2, 1, 5, 4, 1, 3, 3, - 5, 0, 5, 1, 3, 1, 2, 3, 1, 1, - 3, 3, 1, 3, 3, 3, 3, 3, 2, 1, - 2, 1, 1, 1, 1, 1, 1, 0, 2, 0, - 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 2, 3, 0, 1, 1, 1, - 1, 0, 1, 1, 0, 2, 1, 1, 1, 1, + 4, 0, 9, 3, 5, 0, 3, 3, 0, 1, + 0, 2, 2, 0, 2, 2, 2, 0, 3, 0, + 3, 0, 3, 0, 4, 0, 3, 0, 4, 0, + 1, 2, 1, 5, 4, 1, 3, 3, 5, 0, + 5, 1, 3, 1, 2, 3, 1, 1, 3, 3, + 1, 3, 3, 3, 3, 3, 2, 1, 2, 1, + 1, 1, 1, 1, 1, 0, 2, 0, 3, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 2, 3, 0, 1, 1, 1, 1, 0, + 1, 1, 0, 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, 1, 1, @@ -3220,362 +3259,373 @@ var yyR2 = [...]int{ 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, 1, 1, 1, 1, 0, 0, - 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, + 1, } var yyChk = [...]int{ - -1000, -213, -1, -3, -8, -9, -10, -11, -12, -13, + -1000, -225, -1, -3, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -24, -25, -26, -28, -29, -30, -31, -32, -6, -27, -20, -21, -33, -4, - -215, 6, 7, 8, -38, 10, 11, 31, -22, 128, - 129, 131, 130, 164, 132, 157, 58, 178, 179, 181, - 182, 183, 184, -40, 162, 163, 32, 33, 134, 35, - 40, 62, 9, 271, 159, 158, 26, -214, 373, -39, - 5, -100, 16, -3, -34, -218, -34, -34, -34, -34, - -34, -34, -187, -189, 62, 101, -137, 138, 82, 263, - 135, 136, 142, -140, -205, -139, 65, 66, 67, 281, - 150, 313, 314, 178, 192, 186, 213, 205, 282, 315, - 151, 203, 206, 250, 148, 316, 233, 240, 76, 181, - 259, 317, 39, 160, 201, 197, 318, 290, 195, 28, - 319, 242, 218, 320, 286, 244, 196, 241, 134, 321, - 153, 369, 146, 322, 219, 223, 323, 251, 324, 325, - 326, 190, 191, 327, 149, 253, 217, 147, 34, 245, - 283, 42, 168, 254, 221, 40, 328, 216, 212, 329, - 330, 331, 332, 215, 189, 211, 46, 225, 224, 226, - 249, 208, 333, 334, 335, 154, 336, 198, 19, 337, - 338, 339, 340, 341, 257, 163, 342, 166, 343, 344, - 345, 346, 347, 348, 243, 220, 222, 143, 170, 239, - 285, 349, 255, 194, 350, 155, 167, 162, 258, 156, - 351, 352, 353, 354, 355, 356, 357, 182, 38, 358, - 359, 360, 361, 177, 252, 261, 45, 230, 362, 188, - 145, 363, 179, 174, 235, 209, 169, 364, 365, 199, - 200, 214, 187, 210, 180, 370, 171, 164, 366, 260, - 231, 287, 207, 204, 175, 367, 172, 173, 368, 371, - 246, 236, 247, 248, 237, 176, 284, 256, 202, 232, - -123, 138, 263, 135, 237, 284, 136, 136, 137, 138, - 263, 135, 136, -66, -146, -205, -139, 138, 136, 119, - 206, 250, 128, 234, 245, 246, 242, -128, 243, 170, - -157, 136, -124, 233, 236, 237, 176, -212, -205, 244, - 252, 251, 238, 248, 247, -146, 180, -151, 185, -140, - 183, -66, -37, 369, 132, -153, -153, 235, 235, -153, - -86, -51, -72, 85, -77, 30, 24, -76, -73, -93, - -90, -91, 119, 120, 122, 121, 123, 108, 109, 116, - 86, 124, -81, -79, -80, -82, 69, 68, 77, 70, - 71, 72, 73, 78, 79, 80, -140, -146, -88, -215, - 52, 53, 272, 273, 274, 275, 280, 276, 88, 41, - 262, 270, 269, 268, 266, 267, 264, 265, 278, 279, - 141, 263, 135, 114, 271, -205, -139, 39, -5, -4, - -215, 6, 21, 22, -104, 18, 17, -216, 64, -41, - -49, 47, 48, -50, 22, 36, 51, 49, -35, -48, - 110, -51, -146, -48, -122, 140, -122, -122, -113, -156, - 180, -116, 252, 251, -141, -114, -140, -138, 250, 206, - 249, 133, 288, 84, 23, 25, 228, 87, 119, 17, - 88, 118, 272, 128, 56, 289, 264, 265, 262, 274, - 275, 263, 234, 30, 11, 291, 26, 158, 22, 36, - 112, 130, 91, 92, 161, 24, 159, 80, 294, 20, - 59, 12, 14, 295, 296, 15, 141, 140, 103, 137, - 54, 9, 124, 27, 100, 50, 297, 29, 298, 299, - 300, 301, 52, 101, 18, 266, 267, 32, 302, 280, - 165, 114, 57, 43, 85, 303, 304, 78, 305, 81, - 60, 82, 16, 55, 37, 306, 307, 308, 309, 102, - 131, 271, 53, 310, 135, 6, 277, 31, 157, 51, - 311, 136, 90, 278, 279, 139, 79, 5, 142, 33, - 10, 58, 61, 268, 269, 270, 41, 89, 13, 312, - 83, -188, 101, -179, -140, -66, 137, -66, 271, -132, - 141, -132, -132, 136, -66, -205, -205, 128, 130, 133, - 60, 69, -23, -66, -131, 141, -205, -131, -131, -131, - -66, 125, -66, -205, 31, -129, 101, 13, 263, -205, - 170, 136, 171, 138, -130, 101, -130, -130, -183, 137, - 34, 149, -154, -215, -141, 174, 175, 174, -127, -126, - 240, 241, 235, 239, 13, 175, 235, 173, -129, -154, - 139, -140, -36, -140, 69, -7, -3, -11, -10, -12, - 93, -153, -153, 63, 84, 82, 83, 100, -51, -74, - 103, 85, 101, 102, 87, 105, 104, 115, 108, 109, - 110, 111, 112, 113, 114, 106, 107, 118, 93, 94, - 95, 96, 97, 98, 99, -121, -215, -91, -215, 126, - 127, -77, -77, -77, -77, -77, -77, -77, -77, -77, - -77, -215, 125, -2, -86, -4, -215, -215, -215, -215, - -215, -215, -215, -215, -96, -51, -215, -219, -83, -215, - -219, -83, -219, -83, -219, -215, -219, -83, -219, -83, - -219, -219, -83, -215, -215, -215, -215, -215, -215, -215, - -153, -100, -3, -34, -106, 20, 32, -51, -101, -102, - -51, -100, 43, -46, -48, -50, 47, 48, 75, 12, - -143, -142, 23, -140, 69, 125, 12, -67, 27, -66, - -53, -54, -55, -56, -69, -92, -215, -66, 12, -60, - -61, -66, -68, -146, 63, 180, -116, -156, -118, -117, - 253, 255, 93, -145, -140, 69, 30, 31, 64, 63, - -66, -159, -162, -164, -163, -165, -160, -161, 203, 204, - 119, 207, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 31, 160, 199, 200, 201, 202, 219, 220, - 221, 222, 223, 224, 225, 226, 186, 205, 282, 187, - 188, 189, 190, 191, 192, 194, 195, 196, 197, 198, - -205, -154, 138, -205, 85, -205, -66, -66, -154, -154, - -154, 172, 172, 136, 136, 177, -66, 69, 63, 139, - -60, 24, 60, -66, -205, -205, -147, -146, -138, -154, - -129, 69, -51, -154, -154, -154, -66, -154, -154, 69, - -184, 12, 103, -154, -154, -125, 12, 103, 12, -125, - -51, -130, 60, -152, 183, 217, 370, 371, 372, -51, - -51, -51, -51, -84, 78, 85, 79, 80, -77, -85, - -88, -91, 74, 103, 101, 102, 87, -77, -77, -77, + -227, 6, 7, 8, -38, 10, 11, 31, -22, 139, + 140, 142, 141, 175, 143, 168, 69, 189, 190, 192, + 193, 194, 195, -40, 173, 174, 32, 33, 145, 35, + 40, 73, 9, 282, 170, 169, 26, -226, 384, -39, + 5, -100, 16, -3, -34, -230, -34, -34, -34, -34, + -34, -34, -199, -201, 73, 112, -149, 149, 93, 274, + 146, 147, 153, -152, -217, -151, 76, 77, 78, 292, + 161, 324, 325, 189, 203, 197, 224, 216, 293, 326, + 162, 214, 217, 261, 159, 327, 244, 251, 87, 192, + 270, 328, 46, 39, 171, 212, 208, 329, 301, 206, + 45, 28, 44, 330, 253, 229, 43, 331, 297, 255, + 207, 252, 145, 332, 164, 380, 157, 333, 230, 234, + 334, 262, 47, 335, 336, 337, 201, 202, 338, 160, + 264, 228, 158, 34, 256, 294, 53, 179, 265, 41, + 232, 40, 339, 227, 223, 48, 340, 341, 342, 343, + 226, 200, 222, 57, 236, 235, 237, 260, 219, 344, + 345, 346, 165, 347, 209, 19, 348, 349, 350, 51, + 351, 352, 268, 174, 353, 49, 177, 354, 355, 356, + 357, 358, 359, 254, 231, 233, 154, 181, 250, 296, + 360, 266, 205, 361, 166, 178, 173, 269, 167, 362, + 363, 364, 365, 366, 367, 368, 193, 38, 369, 370, + 371, 372, 188, 263, 272, 56, 241, 373, 199, 156, + 374, 190, 50, 185, 246, 42, 220, 180, 375, 376, + 210, 211, 225, 198, 221, 191, 381, 182, 175, 377, + 271, 242, 298, 218, 215, 186, 378, 183, 184, 379, + 382, 257, 247, 258, 259, 248, 187, 295, 267, 213, + 243, -135, 149, 274, 146, 248, 295, 147, 147, 148, + 149, 274, 146, 147, -66, -158, -217, -151, 149, 147, + 130, 217, 261, 139, 245, 256, 257, 253, -140, 254, + 181, -169, 147, -136, 244, 247, 248, 187, -224, -217, + 255, 263, 262, 249, 259, 258, -158, 191, -163, 196, + -152, 194, -66, -37, 380, 143, -165, -165, 246, 246, + -165, -86, -51, -72, 96, -77, 30, 24, -76, -73, + -93, -90, -91, 130, 131, 133, 132, 134, 119, 120, + 127, 97, 135, -81, -79, -80, -82, 80, 79, 88, + 81, 82, 83, 84, 89, 90, 91, -152, -158, -88, + -227, 63, 64, 283, 284, 285, 286, 291, 287, 99, + 52, 273, 281, 280, 279, 277, 278, 275, 276, 289, + 290, 152, 274, 146, 125, 282, -217, -151, 39, -5, + -4, -227, 6, 21, 22, -104, 18, 17, -228, 75, + -41, -49, 58, 59, -50, 22, 36, 62, 60, -35, + -48, 121, -51, -158, -48, -134, 151, -134, -134, -125, + -168, 191, -128, 263, 262, -153, -126, -152, -150, 261, + 217, 260, 144, 299, 95, 23, 25, 239, 98, 130, + 17, 99, 129, 283, 139, 67, 300, 275, 276, 273, + 285, 286, 274, 245, 30, 11, 302, 26, 169, 22, + 36, 123, 141, 102, 103, 172, 24, 170, 91, 305, + 20, 70, 12, 14, 306, 307, 15, 152, 151, 114, + 148, 65, 9, 135, 27, 111, 61, 308, 29, 309, + 310, 311, 312, 63, 112, 18, 277, 278, 32, 313, + 291, 176, 125, 68, 54, 96, 314, 315, 89, 316, + 92, 71, 93, 16, 66, 37, 317, 318, 319, 320, + 113, 142, 282, 64, 321, 146, 6, 288, 31, 168, + 62, 322, 147, 101, 289, 290, 150, 90, 5, 153, + 33, 10, 69, 72, 279, 280, 281, 52, 100, 13, + 323, 94, -200, 112, -191, -152, -66, 148, -66, 282, + -144, 152, -144, -144, 147, -66, -217, -217, 139, 141, + 144, 71, 80, -23, -66, -143, 152, -217, -143, -143, + -143, -66, 136, -66, -217, 31, -141, 112, 13, 274, + -217, 181, 147, 182, 149, -142, 112, -142, -142, -195, + 148, 34, 160, -166, -227, -153, 185, 186, 185, -139, + -138, 251, 252, 246, 250, 13, 186, 246, 184, -141, + -166, 150, -152, -36, -152, 80, -7, -3, -11, -10, + -12, 104, -165, -165, 74, 95, 93, 94, 111, -51, + -74, 114, 96, 112, 113, 98, 116, 115, 126, 119, + 120, 121, 122, 123, 124, 125, 117, 118, 129, 104, + 105, 106, 107, 108, 109, 110, -133, -227, -91, -227, + 137, 138, -77, -77, -77, -77, -77, -77, -77, -77, + -77, -77, -227, 136, -2, -86, -4, -227, -227, -227, + -227, -227, -227, -227, -227, -96, -51, -227, -231, -83, + -227, -231, -83, -231, -83, -231, -227, -231, -83, -231, + -83, -231, -231, -83, -227, -227, -227, -227, -227, -227, + -227, -165, -100, -3, -34, -118, 20, 32, -51, -101, + -102, -51, -100, 54, -46, -48, -50, 58, 59, 86, + 12, -155, -154, 23, -152, 80, 136, 12, -67, 27, + -66, -53, -54, -55, -56, -69, -92, -227, -66, 12, + -60, -61, -66, -68, -158, 74, 191, -128, -168, -130, + -129, 264, 266, 104, -157, -152, 80, 30, 31, 75, + 74, -66, -171, -174, -176, -175, -177, -172, -173, 214, + 215, 130, 218, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 31, 171, 210, 211, 212, 213, 230, + 231, 232, 233, 234, 235, 236, 237, 197, 216, 293, + 198, 199, 200, 201, 202, 203, 205, 206, 207, 208, + 209, -217, -166, 149, -217, 96, -217, -66, -66, -166, + -166, -166, 183, 183, 147, 147, 188, -66, 80, 74, + 150, -60, 24, 71, -66, -217, -217, -159, -158, -150, + -166, -141, 80, -51, -166, -166, -166, -66, -166, -166, + 80, -196, 12, 114, -166, -166, -137, 12, 114, 12, + -137, -51, -142, 71, -164, 194, 228, 381, 382, 383, + -51, -51, -51, -51, -84, 89, 96, 90, 91, -77, + -85, -88, -91, 85, 114, 112, 113, 98, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, - -77, -77, -155, -205, 69, -205, -76, -76, -140, -47, - 22, 36, -46, -141, -147, -138, -39, -216, -216, -100, - -46, -46, -51, -51, -93, 69, -46, -93, 69, -46, - -46, -44, 22, 36, -94, -95, 89, -93, -140, -146, - -216, -77, -140, -140, -46, -47, -47, -46, -46, -104, - -216, -105, 27, 10, 103, 63, 19, 63, -103, 25, - 26, -104, -78, -140, 70, 73, -52, 63, 12, -50, - -66, -142, 110, -147, -66, -109, 166, -66, 31, 63, - -62, -64, -63, -65, 50, 54, 56, 51, 52, 53, - 57, -150, 23, -53, -3, -215, -149, 166, -148, 23, - -146, 69, -66, -60, -217, 63, 12, 61, -217, 63, - 125, -116, -118, 63, 254, 256, 257, 60, 81, -51, - -171, 118, -190, -191, -192, -141, 69, 70, -179, -180, - -181, -193, 152, -198, 143, 145, 142, -182, 153, 137, - 29, 64, -133, 78, 85, -175, 231, -166, 62, -166, - -166, -166, -166, -170, 206, -170, -170, -170, 62, 62, - -166, -166, -166, -172, 62, -172, -172, -173, 62, -173, - -144, 61, -66, -154, 24, -154, -134, 133, 130, 131, - -201, 129, 228, 206, 76, 30, 16, 272, 166, 287, - -205, 167, -66, -66, -66, -66, -66, 133, 130, -66, - -66, -66, -154, -66, -129, -146, -146, -66, -129, -66, - -140, 78, 79, 80, -85, -77, -77, -77, -45, 161, - 84, -216, -216, -46, -46, -215, 125, -5, -104, -216, - -216, 63, 61, 23, 12, 12, -216, 12, 12, -216, - -216, -46, -97, -95, 91, -51, -216, 125, -216, 63, - 63, -216, -216, -216, -216, -216, -106, 37, 45, -51, - -51, -102, -106, -120, 20, 12, 41, 41, -71, 13, - -48, -53, -50, 125, -71, -75, 31, 41, -3, -215, - -215, -112, -115, -93, -54, -55, -55, -54, -55, 50, - 50, 50, 55, 50, 55, 50, -63, -146, -216, -216, - -3, -70, 58, 140, 59, -215, -148, -109, 61, -53, - -66, -53, -68, -146, 110, -117, -119, 258, 255, 261, - -205, 69, 63, -192, 93, 62, -205, 29, -182, -182, - -185, -205, -185, 29, -168, 30, 78, -176, 232, 70, - -170, -170, -171, 31, -171, -171, -171, -178, 69, -178, - 70, 70, 60, -140, -154, -153, -208, 148, 144, 152, - 153, 146, 65, 66, 67, 137, 29, 143, 145, 166, - 142, -208, -135, -136, 139, 23, 137, 29, 166, -207, - 61, 172, 228, 172, 139, -154, -125, -125, -45, 84, - -77, -77, -216, -216, -47, -141, -100, -106, -158, 119, - 203, 160, 201, 197, 217, 208, 230, 199, 231, -155, - -158, -77, -77, -77, -77, 281, -100, 92, -51, 90, - -141, -77, -77, 38, 46, -66, -98, 14, -51, 110, - -104, -111, 60, -112, -87, -89, -88, -215, -107, -140, - -110, -140, -71, 63, 93, -58, -57, 60, 61, -59, - 60, -57, 50, 50, -216, 137, 137, 137, -110, -71, - -53, -71, -71, 125, 255, 259, 260, -191, -192, -195, - -194, -140, -198, 153, -185, -185, 62, -169, 60, -77, - 64, -171, -171, -205, 119, 64, 63, 64, 63, 64, - 63, -66, -153, -153, -66, -153, -140, -204, 284, -206, - -205, -140, -140, -140, -66, -129, -129, -77, -216, -104, - -216, -166, -166, -166, -173, -166, 191, -166, 191, -216, - -216, 20, 20, 20, 20, -215, -42, 277, -51, 63, - 63, 69, -99, 15, 17, 28, -111, 63, -216, -216, - 63, 125, -216, 63, -100, -115, -51, -51, 62, -51, - -215, -215, -215, -216, -100, -71, 64, 63, -166, -108, - -140, -174, 228, 10, -170, 69, -170, 70, 70, -154, - 27, -203, -202, -141, 62, 61, -106, -170, -205, -77, - -77, -77, -77, -77, -104, 69, -77, -77, -51, -86, - 29, -89, 41, -3, -140, -140, -140, -104, -108, -108, - -216, -108, -108, -149, -104, -197, -196, 61, 147, 76, - -194, 64, 63, -177, 143, 29, 142, -80, -171, -171, - 64, 64, -215, 63, 93, -108, -66, -216, -216, -216, - -216, -43, 103, 284, -216, -216, -216, 10, -87, 125, - 64, -216, -216, -216, -70, -196, -205, -186, 93, 69, - 155, -140, -167, 76, 29, 29, -199, -200, 166, -202, - -192, 64, -216, 282, 57, 285, -112, -140, 70, -66, - 69, -216, 63, -140, -207, 46, 283, 286, 62, -200, - 41, -204, 46, -108, 168, 284, 64, 169, 285, -210, - -211, 60, -215, 286, -211, 60, 11, 10, -77, 165, - -209, 156, 151, 154, 31, -209, -216, -216, 150, 30, - 78, + -77, -77, -77, -167, -217, 80, -217, -76, -76, -152, + -47, 22, 36, -46, -153, -159, -150, -39, -228, -228, + -100, -46, -46, -51, -51, -93, 80, -46, -93, 80, + -46, -46, -44, 22, 36, -94, -95, 100, -93, -152, + -158, -228, -77, -152, -152, -46, -47, -47, -46, -46, + -104, -228, -105, 27, 10, 114, 74, 19, 74, -103, + 25, 26, -104, -78, -152, 81, 84, -52, 74, 12, + -50, -66, -154, 121, -159, -66, -121, 177, -66, 31, + 74, -62, -64, -63, -65, 61, 65, 67, 62, 63, + 64, 68, -162, 23, -53, -3, -227, -161, 177, -160, + 23, -158, 80, -66, -60, -229, 74, 12, 72, -229, + 74, 136, -128, -130, 74, 265, 267, 268, 71, 92, + -51, -183, 129, -202, -203, -204, -153, 80, 81, -191, + -192, -193, -205, 163, -210, 154, 156, 153, -194, 164, + 148, 29, 75, -145, 89, 96, -187, 242, -178, 73, + -178, -178, -178, -178, -182, 217, -182, -182, -182, 73, + 73, -178, -178, -178, -184, 73, -184, -184, -185, 73, + -185, -156, 72, -66, -166, 24, -166, -146, 144, 141, + 142, -213, 140, 239, 217, 87, 30, 16, 283, 177, + 298, -217, 178, -66, -66, -66, -66, -66, 144, 141, + -66, -66, -66, -166, -66, -141, -158, -158, -66, -141, + -66, -152, 89, 90, 91, -85, -77, -77, -77, -45, + 172, 95, -228, -228, -46, -46, -227, 136, -5, -104, + -228, -228, 74, 72, 23, 12, 12, -228, 12, 12, + -228, -228, -46, -97, -95, 102, -51, -228, 136, -228, + 74, 74, -228, -228, -228, -228, -228, -118, 37, 45, + 56, -51, -51, -102, -118, -132, 20, 12, 52, 52, + -71, 13, -48, -53, -50, 136, -71, -75, 31, 52, + -3, -227, -227, -124, -127, -93, -54, -55, -55, -54, + -55, 61, 61, 61, 66, 61, 66, 61, -63, -158, + -228, -228, -3, -70, 69, 151, 70, -227, -160, -121, + 72, -53, -66, -53, -68, -158, 121, -129, -131, 269, + 266, 272, -217, 80, 74, -204, 104, 73, -217, 29, + -194, -194, -197, -217, -197, 29, -180, 30, 89, -188, + 243, 81, -182, -182, -183, 31, -183, -183, -183, -190, + 80, -190, 81, 81, 71, -152, -166, -165, -220, 159, + 155, 163, 164, 157, 76, 77, 78, 148, 29, 154, + 156, 177, 153, -220, -147, -148, 150, 23, 148, 29, + 177, -219, 72, 183, 239, 183, 150, -166, -137, -137, + -45, 95, -77, -77, -228, -228, -47, -153, -100, -118, + -170, 130, 214, 171, 212, 208, 228, 219, 241, 210, + 242, -167, -170, -77, -77, -77, -77, 292, -100, 103, + -51, 101, -153, -77, -77, 38, 80, 80, 57, -66, + -98, 14, -51, 121, -104, -123, 71, -124, -87, -89, + -88, -227, -119, -152, -122, -152, -71, 74, 104, -58, + -57, 71, 72, -59, 71, -57, 61, 61, -228, 148, + 148, 148, -122, -71, -53, -71, -71, 136, 266, 270, + 271, -203, -204, -207, -206, -152, -210, 164, -197, -197, + 73, -181, 71, -77, 75, -183, -183, -217, 130, 75, + 74, 75, 74, 75, 74, -66, -165, -165, -66, -165, + -152, -216, 295, -218, -217, -152, -152, -152, -66, -141, + -141, -77, -228, -104, -228, -178, -178, -178, -185, -178, + 202, -178, 202, -228, -228, 20, 20, 20, 20, -227, + -42, 288, -51, 74, 74, 80, -182, -99, 15, 17, + 28, -123, 74, -228, -228, 74, 136, -228, 74, -100, + -127, -51, -51, 73, -51, -227, -227, -227, -228, -100, + -71, 75, 74, -178, -120, -152, -186, 239, 10, -182, + 80, -182, 81, 81, -166, 27, -215, -214, -153, 73, + 72, -118, -182, -217, -77, -77, -77, -77, -77, -104, + 80, -77, -77, -182, -107, -112, -139, -51, -86, 29, + -89, 52, -3, -152, -152, -152, -104, -120, -120, -228, + -120, -120, -161, -104, -209, -208, 72, 158, 87, -206, + 75, 74, -189, 154, 29, 153, -80, -183, -183, 75, + 75, -227, 74, 104, -120, -66, -228, -228, -228, -228, + -43, 114, 295, -228, -228, -228, -110, 380, -113, 41, + -114, 42, 10, -87, 136, 75, -228, -228, -228, -70, + -208, -217, -198, 104, 80, 166, -152, -179, 87, 29, + 29, -211, -212, 177, -214, -204, 75, -228, 293, 68, + 296, -107, 46, 220, -115, 50, -116, -111, 51, 17, + -124, -152, 81, -66, 80, -228, 74, -152, -219, 57, + 294, 297, -108, 48, -106, 47, -106, -114, 17, -117, + 43, 44, 80, 73, -212, 52, -216, 57, -109, 49, + 71, 92, 80, 17, 17, -120, 179, 295, 71, 92, + 80, 80, 75, 180, 296, -222, -223, 71, -227, 297, + -223, 71, 11, 10, -77, 176, -221, 167, 162, 165, + 31, -221, -228, -228, 161, 30, 89, } var yyDef = [...]int{ 30, -2, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 626, - 0, 367, 367, 367, 367, 367, 367, 367, 0, 701, - 693, 0, 0, 0, 0, -2, 332, 333, 0, 335, - -2, 0, 0, 344, 1018, 1018, 0, 0, 1018, 0, - 0, 1016, 49, 50, 350, 351, 352, 1, 3, 0, - 371, 634, 0, 0, -2, 369, 0, 0, 681, 681, - 681, 0, 78, 79, 0, 0, 0, 1001, 0, 679, - 679, 679, 702, 703, 706, 707, 31, 32, 33, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, - 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, - 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, - 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, - 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, - 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, - 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, - 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, - 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, - 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, - 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, - 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, - 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, - 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, - 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, - 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, - 995, 996, 997, 998, 999, 1000, 1002, 1003, 1004, 1005, - 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, - 0, 0, 0, 0, 0, 0, 0, 677, 0, 677, - 677, 677, 0, 278, 449, 710, 711, 1001, 0, 0, - 0, 323, 0, 326, 326, 326, 292, 0, 294, 1019, - 0, 0, 0, 301, 0, 0, 307, 323, 1019, 315, - 329, 330, 317, 312, 313, 331, 334, 0, 339, 342, - 0, 357, 0, 876, 349, 362, 363, 1018, 1018, 366, - 34, 500, 459, 0, 465, 467, 0, 502, 503, 504, - 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 532, 533, 534, 535, 611, 612, 613, 614, - 615, 616, 617, 618, 469, 470, 608, 0, 658, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 599, 0, - 569, 569, 569, 569, 569, 569, 569, 569, 0, 0, - 0, 0, 0, 0, 0, -2, -2, 1018, 626, 45, - 0, 367, 372, 373, 638, 0, 0, 626, 1017, 0, - 0, -2, -2, 383, 389, 390, 391, 392, 368, 0, - 395, 399, 0, 0, 0, 682, 0, 0, 64, 0, - 989, 662, -2, -2, 0, 0, 708, 709, -2, 847, - -2, 714, 715, 716, 717, 718, 719, 720, 721, 722, - 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, - 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, - 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, - 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, - 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, - 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, - 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, - 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, - 833, 0, 0, 97, 0, 95, 0, 1019, 0, 0, - 0, 0, 0, 0, 1019, 1019, 1019, 0, 0, 0, - 0, 694, 269, 0, 0, 0, 0, 0, 0, 0, - 277, 0, 279, 1019, 323, 282, 0, 0, 1019, 1019, - 1019, 0, 1019, 1019, 289, 0, 290, 291, 0, 199, - 200, 201, 295, 1020, 1021, 1019, 1019, 320, 0, 320, - 318, 319, 310, 311, 0, 326, 304, 305, 308, 309, - 340, 343, 360, 358, 359, 361, 353, 354, 355, 356, - 0, 364, 365, 0, 0, 0, 0, 0, 463, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 487, 488, - 489, 490, 491, 492, 493, 466, 0, 480, 0, 0, - 0, 522, 523, 524, 525, 526, 527, 528, 529, 530, - 0, 380, 0, 0, 0, 626, 0, 0, 0, 0, - 0, 0, 0, 377, 0, 600, 0, 553, 561, 0, - 554, 562, 555, 563, 556, 0, 557, 564, 558, 565, - 559, 560, 566, 0, 0, 0, 380, 380, 0, 0, - 35, 634, 0, 382, 641, 0, 0, 635, 627, 628, - 631, 634, 0, 404, 393, 384, 387, 388, 370, 0, - 396, 400, 0, 402, 403, 0, 0, 62, 0, 448, - 0, 406, 408, 409, 410, 430, 0, 432, 0, 0, - 0, 58, 60, 449, 0, 989, 668, 0, 66, 67, - 0, 0, 0, 175, 672, 673, 674, 670, 224, 0, - 0, 163, 159, 103, 104, 105, 152, 107, 152, 152, - 152, 152, 172, 172, 172, 172, 135, 136, 137, 138, - 139, 0, 0, 122, 152, 152, 152, 126, 142, 143, - 144, 145, 146, 147, 148, 149, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 154, 154, 154, 156, 156, - 704, 81, 0, 1019, 0, 1019, 93, 0, 238, 240, - 241, 0, 0, 0, 0, 0, 0, 695, 0, 0, - 272, 678, 0, 1019, 275, 276, 450, 712, 713, 280, - 281, 324, 325, 283, 284, 285, 286, 287, 288, 327, - 0, 202, 203, 296, 300, 323, 0, 0, 0, 323, - 302, 303, 0, 0, 341, 345, 346, 347, 348, 501, - 460, 461, 462, 464, 481, 0, 483, 485, 471, 472, - 496, 497, 498, 0, 0, 0, 0, 494, 476, 0, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 521, 584, 585, 0, 519, 520, 531, 0, - 0, 0, 381, 609, 0, -2, 0, 499, 657, 634, - 0, 0, 0, 0, 504, 611, 0, 504, 611, 0, - 0, 0, 378, 379, 606, 603, 0, 0, 608, 0, - 570, 0, 0, 0, 0, 0, 0, 0, 0, 638, - 46, 36, 0, 639, 0, 0, 0, 0, 630, 632, - 633, 638, 0, 619, 0, 0, 457, 0, 0, 385, - 42, 401, 397, 0, 457, 0, 0, 447, 0, 0, - 0, 0, 0, 0, 437, 0, 0, 440, 0, 0, - 0, 0, 431, 0, 0, 0, 452, 932, 433, 0, - 435, 436, -2, 0, 0, 0, 56, 57, 0, 0, - 0, 663, 65, 0, 0, 70, 71, 664, 665, 666, - 667, 0, 94, 225, 227, 230, 231, 232, 98, 99, - 100, 0, 0, 212, 942, 975, 206, 206, 875, 204, - 205, 96, 166, 164, 0, 161, 160, 106, 0, 172, - 172, 129, 130, 175, 0, 175, 175, 175, 0, 0, - 123, 124, 125, 117, 0, 118, 119, 120, 0, 121, - 0, 0, 1019, 83, 680, 84, 1018, 0, 0, 696, - 239, 683, 684, 685, 686, 687, 688, 689, 690, 691, - 692, 0, 85, 243, 245, 244, 248, 0, 0, 0, - 270, 1019, 274, 320, 297, 321, 322, 320, 299, 306, - 337, 482, 484, 486, 473, 494, 477, 0, 474, 0, - 0, 468, 536, 0, 0, 380, 0, 626, 638, 540, - 541, 0, 0, 0, 0, 0, 577, 0, 0, 578, - 0, 626, 0, 604, 0, 0, 552, 0, 571, 0, - 0, 572, 573, 574, 575, 576, 38, 0, 0, 636, - 637, 629, 37, 0, 675, 676, 620, 621, 622, 0, - 394, 405, 386, 0, 634, 651, 0, 0, 644, 0, - 0, 457, 659, 0, 407, 426, 428, 0, 423, 438, - 439, 441, 0, 443, 0, 445, 446, 411, 412, 413, - 0, 414, 0, 0, 0, 0, 434, 457, 0, 457, - 59, 457, 61, 0, 451, 68, 69, 0, 0, 75, - 176, 177, 0, 228, 0, 0, 0, 194, 206, 206, - 197, 207, 198, 0, 168, 0, 165, 102, 162, 0, - 175, 175, 131, 0, 132, 133, 134, 0, 150, 0, - 0, 0, 0, 705, 82, 233, 1018, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 1018, 0, 1018, 697, 698, 699, 700, 0, 88, - 0, 0, 0, 0, 0, 273, 323, 323, 475, 0, - 495, 478, 537, 538, 0, 610, 634, 40, 0, 152, - 152, 589, 152, 156, 592, 152, 594, 152, 597, 0, - 0, 0, 0, 0, 0, 0, 601, 551, 607, 0, - 609, 0, 0, 0, 640, 39, 624, 0, 458, 398, - 43, 47, 0, 651, 643, 653, 655, 0, 0, 647, - 0, 418, 626, 0, 0, 420, 427, 0, 0, 421, - 0, 422, 442, 444, -2, 0, 0, 0, 0, 626, - 457, 54, 55, 0, 72, 73, 74, 226, 229, 0, - 208, 152, 211, 0, 195, 196, 0, 170, 0, 167, - 153, 127, 128, 173, 174, 172, 0, 172, 0, 157, - 0, 1019, 234, 235, 236, 237, 0, 242, 0, 86, - 87, 0, 0, 247, 271, 293, 298, 479, 539, 638, - 542, 586, 172, 590, 591, 593, 595, 596, 598, 544, - 543, 0, 0, 0, 0, 0, 634, 0, 605, 0, - 0, 642, 44, 0, 0, 0, 48, 0, 656, 0, - 0, 0, 63, 0, 634, 660, 661, 424, 0, 429, - 0, 0, 0, 432, 634, 53, 186, 0, 210, 0, - 416, 178, 171, 0, 175, 151, 175, 0, 0, 80, - 0, 89, 90, 0, 0, 0, 41, 587, 588, 0, - 0, 0, 0, 579, 0, 602, 0, 0, 625, 623, - 0, 654, 0, 646, 649, 648, 419, 51, 0, 0, - 454, 0, 0, 452, 52, 185, 187, 0, 192, 0, - 209, 0, 0, 183, 0, 180, 182, 169, 140, 141, - 155, 158, 0, 0, 0, 0, 249, 545, 547, 546, - 548, 0, 0, 0, 550, 567, 568, 0, 645, 0, - 425, 453, 455, 456, 415, 188, 189, 0, 193, 191, - 0, 417, 101, 0, 179, 181, 0, 265, 0, 91, - 92, 85, 549, 0, 0, 0, 652, 650, 190, 0, - 184, 264, 0, 0, 88, 580, 0, 583, 0, 266, - 0, 246, 581, 0, 0, 0, 213, 0, 0, 214, - 215, 0, 0, 582, 216, 0, 0, 0, 0, 0, - 217, 219, 220, 0, 0, 218, 267, 268, 221, 222, - 223, + 0, 367, 367, 367, 367, 367, 367, 367, 0, 729, + 721, 0, 0, 0, 0, -2, 332, 333, 0, 335, + -2, 0, 0, 344, 1057, 1057, 0, 0, 1057, 0, + 0, 1055, 49, 50, 350, 351, 352, 1, 3, 0, + 371, 634, 0, 0, -2, 369, 0, 0, 709, 709, + 709, 0, 78, 79, 0, 0, 0, 1040, 0, 707, + 707, 707, 730, 731, 734, 735, 31, 32, 33, 862, + 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, + 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, + 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, + 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, + 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, + 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, + 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, + 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, + 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, + 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, + 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, + 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, + 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, + 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, + 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, + 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, + 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, + 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1041, 1042, 1043, + 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, + 1054, 0, 0, 0, 0, 0, 0, 0, 705, 0, + 705, 705, 705, 0, 278, 449, 738, 739, 1040, 0, + 0, 0, 323, 0, 326, 326, 326, 292, 0, 294, + 1058, 0, 0, 0, 301, 0, 0, 307, 323, 1058, + 315, 329, 330, 317, 312, 313, 331, 334, 0, 339, + 342, 0, 357, 0, 908, 349, 362, 363, 1057, 1057, + 366, 34, 500, 459, 0, 465, 467, 0, 502, 503, + 504, 505, 506, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 532, 533, 534, 535, 611, 612, 613, + 614, 615, 616, 617, 618, 469, 470, 608, 0, 686, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, + 0, 569, 569, 569, 569, 569, 569, 569, 569, 0, + 0, 0, 0, 0, 0, 0, -2, -2, 1057, 626, + 45, 0, 367, 372, 373, 638, 0, 0, 626, 1056, + 0, 0, -2, -2, 383, 389, 390, 391, 392, 368, + 0, 395, 399, 0, 0, 0, 710, 0, 0, 64, + 0, 1028, 690, -2, -2, 0, 0, 736, 737, -2, + 875, -2, 742, 743, 744, 745, 746, 747, 748, 749, + 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, + 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, + 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, + 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, + 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, + 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, + 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, + 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, + 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, + 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, + 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, + 860, 861, 0, 0, 97, 0, 95, 0, 1058, 0, + 0, 0, 0, 0, 0, 1058, 1058, 1058, 0, 0, + 0, 0, 722, 269, 0, 0, 0, 0, 0, 0, + 0, 277, 0, 279, 1058, 323, 282, 0, 0, 1058, + 1058, 1058, 0, 1058, 1058, 289, 0, 290, 291, 0, + 199, 200, 201, 295, 1059, 1060, 1058, 1058, 320, 0, + 320, 318, 319, 310, 311, 0, 326, 304, 305, 308, + 309, 340, 343, 360, 358, 359, 361, 353, 354, 355, + 356, 0, 364, 365, 0, 0, 0, 0, 0, 463, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 487, + 488, 489, 490, 491, 492, 493, 466, 0, 480, 0, + 0, 0, 522, 523, 524, 525, 526, 527, 528, 529, + 530, 0, 380, 0, 0, 0, 626, 0, 0, 0, + 0, 0, 0, 0, 377, 0, 600, 0, 553, 561, + 0, 554, 562, 555, 563, 556, 0, 557, 564, 558, + 565, 559, 560, 566, 0, 0, 0, 380, 380, 0, + 0, 35, 634, 0, 382, 641, 0, 0, 635, 627, + 628, 631, 634, 0, 404, 393, 384, 387, 388, 370, + 0, 396, 400, 0, 402, 403, 0, 0, 62, 0, + 448, 0, 406, 408, 409, 410, 430, 0, 432, 0, + 0, 0, 58, 60, 449, 0, 1028, 696, 0, 66, + 67, 0, 0, 0, 175, 700, 701, 702, 698, 224, + 0, 0, 163, 159, 103, 104, 105, 152, 107, 152, + 152, 152, 152, 172, 172, 172, 172, 135, 136, 137, + 138, 139, 0, 0, 122, 152, 152, 152, 126, 142, + 143, 144, 145, 146, 147, 148, 149, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 154, 154, 154, 156, + 156, 732, 81, 0, 1058, 0, 1058, 93, 0, 238, + 240, 241, 0, 0, 0, 0, 0, 0, 723, 0, + 0, 272, 706, 0, 1058, 275, 276, 450, 740, 741, + 280, 281, 324, 325, 283, 284, 285, 286, 287, 288, + 327, 0, 202, 203, 296, 300, 323, 0, 0, 0, + 323, 302, 303, 0, 0, 341, 345, 346, 347, 348, + 501, 460, 461, 462, 464, 481, 0, 483, 485, 471, + 472, 496, 497, 498, 0, 0, 0, 0, 494, 476, + 0, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 521, 584, 585, 0, 519, 520, 531, + 0, 0, 0, 381, 609, 0, -2, 0, 499, 685, + 634, 0, 0, 0, 0, 504, 611, 0, 504, 611, + 0, 0, 0, 378, 379, 606, 603, 0, 0, 608, + 0, 570, 0, 0, 0, 0, 0, 0, 0, 0, + 638, 46, 36, 0, 639, 0, 0, 0, 0, 630, + 632, 633, 638, 0, 619, 0, 0, 457, 0, 0, + 385, 42, 401, 397, 0, 457, 0, 0, 447, 0, + 0, 0, 0, 0, 0, 437, 0, 0, 440, 0, + 0, 0, 0, 431, 0, 0, 0, 452, 969, 433, + 0, 435, 436, -2, 0, 0, 0, 56, 57, 0, + 0, 0, 691, 65, 0, 0, 70, 71, 692, 693, + 694, 695, 0, 94, 225, 227, 230, 231, 232, 98, + 99, 100, 0, 0, 212, 979, 1012, 206, 206, 907, + 204, 205, 96, 166, 164, 0, 161, 160, 106, 0, + 172, 172, 129, 130, 175, 0, 175, 175, 175, 0, + 0, 123, 124, 125, 117, 0, 118, 119, 120, 0, + 121, 0, 0, 1058, 83, 708, 84, 1057, 0, 0, + 724, 239, 711, 712, 713, 714, 715, 716, 717, 718, + 719, 720, 0, 85, 243, 245, 244, 248, 0, 0, + 0, 270, 1058, 274, 320, 297, 321, 322, 320, 299, + 306, 337, 482, 484, 486, 473, 494, 477, 0, 474, + 0, 0, 468, 536, 0, 0, 380, 0, 626, 638, + 540, 541, 0, 0, 0, 0, 0, 577, 0, 0, + 578, 0, 626, 0, 604, 0, 0, 552, 0, 571, + 0, 0, 572, 573, 574, 575, 576, 38, 0, 0, + 0, 636, 637, 629, 37, 0, 703, 704, 620, 621, + 622, 0, 394, 405, 386, 0, 634, 679, 0, 0, + 672, 0, 0, 457, 687, 0, 407, 426, 428, 0, + 423, 438, 439, 441, 0, 443, 0, 445, 446, 411, + 412, 413, 0, 414, 0, 0, 0, 0, 434, 457, + 0, 457, 59, 457, 61, 0, 451, 68, 69, 0, + 0, 75, 176, 177, 0, 228, 0, 0, 0, 194, + 206, 206, 197, 207, 198, 0, 168, 0, 165, 102, + 162, 0, 175, 175, 131, 0, 132, 133, 134, 0, + 150, 0, 0, 0, 0, 733, 82, 233, 1057, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 1057, 0, 1057, 725, 726, 727, 728, + 0, 88, 0, 0, 0, 0, 0, 273, 323, 323, + 475, 0, 495, 478, 537, 538, 0, 610, 634, 40, + 0, 152, 152, 589, 152, 156, 592, 152, 594, 152, + 597, 0, 0, 0, 0, 0, 0, 0, 601, 551, + 607, 0, 609, 0, 0, 0, 172, 643, 640, 39, + 624, 0, 458, 398, 43, 47, 0, 679, 671, 681, + 683, 0, 0, 675, 0, 418, 626, 0, 0, 420, + 427, 0, 0, 421, 0, 422, 442, 444, -2, 0, + 0, 0, 0, 626, 457, 54, 55, 0, 72, 73, + 74, 226, 229, 0, 208, 152, 211, 0, 195, 196, + 0, 170, 0, 167, 153, 127, 128, 173, 174, 172, + 0, 172, 0, 157, 0, 1058, 234, 235, 236, 237, + 0, 242, 0, 86, 87, 0, 0, 247, 271, 293, + 298, 479, 539, 638, 542, 586, 172, 590, 591, 593, + 595, 596, 598, 544, 543, 0, 0, 0, 0, 0, + 634, 0, 605, 0, 0, 172, 663, 44, 0, 0, + 0, 48, 0, 684, 0, 0, 0, 63, 0, 634, + 688, 689, 424, 0, 429, 0, 0, 0, 432, 634, + 53, 186, 0, 210, 0, 416, 178, 171, 0, 175, + 151, 175, 0, 0, 80, 0, 89, 90, 0, 0, + 0, 41, 587, 588, 0, 0, 0, 0, 579, 0, + 602, 0, 0, 645, 644, 657, 661, 625, 623, 0, + 682, 0, 674, 677, 676, 419, 51, 0, 0, 454, + 0, 0, 452, 52, 185, 187, 0, 192, 0, 209, + 0, 0, 183, 0, 180, 182, 169, 140, 141, 155, + 158, 0, 0, 0, 0, 249, 545, 547, 546, 548, + 0, 0, 0, 550, 567, 568, 663, 0, 656, 659, + -2, 0, 0, 673, 0, 425, 453, 455, 456, 415, + 188, 189, 0, 193, 191, 0, 417, 101, 0, 179, + 181, 0, 265, 0, 91, 92, 85, 549, 0, 0, + 0, 650, 648, 648, 661, 0, 665, 0, 670, 0, + 680, 678, 190, 0, 184, 264, 0, 0, 88, 580, + 0, 583, 653, 0, 646, 649, 647, 658, 0, 664, + 0, 0, 662, 0, 266, 0, 246, 581, 642, 0, + 651, 652, 660, 0, 0, 0, 0, 0, 654, 655, + 666, 668, 213, 0, 0, 214, 215, 0, 0, 582, + 216, 0, 0, 0, 0, 0, 217, 219, 220, 0, + 0, 218, 267, 268, 221, 222, 223, } var yyTok1 = [...]int{ 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 86, 3, 3, 3, 113, 105, 3, - 62, 64, 110, 108, 63, 109, 125, 111, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 373, - 94, 93, 95, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 97, 3, 3, 3, 124, 116, 3, + 73, 75, 121, 119, 74, 120, 136, 122, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 384, + 105, 104, 106, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 115, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 126, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 104, 3, 116, + 3, 3, 3, 3, 115, 3, 127, } var yyTok2 = [...]int{ @@ -3585,12 +3635,12 @@ var yyTok2 = [...]int{ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 87, 88, 89, 90, 91, 92, 96, 97, 98, - 99, 100, 101, 102, 103, 106, 107, 112, 114, 117, - 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 98, 99, 100, 101, 102, 103, 107, 108, + 109, 110, 111, 112, 113, 114, 117, 118, 123, 125, + 128, 129, 130, 131, 132, 133, 134, 135, 137, 138, 139, 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, @@ -3626,7 +3676,9 @@ var yyTok3 = [...]int{ 57680, 355, 57681, 356, 57682, 357, 57683, 358, 57684, 359, 57685, 360, 57686, 361, 57687, 362, 57688, 363, 57689, 364, 57690, 365, 57691, 366, 57692, 367, 57693, 368, 57694, 369, - 57695, 370, 57696, 371, 57697, 372, 0, + 57695, 370, 57696, 371, 57697, 372, 57698, 373, 57699, 374, + 57700, 375, 57701, 376, 57702, 377, 57703, 378, 57704, 379, + 57705, 380, 57706, 381, 57707, 382, 57708, 383, 0, } var yyErrorMessages = [...]struct { @@ -3968,94 +4020,94 @@ yydefault: case 1: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:361 +//line sql.y:365 { setParseTree(yylex, yyDollar[1].statement) } case 2: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:366 +//line sql.y:370 { } case 3: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:367 +//line sql.y:371 { } case 4: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:371 +//line sql.y:375 { yyVAL.statement = yyDollar[1].selStmt } case 30: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:400 +//line sql.y:404 { setParseTree(yylex, nil) } case 31: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:406 +//line sql.y:410 { yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), NoAt) } case 32: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:410 +//line sql.y:414 { yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), SingleAt) } case 33: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:414 +//line sql.y:418 { yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), DoubleAt) } case 34: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:420 +//line sql.y:424 { yyVAL.statement = &OtherAdmin{} } case 35: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:426 +//line sql.y:430 { yyVAL.statement = &Load{} } case 36: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:432 +//line sql.y:436 { sel := yyDollar[1].selStmt.(*Select) sel.OrderBy = yyDollar[2].orderBy sel.Limit = yyDollar[3].limit sel.Lock = yyDollar[4].lock - sel.IntoOutfileS3 = yyDollar[5].str + sel.Into = yyDollar[5].selectInto yyVAL.selStmt = sel } case 37: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:441 +//line sql.y:445 { yyVAL.selStmt = &Union{FirstStatement: &ParenSelect{Select: yyDollar[2].selStmt}, OrderBy: yyDollar[4].orderBy, Limit: yyDollar[5].limit, Lock: yyDollar[6].lock} } case 38: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:445 +//line sql.y:449 { yyVAL.selStmt = Unionize(yyDollar[1].selStmt, yyDollar[3].selStmt, yyDollar[2].unionType, yyDollar[4].orderBy, yyDollar[5].limit, yyDollar[6].lock) } case 39: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:449 +//line sql.y:453 { yyVAL.selStmt = NewSelect(Comments(yyDollar[2].bytes2), SelectExprs{Nextval{Expr: yyDollar[5].expr}}, []string{yyDollar[3].str} /*options*/, TableExprs{&AliasedTableExpr{Expr: yyDollar[7].tableName}}, nil /*where*/, nil /*groupBy*/, nil /*having*/) } case 40: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:472 +//line sql.y:476 { sel := yyDollar[1].selStmt.(*Select) sel.OrderBy = yyDollar[2].orderBy @@ -4065,43 +4117,43 @@ yydefault: } case 41: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:480 +//line sql.y:484 { yyVAL.selStmt = Unionize(yyDollar[1].selStmt, yyDollar[3].selStmt, yyDollar[2].unionType, yyDollar[4].orderBy, yyDollar[5].limit, yyDollar[6].lock) } case 42: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:486 +//line sql.y:490 { yyVAL.statement = &Stream{Comments: Comments(yyDollar[2].bytes2), SelectExpr: yyDollar[3].selectExpr, Table: yyDollar[5].tableName} } case 43: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:492 +//line sql.y:496 { yyVAL.statement = &VStream{Comments: Comments(yyDollar[2].bytes2), SelectExpr: yyDollar[3].selectExpr, Table: yyDollar[5].tableName, Where: NewWhere(WhereClause, yyDollar[6].expr), Limit: yyDollar[7].limit} } case 44: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:500 +//line sql.y:504 { yyVAL.selStmt = NewSelect(Comments(yyDollar[2].bytes2), yyDollar[4].selectExprs /*SelectExprs*/, yyDollar[3].strs /*options*/, yyDollar[5].tableExprs /*from*/, NewWhere(WhereClause, yyDollar[6].expr), GroupBy(yyDollar[7].exprs), NewWhere(HavingClause, yyDollar[8].expr)) } case 45: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:506 +//line sql.y:510 { yyVAL.selStmt = yyDollar[1].selStmt } case 46: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:510 +//line sql.y:514 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } case 47: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:517 +//line sql.y:521 { // insert_data returns a *Insert pre-filled with Columns & Values ins := yyDollar[6].ins @@ -4115,7 +4167,7 @@ yydefault: } case 48: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:529 +//line sql.y:533 { cols := make(Columns, 0, len(yyDollar[7].updateExprs)) vals := make(ValTuple, 0, len(yyDollar[8].updateExprs)) @@ -4127,186 +4179,186 @@ yydefault: } case 49: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:541 +//line sql.y:545 { yyVAL.insertAction = InsertAct } case 50: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:545 +//line sql.y:549 { yyVAL.insertAction = ReplaceAct } case 51: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:551 +//line sql.y:555 { yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, TableExprs: yyDollar[4].tableExprs, Exprs: yyDollar[6].updateExprs, Where: NewWhere(WhereClause, yyDollar[7].expr), OrderBy: yyDollar[8].orderBy, Limit: yyDollar[9].limit} } case 52: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:557 +//line sql.y:561 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, TableExprs: TableExprs{&AliasedTableExpr{Expr: yyDollar[5].tableName}}, Partitions: yyDollar[6].partitions, Where: NewWhere(WhereClause, yyDollar[7].expr), OrderBy: yyDollar[8].orderBy, Limit: yyDollar[9].limit} } case 53: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:561 +//line sql.y:565 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, Targets: yyDollar[5].tableNames, TableExprs: yyDollar[7].tableExprs, Where: NewWhere(WhereClause, yyDollar[8].expr)} } case 54: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:565 +//line sql.y:569 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, Targets: yyDollar[4].tableNames, TableExprs: yyDollar[6].tableExprs, Where: NewWhere(WhereClause, yyDollar[7].expr)} } case 55: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:569 +//line sql.y:573 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, Targets: yyDollar[4].tableNames, TableExprs: yyDollar[6].tableExprs, Where: NewWhere(WhereClause, yyDollar[7].expr)} } case 56: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:574 +//line sql.y:578 { } case 57: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:575 +//line sql.y:579 { } case 58: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:579 +//line sql.y:583 { yyVAL.tableNames = TableNames{yyDollar[1].tableName} } case 59: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:583 +//line sql.y:587 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } case 60: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:589 +//line sql.y:593 { yyVAL.tableNames = TableNames{yyDollar[1].tableName} } case 61: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:593 +//line sql.y:597 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } case 62: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:598 +//line sql.y:602 { yyVAL.partitions = nil } case 63: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:602 +//line sql.y:606 { yyVAL.partitions = yyDollar[3].partitions } case 64: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:608 +//line sql.y:612 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].setExprs} } case 65: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:614 +//line sql.y:618 { yyVAL.statement = &SetTransaction{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].scope, Characteristics: yyDollar[5].characteristics} } case 66: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:618 +//line sql.y:622 { yyVAL.statement = &SetTransaction{Comments: Comments(yyDollar[2].bytes2), Characteristics: yyDollar[4].characteristics, Scope: ImplicitScope} } case 67: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:624 +//line sql.y:628 { yyVAL.characteristics = []Characteristic{yyDollar[1].characteristic} } case 68: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:628 +//line sql.y:632 { yyVAL.characteristics = append(yyVAL.characteristics, yyDollar[3].characteristic) } case 69: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:634 +//line sql.y:638 { yyVAL.characteristic = yyDollar[3].isolationLevel } case 70: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:638 +//line sql.y:642 { yyVAL.characteristic = ReadWrite } case 71: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:642 +//line sql.y:646 { yyVAL.characteristic = ReadOnly } case 72: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:648 +//line sql.y:652 { yyVAL.isolationLevel = RepeatableRead } case 73: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:652 +//line sql.y:656 { yyVAL.isolationLevel = ReadCommitted } case 74: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:656 +//line sql.y:660 { yyVAL.isolationLevel = ReadUncommitted } case 75: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:660 +//line sql.y:664 { yyVAL.isolationLevel = Serializable } case 76: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:666 +//line sql.y:670 { yyVAL.scope = SessionScope } case 77: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:670 +//line sql.y:674 { yyVAL.scope = GlobalScope } case 78: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:676 +//line sql.y:680 { yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec yyVAL.statement = yyDollar[1].ddl } case 79: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:681 +//line sql.y:685 { // Create table [name] like [name] yyDollar[1].ddl.OptLike = yyDollar[2].optLike @@ -4314,139 +4366,139 @@ yydefault: } case 80: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:687 +//line sql.y:691 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[7].tableName} } case 81: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:692 +//line sql.y:696 { yyVAL.statement = &DDL{Action: CreateDDLAction, Table: yyDollar[3].tableName.ToViewName()} } case 82: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:696 +//line sql.y:700 { yyVAL.statement = &DDL{Action: CreateDDLAction, Table: yyDollar[5].tableName.ToViewName()} } case 83: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:700 +//line sql.y:704 { yyVAL.statement = &DBDDL{Action: CreateDBDDLAction, DBName: string(yyDollar[4].colIdent.String()), IfNotExists: yyDollar[3].boolean} } case 84: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:704 +//line sql.y:708 { yyVAL.statement = &DBDDL{Action: CreateDBDDLAction, DBName: string(yyDollar[4].colIdent.String()), IfNotExists: yyDollar[3].boolean} } case 85: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:709 +//line sql.y:713 { yyVAL.colIdent = NewColIdent("") } case 86: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:713 +//line sql.y:717 { yyVAL.colIdent = yyDollar[2].colIdent } case 87: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:719 +//line sql.y:723 { yyVAL.colIdent = yyDollar[1].colIdent } case 88: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:724 +//line sql.y:728 { var v []VindexParam yyVAL.vindexParams = v } case 89: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:729 +//line sql.y:733 { yyVAL.vindexParams = yyDollar[2].vindexParams } case 90: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:735 +//line sql.y:739 { yyVAL.vindexParams = make([]VindexParam, 0, 4) yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[1].vindexParam) } case 91: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:740 +//line sql.y:744 { yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[3].vindexParam) } case 92: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:746 +//line sql.y:750 { yyVAL.vindexParam = VindexParam{Key: yyDollar[1].colIdent, Val: yyDollar[3].str} } case 93: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:752 +//line sql.y:756 { yyVAL.ddl = &DDL{Action: CreateDDLAction, Table: yyDollar[4].tableName} setDDL(yylex, yyVAL.ddl) } case 94: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:759 +//line sql.y:763 { yyVAL.TableSpec = yyDollar[2].TableSpec yyVAL.TableSpec.Options = yyDollar[4].str } case 95: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:766 +//line sql.y:770 { yyVAL.optLike = &OptLike{LikeTable: yyDollar[2].tableName} } case 96: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:770 +//line sql.y:774 { yyVAL.optLike = &OptLike{LikeTable: yyDollar[3].tableName} } case 97: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:776 +//line sql.y:780 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition) } case 98: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:781 +//line sql.y:785 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) } case 99: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:785 +//line sql.y:789 { yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition) } case 100: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:789 +//line sql.y:793 { yyVAL.TableSpec.AddConstraint(yyDollar[3].constraintDefinition) } case 101: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:795 +//line sql.y:799 { yyDollar[2].columnType.NotNull = yyDollar[3].boolean yyDollar[2].columnType.Default = yyDollar[4].optVal @@ -4458,7 +4510,7 @@ yydefault: } case 102: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:806 +//line sql.y:810 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].boolean @@ -4466,74 +4518,74 @@ yydefault: } case 106: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:817 +//line sql.y:821 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Length = yyDollar[2].literal } case 107: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:822 +//line sql.y:826 { yyVAL.columnType = yyDollar[1].columnType } case 108: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:828 +//line sql.y:832 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 109: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:832 +//line sql.y:836 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 110: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:836 +//line sql.y:840 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 111: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:840 +//line sql.y:844 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 112: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:844 +//line sql.y:848 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 113: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:848 +//line sql.y:852 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 114: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:852 +//line sql.y:856 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 115: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:856 +//line sql.y:860 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 116: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:860 +//line sql.y:864 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 117: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:866 +//line sql.y:870 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4541,7 +4593,7 @@ yydefault: } case 118: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:872 +//line sql.y:876 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4549,7 +4601,7 @@ yydefault: } case 119: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:878 +//line sql.y:882 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4557,7 +4609,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:884 +//line sql.y:888 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4565,7 +4617,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:890 +//line sql.y:894 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4573,206 +4625,206 @@ yydefault: } case 122: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:898 +//line sql.y:902 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 123: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:902 +//line sql.y:906 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 124: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:906 +//line sql.y:910 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 125: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:910 +//line sql.y:914 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 126: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:914 +//line sql.y:918 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 127: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:920 +//line sql.y:924 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 128: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:924 +//line sql.y:928 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 129: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:928 +//line sql.y:932 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 130: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:932 +//line sql.y:936 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 131: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:936 +//line sql.y:940 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 132: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:940 +//line sql.y:944 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 133: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:944 +//line sql.y:948 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 134: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:948 +//line sql.y:952 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 135: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:952 +//line sql.y:956 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 136: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:956 +//line sql.y:960 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 137: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:960 +//line sql.y:964 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 138: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:964 +//line sql.y:968 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 139: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:968 +//line sql.y:972 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 140: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:972 +//line sql.y:976 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 141: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:977 +//line sql.y:981 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 142: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:983 +//line sql.y:987 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 143: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:987 +//line sql.y:991 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 144: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:991 +//line sql.y:995 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 145: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:995 +//line sql.y:999 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 146: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:999 +//line sql.y:1003 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 147: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1003 +//line sql.y:1007 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 148: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1007 +//line sql.y:1011 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 149: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1011 +//line sql.y:1015 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 150: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1017 +//line sql.y:1021 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'") } case 151: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1022 +//line sql.y:1026 { yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'") } case 152: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1027 +//line sql.y:1031 { yyVAL.literal = nil } case 153: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1031 +//line sql.y:1035 { yyVAL.literal = NewIntLiteral(yyDollar[2].bytes) } case 154: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1036 +//line sql.y:1040 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 155: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1040 +//line sql.y:1044 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), @@ -4781,13 +4833,13 @@ yydefault: } case 156: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1048 +//line sql.y:1052 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 157: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1052 +//line sql.y:1056 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), @@ -4795,7 +4847,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1058 +//line sql.y:1062 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), @@ -4804,508 +4856,508 @@ yydefault: } case 159: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1066 +//line sql.y:1070 { yyVAL.boolean = false } case 160: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1070 +//line sql.y:1074 { yyVAL.boolean = true } case 161: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1075 +//line sql.y:1079 { yyVAL.boolean = false } case 162: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1079 +//line sql.y:1083 { yyVAL.boolean = true } case 163: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1085 +//line sql.y:1089 { yyVAL.boolean = false } case 164: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1089 +//line sql.y:1093 { yyVAL.boolean = false } case 165: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1093 +//line sql.y:1097 { yyVAL.boolean = true } case 166: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1098 +//line sql.y:1102 { yyVAL.optVal = nil } case 167: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1102 +//line sql.y:1106 { yyVAL.optVal = yyDollar[2].expr } case 168: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1107 +//line sql.y:1111 { yyVAL.optVal = nil } case 169: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1111 +//line sql.y:1115 { yyVAL.optVal = yyDollar[3].expr } case 170: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1116 +//line sql.y:1120 { yyVAL.boolean = false } case 171: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1120 +//line sql.y:1124 { yyVAL.boolean = true } case 172: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1125 +//line sql.y:1129 { yyVAL.str = "" } case 173: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1129 +//line sql.y:1133 { yyVAL.str = string(yyDollar[3].colIdent.String()) } case 174: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1133 +//line sql.y:1137 { yyVAL.str = string(yyDollar[3].bytes) } case 175: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1138 +//line sql.y:1142 { yyVAL.str = "" } case 176: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1142 +//line sql.y:1146 { yyVAL.str = string(yyDollar[2].colIdent.String()) } case 177: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1146 +//line sql.y:1150 { yyVAL.str = string(yyDollar[2].bytes) } case 178: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1151 +//line sql.y:1155 { yyVAL.colKeyOpt = colKeyNone } case 179: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1155 +//line sql.y:1159 { yyVAL.colKeyOpt = colKeyPrimary } case 180: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1159 +//line sql.y:1163 { yyVAL.colKeyOpt = colKey } case 181: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1163 +//line sql.y:1167 { yyVAL.colKeyOpt = colKeyUniqueKey } case 182: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1167 +//line sql.y:1171 { yyVAL.colKeyOpt = colKeyUnique } case 183: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1172 +//line sql.y:1176 { yyVAL.literal = nil } case 184: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1176 +//line sql.y:1180 { yyVAL.literal = NewStrLiteral(yyDollar[2].bytes) } case 185: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1182 +//line sql.y:1186 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} } case 186: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1186 +//line sql.y:1190 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns} } case 187: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1192 +//line sql.y:1196 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } case 188: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1196 +//line sql.y:1200 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } case 189: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1202 +//line sql.y:1206 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Using: string(yyDollar[2].colIdent.String())} } case 190: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1206 +//line sql.y:1210 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } case 191: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1211 +//line sql.y:1215 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[2].bytes)} } case 192: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1217 +//line sql.y:1221 { yyVAL.str = "" } case 193: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1221 +//line sql.y:1225 { yyVAL.str = string(yyDollar[1].bytes) } case 194: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1227 +//line sql.y:1231 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } case 195: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1231 +//line sql.y:1235 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Spatial: true, Unique: false} } case 196: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1235 +//line sql.y:1239 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Unique: true} } case 197: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1239 +//line sql.y:1243 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(yyDollar[2].str), Unique: true} } case 198: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1243 +//line sql.y:1247 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(yyDollar[2].str), Unique: false} } case 199: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1249 +//line sql.y:1253 { yyVAL.str = string(yyDollar[1].bytes) } case 200: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1253 +//line sql.y:1257 { yyVAL.str = string(yyDollar[1].bytes) } case 201: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1257 +//line sql.y:1261 { yyVAL.str = string(yyDollar[1].bytes) } case 202: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1264 +//line sql.y:1268 { yyVAL.str = string(yyDollar[1].bytes) } case 203: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1268 +//line sql.y:1272 { yyVAL.str = string(yyDollar[1].bytes) } case 204: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1274 +//line sql.y:1278 { yyVAL.str = string(yyDollar[1].bytes) } case 205: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1278 +//line sql.y:1282 { yyVAL.str = string(yyDollar[1].bytes) } case 206: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1283 +//line sql.y:1287 { yyVAL.str = "" } case 207: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1287 +//line sql.y:1291 { yyVAL.str = string(yyDollar[1].colIdent.String()) } case 208: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1293 +//line sql.y:1297 { yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } case 209: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1297 +//line sql.y:1301 { yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) } case 210: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1303 +//line sql.y:1307 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].literal} } case 211: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1309 +//line sql.y:1313 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } case 212: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1313 +//line sql.y:1317 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } case 213: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:1320 +//line sql.y:1324 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns} } case 214: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1324 +//line sql.y:1328 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction} } case 215: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1328 +//line sql.y:1332 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnUpdate: yyDollar[11].ReferenceAction} } case 216: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1332 +//line sql.y:1336 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction, OnUpdate: yyDollar[12].ReferenceAction} } case 217: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1338 +//line sql.y:1342 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } case 218: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1344 +//line sql.y:1348 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } case 219: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1350 +//line sql.y:1354 { yyVAL.ReferenceAction = Restrict } case 220: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1354 +//line sql.y:1358 { yyVAL.ReferenceAction = Cascade } case 221: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1358 +//line sql.y:1362 { yyVAL.ReferenceAction = NoAction } case 222: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1362 +//line sql.y:1366 { yyVAL.ReferenceAction = SetDefault } case 223: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1366 +//line sql.y:1370 { yyVAL.ReferenceAction = SetNull } case 224: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1371 +//line sql.y:1375 { yyVAL.str = "" } case 225: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1375 +//line sql.y:1379 { yyVAL.str = " " + string(yyDollar[1].str) } case 226: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1379 +//line sql.y:1383 { yyVAL.str = string(yyDollar[1].str) + ", " + string(yyDollar[3].str) } case 227: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1387 +//line sql.y:1391 { yyVAL.str = yyDollar[1].str } case 228: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1391 +//line sql.y:1395 { yyVAL.str = yyDollar[1].str + " " + yyDollar[2].str } case 229: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1395 +//line sql.y:1399 { yyVAL.str = yyDollar[1].str + "=" + yyDollar[3].str } case 230: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1401 +//line sql.y:1405 { yyVAL.str = yyDollar[1].colIdent.String() } case 231: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1405 +//line sql.y:1409 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'" } case 232: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1409 +//line sql.y:1413 { yyVAL.str = string(yyDollar[1].bytes) } case 233: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1415 +//line sql.y:1419 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } case 234: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1419 +//line sql.y:1423 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } case 235: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1423 +//line sql.y:1427 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } case 236: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1427 +//line sql.y:1431 { // Change this to a rename statement yyVAL.statement = &DDL{Action: RenameDDLAction, FromTables: TableNames{yyDollar[4].tableName}, ToTables: TableNames{yyDollar[7].tableName}} } case 237: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1432 +//line sql.y:1436 { // Rename an index can just be an alter yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } case 238: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1437 +//line sql.y:1441 { yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[3].tableName.ToViewName()} } case 239: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1441 +//line sql.y:1445 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName, PartitionSpec: yyDollar[5].partSpec} } case 240: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1445 +//line sql.y:1449 { yyVAL.statement = &DBDDL{Action: AlterDBDDLAction, DBName: string(yyDollar[3].colIdent.String())} } case 241: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1449 +//line sql.y:1453 { yyVAL.statement = &DBDDL{Action: AlterDBDDLAction, DBName: string(yyDollar[3].colIdent.String())} } case 242: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1453 +//line sql.y:1457 { yyVAL.statement = &DDL{ Action: CreateVindexDDLAction, @@ -5319,7 +5371,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1465 +//line sql.y:1469 { yyVAL.statement = &DDL{ Action: DropVindexDDLAction, @@ -5331,19 +5383,19 @@ yydefault: } case 244: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1475 +//line sql.y:1479 { yyVAL.statement = &DDL{Action: AddVschemaTableDDLAction, Table: yyDollar[5].tableName} } case 245: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1479 +//line sql.y:1483 { yyVAL.statement = &DDL{Action: DropVschemaTableDDLAction, Table: yyDollar[5].tableName} } case 246: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1483 +//line sql.y:1487 { yyVAL.statement = &DDL{ Action: AddColVindexDDLAction, @@ -5358,7 +5410,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1496 +//line sql.y:1500 { yyVAL.statement = &DDL{ Action: DropColVindexDDLAction, @@ -5370,13 +5422,13 @@ yydefault: } case 248: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1506 +//line sql.y:1510 { yyVAL.statement = &DDL{Action: AddSequenceDDLAction, Table: yyDollar[5].tableName} } case 249: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:1510 +//line sql.y:1514 { yyVAL.statement = &DDL{ Action: AddAutoIncDDLAction, @@ -5389,49 +5441,49 @@ yydefault: } case 264: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1539 +//line sql.y:1543 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeAction, Name: yyDollar[3].colIdent, Definitions: yyDollar[6].partDefs} } case 265: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1545 +//line sql.y:1549 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } case 266: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1549 +//line sql.y:1553 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } case 267: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1555 +//line sql.y:1559 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } case 268: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1559 +//line sql.y:1563 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } case 269: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1565 +//line sql.y:1569 { yyVAL.statement = yyDollar[3].ddl } case 270: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1571 +//line sql.y:1575 { yyVAL.ddl = &DDL{Action: RenameDDLAction, FromTables: TableNames{yyDollar[1].tableName}, ToTables: TableNames{yyDollar[3].tableName}} } case 271: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1575 +//line sql.y:1579 { yyVAL.ddl = yyDollar[1].ddl yyVAL.ddl.FromTables = append(yyVAL.ddl.FromTables, yyDollar[3].tableName) @@ -5439,177 +5491,177 @@ yydefault: } case 272: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1583 +//line sql.y:1587 { yyVAL.statement = &DDL{Action: DropDDLAction, FromTables: yyDollar[4].tableNames, IfExists: yyDollar[3].boolean} } case 273: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1587 +//line sql.y:1591 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[5].tableName} } case 274: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1592 +//line sql.y:1596 { yyVAL.statement = &DDL{Action: DropDDLAction, FromTables: TableNames{yyDollar[4].tableName.ToViewName()}, IfExists: yyDollar[3].boolean} } case 275: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1596 +//line sql.y:1600 { yyVAL.statement = &DBDDL{Action: DropDBDDLAction, DBName: string(yyDollar[4].colIdent.String()), IfExists: yyDollar[3].boolean} } case 276: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1600 +//line sql.y:1604 { yyVAL.statement = &DBDDL{Action: DropDBDDLAction, DBName: string(yyDollar[4].colIdent.String()), IfExists: yyDollar[3].boolean} } case 277: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1606 +//line sql.y:1610 { yyVAL.statement = &DDL{Action: TruncateDDLAction, Table: yyDollar[3].tableName} } case 278: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1610 +//line sql.y:1614 { yyVAL.statement = &DDL{Action: TruncateDDLAction, Table: yyDollar[2].tableName} } case 279: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1615 +//line sql.y:1619 { yyVAL.statement = &OtherRead{} } case 280: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1621 +//line sql.y:1625 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope} } case 281: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1626 +//line sql.y:1630 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{Type: CharsetStr, ShowTablesOpt: showTablesOpt, Scope: ImplicitScope} } case 282: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1631 +//line sql.y:1635 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope} } case 283: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1636 +//line sql.y:1640 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope} } case 284: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1641 +//line sql.y:1645 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope} } case 285: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1645 +//line sql.y:1649 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope} } case 286: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1649 +//line sql.y:1653 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope} } case 287: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1653 +//line sql.y:1657 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope} } case 288: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1657 +//line sql.y:1661 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope} } case 289: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1661 +//line sql.y:1665 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope} } case 290: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1666 +//line sql.y:1670 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope} } case 291: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1671 +//line sql.y:1675 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope} } case 292: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1676 +//line sql.y:1680 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), Scope: ImplicitScope} } case 293: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1680 +//line sql.y:1684 { showTablesOpt := &ShowTablesOpt{DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{Extended: string(yyDollar[2].str), Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName, Scope: ImplicitScope} } case 294: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1685 +//line sql.y:1689 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), Scope: ImplicitScope} } case 295: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1689 +//line sql.y:1693 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), Scope: ImplicitScope} } case 296: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1693 +//line sql.y:1697 { yyVAL.statement = &Show{Scope: yyDollar[2].scope, Type: string(yyDollar[3].bytes)} } case 297: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1697 +//line sql.y:1701 { yyVAL.statement = &ShowTableStatus{DatabaseName: yyDollar[4].str, Filter: yyDollar[5].showFilter} } case 298: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1701 +//line sql.y:1705 { showTablesOpt := &ShowTablesOpt{Full: yyDollar[2].str, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName, Scope: ImplicitScope} } case 299: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1706 +//line sql.y:1710 { // this is ugly, but I couldn't find a better way for now if yyDollar[3].str == "processlist" { @@ -5621,56 +5673,56 @@ yydefault: } case 300: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1716 +//line sql.y:1720 { yyVAL.statement = &Show{Scope: yyDollar[2].scope, Type: string(yyDollar[3].bytes)} } case 301: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1720 +//line sql.y:1724 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), Scope: ImplicitScope} } case 302: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1724 +//line sql.y:1728 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowCollationFilterOpt: yyDollar[4].expr, Scope: ImplicitScope} } case 303: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1728 +//line sql.y:1732 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{Scope: VitessMetadataScope, Type: string(yyDollar[3].bytes), ShowTablesOpt: showTablesOpt} } case 304: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1733 +//line sql.y:1737 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope} } case 305: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1737 +//line sql.y:1741 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope} } case 306: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1741 +//line sql.y:1745 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), OnTable: yyDollar[5].tableName, Scope: ImplicitScope} } case 307: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1745 +//line sql.y:1749 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), Scope: ImplicitScope} } case 308: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1750 +//line sql.y:1754 { // This should probably be a different type (ShowVitessTopoOpt), but // just getting the thing working for now @@ -5679,806 +5731,806 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1764 +//line sql.y:1768 { yyVAL.statement = &Show{Type: string(yyDollar[2].colIdent.String()), Scope: ImplicitScope} } case 310: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1770 +//line sql.y:1774 { yyVAL.str = string(yyDollar[1].bytes) } case 311: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1774 +//line sql.y:1778 { yyVAL.str = string(yyDollar[1].bytes) } case 312: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1780 +//line sql.y:1784 { yyVAL.str = string(yyDollar[1].bytes) } case 313: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1784 +//line sql.y:1788 { yyVAL.str = string(yyDollar[1].bytes) } case 314: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1790 +//line sql.y:1794 { yyVAL.str = "" } case 315: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1794 +//line sql.y:1798 { yyVAL.str = "extended " } case 316: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1800 +//line sql.y:1804 { yyVAL.str = "" } case 317: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1804 +//line sql.y:1808 { yyVAL.str = "full " } case 318: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1810 +//line sql.y:1814 { yyVAL.str = string(yyDollar[1].bytes) } case 319: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1814 +//line sql.y:1818 { yyVAL.str = string(yyDollar[1].bytes) } case 320: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1820 +//line sql.y:1824 { yyVAL.str = "" } case 321: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1824 +//line sql.y:1828 { yyVAL.str = yyDollar[2].tableIdent.v } case 322: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1828 +//line sql.y:1832 { yyVAL.str = yyDollar[2].tableIdent.v } case 323: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1834 +//line sql.y:1838 { yyVAL.showFilter = nil } case 324: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1838 +//line sql.y:1842 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 325: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1842 +//line sql.y:1846 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } case 326: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1848 +//line sql.y:1852 { yyVAL.showFilter = nil } case 327: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1852 +//line sql.y:1856 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 328: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1858 +//line sql.y:1862 { yyVAL.scope = ImplicitScope } case 329: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1862 +//line sql.y:1866 { yyVAL.scope = SessionScope } case 330: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1866 +//line sql.y:1870 { yyVAL.scope = GlobalScope } case 331: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1872 +//line sql.y:1876 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } case 332: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1876 +//line sql.y:1880 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } case 333: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1882 +//line sql.y:1886 { yyVAL.statement = &Begin{} } case 334: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1886 +//line sql.y:1890 { yyVAL.statement = &Begin{} } case 335: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1892 +//line sql.y:1896 { yyVAL.statement = &Commit{} } case 336: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1898 +//line sql.y:1902 { yyVAL.statement = &Rollback{} } case 337: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1902 +//line sql.y:1906 { yyVAL.statement = &SRollback{Name: yyDollar[5].colIdent} } case 338: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1907 +//line sql.y:1911 { yyVAL.empty = struct{}{} } case 339: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1909 +//line sql.y:1913 { yyVAL.empty = struct{}{} } case 340: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1912 +//line sql.y:1916 { yyVAL.empty = struct{}{} } case 341: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1914 +//line sql.y:1918 { yyVAL.empty = struct{}{} } case 342: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1919 +//line sql.y:1923 { yyVAL.statement = &Savepoint{Name: yyDollar[2].colIdent} } case 343: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1925 +//line sql.y:1929 { yyVAL.statement = &Release{Name: yyDollar[3].colIdent} } case 344: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1930 +//line sql.y:1934 { yyVAL.explainType = EmptyType } case 345: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1934 +//line sql.y:1938 { yyVAL.explainType = JSONType } case 346: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1938 +//line sql.y:1942 { yyVAL.explainType = TreeType } case 347: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1942 +//line sql.y:1946 { yyVAL.explainType = VitessType } case 348: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1946 +//line sql.y:1950 { yyVAL.explainType = TraditionalType } case 349: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1950 +//line sql.y:1954 { yyVAL.explainType = AnalyzeType } case 350: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1956 +//line sql.y:1960 { yyVAL.bytes = yyDollar[1].bytes } case 351: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1960 +//line sql.y:1964 { yyVAL.bytes = yyDollar[1].bytes } case 352: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1964 +//line sql.y:1968 { yyVAL.bytes = yyDollar[1].bytes } case 353: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1970 +//line sql.y:1974 { yyVAL.statement = yyDollar[1].selStmt } case 354: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1974 +//line sql.y:1978 { yyVAL.statement = yyDollar[1].statement } case 355: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1978 +//line sql.y:1982 { yyVAL.statement = yyDollar[1].statement } case 356: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1982 +//line sql.y:1986 { yyVAL.statement = yyDollar[1].statement } case 357: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1987 +//line sql.y:1991 { yyVAL.str = "" } case 358: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1991 +//line sql.y:1995 { yyVAL.str = "" } case 359: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1995 +//line sql.y:1999 { yyVAL.str = "" } case 360: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2001 +//line sql.y:2005 { yyVAL.statement = &OtherRead{} } case 361: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2005 +//line sql.y:2009 { yyVAL.statement = &Explain{Type: yyDollar[2].explainType, Statement: yyDollar[3].statement} } case 362: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2011 +//line sql.y:2015 { yyVAL.statement = &OtherAdmin{} } case 363: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2015 +//line sql.y:2019 { yyVAL.statement = &OtherAdmin{} } case 364: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2019 +//line sql.y:2023 { yyVAL.statement = &OtherAdmin{} } case 365: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2023 +//line sql.y:2027 { yyVAL.statement = &OtherAdmin{} } case 366: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2029 +//line sql.y:2033 { yyVAL.statement = &DDL{Action: FlushDDLAction} } case 367: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2033 +//line sql.y:2037 { setAllowComments(yylex, true) } case 368: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2037 +//line sql.y:2041 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } case 369: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2043 +//line sql.y:2047 { yyVAL.bytes2 = nil } case 370: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2047 +//line sql.y:2051 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } case 371: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2053 +//line sql.y:2057 { yyVAL.unionType = UnionBasic } case 372: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2057 +//line sql.y:2061 { yyVAL.unionType = UnionAll } case 373: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2061 +//line sql.y:2065 { yyVAL.unionType = UnionDistinct } case 374: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2066 +//line sql.y:2070 { yyVAL.str = "" } case 375: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2070 +//line sql.y:2074 { yyVAL.str = SQLNoCacheStr } case 376: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2074 +//line sql.y:2078 { yyVAL.str = SQLCacheStr } case 377: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2079 +//line sql.y:2083 { yyVAL.boolean = false } case 378: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2083 +//line sql.y:2087 { yyVAL.boolean = true } case 379: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2087 +//line sql.y:2091 { yyVAL.boolean = true } case 380: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2092 +//line sql.y:2096 { yyVAL.selectExprs = nil } case 381: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2096 +//line sql.y:2100 { yyVAL.selectExprs = yyDollar[1].selectExprs } case 382: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2101 +//line sql.y:2105 { yyVAL.strs = nil } case 383: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2105 +//line sql.y:2109 { yyVAL.strs = []string{yyDollar[1].str} } case 384: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2109 +//line sql.y:2113 { // TODO: This is a hack since I couldn't get it to work in a nicer way. I got 'conflicts: 8 shift/reduce' yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str} } case 385: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2113 +//line sql.y:2117 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } case 386: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2117 +//line sql.y:2121 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } case 387: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2123 +//line sql.y:2127 { yyVAL.str = SQLNoCacheStr } case 388: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2127 +//line sql.y:2131 { yyVAL.str = SQLCacheStr } case 389: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2131 +//line sql.y:2135 { yyVAL.str = DistinctStr } case 390: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2135 +//line sql.y:2139 { yyVAL.str = DistinctStr } case 391: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2139 +//line sql.y:2143 { yyVAL.str = StraightJoinHint } case 392: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2143 +//line sql.y:2147 { yyVAL.str = SQLCalcFoundRowsStr } case 393: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2149 +//line sql.y:2153 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } case 394: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2153 +//line sql.y:2157 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } case 395: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2159 +//line sql.y:2163 { yyVAL.selectExpr = &StarExpr{} } case 396: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2163 +//line sql.y:2167 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } case 397: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2167 +//line sql.y:2171 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } case 398: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2171 +//line sql.y:2175 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } case 399: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2176 +//line sql.y:2180 { yyVAL.colIdent = ColIdent{} } case 400: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2180 +//line sql.y:2184 { yyVAL.colIdent = yyDollar[1].colIdent } case 401: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2184 +//line sql.y:2188 { yyVAL.colIdent = yyDollar[2].colIdent } case 403: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2191 +//line sql.y:2195 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 404: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2196 +//line sql.y:2200 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } case 405: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2200 +//line sql.y:2204 { yyVAL.tableExprs = yyDollar[2].tableExprs } case 406: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2206 +//line sql.y:2210 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } case 407: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2210 +//line sql.y:2214 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } case 410: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2220 +//line sql.y:2224 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } case 411: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2224 +//line sql.y:2228 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } case 412: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2228 +//line sql.y:2232 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } case 413: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2234 +//line sql.y:2238 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } case 414: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2240 +//line sql.y:2244 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } case 415: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2244 +//line sql.y:2248 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } case 416: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2250 +//line sql.y:2254 { yyVAL.columns = Columns{yyDollar[1].colIdent} } case 417: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2254 +//line sql.y:2258 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } case 418: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2260 +//line sql.y:2264 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } case 419: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2264 +//line sql.y:2268 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } case 420: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2277 +//line sql.y:2281 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 421: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2281 +//line sql.y:2285 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 422: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2285 +//line sql.y:2289 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 423: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2289 +//line sql.y:2293 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr} } case 424: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2295 +//line sql.y:2299 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } case 425: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2297 +//line sql.y:2301 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } case 426: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2301 +//line sql.y:2305 { yyVAL.joinCondition = JoinCondition{} } case 427: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2303 +//line sql.y:2307 { yyVAL.joinCondition = yyDollar[1].joinCondition } case 428: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2307 +//line sql.y:2311 { yyVAL.joinCondition = JoinCondition{} } case 429: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2309 +//line sql.y:2313 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } case 430: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2312 +//line sql.y:2316 { yyVAL.empty = struct{}{} } case 431: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2314 +//line sql.y:2318 { yyVAL.empty = struct{}{} } case 432: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2317 +//line sql.y:2321 { yyVAL.tableIdent = NewTableIdent("") } case 433: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2321 +//line sql.y:2325 { yyVAL.tableIdent = yyDollar[1].tableIdent } case 434: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2325 +//line sql.y:2329 { yyVAL.tableIdent = yyDollar[2].tableIdent } case 436: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2332 +//line sql.y:2336 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } case 437: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2338 +//line sql.y:2342 { yyVAL.joinType = NormalJoinType } case 438: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2342 +//line sql.y:2346 { yyVAL.joinType = NormalJoinType } case 439: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2346 +//line sql.y:2350 { yyVAL.joinType = NormalJoinType } case 440: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2352 +//line sql.y:2356 { yyVAL.joinType = StraightJoinType } case 441: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2358 +//line sql.y:2362 { yyVAL.joinType = LeftJoinType } case 442: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2362 +//line sql.y:2366 { yyVAL.joinType = LeftJoinType } case 443: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2366 +//line sql.y:2370 { yyVAL.joinType = RightJoinType } case 444: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2370 +//line sql.y:2374 { yyVAL.joinType = RightJoinType } case 445: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2376 +//line sql.y:2380 { yyVAL.joinType = NaturalJoinType } case 446: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2380 +//line sql.y:2384 { if yyDollar[2].joinType == LeftJoinType { yyVAL.joinType = NaturalLeftJoinType @@ -6488,487 +6540,487 @@ yydefault: } case 447: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2390 +//line sql.y:2394 { yyVAL.tableName = yyDollar[2].tableName } case 448: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2394 +//line sql.y:2398 { yyVAL.tableName = yyDollar[1].tableName } case 449: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2400 +//line sql.y:2404 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } case 450: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2404 +//line sql.y:2408 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } case 451: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2410 +//line sql.y:2414 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } case 452: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2415 +//line sql.y:2419 { yyVAL.indexHints = nil } case 453: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2419 +//line sql.y:2423 { yyVAL.indexHints = &IndexHints{Type: UseOp, Indexes: yyDollar[4].columns} } case 454: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2423 +//line sql.y:2427 { yyVAL.indexHints = &IndexHints{Type: UseOp} } case 455: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2427 +//line sql.y:2431 { yyVAL.indexHints = &IndexHints{Type: IgnoreOp, Indexes: yyDollar[4].columns} } case 456: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2431 +//line sql.y:2435 { yyVAL.indexHints = &IndexHints{Type: ForceOp, Indexes: yyDollar[4].columns} } case 457: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2436 +//line sql.y:2440 { yyVAL.expr = nil } case 458: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2440 +//line sql.y:2444 { yyVAL.expr = yyDollar[2].expr } case 459: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2446 +//line sql.y:2450 { yyVAL.expr = yyDollar[1].expr } case 460: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2450 +//line sql.y:2454 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 461: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2454 +//line sql.y:2458 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 462: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2458 +//line sql.y:2462 { yyVAL.expr = &XorExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 463: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2462 +//line sql.y:2466 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } case 464: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2466 +//line sql.y:2470 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].isExprOperator, Expr: yyDollar[1].expr} } case 465: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2470 +//line sql.y:2474 { yyVAL.expr = yyDollar[1].expr } case 466: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2474 +//line sql.y:2478 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } case 467: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2480 +//line sql.y:2484 { yyVAL.str = "" } case 468: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2484 +//line sql.y:2488 { yyVAL.str = string(yyDollar[2].colIdent.String()) } case 469: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2490 +//line sql.y:2494 { yyVAL.boolVal = BoolVal(true) } case 470: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2494 +//line sql.y:2498 { yyVAL.boolVal = BoolVal(false) } case 471: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2500 +//line sql.y:2504 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].comparisonExprOperator, Right: yyDollar[3].expr} } case 472: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2504 +//line sql.y:2508 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InOp, Right: yyDollar[3].colTuple} } case 473: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2508 +//line sql.y:2512 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInOp, Right: yyDollar[4].colTuple} } case 474: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2512 +//line sql.y:2516 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeOp, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } case 475: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2516 +//line sql.y:2520 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeOp, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } case 476: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2520 +//line sql.y:2524 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpOp, Right: yyDollar[3].expr} } case 477: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2524 +//line sql.y:2528 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpOp, Right: yyDollar[4].expr} } case 478: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2528 +//line sql.y:2532 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenOp, From: yyDollar[3].expr, To: yyDollar[5].expr} } case 479: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2532 +//line sql.y:2536 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenOp, From: yyDollar[4].expr, To: yyDollar[6].expr} } case 480: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2536 +//line sql.y:2540 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } case 481: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2542 +//line sql.y:2546 { yyVAL.isExprOperator = IsNullOp } case 482: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2546 +//line sql.y:2550 { yyVAL.isExprOperator = IsNotNullOp } case 483: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2550 +//line sql.y:2554 { yyVAL.isExprOperator = IsTrueOp } case 484: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2554 +//line sql.y:2558 { yyVAL.isExprOperator = IsNotTrueOp } case 485: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2558 +//line sql.y:2562 { yyVAL.isExprOperator = IsFalseOp } case 486: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2562 +//line sql.y:2566 { yyVAL.isExprOperator = IsNotFalseOp } case 487: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2568 +//line sql.y:2572 { yyVAL.comparisonExprOperator = EqualOp } case 488: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2572 +//line sql.y:2576 { yyVAL.comparisonExprOperator = LessThanOp } case 489: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2576 +//line sql.y:2580 { yyVAL.comparisonExprOperator = GreaterThanOp } case 490: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2580 +//line sql.y:2584 { yyVAL.comparisonExprOperator = LessEqualOp } case 491: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2584 +//line sql.y:2588 { yyVAL.comparisonExprOperator = GreaterEqualOp } case 492: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2588 +//line sql.y:2592 { yyVAL.comparisonExprOperator = NotEqualOp } case 493: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2592 +//line sql.y:2596 { yyVAL.comparisonExprOperator = NullSafeEqualOp } case 494: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2597 +//line sql.y:2601 { yyVAL.expr = nil } case 495: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2601 +//line sql.y:2605 { yyVAL.expr = yyDollar[2].expr } case 496: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2607 +//line sql.y:2611 { yyVAL.colTuple = yyDollar[1].valTuple } case 497: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2611 +//line sql.y:2615 { yyVAL.colTuple = yyDollar[1].subquery } case 498: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2615 +//line sql.y:2619 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } case 499: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2621 +//line sql.y:2625 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } case 500: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2627 +//line sql.y:2631 { yyVAL.exprs = Exprs{yyDollar[1].expr} } case 501: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2631 +//line sql.y:2635 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } case 502: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2637 +//line sql.y:2641 { yyVAL.expr = yyDollar[1].expr } case 503: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2641 +//line sql.y:2645 { yyVAL.expr = yyDollar[1].boolVal } case 504: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2645 +//line sql.y:2649 { yyVAL.expr = yyDollar[1].colName } case 505: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2649 +//line sql.y:2653 { yyVAL.expr = yyDollar[1].expr } case 506: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2653 +//line sql.y:2657 { yyVAL.expr = yyDollar[1].subquery } case 507: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2657 +//line sql.y:2661 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndOp, Right: yyDollar[3].expr} } case 508: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2661 +//line sql.y:2665 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrOp, Right: yyDollar[3].expr} } case 509: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2665 +//line sql.y:2669 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorOp, Right: yyDollar[3].expr} } case 510: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2669 +//line sql.y:2673 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusOp, Right: yyDollar[3].expr} } case 511: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2673 +//line sql.y:2677 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusOp, Right: yyDollar[3].expr} } case 512: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2677 +//line sql.y:2681 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultOp, Right: yyDollar[3].expr} } case 513: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2681 +//line sql.y:2685 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivOp, Right: yyDollar[3].expr} } case 514: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2685 +//line sql.y:2689 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivOp, Right: yyDollar[3].expr} } case 515: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2689 +//line sql.y:2693 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } case 516: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2693 +//line sql.y:2697 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } case 517: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2697 +//line sql.y:2701 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftOp, Right: yyDollar[3].expr} } case 518: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2701 +//line sql.y:2705 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightOp, Right: yyDollar[3].expr} } case 519: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2705 +//line sql.y:2709 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } case 520: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2709 +//line sql.y:2713 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } case 521: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2713 +//line sql.y:2717 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } case 522: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2717 +//line sql.y:2721 { yyVAL.expr = &UnaryExpr{Operator: BinaryOp, Expr: yyDollar[2].expr} } case 523: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2721 +//line sql.y:2725 { yyVAL.expr = &UnaryExpr{Operator: UBinaryOp, Expr: yyDollar[2].expr} } case 524: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2725 +//line sql.y:2729 { yyVAL.expr = &UnaryExpr{Operator: Utf8Op, Expr: yyDollar[2].expr} } case 525: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2729 +//line sql.y:2733 { yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Op, Expr: yyDollar[2].expr} } case 526: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2733 +//line sql.y:2737 { yyVAL.expr = &UnaryExpr{Operator: Latin1Op, Expr: yyDollar[2].expr} } case 527: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2737 +//line sql.y:2741 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { yyVAL.expr = num @@ -6978,7 +7030,7 @@ yydefault: } case 528: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2745 +//line sql.y:2749 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { // Handle double negative @@ -6994,19 +7046,19 @@ yydefault: } case 529: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2759 +//line sql.y:2763 { yyVAL.expr = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].expr} } case 530: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2763 +//line sql.y:2767 { yyVAL.expr = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].expr} } case 531: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2767 +//line sql.y:2771 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -7016,325 +7068,325 @@ yydefault: } case 536: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2785 +//line sql.y:2789 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } case 537: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2789 +//line sql.y:2793 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 538: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2793 +//line sql.y:2797 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 539: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2797 +//line sql.y:2801 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } case 540: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2807 +//line sql.y:2811 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } case 541: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2811 +//line sql.y:2815 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } case 542: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2815 +//line sql.y:2819 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 543: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2819 +//line sql.y:2823 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 544: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2823 +//line sql.y:2827 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } case 545: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2827 +//line sql.y:2831 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 546: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2831 +//line sql.y:2835 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 547: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2835 +//line sql.y:2839 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 548: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2839 +//line sql.y:2843 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 549: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2843 +//line sql.y:2847 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].matchExprOption} } case 550: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2847 +//line sql.y:2851 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].boolean, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit} } case 551: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2851 +//line sql.y:2855 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } case 552: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2855 +//line sql.y:2859 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } case 553: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2865 +//line sql.y:2869 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } case 554: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2869 +//line sql.y:2873 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } case 555: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2873 +//line sql.y:2877 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } case 556: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2878 +//line sql.y:2882 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } case 557: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2883 +//line sql.y:2887 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } case 558: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2888 +//line sql.y:2892 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } case 559: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2894 +//line sql.y:2898 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } case 560: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2899 +//line sql.y:2903 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } case 561: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2904 +//line sql.y:2908 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} } case 562: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2908 +//line sql.y:2912 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} } case 563: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2912 +//line sql.y:2916 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} } case 564: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2917 +//line sql.y:2921 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} } case 565: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2922 +//line sql.y:2926 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} } case 566: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2927 +//line sql.y:2931 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} } case 567: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2931 +//line sql.y:2935 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } case 568: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2935 +//line sql.y:2939 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } case 571: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2945 +//line sql.y:2949 { yyVAL.expr = yyDollar[2].expr } case 572: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2955 +//line sql.y:2959 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } case 573: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2959 +//line sql.y:2963 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } case 574: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2963 +//line sql.y:2967 { yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} } case 575: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2967 +//line sql.y:2971 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } case 576: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2971 +//line sql.y:2975 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } case 577: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2975 +//line sql.y:2979 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 578: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2979 +//line sql.y:2983 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 579: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2985 +//line sql.y:2989 { yyVAL.matchExprOption = NoOption } case 580: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2989 +//line sql.y:2993 { yyVAL.matchExprOption = BooleanModeOpt } case 581: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2993 +//line sql.y:2997 { yyVAL.matchExprOption = NaturalLanguageModeOpt } case 582: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2997 +//line sql.y:3001 { yyVAL.matchExprOption = NaturalLanguageModeWithQueryExpansionOpt } case 583: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3001 +//line sql.y:3005 { yyVAL.matchExprOption = QueryExpansionOpt } case 584: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3007 +//line sql.y:3011 { yyVAL.str = string(yyDollar[1].colIdent.String()) } case 585: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3011 +//line sql.y:3015 { yyVAL.str = string(yyDollar[1].bytes) } case 586: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3017 +//line sql.y:3021 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 587: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3021 +//line sql.y:3025 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Operator: CharacterSetOp} } case 588: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3025 +//line sql.y:3029 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: string(yyDollar[3].colIdent.String())} } case 589: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3029 +//line sql.y:3033 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 590: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3033 +//line sql.y:3037 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 591: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3037 +//line sql.y:3041 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length @@ -7342,169 +7394,169 @@ yydefault: } case 592: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3043 +//line sql.y:3047 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 593: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3047 +//line sql.y:3051 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 594: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3051 +//line sql.y:3055 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 595: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3055 +//line sql.y:3059 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 596: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3059 +//line sql.y:3063 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 597: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3063 +//line sql.y:3067 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 598: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3067 +//line sql.y:3071 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 599: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3072 +//line sql.y:3076 { yyVAL.expr = nil } case 600: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3076 +//line sql.y:3080 { yyVAL.expr = yyDollar[1].expr } case 601: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3081 +//line sql.y:3085 { yyVAL.str = string("") } case 602: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3085 +//line sql.y:3089 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } case 603: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3091 +//line sql.y:3095 { yyVAL.whens = []*When{yyDollar[1].when} } case 604: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3095 +//line sql.y:3099 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } case 605: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3101 +//line sql.y:3105 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } case 606: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3106 +//line sql.y:3110 { yyVAL.expr = nil } case 607: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3110 +//line sql.y:3114 { yyVAL.expr = yyDollar[2].expr } case 608: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3116 +//line sql.y:3120 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } case 609: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3120 +//line sql.y:3124 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } case 610: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3124 +//line sql.y:3128 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } case 611: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3130 +//line sql.y:3134 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } case 612: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3134 +//line sql.y:3138 { yyVAL.expr = NewHexLiteral(yyDollar[1].bytes) } case 613: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3138 +//line sql.y:3142 { yyVAL.expr = NewBitLiteral(yyDollar[1].bytes) } case 614: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3142 +//line sql.y:3146 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } case 615: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3146 +//line sql.y:3150 { yyVAL.expr = NewFloatLiteral(yyDollar[1].bytes) } case 616: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3150 +//line sql.y:3154 { yyVAL.expr = NewHexNumLiteral(yyDollar[1].bytes) } case 617: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3154 +//line sql.y:3158 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } case 618: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3158 +//line sql.y:3162 { yyVAL.expr = &NullVal{} } case 619: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3164 +//line sql.y:3168 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -7515,235 +7567,403 @@ yydefault: } case 620: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3173 +//line sql.y:3177 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } case 621: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3177 +//line sql.y:3181 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } case 622: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3182 +//line sql.y:3186 { yyVAL.exprs = nil } case 623: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3186 +//line sql.y:3190 { yyVAL.exprs = yyDollar[3].exprs } case 624: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3191 +//line sql.y:3195 { yyVAL.expr = nil } case 625: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3195 +//line sql.y:3199 { yyVAL.expr = yyDollar[2].expr } case 626: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3200 +//line sql.y:3204 { yyVAL.orderBy = nil } case 627: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3204 +//line sql.y:3208 { yyVAL.orderBy = yyDollar[3].orderBy } case 628: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3210 +//line sql.y:3214 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } case 629: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3214 +//line sql.y:3218 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } case 630: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3220 +//line sql.y:3224 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].orderDirection} } case 631: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3225 +//line sql.y:3229 { yyVAL.orderDirection = AscOrder } case 632: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3229 +//line sql.y:3233 { yyVAL.orderDirection = AscOrder } case 633: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3233 +//line sql.y:3237 { yyVAL.orderDirection = DescOrder } case 634: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3238 +//line sql.y:3242 { yyVAL.limit = nil } case 635: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3242 +//line sql.y:3246 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } case 636: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3246 +//line sql.y:3250 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } case 637: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3250 +//line sql.y:3254 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } case 638: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3255 +//line sql.y:3259 { yyVAL.lock = NoLock } case 639: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3259 +//line sql.y:3263 { yyVAL.lock = ForUpdateLock } case 640: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3263 +//line sql.y:3267 { yyVAL.lock = ShareModeLock } case 641: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3268 +//line sql.y:3272 { - yyVAL.str = "" + yyVAL.selectInto = nil } case 642: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3272 + yyDollar = yyS[yypt-9 : yypt+1] +//line sql.y:3276 { - yyVAL.str = string(yyDollar[4].bytes) + yyVAL.selectInto = &SelectInto{Type: IntoOutfileS3, FileName: string(yyDollar[4].bytes), Charset: yyDollar[5].str, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str} } case 643: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3280 + { + yyVAL.selectInto = &SelectInto{Type: IntoDumpfile, FileName: string(yyDollar[3].bytes), Charset: "", FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} + } + case 644: + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:3284 + { + yyVAL.selectInto = &SelectInto{Type: IntoOutfile, FileName: string(yyDollar[3].bytes), Charset: yyDollar[4].str, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} + } + case 645: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3289 + { + yyVAL.str = "" + } + case 646: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3293 + { + yyVAL.str = " format csv" + yyDollar[3].str + } + case 647: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3297 + { + yyVAL.str = " format text" + yyDollar[3].str + } + case 648: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3302 + { + yyVAL.str = "" + } + case 649: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3306 + { + yyVAL.str = " header" + } + case 650: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3311 + { + yyVAL.str = "" + } + case 651: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3315 + { + yyVAL.str = " manifest on" + } + case 652: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3319 + { + yyVAL.str = " manifest off" + } + case 653: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3324 + { + yyVAL.str = "" + } + case 654: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3285 +//line sql.y:3328 + { + yyVAL.str = " overwrite on" + } + case 655: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3332 + { + yyVAL.str = " overwrite off" + } + case 656: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3338 + { + yyVAL.str = yyDollar[1].str + yyDollar[2].str + } + case 657: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3343 + { + yyVAL.str = "" + } + case 658: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3347 + { + yyVAL.str = " lines" + yyDollar[2].str + yyDollar[3].str + } + case 659: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3352 + { + yyVAL.str = "" + } + case 660: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3356 + { + yyVAL.str = " starting by '" + string(yyDollar[3].bytes) + "'" + } + case 661: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3361 + { + yyVAL.str = "" + } + case 662: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3365 + { + yyVAL.str = " terminated by '" + string(yyDollar[3].bytes) + "'" + } + case 663: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3370 + { + yyVAL.str = "" + } + case 664: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:3374 + { + yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str + yyDollar[3].str + yyDollar[4].str + } + case 665: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3379 + { + yyVAL.str = "" + } + case 666: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3383 + { + yyVAL.str = " escaped by '" + string(yyDollar[3].bytes) + "'" + } + case 667: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3388 + { + yyVAL.str = "" + } + case 668: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:3392 + { + yyVAL.str = yyDollar[1].str + " enclosed by '" + string(yyDollar[4].bytes) + "'" + } + case 669: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3397 + { + yyVAL.str = "" + } + case 670: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3401 + { + yyVAL.str = " optionally" + } + case 671: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3414 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 644: + case 672: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3289 +//line sql.y:3418 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 645: + case 673: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3293 +//line sql.y:3422 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 646: + case 674: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3297 +//line sql.y:3426 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 647: + case 675: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3303 +//line sql.y:3432 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 648: + case 676: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3307 +//line sql.y:3436 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 649: + case 677: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3311 +//line sql.y:3440 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 650: + case 678: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3315 +//line sql.y:3444 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 651: + case 679: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3320 +//line sql.y:3449 { yyVAL.updateExprs = nil } - case 652: + case 680: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3324 +//line sql.y:3453 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 653: + case 681: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3330 +//line sql.y:3459 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 654: + case 682: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3334 +//line sql.y:3463 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 655: + case 683: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3340 +//line sql.y:3469 { yyVAL.valTuple = yyDollar[1].valTuple } - case 656: + case 684: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3344 +//line sql.y:3473 { yyVAL.valTuple = ValTuple{} } - case 657: + case 685: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3350 +//line sql.y:3479 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 658: + case 686: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3356 +//line sql.y:3485 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = yyDollar[1].valTuple[0] @@ -7751,342 +7971,342 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 659: + case 687: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3366 +//line sql.y:3495 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 660: + case 688: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3370 +//line sql.y:3499 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 661: + case 689: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3376 +//line sql.y:3505 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 662: + case 690: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3382 +//line sql.y:3511 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 663: + case 691: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3386 +//line sql.y:3515 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 664: + case 692: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3392 +//line sql.y:3521 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("on"))} } - case 665: + case 693: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3396 +//line sql.y:3525 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("off"))} } - case 666: + case 694: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3400 +//line sql.y:3529 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: yyDollar[3].expr} } - case 667: + case 695: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3404 +//line sql.y:3533 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Scope: ImplicitScope, Expr: yyDollar[2].expr} } - case 668: + case 696: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3408 +//line sql.y:3537 { yyDollar[2].setExpr.Scope = yyDollar[1].scope yyVAL.setExpr = yyDollar[2].setExpr } - case 670: + case 698: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3416 +//line sql.y:3545 { yyVAL.bytes = []byte("charset") } - case 672: + case 700: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3423 +//line sql.y:3552 { yyVAL.expr = NewStrLiteral([]byte(yyDollar[1].colIdent.String())) } - case 673: + case 701: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3427 +//line sql.y:3556 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } - case 674: + case 702: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3431 +//line sql.y:3560 { yyVAL.expr = &Default{} } - case 677: + case 705: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3440 +//line sql.y:3569 { yyVAL.boolean = false } - case 678: + case 706: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3442 +//line sql.y:3571 { yyVAL.boolean = true } - case 679: + case 707: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3445 +//line sql.y:3574 { yyVAL.boolean = false } - case 680: + case 708: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3447 +//line sql.y:3576 { yyVAL.boolean = true } - case 681: + case 709: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3450 +//line sql.y:3579 { yyVAL.ignore = false } - case 682: + case 710: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3452 +//line sql.y:3581 { yyVAL.ignore = true } - case 683: + case 711: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3456 +//line sql.y:3585 { yyVAL.empty = struct{}{} } - case 684: + case 712: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3458 +//line sql.y:3587 { yyVAL.empty = struct{}{} } - case 685: + case 713: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3460 +//line sql.y:3589 { yyVAL.empty = struct{}{} } - case 686: + case 714: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3462 +//line sql.y:3591 { yyVAL.empty = struct{}{} } - case 687: + case 715: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3464 +//line sql.y:3593 { yyVAL.empty = struct{}{} } - case 688: + case 716: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3466 +//line sql.y:3595 { yyVAL.empty = struct{}{} } - case 689: + case 717: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3468 +//line sql.y:3597 { yyVAL.empty = struct{}{} } - case 690: + case 718: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3470 +//line sql.y:3599 { yyVAL.empty = struct{}{} } - case 691: + case 719: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3472 +//line sql.y:3601 { yyVAL.empty = struct{}{} } - case 692: + case 720: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3474 +//line sql.y:3603 { yyVAL.empty = struct{}{} } - case 693: + case 721: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3478 +//line sql.y:3607 { yyVAL.OnlineDDLHint = &OnlineDDLHint{} } - case 694: + case 722: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3482 +//line sql.y:3611 { yyVAL.OnlineDDLHint = &OnlineDDLHint{ Strategy: DDLStrategy(yyDollar[2].bytes), } } - case 695: + case 723: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3488 +//line sql.y:3617 { yyVAL.OnlineDDLHint = &OnlineDDLHint{ Strategy: DDLStrategy(yyDollar[2].bytes), Options: string(yyDollar[3].bytes), } } - case 696: + case 724: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3496 +//line sql.y:3625 { yyVAL.empty = struct{}{} } - case 697: + case 725: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3498 +//line sql.y:3627 { yyVAL.empty = struct{}{} } - case 698: + case 726: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3500 +//line sql.y:3629 { yyVAL.empty = struct{}{} } - case 699: + case 727: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3504 +//line sql.y:3633 { yyVAL.empty = struct{}{} } - case 700: + case 728: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3506 +//line sql.y:3635 { yyVAL.empty = struct{}{} } - case 701: + case 729: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3509 +//line sql.y:3638 { yyVAL.empty = struct{}{} } - case 702: + case 730: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3511 +//line sql.y:3640 { yyVAL.empty = struct{}{} } - case 703: + case 731: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3513 +//line sql.y:3642 { yyVAL.empty = struct{}{} } - case 704: + case 732: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3516 +//line sql.y:3645 { yyVAL.colIdent = ColIdent{} } - case 705: + case 733: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3518 +//line sql.y:3647 { yyVAL.colIdent = yyDollar[2].colIdent } - case 706: + case 734: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3522 +//line sql.y:3651 { yyVAL.colIdent = yyDollar[1].colIdent } - case 707: + case 735: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3526 +//line sql.y:3655 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 709: + case 737: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3533 +//line sql.y:3662 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 710: + case 738: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3539 +//line sql.y:3668 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) } - case 711: + case 739: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3543 +//line sql.y:3672 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 713: + case 741: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3550 +//line sql.y:3679 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 1016: + case 1055: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3878 +//line sql.y:4018 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 1017: + case 1056: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3887 +//line sql.y:4027 { decNesting(yylex) } - case 1018: + case 1057: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3892 +//line sql.y:4032 { skipToEnd(yylex) } - case 1019: + case 1058: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3897 +//line sql.y:4037 { skipToEnd(yylex) } - case 1020: + case 1059: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3901 +//line sql.y:4041 { skipToEnd(yylex) } - case 1021: + case 1060: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3905 +//line sql.y:4045 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 13f21e4027b..0c4720e98a3 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -131,6 +131,7 @@ func skipToEnd(yylex interface{}) { matchExprOption MatchExprOption orderDirection OrderDirection explainType ExplainType + selectInto *SelectInto } %token LEX_ERROR @@ -138,7 +139,8 @@ func skipToEnd(yylex interface{}) { %token SELECT STREAM VSTREAM INSERT UPDATE DELETE FROM WHERE GROUP HAVING ORDER BY LIMIT OFFSET FOR %token ALL DISTINCT AS EXISTS ASC DESC INTO DUPLICATE KEY DEFAULT SET LOCK UNLOCK KEYS DO %token DISTINCTROW -%token OUTFILE S3 DATA LOAD +%token OUTFILE S3 DATA LOAD LINES TERMINATED ESCAPED ENCLOSED +%token DUMPFILE CSV HEADER MANIFEST OVERWRITE STARTING OPTIONALLY %token VALUES LAST_INSERT_ID %token NEXT VALUE SHARE MODE %token SQL_NO_CACHE SQL_CACHE SQL_CALC_FOUND_ROWS @@ -288,7 +290,9 @@ func skipToEnd(yylex interface{}) { %type order %type asc_desc_opt %type limit_opt -%type into_outfile_s3_opt +%type into_option +%type header_opt export_options manifest_opt overwrite_opt format_opt optionally_opt +%type fields_opt lines_opt terminated_by_opt starting_by_opt enclosed_by_opt escaped_by_opt %type lock_opt %type ins_column_list column_list %type opt_partition_clause partition_list @@ -428,13 +432,13 @@ load_statement: } select_statement: - base_select order_by_opt limit_opt lock_opt into_outfile_s3_opt + base_select order_by_opt limit_opt lock_opt into_option { sel := $1.(*Select) sel.OrderBy = $2 sel.Limit = $3 sel.Lock = $4 - sel.IntoOutfileS3 = $5 + sel.Into = $5 $$ = sel } | openb select_statement closeb order_by_opt limit_opt lock_opt @@ -3264,13 +3268,138 @@ lock_opt: $$ = ShareModeLock } -into_outfile_s3_opt: +into_option: + { + $$ = nil + } +| INTO OUTFILE S3 STRING charset_opt format_opt export_options manifest_opt overwrite_opt + { + $$ = &SelectInto{Type:IntoOutfileS3, FileName:string($4), Charset:$5, FormatOption:$6, ExportOption:$7, Manifest:$8, Overwrite:$9} + } +| INTO DUMPFILE STRING + { + $$ = &SelectInto{Type:IntoDumpfile, FileName:string($3), Charset:"", FormatOption:"", ExportOption:"", Manifest:"", Overwrite:""} + } +| INTO OUTFILE STRING charset_opt export_options + { + $$ = &SelectInto{Type:IntoOutfile, FileName:string($3), Charset:$4, FormatOption:"", ExportOption:$5, Manifest:"", Overwrite:""} + } + +format_opt: + { + $$ = "" + } +| FORMAT CSV header_opt + { + $$ = " format csv" + $3 + } +| FORMAT TEXT header_opt + { + $$ = " format text" + $3 + } + +header_opt: + { + $$ = "" + } +| HEADER + { + $$ = " header" + } + +manifest_opt: + { + $$ = "" + } +| MANIFEST ON + { + $$ = " manifest on" + } +| MANIFEST OFF + { + $$ = " manifest off" + } + +overwrite_opt: + { + $$ = "" + } +| OVERWRITE ON + { + $$ = " overwrite on" + } +| OVERWRITE OFF + { + $$ = " overwrite off" + } + +export_options: + fields_opt lines_opt + { + $$ = $1 + $2 + } + +lines_opt: + { + $$ = "" + } +| LINES starting_by_opt terminated_by_opt + { + $$ = " lines" + $2 + $3 + } + +starting_by_opt: + { + $$ = "" + } +| STARTING BY STRING + { + $$ = " starting by '" + string($3) + "'" + } + +terminated_by_opt: + { + $$ = "" + } +| TERMINATED BY STRING + { + $$ = " terminated by '" + string($3) + "'" + } + +fields_opt: + { + $$ = "" + } +| columns_or_fields terminated_by_opt enclosed_by_opt escaped_by_opt + { + $$ = " " + $1 + $2 + $3 + $4 + } + +escaped_by_opt: + { + $$ = "" + } +| ESCAPED BY STRING + { + $$ = " escaped by '" + string($3) + "'" + } + +enclosed_by_opt: + { + $$ = "" + } +| optionally_opt ENCLOSED BY STRING + { + $$ = $1 + " enclosed by '" + string($4) + "'" + } + +optionally_opt: { $$ = "" } -| INTO OUTFILE S3 STRING +| OPTIONALLY { - $$ = string($4) + $$ = " optionally" } // insert_data expands all combinations into a single rule. @@ -3713,6 +3842,7 @@ non_reserved_keyword: | COMMIT | COMMITTED | COMPONENT +| CSV | DATA | DATE | DATETIME @@ -3720,10 +3850,13 @@ non_reserved_keyword: | DEFINITION | DESCRIPTION | DOUBLE +| DUMPFILE | DUPLICATE +| ENCLOSED | ENFORCED | ENGINES | ENUM +| ESCAPED | EXCLUDE | EXPANSION | EXTENDED @@ -3739,6 +3872,7 @@ non_reserved_keyword: | GEOMETRYCOLLECTION | GET_MASTER_PUBLIC_KEY | GLOBAL +| HEADER | HISTOGRAM | HISTORY | INACTIVE @@ -3755,11 +3889,13 @@ non_reserved_keyword: | LAST_INSERT_ID | LESS | LEVEL +| LINES | LINESTRING | LOAD | LOCKED | LONGBLOB | LONGTEXT +| MANIFEST | MASTER_COMPRESSION_ALGORITHMS | MASTER_PUBLIC_KEY_PATH | MASTER_TLS_CIPHERSUITES @@ -3783,11 +3919,13 @@ non_reserved_keyword: | OJ | OLD | OPTIONAL +| OPTIONALLY | ORDINALITY | ORGANIZATION | ONLY | OPTIMIZE | OTHERS +| OVERWRITE | PARTITION | PATH | PERSIST @@ -3834,8 +3972,10 @@ non_reserved_keyword: | SPATIAL | SRID | START +| STARTING | STATUS | TABLES +| TERMINATED | TEXT | THAN | THREAD_PRIORITY diff --git a/go/vt/sqlparser/token.go b/go/vt/sqlparser/token.go index 2c3747be742..be9cd17e428 100644 --- a/go/vt/sqlparser/token.go +++ b/go/vt/sqlparser/token.go @@ -135,6 +135,7 @@ var keywords = map[string]int{ "substring": SUBSTRING, "create": CREATE, "cross": CROSS, + "csv": CSV, "current_date": CURRENT_DATE, "current_time": CURRENT_TIME, "current_timestamp": CURRENT_TIMESTAMP, @@ -164,16 +165,17 @@ var keywords = map[string]int{ "double": DOUBLE, "do": DO, "drop": DROP, + "dumpfile": DUMPFILE, "duplicate": DUPLICATE, "each": UNUSED, "else": ELSE, "elseif": UNUSED, - "enclosed": UNUSED, + "enclosed": ENCLOSED, "end": END, "engines": ENGINES, "enum": ENUM, "escape": ESCAPE, - "escaped": UNUSED, + "escaped": ESCAPED, "exists": EXISTS, "exit": UNUSED, "explain": EXPLAIN, @@ -202,6 +204,7 @@ var keywords = map[string]int{ "group": GROUP, "group_concat": GROUP_CONCAT, "having": HAVING, + "header": HEADER, "high_priority": UNUSED, "hour_microsecond": UNUSED, "hour_minute": UNUSED, @@ -246,7 +249,7 @@ var keywords = map[string]int{ "like": LIKE, "limit": LIMIT, "linear": UNUSED, - "lines": UNUSED, + "lines": LINES, "linestring": LINESTRING, "load": LOAD, "localtime": LOCALTIME, @@ -257,6 +260,7 @@ var keywords = map[string]int{ "longtext": LONGTEXT, "loop": UNUSED, "low_priority": UNUSED, + "manifest": MANIFEST, "master_bind": UNUSED, "match": MATCH, "maxvalue": MAXVALUE, @@ -288,12 +292,13 @@ var keywords = map[string]int{ "optimize": OPTIMIZE, "optimizer_costs": UNUSED, "option": UNUSED, - "optionally": UNUSED, + "optionally": OPTIONALLY, "or": OR, "order": ORDER, "out": UNUSED, "outer": OUTER, "outfile": OUTFILE, + "overwrite": OVERWRITE, "partition": PARTITION, "plugins": PLUGINS, "point": POINT, @@ -354,7 +359,7 @@ var keywords = map[string]int{ "sql_small_result": UNUSED, "ssl": UNUSED, "start": START, - "starting": UNUSED, + "starting": STARTING, "status": STATUS, "stored": UNUSED, "straight_join": STRAIGHT_JOIN, @@ -362,7 +367,7 @@ var keywords = map[string]int{ "vstream": VSTREAM, "table": TABLE, "tables": TABLES, - "terminated": UNUSED, + "terminated": TERMINATED, "text": TEXT, "than": THAN, "then": THEN, From 88f4de88a90e00910c5346fa35b7a8f2360f369c Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Tue, 13 Oct 2020 16:58:26 +0530 Subject: [PATCH 04/13] Bug Fix and using correct assert package Signed-off-by: GuptaManan100 --- go/vt/sqlparser/ast.go | 3 +++ go/vt/sqlparser/parse_test.go | 3 +-- go/vt/sqlparser/rewriter.go | 7 +++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 7b033e69fa3..81376d8e1dc 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -2097,6 +2097,9 @@ func (node *ShowTableStatus) Format(buf *TrackedBuffer) { // Format formats the node. func (node *SelectInto) Format(buf *TrackedBuffer) { + if node == nil { + return + } buf.astPrintf(node, "%s'%s'", node.Type.ToString(), node.FileName) if node.Charset != "" { buf.astPrintf(node, " character set %s", node.Charset) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 9aafa120f75..02417f95805 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -26,8 +26,7 @@ import ( "sync" "testing" - "gotest.tools/assert" - + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) diff --git a/go/vt/sqlparser/rewriter.go b/go/vt/sqlparser/rewriter.go index ddc237a5627..82582e0a90d 100644 --- a/go/vt/sqlparser/rewriter.go +++ b/go/vt/sqlparser/rewriter.go @@ -527,6 +527,10 @@ func replaceSelectHaving(newNode, parent SQLNode) { parent.(*Select).Having = newNode.(*Where) } +func replaceSelectInto(newNode, parent SQLNode) { + parent.(*Select).Into = newNode.(*SelectInto) +} + func replaceSelectLimit(newNode, parent SQLNode) { parent.(*Select).Limit = newNode.(*Limit) } @@ -1205,6 +1209,7 @@ func (a *application) apply(parent, node SQLNode, replacer replacerFunc) { a.apply(node, n.From, replaceSelectFrom) a.apply(node, n.GroupBy, replaceSelectGroupBy) a.apply(node, n.Having, replaceSelectHaving) + a.apply(node, n.Into, replaceSelectInto) a.apply(node, n.Limit, replaceSelectLimit) a.apply(node, n.OrderBy, replaceSelectOrderBy) a.apply(node, n.SelectExprs, replaceSelectSelectExprs) @@ -1218,6 +1223,8 @@ func (a *application) apply(parent, node SQLNode, replacer replacerFunc) { replacerRef.inc() } + case *SelectInto: + case *Set: a.apply(node, n.Comments, replaceSetComments) a.apply(node, n.Exprs, replaceSetExprs) From 01838918e2fd57eb679305a8fa92b9fbb6745273 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Tue, 13 Oct 2020 17:12:00 +0530 Subject: [PATCH 05/13] Added planning support for select into constructs for unsharded keyspaces Signed-off-by: GuptaManan100 --- go/vt/vtgate/planbuilder/builder.go | 6 +-- go/vt/vtgate/planbuilder/concatenate.go | 9 ++-- go/vt/vtgate/planbuilder/join.go | 9 ++-- go/vt/vtgate/planbuilder/ordered_aggregate.go | 4 +- go/vt/vtgate/planbuilder/pullout_subquery.go | 9 ++-- go/vt/vtgate/planbuilder/route.go | 12 ++++- go/vt/vtgate/planbuilder/select.go | 14 ++--- .../vtgate/planbuilder/sql_calc_found_rows.go | 4 +- .../planbuilder/testdata/select_cases.txt | 52 +++++++++++++++++++ .../testdata/unsupported_cases.txt | 8 +-- go/vt/vtgate/planbuilder/vindex_func.go | 3 +- 11 files changed, 99 insertions(+), 31 deletions(-) diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index 9515cdf0e09..1a70a15e94d 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -83,7 +83,7 @@ type builder interface { SetUpperLimit(count sqlparser.Expr) // PushMisc pushes miscelleaneous constructs to all the primitives. - PushMisc(sel *sqlparser.Select) + PushMisc(sel *sqlparser.Select) error // Wireup performs the wire-up work. Nodes should be traversed // from right to left because the rhs nodes can request vars from @@ -169,8 +169,8 @@ func (bc *builderCommon) SetUpperLimit(count sqlparser.Expr) { bc.input.SetUpperLimit(count) } -func (bc *builderCommon) PushMisc(sel *sqlparser.Select) { - bc.input.PushMisc(sel) +func (bc *builderCommon) PushMisc(sel *sqlparser.Select) error { + return bc.input.PushMisc(sel) } func (bc *builderCommon) Wireup(bldr builder, jt *jointab) error { diff --git a/go/vt/vtgate/planbuilder/concatenate.go b/go/vt/vtgate/planbuilder/concatenate.go index 7f9f8916e5f..72a359445a7 100644 --- a/go/vt/vtgate/planbuilder/concatenate.go +++ b/go/vt/vtgate/planbuilder/concatenate.go @@ -52,9 +52,12 @@ func (c *concatenate) SetUpperLimit(count sqlparser.Expr) { // not doing anything by design } -func (c *concatenate) PushMisc(sel *sqlparser.Select) { - c.lhs.PushMisc(sel) - c.rhs.PushMisc(sel) +func (c *concatenate) PushMisc(sel *sqlparser.Select) error { + err := c.lhs.PushMisc(sel) + if err != nil { + return err + } + return c.rhs.PushMisc(sel) } func (c *concatenate) Wireup(bldr builder, jt *jointab) error { diff --git a/go/vt/vtgate/planbuilder/join.go b/go/vt/vtgate/planbuilder/join.go index a13e75c9bd2..c33005bfbf8 100644 --- a/go/vt/vtgate/planbuilder/join.go +++ b/go/vt/vtgate/planbuilder/join.go @@ -286,9 +286,12 @@ func (jb *join) SetUpperLimit(_ sqlparser.Expr) { } // PushMisc satisfies the builder interface. -func (jb *join) PushMisc(sel *sqlparser.Select) { - jb.Left.PushMisc(sel) - jb.Right.PushMisc(sel) +func (jb *join) PushMisc(sel *sqlparser.Select) error { + err := jb.Left.PushMisc(sel) + if err != nil { + return err + } + return jb.Right.PushMisc(sel) } // Wireup satisfies the builder interface. diff --git a/go/vt/vtgate/planbuilder/ordered_aggregate.go b/go/vt/vtgate/planbuilder/ordered_aggregate.go index ae6715b5bd3..ba1744afeaf 100644 --- a/go/vt/vtgate/planbuilder/ordered_aggregate.go +++ b/go/vt/vtgate/planbuilder/ordered_aggregate.go @@ -506,8 +506,8 @@ func (oa *orderedAggregate) SetUpperLimit(count sqlparser.Expr) { } // PushMisc satisfies the builder interface. -func (oa *orderedAggregate) PushMisc(sel *sqlparser.Select) { - oa.input.PushMisc(sel) +func (oa *orderedAggregate) PushMisc(sel *sqlparser.Select) error { + return oa.input.PushMisc(sel) } // Wireup satisfies the builder interface. diff --git a/go/vt/vtgate/planbuilder/pullout_subquery.go b/go/vt/vtgate/planbuilder/pullout_subquery.go index e557b252524..34ec7ad8eb8 100644 --- a/go/vt/vtgate/planbuilder/pullout_subquery.go +++ b/go/vt/vtgate/planbuilder/pullout_subquery.go @@ -129,9 +129,12 @@ func (ps *pulloutSubquery) SetUpperLimit(count sqlparser.Expr) { } // PushMisc satisfies the builder interface. -func (ps *pulloutSubquery) PushMisc(sel *sqlparser.Select) { - ps.subquery.PushMisc(sel) - ps.underlying.PushMisc(sel) +func (ps *pulloutSubquery) PushMisc(sel *sqlparser.Select) error { + err := ps.subquery.PushMisc(sel) + if err != nil { + return err + } + return ps.underlying.PushMisc(sel) } // Wireup satisfies the builder interface. diff --git a/go/vt/vtgate/planbuilder/route.go b/go/vt/vtgate/planbuilder/route.go index 77aa1c85a05..427d0ffff08 100644 --- a/go/vt/vtgate/planbuilder/route.go +++ b/go/vt/vtgate/planbuilder/route.go @@ -20,6 +20,9 @@ import ( "fmt" "strings" + vtrpcpb "vitess.io/vitess/go/vt/proto/vtrpc" + "vitess.io/vitess/go/vt/vterrors" + "vitess.io/vitess/go/sqltypes" "vitess.io/vitess/go/vt/sqlparser" "vitess.io/vitess/go/vt/vtgate/engine" @@ -248,9 +251,16 @@ func (rb *route) SetUpperLimit(count sqlparser.Expr) { } // PushMisc satisfies the builder interface. -func (rb *route) PushMisc(sel *sqlparser.Select) { +func (rb *route) PushMisc(sel *sqlparser.Select) error { rb.Select.(*sqlparser.Select).Comments = sel.Comments rb.Select.(*sqlparser.Select).Lock = sel.Lock + if sel.Into != nil { + if rb.eroute.Opcode != engine.SelectUnsharded { + return vterrors.Errorf(vtrpcpb.Code_UNIMPLEMENTED, "unsupported: non bypass query for sharded keyspace with into") + } + rb.Select.(*sqlparser.Select).Into = sel.Into + } + return nil } // Wireup satisfies the builder interface. diff --git a/go/vt/vtgate/planbuilder/select.go b/go/vt/vtgate/planbuilder/select.go index 24e72e731f0..092476d790b 100644 --- a/go/vt/vtgate/planbuilder/select.go +++ b/go/vt/vtgate/planbuilder/select.go @@ -39,10 +39,6 @@ func buildSelectPlan(query string) func(sqlparser.Statement, ContextVSchema) (en return func(stmt sqlparser.Statement, vschema ContextVSchema) (engine.Primitive, error) { sel := stmt.(*sqlparser.Select) - if sel.IntoOutfileS3 != "" { - return nil, vterrors.Errorf(vtrpcpb.Code_UNIMPLEMENTED, "unsupported: non bypass query with into outfile s3") - } - p, err := handleDualSelects(sel, vschema) if err != nil { return nil, err @@ -118,9 +114,10 @@ func (pb *primitiveBuilder) processSelect(sel *sqlparser.Select, outer *symtab, return nil } } - // Into Outfile is not supported in subquery. - if sel.IntoOutfileS3 != "" && (outer != nil || query == "") { - return mysql.NewSQLError(mysql.ERCantUseOptionHere, "42000", "Incorrect usage/placement of 'INTO OUTFILE S3'") + + // Into is not supported in subquery. + if sel.Into != nil && (outer != nil || query == "") { + return mysql.NewSQLError(mysql.ERCantUseOptionHere, "42000", "Incorrect usage/placement of 'INTO'") } if err := pb.processTableExprs(sel.From); err != nil { @@ -165,8 +162,7 @@ func (pb *primitiveBuilder) processSelect(sel *sqlparser.Select, outer *symtab, if err := pb.pushLimit(sel.Limit); err != nil { return err } - pb.bldr.PushMisc(sel) - return nil + return pb.bldr.PushMisc(sel) } func buildSQLCalcFoundRowsPlan(query string, sel *sqlparser.Select, outer *symtab, vschema ContextVSchema) (builder, error) { diff --git a/go/vt/vtgate/planbuilder/sql_calc_found_rows.go b/go/vt/vtgate/planbuilder/sql_calc_found_rows.go index 48740cf36af..63c55113f08 100644 --- a/go/vt/vtgate/planbuilder/sql_calc_found_rows.go +++ b/go/vt/vtgate/planbuilder/sql_calc_found_rows.go @@ -100,8 +100,8 @@ func (s *sqlCalcFoundRows) SetUpperLimit(count sqlparser.Expr) { } //PushMisc implements the builder interface -func (s *sqlCalcFoundRows) PushMisc(sel *sqlparser.Select) { - s.LimitQuery.PushMisc(sel) +func (s *sqlCalcFoundRows) PushMisc(sel *sqlparser.Select) error { + return s.LimitQuery.PushMisc(sel) } //SupplyVar implements the builder interface diff --git a/go/vt/vtgate/planbuilder/testdata/select_cases.txt b/go/vt/vtgate/planbuilder/testdata/select_cases.txt index 95b70a3ef3d..80d720e6988 100644 --- a/go/vt/vtgate/planbuilder/testdata/select_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/select_cases.txt @@ -1556,4 +1556,56 @@ "select sql_calc_found_rows * from (select sql_calc_found_rows * from music limit 10) t limit 1" "Incorrect usage/placement of 'SQL_CALC_FOUND_ROWS' (errno 1234) (sqlstate 42000)" +# select from unsharded keyspace into dumpfile +"select * from main.unsharded into Dumpfile 'x.txt'" +{ + "QueryType": "SELECT", + "Original": "select * from main.unsharded into Dumpfile 'x.txt'", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectUnsharded", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "FieldQuery": "select * from unsharded where 1 != 1", + "Query": "select * from unsharded into dumpfile 'x.txt'", + "Table": "unsharded" + } +} +# select from unsharded keyspace into outfile +"select * from main.unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'" +{ + "QueryType": "SELECT", + "Original": "select * from main.unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectUnsharded", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "FieldQuery": "select * from unsharded where 1 != 1", + "Query": "select * from unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'", + "Table": "unsharded" + } +} + +# select from unsharded keyspace into outfile s3 +"select * from main.unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off" +{ + "QueryType": "SELECT", + "Original": "select * from main.unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectUnsharded", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "FieldQuery": "select * from unsharded where 1 != 1", + "Query": "select * from unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off", + "Table": "unsharded" + } +} diff --git a/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt b/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt index ea0753ee9f0..a5a5df185d3 100644 --- a/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt @@ -434,13 +434,13 @@ # Union after storing result in outfile "select id from user into outfile s3 'out_file_name' union all select id from music" -"Incorrect usage/placement of 'INTO OUTFILE S3' (errno 1234) (sqlstate 42000)" +"Incorrect usage/placement of 'INTO' (errno 1234) (sqlstate 42000)" # Into outfile s3 in sub-query "select id from (select id from user into outfile s3 'inner_outfile') as t2" -"Incorrect usage/placement of 'INTO OUTFILE S3' (errno 1234) (sqlstate 42000)" +"Incorrect usage/placement of 'INTO' (errno 1234) (sqlstate 42000)" # Multi shard query using into outfile s3 -"select * from user order by id limit 100 into outfile s3 'out_file_name'" -"unsupported: non bypass query with into outfile s3" +"select * from user into outfile s3 'out_file_name'" +"unsupported: non bypass query for sharded keyspace with into" diff --git a/go/vt/vtgate/planbuilder/vindex_func.go b/go/vt/vtgate/planbuilder/vindex_func.go index c85ee7a0b52..d11e91746d2 100644 --- a/go/vt/vtgate/planbuilder/vindex_func.go +++ b/go/vt/vtgate/planbuilder/vindex_func.go @@ -181,7 +181,8 @@ func (vf *vindexFunc) SetUpperLimit(_ sqlparser.Expr) { } // PushMisc satisfies the builder interface. -func (vf *vindexFunc) PushMisc(sel *sqlparser.Select) { +func (vf *vindexFunc) PushMisc(sel *sqlparser.Select) error { + return nil } // Wireup satisfies the builder interface. From 8f405fe0e6ce61df875779dd8ba4e6a72000ce63 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Wed, 14 Oct 2020 12:58:52 +0530 Subject: [PATCH 06/13] Changed error messages to be more appropriate Signed-off-by: GuptaManan100 --- go/vt/vtgate/planbuilder/builder.go | 2 +- go/vt/vtgate/planbuilder/route.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index 1a70a15e94d..8dd0600f348 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -383,7 +383,7 @@ func buildLoadPlan(query string, vschema ContextVSchema) (engine.Primitive, erro destination := vschema.Destination() if destination == nil { if keyspace.Sharded { - return nil, vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "set bypass destination first for a sharded keyspace") + return nil, vterrors.Errorf(vtrpcpb.Code_UNIMPLEMENTED, "unsupported: this construct is not supported on sharded keyspace") } destination = key.DestinationAnyShard{} } diff --git a/go/vt/vtgate/planbuilder/route.go b/go/vt/vtgate/planbuilder/route.go index 427d0ffff08..90cfe0d4493 100644 --- a/go/vt/vtgate/planbuilder/route.go +++ b/go/vt/vtgate/planbuilder/route.go @@ -256,7 +256,7 @@ func (rb *route) PushMisc(sel *sqlparser.Select) error { rb.Select.(*sqlparser.Select).Lock = sel.Lock if sel.Into != nil { if rb.eroute.Opcode != engine.SelectUnsharded { - return vterrors.Errorf(vtrpcpb.Code_UNIMPLEMENTED, "unsupported: non bypass query for sharded keyspace with into") + return vterrors.Errorf(vtrpcpb.Code_UNIMPLEMENTED, "unsupported: this construct is not supported on sharded keyspace") } rb.Select.(*sqlparser.Select).Into = sel.Into } From a47f147d5b4701def47f8c332d94cb38600b1bdd Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Wed, 14 Oct 2020 14:22:37 +0530 Subject: [PATCH 07/13] Created a separate test for Load Data statements Signed-off-by: GuptaManan100 --- go/vt/sqlparser/parse_test.go | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 02417f95805..2ea54439243 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1052,21 +1052,6 @@ var ( output: "alter database d", }, { input: "create table a", - }, { - input: "load data from s3 'x.txt'", - output: "AST node missing for Load type", - }, { - input: "load data from s3 manifest 'x.txt'", - output: "AST node missing for Load type", - }, { - input: "load data from s3 file 'x.txt'", - output: "AST node missing for Load type", - }, { - input: "load data infile 'x.txt' into table 'c'", - output: "AST node missing for Load type", - }, { - input: "load data from s3 'x.txt' into table x", - output: "AST node missing for Load type", }, { input: "create table a (\n\t`a` int\n)", output: "create table a (\n\ta int\n)", @@ -2274,6 +2259,22 @@ func TestSubStr(t *testing.T) { } } +func TestLoadData(t *testing.T) { + validSQL := []string{ + "load data from s3 'x.txt'", + "load data from s3 manifest 'x.txt'", + "load data from s3 file 'x.txt'", + "load data infile 'x.txt' into table 'c'", + "load data from s3 'x.txt' into table x"} + for _, tcase := range validSQL { + _, err := Parse(tcase) + if err != nil { + t.Errorf("input: %s, err: %v", tcase, err) + continue + } + } +} + func TestCreateTable(t *testing.T) { validSQL := []string{ // test all the data types and options From 434a0ac49a61fecaa042a4c734079fbd92fdf874 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Wed, 14 Oct 2020 15:18:46 +0530 Subject: [PATCH 08/13] Removed a few test cases from unsupported and changed output of one test case Signed-off-by: GuptaManan100 --- .../vtgate/planbuilder/testdata/unsupported_cases.txt | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt b/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt index a5a5df185d3..320a834fc69 100644 --- a/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt @@ -432,15 +432,7 @@ "set sql_mode = default" "DEFAULT not supported for @@sql_mode" -# Union after storing result in outfile -"select id from user into outfile s3 'out_file_name' union all select id from music" -"Incorrect usage/placement of 'INTO' (errno 1234) (sqlstate 42000)" - -# Into outfile s3 in sub-query -"select id from (select id from user into outfile s3 'inner_outfile') as t2" -"Incorrect usage/placement of 'INTO' (errno 1234) (sqlstate 42000)" - # Multi shard query using into outfile s3 "select * from user into outfile s3 'out_file_name'" -"unsupported: non bypass query for sharded keyspace with into" +"unsupported: this construct is not supported on sharded keyspace" From d374c39b0c29e287cf11e99e5e65e655222f2d1c Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Wed, 14 Oct 2020 16:36:01 +0530 Subject: [PATCH 09/13] Added basic end to end test for Select into and load data Signed-off-by: GuptaManan100 --- .../endtoend/vtgate/unsharded/main_test.go | 156 ++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 go/test/endtoend/vtgate/unsharded/main_test.go diff --git a/go/test/endtoend/vtgate/unsharded/main_test.go b/go/test/endtoend/vtgate/unsharded/main_test.go new file mode 100644 index 00000000000..d330195f83d --- /dev/null +++ b/go/test/endtoend/vtgate/unsharded/main_test.go @@ -0,0 +1,156 @@ +/* +Copyright 2019 The Vitess Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package unsharded + +import ( + "context" + "flag" + "fmt" + "os" + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "vitess.io/vitess/go/mysql" + "vitess.io/vitess/go/sqltypes" + "vitess.io/vitess/go/test/endtoend/cluster" +) + +var ( + clusterInstance *cluster.LocalProcessCluster + cell = "zone1" + hostname = "localhost" + KeyspaceName = "customer" + SchemaSQL = ` +CREATE TABLE t1 ( + c1 BIGINT NOT NULL, + c2 BIGINT NOT NULL, + c3 BIGINT, + c4 varchar(100), + PRIMARY KEY (c1), + UNIQUE KEY (c2), + UNIQUE KEY (c3), + UNIQUE KEY (c4) +) ENGINE=Innodb; +` + VSchema = ` +{ + "sharded": false, + "tables": { + "t1": { + "columns": [ + { + "name": "c1", + "type": "INT64" + }, + { + "name": "c2", + "type": "INT64" + }, + { + "name": "c3", + "type": "INT64" + }, + { + "name": "c4", + "type": "VARCHAR" + } + ], + } + } +} +` +) + +func TestMain(m *testing.M) { + defer cluster.PanicHandler(nil) + flag.Parse() + + exitCode := func() int { + clusterInstance = cluster.NewCluster(cell, hostname) + defer clusterInstance.Teardown() + + // Start topo server + if err := clusterInstance.StartTopo(); err != nil { + return 1 + } + + // Start keyspace + Keyspace := &cluster.Keyspace{ + Name: KeyspaceName, + SchemaSQL: SchemaSQL, + VSchema: VSchema, + } + if err := clusterInstance.StartUnshardedKeyspace(*Keyspace, 0, false); err != nil { + return 1 + } + + // Start vtgate + if err := clusterInstance.StartVtgate(); err != nil { + return 1 + } + + return m.Run() + }() + os.Exit(exitCode) +} + +func TestSelectIntoAndLoadFrom(t *testing.T) { + defer cluster.PanicHandler(t) + ctx := context.Background() + vtParams := mysql.ConnParams{ + Host: "localhost", + Port: clusterInstance.VtgateMySQLPort, + } + conn, err := mysql.Connect(ctx, &vtParams) + require.Nil(t, err) + defer conn.Close() + + defer exec(t, conn, `delete from t1`) + exec(t, conn, `insert into t1(c1, c2, c3, c4) values (300,100,300,'abc')`) + + exec(t, conn, `select * from t1 into outfile 'x.txt'`) + execAssertError(t, conn, `load data infile 'x.txt' into table t1`, "ERROR 1062 (23000): Duplicate entry '300' for key 'PRIMARY'") + exec(t, conn, `delete from t1`) + exec(t, conn, `load data infile 'x.txt' into table t1`) + assertMatches(t, conn, `select c1,c2,c3 from t1`, `[[INT64(300) INT64(100) INT64(300)]]`) +} + +func exec(t *testing.T, conn *mysql.Conn, query string) *sqltypes.Result { + t.Helper() + qr, err := conn.ExecuteFetch(query, 1000, true) + require.NoError(t, err) + return qr +} + +func execAssertError(t *testing.T, conn *mysql.Conn, query string, errorString string) { + t.Helper() + _, err := conn.ExecuteFetch(query, 1000, true) + require.Error(t, err) + assert.Contains(t, err.Error(), errorString) +} + +func assertMatches(t *testing.T, conn *mysql.Conn, query, expected string) { + t.Helper() + qr := exec(t, conn, query) + got := fmt.Sprintf("%v", qr.Rows) + diff := cmp.Diff(expected, got) + if diff != "" { + t.Errorf("Query: %s (-want +got):\n%s", query, diff) + } +} From 97dc3732776b0edc16cb28bbddb3eaea77a97358 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Wed, 14 Oct 2020 21:29:09 +0530 Subject: [PATCH 10/13] Updated tests for better coverage Signed-off-by: GuptaManan100 --- go/test/endtoend/vtgate/unsharded/main_test.go | 6 +++++- go/vt/sqlparser/parse_test.go | 5 +---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/go/test/endtoend/vtgate/unsharded/main_test.go b/go/test/endtoend/vtgate/unsharded/main_test.go index d330195f83d..be79923423a 100644 --- a/go/test/endtoend/vtgate/unsharded/main_test.go +++ b/go/test/endtoend/vtgate/unsharded/main_test.go @@ -1,5 +1,5 @@ /* -Copyright 2019 The Vitess Authors. +Copyright 2020 The Vitess Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -129,6 +129,10 @@ func TestSelectIntoAndLoadFrom(t *testing.T) { exec(t, conn, `delete from t1`) exec(t, conn, `load data infile 'x.txt' into table t1`) assertMatches(t, conn, `select c1,c2,c3 from t1`, `[[INT64(300) INT64(100) INT64(300)]]`) + exec(t, conn, `select * from t1 into dumpfile 'x1.txt'`) + exec(t, conn, `select * from t1 into outfile 'x2.txt' Fields terminated by ';' optionally enclosed by '"' escaped by '\t' lines terminated by '\n'`) + exec(t, conn, `load data infile 'x.txt' into replace table t1 Fields terminated by ';' optionally enclosed by '"' escaped by '\t' lines terminated by '\n'`) + assertMatches(t, conn, `select c1,c2,c3 from t1`, `[[INT64(300) INT64(100) INT64(300)]]`) } func exec(t *testing.T, conn *mysql.Conn, query string) *sqltypes.Result { diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 29f426142c6..0e2163f3efa 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -2271,10 +2271,7 @@ func TestLoadData(t *testing.T) { "load data from s3 'x.txt' into table x"} for _, tcase := range validSQL { _, err := Parse(tcase) - if err != nil { - t.Errorf("input: %s, err: %v", tcase, err) - continue - } + require.NoError(t, err) } } From 332a63b0c7c124e9db972c56385d6d59e86b34aa Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Thu, 15 Oct 2020 11:00:55 +0530 Subject: [PATCH 11/13] Added separate PlanId for Load statements Signed-off-by: GuptaManan100 --- go/vt/vttablet/tabletserver/planbuilder/plan.go | 4 +++- go/vt/vttablet/tabletserver/query_engine.go | 2 +- go/vt/vttablet/tabletserver/query_executor.go | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/go/vt/vttablet/tabletserver/planbuilder/plan.go b/go/vt/vttablet/tabletserver/planbuilder/plan.go index 9891f7f3d7e..4c34bdf53fb 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/plan.go +++ b/go/vt/vttablet/tabletserver/planbuilder/plan.go @@ -65,6 +65,8 @@ const ( PlanRelease PlanSRollback PlanShowTables + // PlanLoad is for Load data statements + PlanLoad NumPlans ) @@ -195,7 +197,7 @@ func Build(statement sqlparser.Statement, tables map[string]*schema.Table, isRes case *sqlparser.SRollback: plan, err = &Plan{PlanID: PlanSRollback}, nil case *sqlparser.Load: - plan, err = &Plan{PlanID: PlanDDL}, nil + plan, err = &Plan{PlanID: PlanLoad}, nil default: return nil, vterrors.New(vtrpcpb.Code_INVALID_ARGUMENT, "invalid SQL") } diff --git a/go/vt/vttablet/tabletserver/query_engine.go b/go/vt/vttablet/tabletserver/query_engine.go index 14870a630d6..0c4f331e5e5 100644 --- a/go/vt/vttablet/tabletserver/query_engine.go +++ b/go/vt/vttablet/tabletserver/query_engine.go @@ -333,7 +333,7 @@ func (qe *QueryEngine) GetPlan(ctx context.Context, logStats *tabletenv.LogStats } plan.Fields = r.Fields } - } else if plan.PlanID == planbuilder.PlanDDL || plan.PlanID == planbuilder.PlanSet { + } else if plan.PlanID == planbuilder.PlanDDL || plan.PlanID == planbuilder.PlanLoad || plan.PlanID == planbuilder.PlanSet { return plan, nil } if !skipQueryPlanCache && !sqlparser.SkipQueryPlanCacheDirective(statement) { diff --git a/go/vt/vttablet/tabletserver/query_executor.go b/go/vt/vttablet/tabletserver/query_executor.go index 70c363fe3b4..7b162480bf2 100644 --- a/go/vt/vttablet/tabletserver/query_executor.go +++ b/go/vt/vttablet/tabletserver/query_executor.go @@ -141,7 +141,7 @@ func (qre *QueryExecutor) Execute() (reply *sqltypes.Result, err error) { return qre.execOther() case planbuilder.PlanSavepoint, planbuilder.PlanRelease, planbuilder.PlanSRollback: return qre.execOther() - case planbuilder.PlanInsert, planbuilder.PlanUpdate, planbuilder.PlanDelete, planbuilder.PlanInsertMessage, planbuilder.PlanDDL: + case planbuilder.PlanInsert, planbuilder.PlanUpdate, planbuilder.PlanDelete, planbuilder.PlanInsertMessage, planbuilder.PlanDDL, planbuilder.PlanLoad: return qre.execAutocommit(qre.txConnExec) case planbuilder.PlanUpdateLimit, planbuilder.PlanDeleteLimit: return qre.execAsTransaction(qre.txConnExec) @@ -220,7 +220,7 @@ func (qre *QueryExecutor) txConnExec(conn *StatefulConnection) (*sqltypes.Result return nil, err } return qr, nil - case planbuilder.PlanDDL: + case planbuilder.PlanDDL, planbuilder.PlanLoad: return qre.execDDL(conn) } return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "%s unexpected plan type", qre.plan.PlanID.String()) From d1d8b7d258e194d5d95bc07670b45a67587c799d Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Thu, 15 Oct 2020 11:18:19 +0530 Subject: [PATCH 12/13] Added test cases for incorrect query Signed-off-by: GuptaManan100 --- go/vt/vtgate/planbuilder/testdata/select_cases.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/go/vt/vtgate/planbuilder/testdata/select_cases.txt b/go/vt/vtgate/planbuilder/testdata/select_cases.txt index 80d720e6988..ca6c851e092 100644 --- a/go/vt/vtgate/planbuilder/testdata/select_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/select_cases.txt @@ -1609,3 +1609,11 @@ "Table": "unsharded" } } + +# Union after into outfile is incorrect +"select id from user into outfile 'out_file_name' union all select id from music" +"Incorrect usage/placement of 'INTO' (errno 1234) (sqlstate 42000)" + +# Into outfile s3 in sub-query is incorrect +"select id from (select id from user into outfile s3 'inner_outfile') as t2" +"Incorrect usage/placement of 'INTO' (errno 1234) (sqlstate 42000)" From 06e466e481943911e6e261a40937a46df56a3c5a Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Thu, 15 Oct 2020 12:19:11 +0530 Subject: [PATCH 13/13] Changed a PlanLoad to follow PlanInsert rather than PlanDDL Signed-off-by: GuptaManan100 --- go/vt/vttablet/tabletserver/query_engine.go | 2 +- go/vt/vttablet/tabletserver/query_executor.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go/vt/vttablet/tabletserver/query_engine.go b/go/vt/vttablet/tabletserver/query_engine.go index 0c4f331e5e5..14870a630d6 100644 --- a/go/vt/vttablet/tabletserver/query_engine.go +++ b/go/vt/vttablet/tabletserver/query_engine.go @@ -333,7 +333,7 @@ func (qe *QueryEngine) GetPlan(ctx context.Context, logStats *tabletenv.LogStats } plan.Fields = r.Fields } - } else if plan.PlanID == planbuilder.PlanDDL || plan.PlanID == planbuilder.PlanLoad || plan.PlanID == planbuilder.PlanSet { + } else if plan.PlanID == planbuilder.PlanDDL || plan.PlanID == planbuilder.PlanSet { return plan, nil } if !skipQueryPlanCache && !sqlparser.SkipQueryPlanCacheDirective(statement) { diff --git a/go/vt/vttablet/tabletserver/query_executor.go b/go/vt/vttablet/tabletserver/query_executor.go index 7b162480bf2..2cf8235b8b2 100644 --- a/go/vt/vttablet/tabletserver/query_executor.go +++ b/go/vt/vttablet/tabletserver/query_executor.go @@ -195,7 +195,7 @@ func (qre *QueryExecutor) execAsTransaction(f func(conn *StatefulConnection) (*s func (qre *QueryExecutor) txConnExec(conn *StatefulConnection) (*sqltypes.Result, error) { switch qre.plan.PlanID { - case planbuilder.PlanInsert, planbuilder.PlanUpdate, planbuilder.PlanDelete: + case planbuilder.PlanInsert, planbuilder.PlanUpdate, planbuilder.PlanDelete, planbuilder.PlanLoad: return qre.txFetch(conn, true) case planbuilder.PlanInsertMessage: qre.bindVars["#time_now"] = sqltypes.Int64BindVariable(time.Now().UnixNano()) @@ -220,7 +220,7 @@ func (qre *QueryExecutor) txConnExec(conn *StatefulConnection) (*sqltypes.Result return nil, err } return qr, nil - case planbuilder.PlanDDL, planbuilder.PlanLoad: + case planbuilder.PlanDDL: return qre.execDDL(conn) } return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "%s unexpected plan type", qre.plan.PlanID.String())