From b552b7a3e84d047e4b9655685d7a9b1346f30a64 Mon Sep 17 00:00:00 2001 From: David Weitzman Date: Mon, 18 Mar 2019 12:03:35 -0700 Subject: [PATCH] Two cherry-picks from upstream Summary: 1) Don't let one bad sequence disable sequences for other tables https://github.com/vitessio/vitess/pull/4743 2) Route "show create table" correctly https://github.com/vitessio/vitess/pull/4732 Reviewers: #vitess, hzhou, mingjianliu Reviewed By: #vitess, mingjianliu Subscribers: mingjianliu, jenkins Differential Revision: https://phabricator.pinadmin.com/D382885 --- go/vt/sqlparser/ast.go | 10 + go/vt/sqlparser/parse_test.go | 2 +- go/vt/sqlparser/sql.go | 1720 +++++++++++++------------ go/vt/sqlparser/sql.y | 4 +- go/vt/vtgate/executor.go | 19 + go/vt/vtgate/executor_test.go | 28 + go/vt/vtgate/vindexes/vschema.go | 2 +- go/vt/vtgate/vindexes/vschema_test.go | 38 +- 8 files changed, 970 insertions(+), 853 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index df3dfd75dd8..393734e42b6 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -1518,6 +1518,7 @@ func (f *ForeignKeyDefinition) walkSubtree(visit Visit) error { type Show struct { Type string OnTable TableName + Table TableName ShowTablesOpt *ShowTablesOpt Scope string ShowCollationFilterOpt *Expr @@ -1548,6 +1549,9 @@ func (node *Show) Format(buf *TrackedBuffer) { if node.Type == "collation" && node.ShowCollationFilterOpt != nil { buf.Myprintf(" where %v", *node.ShowCollationFilterOpt) } + if node.HasTable() { + buf.Myprintf(" %v", node.Table) + } } // HasOnTable returns true if the show statement has an "on" clause @@ -1555,6 +1559,12 @@ func (node *Show) HasOnTable() bool { return node.OnTable.Name.v != "" } +// HasTable returns true if the show statement has a parsed table name. +// Not all show statements parse table names. +func (node *Show) HasTable() bool { + return node.Table.Name.v != "" +} + func (node *Show) walkSubtree(visit Visit) error { return nil } diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index bdafd2061ae..9de87958c6c 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1056,7 +1056,7 @@ var ( output: "show create procedure", }, { input: "show create table t", - output: "show create table", + output: "show create table t", }, { input: "show create trigger t", output: "show create trigger", diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 7575306054c..11f1a9f76fe 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -706,251 +706,251 @@ var yyExca = [...]int{ const yyPrivate = 57344 -const yyLast = 12140 +const yyLast = 12392 var yyAct = [...]int{ - 268, 1411, 1401, 1197, 1364, 1079, 272, 990, 562, 844, - 1008, 1274, 1132, 1166, 991, 1260, 57, 821, 246, 1133, - 1129, 1307, 840, 887, 873, 853, 923, 843, 1139, 1033, - 1014, 1102, 81, 561, 3, 819, 208, 336, 1145, 208, - 765, 775, 705, 1059, 1050, 857, 950, 298, 808, 823, - 772, 742, 793, 593, 610, 237, 494, 500, 609, 594, - 255, 330, 883, 514, 325, 801, 435, 208, 81, 327, - 932, 506, 208, 56, 208, 1404, 774, 1388, 1399, 1374, - 1396, 1198, 1387, 1373, 867, 245, 1124, 1234, 440, 1318, - 468, 203, 199, 200, 201, 1161, 1162, 1160, 270, 61, - 238, 239, 240, 241, 834, 259, 244, 576, 488, 1340, - 527, 526, 536, 537, 529, 530, 531, 532, 533, 534, - 535, 528, 243, 906, 538, 63, 64, 65, 66, 67, - 1174, 1175, 1176, 835, 836, 242, 1041, 905, 1179, 1177, - 1021, 484, 611, 1020, 612, 195, 1022, 197, 866, 485, - 482, 483, 218, 1263, 453, 874, 470, 1280, 472, 1217, - 1215, 236, 477, 478, 680, 910, 487, 1082, 1081, 678, - 1398, 1395, 1365, 1078, 904, 802, 231, 1356, 858, 1419, - 1103, 454, 1415, 442, 1308, 197, 1009, 1011, 469, 471, - 1083, 684, 671, 860, 860, 1345, 208, 1310, 679, 208, - 860, 599, 1155, 1154, 1153, 208, 438, 681, 445, 210, - 198, 208, 202, 1316, 81, 1243, 81, 1105, 81, 81, - 1183, 81, 1034, 81, 901, 898, 899, 211, 897, 436, - 917, 841, 81, 916, 214, 550, 551, 205, 1089, 968, - 196, 1075, 222, 217, 944, 714, 518, 1077, 528, 460, - 1107, 538, 1111, 450, 1106, 538, 1104, 513, 1354, 908, - 911, 1109, 81, 1010, 436, 1309, 502, 706, 326, 711, - 1108, 1184, 70, 437, 220, 439, 467, 963, 1066, 1341, - 230, 1326, 1143, 1110, 1112, 503, 613, 874, 1413, 859, - 859, 1414, 1126, 1412, 1372, 903, 859, 434, 490, 491, - 925, 856, 854, 511, 855, 794, 212, 1064, 71, 852, - 858, 299, 51, 1178, 1317, 1315, 447, 902, 448, 513, - 794, 449, 977, 208, 208, 208, 441, 512, 511, 81, - 1039, 673, 1359, 224, 215, 81, 225, 226, 227, 229, - 508, 228, 234, 1076, 513, 1074, 216, 219, 707, 213, - 233, 232, 504, 512, 511, 1420, 456, 457, 458, 592, - 907, 749, 1378, 51, 531, 532, 533, 534, 535, 528, - 513, 251, 538, 909, 1065, 747, 748, 746, 924, 1070, - 1067, 1060, 1068, 1063, 863, 512, 511, 1061, 1062, 601, - 864, 261, 1128, 1270, 1421, 717, 718, 446, 607, 1380, - 452, 1069, 513, 443, 444, 54, 459, 732, 734, 735, - 1269, 194, 461, 733, 1054, 745, 274, 1053, 466, 578, - 579, 580, 581, 582, 583, 584, 529, 530, 531, 532, - 533, 534, 535, 528, 1042, 208, 538, 1355, 1291, 962, - 81, 961, 1267, 512, 511, 208, 208, 81, 713, 22, - 1086, 208, 1352, 766, 208, 767, 1200, 208, 512, 511, - 513, 208, 1051, 81, 81, 941, 942, 943, 81, 81, - 81, 81, 81, 81, 1034, 513, 322, 323, 81, 81, - 1023, 1029, 1024, 1313, 1397, 712, 333, 526, 536, 537, - 529, 530, 531, 532, 533, 534, 535, 528, 693, 768, - 538, 690, 512, 511, 297, 689, 81, 1383, 493, 250, - 208, 1313, 1368, 1313, 493, 604, 81, 674, 685, 513, - 672, 719, 1313, 1346, 591, 465, 600, 465, 669, 465, - 465, 691, 465, 462, 465, 455, 79, 1313, 1312, 1258, - 1257, 1245, 493, 465, 527, 526, 536, 537, 529, 530, - 531, 532, 533, 534, 535, 528, 740, 605, 538, 603, - 81, 1242, 493, 51, 493, 721, 1190, 1189, 1381, 743, - 1186, 1187, 335, 1186, 1185, 1323, 784, 788, 547, 736, - 1322, 549, 795, 288, 287, 290, 291, 292, 293, 738, - 1319, 208, 289, 294, 956, 493, 1180, 951, 779, 208, - 208, 805, 493, 208, 208, 777, 493, 81, 1015, 560, - 861, 564, 565, 566, 567, 568, 569, 570, 571, 572, + 268, 1411, 1401, 1197, 1364, 1079, 990, 562, 1274, 272, + 1307, 1132, 844, 840, 1166, 1260, 821, 991, 298, 1133, + 246, 57, 1008, 1129, 923, 873, 843, 887, 1033, 853, + 1014, 1139, 81, 561, 3, 819, 208, 1145, 336, 208, + 1102, 775, 705, 765, 1050, 950, 857, 1059, 610, 823, + 793, 808, 742, 772, 500, 237, 494, 593, 609, 330, + 255, 506, 594, 932, 801, 435, 325, 208, 81, 576, + 514, 883, 208, 327, 208, 56, 1404, 1388, 1399, 1374, + 1396, 1198, 1387, 1373, 867, 245, 1124, 1234, 440, 261, + 270, 1318, 1161, 1162, 1160, 468, 203, 199, 200, 201, + 238, 239, 240, 241, 834, 259, 244, 906, 1021, 243, + 242, 1020, 835, 836, 1022, 488, 24, 25, 52, 27, + 28, 905, 1340, 527, 526, 536, 537, 529, 530, 531, + 532, 533, 534, 535, 528, 43, 611, 538, 612, 61, + 29, 48, 49, 1174, 1175, 1176, 484, 1041, 866, 910, + 1263, 1179, 1177, 874, 485, 482, 483, 1280, 904, 1217, + 38, 470, 453, 472, 54, 63, 64, 65, 66, 67, + 195, 1215, 197, 487, 774, 236, 477, 478, 1082, 680, + 1081, 527, 526, 536, 537, 529, 530, 531, 532, 533, + 534, 535, 528, 469, 471, 538, 208, 678, 1398, 208, + 1395, 1365, 1078, 802, 860, 208, 1356, 858, 901, 898, + 899, 208, 897, 679, 81, 1419, 81, 202, 81, 81, + 197, 81, 1415, 81, 454, 31, 32, 34, 33, 36, + 442, 50, 81, 436, 951, 1083, 1308, 684, 1009, 1011, + 1316, 1075, 671, 908, 911, 1155, 1103, 1077, 1154, 1310, + 860, 860, 37, 44, 45, 1153, 438, 46, 47, 35, + 681, 1345, 81, 445, 210, 196, 198, 917, 550, 551, + 916, 502, 39, 40, 1243, 41, 42, 1089, 968, 903, + 1034, 467, 944, 1105, 714, 503, 518, 874, 450, 460, + 528, 841, 1341, 538, 1372, 711, 538, 1183, 490, 491, + 859, 902, 513, 1066, 794, 856, 854, 706, 855, 1354, + 1326, 299, 51, 852, 858, 1010, 1107, 1309, 1111, 925, + 1106, 1143, 1104, 208, 208, 208, 1178, 1109, 1413, 81, + 613, 1414, 1064, 1412, 436, 81, 1108, 497, 501, 511, + 274, 1317, 1315, 1076, 907, 1074, 859, 859, 1184, 1110, + 1112, 447, 1126, 448, 519, 513, 449, 909, 673, 592, + 70, 53, 1039, 51, 456, 457, 458, 434, 794, 508, + 977, 251, 531, 532, 533, 534, 535, 528, 1359, 749, + 538, 578, 579, 580, 581, 582, 583, 584, 707, 563, + 1380, 601, 504, 747, 748, 746, 71, 924, 574, 1065, + 512, 511, 607, 441, 1070, 1067, 1060, 1068, 1063, 1378, + 717, 718, 1061, 1062, 863, 963, 1270, 513, 466, 962, + 864, 961, 941, 942, 943, 1269, 1069, 529, 530, 531, + 532, 533, 534, 535, 528, 208, 1054, 538, 512, 511, + 81, 766, 54, 767, 1420, 208, 208, 81, 713, 1230, + 493, 208, 745, 22, 208, 513, 194, 208, 512, 511, + 1053, 208, 1042, 81, 81, 512, 511, 1355, 81, 81, + 81, 208, 81, 81, 1023, 513, 1024, 1291, 81, 81, + 443, 444, 513, 1421, 1267, 712, 333, 527, 526, 536, + 537, 529, 530, 531, 532, 533, 534, 535, 528, 693, + 1086, 538, 512, 511, 297, 1051, 81, 1227, 493, 493, + 208, 512, 511, 250, 1313, 1397, 81, 1352, 1128, 513, + 685, 322, 323, 719, 691, 465, 1200, 465, 513, 465, + 465, 1034, 465, 1029, 465, 768, 79, 1383, 493, 1381, + 743, 1313, 1368, 465, 690, 527, 526, 536, 537, 529, + 530, 531, 532, 533, 534, 535, 528, 740, 689, 538, + 81, 1313, 493, 51, 674, 721, 672, 732, 734, 735, + 1313, 1346, 335, 733, 1313, 1312, 708, 669, 547, 784, + 788, 549, 738, 1258, 1257, 795, 736, 1245, 493, 1242, + 493, 208, 1190, 1189, 1186, 1187, 1186, 1185, 779, 208, + 208, 729, 730, 208, 208, 956, 493, 81, 462, 560, + 548, 564, 565, 566, 567, 568, 569, 570, 571, 572, 81, 575, 577, 577, 577, 577, 577, 577, 577, 577, - 585, 586, 587, 588, 1092, 598, 621, 798, 829, 497, - 501, 1142, 780, 781, 791, 804, 675, 676, 790, 769, - 770, 805, 682, 620, 619, 326, 519, 58, 688, 875, - 876, 877, 797, 1015, 799, 800, 827, 832, 831, 972, - 805, 24, 208, 81, 1130, 81, 24, 1142, 956, 81, - 81, 208, 208, 777, 208, 208, 548, 848, 208, 81, - 970, 563, 889, 967, 965, 985, 828, 956, 603, 986, - 574, 492, 1238, 1325, 1294, 208, 1142, 208, 208, 805, - 208, 728, 1188, 971, 869, 870, 871, 872, 335, 54, - 335, 24, 335, 335, 54, 335, 1025, 335, 885, 886, - 880, 881, 882, 833, 969, 956, 335, 966, 964, 603, - 597, 606, 810, 813, 814, 815, 811, 333, 812, 816, - 715, 465, 740, 810, 813, 814, 815, 811, 465, 812, - 816, 683, 54, 1146, 1147, 252, 516, 1389, 1362, 54, - 1276, 1265, 868, 933, 465, 465, 934, 1250, 888, 465, - 465, 465, 465, 465, 465, 1171, 1146, 1147, 1080, 465, - 465, 1028, 803, 884, 743, 879, 878, 891, 946, 1406, - 1402, 1173, 1149, 940, 1130, 830, 208, 208, 208, 208, - 208, 992, 1055, 54, 709, 687, 727, 1002, 208, 1000, - 1152, 208, 1003, 1151, 1001, 208, 999, 998, 1004, 208, - 814, 815, 1393, 335, 1386, 987, 256, 257, 1088, 615, - 929, 507, 1391, 939, 81, 976, 938, 1046, 618, 463, - 955, 495, 1038, 1026, 779, 1361, 505, 1360, 1292, 993, - 1017, 51, 996, 496, 1016, 1005, 994, 995, 974, 997, - 1036, 1030, 1236, 892, 1013, 1272, 564, 894, 708, 686, - 818, 507, 914, 915, 247, 918, 919, 1035, 1018, 920, - 253, 254, 81, 81, 1043, 1044, 1045, 937, 1047, 1048, - 1049, 1031, 1032, 729, 730, 936, 922, 1330, 248, 58, - 820, 928, 1329, 1278, 598, 1015, 486, 1408, 1407, 1408, - 704, 81, 509, 1342, 1052, 1264, 710, 60, 62, 602, - 55, 1, 1400, 1199, 1273, 900, 208, 739, 744, 1363, - 1306, 1165, 1071, 851, 335, 81, 842, 69, 433, 68, - 1353, 335, 1058, 850, 849, 1314, 563, 1262, 862, 782, - 783, 1040, 865, 1172, 1358, 1085, 1037, 335, 335, 626, - 624, 625, 335, 335, 335, 335, 335, 335, 623, 628, - 627, 622, 335, 335, 465, 221, 465, 328, 817, 81, - 81, 1125, 992, 1131, 1096, 1114, 1095, 614, 1101, 890, - 465, 510, 72, 1113, 1073, 839, 740, 1072, 896, 480, - 723, 481, 223, 81, 546, 597, 935, 1019, 334, 597, - 516, 1141, 1136, 335, 1137, 333, 81, 716, 81, 81, - 499, 1157, 1328, 1277, 1134, 1150, 975, 1164, 845, 573, - 792, 1156, 265, 273, 731, 286, 283, 1159, 285, 284, - 722, 945, 984, 1163, 520, 1168, 208, 271, 263, 596, - 589, 1169, 1170, 809, 771, 807, 1181, 1182, 806, 1148, - 1144, 595, 1091, 208, 786, 786, 1233, 1339, 726, 81, - 786, 26, 81, 81, 208, 59, 258, 19, 18, 17, - 81, 20, 16, 208, 536, 537, 529, 530, 531, 532, - 533, 534, 535, 528, 930, 931, 538, 501, 15, 14, - 451, 335, 1204, 988, 989, 1192, 30, 598, 598, 598, - 598, 598, 1205, 21, 335, 13, 12, 1193, 1206, 1195, - 11, 1213, 820, 739, 1012, 10, 9, 1090, 8, 7, - 598, 6, 5, 4, 249, 23, 2, 0, 0, 992, - 0, 0, 1237, 0, 0, 0, 0, 1247, 1246, 0, - 0, 0, 0, 744, 81, 0, 0, 0, 0, 957, - 0, 0, 81, 1026, 0, 0, 1256, 335, 0, 335, - 0, 0, 0, 912, 913, 0, 978, 0, 1210, 1211, + 585, 586, 587, 588, 791, 598, 805, 493, 829, 455, + 798, 769, 770, 526, 536, 537, 529, 530, 531, 532, + 533, 534, 535, 528, 563, 1323, 538, 782, 783, 1322, + 875, 876, 877, 1319, 597, 827, 831, 832, 777, 493, + 620, 619, 208, 81, 1180, 81, 24, 604, 24, 81, + 81, 208, 208, 861, 208, 208, 848, 54, 208, 81, + 288, 287, 290, 291, 292, 293, 889, 1142, 1092, 289, + 294, 492, 985, 839, 1294, 208, 986, 208, 208, 1130, + 208, 1015, 1142, 1015, 869, 870, 871, 872, 335, 605, + 335, 603, 335, 335, 54, 335, 54, 335, 58, 972, + 880, 881, 882, 970, 967, 777, 335, 885, 886, 804, + 780, 781, 956, 965, 1238, 24, 790, 333, 828, 1325, + 603, 465, 805, 740, 805, 1188, 1142, 1025, 465, 833, + 797, 956, 799, 800, 805, 743, 516, 603, 956, 606, + 933, 715, 683, 971, 465, 465, 934, 969, 966, 465, + 465, 465, 252, 465, 465, 1389, 1080, 964, 1362, 465, + 465, 1276, 1265, 54, 810, 813, 814, 815, 811, 946, + 812, 816, 930, 931, 868, 501, 208, 208, 208, 208, + 208, 1250, 888, 1171, 992, 1146, 1147, 891, 208, 1028, + 884, 208, 879, 878, 1406, 208, 1402, 1173, 1152, 208, + 54, 1149, 1130, 335, 1055, 987, 709, 687, 727, 615, + 1002, 1000, 1151, 976, 81, 1003, 1001, 1004, 999, 814, + 815, 998, 256, 257, 779, 1393, 1026, 1386, 1088, 929, + 1017, 51, 744, 993, 1016, 507, 996, 957, 1005, 994, + 995, 1391, 997, 939, 1013, 938, 564, 1046, 618, 463, + 505, 1038, 1018, 1361, 978, 495, 1035, 1045, 1360, 1047, + 1048, 1049, 81, 81, 1236, 1043, 1044, 496, 1292, 1036, + 1030, 940, 1031, 1032, 1272, 810, 813, 814, 815, 811, + 820, 812, 816, 894, 598, 1146, 1147, 686, 818, 253, + 254, 81, 507, 247, 1052, 1330, 536, 537, 529, 530, + 531, 532, 533, 534, 535, 528, 208, 739, 538, 597, + 248, 937, 58, 597, 335, 81, 1071, 1329, 955, 936, + 1278, 335, 1058, 1015, 486, 1408, 1407, 62, 704, 509, + 1408, 1342, 1264, 710, 60, 1085, 974, 335, 335, 602, + 55, 1, 335, 335, 335, 1400, 335, 335, 1199, 1273, + 900, 1363, 335, 335, 465, 1306, 465, 1165, 851, 81, + 81, 842, 1131, 1096, 69, 992, 1125, 433, 1101, 1095, + 465, 68, 1353, 850, 1114, 1134, 1113, 740, 849, 1314, + 723, 1262, 862, 81, 1040, 1087, 865, 1172, 1358, 1037, + 516, 1141, 1136, 335, 626, 333, 81, 624, 81, 81, + 625, 623, 628, 627, 1150, 622, 1157, 221, 845, 328, + 1164, 817, 265, 614, 1156, 890, 510, 1159, 72, 1073, + 1072, 945, 1163, 896, 480, 481, 208, 1181, 1182, 1168, + 1169, 1170, 223, 546, 771, 935, 1019, 1127, 334, 1137, + 716, 499, 1328, 208, 786, 786, 1277, 975, 573, 81, + 786, 792, 81, 81, 208, 273, 731, 744, 286, 283, + 81, 285, 284, 208, 722, 984, 520, 271, 263, 596, + 589, 809, 807, 806, 1148, 1158, 1144, 595, 1091, 1233, + 1204, 335, 1339, 988, 989, 1192, 726, 598, 598, 598, + 598, 598, 1205, 26, 335, 59, 258, 1193, 1206, 1195, + 19, 18, 820, 739, 1012, 1213, 17, 20, 16, 15, + 598, 14, 451, 30, 21, 13, 597, 597, 597, 597, + 597, 12, 992, 11, 10, 1237, 9, 8, 7, 6, + 1247, 597, 5, 1246, 81, 4, 249, 23, 2, 597, + 0, 0, 81, 0, 0, 0, 1026, 335, 1256, 335, + 0, 0, 0, 912, 913, 0, 0, 0, 1210, 1211, 0, 1212, 81, 335, 1214, 0, 1216, 0, 0, 81, 0, 0, 0, 0, 465, 720, 0, 0, 0, 0, - 1266, 0, 1268, 0, 0, 0, 464, 0, 0, 335, - 0, 0, 597, 597, 597, 597, 597, 0, 0, 0, - 0, 0, 465, 0, 0, 0, 1279, 597, 0, 0, - 0, 0, 0, 81, 81, 597, 81, 0, 0, 0, - 0, 81, 1259, 81, 81, 81, 208, 1191, 1293, 81, - 0, 0, 845, 776, 778, 1300, 1301, 0, 1302, 1303, - 1304, 0, 1311, 1305, 1194, 1295, 0, 81, 0, 796, - 0, 0, 0, 0, 0, 1203, 1134, 0, 0, 1320, - 0, 1321, 1327, 0, 0, 0, 0, 0, 1135, 0, - 51, 0, 0, 0, 0, 0, 0, 1343, 0, 786, - 0, 0, 0, 0, 81, 0, 1350, 1087, 552, 553, - 554, 555, 556, 557, 558, 559, 81, 81, 1351, 0, - 1344, 0, 0, 0, 0, 0, 1367, 1366, 0, 1370, - 0, 0, 1134, 0, 0, 0, 81, 0, 335, 992, - 1375, 0, 0, 0, 0, 0, 0, 208, 0, 0, - 0, 0, 0, 1094, 0, 0, 81, 0, 0, 1127, - 0, 0, 0, 0, 1385, 1230, 493, 0, 0, 0, + 0, 1266, 0, 1268, 0, 0, 0, 0, 1235, 335, + 0, 0, 0, 0, 0, 563, 0, 0, 0, 0, + 0, 0, 465, 1248, 0, 0, 1249, 1279, 0, 1251, + 0, 0, 0, 81, 81, 0, 81, 0, 0, 0, + 0, 81, 1259, 81, 81, 81, 208, 1134, 1293, 81, + 0, 0, 845, 776, 778, 0, 1301, 1300, 1302, 1303, + 1304, 0, 1305, 1311, 0, 1295, 0, 81, 0, 796, + 1320, 0, 1321, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1327, 0, 0, 0, 0, 0, 1135, 0, + 51, 0, 0, 0, 0, 0, 1343, 0, 0, 786, + 0, 0, 0, 1134, 81, 0, 0, 1351, 552, 553, + 554, 555, 556, 557, 558, 559, 81, 81, 1350, 0, + 1344, 0, 0, 0, 1366, 0, 0, 0, 1370, 1367, + 0, 0, 0, 0, 0, 0, 81, 0, 335, 1375, + 0, 0, 992, 0, 0, 0, 0, 208, 0, 0, + 0, 0, 0, 1094, 0, 0, 81, 0, 0, 0, + 0, 0, 0, 0, 1385, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1119, 1390, 1392, 81, 0, 0, 0, 0, 0, 1056, 335, 0, 0, - 0, 0, 0, 1405, 598, 1394, 0, 1158, 0, 0, - 1416, 0, 0, 527, 526, 536, 537, 529, 530, 531, - 532, 533, 534, 535, 528, 335, 0, 538, 0, 0, - 1097, 0, 473, 0, 474, 475, 1232, 476, 0, 479, - 0, 0, 0, 0, 845, 0, 845, 0, 489, 335, + 0, 0, 0, 1405, 598, 1394, 0, 0, 464, 0, + 1416, 0, 1224, 493, 0, 0, 0, 0, 0, 1369, + 563, 0, 0, 0, 0, 335, 0, 0, 0, 0, + 0, 0, 0, 597, 0, 0, 1232, 0, 0, 0, + 0, 0, 0, 0, 845, 0, 845, 0, 0, 335, 527, 526, 536, 537, 529, 530, 531, 532, 533, 534, 535, 528, 0, 0, 538, 1252, 1253, 1254, 0, 0, 953, 0, 0, 335, 954, 0, 0, 0, 0, 0, 0, 958, 959, 960, 0, 0, 0, 0, 0, 0, - 786, 0, 973, 1138, 1140, 0, 0, 979, 0, 980, - 981, 982, 983, 465, 0, 0, 0, 0, 1094, 597, + 786, 0, 973, 1138, 1140, 0, 0, 979, 493, 980, + 981, 982, 983, 465, 0, 0, 0, 0, 1094, 0, 0, 0, 0, 0, 0, 0, 0, 1140, 0, 0, - 1235, 1007, 0, 0, 0, 0, 0, 563, 0, 0, - 335, 0, 335, 1167, 0, 1248, 0, 0, 1249, 0, - 0, 1251, 0, 0, 0, 0, 0, 0, 0, 0, - 1135, 0, 0, 1296, 0, 0, 0, 0, 1379, 0, + 0, 1007, 0, 0, 0, 0, 0, 0, 0, 0, + 335, 0, 335, 1167, 0, 527, 526, 536, 537, 529, + 530, 531, 532, 533, 534, 535, 528, 0, 0, 538, + 1135, 0, 0, 1296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 741, 0, 0, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 0, 845, 1196, 1324, 0, 1201, 1202, 0, 0, 0, 0, 0, 0, 335, 0, 0, 498, 0, 0, - 0, 0, 522, 0, 525, 0, 1135, 0, 51, 0, - 539, 540, 541, 542, 543, 544, 545, 1275, 523, 524, - 521, 527, 526, 536, 537, 529, 530, 531, 532, 533, - 534, 535, 528, 206, 0, 538, 235, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 786, 0, 0, - 0, 0, 0, 0, 0, 0, 670, 1100, 0, 0, - 0, 262, 0, 677, 206, 0, 0, 0, 335, 206, - 0, 206, 0, 0, 0, 0, 1261, 0, 0, 694, - 695, 0, 0, 0, 696, 697, 698, 699, 700, 701, - 1227, 493, 0, 0, 702, 703, 335, 0, 0, 0, - 0, 0, 0, 335, 0, 0, 0, 0, 0, 0, - 1403, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1369, 563, 0, 0, 0, 1224, 493, 527, 526, - 536, 537, 529, 530, 531, 532, 533, 534, 535, 528, - 0, 0, 538, 0, 1275, 845, 0, 1297, 1298, 0, + 0, 0, 0, 0, 0, 0, 1135, 0, 51, 0, + 0, 0, 0, 0, 0, 599, 0, 1275, 0, 0, + 0, 0, 0, 0, 473, 0, 474, 475, 0, 476, + 0, 479, 0, 206, 0, 0, 235, 0, 0, 0, + 489, 0, 0, 0, 0, 0, 0, 786, 0, 0, + 0, 205, 0, 0, 0, 0, 0, 1100, 0, 0, + 0, 262, 0, 0, 206, 0, 0, 0, 335, 206, + 0, 206, 0, 0, 0, 0, 1261, 0, 0, 0, + 0, 0, 326, 0, 0, 0, 0, 437, 0, 439, + 1231, 0, 0, 0, 0, 0, 335, 0, 0, 0, + 0, 0, 0, 335, 522, 0, 525, 0, 0, 0, + 1403, 0, 539, 540, 541, 542, 543, 544, 545, 0, + 523, 524, 521, 527, 526, 536, 537, 529, 530, 531, + 532, 533, 534, 535, 528, 0, 0, 538, 0, 0, + 0, 0, 0, 0, 1275, 845, 0, 1297, 1298, 0, 1299, 0, 0, 0, 0, 1261, 0, 1261, 1261, 1261, - 0, 0, 0, 1167, 527, 526, 536, 537, 529, 530, + 0, 218, 0, 1167, 527, 526, 536, 537, 529, 530, 531, 532, 533, 534, 535, 528, 0, 0, 538, 0, - 0, 1261, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1261, 0, 0, 0, 231, 0, 0, 0, 0, 947, 948, 949, 206, 0, 0, 206, 1207, 0, 0, 0, 0, 206, 0, 1209, 0, 0, 0, 206, 0, - 0, 0, 0, 0, 0, 1218, 1219, 1220, 1357, 1223, - 0, 0, 1226, 0, 1229, 0, 0, 0, 0, 0, - 335, 335, 0, 0, 0, 0, 0, 1239, 1240, 1241, - 0, 1244, 0, 0, 0, 0, 0, 786, 0, 0, - 1377, 0, 0, 0, 0, 0, 0, 0, 1255, 0, - 24, 25, 52, 27, 28, 0, 0, 0, 0, 0, - 1384, 0, 0, 0, 0, 0, 0, 0, 0, 43, - 0, 0, 0, 0, 29, 48, 49, 0, 0, 893, - 0, 895, 0, 0, 1261, 0, 0, 0, 1221, 493, - 0, 0, 0, 0, 38, 921, 0, 0, 54, 0, - 0, 0, 0, 0, 493, 0, 0, 0, 0, 0, - 206, 206, 206, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1290, 527, 526, 536, 537, - 529, 530, 531, 532, 533, 534, 535, 528, 0, 0, - 538, 527, 526, 536, 537, 529, 530, 531, 532, 533, - 534, 535, 528, 0, 0, 538, 0, 0, 0, 31, - 32, 34, 33, 36, 0, 50, 0, 0, 0, 0, + 0, 446, 0, 0, 452, 1218, 1219, 1220, 1357, 1223, + 459, 0, 1226, 0, 1229, 0, 461, 0, 0, 0, + 335, 335, 0, 0, 0, 0, 211, 1239, 1240, 1241, + 0, 1244, 0, 214, 0, 0, 0, 786, 670, 1228, + 1377, 222, 217, 0, 0, 677, 0, 0, 1255, 1221, + 493, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1384, 694, 695, 0, 0, 0, 696, 697, 698, 0, + 700, 701, 0, 220, 0, 0, 702, 703, 1225, 230, + 0, 0, 0, 0, 1261, 0, 0, 527, 526, 536, + 537, 529, 530, 531, 532, 533, 534, 535, 528, 0, + 0, 538, 0, 0, 0, 212, 0, 0, 0, 0, + 206, 206, 206, 527, 526, 536, 537, 529, 530, 531, + 532, 533, 534, 535, 528, 1290, 0, 538, 591, 0, + 600, 0, 224, 215, 0, 225, 226, 227, 229, 0, + 228, 234, 0, 0, 0, 216, 219, 0, 213, 233, + 232, 0, 527, 526, 536, 537, 529, 530, 531, 532, + 533, 534, 535, 528, 0, 0, 538, 0, 0, 0, 0, 0, 0, 1331, 1332, 1333, 1334, 1335, 1336, 1337, - 1338, 0, 0, 1231, 1098, 1099, 37, 44, 45, 0, - 0, 46, 47, 35, 1347, 1348, 1349, 1115, 1116, 1117, - 1118, 1228, 1120, 1121, 1122, 1123, 39, 40, 0, 41, - 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, - 0, 1371, 206, 206, 1225, 0, 1376, 0, 206, 0, - 0, 206, 0, 0, 206, 0, 0, 0, 692, 0, - 0, 0, 0, 0, 0, 1382, 643, 527, 526, 536, + 1338, 0, 0, 0, 1098, 1099, 1097, 0, 0, 0, + 0, 0, 0, 0, 1347, 1348, 1349, 1115, 1116, 1117, + 1118, 0, 1120, 1121, 1122, 1123, 527, 526, 536, 537, + 529, 530, 531, 532, 533, 534, 535, 528, 0, 0, + 538, 0, 206, 0, 0, 0, 0, 0, 0, 0, + 0, 1371, 206, 206, 0, 0, 1376, 0, 206, 0, + 621, 206, 0, 1222, 206, 0, 0, 0, 692, 0, + 675, 676, 0, 0, 0, 1382, 682, 0, 206, 326, + 0, 0, 688, 0, 0, 643, 0, 0, 0, 0, + 0, 893, 0, 895, 0, 0, 699, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 921, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 206, 0, 0, + 0, 1417, 1418, 0, 0, 0, 692, 0, 0, 0, + 0, 0, 0, 0, 0, 728, 0, 527, 526, 536, 537, 529, 530, 531, 532, 533, 534, 535, 528, 0, - 0, 538, 0, 0, 0, 527, 526, 536, 537, 529, - 530, 531, 532, 533, 534, 535, 528, 0, 0, 538, - 0, 0, 0, 0, 0, 53, 0, 206, 0, 1057, - 0, 1417, 1418, 0, 0, 0, 692, 0, 527, 526, - 536, 537, 529, 530, 531, 532, 533, 534, 535, 528, - 0, 0, 538, 0, 0, 0, 0, 1084, 0, 0, - 1208, 0, 0, 0, 631, 527, 526, 536, 537, 529, - 530, 531, 532, 533, 534, 535, 528, 0, 262, 538, + 1208, 538, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 631, 0, 0, 0, 0, 262, 0, 0, 0, 0, 262, 262, 0, 0, 787, 787, 262, - 1222, 0, 0, 787, 0, 0, 0, 0, 0, 0, - 0, 644, 0, 262, 262, 262, 262, 0, 206, 0, - 0, 0, 0, 0, 0, 0, 206, 825, 0, 0, - 206, 206, 0, 657, 658, 659, 660, 661, 662, 663, - 0, 664, 665, 666, 667, 668, 645, 646, 647, 648, - 629, 630, 0, 0, 632, 0, 633, 634, 635, 636, - 637, 638, 639, 640, 641, 642, 649, 650, 651, 652, - 653, 654, 655, 656, 527, 526, 536, 537, 529, 530, - 531, 532, 533, 534, 535, 528, 0, 0, 538, 0, - 0, 0, 0, 0, 1281, 1282, 952, 1283, 1284, 206, + 0, 0, 0, 787, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 262, 262, 262, 0, 206, 0, + 644, 0, 0, 0, 0, 0, 206, 825, 0, 0, + 206, 206, 0, 0, 0, 0, 803, 0, 0, 0, + 0, 0, 657, 658, 659, 660, 661, 662, 663, 830, + 664, 665, 666, 667, 668, 645, 646, 647, 648, 629, + 630, 0, 0, 632, 0, 633, 634, 635, 636, 637, + 638, 639, 640, 641, 642, 649, 650, 651, 652, 653, + 654, 655, 656, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1281, 1282, 0, 1283, 1284, 206, 1285, 1286, 0, 1287, 1288, 1289, 0, 0, 206, 206, - 0, 206, 206, 0, 0, 206, 527, 526, 536, 537, - 529, 530, 531, 532, 533, 534, 535, 528, 0, 0, - 538, 0, 206, 0, 926, 927, 0, 206, 0, 0, - 0, 0, 692, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 206, 206, 0, 0, 206, 0, 892, 0, 0, + 0, 0, 0, 0, 0, 0, 914, 915, 0, 918, + 919, 1057, 206, 920, 926, 927, 0, 206, 0, 0, + 952, 0, 692, 0, 0, 0, 0, 0, 0, 0, + 922, 0, 0, 0, 262, 928, 0, 0, 0, 1084, + 527, 526, 536, 537, 529, 530, 531, 532, 533, 534, + 535, 528, 0, 0, 538, 527, 526, 536, 537, 529, + 530, 531, 532, 533, 534, 535, 528, 0, 0, 538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 787, 206, 206, 206, 206, 206, 1271, 0, + 0, 0, 787, 206, 206, 206, 206, 206, 0, 0, 0, 0, 0, 0, 0, 1006, 0, 0, 206, 0, 0, 0, 825, 0, 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -965,153 +965,49 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, + 0, 1090, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 692, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 787, 138, 0, 0, 0, 0, 269, - 0, 0, 0, 102, 0, 266, 0, 0, 0, 119, - 309, 121, 0, 0, 158, 130, 0, 0, 0, 0, - 300, 301, 0, 0, 0, 0, 0, 0, 837, 0, - 54, 0, 0, 267, 288, 287, 290, 291, 292, 293, - 0, 0, 95, 289, 294, 295, 296, 838, 0, 0, - 264, 281, 0, 308, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 787, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1271, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 279, 0, 0, 0, 0, 320, - 206, 280, 0, 0, 275, 276, 277, 282, 0, 0, - 0, 206, 0, 0, 0, 0, 0, 108, 0, 0, - 206, 209, 0, 0, 318, 0, 145, 0, 161, 110, - 118, 83, 89, 0, 109, 136, 150, 154, 0, 0, - 0, 98, 0, 152, 140, 174, 0, 141, 151, 122, - 166, 146, 173, 181, 182, 163, 180, 189, 84, 162, - 172, 96, 155, 86, 170, 160, 128, 114, 115, 85, - 787, 149, 101, 106, 100, 137, 167, 168, 99, 192, - 90, 179, 88, 91, 178, 135, 165, 171, 129, 126, - 87, 169, 127, 125, 117, 104, 111, 143, 124, 144, - 112, 132, 131, 133, 0, 0, 0, 159, 176, 193, - 93, 0, 164, 183, 184, 185, 186, 187, 188, 0, - 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, - 123, 148, 191, 139, 153, 97, 175, 157, 310, 319, - 316, 317, 314, 315, 313, 312, 311, 321, 302, 303, - 304, 305, 307, 0, 306, 82, 0, 120, 190, 147, - 105, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 825, 0, 0, 0, 421, 412, 0, - 383, 424, 361, 375, 432, 376, 377, 405, 347, 391, - 138, 373, 0, 364, 342, 370, 343, 362, 385, 102, - 388, 360, 414, 394, 423, 119, 430, 121, 399, 0, - 158, 130, 0, 0, 387, 416, 389, 410, 382, 406, - 352, 398, 425, 374, 403, 426, 0, 0, 0, 80, - 0, 846, 847, 0, 0, 0, 0, 0, 95, 0, - 401, 420, 372, 402, 404, 341, 400, 0, 345, 348, - 431, 418, 367, 368, 1027, 0, 0, 0, 0, 0, - 787, 386, 390, 407, 380, 0, 0, 0, 0, 0, - 0, 0, 0, 365, 206, 397, 0, 0, 0, 349, - 346, 0, 0, 384, 0, 0, 0, 351, 0, 366, - 408, 0, 340, 108, 411, 417, 381, 209, 419, 379, - 378, 422, 145, 0, 161, 110, 118, 83, 89, 0, - 109, 136, 150, 154, 415, 363, 371, 98, 369, 152, - 140, 174, 396, 141, 151, 122, 166, 146, 173, 181, - 182, 163, 180, 189, 84, 162, 172, 96, 155, 86, - 170, 160, 128, 114, 115, 85, 0, 149, 101, 106, - 100, 137, 167, 168, 99, 192, 90, 179, 88, 91, - 178, 135, 165, 171, 129, 126, 87, 169, 127, 125, - 117, 104, 111, 143, 124, 144, 112, 132, 131, 133, - 0, 344, 0, 159, 176, 193, 93, 359, 164, 183, - 184, 185, 186, 187, 188, 0, 0, 94, 107, 103, - 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, - 153, 97, 175, 157, 355, 358, 353, 354, 392, 393, - 427, 428, 429, 409, 350, 0, 356, 357, 0, 413, - 395, 82, 0, 120, 190, 147, 105, 177, 421, 412, - 0, 383, 424, 361, 375, 432, 376, 377, 405, 347, - 391, 138, 373, 0, 364, 342, 370, 343, 362, 385, - 102, 388, 360, 414, 394, 423, 119, 430, 121, 399, - 0, 158, 130, 0, 0, 387, 416, 389, 410, 382, - 406, 352, 398, 425, 374, 403, 426, 0, 0, 0, - 80, 0, 846, 847, 0, 0, 0, 0, 0, 95, - 0, 401, 420, 372, 402, 404, 341, 400, 0, 345, - 348, 431, 418, 367, 368, 0, 0, 0, 0, 0, - 0, 0, 386, 390, 407, 380, 0, 0, 0, 0, - 0, 0, 0, 0, 365, 0, 397, 0, 0, 0, - 349, 346, 0, 0, 384, 0, 0, 0, 351, 0, - 366, 408, 0, 340, 108, 411, 417, 381, 209, 419, - 379, 378, 422, 145, 0, 161, 110, 118, 83, 89, - 0, 109, 136, 150, 154, 415, 363, 371, 98, 369, - 152, 140, 174, 396, 141, 151, 122, 166, 146, 173, - 181, 182, 163, 180, 189, 84, 162, 172, 96, 155, - 86, 170, 160, 128, 114, 115, 85, 0, 149, 101, - 106, 100, 137, 167, 168, 99, 192, 90, 179, 88, - 91, 178, 135, 165, 171, 129, 126, 87, 169, 127, - 125, 117, 104, 111, 143, 124, 144, 112, 132, 131, - 133, 0, 344, 0, 159, 176, 193, 93, 359, 164, - 183, 184, 185, 186, 187, 188, 0, 0, 94, 107, - 103, 142, 134, 92, 113, 156, 116, 123, 148, 191, - 139, 153, 97, 175, 157, 355, 358, 353, 354, 392, - 393, 427, 428, 429, 409, 350, 0, 356, 357, 0, - 413, 395, 82, 0, 120, 190, 147, 105, 177, 421, - 412, 0, 383, 424, 361, 375, 432, 376, 377, 405, - 347, 391, 138, 373, 0, 364, 342, 370, 343, 362, - 385, 102, 388, 360, 414, 394, 423, 119, 430, 121, - 399, 0, 158, 130, 0, 0, 387, 416, 389, 410, - 382, 406, 352, 398, 425, 374, 403, 426, 54, 0, - 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 95, 0, 401, 420, 372, 402, 404, 341, 400, 0, - 345, 348, 431, 418, 367, 368, 0, 0, 0, 0, - 0, 0, 0, 386, 390, 407, 380, 0, 0, 0, - 0, 0, 0, 0, 0, 365, 0, 397, 0, 0, - 0, 349, 346, 0, 0, 384, 0, 0, 0, 351, - 0, 366, 408, 0, 340, 108, 411, 417, 381, 209, - 419, 379, 378, 422, 145, 0, 161, 110, 118, 83, - 89, 0, 109, 136, 150, 154, 415, 363, 371, 98, - 369, 152, 140, 174, 396, 141, 151, 122, 166, 146, - 173, 181, 182, 163, 180, 189, 84, 162, 172, 96, - 155, 86, 170, 160, 128, 114, 115, 85, 0, 149, - 101, 106, 100, 137, 167, 168, 99, 192, 90, 179, - 88, 91, 178, 135, 165, 171, 129, 126, 87, 169, - 127, 125, 117, 104, 111, 143, 124, 144, 112, 132, - 131, 133, 0, 344, 0, 159, 176, 193, 93, 359, - 164, 183, 184, 185, 186, 187, 188, 0, 0, 94, - 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, - 191, 139, 153, 97, 175, 157, 355, 358, 353, 354, - 392, 393, 427, 428, 429, 409, 350, 0, 356, 357, - 0, 413, 395, 82, 0, 120, 190, 147, 105, 177, - 421, 412, 0, 383, 424, 361, 375, 432, 376, 377, - 405, 347, 391, 138, 373, 0, 364, 342, 370, 343, - 362, 385, 102, 388, 360, 414, 394, 423, 119, 430, - 121, 399, 0, 158, 130, 0, 0, 387, 416, 389, - 410, 382, 406, 352, 398, 425, 374, 403, 426, 0, - 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, - 0, 95, 0, 401, 420, 372, 402, 404, 341, 400, - 0, 345, 348, 431, 418, 367, 368, 0, 0, 0, - 0, 0, 0, 0, 386, 390, 407, 380, 0, 0, - 0, 0, 0, 0, 1093, 0, 365, 0, 397, 0, - 0, 0, 349, 346, 0, 0, 384, 0, 0, 0, - 351, 0, 366, 408, 0, 340, 108, 411, 417, 381, - 209, 419, 379, 378, 422, 145, 0, 161, 110, 118, - 83, 89, 0, 109, 136, 150, 154, 415, 363, 371, - 98, 369, 152, 140, 174, 396, 141, 151, 122, 166, - 146, 173, 181, 182, 163, 180, 189, 84, 162, 172, - 96, 155, 86, 170, 160, 128, 114, 115, 85, 0, - 149, 101, 106, 100, 137, 167, 168, 99, 192, 90, - 179, 88, 91, 178, 135, 165, 171, 129, 126, 87, - 169, 127, 125, 117, 104, 111, 143, 124, 144, 112, - 132, 131, 133, 0, 344, 0, 159, 176, 193, 93, - 359, 164, 183, 184, 185, 186, 187, 188, 0, 0, - 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, - 148, 191, 139, 153, 97, 175, 157, 355, 358, 353, - 354, 392, 393, 427, 428, 429, 409, 350, 0, 356, - 357, 0, 413, 395, 82, 0, 120, 190, 147, 105, - 177, 421, 412, 0, 383, 424, 361, 375, 432, 376, + 206, 1191, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 206, 0, 0, 0, 0, 0, 0, 1194, 0, + 206, 0, 0, 0, 0, 0, 0, 0, 0, 1203, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 787, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 825, 0, 0, 0, 0, 0, 0, + 0, 421, 412, 0, 383, 424, 361, 375, 432, 376, 377, 405, 347, 391, 138, 373, 0, 364, 342, 370, 343, 362, 385, 102, 388, 360, 414, 394, 423, 119, 430, 121, 399, 0, 158, 130, 0, 0, 387, 416, 389, 410, 382, 406, 352, 398, 425, 374, 403, 426, - 0, 0, 0, 267, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 80, 0, 846, 847, 0, 0, 0, 0, 0, 95, 0, 401, 420, 372, 402, 404, 341, - 400, 0, 345, 348, 431, 418, 367, 368, 0, 0, - 0, 0, 0, 0, 0, 386, 390, 407, 380, 0, - 0, 0, 0, 0, 0, 737, 0, 365, 0, 397, + 400, 0, 345, 348, 431, 418, 367, 368, 1027, 0, + 787, 0, 0, 0, 0, 386, 390, 407, 380, 0, + 0, 0, 0, 0, 206, 0, 0, 365, 0, 397, 0, 0, 0, 349, 346, 0, 0, 384, 0, 0, - 0, 351, 0, 366, 408, 0, 340, 108, 411, 417, + 0, 351, 1379, 366, 408, 0, 340, 108, 411, 417, 381, 209, 419, 379, 378, 422, 145, 0, 161, 110, 118, 83, 89, 0, 109, 136, 150, 154, 415, 363, 371, 98, 369, 152, 140, 174, 396, 141, 151, 122, @@ -1131,7 +1027,7 @@ var yyAct = [...]int{ 370, 343, 362, 385, 102, 388, 360, 414, 394, 423, 119, 430, 121, 399, 0, 158, 130, 0, 0, 387, 416, 389, 410, 382, 406, 352, 398, 425, 374, 403, - 426, 0, 0, 0, 80, 0, 0, 0, 0, 0, + 426, 0, 0, 0, 80, 0, 846, 847, 0, 0, 0, 0, 0, 95, 0, 401, 420, 372, 402, 404, 341, 400, 0, 345, 348, 431, 418, 367, 368, 0, 0, 0, 0, 0, 0, 0, 386, 390, 407, 380, @@ -1157,7 +1053,7 @@ var yyAct = [...]int{ 342, 370, 343, 362, 385, 102, 388, 360, 414, 394, 423, 119, 430, 121, 399, 0, 158, 130, 0, 0, 387, 416, 389, 410, 382, 406, 352, 398, 425, 374, - 403, 426, 0, 0, 0, 267, 0, 0, 0, 0, + 403, 426, 54, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 401, 420, 372, 402, 404, 341, 400, 0, 345, 348, 431, 418, 367, 368, 0, 0, 0, 0, 0, 0, 0, 386, 390, 407, @@ -1187,7 +1083,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 95, 0, 401, 420, 372, 402, 404, 341, 400, 0, 345, 348, 431, 418, 367, 368, 0, 0, 0, 0, 0, 0, 0, 386, 390, - 407, 380, 0, 0, 0, 0, 0, 0, 0, 0, + 407, 380, 0, 0, 0, 0, 0, 0, 1093, 0, 365, 0, 397, 0, 0, 0, 349, 346, 0, 0, 384, 0, 0, 0, 351, 0, 366, 408, 0, 340, 108, 411, 417, 381, 209, 419, 379, 378, 422, 145, @@ -1196,11 +1092,11 @@ var yyAct = [...]int{ 141, 151, 122, 166, 146, 173, 181, 182, 163, 180, 189, 84, 162, 172, 96, 155, 86, 170, 160, 128, 114, 115, 85, 0, 149, 101, 106, 100, 137, 167, - 168, 99, 192, 90, 179, 88, 338, 178, 135, 165, + 168, 99, 192, 90, 179, 88, 91, 178, 135, 165, 171, 129, 126, 87, 169, 127, 125, 117, 104, 111, 143, 124, 144, 112, 132, 131, 133, 0, 344, 0, 159, 176, 193, 93, 359, 164, 183, 184, 185, 186, - 187, 188, 0, 0, 94, 107, 103, 142, 339, 337, + 187, 188, 0, 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, 97, 175, 157, 355, 358, 353, 354, 392, 393, 427, 428, 429, 409, 350, 0, 356, 357, 0, 413, 395, 82, 0, @@ -1209,11 +1105,11 @@ var yyAct = [...]int{ 0, 364, 342, 370, 343, 362, 385, 102, 388, 360, 414, 394, 423, 119, 430, 121, 399, 0, 158, 130, 0, 0, 387, 416, 389, 410, 382, 406, 352, 398, - 425, 374, 403, 426, 0, 0, 0, 207, 0, 0, + 425, 374, 403, 426, 0, 0, 0, 267, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 401, 420, 372, 402, 404, 341, 400, 0, 345, 348, 431, 418, 367, 368, 0, 0, 0, 0, 0, 0, 0, 386, - 390, 407, 380, 0, 0, 0, 0, 0, 0, 0, + 390, 407, 380, 0, 0, 0, 0, 0, 0, 737, 0, 365, 0, 397, 0, 0, 0, 349, 346, 0, 0, 384, 0, 0, 0, 351, 0, 366, 408, 0, 340, 108, 411, 417, 381, 209, 419, 379, 378, 422, @@ -1246,14 +1142,14 @@ var yyAct = [...]int{ 422, 145, 0, 161, 110, 118, 83, 89, 0, 109, 136, 150, 154, 415, 363, 371, 98, 369, 152, 140, 174, 396, 141, 151, 122, 166, 146, 173, 181, 182, - 163, 180, 189, 84, 162, 608, 96, 155, 86, 170, + 163, 180, 189, 84, 162, 172, 96, 155, 86, 170, 160, 128, 114, 115, 85, 0, 149, 101, 106, 100, - 137, 167, 168, 99, 192, 90, 179, 88, 338, 178, + 137, 167, 168, 99, 192, 90, 179, 88, 91, 178, 135, 165, 171, 129, 126, 87, 169, 127, 125, 117, 104, 111, 143, 124, 144, 112, 132, 131, 133, 0, 344, 0, 159, 176, 193, 93, 359, 164, 183, 184, 185, 186, 187, 188, 0, 0, 94, 107, 103, 142, - 339, 337, 113, 156, 116, 123, 148, 191, 139, 153, + 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, 97, 175, 157, 355, 358, 353, 354, 392, 393, 427, 428, 429, 409, 350, 0, 356, 357, 0, 413, 395, 82, 0, 120, 190, 147, 105, 177, 421, 412, 0, @@ -1261,7 +1157,7 @@ var yyAct = [...]int{ 138, 373, 0, 364, 342, 370, 343, 362, 385, 102, 388, 360, 414, 394, 423, 119, 430, 121, 399, 0, 158, 130, 0, 0, 387, 416, 389, 410, 382, 406, - 352, 398, 425, 374, 403, 426, 0, 0, 0, 80, + 352, 398, 425, 374, 403, 426, 0, 0, 0, 267, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 401, 420, 372, 402, 404, 341, 400, 0, 345, 348, 431, 418, 367, 368, 0, 0, 0, 0, 0, 0, @@ -1272,28 +1168,182 @@ var yyAct = [...]int{ 378, 422, 145, 0, 161, 110, 118, 83, 89, 0, 109, 136, 150, 154, 415, 363, 371, 98, 369, 152, 140, 174, 396, 141, 151, 122, 166, 146, 173, 181, - 182, 163, 180, 189, 84, 162, 329, 96, 155, 86, + 182, 163, 180, 189, 84, 162, 172, 96, 155, 86, 170, 160, 128, 114, 115, 85, 0, 149, 101, 106, - 100, 137, 167, 168, 99, 192, 90, 179, 88, 338, + 100, 137, 167, 168, 99, 192, 90, 179, 88, 91, 178, 135, 165, 171, 129, 126, 87, 169, 127, 125, 117, 104, 111, 143, 124, 144, 112, 132, 131, 133, 0, 344, 0, 159, 176, 193, 93, 359, 164, 183, 184, 185, 186, 187, 188, 0, 0, 94, 107, 103, - 142, 339, 337, 332, 331, 116, 123, 148, 191, 139, + 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, 97, 175, 157, 355, 358, 353, 354, 392, 393, 427, 428, 429, 409, 350, 0, 356, 357, 0, 413, - 395, 82, 0, 120, 190, 147, 105, 177, 138, 0, - 0, 773, 0, 269, 0, 0, 0, 102, 0, 266, - 0, 0, 0, 119, 309, 121, 0, 0, 158, 130, - 0, 0, 0, 0, 300, 301, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 0, 0, 267, 288, 287, - 290, 291, 292, 293, 0, 0, 95, 289, 294, 295, - 296, 0, 0, 0, 264, 281, 0, 308, 0, 0, + 395, 82, 0, 120, 190, 147, 105, 177, 421, 412, + 0, 383, 424, 361, 375, 432, 376, 377, 405, 347, + 391, 138, 373, 0, 364, 342, 370, 343, 362, 385, + 102, 388, 360, 414, 394, 423, 119, 430, 121, 399, + 0, 158, 130, 0, 0, 387, 416, 389, 410, 382, + 406, 352, 398, 425, 374, 403, 426, 0, 0, 0, + 80, 0, 0, 0, 0, 0, 0, 0, 0, 95, + 0, 401, 420, 372, 402, 404, 341, 400, 0, 345, + 348, 431, 418, 367, 368, 0, 0, 0, 0, 0, + 0, 0, 386, 390, 407, 380, 0, 0, 0, 0, + 0, 0, 0, 0, 365, 0, 397, 0, 0, 0, + 349, 346, 0, 0, 384, 0, 0, 0, 351, 0, + 366, 408, 0, 340, 108, 411, 417, 381, 209, 419, + 379, 378, 422, 145, 0, 161, 110, 118, 83, 89, + 0, 109, 136, 150, 154, 415, 363, 371, 98, 369, + 152, 140, 174, 396, 141, 151, 122, 166, 146, 173, + 181, 182, 163, 180, 189, 84, 162, 172, 96, 155, + 86, 170, 160, 128, 114, 115, 85, 0, 149, 101, + 106, 100, 137, 167, 168, 99, 192, 90, 179, 88, + 338, 178, 135, 165, 171, 129, 126, 87, 169, 127, + 125, 117, 104, 111, 143, 124, 144, 112, 132, 131, + 133, 0, 344, 0, 159, 176, 193, 93, 359, 164, + 183, 184, 185, 186, 187, 188, 0, 0, 94, 107, + 103, 142, 339, 337, 113, 156, 116, 123, 148, 191, + 139, 153, 97, 175, 157, 355, 358, 353, 354, 392, + 393, 427, 428, 429, 409, 350, 0, 356, 357, 0, + 413, 395, 82, 0, 120, 190, 147, 105, 177, 421, + 412, 0, 383, 424, 361, 375, 432, 376, 377, 405, + 347, 391, 138, 373, 0, 364, 342, 370, 343, 362, + 385, 102, 388, 360, 414, 394, 423, 119, 430, 121, + 399, 0, 158, 130, 0, 0, 387, 416, 389, 410, + 382, 406, 352, 398, 425, 374, 403, 426, 0, 0, + 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, + 95, 0, 401, 420, 372, 402, 404, 341, 400, 0, + 345, 348, 431, 418, 367, 368, 0, 0, 0, 0, + 0, 0, 0, 386, 390, 407, 380, 0, 0, 0, + 0, 0, 0, 0, 0, 365, 0, 397, 0, 0, + 0, 349, 346, 0, 0, 384, 0, 0, 0, 351, + 0, 366, 408, 0, 340, 108, 411, 417, 381, 209, + 419, 379, 378, 422, 145, 0, 161, 110, 118, 83, + 89, 0, 109, 136, 150, 154, 415, 363, 371, 98, + 369, 152, 140, 174, 396, 141, 151, 122, 166, 146, + 173, 181, 182, 163, 180, 189, 84, 162, 172, 96, + 155, 86, 170, 160, 128, 114, 115, 85, 0, 149, + 101, 106, 100, 137, 167, 168, 99, 192, 90, 179, + 88, 91, 178, 135, 165, 171, 129, 126, 87, 169, + 127, 125, 117, 104, 111, 143, 124, 144, 112, 132, + 131, 133, 0, 344, 0, 159, 176, 193, 93, 359, + 164, 183, 184, 185, 186, 187, 188, 0, 0, 94, + 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, + 191, 139, 153, 97, 175, 157, 355, 358, 353, 354, + 392, 393, 427, 428, 429, 409, 350, 0, 356, 357, + 0, 413, 395, 82, 0, 120, 190, 147, 105, 177, + 421, 412, 0, 383, 424, 361, 375, 432, 376, 377, + 405, 347, 391, 138, 373, 0, 364, 342, 370, 343, + 362, 385, 102, 388, 360, 414, 394, 423, 119, 430, + 121, 399, 0, 158, 130, 0, 0, 387, 416, 389, + 410, 382, 406, 352, 398, 425, 374, 403, 426, 0, + 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, + 0, 95, 0, 401, 420, 372, 402, 404, 341, 400, + 0, 345, 348, 431, 418, 367, 368, 0, 0, 0, + 0, 0, 0, 0, 386, 390, 407, 380, 0, 0, + 0, 0, 0, 0, 0, 0, 365, 0, 397, 0, + 0, 0, 349, 346, 0, 0, 384, 0, 0, 0, + 351, 0, 366, 408, 0, 340, 108, 411, 417, 381, + 209, 419, 379, 378, 422, 145, 0, 161, 110, 118, + 83, 89, 0, 109, 136, 150, 154, 415, 363, 371, + 98, 369, 152, 140, 174, 396, 141, 151, 122, 166, + 146, 173, 181, 182, 163, 180, 189, 84, 162, 608, + 96, 155, 86, 170, 160, 128, 114, 115, 85, 0, + 149, 101, 106, 100, 137, 167, 168, 99, 192, 90, + 179, 88, 338, 178, 135, 165, 171, 129, 126, 87, + 169, 127, 125, 117, 104, 111, 143, 124, 144, 112, + 132, 131, 133, 0, 344, 0, 159, 176, 193, 93, + 359, 164, 183, 184, 185, 186, 187, 188, 0, 0, + 94, 107, 103, 142, 339, 337, 113, 156, 116, 123, + 148, 191, 139, 153, 97, 175, 157, 355, 358, 353, + 354, 392, 393, 427, 428, 429, 409, 350, 0, 356, + 357, 0, 413, 395, 82, 0, 120, 190, 147, 105, + 177, 421, 412, 0, 383, 424, 361, 375, 432, 376, + 377, 405, 347, 391, 138, 373, 0, 364, 342, 370, + 343, 362, 385, 102, 388, 360, 414, 394, 423, 119, + 430, 121, 399, 0, 158, 130, 0, 0, 387, 416, + 389, 410, 382, 406, 352, 398, 425, 374, 403, 426, + 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, + 0, 0, 95, 0, 401, 420, 372, 402, 404, 341, + 400, 0, 345, 348, 431, 418, 367, 368, 0, 0, + 0, 0, 0, 0, 0, 386, 390, 407, 380, 0, + 0, 0, 0, 0, 0, 0, 0, 365, 0, 397, + 0, 0, 0, 349, 346, 0, 0, 384, 0, 0, + 0, 351, 0, 366, 408, 0, 340, 108, 411, 417, + 381, 209, 419, 379, 378, 422, 145, 0, 161, 110, + 118, 83, 89, 0, 109, 136, 150, 154, 415, 363, + 371, 98, 369, 152, 140, 174, 396, 141, 151, 122, + 166, 146, 173, 181, 182, 163, 180, 189, 84, 162, + 329, 96, 155, 86, 170, 160, 128, 114, 115, 85, + 0, 149, 101, 106, 100, 137, 167, 168, 99, 192, + 90, 179, 88, 338, 178, 135, 165, 171, 129, 126, + 87, 169, 127, 125, 117, 104, 111, 143, 124, 144, + 112, 132, 131, 133, 0, 344, 0, 159, 176, 193, + 93, 359, 164, 183, 184, 185, 186, 187, 188, 0, + 0, 94, 107, 103, 142, 339, 337, 332, 331, 116, + 123, 148, 191, 139, 153, 97, 175, 157, 355, 358, + 353, 354, 392, 393, 427, 428, 429, 409, 350, 0, + 356, 357, 0, 413, 395, 82, 0, 120, 190, 147, + 105, 177, 138, 0, 0, 0, 0, 269, 0, 0, + 0, 102, 0, 266, 0, 0, 0, 119, 309, 121, + 0, 0, 158, 130, 0, 0, 0, 0, 300, 301, + 0, 0, 0, 0, 0, 0, 837, 0, 54, 0, + 0, 267, 288, 287, 290, 291, 292, 293, 0, 0, + 95, 289, 294, 295, 296, 838, 0, 0, 264, 281, + 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 278, 279, 260, - 0, 0, 0, 320, 0, 280, 0, 0, 275, 276, - 277, 282, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 108, 0, 0, 0, 209, 0, 0, 318, 0, + 0, 278, 279, 0, 0, 0, 0, 320, 0, 280, + 0, 0, 275, 276, 277, 282, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 108, 0, 0, 0, 209, + 0, 0, 318, 0, 145, 0, 161, 110, 118, 83, + 89, 0, 109, 136, 150, 154, 0, 0, 0, 98, + 0, 152, 140, 174, 0, 141, 151, 122, 166, 146, + 173, 181, 182, 163, 180, 189, 84, 162, 172, 96, + 155, 86, 170, 160, 128, 114, 115, 85, 0, 149, + 101, 106, 100, 137, 167, 168, 99, 192, 90, 179, + 88, 91, 178, 135, 165, 171, 129, 126, 87, 169, + 127, 125, 117, 104, 111, 143, 124, 144, 112, 132, + 131, 133, 0, 0, 0, 159, 176, 193, 93, 0, + 164, 183, 184, 185, 186, 187, 188, 0, 0, 94, + 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, + 191, 139, 153, 97, 175, 157, 310, 319, 316, 317, + 314, 315, 313, 312, 311, 321, 302, 303, 304, 305, + 307, 0, 306, 82, 0, 120, 190, 147, 105, 177, + 138, 0, 0, 773, 0, 269, 0, 0, 0, 102, + 0, 266, 0, 0, 0, 119, 309, 121, 0, 0, + 158, 130, 0, 0, 0, 0, 300, 301, 0, 0, + 0, 0, 0, 0, 0, 0, 54, 0, 0, 267, + 288, 287, 290, 291, 292, 293, 0, 0, 95, 289, + 294, 295, 296, 0, 0, 0, 264, 281, 0, 308, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, + 279, 260, 0, 0, 0, 320, 0, 280, 0, 0, + 275, 276, 277, 282, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 108, 0, 0, 0, 209, 0, 0, + 318, 0, 145, 0, 161, 110, 118, 83, 89, 0, + 109, 136, 150, 154, 0, 0, 0, 98, 0, 152, + 140, 174, 0, 141, 151, 122, 166, 146, 173, 181, + 182, 163, 180, 189, 84, 162, 172, 96, 155, 86, + 170, 160, 128, 114, 115, 85, 0, 149, 101, 106, + 100, 137, 167, 168, 99, 192, 90, 179, 88, 91, + 178, 135, 165, 171, 129, 126, 87, 169, 127, 125, + 117, 104, 111, 143, 124, 144, 112, 132, 131, 133, + 0, 0, 0, 159, 176, 193, 93, 0, 164, 183, + 184, 185, 186, 187, 188, 0, 0, 94, 107, 103, + 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, + 153, 97, 175, 157, 310, 319, 316, 317, 314, 315, + 313, 312, 311, 321, 302, 303, 304, 305, 307, 0, + 306, 82, 0, 120, 190, 147, 105, 177, 138, 0, + 0, 0, 0, 269, 0, 0, 0, 102, 0, 266, + 0, 0, 0, 119, 309, 121, 0, 0, 158, 130, + 0, 0, 0, 0, 300, 301, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, 493, 267, 288, 287, + 290, 291, 292, 293, 0, 0, 95, 289, 294, 295, + 296, 0, 0, 0, 264, 281, 0, 308, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 278, 279, 0, + 0, 0, 0, 320, 0, 280, 0, 0, 275, 276, + 277, 282, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 108, 0, 0, 0, 209, 0, 0, 318, 0, 145, 0, 161, 110, 118, 83, 89, 0, 109, 136, 150, 154, 0, 0, 0, 98, 0, 152, 140, 174, 0, 141, 151, 122, 166, 146, 173, 181, 182, 163, @@ -1311,11 +1361,11 @@ var yyAct = [...]int{ 0, 269, 0, 0, 0, 102, 0, 266, 0, 0, 0, 119, 309, 121, 0, 0, 158, 130, 0, 0, 0, 0, 300, 301, 0, 0, 0, 0, 0, 0, - 0, 0, 54, 0, 493, 267, 288, 287, 290, 291, + 0, 0, 54, 0, 0, 267, 288, 287, 290, 291, 292, 293, 0, 0, 95, 289, 294, 295, 296, 0, 0, 0, 264, 281, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 279, 0, 0, 0, + 0, 0, 0, 0, 0, 278, 279, 260, 0, 0, 0, 320, 0, 280, 0, 0, 275, 276, 277, 282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 209, 0, 0, 318, 0, 145, 0, @@ -1331,33 +1381,33 @@ var yyAct = [...]int{ 188, 0, 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, 97, 175, 157, 310, 319, 316, 317, 314, 315, 313, 312, 311, 321, - 302, 303, 304, 305, 307, 0, 306, 82, 0, 120, - 190, 147, 105, 177, 138, 0, 0, 0, 0, 269, - 0, 0, 0, 102, 0, 266, 0, 0, 0, 119, - 309, 121, 0, 0, 158, 130, 0, 0, 0, 0, - 300, 301, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 267, 288, 287, 290, 291, 292, 293, - 0, 0, 95, 289, 294, 295, 296, 0, 0, 0, - 264, 281, 0, 308, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 279, 260, 0, 0, 0, 320, - 0, 280, 0, 0, 275, 276, 277, 282, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, - 0, 209, 0, 0, 318, 0, 145, 0, 161, 110, - 118, 83, 89, 0, 109, 136, 150, 154, 0, 0, - 0, 98, 0, 152, 140, 174, 0, 141, 151, 122, - 166, 146, 173, 181, 182, 163, 180, 189, 84, 162, - 172, 96, 155, 86, 170, 160, 128, 114, 115, 85, - 0, 149, 101, 106, 100, 137, 167, 168, 99, 192, - 90, 179, 88, 91, 178, 135, 165, 171, 129, 126, - 87, 169, 127, 125, 117, 104, 111, 143, 124, 144, - 112, 132, 131, 133, 0, 0, 0, 159, 176, 193, - 93, 0, 164, 183, 184, 185, 186, 187, 188, 0, - 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, - 123, 148, 191, 139, 153, 97, 175, 157, 310, 319, - 316, 317, 314, 315, 313, 312, 311, 321, 302, 303, - 304, 305, 307, 24, 306, 82, 0, 120, 190, 147, - 105, 177, 0, 0, 0, 138, 0, 0, 0, 0, + 302, 303, 304, 305, 307, 24, 306, 82, 0, 120, + 190, 147, 105, 177, 0, 0, 0, 138, 0, 0, + 0, 0, 269, 0, 0, 0, 102, 0, 266, 0, + 0, 0, 119, 309, 121, 0, 0, 158, 130, 0, + 0, 0, 0, 300, 301, 0, 0, 0, 0, 0, + 0, 0, 0, 54, 0, 0, 267, 288, 287, 290, + 291, 292, 293, 0, 0, 95, 289, 294, 295, 296, + 0, 0, 0, 264, 281, 0, 308, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 279, 0, 0, + 0, 0, 320, 0, 280, 0, 0, 275, 276, 277, + 282, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 108, 0, 0, 0, 209, 0, 0, 318, 0, 145, + 0, 161, 110, 118, 83, 89, 0, 109, 136, 150, + 154, 0, 0, 0, 98, 0, 152, 140, 174, 0, + 141, 151, 122, 166, 146, 173, 181, 182, 163, 180, + 189, 84, 162, 172, 96, 155, 86, 170, 160, 128, + 114, 115, 85, 0, 149, 101, 106, 100, 137, 167, + 168, 99, 192, 90, 179, 88, 91, 178, 135, 165, + 171, 129, 126, 87, 169, 127, 125, 117, 104, 111, + 143, 124, 144, 112, 132, 131, 133, 0, 0, 0, + 159, 176, 193, 93, 0, 164, 183, 184, 185, 186, + 187, 188, 0, 0, 94, 107, 103, 142, 134, 92, + 113, 156, 116, 123, 148, 191, 139, 153, 97, 175, + 157, 310, 319, 316, 317, 314, 315, 313, 312, 311, + 321, 302, 303, 304, 305, 307, 0, 306, 82, 0, + 120, 190, 147, 105, 177, 138, 0, 0, 0, 0, 269, 0, 0, 0, 102, 0, 266, 0, 0, 0, 119, 309, 121, 0, 0, 158, 130, 0, 0, 0, 0, 300, 301, 0, 0, 0, 0, 0, 0, 0, @@ -1381,255 +1431,42 @@ var yyAct = [...]int{ 0, 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, 97, 175, 157, 310, 319, 316, 317, 314, 315, 313, 312, 311, 321, 302, - 303, 304, 305, 307, 0, 306, 82, 0, 120, 190, - 147, 105, 177, 138, 0, 0, 0, 0, 269, 0, - 0, 0, 102, 0, 266, 0, 0, 0, 119, 309, - 121, 0, 0, 158, 130, 0, 0, 0, 0, 300, - 301, 0, 0, 0, 0, 0, 0, 0, 0, 54, - 0, 0, 267, 288, 287, 290, 291, 292, 293, 0, - 0, 95, 289, 294, 295, 296, 0, 0, 0, 264, - 281, 0, 308, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 278, 279, 0, 0, 0, 0, 320, 0, - 280, 0, 0, 275, 276, 277, 282, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, - 209, 0, 0, 318, 0, 145, 0, 161, 110, 118, - 83, 89, 0, 109, 136, 150, 154, 0, 0, 0, - 98, 0, 152, 140, 174, 0, 141, 151, 122, 166, - 146, 173, 181, 182, 163, 180, 189, 84, 162, 172, - 96, 155, 86, 170, 160, 128, 114, 115, 85, 0, - 149, 101, 106, 100, 137, 167, 168, 99, 192, 90, - 179, 88, 91, 178, 135, 165, 171, 129, 126, 87, - 169, 127, 125, 117, 104, 111, 143, 124, 144, 112, - 132, 131, 133, 0, 0, 0, 159, 176, 193, 93, - 0, 164, 183, 184, 185, 186, 187, 188, 0, 0, - 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, - 148, 191, 139, 153, 97, 175, 157, 310, 319, 316, - 317, 314, 315, 313, 312, 311, 321, 302, 303, 304, - 305, 307, 138, 306, 82, 0, 120, 190, 147, 105, - 177, 102, 0, 0, 0, 0, 0, 119, 309, 121, - 0, 0, 158, 130, 0, 0, 0, 0, 300, 301, - 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, - 0, 267, 288, 287, 290, 291, 292, 293, 0, 0, - 95, 289, 294, 295, 296, 0, 0, 0, 0, 281, - 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 279, 0, 0, 0, 0, 320, 0, 280, - 0, 0, 275, 276, 277, 282, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 108, 0, 0, 0, 209, - 0, 0, 318, 0, 145, 0, 161, 110, 118, 83, - 89, 0, 109, 136, 150, 154, 0, 0, 0, 98, - 0, 152, 140, 174, 1410, 141, 151, 122, 166, 146, - 173, 181, 182, 163, 180, 189, 84, 162, 172, 96, - 155, 86, 170, 160, 128, 114, 115, 85, 0, 149, - 101, 106, 100, 137, 167, 168, 99, 192, 90, 179, - 88, 91, 178, 135, 165, 171, 129, 126, 87, 169, - 127, 125, 117, 104, 111, 143, 124, 144, 112, 132, - 131, 133, 0, 0, 0, 159, 176, 193, 93, 0, - 164, 183, 184, 185, 186, 187, 188, 0, 0, 94, - 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, - 191, 139, 153, 97, 175, 157, 310, 319, 316, 317, - 314, 315, 313, 312, 311, 321, 302, 303, 304, 305, - 307, 138, 306, 82, 0, 120, 190, 147, 105, 177, - 102, 0, 0, 0, 0, 0, 119, 309, 121, 0, - 0, 158, 130, 0, 0, 0, 0, 300, 301, 0, - 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, - 267, 288, 287, 290, 291, 292, 293, 0, 0, 95, - 289, 294, 295, 296, 0, 0, 0, 0, 281, 0, - 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 278, 279, 0, 0, 0, 0, 320, 0, 280, 0, - 0, 275, 276, 277, 282, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 108, 0, 0, 0, 209, 0, - 0, 318, 0, 145, 0, 161, 110, 118, 83, 89, - 0, 109, 136, 150, 154, 0, 0, 0, 98, 0, - 152, 140, 174, 0, 141, 151, 122, 166, 146, 173, - 181, 182, 163, 180, 189, 84, 162, 172, 96, 155, - 86, 170, 160, 128, 114, 115, 85, 0, 149, 101, - 106, 100, 137, 167, 168, 99, 192, 90, 179, 88, - 91, 178, 135, 165, 171, 129, 126, 87, 169, 127, - 125, 117, 104, 111, 143, 124, 144, 112, 132, 131, - 133, 0, 0, 0, 159, 176, 193, 93, 0, 164, - 183, 184, 185, 186, 187, 188, 0, 0, 94, 107, - 103, 142, 134, 92, 113, 156, 116, 123, 148, 191, - 139, 153, 97, 175, 157, 310, 319, 316, 317, 314, - 315, 313, 312, 311, 321, 302, 303, 304, 305, 307, - 138, 306, 82, 0, 120, 190, 147, 105, 177, 102, - 0, 0, 0, 0, 0, 119, 0, 121, 0, 0, - 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 527, 526, 536, 537, 529, - 530, 531, 532, 533, 534, 535, 528, 0, 0, 538, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 108, 0, 0, 0, 209, 0, 0, - 0, 0, 145, 0, 161, 110, 118, 83, 89, 0, - 109, 136, 150, 154, 0, 0, 0, 98, 0, 152, - 140, 174, 0, 141, 151, 122, 166, 146, 173, 181, - 182, 163, 180, 189, 84, 162, 172, 96, 155, 86, - 170, 160, 128, 114, 115, 85, 0, 149, 101, 106, - 100, 137, 167, 168, 99, 192, 90, 179, 88, 91, - 178, 135, 165, 171, 129, 126, 87, 169, 127, 125, - 117, 104, 111, 143, 124, 144, 112, 132, 131, 133, - 0, 0, 0, 159, 176, 193, 93, 0, 164, 183, - 184, 185, 186, 187, 188, 0, 0, 94, 107, 103, - 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, - 153, 97, 175, 157, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 138, 0, 0, 0, 515, 0, 0, - 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, - 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 80, 0, 517, 0, 0, 0, 0, 0, - 0, 95, 0, 0, 0, 0, 0, 512, 511, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 513, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, - 209, 0, 0, 0, 0, 145, 0, 161, 110, 118, - 83, 89, 0, 109, 136, 150, 154, 0, 0, 0, - 98, 0, 152, 140, 174, 0, 141, 151, 122, 166, - 146, 173, 181, 182, 163, 180, 189, 84, 162, 172, - 96, 155, 86, 170, 160, 128, 114, 115, 85, 0, - 149, 101, 106, 100, 137, 167, 168, 99, 192, 90, - 179, 88, 91, 178, 135, 165, 171, 129, 126, 87, - 169, 127, 125, 117, 104, 111, 143, 124, 144, 112, - 132, 131, 133, 0, 0, 0, 159, 176, 193, 93, - 0, 164, 183, 184, 185, 186, 187, 188, 0, 0, - 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, - 148, 191, 139, 153, 97, 175, 157, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, - 0, 0, 0, 0, 82, 102, 120, 190, 147, 105, - 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, - 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, - 76, 77, 0, 73, 0, 0, 0, 78, 145, 0, - 161, 110, 118, 83, 89, 0, 109, 136, 150, 154, - 0, 0, 0, 98, 0, 152, 140, 174, 0, 141, - 151, 122, 166, 146, 173, 181, 182, 163, 180, 189, - 84, 162, 172, 96, 155, 86, 170, 160, 128, 114, - 115, 85, 0, 149, 101, 106, 100, 137, 167, 168, - 99, 192, 90, 179, 88, 91, 178, 135, 165, 171, - 129, 126, 87, 169, 127, 125, 117, 104, 111, 143, - 124, 144, 112, 132, 131, 133, 0, 0, 0, 159, - 176, 193, 93, 0, 164, 183, 184, 185, 186, 187, - 188, 0, 0, 94, 107, 103, 142, 134, 92, 113, - 156, 116, 123, 148, 191, 139, 153, 97, 175, 157, - 0, 75, 0, 0, 0, 0, 0, 0, 0, 138, - 0, 0, 0, 824, 0, 0, 0, 82, 102, 120, - 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, - 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 207, 0, - 826, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 108, 0, 0, 0, 209, 0, 0, 0, - 0, 145, 0, 161, 110, 118, 83, 89, 0, 109, - 136, 150, 154, 0, 0, 0, 98, 0, 152, 140, - 174, 0, 141, 151, 122, 166, 146, 173, 181, 182, - 163, 180, 189, 84, 162, 172, 96, 155, 86, 170, - 160, 128, 114, 115, 85, 0, 149, 101, 106, 100, - 137, 167, 168, 99, 192, 90, 179, 88, 91, 178, - 135, 165, 171, 129, 126, 87, 169, 127, 125, 117, - 104, 111, 143, 124, 144, 112, 132, 131, 133, 0, - 0, 0, 159, 176, 193, 93, 0, 164, 183, 184, - 185, 186, 187, 188, 0, 0, 94, 107, 103, 142, - 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, - 97, 175, 157, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, - 82, 0, 120, 190, 147, 105, 177, 102, 0, 0, - 0, 0, 0, 119, 0, 121, 0, 0, 158, 130, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 0, 0, 80, 0, 0, - 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 108, 0, 0, 0, 209, 0, 0, 0, 0, - 145, 0, 161, 110, 118, 83, 89, 0, 109, 136, - 150, 154, 0, 0, 0, 98, 0, 152, 140, 174, - 0, 141, 151, 122, 166, 146, 173, 181, 182, 163, - 180, 189, 84, 162, 172, 96, 155, 86, 170, 160, - 128, 114, 115, 85, 0, 149, 101, 106, 100, 137, - 167, 168, 99, 192, 90, 179, 88, 91, 178, 135, - 165, 171, 129, 126, 87, 169, 127, 125, 117, 104, - 111, 143, 124, 144, 112, 132, 131, 133, 0, 0, - 0, 159, 176, 193, 93, 0, 164, 183, 184, 185, - 186, 187, 188, 0, 0, 94, 107, 103, 142, 134, - 92, 113, 156, 116, 123, 148, 191, 139, 153, 97, - 175, 157, 0, 0, 0, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 138, 0, 82, - 0, 120, 190, 147, 105, 177, 102, 0, 0, 0, - 0, 0, 119, 0, 121, 0, 0, 158, 130, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 54, 0, 0, 207, 0, 0, 0, - 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 108, 0, 0, 0, 209, 0, 0, 0, 0, 145, - 0, 161, 110, 118, 83, 89, 0, 109, 136, 150, - 154, 0, 0, 0, 98, 0, 152, 140, 174, 0, - 141, 151, 122, 166, 146, 173, 181, 182, 163, 180, - 189, 84, 162, 172, 96, 155, 86, 170, 160, 128, - 114, 115, 85, 0, 149, 101, 106, 100, 137, 167, - 168, 99, 192, 90, 179, 88, 91, 178, 135, 165, - 171, 129, 126, 87, 169, 127, 125, 117, 104, 111, - 143, 124, 144, 112, 132, 131, 133, 0, 0, 0, - 159, 176, 193, 93, 0, 164, 183, 184, 185, 186, - 187, 188, 0, 0, 94, 107, 103, 142, 134, 92, - 113, 156, 116, 123, 148, 191, 139, 153, 97, 175, - 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 138, 0, 0, 0, 824, 0, 0, 0, 82, 102, - 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, - 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, - 0, 826, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 108, 0, 0, 0, 209, 0, 0, - 0, 0, 145, 0, 161, 110, 118, 83, 89, 0, - 109, 136, 150, 154, 0, 0, 0, 98, 0, 152, - 140, 174, 0, 822, 151, 122, 166, 146, 173, 181, - 182, 163, 180, 189, 84, 162, 172, 96, 155, 86, - 170, 160, 128, 114, 115, 85, 0, 149, 101, 106, - 100, 137, 167, 168, 99, 192, 90, 179, 88, 91, - 178, 135, 165, 171, 129, 126, 87, 169, 127, 125, - 117, 104, 111, 143, 124, 144, 112, 132, 131, 133, - 0, 0, 0, 159, 176, 193, 93, 0, 164, 183, - 184, 185, 186, 187, 188, 0, 0, 94, 107, 103, - 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, - 153, 97, 175, 157, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, - 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, - 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 80, 0, 0, 724, 0, 0, 725, 0, - 0, 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, 0, 0, + 303, 304, 305, 307, 138, 306, 82, 0, 120, 190, + 147, 105, 177, 102, 0, 0, 0, 0, 0, 119, + 309, 121, 0, 0, 158, 130, 0, 0, 0, 0, + 300, 301, 0, 0, 0, 0, 0, 0, 0, 0, + 54, 0, 0, 267, 288, 287, 290, 291, 292, 293, + 0, 0, 95, 289, 294, 295, 296, 0, 0, 0, + 0, 281, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 278, 279, 0, 0, 0, 0, 320, + 0, 280, 0, 0, 275, 276, 277, 282, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, + 0, 209, 0, 0, 318, 0, 145, 0, 161, 110, + 118, 83, 89, 0, 109, 136, 150, 154, 0, 0, + 0, 98, 0, 152, 140, 174, 1410, 141, 151, 122, + 166, 146, 173, 181, 182, 163, 180, 189, 84, 162, + 172, 96, 155, 86, 170, 160, 128, 114, 115, 85, + 0, 149, 101, 106, 100, 137, 167, 168, 99, 192, + 90, 179, 88, 91, 178, 135, 165, 171, 129, 126, + 87, 169, 127, 125, 117, 104, 111, 143, 124, 144, + 112, 132, 131, 133, 0, 0, 0, 159, 176, 193, + 93, 0, 164, 183, 184, 185, 186, 187, 188, 0, + 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, + 123, 148, 191, 139, 153, 97, 175, 157, 310, 319, + 316, 317, 314, 315, 313, 312, 311, 321, 302, 303, + 304, 305, 307, 138, 306, 82, 0, 120, 190, 147, + 105, 177, 102, 0, 0, 0, 0, 0, 119, 309, + 121, 0, 0, 158, 130, 0, 0, 0, 0, 300, + 301, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 267, 288, 287, 290, 291, 292, 293, 0, + 0, 95, 289, 294, 295, 296, 0, 0, 0, 0, + 281, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 278, 279, 0, 0, 0, 0, 320, 0, + 280, 0, 0, 275, 276, 277, 282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, - 209, 0, 0, 0, 0, 145, 0, 161, 110, 118, + 209, 0, 0, 318, 0, 145, 0, 161, 110, 118, 83, 89, 0, 109, 136, 150, 154, 0, 0, 0, 98, 0, 152, 140, 174, 0, 141, 151, 122, 166, 146, 173, 181, 182, 163, 180, 189, 84, 162, 172, @@ -1640,18 +1477,18 @@ var yyAct = [...]int{ 132, 131, 133, 0, 0, 0, 159, 176, 193, 93, 0, 164, 183, 184, 185, 186, 187, 188, 0, 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, - 148, 191, 139, 153, 97, 175, 157, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 138, 0, 82, 0, 120, 190, 147, 105, - 177, 102, 0, 617, 0, 0, 0, 119, 0, 121, + 148, 191, 139, 153, 97, 175, 157, 310, 319, 316, + 317, 314, 315, 313, 312, 311, 321, 302, 303, 304, + 305, 307, 138, 306, 82, 0, 120, 190, 147, 105, + 177, 102, 0, 0, 0, 0, 0, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 80, 0, 616, 0, 0, 0, 0, 0, 0, + 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 527, 526, 536, + 537, 529, 530, 531, 532, 533, 534, 535, 528, 0, + 0, 538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 209, 0, 0, 0, 0, 145, 0, 161, 110, 118, 83, 89, 0, 109, 136, 150, 154, 0, 0, 0, 98, @@ -1665,14 +1502,14 @@ var yyAct = [...]int{ 164, 183, 184, 185, 186, 187, 188, 0, 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, 97, 175, 157, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 138, 0, 0, 0, 515, 0, 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 54, 0, 0, 207, 0, 0, 0, 0, 0, - 0, 0, 0, 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, + 0, 0, 0, 0, 80, 0, 517, 0, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 512, + 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, @@ -1692,14 +1529,14 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 207, 0, 826, + 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, + 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 108, 0, 0, 0, 209, 0, 0, 0, 0, + 0, 108, 76, 77, 0, 73, 0, 0, 0, 78, 145, 0, 161, 110, 118, 83, 89, 0, 109, 136, 150, 154, 0, 0, 0, 98, 0, 152, 140, 174, 0, 141, 151, 122, 166, 146, 173, 181, 182, 163, @@ -1711,12 +1548,12 @@ var yyAct = [...]int{ 0, 159, 176, 193, 93, 0, 164, 183, 184, 185, 186, 187, 188, 0, 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, 97, - 175, 157, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 138, 0, 0, 0, 0, 0, 0, 0, 82, + 175, 157, 0, 75, 0, 0, 0, 0, 0, 0, + 0, 138, 0, 0, 0, 824, 0, 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 267, 0, 789, 0, 0, 0, 0, 0, 0, 95, + 207, 0, 826, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, @@ -1734,12 +1571,107 @@ var yyAct = [...]int{ 133, 0, 0, 0, 159, 176, 193, 93, 0, 164, 183, 184, 185, 186, 187, 188, 0, 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, 191, - 139, 153, 97, 175, 157, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, - 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, + 139, 153, 97, 175, 157, 0, 0, 0, 24, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 138, 0, 82, 0, 120, 190, 147, 105, 177, 102, + 0, 0, 0, 0, 0, 119, 0, 121, 0, 0, + 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 54, 0, 0, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 108, 0, 0, 0, 209, 0, 0, + 0, 0, 145, 0, 161, 110, 118, 83, 89, 0, + 109, 136, 150, 154, 0, 0, 0, 98, 0, 152, + 140, 174, 0, 141, 151, 122, 166, 146, 173, 181, + 182, 163, 180, 189, 84, 162, 172, 96, 155, 86, + 170, 160, 128, 114, 115, 85, 0, 149, 101, 106, + 100, 137, 167, 168, 99, 192, 90, 179, 88, 91, + 178, 135, 165, 171, 129, 126, 87, 169, 127, 125, + 117, 104, 111, 143, 124, 144, 112, 132, 131, 133, + 0, 0, 0, 159, 176, 193, 93, 0, 164, 183, + 184, 185, 186, 187, 188, 0, 0, 94, 107, 103, + 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, + 153, 97, 175, 157, 0, 0, 0, 24, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 0, 82, 0, 120, 190, 147, 105, 177, 102, 0, + 0, 0, 0, 0, 119, 0, 121, 0, 0, 158, + 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 0, 207, 0, + 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 108, 0, 0, 0, 209, 0, 0, 0, + 0, 145, 0, 161, 110, 118, 83, 89, 0, 109, + 136, 150, 154, 0, 0, 0, 98, 0, 152, 140, + 174, 0, 141, 151, 122, 166, 146, 173, 181, 182, + 163, 180, 189, 84, 162, 172, 96, 155, 86, 170, + 160, 128, 114, 115, 85, 0, 149, 101, 106, 100, + 137, 167, 168, 99, 192, 90, 179, 88, 91, 178, + 135, 165, 171, 129, 126, 87, 169, 127, 125, 117, + 104, 111, 143, 124, 144, 112, 132, 131, 133, 0, + 0, 0, 159, 176, 193, 93, 0, 164, 183, 184, + 185, 186, 187, 188, 0, 0, 94, 107, 103, 142, + 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, + 97, 175, 157, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 138, 0, 0, 0, 824, 0, 0, 0, + 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, + 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 207, 0, 826, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 108, 0, 0, 0, 209, + 0, 0, 0, 0, 145, 0, 161, 110, 118, 83, + 89, 0, 109, 136, 150, 154, 0, 0, 0, 98, + 0, 152, 140, 174, 0, 822, 151, 122, 166, 146, + 173, 181, 182, 163, 180, 189, 84, 162, 172, 96, + 155, 86, 170, 160, 128, 114, 115, 85, 0, 149, + 101, 106, 100, 137, 167, 168, 99, 192, 90, 179, + 88, 91, 178, 135, 165, 171, 129, 126, 87, 169, + 127, 125, 117, 104, 111, 143, 124, 144, 112, 132, + 131, 133, 0, 0, 0, 159, 176, 193, 93, 0, + 164, 183, 184, 185, 186, 187, 188, 0, 0, 94, + 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, + 191, 139, 153, 97, 175, 157, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, + 0, 0, 0, 82, 102, 120, 190, 147, 105, 177, + 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 0, 0, 724, 0, 0, + 725, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, + 0, 0, 209, 0, 0, 0, 0, 145, 0, 161, + 110, 118, 83, 89, 0, 109, 136, 150, 154, 0, + 0, 0, 98, 0, 152, 140, 174, 0, 141, 151, + 122, 166, 146, 173, 181, 182, 163, 180, 189, 84, + 162, 172, 96, 155, 86, 170, 160, 128, 114, 115, + 85, 0, 149, 101, 106, 100, 137, 167, 168, 99, + 192, 90, 179, 88, 91, 178, 135, 165, 171, 129, + 126, 87, 169, 127, 125, 117, 104, 111, 143, 124, + 144, 112, 132, 131, 133, 0, 0, 0, 159, 176, + 193, 93, 0, 164, 183, 184, 185, 186, 187, 188, + 0, 0, 94, 107, 103, 142, 134, 92, 113, 156, + 116, 123, 148, 191, 139, 153, 97, 175, 157, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 138, 0, 82, 0, 120, 190, + 147, 105, 177, 102, 0, 617, 0, 0, 0, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 267, 0, 785, 0, 0, 0, 0, + 0, 0, 0, 80, 0, 616, 0, 0, 0, 0, 0, 0, 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, 0, @@ -1762,7 +1694,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 80, 0, 517, 0, + 0, 0, 0, 54, 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 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, @@ -1782,35 +1714,11 @@ var yyAct = [...]int{ 187, 188, 0, 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, 97, 175, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 138, 82, 0, - 120, 190, 147, 105, 177, 590, 102, 0, 0, 0, - 0, 0, 119, 0, 121, 0, 0, 158, 130, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, - 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 108, 0, 0, 0, 209, 0, 0, 0, 0, 145, - 0, 161, 110, 118, 83, 89, 0, 109, 136, 150, - 154, 0, 0, 0, 98, 0, 152, 140, 174, 0, - 141, 151, 122, 166, 146, 173, 181, 182, 163, 180, - 189, 84, 162, 172, 96, 155, 86, 170, 160, 128, - 114, 115, 85, 0, 149, 101, 106, 100, 137, 167, - 168, 99, 192, 90, 179, 88, 91, 178, 135, 165, - 171, 129, 126, 87, 169, 127, 125, 117, 104, 111, - 143, 124, 144, 112, 132, 131, 133, 0, 0, 0, - 159, 176, 193, 93, 0, 164, 183, 184, 185, 186, - 187, 188, 0, 0, 94, 107, 103, 142, 134, 92, - 113, 156, 116, 123, 148, 191, 139, 153, 97, 175, - 157, 0, 0, 324, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, - 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, + 0, 826, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, @@ -1833,13 +1741,13 @@ var yyAct = [...]int{ 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 267, 0, 789, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 108, 0, 204, 0, + 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 209, 0, 0, 0, 0, 145, 0, 161, 110, 118, 83, 89, 0, 109, 136, 150, 154, 0, 0, 0, 98, 0, 152, 140, 174, 0, 141, 151, 122, 166, @@ -1856,7 +1764,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 267, 0, 785, 0, 0, 0, 0, 0, 0, 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, @@ -1879,6 +1787,30 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, + 517, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 108, 0, 0, 0, 209, 0, 0, 0, + 0, 145, 0, 161, 110, 118, 83, 89, 0, 109, + 136, 150, 154, 0, 0, 0, 98, 0, 152, 140, + 174, 0, 141, 151, 122, 166, 146, 173, 181, 182, + 163, 180, 189, 84, 162, 172, 96, 155, 86, 170, + 160, 128, 114, 115, 85, 0, 149, 101, 106, 100, + 137, 167, 168, 99, 192, 90, 179, 88, 91, 178, + 135, 165, 171, 129, 126, 87, 169, 127, 125, 117, + 104, 111, 143, 124, 144, 112, 132, 131, 133, 0, + 0, 0, 159, 176, 193, 93, 0, 164, 183, 184, + 185, 186, 187, 188, 0, 0, 94, 107, 103, 142, + 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, + 97, 175, 157, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 82, 0, 120, 190, 147, 105, 177, 590, 102, 0, + 0, 0, 0, 0, 119, 0, 121, 0, 0, 158, + 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1898,12 +1830,12 @@ var yyAct = [...]int{ 0, 0, 159, 176, 193, 93, 0, 164, 183, 184, 185, 186, 187, 188, 0, 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, - 97, 175, 157, 0, 0, 0, 0, 0, 0, 0, + 97, 175, 157, 0, 0, 324, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 267, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, @@ -1922,19 +1854,113 @@ var yyAct = [...]int{ 164, 183, 184, 185, 186, 187, 188, 0, 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, 123, 148, 191, 139, 153, 97, 175, 157, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, + 0, 0, 0, 82, 102, 120, 190, 147, 105, 177, + 119, 0, 121, 0, 0, 158, 130, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 207, 0, 0, 0, 0, 0, + 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, + 204, 0, 209, 0, 0, 0, 0, 145, 0, 161, + 110, 118, 83, 89, 0, 109, 136, 150, 154, 0, + 0, 0, 98, 0, 152, 140, 174, 0, 141, 151, + 122, 166, 146, 173, 181, 182, 163, 180, 189, 84, + 162, 172, 96, 155, 86, 170, 160, 128, 114, 115, + 85, 0, 149, 101, 106, 100, 137, 167, 168, 99, + 192, 90, 179, 88, 91, 178, 135, 165, 171, 129, + 126, 87, 169, 127, 125, 117, 104, 111, 143, 124, + 144, 112, 132, 131, 133, 0, 0, 0, 159, 176, + 193, 93, 0, 164, 183, 184, 185, 186, 187, 188, + 0, 0, 94, 107, 103, 142, 134, 92, 113, 156, + 116, 123, 148, 191, 139, 153, 97, 175, 157, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, + 0, 0, 0, 0, 0, 0, 82, 102, 120, 190, + 147, 105, 177, 119, 0, 121, 0, 0, 158, 130, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, + 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 82, 0, 120, 190, 147, 105, 177, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 108, 0, 0, 0, 209, 0, 0, 0, 0, + 145, 0, 161, 110, 118, 83, 89, 0, 109, 136, + 150, 154, 0, 0, 0, 98, 0, 152, 140, 174, + 0, 141, 151, 122, 166, 146, 173, 181, 182, 163, + 180, 189, 84, 162, 172, 96, 155, 86, 170, 160, + 128, 114, 115, 85, 0, 149, 101, 106, 100, 137, + 167, 168, 99, 192, 90, 179, 88, 91, 178, 135, + 165, 171, 129, 126, 87, 169, 127, 125, 117, 104, + 111, 143, 124, 144, 112, 132, 131, 133, 0, 0, + 0, 159, 176, 193, 93, 0, 164, 183, 184, 185, + 186, 187, 188, 0, 0, 94, 107, 103, 142, 134, + 92, 113, 156, 116, 123, 148, 191, 139, 153, 97, + 175, 157, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 138, 0, 0, 0, 0, 0, 0, 0, 82, + 102, 120, 190, 147, 105, 177, 119, 0, 121, 0, + 0, 158, 130, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 207, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 108, 0, 0, 0, 209, 0, + 0, 0, 0, 145, 0, 161, 110, 118, 83, 89, + 0, 109, 136, 150, 154, 0, 0, 0, 98, 0, + 152, 140, 174, 0, 141, 151, 122, 166, 146, 173, + 181, 182, 163, 180, 189, 84, 162, 172, 96, 155, + 86, 170, 160, 128, 114, 115, 85, 0, 149, 101, + 106, 100, 137, 167, 168, 99, 192, 90, 179, 88, + 91, 178, 135, 165, 171, 129, 126, 87, 169, 127, + 125, 117, 104, 111, 143, 124, 144, 112, 132, 131, + 133, 0, 0, 0, 159, 176, 193, 93, 0, 164, + 183, 184, 185, 186, 187, 188, 0, 0, 94, 107, + 103, 142, 134, 92, 113, 156, 116, 123, 148, 191, + 139, 153, 97, 175, 157, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, + 0, 0, 82, 102, 120, 190, 147, 105, 177, 119, + 0, 121, 0, 0, 158, 130, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 267, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, + 0, 209, 0, 0, 0, 0, 145, 0, 161, 110, + 118, 83, 89, 0, 109, 136, 150, 154, 0, 0, + 0, 98, 0, 152, 140, 174, 0, 141, 151, 122, + 166, 146, 173, 181, 182, 163, 180, 189, 84, 162, + 172, 96, 155, 86, 170, 160, 128, 114, 115, 85, + 0, 149, 101, 106, 100, 137, 167, 168, 99, 192, + 90, 179, 88, 91, 178, 135, 165, 171, 129, 126, + 87, 169, 127, 125, 117, 104, 111, 143, 124, 144, + 112, 132, 131, 133, 0, 0, 0, 159, 176, 193, + 93, 0, 164, 183, 184, 185, 186, 187, 188, 0, + 0, 94, 107, 103, 142, 134, 92, 113, 156, 116, + 123, 148, 191, 139, 153, 97, 175, 157, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 82, 0, 120, 190, 147, + 105, 177, } var yyPact = [...]int{ - 1854, -1000, -193, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 110, -1000, -191, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 894, 922, -1000, -1000, -1000, -1000, -1000, -1000, - 218, 7888, 20, 87, -31, 11175, 86, 119, 11641, -1000, - -3, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -81, -94, - -1000, 715, -1000, -1000, -1000, -1000, -1000, 867, 892, 759, - 870, 796, -1000, 6206, 58, 58, 10942, 5462, -1000, -1000, - 207, 11641, 82, 11641, -163, 55, 55, 55, -1000, -1000, + -1000, -1000, 927, 959, -1000, -1000, -1000, -1000, -1000, -1000, + 306, 8140, 45, 143, -26, 11427, 141, 1728, 11893, -1000, + 11, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -106, -107, + -1000, 739, -1000, -1000, -1000, -1000, -1000, 906, 924, 776, + 899, 812, -1000, 6458, 93, 93, 11194, 5466, -1000, -1000, + 277, 11893, 132, 11893, -163, 102, 102, 102, -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, @@ -1946,21 +1972,21 @@ 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, -1000, -1000, -1000, 85, 11641, 201, -1000, 11641, 53, - 478, 53, 53, 53, 11641, -1000, 137, -1000, -1000, -1000, - 11641, 476, 819, 3374, 33, 3374, -1000, 3374, 3374, -1000, - 3374, 3, 3374, -75, 904, -1000, -1000, -1000, -1000, -50, - -1000, 3374, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 508, 832, 6705, 6705, 894, - -1000, 715, -1000, -1000, -1000, 820, -1000, -1000, 275, 911, - -1000, 7655, 134, -1000, 6705, 1528, 708, -1000, -1000, 708, - -1000, -1000, 122, -1000, -1000, 7183, 7183, 7183, 7183, 7183, - 7183, 7183, 7183, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 708, -1000, 6457, - 708, 708, 708, 708, 708, 708, 708, 708, 6705, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, - 708, 708, 10709, 9537, 11641, 504, -1000, 686, 5201, -91, - -1000, -1000, -1000, 204, 9304, -1000, -1000, -1000, 818, -1000, + -1000, -1000, -1000, -1000, 140, 11893, 236, -1000, 11893, 96, + 582, 96, 96, 96, 11893, -1000, 177, -1000, -1000, -1000, + 11893, 551, 849, 3378, 38, 3378, -1000, 3378, 3378, -1000, + 3378, 17, 3378, -70, 942, -1000, -1000, -1000, -1000, -43, + -1000, 3378, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 453, 866, 6957, 6957, 927, + -1000, 739, -1000, -1000, -1000, 844, -1000, -1000, 304, 948, + -1000, 7907, 174, -1000, 6957, 1630, 633, -1000, -1000, 633, + -1000, -1000, 155, -1000, -1000, 7435, 7435, 7435, 7435, 7435, + 7435, 7435, 7435, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 633, -1000, 6709, + 633, 633, 633, 633, 633, 633, 633, 633, 6957, 633, + 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, + 633, 633, 10961, 9789, 11893, 666, -1000, 714, 5205, -97, + -1000, -1000, -1000, 248, 9556, -1000, -1000, -1000, 848, -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, @@ -1970,129 +1996,129 @@ 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, -1000, -1000, 598, 11641, -1000, 2036, -1000, 471, 3374, - 67, 463, 257, 460, 11641, 11641, 3374, 12, 41, 84, - 11641, 706, 65, 11641, 856, 763, 11641, 448, 444, -1000, - 4940, -1000, 3374, 3374, -1000, -1000, -1000, 3374, 3374, 3374, - 3374, 3374, 3374, -1000, -1000, -1000, -1000, 3374, 3374, -1000, - 909, 256, -1000, -1000, -1000, -1000, 6705, -1000, 762, -1000, - -1000, -1000, -1000, -1000, -1000, 917, 177, 430, 133, 695, - -1000, 371, 867, 508, 796, 9065, 773, -1000, -1000, 11641, - -1000, 6705, 6705, 339, -1000, 10469, -1000, -1000, 3896, 168, - 7183, 351, 285, 7183, 7183, 7183, 7183, 7183, 7183, 7183, - 7183, 7183, 7183, 7183, 7183, 7183, 7183, 7183, 396, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 442, -1000, 715, - 525, 525, 148, 148, 148, 148, 148, 148, 148, 7422, - 5710, 508, 550, 281, 6457, 6206, 6206, 6705, 6705, 10236, - 10003, 6206, 860, 227, 281, 11874, -1000, 508, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 6206, 6206, 6206, 6206, 24, - 11641, -1000, 615, 700, -1000, -1000, -1000, 858, 8599, 8832, - 24, 643, 9537, 11641, -1000, -1000, 4679, 686, -91, 678, - -1000, -130, -103, 2566, 124, -1000, -1000, -1000, -1000, 3113, - 172, 554, 316, -64, -1000, -1000, -1000, 718, -1000, 718, - 718, 718, 718, -32, -32, -32, -32, -1000, -1000, -1000, - -1000, -1000, 742, 741, -1000, 718, 718, 718, -1000, -1000, + -1000, -1000, -1000, 615, 11893, -1000, 2045, -1000, 520, 3378, + 117, 509, 284, 507, 11893, 11893, 3378, 40, 56, 137, + 11893, 717, 111, 11893, 894, 785, 11893, 501, 487, -1000, + 4944, -1000, 3378, 3378, -1000, -1000, -1000, 3378, 3378, 3378, + 11893, 3378, 3378, -1000, -1000, -1000, -1000, 3378, 3378, -1000, + 947, 296, -1000, -1000, -1000, -1000, 6957, -1000, 784, -1000, + -1000, -1000, -1000, -1000, -1000, 954, 203, 430, 172, 716, + -1000, 386, 906, 453, 812, 9317, 795, -1000, -1000, 11893, + -1000, 6957, 6957, 499, -1000, 10721, -1000, -1000, 3900, 213, + 7435, 388, 303, 7435, 7435, 7435, 7435, 7435, 7435, 7435, + 7435, 7435, 7435, 7435, 7435, 7435, 7435, 7435, 384, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 478, -1000, 739, + 632, 632, 189, 189, 189, 189, 189, 189, 189, 7674, + 5962, 453, 613, 328, 6709, 6458, 6458, 6957, 6957, 10488, + 10255, 6458, 901, 226, 328, 12126, -1000, 453, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 6458, 6458, 6458, 6458, 52, + 11893, -1000, 709, 752, -1000, -1000, -1000, 896, 8851, 9084, + 52, 695, 9789, 11893, -1000, -1000, 4683, 714, -97, 704, + -1000, -130, -124, 5714, 184, -1000, -1000, -1000, -1000, 3117, + 176, 627, 346, -64, -1000, -1000, -1000, 750, -1000, 750, + 750, 750, 750, -34, -34, -34, -34, -1000, -1000, -1000, + -1000, -1000, 769, 768, -1000, 750, 750, 750, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 739, 739, 739, 724, 724, 744, - -1000, 11641, 3374, 854, 3374, -1000, 108, -1000, 11408, 11408, - 11641, 11641, 113, 11641, 11641, 684, -1000, 11641, 3374, -1000, + -1000, -1000, -1000, -1000, 766, 766, 766, 758, 758, 764, + -1000, 11893, 3378, 890, 3378, -1000, 92, -1000, 11660, 11660, + 11893, 11893, 150, 11893, 11893, 712, -1000, 11893, 3378, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 11641, 288, 11641, 11641, 281, 11641, - -1000, 802, 6705, 6705, 4418, 6705, -1000, -1000, -1000, 832, - -1000, 860, 886, -1000, 812, 809, 6206, -1000, -1000, 168, - 230, -1000, -1000, 397, -1000, -1000, -1000, -1000, 132, 708, - -1000, 2052, -1000, -1000, -1000, -1000, 351, 7183, 7183, 7183, - 451, 2052, 2193, 999, 393, 148, 265, 265, 144, 144, - 144, 144, 144, 329, 329, -1000, -1000, -1000, 508, -1000, - -1000, -1000, 508, 6206, 680, -1000, -1000, 6705, -1000, 508, - 539, 539, 386, 255, 683, 682, -1000, 127, 679, 658, - 539, 6206, 242, -1000, 6705, 508, -1000, 539, 508, 539, - 539, 665, 708, -1000, 11874, 9537, 9537, 9537, 9537, 9537, - -1000, 785, 784, -1000, 777, 775, 786, 11641, -1000, 546, - 8599, 136, 708, -1000, 9770, -1000, -1000, 903, 9537, 596, - -1000, -1000, 678, -91, -95, -1000, -1000, -1000, -1000, 281, - -1000, 423, 671, 2852, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 737, 424, -1000, 843, 166, 165, 417, 842, -1000, - -1000, -1000, 823, -1000, 262, -77, -1000, -1000, 374, -32, - -32, -1000, -1000, 124, 817, 124, 124, 124, 403, 403, - -1000, -1000, -1000, -1000, 357, -1000, -1000, -1000, 354, -1000, - 760, 11408, 3374, -1000, -1000, -1000, -1000, 250, 250, 219, + -1000, -1000, -1000, -1000, 11893, 307, 11893, 11893, 328, 11893, + -1000, 821, 6957, 6957, 4422, 6957, -1000, -1000, -1000, 866, + -1000, 901, 930, -1000, 841, 839, 6458, -1000, -1000, 213, + 266, -1000, -1000, 354, -1000, -1000, -1000, -1000, 170, 633, + -1000, 2252, -1000, -1000, -1000, -1000, 388, 7435, 7435, 7435, + 88, 2252, 2237, 831, 549, 189, 273, 273, 186, 186, + 186, 186, 186, 330, 330, -1000, -1000, -1000, 453, -1000, + -1000, -1000, 453, 6458, 706, -1000, -1000, 6957, -1000, 453, + 550, 550, 366, 393, 732, 723, -1000, 166, 722, 718, + 550, 6458, 290, -1000, 6957, 453, -1000, 550, 453, 550, + 550, 672, 633, -1000, 12126, 9789, 9789, 9789, 9789, 9789, + -1000, 809, 806, -1000, 799, 798, 805, 11893, -1000, 581, + 8851, 188, 633, -1000, 10022, -1000, -1000, 941, 9789, 699, + -1000, -1000, 704, -97, -127, -1000, -1000, -1000, -1000, 328, + -1000, 417, 702, 2856, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 765, 476, -1000, 872, 222, 223, 474, 871, -1000, + -1000, -1000, 852, -1000, 294, -66, -1000, -1000, 402, -34, + -34, -1000, -1000, 184, 847, 184, 184, 184, 446, 446, + -1000, -1000, -1000, -1000, 400, -1000, -1000, -1000, 376, -1000, + 782, 11660, 3378, -1000, -1000, -1000, -1000, 275, 275, 219, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 22, 735, -1000, -1000, -1000, 11, 10, 64, -1000, - 3374, -1000, 256, -1000, 391, 6705, -1000, -1000, -1000, 799, - 281, 281, 126, -1000, -1000, 11641, -1000, -1000, -1000, -1000, - 623, -1000, -1000, -1000, 3635, 6206, -1000, 451, 2052, 1357, - -1000, 7183, 7183, -1000, -1000, 539, 6206, 281, -1000, -1000, - -1000, 72, 396, 72, 7183, 7183, 7183, 7183, 4418, 7183, - 7183, 7183, 7183, -173, 642, 211, -1000, 6705, 313, -1000, - -1000, -1000, -1000, -1000, 752, 11874, 708, -1000, 8360, 11408, - 651, -1000, 200, 700, 734, 750, 711, -1000, -1000, -1000, - -1000, 781, -1000, 778, -1000, -1000, -1000, -1000, -1000, 80, - 79, 78, 11408, -1000, 894, 6705, 596, -1000, -1000, -1000, - -138, -144, -1000, -1000, -1000, 3113, -1000, 3113, 11408, 40, - -1000, 417, 417, -1000, -1000, -1000, 731, 749, 71, -1000, - -1000, -1000, 540, 124, 124, -1000, 163, -1000, -1000, -1000, - 518, -1000, 515, 657, 511, 11641, -1000, -1000, -1000, -1000, + -1000, 51, 733, -1000, -1000, -1000, 23, 21, 109, -1000, + 3378, -1000, 296, -1000, 441, 6957, -1000, -1000, -1000, 819, + 328, 328, 165, -1000, -1000, 11893, -1000, -1000, -1000, -1000, + 687, -1000, -1000, -1000, 3639, 6458, -1000, 88, 2252, 1923, + -1000, 7435, 7435, -1000, -1000, 550, 6458, 328, -1000, -1000, + -1000, 138, 384, 138, 7435, 7435, 7435, 7435, 4422, 7435, + 7435, 7435, 7435, -173, 713, 271, -1000, 6957, 439, -1000, + -1000, -1000, -1000, -1000, 780, 12126, 633, -1000, 8612, 11660, + 701, -1000, 239, 752, 763, 779, 863, -1000, -1000, -1000, + -1000, 800, -1000, 786, -1000, -1000, -1000, -1000, -1000, 131, + 124, 121, 11660, -1000, 927, 6957, 699, -1000, -1000, -1000, + -141, -147, -1000, -1000, -1000, 3117, -1000, 3117, 11660, 69, + -1000, 474, 474, -1000, -1000, -1000, 759, 775, 84, -1000, + -1000, -1000, 618, 184, 184, -1000, 240, -1000, -1000, -1000, + 541, -1000, 539, 700, 537, 11893, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 11641, -1000, -1000, -1000, -1000, -1000, 11408, -181, - 399, 11408, 11408, 11641, -1000, 288, -1000, 281, -1000, 4157, - -1000, 903, 9537, -1000, -1000, 508, -1000, 7183, 2052, 2052, - -1000, -1000, 508, 718, 718, -1000, 718, 724, -1000, 718, - -12, 718, -13, 508, 508, 1843, 2151, 1671, 2025, -1000, - 1635, 1992, 1320, 1974, 708, -170, -1000, 281, 6705, -1000, - 845, 622, 647, -1000, -1000, 5958, 508, 506, 103, 486, - -1000, 894, 11874, 6705, -1000, -1000, 6705, 723, -1000, 6705, - -1000, -1000, -1000, 708, 708, 708, 486, 867, 281, -1000, - -1000, -1000, -1000, 2852, -1000, 484, -1000, 718, -1000, -1000, - -1000, 11408, -56, 916, -1000, -1000, -1000, -1000, 717, -1000, - -1000, -1000, -1000, -1000, -1000, -32, 383, -32, 350, -1000, - 333, 3374, -1000, -1000, -1000, -1000, 849, -1000, 4157, -1000, - -1000, 716, -1000, -1000, -1000, 900, 654, -1000, 2052, -1000, + -1000, -1000, 11893, -1000, -1000, -1000, -1000, -1000, 11660, -181, + 469, 11660, 11660, 11893, -1000, 307, -1000, 328, -1000, 4161, + -1000, 941, 9789, -1000, -1000, 453, -1000, 7435, 2252, 2252, + -1000, -1000, 453, 750, 750, -1000, 750, 758, -1000, 750, + -1, 750, -13, 453, 453, 1804, 2034, 1357, 1869, -1000, + 452, 1830, 394, 1671, 633, -170, -1000, 328, 6957, -1000, + 867, 657, 689, -1000, -1000, 6210, 453, 534, 162, 532, + -1000, 927, 12126, 6957, -1000, -1000, 6957, 757, -1000, 6957, + -1000, -1000, -1000, 633, 633, 633, 532, 906, 328, -1000, + -1000, -1000, -1000, 2856, -1000, 528, -1000, 750, -1000, -1000, + -1000, 11660, -59, 953, -1000, -1000, -1000, -1000, 738, -1000, + -1000, -1000, -1000, -1000, -1000, -34, 425, -34, 365, -1000, + 356, 3378, -1000, -1000, -1000, -1000, 878, -1000, 4161, -1000, + -1000, 737, -1000, -1000, -1000, 937, 697, -1000, 2252, -1000, -1000, 100, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 7183, 7183, -1000, 7183, 7183, -1000, 7183, 7183, -1000, - 7183, 7183, 7183, 508, 379, 281, 830, -1000, 708, -1000, - -1000, 670, 11408, 11408, -1000, 11408, 867, -1000, 281, 281, - 11408, 281, 11408, 11408, 11408, 8121, -1000, 131, 11408, -1000, - 482, -1000, 185, -1000, -153, 534, 124, -1000, 124, 524, - 519, -1000, 708, 648, -1000, 199, 11408, 898, 891, -1000, - -1000, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 17, - -1000, -1000, 914, -1000, 708, -1000, 715, 83, -1000, -1000, - -1000, 467, 458, 458, 458, 136, 131, -1000, 395, 176, - 378, -1000, 37, 11408, 266, 829, -1000, 827, 714, -1000, - -1000, -1000, -1000, -1000, 21, 4157, 3113, 456, -1000, 6705, - 6705, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 508, - 34, -184, 11874, 647, 508, 11408, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 302, -1000, -1000, 11641, -1000, -1000, 340, - -1000, -1000, 512, 452, -1000, 11408, -1000, -1000, 735, 281, - 628, -1000, 795, -179, -187, 586, -1000, -1000, -1000, 713, - -1000, -1000, -1000, 21, 808, -181, -1000, 793, -1000, 11408, - -1000, 18, -1000, -182, 428, 16, -185, 748, 708, -189, - 747, -1000, 908, 6944, -1000, -1000, 910, 152, 152, 1858, - 508, -1000, -1000, -1000, 44, 326, -1000, -1000, -1000, -1000, + -1000, 7435, 7435, -1000, 7435, 7435, -1000, 7435, 7435, -1000, + 7435, 7435, 7435, 453, 418, 328, 870, -1000, 633, -1000, + -1000, 670, 11660, 11660, -1000, 11660, 906, -1000, 328, 328, + 11660, 328, 11660, 11660, 11660, 8373, -1000, 183, 11660, -1000, + 519, -1000, 212, -1000, -151, 607, 184, -1000, 184, 603, + 599, -1000, 633, 694, -1000, 228, 11660, 933, 909, -1000, + -1000, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 30, + -1000, -1000, 952, -1000, 633, -1000, 739, 149, -1000, -1000, + -1000, 515, 506, 506, 506, 188, 183, -1000, 460, 227, + 408, -1000, 66, 11660, 312, 860, -1000, 855, 734, -1000, + -1000, -1000, -1000, -1000, 50, 4161, 3117, 486, -1000, 6957, + 6957, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 453, + 34, -184, 12126, 689, 453, 11660, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 349, -1000, -1000, 11893, -1000, -1000, 331, + -1000, -1000, 483, 482, -1000, 11660, -1000, -1000, 733, 328, + 680, -1000, 818, -179, -187, 642, -1000, -1000, -1000, 731, + -1000, -1000, -1000, 50, 837, -181, -1000, 816, -1000, 11660, + -1000, 47, -1000, -182, 459, 44, -185, 774, 633, -188, + 772, -1000, 946, 7196, -1000, -1000, 951, 192, 192, 1442, + 453, -1000, -1000, -1000, 80, 415, -1000, -1000, -1000, -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1146, 33, 449, 1145, 1144, 1143, 1142, 1141, 1139, - 1138, 1136, 1135, 1130, 1126, 1125, 1123, 1116, 1110, 1109, - 1108, 1092, 1091, 1089, 1088, 1087, 99, 1086, 1085, 1081, - 71, 1078, 60, 1077, 1076, 46, 76, 50, 41, 391, - 1072, 35, 53, 59, 1071, 38, 1070, 1069, 64, 1068, - 48, 1065, 1063, 201, 1060, 1059, 10, 30, 1058, 1057, - 1054, 1052, 98, 1042, 1050, 1049, 1048, 1046, 1045, 1044, - 51, 8, 12, 47, 19, 1043, 416, 6, 1040, 52, - 1039, 1036, 1033, 1032, 16, 1030, 57, 1027, 18, 56, - 1024, 15, 65, 28, 20, 7, 69, 58, 1018, 14, - 61, 54, 1017, 1016, 411, 1014, 1012, 42, 1011, 1009, - 26, 154, 326, 1008, 1007, 1004, 1002, 37, 0, 504, - 418, 63, 1001, 999, 997, 1597, 70, 49, 17, 988, - 55, 1216, 40, 987, 985, 31, 981, 980, 979, 978, - 971, 970, 969, 84, 966, 964, 963, 24, 22, 962, - 961, 62, 23, 958, 957, 955, 44, 66, 954, 953, - 45, 29, 950, 949, 948, 947, 946, 27, 9, 943, - 13, 941, 21, 940, 25, 939, 4, 935, 11, 934, - 3, 933, 5, 43, 1, 932, 2, 931, 930, 311, - 701, 929, 928, 107, + 0, 1168, 33, 453, 1167, 1166, 1165, 1162, 1159, 1158, + 1157, 1156, 1154, 1153, 1151, 1145, 1144, 1143, 1142, 1141, + 1139, 1138, 1137, 1136, 1131, 1130, 139, 1126, 1125, 1123, + 61, 1116, 60, 1112, 1109, 45, 174, 53, 41, 89, + 1108, 35, 57, 62, 1107, 37, 1106, 1104, 66, 1103, + 51, 1102, 1101, 1615, 1100, 1099, 22, 30, 1098, 1097, + 1096, 1095, 90, 1042, 1094, 1092, 1091, 1089, 1088, 1086, + 52, 7, 11, 18, 19, 1085, 340, 9, 1081, 50, + 1078, 1077, 1076, 1072, 21, 1071, 54, 1070, 20, 56, + 1069, 15, 64, 31, 23, 6, 73, 58, 1068, 17, + 59, 48, 1066, 1065, 456, 1063, 1062, 42, 1055, 1054, + 24, 162, 403, 1053, 1050, 1049, 1048, 38, 0, 504, + 418, 70, 1046, 1045, 1043, 1597, 63, 49, 16, 1041, + 55, 1408, 43, 1039, 1037, 40, 1035, 1033, 1032, 1031, + 1030, 1027, 1024, 84, 1019, 1018, 1017, 25, 13, 1016, + 1014, 71, 27, 1012, 1011, 1009, 44, 65, 1008, 1003, + 46, 28, 1002, 1001, 997, 994, 991, 26, 12, 988, + 14, 987, 10, 985, 29, 981, 4, 980, 8, 979, + 3, 978, 5, 47, 1, 975, 2, 971, 970, 311, + 701, 969, 957, 69, } var yyR1 = [...]int{ @@ -2343,7 +2369,7 @@ var yyChk = [...]int{ 170, 171, 172, 173, 175, 176, 177, 178, 179, 57, -131, 125, 57, 74, 57, -53, -53, -131, 157, 157, 123, 123, -53, 55, 126, -48, 23, 52, -53, 57, - 57, -126, -125, -117, -131, -131, -131, -131, -131, -131, + 57, -126, -125, -117, -131, -131, -131, -131, -131, -53, -131, -131, -131, -131, 11, -107, 11, 92, -39, 52, 9, 92, 55, 18, 112, 55, -87, 24, 25, -88, -190, -32, -64, -119, 60, 63, -31, 43, -53, -39, @@ -2467,7 +2493,7 @@ var yyDef = [...]int{ 0, 0, 0, 0, 0, 0, 849, 0, 0, 0, 0, 246, 0, 0, 0, 0, 0, 0, 0, 254, 0, 256, 849, 849, 259, 850, 851, 849, 849, 849, - 849, 849, 849, 266, 268, 269, 271, 849, 849, 273, + 0, 849, 849, 266, 268, 269, 271, 849, 849, 273, 0, 294, 292, 293, 288, 289, 0, 283, 284, 287, 314, 315, 30, 847, 24, 0, 0, 565, 0, 557, 558, 561, 564, 29, 324, 0, 329, 328, 320, 0, @@ -4419,7 +4445,7 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1490 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName} } case 264: yyDollar = yyS[yypt-4 : yypt+1] diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 07dc55ca4c7..ece79617906 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -1486,9 +1486,9 @@ show_statement: { $$ = &Show{Type: string($2) + " " + string($3)} } -| SHOW CREATE TABLE ddl_skip_to_end +| SHOW CREATE TABLE table_name { - $$ = &Show{Type: string($2) + " " + string($3)} + $$ = &Show{Type: string($2) + " " + string($3), Table: $4} } | SHOW CREATE TRIGGER ddl_skip_to_end { diff --git a/go/vt/vtgate/executor.go b/go/vt/vtgate/executor.go index 7eda9beae40..1b184f13e81 100644 --- a/go/vt/vtgate/executor.go +++ b/go/vt/vtgate/executor.go @@ -765,6 +765,25 @@ func (e *Executor) handleShow(ctx context.Context, safeSession *SafeSession, sql Rows: rows, RowsAffected: 2, }, nil + case "create table": + if destKeyspace == "" && show.HasTable() { + // For "show create table", if there isn't a targeted keyspace already + // we can either get a keyspace from the statement or potentially from + // the vschema. + + if !show.Table.Qualifier.IsEmpty() { + // Explicit keyspace was passed. Use that for targeting but remove from the query itself. + destKeyspace = show.Table.Qualifier.String() + show.Table.Qualifier = sqlparser.NewTableIdent("") + sql = sqlparser.String(show) + } else { + // No keyspace was indicated. Try to find one using the vschema. + tbl, err := e.VSchema().FindTable("", show.Table.Name.String()) + if err == nil { + destKeyspace = tbl.Keyspace.Name + } + } + } case sqlparser.KeywordString(sqlparser.TABLES): if show.ShowTablesOpt != nil && show.ShowTablesOpt.DbName != "" { if destKeyspace == "" { diff --git a/go/vt/vtgate/executor_test.go b/go/vt/vtgate/executor_test.go index df2e6d1e335..453c0b5ffc8 100644 --- a/go/vt/vtgate/executor_test.go +++ b/go/vt/vtgate/executor_test.go @@ -668,6 +668,34 @@ func TestExecutorShow(t *testing.T) { t.Errorf("%v:\n%+v, want\n%+v", query, qr, wantqr) } + qr, err = executor.Execute(context.Background(), "TestExecute", session, "show create table unknown_table", nil) + if err != errNoKeyspace { + t.Errorf("Got: %v. Want: %v", err, errNoKeyspace) + } + + // SHOW CREATE table using vschema to find keyspace. + _, err = executor.Execute(context.Background(), "TestExecute", session, "show create table user_seq", nil) + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + + lastQuery := sbclookup.Queries[len(sbclookup.Queries)-1].Sql + wantQuery := "show create table user_seq" + if lastQuery != wantQuery { + t.Errorf("Got: %v. Want: %v", lastQuery, wantQuery) + } + + // SHOW CREATE table with query-provided keyspace + _, err = executor.Execute(context.Background(), "TestExecute", session, fmt.Sprintf("show create table %v.unknown", KsTestUnsharded), nil) + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + lastQuery = sbclookup.Queries[len(sbclookup.Queries)-1].Sql + wantQuery = "show create table unknown" + if lastQuery != wantQuery { + t.Errorf("Got: %v. Want: %v", lastQuery, wantQuery) + } + for _, query := range []string{"show charset", "show charset like '%foo'", "show character set", "show character set like '%foo'"} { qr, err := executor.Execute(context.Background(), "TestExecute", session, query, nil) if err != nil { diff --git a/go/vt/vtgate/vindexes/vschema.go b/go/vt/vtgate/vindexes/vschema.go index b140933cb38..ece6f1e58b1 100644 --- a/go/vt/vtgate/vindexes/vschema.go +++ b/go/vt/vtgate/vindexes/vschema.go @@ -301,7 +301,7 @@ func resolveAutoIncrement(source *vschemapb.SrvVSchema, vschema *VSchema) { seq, err := vschema.findQualified(table.AutoIncrement.Sequence) if err != nil { ksvschema.Error = fmt.Errorf("cannot resolve sequence %s: %v", table.AutoIncrement.Sequence, err) - break + continue } t.AutoIncrement.Sequence = seq } diff --git a/go/vt/vtgate/vindexes/vschema_test.go b/go/vt/vtgate/vindexes/vschema_test.go index 724573cb98e..19606e634a9 100644 --- a/go/vt/vtgate/vindexes/vschema_test.go +++ b/go/vt/vtgate/vindexes/vschema_test.go @@ -1441,6 +1441,13 @@ func TestSequence(t *testing.T) { func TestBadSequence(t *testing.T) { bad := vschemapb.SrvVSchema{ Keyspaces: map[string]*vschemapb.Keyspace{ + "unsharded": { + Tables: map[string]*vschemapb.Table{ + "valid_seq": { + Type: "sequence", + }, + }, + }, "sharded": { Sharded: true, Vindexes: map[string]*vschemapb.Vindex{ @@ -1458,7 +1465,19 @@ func TestBadSequence(t *testing.T) { }, AutoIncrement: &vschemapb.AutoIncrement{ Column: "c1", - Sequence: "seq", + Sequence: "invalid_seq", + }, + }, + "t2": { + ColumnVindexes: []*vschemapb.ColumnVindex{ + { + Column: "c1", + Name: "stfu1", + }, + }, + AutoIncrement: &vschemapb.AutoIncrement{ + Column: "c1", + Sequence: "valid_seq", }, }, }, @@ -1467,10 +1486,25 @@ func TestBadSequence(t *testing.T) { } got, _ := BuildVSchema(&bad) err := got.Keyspaces["sharded"].Error - want := "cannot resolve sequence seq: table seq not found" + want := "cannot resolve sequence invalid_seq: table invalid_seq not found" if err == nil || err.Error() != want { t.Errorf("BuildVSchema: %v, want %v", err, want) } + + t1Seq := got.Keyspaces["sharded"].Tables["t1"].AutoIncrement.Sequence + if t1Seq != nil { + t.Errorf("BuildVSchema: unexpected sequence for table t1: %v", t1Seq) + } + + // Verify that a failure to set up a sequence for t1 doesn't prevent setting up + // a sequence for t2. + t2Seq := got.Keyspaces["sharded"].Tables["t2"].AutoIncrement.Sequence + if t2Seq.Name.String() != "valid_seq" { + t.Errorf("BuildVSchema: unexpected t2 sequence name. Got: %v. Want: %v", + t2Seq.AutoIncrement.Sequence.Name, + "valid_seq", + ) + } } func TestBadSequenceName(t *testing.T) {