diff --git a/go/vt/proto/vtgate/vtgate.pb.go b/go/vt/proto/vtgate/vtgate.pb.go index 74af5414ddd..61ba91e777b 100644 --- a/go/vt/proto/vtgate/vtgate.pb.go +++ b/go/vt/proto/vtgate/vtgate.pb.go @@ -137,7 +137,9 @@ type Session struct { // post_sessions contains sessions that have to be committed last. PostSessions []*Session_ShardSession `protobuf:"bytes,10,rep,name=post_sessions,json=postSessions,proto3" json:"post_sessions,omitempty"` // last_insert_id keeps track of the last seen insert_id for this session - LastInsertId uint64 `protobuf:"varint,11,opt,name=last_insert_id,json=lastInsertId,proto3" json:"last_insert_id,omitempty"` + LastInsertId uint64 `protobuf:"varint,11,opt,name=last_insert_id,json=lastInsertId,proto3" json:"last_insert_id,omitempty"` + // found_rows keeps track of how many rows the last query returned + FoundRows uint64 `protobuf:"varint,11,opt,name=found_rows,json=foundRows,proto3" json:"found_rows,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` diff --git a/go/vt/sqlparser/expression_rewriting.go b/go/vt/sqlparser/expression_rewriting.go index fb934f266cd..667c3eb6667 100644 --- a/go/vt/sqlparser/expression_rewriting.go +++ b/go/vt/sqlparser/expression_rewriting.go @@ -29,17 +29,33 @@ func PrepareAST(in Statement, bindVars map[string]*querypb.BindVariable, prefix return RewriteAST(in) } +// BindVarNeeds represents the bind vars that need to be provided as the result of expression rewriting. +type BindVarNeeds struct { + NeedLastInsertID bool + NeedDatabase bool + NeedFoundRows bool +} + // RewriteAST rewrites the whole AST, replacing function calls and adding column aliases to queries func RewriteAST(in Statement) (*RewriteASTResult, error) { - er := new(expressionRewriter) + er := newExpressionRewriter() er.shouldRewriteDatabaseFunc = shouldRewriteDatabaseFunc(in) Rewrite(in, er.goingDown, nil) - return &RewriteASTResult{ - AST: in, - NeedLastInsertID: er.lastInsertID, - NeedDatabase: er.database, - }, nil + r := &RewriteASTResult{ + AST: in, + } + if _, ok := er.bindVars[LastInsertIDName]; ok { + r.NeedLastInsertID = true + } + if _, ok := er.bindVars[DBVarName]; ok { + r.NeedDatabase = true + } + if _, ok := er.bindVars[FoundRowsName]; ok { + r.NeedFoundRows = true + } + + return r, nil } func shouldRewriteDatabaseFunc(in Statement) bool { @@ -63,22 +79,29 @@ func shouldRewriteDatabaseFunc(in Statement) bool { // RewriteASTResult contains the rewritten ast and meta information about it type RewriteASTResult struct { - AST Statement - NeedLastInsertID bool - NeedDatabase bool + BindVarNeeds + AST Statement // The rewritten AST } type expressionRewriter struct { - lastInsertID, database bool + bindVars map[string]struct{} shouldRewriteDatabaseFunc bool err error } +func newExpressionRewriter() *expressionRewriter { + return &expressionRewriter{bindVars: make(map[string]struct{})} +} + const ( //LastInsertIDName is a reserved bind var name for last_insert_id() LastInsertIDName = "__lastInsertId" + //DBVarName is a reserved bind var name for database() DBVarName = "__vtdbname" + + //FoundRowsName is a reserved bind var name for found_rows() + FoundRowsName = "__vtfrows" ) func (er *expressionRewriter) goingDown(cursor *Cursor) bool { @@ -87,7 +110,7 @@ func (er *expressionRewriter) goingDown(cursor *Cursor) bool { if node.As.IsEmpty() { buf := NewTrackedBuffer(nil) node.Expr.Format(buf) - inner := new(expressionRewriter) + inner := newExpressionRewriter() inner.shouldRewriteDatabaseFunc = er.shouldRewriteDatabaseFunc tmp := Rewrite(node.Expr, inner.goingDown, nil) newExpr, ok := tmp.(Expr) @@ -96,11 +119,12 @@ func (er *expressionRewriter) goingDown(cursor *Cursor) bool { return false } node.Expr = newExpr - er.database = er.database || inner.database - er.lastInsertID = er.lastInsertID || inner.lastInsertID if inner.didAnythingChange() { node.As = NewColIdent(buf.String()) } + for k := range inner.bindVars { + er.needBindVarFor(k) + } return false } @@ -111,22 +135,39 @@ func (er *expressionRewriter) goingDown(cursor *Cursor) bool { er.err = vterrors.New(vtrpc.Code_UNIMPLEMENTED, "Argument to LAST_INSERT_ID() not supported") } else { cursor.Replace(bindVarExpression(LastInsertIDName)) - er.lastInsertID = true + er.needBindVarFor(LastInsertIDName) } - case node.Name.EqualString("database") && er.shouldRewriteDatabaseFunc: + case er.shouldRewriteDatabaseFunc && + (node.Name.EqualString("database") || + node.Name.EqualString("schema")): if len(node.Exprs) > 0 { - er.err = vterrors.New(vtrpc.Code_INVALID_ARGUMENT, "Syntax error. DATABASE() takes no arguments") + er.err = vterrors.Errorf(vtrpc.Code_INVALID_ARGUMENT, "Syntax error. %s() takes no arguments", node.Name.String()) } else { cursor.Replace(bindVarExpression(DBVarName)) - er.database = true + er.needBindVarFor(DBVarName) + } + case node.Name.EqualString("found_rows"): + if len(node.Exprs) > 0 { + er.err = vterrors.New(vtrpc.Code_INVALID_ARGUMENT, "Arguments to FOUND_ROWS() not supported") + } else { + cursor.Replace(bindVarExpression(FoundRowsName)) + er.needBindVarFor(FoundRowsName) } } + } return true } +// instead of creating new objects, we'll reuse this one +var token = struct{}{} + +func (er *expressionRewriter) needBindVarFor(name string) { + er.bindVars[name] = token +} + func (er *expressionRewriter) didAnythingChange() bool { - return er.database || er.lastInsertID + return len(er.bindVars) > 0 } func bindVarExpression(name string) *SQLVal { diff --git a/go/vt/sqlparser/expression_rewriting_test.go b/go/vt/sqlparser/expression_rewriting_test.go index cf9eef04cef..b7dd524cbbb 100644 --- a/go/vt/sqlparser/expression_rewriting_test.go +++ b/go/vt/sqlparser/expression_rewriting_test.go @@ -23,8 +23,8 @@ import ( ) type myTestCase struct { - in, expected string - liid, db bool + in, expected string + liid, db, foundRows bool } func TestRewrites(in *testing.T) { @@ -32,7 +32,7 @@ func TestRewrites(in *testing.T) { { in: "SELECT 42", expected: "SELECT 42", - db: false, liid: false, + db: false, liid: false, foundRows: false, }, { in: "SELECT last_insert_id()", @@ -42,7 +42,7 @@ func TestRewrites(in *testing.T) { { in: "SELECT database()", expected: "SELECT :__vtdbname as `database()`", - db: true, liid: false, + db: true, liid: false, foundRows: false, }, { in: "SELECT database() from test", @@ -52,12 +52,12 @@ func TestRewrites(in *testing.T) { { in: "SELECT last_insert_id() as test", expected: "SELECT :__lastInsertId as test", - db: false, liid: true, + db: false, liid: true, foundRows: false, }, { in: "SELECT last_insert_id() + database()", expected: "SELECT :__lastInsertId + :__vtdbname as `last_insert_id() + database()`", - db: true, liid: true, + db: true, liid: true, foundRows: false, }, { in: "select (select database()) from test", @@ -72,7 +72,7 @@ func TestRewrites(in *testing.T) { { in: "select (select database() from dual) from dual", expected: "select (select :__vtdbname as `database()` from dual) as `(select database() from dual)` from dual", - db: true, liid: false, + db: true, liid: false, foundRows: false, }, { in: "select id from user where database()", @@ -82,7 +82,17 @@ func TestRewrites(in *testing.T) { { in: "select table_name from information_schema.tables where table_schema = database()", expected: "select table_name from information_schema.tables where table_schema = database()", - db: false, liid: false, + db: false, liid: false, foundRows: false, + }, + { + in: "select schema()", + expected: "select :__vtdbname as 'schema()'", + db: true, liid: false, foundRows: false, + }, + { + in: "select found_rows()", + expected: "select :__vtfrows as 'found_rows()'", + db: false, liid: false, foundRows: true, }, } @@ -101,6 +111,7 @@ func TestRewrites(in *testing.T) { require.Equal(t, s, String(result.AST)) require.Equal(t, tc.liid, result.NeedLastInsertID, "should need last insert id") require.Equal(t, tc.db, result.NeedDatabase, "should need database name") + require.Equal(t, tc.foundRows, result.NeedFoundRows, "should need found rows") }) } } diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 9501bb51815..c986277f3d2 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1451,6 +1451,12 @@ var ( input: "select match(a) against ('foo') from t", }, { input: "select match(a1, a2) against ('foo' in natural language mode with query expansion) from t", + }, { + input: "select database()", + output: "select database() from dual", + }, { + input: "select schema()", + output: "select schema() from dual", }, { input: "select title from video as v where match(v.title, v.tag) against ('DEMO' in boolean mode)", }, { @@ -1522,25 +1528,27 @@ var ( func TestValid(t *testing.T) { for _, tcase := range validSQL { - if tcase.output == "" { - tcase.output = tcase.input - } - tree, err := Parse(tcase.input) - if err != nil { - t.Errorf("Parse(%q) err: %v, want nil", tcase.input, err) - continue - } - out := String(tree) - if out != tcase.output { - t.Errorf("Parse(%q) = %q, want: %q", tcase.input, out, tcase.output) - } - // This test just exercises the tree walking functionality. - // There's no way automated way to verify that a node calls - // all its children. But we can examine code coverage and - // ensure that all walkSubtree functions were called. - Walk(func(node SQLNode) (bool, error) { - return true, nil - }, tree) + t.Run(tcase.input, func(t *testing.T) { + if tcase.output == "" { + tcase.output = tcase.input + } + tree, err := Parse(tcase.input) + if err != nil { + t.Errorf("Parse(%q) err: %v, want nil", tcase.input, err) + return + } + out := String(tree) + if out != tcase.output { + t.Errorf("Parse(%q) = %q, want: %q", tcase.input, out, tcase.output) + } + // This test just exercises the tree walking functionality. + // There's no way automated way to verify that a node calls + // all its children. But we can examine code coverage and + // ensure that all walkSubtree functions were called. + Walk(func(node SQLNode) (bool, error) { + return true, nil + }, tree) + }) } } diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index a7d1ea2a5db..3415bbfbbbe 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -804,24 +804,24 @@ var yyExca = [...]int{ 162, 302, -2, 290, -1, 322, - 113, 645, - -2, 641, - -1, 323, 113, 646, -2, 642, - -1, 391, - 83, 894, - -2, 63, + -1, 323, + 113, 647, + -2, 643, -1, 392, - 83, 812, + 83, 895, + -2, 63, + -1, 393, + 83, 813, -2, 64, - -1, 397, - 83, 781, - -2, 607, - -1, 399, - 83, 842, - -2, 609, - -1, 697, + -1, 398, + 83, 782, + -2, 608, + -1, 400, + 83, 843, + -2, 610, + -1, 699, 1, 355, 5, 355, 12, 355, @@ -845,318 +845,320 @@ var yyExca = [...]int{ 57, 355, 348, 355, -2, 373, - -1, 700, + -1, 702, 54, 44, 56, 44, -2, 48, - -1, 852, - 113, 648, - -2, 644, - -1, 1081, + -1, 854, + 113, 649, + -2, 645, + -1, 1084, 5, 30, -2, 441, - -1, 1111, + -1, 1115, 5, 29, - -2, 581, - -1, 1355, - 5, 30, -2, 582, - -1, 1408, - 5, 29, - -2, 584, - -1, 1488, + -1, 1359, 5, 30, + -2, 583, + -1, 1412, + 5, 29, -2, 585, + -1, 1492, + 5, 30, + -2, 586, } const yyPrivate = 57344 -const yyLast = 16982 +const yyLast = 16995 var yyAct = [...]int{ - 323, 1522, 1512, 1317, 1476, 653, 327, 1114, 1206, 1375, - 1388, 966, 1132, 1421, 1257, 340, 1291, 939, 1258, 551, - 57, 962, 353, 1115, 1254, 1009, 652, 3, 975, 1270, - 1264, 995, 81, 965, 301, 1229, 266, 396, 1159, 266, - 877, 888, 799, 884, 329, 815, 1138, 1185, 1072, 1176, - 713, 979, 941, 854, 584, 926, 1005, 520, 385, 590, - 937, 354, 51, 712, 390, 596, 310, 266, 81, 325, - 989, 919, 266, 694, 266, 702, 605, 387, 300, 667, - 56, 1515, 382, 1499, 1510, 1028, 906, 668, 1486, 693, - 61, 540, 1507, 1318, 1498, 1246, 1485, 1347, 525, 1027, - 261, 257, 258, 259, 956, 314, 555, 276, 1286, 1287, - 957, 958, 292, 51, 562, 1285, 63, 64, 65, 66, - 67, 306, 253, 1147, 298, 251, 1146, 255, 1032, 1148, - 573, 714, 286, 715, 574, 571, 572, 1026, 1450, 618, - 617, 627, 628, 620, 621, 622, 623, 624, 625, 626, - 619, 578, 297, 629, 1167, 988, 1230, 293, 294, 295, - 296, 1208, 365, 299, 371, 372, 369, 370, 368, 367, - 366, 1378, 557, 996, 559, 1338, 1336, 1395, 373, 374, - 291, 788, 393, 269, 566, 567, 576, 1023, 1020, 1021, - 272, 1019, 787, 1210, 1232, 785, 1509, 1506, 280, 275, - 1469, 980, 1477, 1205, 920, 556, 558, 541, 1530, 1430, - 577, 527, 1422, 255, 1209, 1211, 982, 982, 792, 260, - 254, 789, 887, 1030, 1033, 1424, 776, 786, 1234, 1202, - 1238, 278, 1233, 1526, 1231, 1204, 1280, 285, 1279, 1236, - 1278, 252, 982, 523, 530, 268, 1160, 521, 1235, 1133, - 1135, 256, 266, 1193, 641, 642, 1040, 266, 316, 1039, - 1025, 1237, 1239, 266, 270, 1458, 1358, 1090, 1215, 266, - 1087, 963, 1143, 1100, 81, 1066, 81, 81, 826, 81, - 708, 81, 1024, 1191, 609, 547, 629, 81, 823, 604, - 554, 282, 273, 1423, 283, 284, 289, 952, 1303, 619, - 274, 277, 629, 271, 288, 287, 816, 1484, 1451, 996, - 820, 1431, 1429, 981, 981, 1467, 1439, 81, 553, 978, - 976, 1029, 977, 907, 1268, 592, 1134, 521, 974, 980, - 70, 537, 1203, 593, 1201, 561, 1031, 561, 561, 981, - 561, 1524, 561, 1085, 1525, 1084, 1523, 716, 561, 1304, - 1192, 543, 544, 545, 1248, 1197, 1194, 1187, 1195, 1190, - 519, 1186, 603, 602, 1188, 1189, 71, 778, 51, 639, - 641, 642, 1165, 641, 642, 907, 861, 1097, 1196, 604, - 266, 266, 266, 638, 1472, 599, 640, 1490, 817, 81, - 859, 860, 858, 1086, 534, 81, 535, 552, 594, 536, - 627, 628, 620, 621, 622, 623, 624, 625, 626, 619, - 580, 581, 629, 1531, 651, 1384, 655, 656, 657, 658, - 659, 660, 661, 662, 663, 697, 666, 669, 669, 669, - 675, 669, 669, 675, 669, 683, 684, 685, 686, 687, - 688, 692, 698, 1383, 603, 602, 670, 672, 674, 676, - 678, 680, 681, 1532, 671, 673, 1180, 677, 679, 706, - 682, 604, 603, 602, 701, 1179, 710, 617, 627, 628, - 620, 621, 622, 623, 624, 625, 626, 619, 352, 604, - 629, 618, 617, 627, 628, 620, 621, 622, 623, 624, - 625, 626, 619, 1168, 583, 629, 622, 623, 624, 625, - 626, 619, 526, 393, 629, 1063, 1064, 1065, 602, 825, - 79, 620, 621, 622, 623, 624, 625, 626, 619, 54, - 266, 629, 829, 830, 604, 81, 250, 1492, 1468, 857, - 266, 266, 81, 81, 81, 1073, 603, 602, 266, 985, - 878, 266, 879, 1250, 266, 986, 395, 824, 266, 1402, - 81, 1465, 1149, 604, 1150, 81, 81, 81, 266, 81, - 81, 587, 591, 1381, 603, 602, 1177, 81, 81, 1049, - 803, 603, 602, 804, 22, 1427, 1508, 1436, 610, 528, - 529, 604, 1494, 583, 1435, 801, 561, 1320, 604, 1427, - 1480, 379, 380, 561, 561, 561, 81, 844, 846, 847, - 1160, 266, 1155, 845, 1427, 583, 1300, 81, 1427, 1459, - 983, 561, 880, 654, 1427, 1426, 561, 561, 561, 798, - 561, 561, 665, 793, 1373, 1372, 320, 831, 561, 561, - 797, 911, 1360, 583, 305, 855, 343, 342, 345, 346, - 347, 348, 1357, 583, 1267, 344, 349, 852, 1310, 1309, - 890, 81, 850, 1306, 1307, 1306, 1305, 856, 1079, 583, - 1353, 833, 923, 583, 890, 583, 24, 897, 900, 779, - 777, 774, 549, 908, 723, 722, 704, 24, 542, 533, - 532, 1438, 892, 848, 81, 81, 928, 931, 932, 933, - 929, 266, 930, 934, 583, 1407, 1271, 1272, 923, 266, - 266, 1109, 51, 266, 266, 704, 1110, 266, 266, 266, - 81, 881, 882, 1308, 1139, 54, 54, 655, 1139, 705, - 58, 707, 1255, 81, 851, 1267, 54, 922, 1218, 904, - 916, 618, 617, 627, 628, 620, 621, 622, 623, 624, - 625, 626, 619, 697, 1151, 629, 801, 697, 705, 24, - 703, 697, 395, 923, 395, 395, 955, 395, 923, 395, - 938, 1079, 1267, 947, 698, 395, 950, 949, 698, 997, - 998, 999, 945, 1079, 953, 954, 1103, 266, 81, 1102, - 81, 970, 946, 1079, 703, 703, 266, 266, 266, 266, - 266, 709, 266, 266, 827, 607, 266, 81, 54, 1011, - 791, 1500, 1390, 991, 992, 993, 994, 1350, 307, 990, - 1365, 1010, 805, 1344, 1296, 266, 1154, 266, 266, 1002, - 1003, 1004, 266, 1006, 393, 1271, 1272, 1007, 1008, 1001, - 1000, 1207, 1391, 1013, 818, 1046, 1517, 967, 1513, 561, - 1298, 561, 1274, 1255, 1181, 618, 617, 627, 628, 620, - 621, 622, 623, 624, 625, 626, 619, 54, 561, 629, - 821, 841, 842, 795, 852, 1126, 1124, 395, 839, 1054, - 1127, 1125, 1128, 718, 932, 933, 1277, 1276, 1123, 893, - 894, 855, 1122, 899, 902, 903, 1056, 1055, 618, 617, - 627, 628, 620, 621, 622, 623, 624, 625, 626, 619, - 311, 312, 629, 856, 1504, 1497, 1214, 1051, 915, 1502, - 917, 918, 1068, 1067, 654, 1061, 1060, 895, 896, 1172, - 597, 597, 721, 585, 266, 266, 266, 266, 266, 1116, - 1474, 550, 582, 598, 598, 586, 266, 595, 1164, 266, - 1473, 851, 1405, 266, 1162, 1156, 1111, 266, 928, 931, - 932, 933, 929, 1351, 930, 934, 1386, 643, 644, 645, - 646, 647, 648, 649, 650, 892, 81, 1016, 697, 697, - 697, 697, 697, 794, 936, 961, 1059, 1152, 308, 309, - 302, 1112, 1113, 697, 1058, 698, 698, 698, 698, 698, - 1129, 697, 1096, 1444, 1141, 1137, 1142, 303, 1118, 1119, - 938, 1121, 1136, 395, 58, 1443, 1144, 1140, 698, 1393, - 395, 395, 395, 1117, 81, 81, 1120, 1171, 1161, 1173, - 1174, 1175, 1139, 1169, 1170, 575, 1519, 1518, 395, 1157, - 1158, 1091, 1088, 395, 395, 395, 814, 395, 395, 600, - 1519, 1455, 1379, 822, 81, 395, 395, 60, 62, 55, - 1, 1178, 1511, 1319, 1349, 1387, 1022, 1475, 266, 1420, - 1290, 1062, 973, 964, 69, 518, 68, 81, 1198, 1466, - 972, 971, 1428, 1377, 835, 984, 561, 1166, 987, 1297, - 967, 1163, 1471, 1052, 1053, 607, 591, 729, 395, 727, - 728, 1213, 618, 617, 627, 628, 620, 621, 622, 623, - 624, 625, 626, 619, 726, 561, 629, 731, 1077, 1078, - 730, 1221, 725, 81, 81, 1247, 1116, 1256, 1222, 279, - 388, 1228, 1241, 935, 717, 1012, 1240, 1094, 601, 883, - 72, 1184, 1200, 1259, 1199, 1018, 819, 81, 852, 1261, - 569, 570, 281, 1054, 637, 909, 1057, 1145, 394, 1080, - 1275, 1262, 81, 828, 81, 81, 589, 1442, 1392, 1282, - 1095, 1266, 913, 914, 664, 1289, 1098, 1281, 905, 328, - 843, 341, 1260, 338, 51, 339, 834, 1108, 611, 326, - 318, 1220, 266, 696, 1293, 1288, 689, 1284, 395, 927, - 925, 1301, 1302, 924, 383, 1273, 1294, 1295, 1269, 695, - 266, 395, 1217, 1346, 699, 1449, 81, 838, 26, 81, - 81, 81, 266, 59, 313, 1251, 81, 19, 18, 266, - 17, 20, 16, 15, 14, 832, 560, 538, 30, 21, - 13, 12, 11, 1325, 10, 9, 8, 7, 853, 6, - 263, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 395, 5, 395, 4, - 1334, 304, 23, 697, 1326, 2, 967, 0, 967, 0, - 0, 384, 0, 0, 1116, 395, 522, 0, 524, 1327, - 698, 1352, 0, 0, 889, 891, 0, 1361, 0, 81, - 0, 1362, 0, 0, 0, 0, 912, 81, 1312, 0, - 1152, 1331, 1332, 0, 1333, 395, 0, 1335, 1345, 1337, - 0, 1313, 81, 1315, 0, 0, 0, 1371, 0, 81, - 0, 0, 0, 1223, 0, 0, 0, 0, 0, 0, - 1220, 0, 0, 0, 0, 0, 0, 1380, 0, 1382, - 1367, 1368, 1369, 618, 617, 627, 628, 620, 621, 622, - 623, 624, 625, 626, 619, 0, 1249, 629, 81, 81, - 0, 81, 0, 1374, 1394, 0, 81, 0, 81, 81, - 81, 266, 1406, 561, 81, 1414, 1259, 1415, 1417, 1418, - 0, 1401, 0, 1408, 0, 0, 0, 0, 1419, 0, - 1425, 81, 266, 0, 0, 1432, 1413, 0, 1283, 0, - 1440, 909, 1433, 967, 1434, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1260, 0, 0, 1409, 0, - 0, 0, 1456, 0, 0, 0, 0, 0, 81, 0, - 1259, 0, 1463, 1389, 1464, 0, 1457, 0, 0, 81, - 81, 0, 0, 0, 395, 0, 0, 0, 1437, 1478, - 1482, 1479, 0, 0, 0, 0, 531, 0, 0, 81, - 0, 539, 1116, 1487, 0, 0, 0, 546, 0, 1260, - 266, 51, 0, 548, 0, 0, 0, 0, 81, 0, - 0, 1343, 0, 0, 0, 0, 1069, 1070, 1071, 1496, - 0, 0, 1182, 395, 746, 0, 0, 0, 0, 1501, - 1503, 81, 563, 564, 0, 565, 0, 568, 0, 1348, - 1505, 0, 1075, 579, 1516, 0, 1076, 0, 1342, 654, - 0, 1527, 395, 0, 1081, 1082, 1083, 1363, 0, 0, - 1364, 1089, 0, 1366, 1092, 1093, 0, 0, 0, 0, - 1099, 0, 0, 0, 1101, 395, 588, 1104, 1105, 1106, - 1107, 0, 0, 1389, 967, 0, 618, 617, 627, 628, - 620, 621, 622, 623, 624, 625, 626, 619, 0, 1131, - 629, 1514, 0, 734, 0, 0, 0, 0, 0, 395, - 0, 0, 264, 0, 691, 290, 700, 0, 909, 0, - 0, 1263, 1265, 618, 617, 627, 628, 620, 621, 622, - 623, 624, 625, 626, 619, 0, 0, 629, 0, 0, - 317, 747, 0, 386, 0, 1265, 0, 0, 264, 0, - 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 395, 0, 395, 1292, 760, 763, 764, 765, 766, 767, - 768, 0, 769, 770, 771, 772, 773, 748, 749, 750, - 751, 732, 733, 761, 0, 735, 0, 736, 737, 738, - 739, 740, 741, 742, 743, 744, 745, 752, 753, 754, - 755, 756, 757, 758, 759, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1316, 0, 0, 1321, 1322, 1323, - 0, 0, 0, 0, 395, 0, 0, 0, 0, 0, - 1224, 1225, 1481, 654, 0, 0, 0, 0, 0, 1226, - 1227, 0, 0, 0, 1242, 1243, 0, 1244, 1245, 0, - 0, 0, 0, 0, 724, 762, 0, 0, 0, 1252, - 1253, 0, 0, 0, 780, 781, 0, 0, 0, 0, - 0, 1341, 790, 0, 0, 384, 909, 0, 796, 0, - 0, 775, 0, 0, 0, 0, 0, 0, 782, 783, - 784, 0, 809, 0, 0, 0, 0, 395, 0, 0, - 0, 0, 0, 0, 0, 1376, 802, 0, 0, 0, - 0, 806, 807, 808, 0, 810, 811, 0, 0, 0, - 395, 1299, 0, 812, 813, 0, 0, 395, 264, 0, - 0, 0, 0, 264, 0, 840, 0, 0, 0, 264, - 0, 0, 0, 0, 0, 264, 618, 617, 627, 628, - 620, 621, 622, 623, 624, 625, 626, 619, 0, 0, - 629, 0, 0, 0, 0, 0, 1410, 1411, 0, 1412, - 0, 0, 0, 0, 1376, 0, 1376, 1376, 1376, 0, - 1329, 0, 1292, 1328, 1074, 0, 0, 0, 0, 0, - 0, 1330, 0, 0, 0, 0, 0, 0, 0, 1376, - 0, 0, 1339, 1340, 618, 617, 627, 628, 620, 621, - 622, 623, 624, 625, 626, 619, 0, 0, 629, 0, - 0, 0, 1354, 1355, 1356, 921, 1359, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1470, 0, 948, 0, - 0, 0, 0, 1370, 0, 0, 0, 395, 395, 0, - 0, 0, 0, 0, 0, 0, 264, 264, 264, 0, - 0, 0, 0, 0, 909, 0, 0, 1489, 618, 617, - 627, 628, 620, 621, 622, 623, 624, 625, 626, 619, - 0, 0, 629, 0, 0, 0, 1495, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1396, 1397, - 1398, 1399, 1400, 0, 0, 0, 1403, 1404, 0, 1376, - 0, 1014, 0, 0, 0, 0, 0, 0, 0, 0, - 1034, 1035, 1036, 1037, 1038, 0, 1041, 1042, 0, 1416, - 1043, 0, 0, 0, 1015, 0, 1017, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1045, - 0, 0, 0, 1044, 0, 0, 1050, 0, 1445, 1446, - 1447, 1448, 0, 1452, 0, 1453, 1454, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1460, 0, 1461, - 1462, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 264, 0, 0, 0, + 323, 1526, 1516, 1321, 1480, 654, 1392, 1379, 1210, 1118, + 327, 353, 1261, 340, 969, 1295, 942, 1425, 1262, 998, + 965, 1136, 1119, 940, 552, 1258, 968, 1012, 1163, 978, + 1268, 57, 81, 397, 301, 1274, 266, 1233, 801, 266, + 817, 879, 890, 1189, 1180, 886, 1075, 982, 715, 992, + 908, 292, 856, 585, 944, 591, 714, 521, 386, 701, + 391, 922, 1008, 310, 929, 597, 606, 266, 81, 383, + 325, 388, 266, 1142, 266, 696, 668, 704, 56, 1519, + 1503, 61, 695, 669, 1514, 653, 3, 1031, 1490, 1511, + 1322, 541, 1502, 563, 1489, 263, 293, 294, 295, 296, + 1250, 1030, 299, 329, 1351, 526, 314, 63, 64, 65, + 66, 67, 1454, 619, 618, 628, 629, 621, 622, 623, + 624, 625, 626, 627, 620, 1289, 385, 630, 556, 1151, + 1035, 523, 1150, 525, 716, 1152, 717, 300, 365, 1029, + 371, 372, 369, 370, 368, 367, 366, 1290, 1291, 960, + 961, 959, 579, 298, 373, 374, 261, 257, 258, 259, + 574, 394, 297, 1171, 575, 572, 573, 1234, 991, 1212, + 1382, 1399, 253, 999, 1342, 251, 1340, 255, 291, 790, + 577, 567, 568, 789, 1214, 787, 1513, 1510, 1481, 1026, + 1023, 1024, 1209, 1022, 558, 923, 560, 983, 1473, 1534, + 542, 1215, 528, 255, 1426, 1236, 794, 1530, 778, 1137, + 1139, 578, 1284, 985, 1283, 1282, 524, 1428, 788, 791, + 531, 268, 1213, 1434, 1206, 1033, 1036, 557, 559, 538, + 1208, 256, 1043, 642, 643, 1042, 1093, 1462, 1090, 1238, + 1362, 1242, 1219, 1237, 1147, 1235, 1103, 1069, 985, 828, + 1240, 710, 266, 610, 548, 1307, 966, 266, 620, 1239, + 630, 630, 1028, 266, 24, 25, 52, 27, 28, 266, + 254, 955, 1241, 1243, 81, 260, 81, 81, 1164, 81, + 825, 81, 1455, 43, 1027, 1427, 1138, 81, 29, 48, + 49, 252, 535, 605, 536, 822, 1471, 537, 522, 1443, + 554, 1272, 718, 999, 818, 1488, 1308, 70, 276, 38, + 984, 532, 555, 54, 1252, 1528, 540, 81, 1529, 780, + 1527, 909, 547, 1032, 1476, 1435, 1433, 1207, 549, 1205, + 1169, 520, 863, 286, 54, 1088, 593, 1087, 1034, 642, + 643, 642, 643, 71, 859, 984, 861, 862, 860, 581, + 582, 544, 545, 546, 604, 603, 619, 618, 628, 629, + 621, 622, 623, 624, 625, 626, 627, 620, 1089, 603, + 630, 605, 600, 1494, 31, 32, 34, 33, 36, 553, + 50, 266, 266, 266, 269, 605, 819, 1388, 988, 595, + 81, 272, 594, 909, 989, 1100, 81, 1535, 1387, 280, + 275, 527, 37, 44, 45, 694, 1184, 46, 47, 35, + 1076, 621, 622, 623, 624, 625, 626, 627, 620, 604, + 603, 630, 1183, 39, 40, 985, 41, 42, 640, 584, + 1172, 880, 278, 881, 1348, 1496, 605, 1536, 285, 1153, + 693, 1154, 702, 671, 673, 675, 677, 679, 681, 682, + 672, 674, 703, 678, 680, 522, 683, 846, 848, 849, + 1472, 712, 708, 847, 1406, 270, 619, 618, 628, 629, + 621, 622, 623, 624, 625, 626, 627, 620, 529, 530, + 630, 1385, 1181, 394, 1052, 699, 623, 624, 625, 626, + 627, 620, 282, 273, 630, 283, 284, 289, 831, 832, + 806, 274, 277, 22, 271, 288, 287, 1469, 53, 619, + 618, 628, 629, 621, 622, 623, 624, 625, 626, 627, + 620, 266, 984, 630, 604, 603, 81, 981, 979, 1324, + 980, 266, 266, 81, 81, 81, 977, 983, 1164, 266, + 827, 605, 266, 1431, 1512, 266, 1159, 604, 603, 266, + 250, 81, 882, 352, 1498, 584, 81, 81, 81, 266, + 81, 81, 800, 305, 605, 799, 604, 603, 81, 81, + 913, 1431, 1484, 1254, 1431, 584, 805, 781, 826, 779, + 726, 776, 803, 605, 550, 79, 1066, 1067, 1068, 543, + 782, 783, 534, 1354, 533, 604, 603, 81, 792, 1431, + 1463, 385, 266, 584, 798, 1431, 1430, 1440, 81, 889, + 1439, 795, 605, 1377, 1376, 380, 381, 1304, 811, 354, + 51, 396, 1364, 584, 986, 857, 1361, 584, 833, 1314, + 1313, 619, 618, 628, 629, 621, 622, 623, 624, 625, + 626, 627, 620, 1271, 854, 630, 1310, 1311, 1259, 852, + 1211, 1271, 81, 343, 342, 345, 346, 347, 348, 835, + 892, 842, 344, 349, 1310, 1309, 1082, 584, 926, 584, + 1222, 51, 899, 902, 850, 892, 584, 706, 910, 306, + 725, 724, 58, 1357, 706, 81, 81, 24, 931, 934, + 935, 936, 932, 266, 933, 937, 1143, 24, 1275, 1276, + 24, 266, 266, 1442, 853, 266, 266, 1143, 926, 266, + 266, 266, 81, 883, 884, 1082, 1411, 858, 1312, 925, + 707, 1113, 709, 1082, 1155, 81, 1114, 707, 950, 705, + 906, 958, 952, 918, 919, 1106, 54, 949, 1105, 705, + 926, 1082, 894, 705, 803, 926, 54, 307, 711, 54, + 1395, 1271, 924, 829, 793, 54, 1504, 1394, 993, 1000, + 1001, 1002, 1369, 1013, 948, 951, 1300, 1158, 953, 1009, + 957, 1004, 956, 1275, 1276, 1521, 1003, 1016, 1517, 266, + 81, 1302, 81, 973, 994, 995, 996, 997, 266, 266, + 266, 266, 266, 1278, 266, 266, 54, 1259, 266, 81, + 1005, 1006, 1007, 1014, 699, 394, 1185, 823, 699, 797, + 1130, 1128, 699, 1197, 841, 1131, 1129, 266, 970, 266, + 266, 1281, 1280, 1132, 266, 935, 936, 396, 1054, 396, + 396, 1127, 396, 1126, 396, 1010, 1011, 1508, 1017, 1501, + 396, 1218, 1049, 1195, 311, 312, 1506, 1037, 1038, 1039, + 1040, 1041, 598, 1044, 1045, 1064, 1063, 1046, 1176, 723, + 598, 1168, 854, 586, 551, 599, 1478, 1057, 596, 1477, + 608, 583, 857, 599, 1409, 587, 1048, 1166, 1160, 1355, + 1390, 1448, 1019, 1053, 796, 1058, 939, 1059, 308, 309, + 302, 1062, 303, 562, 58, 562, 562, 1447, 562, 1061, + 562, 931, 934, 935, 936, 932, 562, 933, 937, 1397, + 1196, 1143, 576, 1071, 1094, 1201, 1198, 1191, 1199, 1194, + 1091, 1190, 853, 816, 1192, 1193, 51, 266, 266, 266, + 266, 266, 1523, 1522, 1523, 601, 1120, 1459, 1200, 266, + 1383, 639, 266, 396, 641, 824, 266, 60, 62, 720, + 266, 55, 1, 1515, 1323, 1391, 1025, 1479, 1099, 1424, + 1294, 976, 967, 69, 858, 519, 68, 1470, 975, 81, + 974, 1432, 652, 1144, 656, 657, 658, 659, 660, 661, + 662, 663, 664, 1156, 667, 670, 670, 670, 676, 670, + 670, 676, 670, 684, 685, 686, 687, 688, 689, 690, + 1141, 700, 1133, 1122, 1123, 1381, 1125, 1148, 1115, 1121, + 987, 1165, 1124, 1170, 1173, 1174, 1347, 81, 81, 1175, + 990, 1177, 1178, 1179, 1145, 1301, 1146, 894, 1161, 1162, + 699, 699, 699, 699, 699, 1167, 1475, 731, 729, 730, + 728, 733, 732, 727, 279, 699, 389, 81, 938, 1182, + 719, 1015, 602, 699, 72, 1204, 1203, 1021, 821, 570, + 571, 266, 970, 281, 638, 1060, 1149, 1202, 395, 1266, + 81, 830, 590, 1188, 1446, 1396, 1098, 665, 907, 396, + 328, 845, 341, 338, 339, 836, 396, 396, 396, 1217, + 1112, 619, 618, 628, 629, 621, 622, 623, 624, 625, + 626, 627, 620, 320, 396, 630, 612, 326, 318, 396, + 396, 396, 698, 396, 396, 691, 1225, 81, 81, 1226, + 1220, 396, 396, 1260, 1120, 1232, 1263, 1245, 930, 1251, + 1244, 928, 927, 384, 1277, 1273, 697, 854, 1221, 1350, + 1453, 81, 1057, 840, 26, 562, 59, 313, 19, 18, + 837, 1346, 562, 562, 562, 17, 81, 20, 81, 81, + 1279, 608, 16, 1224, 396, 834, 15, 14, 539, 30, + 562, 1285, 1293, 21, 1286, 562, 562, 562, 13, 562, + 562, 12, 1292, 11, 10, 9, 266, 562, 562, 1297, + 1298, 1299, 1270, 8, 1305, 1306, 7, 1255, 6, 5, + 4, 304, 1265, 23, 266, 885, 2, 0, 0, 0, + 81, 0, 0, 81, 81, 81, 266, 0, 1288, 0, + 81, 911, 0, 266, 891, 893, 619, 618, 628, 629, + 621, 622, 623, 624, 625, 626, 627, 620, 915, 916, + 630, 1316, 1329, 0, 0, 1315, 1331, 0, 0, 970, + 0, 970, 0, 0, 1317, 0, 1319, 0, 0, 0, + 0, 51, 0, 1318, 0, 396, 1338, 895, 896, 0, + 0, 901, 904, 905, 0, 1328, 656, 0, 396, 0, + 0, 0, 1120, 0, 1335, 1336, 1356, 1337, 0, 316, + 1339, 0, 1341, 81, 1366, 1330, 917, 0, 0, 920, + 921, 81, 1365, 0, 0, 0, 0, 1156, 0, 0, + 0, 0, 0, 1224, 0, 0, 81, 0, 0, 0, + 941, 1375, 0, 81, 700, 0, 699, 0, 700, 1384, + 0, 1386, 0, 396, 0, 396, 628, 629, 621, 622, + 623, 624, 625, 626, 627, 620, 1378, 0, 630, 0, + 0, 0, 396, 0, 0, 0, 1398, 0, 0, 0, + 0, 0, 81, 81, 0, 81, 0, 0, 0, 1263, + 81, 0, 81, 81, 81, 266, 1410, 1418, 81, 1419, + 1421, 1422, 396, 0, 0, 1405, 970, 0, 0, 0, + 0, 1423, 0, 1429, 0, 81, 266, 1436, 0, 562, + 1417, 562, 1444, 0, 0, 1437, 0, 1438, 0, 0, + 0, 0, 0, 0, 0, 0, 1393, 0, 562, 0, + 0, 0, 0, 1263, 1460, 0, 0, 0, 0, 0, + 0, 0, 81, 0, 644, 645, 646, 647, 648, 649, + 650, 651, 1468, 81, 81, 1467, 1412, 0, 0, 1482, + 1065, 0, 0, 1078, 1486, 1445, 0, 1079, 1483, 0, + 0, 0, 0, 81, 0, 1084, 1085, 1086, 0, 1491, + 1120, 0, 1092, 1070, 266, 1095, 1096, 0, 0, 911, + 0, 1102, 81, 0, 0, 1104, 0, 0, 1107, 1108, + 1109, 1110, 1111, 1500, 0, 0, 0, 1080, 1081, 1461, + 0, 0, 0, 1505, 1507, 81, 0, 0, 0, 0, + 561, 1135, 1509, 0, 0, 0, 1097, 0, 1520, 0, + 0, 0, 396, 0, 0, 1531, 0, 0, 0, 0, + 0, 0, 0, 1495, 1353, 0, 1393, 970, 0, 0, + 0, 0, 1116, 1117, 0, 0, 700, 700, 700, 700, + 700, 0, 0, 0, 0, 589, 0, 0, 0, 0, + 0, 941, 0, 1140, 0, 0, 0, 0, 0, 700, + 1186, 396, 619, 618, 628, 629, 621, 622, 623, 624, + 625, 626, 627, 620, 0, 0, 630, 0, 0, 0, + 0, 264, 588, 592, 290, 0, 0, 1345, 0, 0, + 396, 0, 0, 0, 0, 0, 0, 0, 0, 611, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, + 0, 0, 387, 396, 0, 0, 0, 264, 0, 264, + 0, 0, 0, 0, 0, 0, 0, 562, 0, 0, + 0, 0, 0, 0, 655, 0, 0, 0, 0, 0, + 0, 1230, 1231, 666, 0, 0, 0, 396, 0, 0, + 0, 0, 0, 0, 0, 0, 562, 911, 0, 0, + 1267, 1269, 619, 618, 628, 629, 621, 622, 623, 624, + 625, 626, 627, 620, 0, 0, 630, 0, 0, 0, + 0, 0, 0, 0, 1269, 0, 619, 618, 628, 629, + 621, 622, 623, 624, 625, 626, 627, 620, 0, 396, + 630, 396, 1296, 0, 0, 0, 855, 1227, 0, 864, + 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, + 875, 876, 877, 878, 1264, 0, 51, 619, 618, 628, + 629, 621, 622, 623, 624, 625, 626, 627, 620, 0, + 0, 630, 618, 628, 629, 621, 622, 623, 624, 625, + 626, 627, 620, 1320, 0, 630, 1325, 1326, 1327, 0, + 0, 0, 0, 396, 914, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 564, 565, 0, 566, + 0, 569, 0, 0, 0, 0, 1332, 580, 0, 0, + 0, 0, 0, 0, 1334, 0, 0, 264, 0, 0, + 0, 0, 264, 0, 0, 1343, 1344, 0, 264, 0, + 0, 0, 0, 0, 264, 911, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1358, 1359, 1360, 0, 1363, + 0, 0, 700, 0, 807, 0, 396, 0, 0, 0, + 0, 0, 0, 0, 1380, 0, 1374, 1077, 0, 0, + 0, 0, 0, 0, 0, 0, 820, 0, 0, 396, + 1349, 0, 0, 0, 0, 0, 396, 619, 618, 628, + 629, 621, 622, 623, 624, 625, 626, 627, 620, 0, + 0, 630, 0, 843, 844, 0, 0, 0, 0, 0, + 0, 0, 1371, 1372, 1373, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1414, 1415, 0, 1416, 0, + 0, 0, 0, 1380, 0, 1380, 1380, 1380, 0, 0, + 0, 1296, 0, 0, 0, 562, 264, 264, 264, 0, + 0, 0, 1420, 0, 0, 0, 655, 0, 1380, 897, + 898, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1072, 1073, 1074, 0, 0, + 0, 1449, 1450, 1451, 1452, 0, 1456, 1264, 1457, 1458, + 1413, 0, 0, 0, 0, 1474, 0, 0, 0, 0, + 1464, 0, 1465, 1466, 0, 0, 396, 396, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 964, 0, + 1441, 0, 0, 911, 0, 0, 1493, 0, 0, 0, + 0, 0, 0, 0, 1487, 0, 0, 0, 0, 0, + 0, 1264, 1492, 51, 0, 1499, 777, 0, 0, 0, + 0, 0, 0, 784, 785, 786, 0, 0, 0, 0, + 1497, 0, 0, 0, 0, 0, 0, 0, 1380, 0, + 0, 804, 0, 0, 0, 0, 808, 809, 810, 0, + 812, 813, 0, 0, 0, 0, 264, 0, 814, 815, 0, 0, 0, 0, 0, 0, 264, 264, 0, 0, - 0, 1483, 0, 0, 264, 0, 0, 264, 0, 1488, - 264, 0, 0, 0, 800, 0, 0, 0, 0, 0, - 613, 0, 616, 0, 264, 0, 0, 1493, 630, 631, - 632, 633, 634, 635, 636, 0, 614, 615, 612, 618, - 617, 627, 628, 620, 621, 622, 623, 624, 625, 626, - 619, 0, 0, 629, 0, 0, 0, 0, 0, 0, - 0, 1520, 0, 0, 0, 0, 0, 264, 0, 0, - 0, 0, 1528, 1529, 0, 0, 800, 0, 0, 0, - 0, 0, 0, 0, 0, 24, 25, 52, 27, 28, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 43, 0, 0, 0, 0, 29, - 48, 49, 0, 0, 0, 0, 0, 0, 317, 0, - 0, 0, 0, 317, 317, 0, 0, 317, 317, 317, - 38, 0, 0, 910, 54, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 317, 317, 317, 317, 0, 264, 0, 0, - 0, 1183, 0, 0, 0, 264, 943, 0, 0, 264, - 264, 0, 0, 264, 951, 800, 0, 0, 0, 0, - 0, 0, 1216, 0, 0, 0, 0, 0, 0, 0, - 1212, 0, 0, 0, 0, 31, 32, 34, 33, 36, - 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 37, 44, 45, 0, 0, 46, 47, - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 264, 39, 40, 0, 41, 42, 0, - 0, 0, 264, 264, 264, 264, 264, 0, 264, 264, - 0, 0, 264, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 264, 0, 1047, 1048, 0, 0, 0, 264, 0, - 0, 0, 0, 800, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 317, 1311, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1314, 0, 0, 0, 0, 53, - 0, 0, 0, 0, 0, 0, 1324, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 317, 317, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, - 264, 264, 264, 264, 264, 0, 0, 0, 0, 0, - 0, 0, 1130, 0, 0, 264, 0, 0, 0, 943, - 0, 0, 0, 264, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1385, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 264, 1532, 1533, 264, 0, 0, + 264, 0, 0, 0, 802, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 264, 0, 1055, 1056, 614, 592, + 617, 0, 0, 0, 0, 0, 631, 632, 633, 634, + 635, 636, 637, 1518, 615, 616, 613, 619, 618, 628, + 629, 621, 622, 623, 624, 625, 626, 627, 620, 0, + 0, 630, 0, 0, 0, 0, 0, 264, 0, 0, + 0, 0, 0, 0, 0, 0, 802, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1228, 1229, 1083, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1246, 1247, 0, 1248, 1249, 1101, + 0, 0, 0, 0, 0, 0, 0, 0, 317, 1256, + 1257, 0, 0, 317, 317, 0, 0, 317, 317, 317, + 0, 0, 0, 912, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 317, 317, 317, 317, 317, 0, 264, 0, + 0, 0, 0, 0, 0, 0, 264, 946, 0, 0, + 264, 264, 0, 0, 264, 954, 802, 0, 0, 0, + 0, 0, 1303, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1018, 0, 1020, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1047, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1333, 0, 0, 264, 0, 0, 0, 0, 0, + 0, 0, 0, 264, 264, 264, 264, 264, 0, 264, + 264, 0, 0, 264, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 264, 0, 1050, 1051, 0, 0, 0, 264, + 0, 0, 0, 0, 802, 0, 0, 0, 0, 0, + 1253, 0, 0, 0, 0, 0, 317, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 748, + 0, 0, 0, 1287, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 317, 317, 0, 0, 0, 0, 1400, + 1401, 1402, 1403, 1404, 0, 0, 0, 1407, 1408, 0, + 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 912, 264, 264, 264, 264, 264, 0, 0, 0, + 0, 0, 0, 0, 1134, 0, 0, 264, 0, 0, + 0, 946, 0, 0, 0, 264, 0, 0, 736, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1187, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1352, 0, 749, 0, 0, 0, + 0, 0, 0, 0, 655, 0, 0, 1216, 0, 0, + 0, 0, 1367, 0, 0, 1368, 0, 0, 1370, 762, + 765, 766, 767, 768, 769, 770, 0, 771, 772, 773, + 774, 775, 750, 751, 752, 753, 734, 735, 763, 0, + 737, 0, 738, 739, 740, 741, 742, 743, 744, 745, + 746, 747, 754, 755, 756, 757, 758, 759, 760, 761, + 0, 0, 0, 0, 0, 0, 264, 0, 0, 0, + 0, 0, 1524, 0, 0, 0, 317, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 802, + 764, 0, 0, 0, 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1441, 0, 0, 0, - 0, 0, 0, 0, 264, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 800, 0, 0, - 0, 0, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1485, 655, 0, + 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 264, 0, + 0, 264, 0, 0, 0, 0, 0, 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 264, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 264, 0, - 0, 0, 0, 0, 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1389, 912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1166,1087 +1168,1252 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 943, 0, 0, - 0, 0, 0, 505, 493, 0, 450, 508, 423, 440, - 516, 441, 444, 481, 408, 463, 165, 438, 264, 427, - 403, 434, 404, 425, 452, 111, 456, 422, 495, 466, - 507, 137, 428, 514, 139, 472, 0, 211, 153, 0, - 0, 454, 497, 461, 490, 449, 482, 413, 471, 509, - 439, 479, 510, 0, 0, 0, 80, 0, 968, 969, - 0, 0, 0, 0, 0, 101, 0, 476, 504, 436, - 478, 480, 402, 473, 0, 406, 409, 515, 500, 431, - 432, 1153, 910, 0, 0, 0, 0, 0, 453, 462, - 487, 447, 0, 0, 0, 0, 264, 0, 0, 0, - 429, 0, 470, 0, 0, 0, 410, 407, 0, 0, - 451, 0, 0, 0, 412, 0, 430, 488, 0, 400, - 119, 492, 499, 448, 267, 503, 446, 445, 506, 184, - 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, - 191, 195, 496, 426, 435, 105, 433, 193, 172, 231, - 469, 174, 192, 140, 221, 185, 230, 240, 241, 218, - 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, - 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, - 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, - 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, - 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, - 405, 0, 212, 234, 249, 99, 421, 219, 243, 244, - 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, - 134, 141, 188, 247, 171, 194, 103, 233, 210, 417, - 420, 415, 416, 464, 465, 511, 512, 513, 489, 411, - 0, 418, 419, 0, 494, 501, 502, 468, 82, 91, - 138, 246, 186, 116, 235, 401, 414, 109, 424, 0, - 0, 437, 442, 443, 455, 457, 458, 459, 460, 467, - 474, 475, 477, 483, 484, 485, 486, 491, 498, 517, - 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, - 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, - 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, - 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, - 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, - 216, 222, 223, 232, 239, 242, 505, 493, 0, 450, - 508, 423, 440, 516, 441, 444, 481, 408, 463, 165, - 438, 0, 427, 403, 434, 404, 425, 452, 111, 456, - 422, 495, 466, 507, 137, 428, 514, 139, 472, 0, - 211, 153, 0, 0, 454, 497, 461, 490, 449, 482, - 413, 471, 509, 439, 479, 510, 0, 0, 0, 80, - 0, 968, 969, 0, 0, 0, 0, 0, 101, 0, - 476, 504, 436, 478, 480, 402, 473, 0, 406, 409, - 515, 500, 431, 432, 0, 0, 0, 0, 0, 0, - 0, 453, 462, 487, 447, 0, 0, 0, 0, 0, - 0, 0, 0, 429, 0, 470, 0, 0, 0, 410, - 407, 0, 0, 451, 0, 0, 0, 412, 0, 430, - 488, 0, 400, 119, 492, 499, 448, 267, 503, 446, - 445, 506, 184, 0, 215, 122, 136, 97, 83, 93, - 0, 121, 162, 191, 195, 496, 426, 435, 105, 433, - 193, 172, 231, 469, 174, 192, 140, 221, 185, 230, + 946, 0, 0, 0, 0, 0, 506, 494, 0, 451, + 509, 424, 441, 517, 442, 445, 482, 409, 464, 165, + 439, 264, 428, 404, 435, 405, 426, 453, 111, 457, + 423, 496, 467, 508, 137, 429, 515, 139, 473, 0, + 211, 153, 0, 0, 455, 498, 462, 491, 450, 483, + 414, 472, 510, 440, 480, 511, 0, 0, 0, 80, + 0, 971, 972, 0, 0, 0, 0, 0, 101, 0, + 477, 505, 437, 479, 481, 403, 474, 0, 407, 410, + 516, 501, 432, 433, 1157, 912, 0, 0, 0, 0, + 0, 454, 463, 488, 448, 0, 0, 0, 0, 264, + 0, 0, 0, 430, 0, 471, 0, 0, 0, 411, + 408, 0, 0, 452, 0, 0, 0, 413, 0, 431, + 489, 0, 401, 119, 493, 500, 449, 267, 504, 447, + 446, 507, 184, 0, 215, 122, 136, 97, 83, 93, + 0, 121, 162, 191, 195, 497, 427, 436, 105, 434, + 193, 172, 231, 470, 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, - 154, 156, 0, 405, 0, 212, 234, 249, 99, 421, + 154, 156, 0, 406, 0, 212, 234, 249, 99, 422, 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, 171, 194, 103, - 233, 210, 417, 420, 415, 416, 464, 465, 511, 512, - 513, 489, 411, 0, 418, 419, 0, 494, 501, 502, - 468, 82, 91, 138, 246, 186, 116, 235, 401, 414, - 109, 424, 0, 0, 437, 442, 443, 455, 457, 458, - 459, 460, 467, 474, 475, 477, 483, 484, 485, 486, - 491, 498, 517, 84, 85, 92, 98, 104, 108, 112, + 233, 210, 418, 421, 416, 417, 465, 466, 512, 513, + 514, 490, 412, 0, 419, 420, 0, 495, 502, 503, + 469, 82, 91, 138, 246, 186, 116, 235, 402, 415, + 109, 425, 0, 0, 438, 443, 444, 456, 458, 459, + 460, 461, 468, 475, 476, 478, 484, 485, 486, 487, + 492, 499, 518, 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, - 206, 207, 213, 216, 222, 223, 232, 239, 242, 505, - 493, 0, 450, 508, 423, 440, 516, 441, 444, 481, - 408, 463, 165, 438, 0, 427, 403, 434, 404, 425, - 452, 111, 456, 422, 495, 466, 507, 137, 428, 514, - 139, 472, 0, 211, 153, 0, 0, 454, 497, 461, - 490, 449, 482, 413, 471, 509, 439, 479, 510, 54, - 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 0, 476, 504, 436, 478, 480, 402, 473, - 0, 406, 409, 515, 500, 431, 432, 0, 0, 0, - 0, 0, 0, 0, 453, 462, 487, 447, 0, 0, - 0, 0, 0, 0, 0, 0, 429, 0, 470, 0, - 0, 0, 410, 407, 0, 0, 451, 0, 0, 0, - 412, 0, 430, 488, 0, 400, 119, 492, 499, 448, - 267, 503, 446, 445, 506, 184, 0, 215, 122, 136, - 97, 83, 93, 0, 121, 162, 191, 195, 496, 426, - 435, 105, 433, 193, 172, 231, 469, 174, 192, 140, + 206, 207, 213, 216, 222, 223, 232, 239, 242, 506, + 494, 0, 451, 509, 424, 441, 517, 442, 445, 482, + 409, 464, 165, 439, 0, 428, 404, 435, 405, 426, + 453, 111, 457, 423, 496, 467, 508, 137, 429, 515, + 139, 473, 0, 211, 153, 0, 0, 455, 498, 462, + 491, 450, 483, 414, 472, 510, 440, 480, 511, 0, + 0, 0, 80, 0, 971, 972, 0, 0, 0, 0, + 0, 101, 0, 477, 505, 437, 479, 481, 403, 474, + 0, 407, 410, 516, 501, 432, 433, 0, 0, 0, + 0, 0, 0, 0, 454, 463, 488, 448, 0, 0, + 0, 0, 0, 0, 0, 0, 430, 0, 471, 0, + 0, 0, 411, 408, 0, 0, 452, 0, 0, 0, + 413, 0, 431, 489, 0, 401, 119, 493, 500, 449, + 267, 504, 447, 446, 507, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 497, 427, + 436, 105, 434, 193, 172, 231, 470, 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, - 183, 125, 155, 154, 156, 0, 405, 0, 212, 234, - 249, 99, 421, 219, 243, 244, 0, 0, 100, 118, + 183, 125, 155, 154, 156, 0, 406, 0, 212, 234, + 249, 99, 422, 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, - 171, 194, 103, 233, 210, 417, 420, 415, 416, 464, - 465, 511, 512, 513, 489, 411, 0, 418, 419, 0, - 494, 501, 502, 468, 82, 91, 138, 246, 186, 116, - 235, 401, 414, 109, 424, 0, 0, 437, 442, 443, - 455, 457, 458, 459, 460, 467, 474, 475, 477, 483, - 484, 485, 486, 491, 498, 517, 84, 85, 92, 98, + 171, 194, 103, 233, 210, 418, 421, 416, 417, 465, + 466, 512, 513, 514, 490, 412, 0, 419, 420, 0, + 495, 502, 503, 469, 82, 91, 138, 246, 186, 116, + 235, 402, 415, 109, 425, 0, 0, 438, 443, 444, + 456, 458, 459, 460, 461, 468, 475, 476, 478, 484, + 485, 486, 487, 492, 499, 518, 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, - 239, 242, 505, 493, 0, 450, 508, 423, 440, 516, - 441, 444, 481, 408, 463, 165, 438, 0, 427, 403, - 434, 404, 425, 452, 111, 456, 422, 495, 466, 507, - 137, 428, 514, 139, 472, 0, 211, 153, 0, 0, - 454, 497, 461, 490, 449, 482, 413, 471, 509, 439, - 479, 510, 0, 0, 0, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 101, 0, 476, 504, 436, 478, - 480, 402, 473, 0, 406, 409, 515, 500, 431, 432, - 0, 0, 0, 0, 0, 0, 0, 453, 462, 487, - 447, 0, 0, 0, 0, 0, 0, 1219, 0, 429, - 0, 470, 0, 0, 0, 410, 407, 0, 0, 451, - 0, 0, 0, 412, 0, 430, 488, 0, 400, 119, - 492, 499, 448, 267, 503, 446, 445, 506, 184, 0, + 239, 242, 506, 494, 0, 451, 509, 424, 441, 517, + 442, 445, 482, 409, 464, 165, 439, 0, 428, 404, + 435, 405, 426, 453, 111, 457, 423, 496, 467, 508, + 137, 429, 515, 139, 473, 0, 211, 153, 0, 0, + 455, 498, 462, 491, 450, 483, 414, 472, 510, 440, + 480, 511, 54, 0, 0, 80, 0, 0, 0, 0, + 0, 0, 0, 0, 101, 0, 477, 505, 437, 479, + 481, 403, 474, 0, 407, 410, 516, 501, 432, 433, + 0, 0, 0, 0, 0, 0, 0, 454, 463, 488, + 448, 0, 0, 0, 0, 0, 0, 0, 0, 430, + 0, 471, 0, 0, 0, 411, 408, 0, 0, 452, + 0, 0, 0, 413, 0, 431, 489, 0, 401, 119, + 493, 500, 449, 267, 504, 447, 446, 507, 184, 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, - 195, 496, 426, 435, 105, 433, 193, 172, 231, 469, + 195, 497, 427, 436, 105, 434, 193, 172, 231, 470, 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, - 124, 182, 142, 183, 125, 155, 154, 156, 0, 405, - 0, 212, 234, 249, 99, 421, 219, 243, 244, 0, + 124, 182, 142, 183, 125, 155, 154, 156, 0, 406, + 0, 212, 234, 249, 99, 422, 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, - 141, 188, 247, 171, 194, 103, 233, 210, 417, 420, - 415, 416, 464, 465, 511, 512, 513, 489, 411, 0, - 418, 419, 0, 494, 501, 502, 468, 82, 91, 138, - 246, 186, 116, 235, 401, 414, 109, 424, 0, 0, - 437, 442, 443, 455, 457, 458, 459, 460, 467, 474, - 475, 477, 483, 484, 485, 486, 491, 498, 517, 84, + 141, 188, 247, 171, 194, 103, 233, 210, 418, 421, + 416, 417, 465, 466, 512, 513, 514, 490, 412, 0, + 419, 420, 0, 495, 502, 503, 469, 82, 91, 138, + 246, 186, 116, 235, 402, 415, 109, 425, 0, 0, + 438, 443, 444, 456, 458, 459, 460, 461, 468, 475, + 476, 478, 484, 485, 486, 487, 492, 499, 518, 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, - 222, 223, 232, 239, 242, 505, 493, 0, 450, 508, - 423, 440, 516, 441, 444, 481, 408, 463, 165, 438, - 0, 427, 403, 434, 404, 425, 452, 111, 456, 422, - 495, 466, 507, 137, 428, 514, 139, 472, 0, 211, - 153, 0, 0, 454, 497, 461, 490, 449, 482, 413, - 471, 509, 439, 479, 510, 0, 0, 0, 265, 0, - 0, 0, 0, 0, 0, 0, 0, 101, 0, 476, - 504, 436, 478, 480, 402, 473, 0, 406, 409, 515, - 500, 431, 432, 0, 0, 0, 0, 0, 0, 0, - 453, 462, 487, 447, 0, 0, 0, 0, 0, 0, - 952, 0, 429, 0, 470, 0, 0, 0, 410, 407, - 0, 0, 451, 0, 0, 0, 412, 0, 430, 488, - 0, 400, 119, 492, 499, 448, 267, 503, 446, 445, - 506, 184, 0, 215, 122, 136, 97, 83, 93, 0, - 121, 162, 191, 195, 496, 426, 435, 105, 433, 193, - 172, 231, 469, 174, 192, 140, 221, 185, 230, 240, + 222, 223, 232, 239, 242, 506, 494, 0, 451, 509, + 424, 441, 517, 442, 445, 482, 409, 464, 165, 439, + 0, 428, 404, 435, 405, 426, 453, 111, 457, 423, + 496, 467, 508, 137, 429, 515, 139, 473, 0, 211, + 153, 0, 0, 455, 498, 462, 491, 450, 483, 414, + 472, 510, 440, 480, 511, 0, 0, 0, 80, 0, + 0, 0, 0, 0, 0, 0, 0, 101, 0, 477, + 505, 437, 479, 481, 403, 474, 0, 407, 410, 516, + 501, 432, 433, 0, 0, 0, 0, 0, 0, 0, + 454, 463, 488, 448, 0, 0, 0, 0, 0, 0, + 1223, 0, 430, 0, 471, 0, 0, 0, 411, 408, + 0, 0, 452, 0, 0, 0, 413, 0, 431, 489, + 0, 401, 119, 493, 500, 449, 267, 504, 447, 446, + 507, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 497, 427, 436, 105, 434, 193, + 172, 231, 470, 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, - 156, 0, 405, 0, 212, 234, 249, 99, 421, 219, + 156, 0, 406, 0, 212, 234, 249, 99, 422, 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, - 210, 417, 420, 415, 416, 464, 465, 511, 512, 513, - 489, 411, 0, 418, 419, 0, 494, 501, 502, 468, - 82, 91, 138, 246, 186, 116, 235, 401, 414, 109, - 424, 0, 0, 437, 442, 443, 455, 457, 458, 459, - 460, 467, 474, 475, 477, 483, 484, 485, 486, 491, - 498, 517, 84, 85, 92, 98, 104, 108, 112, 115, + 210, 418, 421, 416, 417, 465, 466, 512, 513, 514, + 490, 412, 0, 419, 420, 0, 495, 502, 503, 469, + 82, 91, 138, 246, 186, 116, 235, 402, 415, 109, + 425, 0, 0, 438, 443, 444, 456, 458, 459, 460, + 461, 468, 475, 476, 478, 484, 485, 486, 487, 492, + 499, 518, 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, - 207, 213, 216, 222, 223, 232, 239, 242, 505, 493, - 0, 450, 508, 423, 440, 516, 441, 444, 481, 408, - 463, 165, 438, 0, 427, 403, 434, 404, 425, 452, - 111, 456, 422, 495, 466, 507, 137, 428, 514, 139, - 472, 0, 211, 153, 0, 0, 454, 497, 461, 490, - 449, 482, 413, 471, 509, 439, 479, 510, 0, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 0, 476, 504, 436, 478, 480, 402, 473, 0, - 406, 409, 515, 500, 431, 432, 0, 0, 0, 0, - 0, 0, 0, 453, 462, 487, 447, 0, 0, 0, - 0, 0, 0, 849, 0, 429, 0, 470, 0, 0, - 0, 410, 407, 0, 0, 451, 0, 0, 0, 412, - 0, 430, 488, 0, 400, 119, 492, 499, 448, 267, - 503, 446, 445, 506, 184, 0, 215, 122, 136, 97, - 83, 93, 0, 121, 162, 191, 195, 496, 426, 435, - 105, 433, 193, 172, 231, 469, 174, 192, 140, 221, + 207, 213, 216, 222, 223, 232, 239, 242, 506, 494, + 0, 451, 509, 424, 441, 517, 442, 445, 482, 409, + 464, 165, 439, 0, 428, 404, 435, 405, 426, 453, + 111, 457, 423, 496, 467, 508, 137, 429, 515, 139, + 473, 0, 211, 153, 0, 0, 455, 498, 462, 491, + 450, 483, 414, 472, 510, 440, 480, 511, 0, 0, + 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, + 101, 0, 477, 505, 437, 479, 481, 403, 474, 0, + 407, 410, 516, 501, 432, 433, 0, 0, 0, 0, + 0, 0, 0, 454, 463, 488, 448, 0, 0, 0, + 0, 0, 0, 955, 0, 430, 0, 471, 0, 0, + 0, 411, 408, 0, 0, 452, 0, 0, 0, 413, + 0, 431, 489, 0, 401, 119, 493, 500, 449, 267, + 504, 447, 446, 507, 184, 0, 215, 122, 136, 97, + 83, 93, 0, 121, 162, 191, 195, 497, 427, 436, + 105, 434, 193, 172, 231, 470, 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, - 125, 155, 154, 156, 0, 405, 0, 212, 234, 249, - 99, 421, 219, 243, 244, 0, 0, 100, 118, 113, + 125, 155, 154, 156, 0, 406, 0, 212, 234, 249, + 99, 422, 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, 171, - 194, 103, 233, 210, 417, 420, 415, 416, 464, 465, - 511, 512, 513, 489, 411, 0, 418, 419, 0, 494, - 501, 502, 468, 82, 91, 138, 246, 186, 116, 235, - 401, 414, 109, 424, 0, 0, 437, 442, 443, 455, - 457, 458, 459, 460, 467, 474, 475, 477, 483, 484, - 485, 486, 491, 498, 517, 84, 85, 92, 98, 104, + 194, 103, 233, 210, 418, 421, 416, 417, 465, 466, + 512, 513, 514, 490, 412, 0, 419, 420, 0, 495, + 502, 503, 469, 82, 91, 138, 246, 186, 116, 235, + 402, 415, 109, 425, 0, 0, 438, 443, 444, 456, + 458, 459, 460, 461, 468, 475, 476, 478, 484, 485, + 486, 487, 492, 499, 518, 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, 239, - 242, 505, 493, 0, 450, 508, 423, 440, 516, 441, - 444, 481, 408, 463, 165, 438, 0, 427, 403, 434, - 404, 425, 452, 111, 456, 422, 495, 466, 507, 137, - 428, 514, 139, 472, 0, 211, 153, 0, 0, 454, - 497, 461, 490, 449, 482, 413, 471, 509, 439, 479, - 510, 0, 0, 0, 80, 0, 0, 0, 0, 0, - 0, 0, 0, 101, 0, 476, 504, 436, 478, 480, - 402, 473, 0, 406, 409, 515, 500, 431, 432, 0, - 0, 0, 0, 0, 0, 0, 453, 462, 487, 447, - 0, 0, 0, 0, 0, 0, 0, 0, 429, 0, - 470, 0, 0, 0, 410, 407, 0, 0, 451, 0, - 0, 0, 412, 0, 430, 488, 0, 400, 119, 492, - 499, 448, 267, 503, 446, 445, 506, 184, 0, 215, + 242, 506, 494, 0, 451, 509, 424, 441, 517, 442, + 445, 482, 409, 464, 165, 439, 0, 428, 404, 435, + 405, 426, 453, 111, 457, 423, 496, 467, 508, 137, + 429, 515, 139, 473, 0, 211, 153, 0, 0, 455, + 498, 462, 491, 450, 483, 414, 472, 510, 440, 480, + 511, 0, 0, 0, 322, 0, 0, 0, 0, 0, + 0, 0, 0, 101, 0, 477, 505, 437, 479, 481, + 403, 474, 0, 407, 410, 516, 501, 432, 433, 0, + 0, 0, 0, 0, 0, 0, 454, 463, 488, 448, + 0, 0, 0, 0, 0, 0, 851, 0, 430, 0, + 471, 0, 0, 0, 411, 408, 0, 0, 452, 0, + 0, 0, 413, 0, 431, 489, 0, 401, 119, 493, + 500, 449, 267, 504, 447, 446, 507, 184, 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, 195, - 496, 426, 435, 105, 433, 193, 172, 231, 469, 174, + 497, 427, 436, 105, 434, 193, 172, 231, 470, 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, - 182, 142, 183, 125, 155, 154, 156, 0, 405, 0, - 212, 234, 249, 99, 421, 219, 243, 244, 0, 0, + 182, 142, 183, 125, 155, 154, 156, 0, 406, 0, + 212, 234, 249, 99, 422, 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, - 188, 247, 171, 194, 103, 233, 210, 417, 420, 415, - 416, 464, 465, 511, 512, 513, 489, 411, 0, 418, - 419, 0, 494, 501, 502, 468, 82, 91, 138, 246, - 186, 116, 235, 401, 414, 109, 424, 0, 0, 437, - 442, 443, 455, 457, 458, 459, 460, 467, 474, 475, - 477, 483, 484, 485, 486, 491, 498, 517, 84, 85, + 188, 247, 171, 194, 103, 233, 210, 418, 421, 416, + 417, 465, 466, 512, 513, 514, 490, 412, 0, 419, + 420, 0, 495, 502, 503, 469, 82, 91, 138, 246, + 186, 116, 235, 402, 415, 109, 425, 0, 0, 438, + 443, 444, 456, 458, 459, 460, 461, 468, 475, 476, + 478, 484, 485, 486, 487, 492, 499, 518, 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, - 223, 232, 239, 242, 505, 493, 0, 450, 508, 423, - 440, 516, 441, 444, 481, 408, 463, 165, 438, 0, - 427, 403, 434, 404, 425, 452, 111, 456, 422, 495, - 466, 507, 137, 428, 514, 139, 472, 0, 211, 153, - 0, 0, 454, 497, 461, 490, 449, 482, 413, 471, - 509, 439, 479, 510, 0, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 0, 0, 101, 0, 476, 504, - 436, 478, 480, 402, 473, 0, 406, 409, 515, 500, - 431, 432, 0, 0, 0, 0, 0, 0, 0, 453, - 462, 487, 447, 0, 0, 0, 0, 0, 0, 0, - 0, 429, 0, 470, 0, 0, 0, 410, 407, 0, - 0, 451, 0, 0, 0, 412, 0, 430, 488, 0, - 400, 119, 492, 499, 448, 267, 503, 446, 445, 506, + 223, 232, 239, 242, 506, 494, 0, 451, 509, 424, + 441, 517, 442, 445, 482, 409, 464, 165, 439, 0, + 428, 404, 435, 405, 426, 453, 111, 457, 423, 496, + 467, 508, 137, 429, 515, 139, 473, 0, 211, 153, + 0, 0, 455, 498, 462, 491, 450, 483, 414, 472, + 510, 440, 480, 511, 0, 0, 0, 80, 0, 0, + 0, 0, 0, 0, 0, 0, 101, 0, 477, 505, + 437, 479, 481, 403, 474, 0, 407, 410, 516, 501, + 432, 433, 0, 0, 0, 0, 0, 0, 0, 454, + 463, 488, 448, 0, 0, 0, 0, 0, 0, 0, + 0, 430, 0, 471, 0, 0, 0, 411, 408, 0, + 0, 452, 0, 0, 0, 413, 0, 431, 489, 0, + 401, 119, 493, 500, 449, 267, 504, 447, 446, 507, 184, 0, 215, 122, 136, 97, 83, 93, 0, 121, - 162, 191, 195, 496, 426, 435, 105, 433, 193, 172, - 231, 469, 174, 192, 140, 221, 185, 230, 240, 241, + 162, 191, 195, 497, 427, 436, 105, 434, 193, 172, + 231, 470, 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, 156, - 0, 405, 0, 212, 234, 249, 99, 421, 219, 243, + 0, 406, 0, 212, 234, 249, 99, 422, 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, 210, - 417, 420, 415, 416, 464, 465, 511, 512, 513, 489, - 411, 0, 418, 419, 0, 494, 501, 502, 468, 82, - 91, 138, 246, 186, 116, 235, 401, 414, 109, 424, - 0, 0, 437, 442, 443, 455, 457, 458, 459, 460, - 467, 474, 475, 477, 483, 484, 485, 486, 491, 498, - 517, 84, 85, 92, 98, 104, 108, 112, 115, 120, + 418, 421, 416, 417, 465, 466, 512, 513, 514, 490, + 412, 0, 419, 420, 0, 495, 502, 503, 469, 82, + 91, 138, 246, 186, 116, 235, 402, 415, 109, 425, + 0, 0, 438, 443, 444, 456, 458, 459, 460, 461, + 468, 475, 476, 478, 484, 485, 486, 487, 492, 499, + 518, 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, - 213, 216, 222, 223, 232, 239, 242, 505, 493, 0, - 450, 508, 423, 440, 516, 441, 444, 481, 408, 463, - 165, 438, 0, 427, 403, 434, 404, 425, 452, 111, - 456, 422, 495, 466, 507, 137, 428, 514, 139, 472, - 0, 211, 153, 0, 0, 454, 497, 461, 490, 449, - 482, 413, 471, 509, 439, 479, 510, 0, 0, 0, - 80, 0, 0, 0, 0, 0, 0, 0, 0, 101, - 0, 476, 504, 436, 478, 480, 402, 473, 0, 406, - 409, 515, 500, 431, 432, 0, 0, 0, 0, 0, - 0, 0, 453, 462, 487, 447, 0, 0, 0, 0, - 0, 0, 0, 0, 429, 0, 470, 0, 0, 0, - 410, 407, 0, 0, 451, 0, 0, 0, 412, 0, - 430, 488, 0, 400, 119, 492, 499, 448, 267, 503, - 446, 445, 506, 184, 0, 215, 122, 136, 97, 83, - 93, 0, 121, 162, 191, 195, 496, 426, 435, 105, - 433, 193, 172, 231, 469, 174, 192, 140, 221, 185, + 213, 216, 222, 223, 232, 239, 242, 506, 494, 0, + 451, 509, 424, 441, 517, 442, 445, 482, 409, 464, + 165, 439, 0, 428, 404, 435, 405, 426, 453, 111, + 457, 423, 496, 467, 508, 137, 429, 515, 139, 473, + 0, 211, 153, 0, 0, 455, 498, 462, 491, 450, + 483, 414, 472, 510, 440, 480, 511, 0, 0, 0, + 322, 0, 0, 0, 0, 0, 0, 0, 0, 101, + 0, 477, 505, 437, 479, 481, 403, 474, 0, 407, + 410, 516, 501, 432, 433, 0, 0, 0, 0, 0, + 0, 0, 454, 463, 488, 448, 0, 0, 0, 0, + 0, 0, 0, 0, 430, 0, 471, 0, 0, 0, + 411, 408, 0, 0, 452, 0, 0, 0, 413, 0, + 431, 489, 0, 401, 119, 493, 500, 449, 267, 504, + 447, 446, 507, 184, 0, 215, 122, 136, 97, 83, + 93, 0, 121, 162, 191, 195, 497, 427, 436, 105, + 434, 193, 172, 231, 470, 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, 94, - 237, 90, 398, 236, 158, 220, 228, 152, 145, 89, + 237, 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, 125, - 155, 154, 156, 0, 405, 0, 212, 234, 249, 99, - 421, 219, 243, 244, 0, 0, 100, 118, 113, 181, - 399, 397, 127, 209, 134, 141, 188, 247, 171, 194, - 103, 233, 210, 417, 420, 415, 416, 464, 465, 511, - 512, 513, 489, 411, 0, 418, 419, 0, 494, 501, - 502, 468, 82, 91, 138, 246, 186, 116, 235, 401, - 414, 109, 424, 0, 0, 437, 442, 443, 455, 457, - 458, 459, 460, 467, 474, 475, 477, 483, 484, 485, - 486, 491, 498, 517, 84, 85, 92, 98, 104, 108, + 155, 154, 156, 0, 406, 0, 212, 234, 249, 99, + 422, 219, 243, 244, 0, 0, 100, 118, 113, 181, + 157, 96, 127, 209, 134, 141, 188, 247, 171, 194, + 103, 233, 210, 418, 421, 416, 417, 465, 466, 512, + 513, 514, 490, 412, 0, 419, 420, 0, 495, 502, + 503, 469, 82, 91, 138, 246, 186, 116, 235, 402, + 415, 109, 425, 0, 0, 438, 443, 444, 456, 458, + 459, 460, 461, 468, 475, 476, 478, 484, 485, 486, + 487, 492, 499, 518, 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, 239, 242, - 505, 493, 0, 450, 508, 423, 440, 516, 441, 444, - 481, 408, 463, 165, 438, 0, 427, 403, 434, 404, - 425, 452, 111, 456, 422, 495, 466, 507, 137, 428, - 514, 139, 472, 0, 211, 153, 0, 0, 454, 497, - 461, 490, 449, 482, 413, 471, 509, 439, 479, 510, - 0, 0, 0, 265, 0, 0, 0, 0, 0, 0, - 0, 0, 101, 0, 476, 504, 436, 478, 480, 402, - 473, 0, 406, 409, 515, 500, 431, 432, 0, 0, - 0, 0, 0, 0, 0, 453, 462, 487, 447, 0, - 0, 0, 0, 0, 0, 0, 0, 429, 0, 470, - 0, 0, 0, 410, 407, 0, 0, 451, 0, 0, - 0, 412, 0, 430, 488, 0, 400, 119, 492, 499, - 448, 267, 503, 446, 445, 506, 184, 0, 215, 122, - 136, 97, 83, 93, 0, 121, 162, 191, 195, 496, - 426, 435, 105, 433, 193, 172, 231, 469, 174, 192, + 506, 494, 0, 451, 509, 424, 441, 517, 442, 445, + 482, 409, 464, 165, 439, 0, 428, 404, 435, 405, + 426, 453, 111, 457, 423, 496, 467, 508, 137, 429, + 515, 139, 473, 0, 211, 153, 0, 0, 455, 498, + 462, 491, 450, 483, 414, 472, 510, 440, 480, 511, + 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, + 0, 0, 101, 0, 477, 505, 437, 479, 481, 403, + 474, 0, 407, 410, 516, 501, 432, 433, 0, 0, + 0, 0, 0, 0, 0, 454, 463, 488, 448, 0, + 0, 0, 0, 0, 0, 0, 0, 430, 0, 471, + 0, 0, 0, 411, 408, 0, 0, 452, 0, 0, + 0, 413, 0, 431, 489, 0, 401, 119, 493, 500, + 449, 267, 504, 447, 446, 507, 184, 0, 215, 122, + 136, 97, 83, 93, 0, 121, 162, 191, 195, 497, + 427, 436, 105, 434, 193, 172, 231, 470, 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, - 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, + 106, 248, 94, 237, 90, 399, 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, - 142, 183, 125, 155, 154, 156, 0, 405, 0, 212, - 234, 249, 99, 421, 219, 243, 244, 0, 0, 100, - 118, 113, 181, 157, 96, 127, 209, 134, 141, 188, - 247, 171, 194, 103, 233, 210, 417, 420, 415, 416, - 464, 465, 511, 512, 513, 489, 411, 0, 418, 419, - 0, 494, 501, 502, 468, 82, 91, 138, 246, 186, - 116, 235, 401, 414, 109, 424, 0, 0, 437, 442, - 443, 455, 457, 458, 459, 460, 467, 474, 475, 477, - 483, 484, 485, 486, 491, 498, 517, 84, 85, 92, + 142, 183, 125, 155, 154, 156, 0, 406, 0, 212, + 234, 249, 99, 422, 219, 243, 244, 0, 0, 100, + 118, 113, 181, 400, 398, 127, 209, 134, 141, 188, + 247, 171, 194, 103, 233, 210, 418, 421, 416, 417, + 465, 466, 512, 513, 514, 490, 412, 0, 419, 420, + 0, 495, 502, 503, 469, 82, 91, 138, 246, 186, + 116, 235, 402, 415, 109, 425, 0, 0, 438, 443, + 444, 456, 458, 459, 460, 461, 468, 475, 476, 478, + 484, 485, 486, 487, 492, 499, 518, 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, 223, - 232, 239, 242, 505, 493, 0, 450, 508, 423, 440, - 516, 441, 444, 481, 408, 463, 165, 438, 0, 427, - 403, 434, 404, 425, 452, 111, 456, 422, 495, 466, - 507, 137, 428, 514, 139, 472, 0, 211, 153, 0, - 0, 454, 497, 461, 490, 449, 482, 413, 471, 509, - 439, 479, 510, 0, 0, 0, 80, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 0, 476, 504, 436, - 478, 480, 402, 473, 0, 406, 409, 515, 500, 431, - 432, 0, 0, 0, 0, 0, 0, 0, 453, 462, - 487, 447, 0, 0, 0, 0, 0, 0, 0, 0, - 429, 0, 470, 0, 0, 0, 410, 407, 0, 0, - 451, 0, 0, 0, 412, 0, 430, 488, 0, 400, - 119, 492, 499, 448, 267, 503, 446, 445, 506, 184, + 232, 239, 242, 506, 494, 0, 451, 509, 424, 441, + 517, 442, 445, 482, 409, 464, 165, 439, 0, 428, + 404, 435, 405, 426, 453, 111, 457, 423, 496, 467, + 508, 137, 429, 515, 139, 473, 0, 211, 153, 0, + 0, 455, 498, 462, 491, 450, 483, 414, 472, 510, + 440, 480, 511, 0, 0, 0, 265, 0, 0, 0, + 0, 0, 0, 0, 0, 101, 0, 477, 505, 437, + 479, 481, 403, 474, 0, 407, 410, 516, 501, 432, + 433, 0, 0, 0, 0, 0, 0, 0, 454, 463, + 488, 448, 0, 0, 0, 0, 0, 0, 0, 0, + 430, 0, 471, 0, 0, 0, 411, 408, 0, 0, + 452, 0, 0, 0, 413, 0, 431, 489, 0, 401, + 119, 493, 500, 449, 267, 504, 447, 446, 507, 184, 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, - 191, 195, 496, 426, 435, 105, 433, 193, 172, 231, - 469, 174, 192, 140, 221, 185, 230, 240, 241, 218, - 238, 245, 208, 86, 217, 711, 102, 203, 88, 227, + 191, 195, 497, 427, 436, 105, 434, 193, 172, 231, + 470, 174, 192, 140, 221, 185, 230, 240, 241, 218, + 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, - 164, 224, 225, 106, 248, 94, 237, 90, 398, 236, + 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, - 405, 0, 212, 234, 249, 99, 421, 219, 243, 244, - 0, 0, 100, 118, 113, 181, 399, 397, 127, 209, - 134, 141, 188, 247, 171, 194, 103, 233, 210, 417, - 420, 415, 416, 464, 465, 511, 512, 513, 489, 411, - 0, 418, 419, 0, 494, 501, 502, 468, 82, 91, - 138, 246, 186, 116, 235, 401, 414, 109, 424, 0, - 0, 437, 442, 443, 455, 457, 458, 459, 460, 467, - 474, 475, 477, 483, 484, 485, 486, 491, 498, 517, + 406, 0, 212, 234, 249, 99, 422, 219, 243, 244, + 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, + 134, 141, 188, 247, 171, 194, 103, 233, 210, 418, + 421, 416, 417, 465, 466, 512, 513, 514, 490, 412, + 0, 419, 420, 0, 495, 502, 503, 469, 82, 91, + 138, 246, 186, 116, 235, 402, 415, 109, 425, 0, + 0, 438, 443, 444, 456, 458, 459, 460, 461, 468, + 475, 476, 478, 484, 485, 486, 487, 492, 499, 518, 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, - 216, 222, 223, 232, 239, 242, 505, 493, 0, 450, - 508, 423, 440, 516, 441, 444, 481, 408, 463, 165, - 438, 0, 427, 403, 434, 404, 425, 452, 111, 456, - 422, 495, 466, 507, 137, 428, 514, 139, 472, 0, - 211, 153, 0, 0, 454, 497, 461, 490, 449, 482, - 413, 471, 509, 439, 479, 510, 0, 0, 0, 80, + 216, 222, 223, 232, 239, 242, 506, 494, 0, 451, + 509, 424, 441, 517, 442, 445, 482, 409, 464, 165, + 439, 0, 428, 404, 435, 405, 426, 453, 111, 457, + 423, 496, 467, 508, 137, 429, 515, 139, 473, 0, + 211, 153, 0, 0, 455, 498, 462, 491, 450, 483, + 414, 472, 510, 440, 480, 511, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, - 476, 504, 436, 478, 480, 402, 473, 0, 406, 409, - 515, 500, 431, 432, 0, 0, 0, 0, 0, 0, - 0, 453, 462, 487, 447, 0, 0, 0, 0, 0, - 0, 0, 0, 429, 0, 470, 0, 0, 0, 410, - 407, 0, 0, 451, 0, 0, 0, 412, 0, 430, - 488, 0, 400, 119, 492, 499, 448, 267, 503, 446, - 445, 506, 184, 0, 215, 122, 136, 97, 83, 93, - 0, 121, 162, 191, 195, 496, 426, 435, 105, 433, - 193, 172, 231, 469, 174, 192, 140, 221, 185, 230, - 240, 241, 218, 238, 245, 208, 86, 217, 389, 102, + 477, 505, 437, 479, 481, 403, 474, 0, 407, 410, + 516, 501, 432, 433, 0, 0, 0, 0, 0, 0, + 0, 454, 463, 488, 448, 0, 0, 0, 0, 0, + 0, 0, 0, 430, 0, 471, 0, 0, 0, 411, + 408, 0, 0, 452, 0, 0, 0, 413, 0, 431, + 489, 0, 401, 119, 493, 500, 449, 267, 504, 447, + 446, 507, 184, 0, 215, 122, 136, 97, 83, 93, + 0, 121, 162, 191, 195, 497, 427, 436, 105, 434, + 193, 172, 231, 470, 174, 192, 140, 221, 185, 230, + 240, 241, 218, 238, 245, 208, 86, 217, 713, 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, - 90, 398, 236, 158, 220, 228, 152, 145, 89, 226, + 90, 399, 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, - 154, 156, 0, 405, 0, 212, 234, 249, 99, 421, - 219, 243, 244, 0, 0, 100, 118, 113, 181, 399, - 397, 392, 391, 134, 141, 188, 247, 171, 194, 103, - 233, 210, 417, 420, 415, 416, 464, 465, 511, 512, - 513, 489, 411, 0, 418, 419, 0, 494, 501, 502, - 468, 82, 91, 138, 246, 186, 116, 235, 401, 414, - 109, 424, 0, 0, 437, 442, 443, 455, 457, 458, - 459, 460, 467, 474, 475, 477, 483, 484, 485, 486, - 491, 498, 517, 84, 85, 92, 98, 104, 108, 112, + 154, 156, 0, 406, 0, 212, 234, 249, 99, 422, + 219, 243, 244, 0, 0, 100, 118, 113, 181, 400, + 398, 127, 209, 134, 141, 188, 247, 171, 194, 103, + 233, 210, 418, 421, 416, 417, 465, 466, 512, 513, + 514, 490, 412, 0, 419, 420, 0, 495, 502, 503, + 469, 82, 91, 138, 246, 186, 116, 235, 402, 415, + 109, 425, 0, 0, 438, 443, 444, 456, 458, 459, + 460, 461, 468, 475, 476, 478, 484, 485, 486, 487, + 492, 499, 518, 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, - 206, 207, 213, 216, 222, 223, 232, 239, 242, 165, - 0, 0, 885, 0, 324, 0, 0, 0, 111, 0, - 321, 0, 0, 0, 137, 886, 364, 139, 0, 0, - 211, 153, 0, 0, 0, 0, 355, 356, 0, 0, - 0, 0, 0, 0, 0, 0, 54, 0, 0, 322, - 343, 342, 345, 346, 347, 348, 0, 0, 101, 344, - 349, 350, 351, 0, 0, 0, 319, 336, 0, 363, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, - 334, 315, 0, 0, 0, 377, 0, 335, 0, 0, - 330, 331, 332, 337, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 0, 0, 0, 267, 0, 0, - 375, 0, 184, 0, 215, 122, 136, 97, 83, 93, - 0, 121, 162, 191, 195, 0, 0, 0, 105, 0, - 193, 172, 231, 0, 174, 192, 140, 221, 185, 230, - 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, - 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, - 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, - 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, - 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, - 154, 156, 0, 0, 0, 212, 234, 249, 99, 0, - 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, - 96, 127, 209, 134, 141, 188, 247, 171, 194, 103, - 233, 210, 365, 376, 371, 372, 369, 370, 368, 367, - 366, 378, 357, 358, 359, 360, 362, 0, 373, 374, - 361, 82, 91, 138, 246, 186, 116, 235, 0, 0, - 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 206, 207, 213, 216, 222, 223, 232, 239, 242, 506, + 494, 0, 451, 509, 424, 441, 517, 442, 445, 482, + 409, 464, 165, 439, 0, 428, 404, 435, 405, 426, + 453, 111, 457, 423, 496, 467, 508, 137, 429, 515, + 139, 473, 0, 211, 153, 0, 0, 455, 498, 462, + 491, 450, 483, 414, 472, 510, 440, 480, 511, 0, + 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, + 0, 101, 0, 477, 505, 437, 479, 481, 403, 474, + 0, 407, 410, 516, 501, 432, 433, 0, 0, 0, + 0, 0, 0, 0, 454, 463, 488, 448, 0, 0, + 0, 0, 0, 0, 0, 0, 430, 0, 471, 0, + 0, 0, 411, 408, 0, 0, 452, 0, 0, 0, + 413, 0, 431, 489, 0, 401, 119, 493, 500, 449, + 267, 504, 447, 446, 507, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 497, 427, + 436, 105, 434, 193, 172, 231, 470, 174, 192, 140, + 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, + 217, 390, 102, 203, 88, 227, 214, 151, 131, 132, + 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, + 248, 94, 237, 90, 399, 236, 158, 220, 228, 152, + 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, + 183, 125, 155, 154, 156, 0, 406, 0, 212, 234, + 249, 99, 422, 219, 243, 244, 0, 0, 100, 118, + 113, 181, 400, 398, 393, 392, 134, 141, 188, 247, + 171, 194, 103, 233, 210, 418, 421, 416, 417, 465, + 466, 512, 513, 514, 490, 412, 0, 419, 420, 0, + 495, 502, 503, 469, 82, 91, 138, 246, 186, 116, + 235, 402, 415, 109, 425, 0, 0, 438, 443, 444, + 456, 458, 459, 460, 461, 468, 475, 476, 478, 484, + 485, 486, 487, 492, 499, 518, 84, 85, 92, 98, + 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, + 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, + 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, + 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, + 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, + 239, 242, 165, 0, 0, 887, 0, 324, 0, 0, + 0, 111, 0, 321, 0, 0, 0, 137, 888, 364, + 139, 0, 0, 211, 153, 0, 0, 0, 0, 355, + 356, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 322, 343, 342, 345, 346, 347, 348, 0, + 0, 101, 344, 349, 350, 351, 0, 0, 0, 319, + 336, 0, 363, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 333, 334, 315, 0, 0, 0, 378, 0, + 335, 0, 0, 330, 331, 332, 337, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 377, 0, 0, + 267, 0, 0, 375, 0, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, + 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, + 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, + 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, + 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, + 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, + 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, + 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, + 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, + 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, + 171, 194, 103, 233, 210, 365, 376, 371, 372, 369, + 370, 368, 367, 366, 379, 357, 358, 359, 360, 362, + 0, 373, 374, 361, 82, 91, 138, 246, 186, 116, + 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 85, 92, 98, 104, 108, 112, - 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, - 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, - 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, - 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, - 206, 207, 213, 216, 222, 223, 232, 239, 242, 165, - 0, 0, 0, 0, 324, 0, 0, 0, 111, 0, - 321, 0, 0, 0, 137, 0, 364, 139, 0, 0, - 211, 153, 0, 0, 0, 0, 355, 356, 0, 0, - 0, 0, 0, 0, 959, 0, 54, 0, 0, 322, - 343, 342, 345, 346, 347, 348, 0, 0, 101, 344, - 349, 350, 351, 960, 0, 0, 319, 336, 0, 363, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, - 334, 0, 0, 0, 0, 377, 0, 335, 0, 0, - 330, 331, 332, 337, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 0, 0, 0, 267, 0, 0, - 375, 0, 184, 0, 215, 122, 136, 97, 83, 93, - 0, 121, 162, 191, 195, 0, 0, 0, 105, 0, - 193, 172, 231, 0, 174, 192, 140, 221, 185, 230, - 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, - 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, - 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, - 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, - 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, - 154, 156, 0, 0, 0, 212, 234, 249, 99, 0, - 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, - 96, 127, 209, 134, 141, 188, 247, 171, 194, 103, - 233, 210, 365, 376, 371, 372, 369, 370, 368, 367, - 366, 378, 357, 358, 359, 360, 362, 0, 373, 374, - 361, 82, 91, 138, 246, 186, 116, 235, 0, 0, - 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, + 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, + 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, + 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, + 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, + 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, + 239, 242, 165, 0, 0, 0, 0, 324, 0, 0, + 0, 111, 0, 321, 0, 0, 0, 137, 0, 364, + 139, 0, 0, 211, 153, 0, 0, 0, 0, 355, + 356, 0, 0, 0, 0, 0, 0, 962, 0, 54, + 0, 0, 322, 343, 342, 345, 346, 347, 348, 0, + 0, 101, 344, 349, 350, 351, 963, 0, 0, 319, + 336, 0, 363, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 333, 334, 0, 0, 0, 0, 378, 0, + 335, 0, 0, 330, 331, 332, 337, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 377, 0, 0, + 267, 0, 0, 375, 0, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, + 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, + 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, + 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, + 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, + 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, + 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, + 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, + 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, + 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, + 171, 194, 103, 233, 210, 365, 376, 371, 372, 369, + 370, 368, 367, 366, 379, 357, 358, 359, 360, 362, + 0, 373, 374, 361, 82, 91, 138, 246, 186, 116, + 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 85, 92, 98, 104, 108, 112, - 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, - 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, - 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, - 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, - 206, 207, 213, 216, 222, 223, 232, 239, 242, 165, - 0, 0, 0, 0, 324, 0, 0, 0, 111, 0, - 321, 0, 0, 0, 137, 0, 364, 139, 0, 0, - 211, 153, 0, 0, 0, 0, 355, 356, 0, 0, - 0, 0, 0, 0, 0, 0, 54, 0, 583, 322, - 343, 342, 345, 346, 347, 348, 0, 0, 101, 344, - 349, 350, 351, 0, 0, 0, 319, 336, 0, 363, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, - 334, 0, 0, 0, 0, 377, 0, 335, 0, 0, - 330, 331, 332, 337, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 0, 0, 0, 267, 0, 0, - 375, 0, 184, 0, 215, 122, 136, 97, 83, 93, - 0, 121, 162, 191, 195, 0, 0, 0, 105, 0, - 193, 172, 231, 0, 174, 192, 140, 221, 185, 230, - 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, - 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, - 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, - 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, - 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, - 154, 156, 0, 0, 0, 212, 234, 249, 99, 0, - 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, - 96, 127, 209, 134, 141, 188, 247, 171, 194, 103, - 233, 210, 365, 376, 371, 372, 369, 370, 368, 367, - 366, 378, 357, 358, 359, 360, 362, 0, 373, 374, - 361, 82, 91, 138, 246, 186, 116, 235, 0, 0, - 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, + 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, + 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, + 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, + 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, + 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, + 239, 242, 165, 0, 0, 0, 0, 324, 0, 0, + 0, 111, 0, 321, 0, 0, 0, 137, 0, 364, + 139, 0, 0, 211, 153, 0, 0, 0, 0, 355, + 356, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 584, 322, 343, 342, 345, 346, 347, 348, 0, + 0, 101, 344, 349, 350, 351, 0, 0, 0, 319, + 336, 0, 363, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 333, 334, 0, 0, 0, 0, 378, 0, + 335, 0, 0, 330, 331, 332, 337, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 377, 0, 0, + 267, 0, 0, 375, 0, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, + 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, + 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, + 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, + 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, + 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, + 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, + 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, + 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, + 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, + 171, 194, 103, 233, 210, 365, 376, 371, 372, 369, + 370, 368, 367, 366, 379, 357, 358, 359, 360, 362, + 0, 373, 374, 361, 82, 91, 138, 246, 186, 116, + 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 85, 92, 98, 104, 108, 112, - 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, - 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, - 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, - 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, - 206, 207, 213, 216, 222, 223, 232, 239, 242, 165, - 0, 0, 0, 0, 324, 0, 0, 0, 111, 0, - 321, 0, 0, 0, 137, 0, 364, 139, 0, 0, - 211, 153, 0, 0, 0, 0, 355, 356, 0, 0, - 0, 0, 0, 0, 0, 0, 54, 0, 0, 322, - 343, 342, 345, 346, 347, 348, 0, 0, 101, 344, - 349, 350, 351, 0, 0, 0, 319, 336, 0, 363, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, - 334, 315, 0, 0, 0, 377, 0, 335, 0, 0, - 330, 331, 332, 337, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 0, 0, 0, 267, 0, 0, - 375, 0, 184, 0, 215, 122, 136, 97, 83, 93, - 0, 121, 162, 191, 195, 0, 0, 0, 105, 0, - 193, 172, 231, 0, 174, 192, 140, 221, 185, 230, - 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, - 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, - 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, - 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, - 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, - 154, 156, 0, 0, 0, 212, 234, 249, 99, 0, - 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, - 96, 127, 209, 134, 141, 188, 247, 171, 194, 103, - 233, 210, 365, 376, 371, 372, 369, 370, 368, 367, - 366, 378, 357, 358, 359, 360, 362, 0, 373, 374, - 361, 82, 91, 138, 246, 186, 116, 235, 0, 0, - 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, + 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, + 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, + 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, + 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, + 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, + 239, 242, 165, 0, 0, 0, 0, 324, 0, 0, + 0, 111, 0, 321, 0, 0, 0, 137, 0, 364, + 139, 0, 0, 211, 153, 0, 0, 0, 0, 355, + 356, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 322, 343, 342, 345, 346, 347, 348, 0, + 0, 101, 344, 349, 350, 351, 0, 0, 0, 319, + 336, 0, 363, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 333, 334, 315, 0, 0, 0, 378, 0, + 335, 0, 0, 330, 331, 332, 337, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 377, 0, 0, + 267, 0, 0, 375, 0, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, + 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, + 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, + 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, + 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, + 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, + 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, + 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, + 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, + 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, + 171, 194, 103, 233, 210, 365, 376, 371, 372, 369, + 370, 368, 367, 366, 379, 357, 358, 359, 360, 362, + 0, 373, 374, 361, 82, 91, 138, 246, 186, 116, + 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 85, 92, 98, 104, 108, 112, - 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, - 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, - 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, - 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, - 206, 207, 213, 216, 222, 223, 232, 239, 242, 165, - 0, 0, 0, 0, 324, 0, 0, 0, 111, 0, - 321, 0, 0, 0, 137, 0, 364, 139, 0, 0, - 211, 153, 0, 0, 0, 0, 355, 356, 0, 0, - 0, 0, 0, 0, 0, 0, 54, 0, 0, 322, - 343, 901, 345, 346, 347, 348, 0, 0, 101, 344, - 349, 350, 351, 0, 0, 0, 319, 336, 0, 363, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, - 334, 315, 0, 0, 0, 377, 0, 335, 0, 0, - 330, 331, 332, 337, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 0, 0, 0, 267, 0, 0, - 375, 0, 184, 0, 215, 122, 136, 97, 83, 93, - 0, 121, 162, 191, 195, 0, 0, 0, 105, 0, - 193, 172, 231, 0, 174, 192, 140, 221, 185, 230, - 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, - 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, - 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, - 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, - 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, - 154, 156, 0, 0, 0, 212, 234, 249, 99, 0, - 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, - 96, 127, 209, 134, 141, 188, 247, 171, 194, 103, - 233, 210, 365, 376, 371, 372, 369, 370, 368, 367, - 366, 378, 357, 358, 359, 360, 362, 0, 373, 374, - 361, 82, 91, 138, 246, 186, 116, 235, 0, 0, - 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, + 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, + 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, + 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, + 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, + 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, + 239, 242, 165, 0, 0, 0, 0, 324, 0, 0, + 0, 111, 0, 321, 0, 0, 0, 137, 0, 364, + 139, 0, 0, 211, 153, 0, 0, 0, 0, 355, + 356, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 322, 343, 903, 345, 346, 347, 348, 0, + 0, 101, 344, 349, 350, 351, 0, 0, 0, 319, + 336, 0, 363, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 333, 334, 315, 0, 0, 0, 378, 0, + 335, 0, 0, 330, 331, 332, 337, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 377, 0, 0, + 267, 0, 0, 375, 0, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, + 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, + 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, + 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, + 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, + 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, + 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, + 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, + 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, + 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, + 171, 194, 103, 233, 210, 365, 376, 371, 372, 369, + 370, 368, 367, 366, 379, 357, 358, 359, 360, 362, + 0, 373, 374, 361, 82, 91, 138, 246, 186, 116, + 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 85, 92, 98, 104, 108, 112, - 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, - 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, - 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, - 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, - 206, 207, 213, 216, 222, 223, 232, 239, 242, 165, - 0, 0, 0, 0, 324, 0, 0, 0, 111, 0, - 321, 0, 0, 0, 137, 0, 364, 139, 0, 0, - 211, 153, 0, 0, 0, 0, 355, 356, 0, 0, - 0, 0, 0, 0, 0, 0, 54, 0, 0, 322, - 343, 898, 345, 346, 347, 348, 0, 0, 101, 344, - 349, 350, 351, 0, 0, 0, 319, 336, 0, 363, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, - 334, 315, 0, 0, 0, 377, 0, 335, 0, 0, - 330, 331, 332, 337, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 0, 0, 0, 267, 0, 0, - 375, 0, 184, 0, 215, 122, 136, 97, 83, 93, - 0, 121, 162, 191, 195, 0, 0, 0, 105, 0, - 193, 172, 231, 0, 174, 192, 140, 221, 185, 230, - 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, - 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, - 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, - 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, - 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, - 154, 156, 0, 0, 0, 212, 234, 249, 99, 0, - 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, - 96, 127, 209, 134, 141, 188, 247, 171, 194, 103, - 233, 210, 365, 376, 371, 372, 369, 370, 368, 367, - 366, 378, 357, 358, 359, 360, 362, 0, 373, 374, - 361, 82, 91, 138, 246, 186, 116, 235, 0, 0, - 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, + 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, + 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, + 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, + 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, + 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, + 239, 242, 165, 0, 0, 0, 0, 324, 0, 0, + 0, 111, 0, 321, 0, 0, 0, 137, 0, 364, + 139, 0, 0, 211, 153, 0, 0, 0, 0, 355, + 356, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 322, 343, 900, 345, 346, 347, 348, 0, + 0, 101, 344, 349, 350, 351, 0, 0, 0, 319, + 336, 0, 363, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 333, 334, 315, 0, 0, 0, 378, 0, + 335, 0, 0, 330, 331, 332, 337, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 377, 0, 0, + 267, 0, 0, 375, 0, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, + 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, + 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, + 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, + 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, + 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, + 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, + 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, + 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, + 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, + 171, 194, 103, 233, 210, 365, 376, 371, 372, 369, + 370, 368, 367, 366, 379, 357, 358, 359, 360, 362, + 0, 373, 374, 361, 82, 91, 138, 246, 186, 116, + 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 85, 92, 98, 104, 108, 112, - 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, - 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, - 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, - 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, - 206, 207, 213, 216, 222, 223, 232, 239, 242, 24, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 165, 0, 0, 0, 0, 324, 0, 0, 0, - 111, 0, 321, 0, 0, 0, 137, 0, 364, 139, - 0, 0, 211, 153, 0, 0, 0, 0, 355, 356, - 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, - 0, 322, 343, 342, 345, 346, 347, 348, 0, 0, - 101, 344, 349, 350, 351, 0, 0, 0, 319, 336, - 0, 363, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 333, 334, 0, 0, 0, 0, 377, 0, 335, - 0, 0, 330, 331, 332, 337, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 0, 0, 0, 267, - 0, 0, 375, 0, 184, 0, 215, 122, 136, 97, - 83, 93, 0, 121, 162, 191, 195, 0, 0, 0, - 105, 0, 193, 172, 231, 0, 174, 192, 140, 221, - 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, - 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, - 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, - 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, - 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, - 125, 155, 154, 156, 0, 0, 0, 212, 234, 249, - 99, 0, 219, 243, 244, 0, 0, 100, 118, 113, - 181, 157, 96, 127, 209, 134, 141, 188, 247, 171, - 194, 103, 233, 210, 365, 376, 371, 372, 369, 370, - 368, 367, 366, 378, 357, 358, 359, 360, 362, 0, - 373, 374, 361, 82, 91, 138, 246, 186, 116, 235, - 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, + 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, + 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, + 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, + 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, + 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, + 239, 242, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 165, 0, 0, 0, 0, 324, + 0, 0, 0, 111, 0, 321, 0, 0, 0, 137, + 0, 364, 139, 0, 0, 211, 153, 0, 0, 0, + 0, 355, 356, 0, 0, 0, 0, 0, 0, 0, + 0, 54, 0, 0, 322, 343, 342, 345, 346, 347, + 348, 0, 0, 101, 344, 349, 350, 351, 0, 0, + 0, 319, 336, 0, 363, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 333, 334, 0, 0, 0, 0, + 378, 0, 335, 0, 0, 330, 331, 332, 337, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 377, + 0, 0, 267, 0, 0, 375, 0, 184, 0, 215, + 122, 136, 97, 83, 93, 0, 121, 162, 191, 195, + 0, 0, 0, 105, 0, 193, 172, 231, 0, 174, + 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, + 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, + 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, + 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, + 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, + 182, 142, 183, 125, 155, 154, 156, 0, 0, 0, + 212, 234, 249, 99, 0, 219, 243, 244, 0, 0, + 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, + 188, 247, 171, 194, 103, 233, 210, 365, 376, 371, + 372, 369, 370, 368, 367, 366, 379, 357, 358, 359, + 360, 362, 0, 373, 374, 361, 82, 91, 138, 246, + 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 84, 85, 92, 98, 104, - 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, - 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, - 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, - 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, - 204, 205, 206, 207, 213, 216, 222, 223, 232, 239, - 242, 165, 0, 0, 0, 0, 324, 0, 0, 0, - 111, 0, 321, 0, 0, 0, 137, 0, 364, 139, - 0, 0, 211, 153, 0, 0, 0, 0, 355, 356, - 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, - 0, 322, 343, 342, 345, 346, 347, 348, 0, 0, - 101, 344, 349, 350, 351, 0, 0, 0, 319, 336, - 0, 363, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 333, 334, 0, 0, 0, 0, 377, 0, 335, - 0, 0, 330, 331, 332, 337, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 0, 0, 0, 267, - 0, 0, 375, 0, 184, 0, 215, 122, 136, 97, - 83, 93, 0, 121, 162, 191, 195, 0, 0, 0, - 105, 0, 193, 172, 231, 0, 174, 192, 140, 221, - 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, - 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, - 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, - 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, - 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, - 125, 155, 154, 156, 0, 0, 0, 212, 234, 249, - 99, 0, 219, 243, 244, 0, 0, 100, 118, 113, - 181, 157, 96, 127, 209, 134, 141, 188, 247, 171, - 194, 103, 233, 210, 365, 376, 371, 372, 369, 370, - 368, 367, 366, 378, 357, 358, 359, 360, 362, 0, - 373, 374, 361, 82, 91, 138, 246, 186, 116, 235, - 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, + 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, + 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, + 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, + 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, + 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, + 223, 232, 239, 242, 165, 0, 0, 0, 0, 324, + 0, 0, 0, 111, 0, 321, 0, 0, 0, 137, + 0, 364, 139, 0, 0, 211, 153, 0, 0, 0, + 0, 355, 356, 0, 0, 0, 0, 0, 0, 0, + 0, 54, 0, 0, 322, 343, 342, 345, 346, 347, + 348, 0, 0, 101, 344, 349, 350, 351, 0, 0, + 0, 319, 336, 0, 363, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 333, 334, 0, 0, 0, 0, + 378, 0, 335, 0, 0, 330, 331, 332, 337, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 377, + 0, 0, 267, 0, 0, 375, 0, 184, 0, 215, + 122, 136, 97, 83, 93, 0, 121, 162, 191, 195, + 0, 0, 0, 105, 0, 193, 172, 231, 0, 174, + 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, + 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, + 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, + 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, + 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, + 182, 142, 183, 125, 155, 154, 156, 0, 0, 0, + 212, 234, 249, 99, 0, 219, 243, 244, 0, 0, + 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, + 188, 247, 171, 194, 103, 233, 210, 365, 376, 371, + 372, 369, 370, 368, 367, 366, 379, 357, 358, 359, + 360, 362, 0, 373, 374, 361, 82, 91, 138, 246, + 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 84, 85, 92, 98, 104, - 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, - 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, - 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, - 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, - 204, 205, 206, 207, 213, 216, 222, 223, 232, 239, - 242, 165, 0, 0, 0, 0, 0, 0, 0, 0, - 111, 0, 0, 0, 0, 0, 137, 0, 364, 139, - 0, 0, 211, 153, 0, 0, 0, 0, 355, 356, - 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, - 0, 322, 343, 342, 345, 346, 347, 348, 0, 0, - 101, 344, 349, 350, 351, 0, 0, 0, 0, 336, - 0, 363, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 333, 334, 0, 0, 0, 0, 377, 0, 335, - 0, 0, 330, 331, 332, 337, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 0, 0, 0, 267, - 0, 0, 375, 0, 184, 0, 215, 122, 136, 97, - 83, 93, 0, 121, 162, 191, 195, 0, 0, 0, - 105, 0, 193, 172, 231, 1521, 174, 192, 140, 221, - 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, - 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, - 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, - 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, - 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, - 125, 155, 154, 156, 0, 0, 0, 212, 234, 249, - 99, 0, 219, 243, 244, 0, 0, 100, 118, 113, - 181, 157, 96, 127, 209, 134, 141, 188, 247, 171, - 194, 103, 233, 210, 365, 376, 371, 372, 369, 370, - 368, 367, 366, 378, 357, 358, 359, 360, 362, 0, - 373, 374, 361, 82, 91, 138, 246, 186, 116, 235, - 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, + 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, + 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, + 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, + 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, + 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, + 223, 232, 239, 242, 165, 0, 0, 0, 0, 0, + 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, + 0, 364, 139, 0, 0, 211, 153, 0, 0, 0, + 0, 355, 356, 0, 0, 0, 0, 0, 0, 0, + 0, 54, 0, 0, 322, 343, 342, 345, 346, 347, + 348, 0, 0, 101, 344, 349, 350, 351, 0, 0, + 0, 0, 336, 0, 363, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 333, 334, 0, 0, 0, 0, + 378, 0, 335, 0, 0, 330, 331, 332, 337, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 377, + 0, 0, 267, 0, 0, 375, 0, 184, 0, 215, + 122, 136, 97, 83, 93, 0, 121, 162, 191, 195, + 0, 0, 0, 105, 0, 193, 172, 231, 1525, 174, + 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, + 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, + 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, + 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, + 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, + 182, 142, 183, 125, 155, 154, 156, 0, 0, 0, + 212, 234, 249, 99, 0, 219, 243, 244, 0, 0, + 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, + 188, 247, 171, 194, 103, 233, 210, 365, 376, 371, + 372, 369, 370, 368, 367, 366, 379, 357, 358, 359, + 360, 362, 0, 373, 374, 361, 82, 91, 138, 246, + 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 84, 85, 92, 98, 104, - 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, - 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, - 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, - 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, - 204, 205, 206, 207, 213, 216, 222, 223, 232, 239, - 242, 165, 0, 0, 0, 0, 0, 0, 0, 0, - 111, 0, 0, 0, 0, 0, 137, 0, 364, 139, - 0, 0, 211, 153, 0, 0, 0, 0, 355, 356, - 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, - 583, 322, 343, 342, 345, 346, 347, 348, 0, 0, - 101, 344, 349, 350, 351, 0, 0, 0, 0, 336, - 0, 363, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 333, 334, 0, 0, 0, 0, 377, 0, 335, - 0, 0, 330, 331, 332, 337, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 0, 0, 0, 267, - 0, 0, 375, 0, 184, 0, 215, 122, 136, 97, - 83, 93, 0, 121, 162, 191, 195, 0, 0, 0, - 105, 0, 193, 172, 231, 0, 174, 192, 140, 221, - 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, - 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, - 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, - 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, - 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, - 125, 155, 154, 156, 0, 0, 0, 212, 234, 249, - 99, 0, 219, 243, 244, 0, 0, 100, 118, 113, - 181, 157, 96, 127, 209, 134, 141, 188, 247, 171, - 194, 103, 233, 210, 365, 376, 371, 372, 369, 370, - 368, 367, 366, 378, 357, 358, 359, 360, 362, 0, - 373, 374, 361, 82, 91, 138, 246, 186, 116, 235, - 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, + 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, + 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, + 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, + 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, + 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, + 223, 232, 239, 242, 165, 0, 0, 0, 0, 0, + 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, + 0, 364, 139, 0, 0, 211, 153, 0, 0, 0, + 0, 355, 356, 0, 0, 0, 0, 0, 0, 0, + 0, 54, 0, 584, 322, 343, 342, 345, 346, 347, + 348, 0, 0, 101, 344, 349, 350, 351, 0, 0, + 0, 0, 336, 0, 363, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 333, 334, 0, 0, 0, 0, + 378, 0, 335, 0, 0, 330, 331, 332, 337, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 377, + 0, 0, 267, 0, 0, 375, 0, 184, 0, 215, + 122, 136, 97, 83, 93, 0, 121, 162, 191, 195, + 0, 0, 0, 105, 0, 193, 172, 231, 0, 174, + 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, + 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, + 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, + 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, + 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, + 182, 142, 183, 125, 155, 154, 156, 0, 0, 0, + 212, 234, 249, 99, 0, 219, 243, 244, 0, 0, + 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, + 188, 247, 171, 194, 103, 233, 210, 365, 376, 371, + 372, 369, 370, 368, 367, 366, 379, 357, 358, 359, + 360, 362, 0, 373, 374, 361, 82, 91, 138, 246, + 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 84, 85, 92, 98, 104, - 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, - 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, - 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, - 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, - 204, 205, 206, 207, 213, 216, 222, 223, 232, 239, - 242, 165, 0, 0, 0, 0, 0, 0, 0, 0, - 111, 0, 0, 0, 0, 0, 137, 0, 364, 139, - 0, 0, 211, 153, 0, 0, 0, 0, 355, 356, - 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, - 0, 322, 343, 342, 345, 346, 347, 348, 0, 0, - 101, 344, 349, 350, 351, 0, 0, 0, 0, 336, - 0, 363, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 333, 334, 0, 0, 0, 0, 377, 0, 335, - 0, 0, 330, 331, 332, 337, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 0, 0, 0, 267, - 0, 0, 375, 0, 184, 0, 215, 122, 136, 97, - 83, 93, 0, 121, 162, 191, 195, 0, 0, 0, - 105, 0, 193, 172, 231, 0, 174, 192, 140, 221, - 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, - 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, - 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, - 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, - 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, - 125, 155, 154, 156, 0, 0, 0, 212, 234, 249, - 99, 0, 219, 243, 244, 0, 0, 100, 118, 113, - 181, 157, 96, 127, 209, 134, 141, 188, 247, 171, - 194, 103, 233, 210, 365, 376, 371, 372, 369, 370, - 368, 367, 366, 378, 357, 358, 359, 360, 362, 0, - 373, 374, 361, 82, 91, 138, 246, 186, 116, 235, - 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, + 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, + 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, + 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, + 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, + 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, + 223, 232, 239, 242, 165, 0, 0, 0, 0, 0, + 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, + 0, 364, 139, 0, 0, 211, 153, 0, 0, 0, + 0, 355, 356, 0, 0, 0, 0, 0, 0, 0, + 0, 54, 0, 0, 322, 343, 342, 345, 346, 347, + 348, 0, 0, 101, 344, 349, 350, 351, 0, 0, + 0, 0, 336, 0, 363, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 333, 334, 0, 0, 0, 0, + 378, 0, 335, 0, 0, 330, 331, 332, 337, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 377, + 0, 0, 267, 0, 0, 375, 0, 184, 0, 215, + 122, 136, 97, 83, 93, 0, 121, 162, 191, 195, + 0, 0, 0, 105, 0, 193, 172, 231, 0, 174, + 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, + 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, + 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, + 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, + 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, + 182, 142, 183, 125, 155, 154, 156, 0, 0, 0, + 212, 234, 249, 99, 0, 219, 243, 244, 0, 0, + 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, + 188, 247, 171, 194, 103, 233, 210, 365, 376, 371, + 372, 369, 370, 368, 367, 366, 379, 357, 358, 359, + 360, 362, 0, 373, 374, 361, 82, 91, 138, 246, + 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 84, 85, 92, 98, 104, - 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, - 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, - 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, - 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, - 204, 205, 206, 207, 213, 216, 222, 223, 232, 239, - 242, 165, 0, 0, 0, 0, 0, 0, 0, 0, - 111, 0, 0, 0, 0, 0, 137, 0, 0, 139, - 0, 0, 211, 153, 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, - 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 618, 617, 627, - 628, 620, 621, 622, 623, 624, 625, 626, 619, 0, - 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 0, 0, 0, 267, - 0, 0, 0, 0, 184, 0, 215, 122, 136, 97, - 83, 93, 0, 121, 162, 191, 195, 0, 0, 0, - 105, 0, 193, 172, 231, 0, 174, 192, 140, 221, - 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, - 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, - 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, - 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, - 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, - 125, 155, 154, 156, 0, 0, 0, 212, 234, 249, - 99, 0, 219, 243, 244, 0, 0, 100, 118, 113, - 181, 157, 96, 127, 209, 134, 141, 188, 247, 171, - 194, 103, 233, 210, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, + 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, + 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, + 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, + 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, + 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, + 223, 232, 239, 242, 165, 0, 0, 0, 0, 0, + 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, + 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 82, 91, 138, 246, 186, 116, 235, - 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, + 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 84, 85, 92, 98, 104, - 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, - 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, - 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, - 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, - 204, 205, 206, 207, 213, 216, 222, 223, 232, 239, - 242, 165, 0, 0, 0, 606, 0, 0, 0, 0, - 111, 0, 0, 0, 0, 0, 137, 0, 0, 139, - 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 80, 0, 608, 0, 0, 0, 0, 0, 0, - 101, 0, 0, 0, 0, 0, 603, 602, 0, 0, + 619, 618, 628, 629, 621, 622, 623, 624, 625, 626, + 627, 620, 0, 0, 630, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, + 0, 0, 267, 0, 0, 0, 0, 184, 0, 215, + 122, 136, 97, 83, 93, 0, 121, 162, 191, 195, + 0, 0, 0, 105, 0, 193, 172, 231, 0, 174, + 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, + 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, + 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, + 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, + 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, + 182, 142, 183, 125, 155, 154, 156, 0, 0, 0, + 212, 234, 249, 99, 0, 219, 243, 244, 0, 0, + 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, + 188, 247, 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 604, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 82, 91, 138, 246, + 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, + 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, + 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, + 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, + 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, + 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, + 223, 232, 239, 242, 165, 0, 0, 0, 607, 0, + 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, + 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 0, 0, 0, 267, - 0, 0, 0, 0, 184, 0, 215, 122, 136, 97, - 83, 93, 0, 121, 162, 191, 195, 0, 0, 0, - 105, 0, 193, 172, 231, 0, 174, 192, 140, 221, - 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, - 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, - 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, - 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, - 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, - 125, 155, 154, 156, 0, 0, 0, 212, 234, 249, - 99, 0, 219, 243, 244, 0, 0, 100, 118, 113, - 181, 157, 96, 127, 209, 134, 141, 188, 247, 171, - 194, 103, 233, 210, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 0, 609, 0, 0, 0, + 0, 0, 0, 101, 0, 0, 0, 0, 0, 604, + 603, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 82, 91, 138, 246, 186, 116, 235, - 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 84, 85, 92, 98, 104, - 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, - 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, - 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, - 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, - 204, 205, 206, 207, 213, 216, 222, 223, 232, 239, - 242, 165, 0, 0, 0, 0, 0, 0, 0, 0, - 111, 0, 0, 0, 0, 0, 137, 0, 0, 139, - 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, + 0, 0, 267, 0, 0, 0, 0, 184, 0, 215, + 122, 136, 97, 83, 93, 0, 121, 162, 191, 195, + 0, 0, 0, 105, 0, 193, 172, 231, 0, 174, + 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, + 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, + 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, + 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, + 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, + 182, 142, 183, 125, 155, 154, 156, 0, 0, 0, + 212, 234, 249, 99, 0, 219, 243, 244, 0, 0, + 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, + 188, 247, 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 0, 0, 0, 0, 0, 74, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 82, 91, 138, 246, + 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, + 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, + 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, + 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, + 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, + 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, + 223, 232, 239, 242, 165, 0, 0, 0, 0, 0, + 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, + 0, 0, 139, 0, 0, 211, 153, 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, 101, 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, 119, 76, 77, 0, 73, - 0, 0, 0, 78, 184, 0, 215, 122, 136, 97, - 83, 93, 0, 121, 162, 191, 195, 0, 0, 0, - 105, 0, 193, 172, 231, 0, 174, 192, 140, 221, - 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, - 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, - 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, - 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, - 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, - 125, 155, 154, 156, 0, 0, 0, 212, 234, 249, - 99, 0, 219, 243, 244, 0, 0, 100, 118, 113, - 181, 157, 96, 127, 209, 134, 141, 188, 247, 171, - 194, 103, 233, 210, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 82, 91, 138, 246, 186, 116, 235, - 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 84, 85, 92, 98, 104, - 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, - 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, - 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, - 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, - 204, 205, 206, 207, 213, 216, 222, 223, 232, 239, - 242, 165, 0, 0, 0, 942, 0, 0, 0, 0, - 111, 0, 0, 0, 0, 0, 137, 0, 0, 139, - 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 76, + 77, 0, 73, 0, 0, 0, 78, 184, 0, 215, + 122, 136, 97, 83, 93, 0, 121, 162, 191, 195, + 0, 0, 0, 105, 0, 193, 172, 231, 0, 174, + 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, + 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, + 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, + 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, + 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, + 182, 142, 183, 125, 155, 154, 156, 0, 0, 0, + 212, 234, 249, 99, 0, 219, 243, 244, 0, 0, + 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, + 188, 247, 171, 194, 103, 233, 210, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 265, 0, 944, 0, 0, 0, 0, 0, 0, - 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 82, 91, 138, 246, + 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, + 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, + 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, + 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, + 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, + 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, + 223, 232, 239, 242, 165, 0, 0, 0, 945, 0, + 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, + 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 265, 0, 947, 0, 0, 0, + 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 0, 0, 0, 267, - 0, 0, 0, 0, 184, 0, 215, 122, 136, 97, - 83, 93, 0, 121, 162, 191, 195, 0, 0, 0, - 105, 0, 193, 172, 231, 0, 174, 192, 140, 221, - 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, - 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, - 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, - 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, - 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, - 125, 155, 154, 156, 0, 0, 0, 212, 234, 249, - 99, 0, 219, 243, 244, 0, 0, 100, 118, 113, - 181, 157, 96, 127, 209, 134, 141, 188, 247, 171, - 194, 103, 233, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 82, 91, 138, 246, 186, 116, 235, - 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 84, 85, 92, 98, 104, - 108, 112, 115, 120, 123, 126, 128, 129, 130, 133, - 143, 146, 147, 148, 149, 159, 160, 161, 163, 166, - 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, - 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, - 204, 205, 206, 207, 213, 216, 222, 223, 232, 239, - 242, 24, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, - 0, 0, 111, 0, 0, 0, 0, 0, 137, 0, - 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, + 0, 0, 267, 0, 0, 0, 0, 184, 0, 215, + 122, 136, 97, 83, 93, 0, 121, 162, 191, 195, + 0, 0, 0, 105, 0, 193, 172, 231, 0, 174, + 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, + 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, + 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, + 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, + 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, + 182, 142, 183, 125, 155, 154, 156, 0, 0, 0, + 212, 234, 249, 99, 0, 219, 243, 244, 0, 0, + 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, + 188, 247, 171, 194, 103, 233, 210, 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, 101, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 82, 91, 138, 246, + 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, + 92, 98, 104, 108, 112, 115, 120, 123, 126, 128, + 129, 130, 133, 143, 146, 147, 148, 149, 159, 160, + 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, + 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, + 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, + 223, 232, 239, 242, 24, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, + 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, + 0, 137, 0, 0, 139, 0, 0, 211, 153, 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, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, - 0, 267, 0, 0, 0, 0, 184, 0, 215, 122, - 136, 97, 83, 93, 0, 121, 162, 191, 195, 0, - 0, 0, 105, 0, 193, 172, 231, 0, 174, 192, - 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, - 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, - 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, - 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, - 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, - 142, 183, 125, 155, 154, 156, 0, 0, 0, 212, - 234, 249, 99, 0, 219, 243, 244, 0, 0, 100, - 118, 113, 181, 157, 96, 127, 209, 134, 141, 188, - 247, 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 82, 91, 138, 246, 186, - 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 85, 92, - 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, - 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, - 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, - 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, - 201, 202, 204, 205, 206, 207, 213, 216, 222, 223, - 232, 239, 242, 24, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, - 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, - 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 54, 0, 0, 265, 0, 0, 0, 0, - 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, + 119, 0, 0, 0, 267, 0, 0, 0, 0, 184, + 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, + 191, 195, 0, 0, 0, 105, 0, 193, 172, 231, + 0, 174, 192, 140, 221, 185, 230, 240, 241, 218, + 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, + 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, + 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, + 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, + 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, + 0, 0, 212, 234, 249, 99, 0, 219, 243, 244, + 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, + 134, 141, 188, 247, 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 91, + 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, + 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, + 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, + 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, + 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, + 216, 222, 223, 232, 239, 242, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, + 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 0, 265, 0, + 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 0, 0, 0, 267, 0, 0, 0, 0, 184, 0, - 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, - 195, 0, 0, 0, 105, 0, 193, 172, 231, 0, - 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, - 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, - 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, - 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, - 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, - 124, 182, 142, 183, 125, 155, 154, 156, 0, 0, - 0, 212, 234, 249, 99, 0, 219, 243, 244, 0, - 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, - 141, 188, 247, 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 82, 91, 138, - 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, - 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, - 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, - 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, - 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, - 222, 223, 232, 239, 242, 165, 0, 0, 0, 942, - 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, - 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 265, 0, 944, 0, 0, - 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 0, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 0, 0, 0, 267, 0, 0, 0, 0, 184, 0, - 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, - 195, 0, 0, 0, 105, 0, 193, 172, 231, 0, - 940, 192, 140, 221, 185, 230, 240, 241, 218, 238, - 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, - 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, - 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, - 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, - 124, 182, 142, 183, 125, 155, 154, 156, 0, 0, - 0, 212, 234, 249, 99, 0, 219, 243, 244, 0, - 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, - 141, 188, 247, 171, 194, 103, 233, 210, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 945, 0, 0, 0, 0, 111, 0, 0, + 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 265, 0, + 947, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 82, 91, 138, - 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, - 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, - 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, - 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, - 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, - 222, 223, 232, 239, 242, 165, 0, 0, 0, 0, - 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, - 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 0, 0, 836, 0, - 0, 837, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 0, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 943, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 0, 0, 0, 267, 0, 0, 0, 0, 184, 0, - 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, - 195, 0, 0, 0, 105, 0, 193, 172, 231, 0, - 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, - 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, - 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, - 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, - 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, - 124, 182, 142, 183, 125, 155, 154, 156, 0, 0, - 0, 212, 234, 249, 99, 0, 219, 243, 244, 0, - 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, - 141, 188, 247, 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 82, 91, 138, - 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, + 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, + 0, 838, 0, 0, 839, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, - 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, - 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, - 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, - 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, - 222, 223, 232, 239, 242, 165, 0, 0, 0, 0, - 0, 0, 0, 0, 111, 0, 720, 0, 0, 0, - 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 0, 719, 0, 0, - 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 0, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 0, 0, 0, 267, 0, 0, 0, 0, 184, 0, - 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, - 195, 0, 0, 0, 105, 0, 193, 172, 231, 0, - 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, - 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, - 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, - 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, - 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, - 124, 182, 142, 183, 125, 155, 154, 156, 0, 0, - 0, 212, 234, 249, 99, 0, 219, 243, 244, 0, - 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, - 141, 188, 247, 171, 194, 103, 233, 210, 0, 0, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 82, 91, 138, - 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, - 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, - 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, - 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, - 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, - 222, 223, 232, 239, 242, 165, 0, 0, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 0, 722, + 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, + 721, 0, 0, 0, 0, 0, 0, 101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 0, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, + 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 584, 80, 0, + 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 0, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, + 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 0, 265, 0, + 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 0, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, + 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 265, 0, + 947, 0, 0, 0, 0, 0, 0, 101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 0, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, + 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, + 609, 0, 0, 0, 0, 0, 0, 101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 0, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 0, 0, 0, 0, 692, 111, 0, 0, + 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 265, 0, + 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 0, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 382, 0, + 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 583, 80, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2279,14 +2446,14 @@ var yyAct = [...]int{ 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 54, 0, 0, 265, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 0, 0, 0, 267, 0, 0, 0, 0, 184, 0, + 0, 262, 0, 267, 0, 0, 0, 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, @@ -2312,7 +2479,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 265, 0, 944, 0, 0, + 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2345,7 +2512,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 0, 608, 0, 0, + 0, 0, 0, 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2375,10 +2542,10 @@ var yyAct = [...]int{ 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, 0, 0, 0, - 0, 0, 0, 690, 111, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 265, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2407,184 +2574,19 @@ var yyAct = [...]int{ 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, - 222, 223, 232, 239, 242, 381, 0, 0, 0, 0, - 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, - 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, - 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, - 267, 0, 0, 0, 0, 184, 0, 215, 122, 136, - 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, - 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, - 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, - 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, - 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, - 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, - 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, - 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, - 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, - 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, - 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 91, 138, 246, 186, 116, - 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, - 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, - 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, - 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, - 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, - 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, - 239, 242, 165, 0, 0, 0, 0, 0, 0, 0, - 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, - 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 0, 262, 0, - 267, 0, 0, 0, 0, 184, 0, 215, 122, 136, - 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, - 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, - 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, - 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, - 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, - 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, - 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, - 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, - 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, - 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, - 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 91, 138, 246, 186, 116, - 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, - 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, - 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, - 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, - 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, - 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, - 239, 242, 165, 0, 0, 0, 0, 0, 0, 0, - 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, - 139, 0, 0, 211, 153, 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, 101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, - 267, 0, 0, 0, 0, 184, 0, 215, 122, 136, - 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, - 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, - 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, - 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, - 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, - 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, - 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, - 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, - 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, - 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, - 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 91, 138, 246, 186, 116, - 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, - 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, - 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, - 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, - 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, - 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, - 239, 242, 165, 0, 0, 0, 0, 0, 0, 0, - 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, - 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, - 267, 0, 0, 0, 0, 184, 0, 215, 122, 136, - 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, - 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, - 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, - 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, - 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, - 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, - 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, - 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, - 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, - 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, - 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 91, 138, 246, 186, 116, - 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, - 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, - 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, - 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, - 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, - 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, - 239, 242, 165, 0, 0, 0, 0, 0, 0, 0, - 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, - 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, - 267, 0, 0, 0, 0, 184, 0, 215, 122, 136, - 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, - 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, - 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, - 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, - 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, - 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, - 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, - 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, - 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, - 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, - 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 91, 138, 246, 186, 116, - 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, - 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, - 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, - 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, - 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, - 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, - 239, 242, + 222, 223, 232, 239, 242, } var yyPact = [...]int{ - 2159, -1000, -268, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 258, -1000, -270, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 879, 942, -1000, -1000, -1000, -1000, -1000, -1000, + 252, 11336, 49, 107, 33, 15657, 97, 275, 16317, -1000, + 11, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -57, -66, + -1000, 694, -1000, -1000, -1000, -1000, -1000, 873, 876, 741, + 868, 803, -1000, 8024, 75, 75, 15327, 6704, -1000, -1000, + 240, 16317, 91, 16317, -145, 73, 73, 73, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 989, 1042, -1000, -1000, -1000, -1000, -1000, -1000, - 275, 11323, -1, 127, -23, 15644, 121, 74, 16304, -1000, - 13, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -67, -95, - -1000, 743, -1000, -1000, -1000, -1000, -1000, 963, 981, 802, - 958, 859, -1000, 8011, 85, 85, 15314, 6691, -1000, -1000, - 269, 16304, 118, 16304, -152, 82, 82, 82, -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, @@ -2601,22 +2603,22 @@ 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, + 96, 16317, 536, 534, 176, -1000, 16317, 71, 531, 71, + 71, 71, 16317, -1000, 141, -1000, -1000, -1000, 16317, 526, + 834, 288, 70, 3617, -1000, 3617, 3617, -1000, 3617, 20, + 3617, -59, 900, 18, -8, -1000, 3617, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 120, 16304, 622, 621, 278, -1000, 16304, 78, 620, 78, - 78, 78, 16304, -1000, 172, -1000, -1000, -1000, 16304, 614, - 901, 306, 48, 3604, -1000, 3604, 3604, -1000, 3604, 23, - 3604, -89, 1013, 24, -9, -1000, 3604, -1000, -1000, -1000, + 546, 844, 9356, 9356, 879, -1000, 694, -1000, -1000, -1000, + 831, -1000, -1000, 306, 924, -1000, 11006, 140, -1000, 9356, + 2043, 700, -1000, -1000, 700, -1000, -1000, 119, -1000, -1000, + 10346, 10346, 10346, 10346, 10346, 10346, 10346, 10346, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 437, 904, 9343, 9343, 989, -1000, 743, -1000, -1000, -1000, - 900, -1000, -1000, 319, 1028, -1000, 10993, 171, -1000, 9343, - 2025, 661, -1000, -1000, 661, -1000, -1000, 140, -1000, -1000, - 10333, 10333, 10333, 10333, 10333, 10333, 10333, 10333, -1000, -1000, + -1000, -1000, 700, -1000, 9026, 700, 700, 700, 700, 700, + 700, 700, 700, 9356, 700, 700, 700, 700, 700, 700, + 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, + 14990, 14000, 16317, 673, 666, -1000, -1000, 138, 692, 6361, + -98, -1000, -1000, -1000, 219, 13340, -1000, -1000, -1000, 829, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 661, -1000, 9013, 661, 661, 661, 661, 661, - 661, 661, 661, 9343, 661, 661, 661, 661, 661, 661, - 661, 661, 661, 661, 661, 661, 661, 661, 661, 14977, - 13987, 16304, 694, 665, -1000, -1000, 167, 735, 6348, -101, - -1000, -1000, -1000, 264, 13327, -1000, -1000, -1000, 892, -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, @@ -2627,133 +2629,132 @@ 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, -1000, -1000, -1000, -1000, -1000, 624, + 16317, -1000, 2399, -1000, 523, 3617, 82, 521, 244, 519, + 16317, 16317, 3617, 3617, 3617, 26, 59, 55, 16317, 698, + 79, 16317, 861, 756, 16317, 507, 504, -1000, 6018, -1000, + 3617, 288, -1000, 440, 9356, 3617, 3617, 3617, 16317, 3617, + 3617, -1000, -1000, -1000, -1000, -1000, -1000, 3617, 3617, -1000, + 912, 293, -1000, -1000, -1000, -1000, 9356, 204, -1000, 754, + -1000, -1000, -1000, -1000, -1000, -1000, 936, 187, 522, 136, + 697, -1000, 474, 873, 546, 803, 13010, 770, -1000, -1000, + -1000, 16317, -1000, 9356, 9356, 388, -1000, 14660, -1000, -1000, + 4646, 203, 10346, 279, 255, 10346, 10346, 10346, 10346, 10346, + 10346, 10346, 10346, 10346, 10346, 10346, 10346, 10346, 10346, 10346, + 373, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 494, + -1000, 694, 594, 594, 152, 152, 152, 152, 152, 152, + 152, 10676, 7034, 546, 619, 451, 9026, 8024, 8024, 9356, + 9356, 8684, 8354, 8024, 839, 242, 451, 16647, -1000, -1000, + 10016, -1000, -1000, -1000, -1000, -1000, 546, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 15987, 15987, 8024, 8024, 8024, 8024, + 8024, 42, 16317, -1000, 689, 858, -1000, -1000, -1000, 864, + 12350, 12680, 42, 683, 14000, 16317, -1000, -1000, 14000, 16317, + 4303, 5675, 692, -98, 675, -1000, -82, -86, 7364, 148, + -1000, -1000, -1000, -1000, 3274, 397, 567, 319, -47, -1000, + -1000, -1000, 703, -1000, 703, 703, 703, 703, -17, -17, + -17, -17, -1000, -1000, -1000, -1000, -1000, 721, 716, -1000, + 703, 703, 703, -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, 618, 16304, - -1000, 1464, -1000, 613, 3604, 100, 612, 292, 611, 16304, - 16304, 3604, 3604, 3604, 36, 68, 57, 16304, 744, 91, - 16304, 950, 810, 16304, 572, 561, -1000, 6005, -1000, 3604, - 306, -1000, 513, 9343, 3604, 3604, 3604, 16304, 3604, 3604, - -1000, -1000, -1000, -1000, -1000, -1000, 3604, 3604, -1000, 1025, - 295, -1000, -1000, -1000, -1000, 9343, 219, -1000, 807, -1000, - -1000, -1000, -1000, -1000, -1000, 1034, 195, 491, 165, 738, - -1000, 498, 963, 437, 859, 12997, 824, -1000, -1000, -1000, - 16304, -1000, 9343, 9343, 528, -1000, 14647, -1000, -1000, 4633, - 199, 10333, 464, 299, 10333, 10333, 10333, 10333, 10333, 10333, - 10333, 10333, 10333, 10333, 10333, 10333, 10333, 10333, 10333, 482, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 554, -1000, - 743, 577, 577, 178, 178, 178, 178, 178, 178, 178, - 10663, 7021, 437, 608, 389, 9013, 8011, 8011, 9343, 9343, - 8671, 8341, 8011, 899, 244, 389, 16634, -1000, -1000, 10003, - -1000, -1000, -1000, -1000, -1000, 437, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 15974, 15974, 8011, 8011, 8011, 8011, 51, - 16304, -1000, 697, 905, -1000, -1000, -1000, 952, 12337, 12667, - 51, 728, 13987, 16304, -1000, -1000, 13987, 16304, 4290, 5662, - 735, -101, 700, -1000, -129, -125, 7351, 163, -1000, -1000, - -1000, -1000, 3261, 189, 553, 470, -60, -1000, -1000, -1000, - 754, -1000, 754, 754, 754, 754, -17, -17, -17, -17, - -1000, -1000, -1000, -1000, -1000, 775, 774, -1000, 754, 754, - 754, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 768, - 768, 768, 756, 756, 779, -1000, 16304, 3604, 944, 3604, - -1000, 70, -1000, -1000, -1000, 16304, 16304, 16304, 16304, 16304, - 138, 16304, 16304, 729, -1000, 16304, 3604, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 389, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 16304, 306, 16304, 16304, 389, -1000, - 509, 16304, -1000, 868, 9343, 9343, 5319, 9343, -1000, -1000, - -1000, 904, -1000, 899, 965, -1000, 881, 880, 8011, -1000, - -1000, 199, 434, -1000, -1000, 436, -1000, -1000, -1000, -1000, - 162, 661, -1000, 1844, -1000, -1000, -1000, -1000, 464, 10333, - 10333, 10333, 387, 1844, 1780, 304, 372, 178, 396, 396, - 194, 194, 194, 194, 194, 413, 413, -1000, -1000, -1000, - 437, -1000, -1000, -1000, 437, 8011, 8011, 727, -1000, -1000, - 9343, -1000, 437, 602, 602, 289, 371, 259, 1021, 602, - 256, 1020, 602, 602, 8011, 296, -1000, 9343, 437, -1000, - 160, -1000, 637, 723, 720, 602, 437, 602, 602, 671, - 661, -1000, 16634, 13987, 13987, 13987, 13987, 13987, -1000, 839, - 835, -1000, 823, 822, 829, 16304, -1000, 606, 12337, 198, - 661, -1000, 14317, -1000, -1000, 1010, 13987, 702, -1000, 702, - -1000, 159, -1000, -1000, 700, -101, -111, -1000, -1000, -1000, - -1000, 389, -1000, 494, 688, 2918, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 761, 544, -1000, 917, 214, 188, 542, - 916, -1000, -1000, -1000, 909, -1000, 303, -62, -1000, -1000, - 432, -17, -17, -1000, -1000, 163, 889, 163, 163, 163, - 506, 506, -1000, -1000, -1000, -1000, 404, -1000, -1000, -1000, - 395, -1000, 791, 15974, 3604, -1000, -1000, -1000, -1000, 225, - 225, 207, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 50, 777, -1000, -1000, -1000, -1000, 2, - 34, 88, -1000, 3604, -1000, 295, -1000, -1000, -1000, -1000, - -1000, 866, 389, 389, 155, -1000, -1000, 16304, -1000, -1000, - -1000, -1000, 717, -1000, -1000, -1000, 3947, 8011, -1000, 387, - 1844, 1249, -1000, 10333, 10333, -1000, -1000, 602, 602, 8011, - 389, -1000, -1000, -1000, 47, 482, 47, 10333, 10333, -1000, - 10333, 10333, -1000, -165, 705, 272, -1000, 9343, 463, -1000, - 5319, -1000, 10333, 10333, -1000, -1000, -1000, -1000, 790, 16634, - 661, -1000, 11995, 15974, 706, -1000, 241, 905, 772, 789, - 643, -1000, -1000, -1000, -1000, 834, -1000, 833, -1000, -1000, - -1000, -1000, -1000, 115, 113, 111, 15974, -1000, 989, 9343, - 702, -1000, -1000, 197, -1000, -1000, -119, -130, -1000, -1000, - -1000, 3261, -1000, 3261, 15974, 61, -1000, 542, 542, -1000, - -1000, -1000, 759, 787, 10333, -1000, -1000, -1000, 549, 163, - 163, -1000, 240, -1000, -1000, -1000, 599, -1000, 597, 657, - 592, 16304, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 16304, - -1000, -1000, -1000, -1000, -1000, 15974, -170, 529, 15974, 15974, - 15974, 16304, -1000, 306, -1000, 4976, -1000, 1010, 13987, -1000, - -1000, 437, -1000, 10333, 1844, 1844, -1000, -1000, -1000, 437, - 754, 754, -1000, 754, 756, -1000, 754, 1, 754, 0, - 437, 437, 1722, 1499, 1462, 794, 661, -159, -1000, 389, - 9343, -1000, 998, 751, -1000, 926, 669, 604, -1000, -1000, - 7681, 437, 586, 153, 576, -1000, 989, 16634, 9343, -1000, - -1000, 9343, 755, -1000, 9343, -1000, -1000, -1000, 661, 661, - 661, 576, 963, 389, -1000, -1000, -1000, -1000, 2918, -1000, - 568, -1000, 754, -1000, -1000, -1000, 15974, -41, 1033, 1844, - -1000, -1000, -1000, -1000, -1000, -17, 503, -17, 382, -1000, - 354, 3604, -1000, -1000, -1000, -1000, 930, -1000, 4976, -1000, - -1000, 747, 778, -1000, -1000, -1000, 996, 642, -1000, 1844, - -1000, -1000, 119, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 10333, 10333, 10333, 10333, 10333, 963, 489, 389, 10333, - 10333, 914, -1000, 661, -1000, -1000, 660, 15974, 15974, -1000, - 15974, 963, -1000, 389, 389, 15974, 389, 13657, 15974, 15974, - 11653, -1000, 158, 15974, -1000, 558, -1000, 181, -1000, -79, - 163, -1000, 163, 527, 520, -1000, 661, 625, -1000, 233, - 15974, 16304, 991, 977, -1000, -1000, 637, 637, 637, 637, - 45, 437, -1000, 637, 637, 1032, -1000, 661, -1000, 743, - 152, -1000, -1000, -1000, 552, 548, -1000, 548, 548, 198, - 158, -1000, 493, 232, 468, -1000, 58, 15974, 317, 912, - -1000, 902, -1000, -1000, -1000, -1000, -1000, 49, 4976, 3261, - 533, -1000, -1000, 9343, 9343, -1000, -1000, -1000, -1000, 437, - 46, -176, -1000, -1000, -1000, 16634, 604, 437, 15974, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 326, -1000, -1000, 16304, - -1000, -1000, 467, -1000, -1000, 526, -1000, 15974, -1000, -1000, - 777, 389, 594, -1000, 865, -168, -182, 588, -1000, -1000, - -1000, 746, -1000, -1000, 49, 874, -170, -1000, 864, -1000, - 15974, -1000, 42, -1000, -171, 519, 40, -180, 785, 661, - -184, 783, -1000, 1017, 9673, -1000, -1000, 1031, 203, 203, - 637, 437, -1000, -1000, -1000, 71, 384, -1000, -1000, -1000, - -1000, -1000, -1000, + -1000, 714, 714, 714, 708, 708, 723, -1000, 16317, 3617, + 859, 3617, -1000, 72, -1000, -1000, -1000, 16317, 16317, 16317, + 16317, 16317, 114, 16317, 16317, 687, -1000, 16317, 3617, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 451, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 16317, 288, 16317, 16317, + 451, -1000, 424, 16317, -1000, 789, 9356, 9356, 5332, 9356, + -1000, -1000, -1000, 844, -1000, 839, 880, -1000, 821, 820, + 8024, -1000, -1000, 203, 295, -1000, -1000, 517, -1000, -1000, + -1000, -1000, 134, 700, -1000, 1602, -1000, -1000, -1000, -1000, + 279, 10346, 10346, 10346, 262, 1602, 1783, 1240, 1657, 152, + 386, 386, 153, 153, 153, 153, 153, 313, 313, -1000, + -1000, -1000, 546, -1000, -1000, -1000, 546, 8024, 8024, 685, + -1000, -1000, 9356, -1000, 546, 610, 610, 281, 346, 227, + 909, 610, 225, 903, 610, 610, 8024, 314, -1000, 9356, + 546, -1000, 133, -1000, 372, 682, 679, 610, 546, 546, + 610, 610, 691, 700, -1000, 16647, 14000, 14000, 14000, 14000, + 14000, -1000, 790, 788, -1000, 768, 767, 780, 16317, -1000, + 612, 12350, 158, 700, -1000, 14330, -1000, -1000, 899, 14000, + 684, -1000, 684, -1000, 131, -1000, -1000, 675, -98, -105, + -1000, -1000, -1000, -1000, 451, -1000, 381, 668, 2931, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 712, 488, -1000, 850, + 185, 220, 480, 849, -1000, -1000, -1000, 832, -1000, 261, + -53, -1000, -1000, 369, -17, -17, -1000, -1000, 148, 828, + 148, 148, 148, 422, 422, -1000, -1000, -1000, -1000, 361, + -1000, -1000, -1000, 345, -1000, 753, 15987, 3617, -1000, -1000, + -1000, -1000, 785, 785, 202, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 39, 596, -1000, -1000, + -1000, -1000, 10, 25, 74, -1000, 3617, -1000, 293, -1000, + -1000, -1000, -1000, -1000, 801, 451, 451, 129, -1000, -1000, + 16317, -1000, -1000, -1000, -1000, 659, -1000, -1000, -1000, 3960, + 8024, -1000, 262, 1602, 1643, -1000, 10346, 10346, -1000, -1000, + 610, 610, 8024, 451, -1000, -1000, -1000, 58, 373, 58, + 10346, 10346, -1000, 10346, 10346, -1000, -160, 667, 232, -1000, + 9356, 493, -1000, 5332, -1000, 10346, 10346, -1000, -1000, -1000, + -1000, -1000, 744, 16647, 700, -1000, 12008, 15987, 695, -1000, + 218, 858, 720, 740, 645, -1000, -1000, -1000, -1000, 779, + -1000, 778, -1000, -1000, -1000, -1000, -1000, 90, 89, 87, + 15987, -1000, 879, 9356, 684, -1000, -1000, 171, -1000, -1000, + -109, -91, -1000, -1000, -1000, 3274, -1000, 3274, 15987, 57, + -1000, 480, 480, -1000, -1000, -1000, 711, 728, 10346, -1000, + -1000, -1000, 560, 148, 148, -1000, 197, -1000, -1000, -1000, + 608, -1000, 590, 662, 573, 16317, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 16317, -1000, -1000, -1000, -1000, -1000, 15987, + -173, 471, 15987, 15987, 15987, 16317, -1000, 288, -1000, 4989, + -1000, 899, 14000, -1000, -1000, 546, -1000, 10346, 1602, 1602, + -1000, -1000, -1000, 546, 703, 703, -1000, 703, 708, -1000, + 703, 1, 703, -1, 546, 546, 1578, 1132, 997, 415, + 700, -152, -1000, 451, 9356, -1000, 1478, 537, -1000, 852, + 595, 627, -1000, -1000, 7694, 546, 570, 127, 566, -1000, + 879, 16647, 9356, -1000, -1000, 9356, 707, -1000, 9356, -1000, + -1000, -1000, 700, 700, 700, 566, 873, 451, -1000, -1000, + -1000, -1000, 2931, -1000, 557, -1000, 703, -1000, -1000, -1000, + 15987, -42, 931, 1602, -1000, -1000, -1000, -1000, -1000, -17, + 421, -17, 337, -1000, 326, 3617, -1000, -1000, -1000, -1000, + 854, -1000, 4989, -1000, -1000, 702, 696, -1000, -1000, -1000, + 896, 652, -1000, 1602, -1000, -1000, 113, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 10346, 10346, 10346, 10346, 10346, + 873, 404, 451, 10346, 10346, 846, -1000, 700, -1000, -1000, + 681, 15987, 15987, -1000, 15987, 873, -1000, 451, 451, 15987, + 451, 13670, 15987, 15987, 11666, -1000, 150, 15987, -1000, 549, + -1000, 195, -1000, -103, 148, -1000, 148, 553, 550, -1000, + 700, 647, -1000, 216, 15987, 16317, 883, 865, -1000, -1000, + 372, 372, 372, 372, 19, 546, -1000, 372, 372, 928, + -1000, 700, -1000, 694, 124, -1000, -1000, -1000, 543, 518, + -1000, 518, 518, 158, 150, -1000, 449, 213, 400, -1000, + 56, 15987, 257, 841, -1000, 838, -1000, -1000, -1000, -1000, + -1000, 35, 4989, 3274, 515, -1000, -1000, 9356, 9356, -1000, + -1000, -1000, -1000, 546, 44, -176, -1000, -1000, -1000, 16647, + 627, 546, 15987, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 312, -1000, -1000, 16317, -1000, -1000, 375, -1000, -1000, 498, + -1000, 15987, -1000, -1000, 596, 451, 604, -1000, 799, -170, + -185, 587, -1000, -1000, -1000, 701, -1000, -1000, 35, 811, + -173, -1000, 797, -1000, 15987, -1000, 32, -1000, -174, 487, + 30, -180, 725, 700, -186, 722, -1000, 923, 9686, -1000, + -1000, 925, 177, 177, 372, 546, -1000, -1000, -1000, 62, + 368, -1000, -1000, -1000, -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1265, 26, 574, 1262, 1261, 1259, 1257, 1239, 1237, - 1236, 1235, 1234, 1232, 1231, 1230, 1229, 1228, 1227, 1224, - 1223, 1222, 1221, 1220, 1218, 1217, 90, 1214, 1213, 1208, - 65, 1207, 66, 1205, 1203, 48, 222, 43, 41, 258, - 1202, 60, 89, 73, 1199, 29, 1198, 1195, 82, 1194, - 1193, 55, 1190, 1189, 1204, 1186, 58, 1183, 12, 46, - 1180, 1179, 1178, 1177, 69, 626, 1176, 1175, 15, 1173, - 1171, 87, 1170, 53, 5, 14, 22, 18, 1169, 44, - 6, 1168, 86, 1164, 1160, 1158, 1157, 20, 1156, 59, - 1153, 34, 54, 1151, 9, 71, 30, 24, 7, 77, - 63, 1148, 23, 64, 50, 1147, 1146, 526, 1144, 1142, - 45, 1141, 1140, 19, 1136, 91, 502, 1135, 1134, 1132, - 1130, 37, 0, 478, 114, 76, 1128, 1125, 1124, 1546, - 42, 52, 17, 1123, 112, 1226, 40, 1120, 1119, 35, - 1112, 1110, 1107, 1104, 1090, 1089, 1087, 70, 1082, 1081, - 1079, 31, 21, 1078, 1077, 56, 25, 1075, 1073, 1072, - 49, 57, 1071, 1070, 51, 38, 1069, 1066, 1065, 1064, - 1063, 33, 11, 1062, 16, 1060, 13, 1059, 28, 1057, - 4, 1056, 10, 1055, 3, 1053, 8, 47, 1, 1052, - 2, 1050, 1049, 61, 631, 75, 1048, 79, + 0, 1206, 85, 503, 1203, 1201, 1200, 1199, 1198, 1196, + 1193, 1185, 1184, 1183, 1181, 1178, 1173, 1169, 1168, 1167, + 1166, 1162, 1157, 1155, 1149, 1148, 81, 1147, 1146, 1144, + 65, 1143, 63, 1140, 1139, 46, 609, 45, 42, 1289, + 1138, 23, 82, 75, 1136, 35, 1135, 1134, 69, 1133, + 1132, 64, 1131, 1128, 59, 1115, 58, 1112, 21, 73, + 1108, 1107, 1106, 1090, 70, 1103, 1085, 1084, 13, 1083, + 1082, 83, 1081, 52, 5, 12, 11, 18, 1080, 103, + 10, 1078, 50, 1077, 1076, 1075, 1074, 31, 1072, 55, + 1071, 34, 53, 1069, 7, 61, 30, 25, 9, 71, + 56, 1068, 22, 60, 48, 1066, 1065, 550, 1064, 1063, + 40, 1060, 1059, 24, 1058, 91, 401, 1057, 1056, 1055, + 1054, 33, 0, 553, 93, 66, 1052, 1051, 1050, 1555, + 38, 54, 16, 1048, 51, 1510, 41, 1046, 1044, 37, + 1043, 1042, 1041, 1040, 1039, 1038, 1037, 49, 1036, 1035, + 1025, 19, 20, 1020, 1013, 62, 27, 1010, 1005, 971, + 44, 57, 970, 968, 47, 28, 967, 966, 965, 963, + 962, 26, 14, 961, 15, 960, 17, 959, 29, 957, + 4, 956, 6, 955, 3, 954, 8, 43, 1, 953, + 2, 952, 951, 619, 570, 77, 948, 76, } var yyR1 = [...]int{ @@ -2808,20 +2809,20 @@ var yyR1 = [...]int{ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 197, - 197, 71, 70, 70, 70, 70, 70, 70, 33, 33, - 33, 33, 33, 136, 136, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 83, 83, - 34, 34, 81, 81, 82, 84, 84, 80, 80, 80, - 64, 64, 64, 64, 64, 64, 64, 64, 66, 66, - 66, 85, 85, 86, 86, 87, 87, 88, 88, 89, - 90, 90, 90, 91, 91, 91, 91, 92, 92, 92, - 63, 63, 63, 63, 63, 63, 93, 93, 93, 93, - 97, 97, 75, 75, 77, 77, 76, 78, 98, 98, - 102, 99, 99, 103, 103, 103, 103, 101, 101, 101, - 128, 128, 128, 106, 106, 115, 115, 116, 116, 107, - 107, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 118, 118, 118, 119, 119, 120, 120, 120, 127, - 127, 123, 123, 124, 124, 129, 129, 130, 130, 121, + 197, 71, 70, 70, 70, 70, 70, 70, 70, 33, + 33, 33, 33, 33, 136, 136, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 83, + 83, 34, 34, 81, 81, 82, 84, 84, 80, 80, + 80, 64, 64, 64, 64, 64, 64, 64, 64, 66, + 66, 66, 85, 85, 86, 86, 87, 87, 88, 88, + 89, 90, 90, 90, 91, 91, 91, 91, 92, 92, + 92, 63, 63, 63, 63, 63, 63, 93, 93, 93, + 93, 97, 97, 75, 75, 77, 77, 76, 78, 98, + 98, 102, 99, 99, 103, 103, 103, 103, 101, 101, + 101, 128, 128, 128, 106, 106, 115, 115, 116, 116, + 107, 107, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 118, 118, 118, 119, 119, 120, 120, 120, + 127, 127, 123, 123, 124, 124, 129, 129, 130, 130, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, @@ -2833,7 +2834,7 @@ var yyR1 = [...]int{ 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, + 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, @@ -2850,8 +2851,8 @@ var yyR1 = [...]int{ 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 193, 194, 134, 135, - 135, 135, + 122, 122, 122, 122, 122, 122, 122, 193, 194, 134, + 135, 135, 135, } var yyR2 = [...]int{ @@ -2906,20 +2907,20 @@ var yyR2 = [...]int{ 4, 4, 6, 6, 6, 8, 8, 8, 8, 9, 8, 5, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 8, 8, 0, - 2, 3, 4, 4, 4, 4, 4, 4, 0, 3, - 4, 7, 3, 1, 1, 2, 3, 3, 1, 2, - 2, 1, 2, 1, 2, 2, 1, 2, 0, 1, - 0, 2, 1, 2, 4, 0, 2, 1, 3, 5, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 0, 3, 0, 2, 0, 3, 1, 3, 2, - 0, 1, 1, 0, 2, 4, 4, 0, 2, 4, - 2, 1, 3, 5, 4, 6, 1, 3, 3, 5, - 0, 5, 1, 3, 1, 2, 3, 1, 1, 3, - 3, 1, 3, 3, 3, 3, 3, 1, 2, 1, - 1, 1, 1, 1, 1, 0, 2, 0, 3, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 3, 4, 4, 4, 4, 4, 4, 4, 0, + 3, 4, 7, 3, 1, 1, 2, 3, 3, 1, + 2, 2, 1, 2, 1, 2, 2, 1, 2, 0, + 1, 0, 2, 1, 2, 4, 0, 2, 1, 3, + 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 0, 3, 0, 2, 0, 3, 1, 3, + 2, 0, 1, 1, 0, 2, 4, 4, 0, 2, + 4, 2, 1, 3, 5, 4, 6, 1, 3, 3, + 5, 0, 5, 1, 3, 1, 2, 3, 1, 1, + 3, 3, 1, 3, 3, 3, 3, 3, 1, 2, + 1, 1, 1, 1, 1, 1, 0, 2, 0, 3, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, + 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2948,8 +2949,8 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, - 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 0, 1, 1, } var yyChk = [...]int{ @@ -2990,167 +2991,167 @@ var yyChk = [...]int{ -68, -70, 60, 59, 68, 61, 62, 63, 64, 69, 70, 71, -123, -76, -193, 45, 46, 251, 252, 253, 254, 259, 255, 78, 35, 241, 249, 248, 247, 245, - 246, 243, 244, 257, 258, 129, 242, 104, 250, -107, - -107, 11, -48, -49, -54, -56, -129, -99, -137, 167, - -103, 231, 230, -124, -101, -123, -121, 229, 190, 228, - 121, 267, 74, 22, 24, 212, 77, 109, 16, 78, - 108, 251, 116, 49, 268, 243, 244, 241, 253, 254, - 242, 218, 29, 10, 270, 25, 145, 21, 34, 102, - 118, 81, 82, 148, 23, 146, 71, 273, 19, 52, - 11, 13, 274, 275, 14, 129, 128, 93, 125, 47, - 8, 112, 26, 90, 43, 276, 28, 277, 278, 279, - 280, 45, 91, 17, 245, 246, 31, 281, 259, 152, - 104, 50, 37, 75, 282, 283, 69, 284, 72, 53, - 73, 15, 48, 285, 286, 287, 288, 92, 119, 250, - 46, 289, 123, 6, 256, 30, 144, 44, 290, 124, - 80, 257, 258, 127, 70, 5, 130, 32, 9, 51, - 54, 247, 248, 249, 35, 79, 12, 291, -168, 91, - -161, 58, -54, 125, -54, 250, -116, 129, -116, -116, - 124, -54, 58, 58, 116, 118, 121, 53, -18, -54, - -115, 129, 58, -115, -115, -115, -54, 113, -54, 58, - 30, -113, 91, 12, 242, 58, 157, 124, 158, 126, - -135, -193, -124, -135, -135, -135, 161, 162, -135, -112, - -111, 224, 225, 219, 223, 12, 162, 219, 160, -135, - -134, -134, -194, 57, -92, 19, 31, -39, -129, -88, - -89, -39, -87, -2, -26, 37, -30, 21, 34, 66, - 11, -126, 74, 73, 90, -125, 22, -123, 60, 113, - -39, -62, 93, 75, 91, 92, 77, 95, 94, 105, - 98, 99, 100, 101, 102, 103, 104, 96, 97, 108, - 83, 84, 85, 86, 87, 88, 89, -108, -193, -79, - -193, 114, 115, -65, -65, -65, -65, -65, -65, -65, - -65, -193, -2, -74, -39, -193, -193, -193, -193, -193, - -193, -193, -193, -193, -83, -39, -193, -197, -71, -193, - -197, -71, -197, -71, -197, -193, -197, -71, -197, -71, - -197, -197, -71, -193, -193, -193, -193, -193, -193, -55, - 26, -54, -41, -42, -43, -44, -57, -79, -193, -54, - -54, -48, -195, 56, 11, 54, -195, 56, 113, 56, - -99, 167, -100, -104, 232, 234, 83, -128, -123, 60, - 29, 30, 57, 56, -54, -140, -143, -145, -144, -146, - -141, -142, 187, 188, 109, 191, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 30, 147, 183, 184, - 185, 186, 203, 204, 205, 206, 207, 208, 209, 210, - 170, 189, 261, 171, 172, 173, 174, 175, 176, 178, - 179, 180, 181, 182, 58, -135, 126, 58, 75, 58, - -54, -54, -135, -135, -135, 159, 159, 124, 124, 164, - -54, 56, 127, -48, 23, 53, -54, 58, 58, -130, - -129, -121, -135, -113, 60, -39, -135, -135, -135, -54, - -135, -135, -135, -135, 11, -110, 11, 93, -39, -114, - 91, 53, 9, 93, 56, 18, 113, 56, -90, 24, - 25, -91, -194, -32, -66, -123, 61, 64, -31, 44, - -54, -39, -39, -72, 69, 75, 70, 71, -125, 100, - -130, -124, -121, -65, -73, -76, -79, 65, 93, 91, - 92, 77, -65, -65, -65, -65, -65, -65, -65, -65, - -65, -65, -65, -65, -65, -65, -65, -136, 58, 60, - 58, -64, -64, -123, -37, 21, 34, -36, -38, -194, - 56, -194, -2, -36, -36, -39, -39, -80, 60, -36, - -80, 60, -36, -36, -30, -81, -82, 79, -80, -123, - -129, -194, -65, -123, -123, -36, -37, -36, -36, -95, - 153, -54, 30, 56, -50, -52, -51, -53, 43, 47, - 49, 44, 45, 46, 50, -133, 22, -41, -193, -132, - 153, -131, 22, -129, 60, -95, 54, -41, -54, -41, - -56, -129, 100, -103, -100, 56, 233, 235, 236, 53, - 72, -39, -152, 108, -170, -171, -172, -124, 60, 61, - -161, -162, -163, -173, 139, -178, 131, 133, 130, -164, - 140, 125, 28, 57, -157, 69, 75, -153, 215, -147, - 55, -147, -147, -147, -147, -151, 190, -151, -151, -151, - 55, 55, -147, -147, -147, -155, 55, -155, -155, -156, - 55, -156, -127, 54, -54, -135, 23, -135, -117, 121, - 118, 119, -181, 117, 212, 190, 67, 29, 15, 251, - 153, 266, 58, 154, -54, -54, -54, -54, -54, 121, - 118, -54, -54, -54, -135, -54, -113, -129, -129, 60, - -54, 39, -39, -39, -130, -89, -92, -106, 19, 11, - 35, 35, -36, 69, 70, 71, 113, -193, -73, -65, - -65, -65, -35, 148, 74, -194, -194, -36, -36, 56, - -39, -194, -194, -194, 56, 54, 22, 11, 11, -194, - 11, 11, -194, -194, -36, -84, -82, 81, -39, -194, - 113, -194, 56, 56, -194, -194, -194, -194, -63, 30, - 35, -2, -193, -193, -98, -102, -80, -42, -43, -43, - -42, -43, 43, 43, 43, 48, 43, 48, 43, -51, - -129, -194, -58, 51, 128, 52, -193, -131, -59, 12, - -41, -59, -59, 113, -104, -105, 237, 234, 240, 58, - 60, 56, -172, 83, 55, 58, 28, -164, -164, -165, - 58, -165, 28, -149, 29, 69, -154, 216, 61, -151, - -151, -152, 30, -152, -152, -152, -160, 60, -160, 61, - 61, 53, -123, -135, -134, -187, 136, 132, 139, 140, - 134, 58, 125, 28, 131, 133, 153, 130, -187, -118, - -119, 127, 22, 125, 28, 153, -186, 54, 159, 212, - 159, 127, -135, -110, 40, 113, -54, -40, 11, 100, - -124, -37, -35, 74, -65, -65, -194, -194, -38, -139, - 109, 187, 147, 185, 181, 201, 192, 214, 183, 215, - -136, -139, -65, -65, -65, -65, 260, -87, 82, -39, - 80, -124, -65, -65, -97, 53, -98, -75, -77, -76, - -193, -2, -93, -123, -96, -123, -59, 56, 83, -46, - -45, 53, 54, -47, 53, -45, 43, 43, 125, 125, - 125, -96, -87, -39, -59, 234, 238, 239, -171, -172, - -175, -174, -123, -178, -165, -165, 55, -150, 53, -65, - 57, -152, -152, 58, 109, 57, 56, 57, 56, 57, - 56, -54, -134, -134, -54, -134, -123, -184, 263, -185, - 58, -123, -123, -123, -54, -113, -59, -41, -194, -65, - -194, -147, -147, -147, -156, -147, 175, -147, 175, -194, - -194, 19, 19, 19, 19, -193, -34, 256, -39, 56, - 56, 27, -97, 56, -194, -194, -194, 56, 113, -194, - 56, -87, -102, -39, -39, 55, -39, -193, -193, -193, - -194, -91, 57, 56, -147, -94, -123, -158, 212, 9, - -151, 60, -151, 61, 61, -135, 26, -183, -182, -124, - 55, 54, -85, 13, -151, 58, -65, -65, -65, -65, - -65, -91, 60, -65, -65, 28, -77, 35, -2, -193, - -123, -123, -123, -91, -94, -94, -194, -94, -94, -132, - -177, -176, 54, 135, 67, -174, 57, 56, -159, 131, - 28, 130, -68, -152, -152, 57, 57, -193, 56, 83, - -94, -54, -86, 14, 16, -194, -194, -194, -194, -33, - 93, 263, -194, -194, -194, 9, -75, -2, 113, 57, - -194, -194, -194, -58, -176, 58, -166, 83, 60, 142, - -123, -148, 67, 28, 28, -179, -180, 153, -182, -172, - 57, -39, -74, -194, 261, 50, 264, -98, -194, -123, - 61, -54, 60, -194, 56, -123, -186, 40, 262, 265, - 55, -180, 35, -184, 40, -94, 155, 263, 57, 156, - 264, -189, -190, 53, -193, 265, -190, 53, 10, 9, - -65, 152, -188, 143, 138, 141, 30, -188, -194, -194, - 137, 29, 69, + 246, 243, 244, 257, 258, 129, 242, 123, 104, 250, + -107, -107, 11, -48, -49, -54, -56, -129, -99, -137, + 167, -103, 231, 230, -124, -101, -123, -121, 229, 190, + 228, 121, 267, 74, 22, 24, 212, 77, 109, 16, + 78, 108, 251, 116, 49, 268, 243, 244, 241, 253, + 254, 242, 218, 29, 10, 270, 25, 145, 21, 34, + 102, 118, 81, 82, 148, 23, 146, 71, 273, 19, + 52, 11, 13, 274, 275, 14, 129, 128, 93, 125, + 47, 8, 112, 26, 90, 43, 276, 28, 277, 278, + 279, 280, 45, 91, 17, 245, 246, 31, 281, 259, + 152, 104, 50, 37, 75, 282, 283, 69, 284, 72, + 53, 73, 15, 48, 285, 286, 287, 288, 92, 119, + 250, 46, 289, 123, 6, 256, 30, 144, 44, 290, + 124, 80, 257, 258, 127, 70, 5, 130, 32, 9, + 51, 54, 247, 248, 249, 35, 79, 12, 291, -168, + 91, -161, 58, -54, 125, -54, 250, -116, 129, -116, + -116, 124, -54, 58, 58, 116, 118, 121, 53, -18, + -54, -115, 129, 58, -115, -115, -115, -54, 113, -54, + 58, 30, -113, 91, 12, 242, 58, 157, 124, 158, + 126, -135, -193, -124, -135, -135, -135, 161, 162, -135, + -112, -111, 224, 225, 219, 223, 12, 162, 219, 160, + -135, -134, -134, -194, 57, -92, 19, 31, -39, -129, + -88, -89, -39, -87, -2, -26, 37, -30, 21, 34, + 66, 11, -126, 74, 73, 90, -125, 22, -123, 60, + 113, -39, -62, 93, 75, 91, 92, 77, 95, 94, + 105, 98, 99, 100, 101, 102, 103, 104, 96, 97, + 108, 83, 84, 85, 86, 87, 88, 89, -108, -193, + -79, -193, 114, 115, -65, -65, -65, -65, -65, -65, + -65, -65, -193, -2, -74, -39, -193, -193, -193, -193, + -193, -193, -193, -193, -193, -83, -39, -193, -197, -71, + -193, -197, -71, -197, -71, -197, -193, -197, -71, -197, + -71, -197, -197, -71, -193, -193, -193, -193, -193, -193, + -193, -55, 26, -54, -41, -42, -43, -44, -57, -79, + -193, -54, -54, -48, -195, 56, 11, 54, -195, 56, + 113, 56, -99, 167, -100, -104, 232, 234, 83, -128, + -123, 60, 29, 30, 57, 56, -54, -140, -143, -145, + -144, -146, -141, -142, 187, 188, 109, 191, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 30, 147, + 183, 184, 185, 186, 203, 204, 205, 206, 207, 208, + 209, 210, 170, 189, 261, 171, 172, 173, 174, 175, + 176, 178, 179, 180, 181, 182, 58, -135, 126, 58, + 75, 58, -54, -54, -135, -135, -135, 159, 159, 124, + 124, 164, -54, 56, 127, -48, 23, 53, -54, 58, + 58, -130, -129, -121, -135, -113, 60, -39, -135, -135, + -135, -54, -135, -135, -135, -135, 11, -110, 11, 93, + -39, -114, 91, 53, 9, 93, 56, 18, 113, 56, + -90, 24, 25, -91, -194, -32, -66, -123, 61, 64, + -31, 44, -54, -39, -39, -72, 69, 75, 70, 71, + -125, 100, -130, -124, -121, -65, -73, -76, -79, 65, + 93, 91, 92, 77, -65, -65, -65, -65, -65, -65, + -65, -65, -65, -65, -65, -65, -65, -65, -65, -136, + 58, 60, 58, -64, -64, -123, -37, 21, 34, -36, + -38, -194, 56, -194, -2, -36, -36, -39, -39, -80, + 60, -36, -80, 60, -36, -36, -30, -81, -82, 79, + -80, -123, -129, -194, -65, -123, -123, -36, -37, -37, + -36, -36, -95, 153, -54, 30, 56, -50, -52, -51, + -53, 43, 47, 49, 44, 45, 46, 50, -133, 22, + -41, -193, -132, 153, -131, 22, -129, 60, -95, 54, + -41, -54, -41, -56, -129, 100, -103, -100, 56, 233, + 235, 236, 53, 72, -39, -152, 108, -170, -171, -172, + -124, 60, 61, -161, -162, -163, -173, 139, -178, 131, + 133, 130, -164, 140, 125, 28, 57, -157, 69, 75, + -153, 215, -147, 55, -147, -147, -147, -147, -151, 190, + -151, -151, -151, 55, 55, -147, -147, -147, -155, 55, + -155, -155, -156, 55, -156, -127, 54, -54, -135, 23, + -135, -117, 121, 118, 119, -181, 117, 212, 190, 67, + 29, 15, 251, 153, 266, 58, 154, -54, -54, -54, + -54, -54, 121, 118, -54, -54, -54, -135, -54, -113, + -129, -129, 60, -54, 39, -39, -39, -130, -89, -92, + -106, 19, 11, 35, 35, -36, 69, 70, 71, 113, + -193, -73, -65, -65, -65, -35, 148, 74, -194, -194, + -36, -36, 56, -39, -194, -194, -194, 56, 54, 22, + 11, 11, -194, 11, 11, -194, -194, -36, -84, -82, + 81, -39, -194, 113, -194, 56, 56, -194, -194, -194, + -194, -194, -63, 30, 35, -2, -193, -193, -98, -102, + -80, -42, -43, -43, -42, -43, 43, 43, 43, 48, + 43, 48, 43, -51, -129, -194, -58, 51, 128, 52, + -193, -131, -59, 12, -41, -59, -59, 113, -104, -105, + 237, 234, 240, 58, 60, 56, -172, 83, 55, 58, + 28, -164, -164, -165, 58, -165, 28, -149, 29, 69, + -154, 216, 61, -151, -151, -152, 30, -152, -152, -152, + -160, 60, -160, 61, 61, 53, -123, -135, -134, -187, + 136, 132, 139, 140, 134, 58, 125, 28, 131, 133, + 153, 130, -187, -118, -119, 127, 22, 125, 28, 153, + -186, 54, 159, 212, 159, 127, -135, -110, 40, 113, + -54, -40, 11, 100, -124, -37, -35, 74, -65, -65, + -194, -194, -38, -139, 109, 187, 147, 185, 181, 201, + 192, 214, 183, 215, -136, -139, -65, -65, -65, -65, + 260, -87, 82, -39, 80, -124, -65, -65, -97, 53, + -98, -75, -77, -76, -193, -2, -93, -123, -96, -123, + -59, 56, 83, -46, -45, 53, 54, -47, 53, -45, + 43, 43, 125, 125, 125, -96, -87, -39, -59, 234, + 238, 239, -171, -172, -175, -174, -123, -178, -165, -165, + 55, -150, 53, -65, 57, -152, -152, 58, 109, 57, + 56, 57, 56, 57, 56, -54, -134, -134, -54, -134, + -123, -184, 263, -185, 58, -123, -123, -123, -54, -113, + -59, -41, -194, -65, -194, -147, -147, -147, -156, -147, + 175, -147, 175, -194, -194, 19, 19, 19, 19, -193, + -34, 256, -39, 56, 56, 27, -97, 56, -194, -194, + -194, 56, 113, -194, 56, -87, -102, -39, -39, 55, + -39, -193, -193, -193, -194, -91, 57, 56, -147, -94, + -123, -158, 212, 9, -151, 60, -151, 61, 61, -135, + 26, -183, -182, -124, 55, 54, -85, 13, -151, 58, + -65, -65, -65, -65, -65, -91, 60, -65, -65, 28, + -77, 35, -2, -193, -123, -123, -123, -91, -94, -94, + -194, -94, -94, -132, -177, -176, 54, 135, 67, -174, + 57, 56, -159, 131, 28, 130, -68, -152, -152, 57, + 57, -193, 56, 83, -94, -54, -86, 14, 16, -194, + -194, -194, -194, -33, 93, 263, -194, -194, -194, 9, + -75, -2, 113, 57, -194, -194, -194, -58, -176, 58, + -166, 83, 60, 142, -123, -148, 67, 28, 28, -179, + -180, 153, -182, -172, 57, -39, -74, -194, 261, 50, + 264, -98, -194, -123, 61, -54, 60, -194, 56, -123, + -186, 40, 262, 265, 55, -180, 35, -184, 40, -94, + 155, 263, 57, 156, 264, -189, -190, 53, -193, 265, + -190, 53, 10, 9, -65, 152, -188, 143, 138, 141, + 30, -188, -194, -194, 137, 29, 69, } var yyDef = [...]int{ 23, -2, 2, -2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 565, 0, 319, 319, 319, 319, 319, 319, - 0, 636, 619, 0, 0, 0, 0, -2, 306, 307, - 0, 309, 310, 938, 938, 938, 938, 938, 0, 0, - 938, 0, 35, 36, 936, 1, 3, 573, 0, 0, - 323, 326, 321, 0, 619, 619, 0, 0, 65, 66, - 0, 0, 0, 925, 0, 617, 617, 617, 637, 638, - 641, 642, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, - 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, - 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, - 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, - 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, - 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, - 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, - 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, - 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, - 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, - 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, - 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, - 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, - 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, - 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, - 0, 0, 0, 0, 0, 620, 0, 615, 0, 615, - 615, 615, 0, 258, 392, 645, 646, 925, 0, 0, - 0, 297, 0, 939, 270, 939, 939, 273, 939, 0, - 939, 0, 280, 0, 0, 286, 939, 303, 304, 291, - 305, 308, 311, 312, 313, 314, 315, 938, 938, 318, - 29, 577, 0, 0, 565, 31, 0, 319, 324, 325, + 21, 22, 566, 0, 319, 319, 319, 319, 319, 319, + 0, 637, 620, 0, 0, 0, 0, -2, 306, 307, + 0, 309, 310, 939, 939, 939, 939, 939, 0, 0, + 939, 0, 35, 36, 937, 1, 3, 574, 0, 0, + 323, 326, 321, 0, 620, 620, 0, 0, 65, 66, + 0, 0, 0, 926, 0, 618, 618, 618, 638, 639, + 642, 643, 768, 769, 770, 771, 772, 773, 774, 775, + 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, + 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, + 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, + 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, + 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, + 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, + 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, + 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, + 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, + 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, + 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, + 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, + 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, + 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, + 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, + 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, + 0, 0, 0, 0, 0, 621, 0, 616, 0, 616, + 616, 616, 0, 258, 392, 646, 647, 926, 0, 0, + 0, 297, 0, 940, 270, 940, 940, 273, 940, 0, + 940, 0, 280, 0, 0, 286, 940, 303, 304, 291, + 305, 308, 311, 312, 313, 314, 315, 939, 939, 318, + 29, 578, 0, 0, 566, 31, 0, 319, 324, 325, 329, 327, 328, 320, 0, 338, 342, 0, 402, 0, 407, 409, -2, -2, 0, 444, 445, 446, 447, 448, 0, 0, 0, 0, 0, 0, 0, 0, 472, 473, - 474, 475, 550, 551, 552, 553, 554, 555, 556, 557, - 411, 412, 547, 597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 538, 0, 509, 509, 509, 509, 509, + 474, 475, 551, 552, 553, 554, 555, 556, 557, 558, + 411, 412, 548, 598, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 539, 0, 509, 509, 509, 509, 509, 509, 509, 509, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 44, 46, 392, 50, 0, 914, - 601, -2, -2, 0, 0, 643, 644, -2, 780, -2, - 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, + 0, 0, 0, 0, 0, 44, 46, 392, 50, 0, + 915, 602, -2, -2, 0, 0, 644, 645, -2, 781, + -2, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, @@ -3161,109 +3162,109 @@ var yyDef = [...]int{ 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, - 759, 760, 761, 762, 763, 764, 765, 766, 0, 0, - 84, 0, 82, 0, 939, 0, 0, 0, 0, 0, - 0, 939, 939, 939, 0, 0, 0, 0, 249, 0, - 0, 0, 0, 0, 0, 0, 257, 0, 259, 939, - 297, 262, 0, 0, 939, 939, 939, 0, 939, 939, - 269, 940, 941, 271, 272, 274, 939, 939, 276, 0, - 294, 292, 293, 288, 289, 0, 300, 283, 284, 287, - 316, 317, 30, 937, 24, 0, 0, 574, 0, 566, - 567, 570, 573, 29, 326, 0, 332, 330, 331, 322, - 0, 339, 0, 0, 0, 343, 0, 345, 346, 0, - 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 429, 430, 431, 432, 433, 434, 435, 408, 0, 422, - 0, 0, 0, 464, 465, 466, 467, 468, 469, 470, - 0, 334, 29, 0, 442, 0, 0, 0, 0, 0, - 0, 0, 0, 329, 0, 539, 0, 493, 501, 0, - 494, 502, 495, 503, 496, 0, 497, 504, 498, 505, - 499, 500, 506, 0, 0, 0, 334, 0, 0, 48, - 0, 391, 0, 349, 351, 352, 353, -2, 0, 375, - -2, 0, 0, 0, 42, 43, 0, 0, 0, 0, - 51, 914, 53, 54, 0, 0, 0, 162, 610, 611, - 612, 608, 206, 0, 0, 150, 146, 90, 91, 92, - 139, 94, 139, 139, 139, 139, 159, 159, 159, 159, - 122, 123, 124, 125, 126, 0, 0, 109, 139, 139, - 139, 113, 129, 130, 131, 132, 133, 134, 135, 136, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 141, - 141, 141, 143, 143, 639, 68, 0, 939, 0, 939, - 80, 0, 220, 222, 223, 0, 0, 0, 0, 0, - 0, 0, 0, 252, 616, 0, 939, 255, 256, 393, - 647, 648, 260, 261, 298, 299, 263, 264, 265, 266, - 267, 268, 275, 279, 0, 297, 0, 0, 281, 282, - 0, 0, 578, 0, 0, 0, 0, 0, 569, 571, - 572, 577, 32, 329, 0, 558, 0, 0, 0, 333, - 27, 403, 404, 406, 423, 0, 425, 427, 344, 340, - 0, 548, -2, 413, 414, 438, 439, 440, 0, 0, - 0, 0, 436, 418, 0, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 463, 523, 524, - 0, 461, 462, 471, 0, 0, 0, 335, 336, 441, - 0, 596, 29, 0, 0, 0, 0, 446, 550, 0, - 446, 550, 0, 0, 0, 545, 542, 0, 0, 547, - 0, 510, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 390, 0, 0, 0, 0, 0, 0, 380, 0, - 0, 383, 0, 0, 0, 0, 374, 0, 0, 395, - 859, 376, 0, 378, 379, 400, 0, 400, 45, 400, - 47, 0, 394, 602, 52, 0, 0, 57, 58, 603, - 604, 605, 606, 0, 81, 207, 209, 212, 213, 214, - 85, 86, 87, 0, 0, 194, 0, 0, 188, 188, - 0, 186, 187, 83, 153, 151, 0, 148, 147, 93, - 0, 159, 159, 116, 117, 162, 0, 162, 162, 162, - 0, 0, 110, 111, 112, 104, 0, 105, 106, 107, - 0, 108, 0, 0, 939, 70, 618, 71, 938, 0, - 0, 631, 221, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 0, 72, 225, 227, 226, 230, 0, - 0, 0, 250, 939, 254, 294, 278, 295, 296, 301, - 285, 0, 575, 576, 0, 568, 25, 0, 613, 614, - 559, 560, 347, 424, 426, 428, 0, 334, 415, 436, - 419, 0, 416, 0, 0, 410, 476, 0, 0, 0, - 443, -2, 480, 481, 0, 0, 0, 0, 0, 516, - 0, 0, 517, 0, 565, 0, 543, 0, 0, 492, - 0, 511, 0, 0, 512, 513, 514, 515, 590, 0, - 0, -2, 0, 0, 400, 598, 0, 350, 369, 371, - 0, 366, 381, 382, 384, 0, 386, 0, 388, 389, - 354, 356, 357, 0, 0, 0, 0, 377, 565, 0, - 400, 40, 41, 0, 55, 56, 0, 0, 62, 163, - 164, 0, 210, 0, 0, 0, 181, 188, 188, 184, - 189, 185, 0, 155, 0, 152, 89, 149, 0, 162, - 162, 118, 0, 119, 120, 121, 0, 137, 0, 0, - 0, 0, 640, 69, 215, 938, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 938, 0, - 938, 632, 633, 634, 635, 0, 75, 0, 0, 0, - 0, 0, 253, 297, 579, 0, 26, 400, 0, 341, - 549, 0, 417, 0, 437, 420, 477, 478, 337, 0, - 139, 139, 528, 139, 143, 531, 139, 533, 139, 536, - 0, 0, 0, 0, 0, 0, 0, 540, 491, 546, - 0, 548, 0, 0, 33, 0, 590, 580, 592, 594, - 0, 29, 0, 586, 0, 361, 565, 0, 0, 363, - 370, 0, 0, 364, 0, 365, 385, 387, 0, 0, - 0, 0, 573, 401, 39, 59, 60, 61, 208, 211, - 0, 190, 139, 193, 182, 183, 0, 157, 0, 154, - 140, 114, 115, 160, 161, 159, 0, 159, 0, 144, - 0, 939, 216, 217, 218, 219, 0, 224, 0, 73, - 74, 0, 0, 229, 251, 277, 561, 348, 479, 421, - 482, 525, 159, 529, 530, 532, 534, 535, 537, 484, - 483, 0, 0, 0, 0, 0, 573, 0, 544, 0, - 0, 0, 34, 0, 595, -2, 0, 0, 0, 49, - 0, 573, 599, 600, 367, 0, 372, 0, 0, 0, - 375, 38, 173, 0, 192, 0, 359, 165, 158, 0, - 162, 138, 162, 0, 0, 67, 0, 76, 77, 0, - 0, 0, 563, 0, 526, 527, 0, 0, 0, 0, - 518, 0, 541, 0, 0, 0, 593, 0, -2, 0, - 588, 587, 362, 37, 0, 0, 397, 0, 0, 395, - 172, 174, 0, 179, 0, 191, 0, 0, 170, 0, - 167, 169, 156, 127, 128, 142, 145, 0, 0, 0, - 0, 231, 28, 0, 0, 485, 487, 486, 488, 0, - 0, 0, 490, 507, 508, 0, 583, 29, 0, 368, - 396, 398, 399, 358, 175, 176, 0, 180, 178, 0, - 360, 88, 0, 166, 168, 0, 245, 0, 78, 79, - 72, 564, 562, 489, 0, 0, 0, 591, -2, 589, - 177, 0, 171, 244, 0, 0, 75, 519, 0, 522, - 0, 246, 0, 228, 520, 0, 0, 0, 195, 0, - 0, 196, 197, 0, 0, 521, 198, 0, 0, 0, - 0, 0, 199, 201, 202, 0, 0, 200, 247, 248, - 203, 204, 205, + 759, 760, 761, 762, 763, 764, 765, 766, 767, 0, + 0, 84, 0, 82, 0, 940, 0, 0, 0, 0, + 0, 0, 940, 940, 940, 0, 0, 0, 0, 249, + 0, 0, 0, 0, 0, 0, 0, 257, 0, 259, + 940, 297, 262, 0, 0, 940, 940, 940, 0, 940, + 940, 269, 941, 942, 271, 272, 274, 940, 940, 276, + 0, 294, 292, 293, 288, 289, 0, 300, 283, 284, + 287, 316, 317, 30, 938, 24, 0, 0, 575, 0, + 567, 568, 571, 574, 29, 326, 0, 332, 330, 331, + 322, 0, 339, 0, 0, 0, 343, 0, 345, 346, + 0, 405, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 429, 430, 431, 432, 433, 434, 435, 408, 0, + 422, 0, 0, 0, 464, 465, 466, 467, 468, 469, + 470, 0, 334, 29, 0, 442, 0, 0, 0, 0, + 0, 0, 0, 0, 329, 0, 540, 0, 493, 501, + 0, 494, 502, 495, 503, 496, 0, 497, 504, 498, + 505, 499, 500, 506, 0, 0, 0, 334, 334, 0, + 0, 48, 0, 391, 0, 349, 351, 352, 353, -2, + 0, 375, -2, 0, 0, 0, 42, 43, 0, 0, + 0, 0, 51, 915, 53, 54, 0, 0, 0, 162, + 611, 612, 613, 609, 206, 0, 0, 150, 146, 90, + 91, 92, 139, 94, 139, 139, 139, 139, 159, 159, + 159, 159, 122, 123, 124, 125, 126, 0, 0, 109, + 139, 139, 139, 113, 129, 130, 131, 132, 133, 134, + 135, 136, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 141, 141, 141, 143, 143, 640, 68, 0, 940, + 0, 940, 80, 0, 220, 222, 223, 0, 0, 0, + 0, 0, 0, 0, 0, 252, 617, 0, 940, 255, + 256, 393, 648, 649, 260, 261, 298, 299, 263, 264, + 265, 266, 267, 268, 275, 279, 0, 297, 0, 0, + 281, 282, 0, 0, 579, 0, 0, 0, 0, 0, + 570, 572, 573, 578, 32, 329, 0, 559, 0, 0, + 0, 333, 27, 403, 404, 406, 423, 0, 425, 427, + 344, 340, 0, 549, -2, 413, 414, 438, 439, 440, + 0, 0, 0, 0, 436, 418, 0, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 463, + 524, 525, 0, 461, 462, 471, 0, 0, 0, 335, + 336, 441, 0, 597, 29, 0, 0, 0, 0, 446, + 551, 0, 446, 551, 0, 0, 0, 546, 543, 0, + 0, 548, 0, 510, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 390, 0, 0, 0, 0, 0, + 0, 380, 0, 0, 383, 0, 0, 0, 0, 374, + 0, 0, 395, 860, 376, 0, 378, 379, 400, 0, + 400, 45, 400, 47, 0, 394, 603, 52, 0, 0, + 57, 58, 604, 605, 606, 607, 0, 81, 207, 209, + 212, 213, 214, 85, 86, 87, 0, 0, 194, 0, + 0, 188, 188, 0, 186, 187, 83, 153, 151, 0, + 148, 147, 93, 0, 159, 159, 116, 117, 162, 0, + 162, 162, 162, 0, 0, 110, 111, 112, 104, 0, + 105, 106, 107, 0, 108, 0, 0, 940, 70, 619, + 71, 939, 0, 0, 632, 221, 622, 623, 624, 625, + 626, 627, 628, 629, 630, 631, 0, 72, 225, 227, + 226, 230, 0, 0, 0, 250, 940, 254, 294, 278, + 295, 296, 301, 285, 0, 576, 577, 0, 569, 25, + 0, 614, 615, 560, 561, 347, 424, 426, 428, 0, + 334, 415, 436, 419, 0, 416, 0, 0, 410, 476, + 0, 0, 0, 443, -2, 480, 481, 0, 0, 0, + 0, 0, 517, 0, 0, 518, 0, 566, 0, 544, + 0, 0, 492, 0, 511, 0, 0, 512, 513, 514, + 515, 516, 591, 0, 0, -2, 0, 0, 400, 599, + 0, 350, 369, 371, 0, 366, 381, 382, 384, 0, + 386, 0, 388, 389, 354, 356, 357, 0, 0, 0, + 0, 377, 566, 0, 400, 40, 41, 0, 55, 56, + 0, 0, 62, 163, 164, 0, 210, 0, 0, 0, + 181, 188, 188, 184, 189, 185, 0, 155, 0, 152, + 89, 149, 0, 162, 162, 118, 0, 119, 120, 121, + 0, 137, 0, 0, 0, 0, 641, 69, 215, 939, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 939, 0, 939, 633, 634, 635, 636, 0, + 75, 0, 0, 0, 0, 0, 253, 297, 580, 0, + 26, 400, 0, 341, 550, 0, 417, 0, 437, 420, + 477, 478, 337, 0, 139, 139, 529, 139, 143, 532, + 139, 534, 139, 537, 0, 0, 0, 0, 0, 0, + 0, 541, 491, 547, 0, 549, 0, 0, 33, 0, + 591, 581, 593, 595, 0, 29, 0, 587, 0, 361, + 566, 0, 0, 363, 370, 0, 0, 364, 0, 365, + 385, 387, 0, 0, 0, 0, 574, 401, 39, 59, + 60, 61, 208, 211, 0, 190, 139, 193, 182, 183, + 0, 157, 0, 154, 140, 114, 115, 160, 161, 159, + 0, 159, 0, 144, 0, 940, 216, 217, 218, 219, + 0, 224, 0, 73, 74, 0, 0, 229, 251, 277, + 562, 348, 479, 421, 482, 526, 159, 530, 531, 533, + 535, 536, 538, 484, 483, 0, 0, 0, 0, 0, + 574, 0, 545, 0, 0, 0, 34, 0, 596, -2, + 0, 0, 0, 49, 0, 574, 600, 601, 367, 0, + 372, 0, 0, 0, 375, 38, 173, 0, 192, 0, + 359, 165, 158, 0, 162, 138, 162, 0, 0, 67, + 0, 76, 77, 0, 0, 0, 564, 0, 527, 528, + 0, 0, 0, 0, 519, 0, 542, 0, 0, 0, + 594, 0, -2, 0, 589, 588, 362, 37, 0, 0, + 397, 0, 0, 395, 172, 174, 0, 179, 0, 191, + 0, 0, 170, 0, 167, 169, 156, 127, 128, 142, + 145, 0, 0, 0, 0, 231, 28, 0, 0, 485, + 487, 486, 488, 0, 0, 0, 490, 507, 508, 0, + 584, 29, 0, 368, 396, 398, 399, 358, 175, 176, + 0, 180, 178, 0, 360, 88, 0, 166, 168, 0, + 245, 0, 78, 79, 72, 565, 563, 489, 0, 0, + 0, 592, -2, 590, 177, 0, 171, 244, 0, 0, + 75, 520, 0, 523, 0, 246, 0, 228, 521, 0, + 0, 0, 195, 0, 0, 196, 197, 0, 0, 522, + 198, 0, 0, 0, 0, 0, 199, 201, 202, 0, + 0, 200, 247, 248, 203, 204, 205, } var yyTok1 = [...]int{ @@ -6627,19 +6628,19 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2667 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} } case 515: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2671 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } case 516: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2675 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } case 517: yyDollar = yyS[yypt-4 : yypt+1] @@ -6648,40 +6649,40 @@ yydefault: yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 518: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2685 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:2683 { - yyVAL.str = "" + yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 519: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:2689 { - yyVAL.str = BooleanModeStr + yyVAL.str = "" } case 520: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2693 { - yyVAL.str = NaturalLanguageModeStr + yyVAL.str = BooleanModeStr } case 521: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2697 { - yyVAL.str = NaturalLanguageModeWithQueryExpansionStr + yyVAL.str = NaturalLanguageModeStr } case 522: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:2701 { - yyVAL.str = QueryExpansionStr + yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } case 523: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2707 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2705 { - yyVAL.str = string(yyDollar[1].bytes) + yyVAL.str = QueryExpansionStr } case 524: yyDollar = yyS[yypt-1 : yypt+1] @@ -6690,63 +6691,63 @@ yydefault: yyVAL.str = string(yyDollar[1].bytes) } case 525: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2717 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2715 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} + yyVAL.str = string(yyDollar[1].bytes) } case 526: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2721 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 527: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2725 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: string(yyDollar[3].bytes)} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } case 528: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2729 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: string(yyDollar[3].bytes)} } case 529: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2733 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 530: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2737 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} - yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length - yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 531: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2743 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2741 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} + yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length + yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } case 532: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2747 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 533: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2751 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 534: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2755 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} @@ -6755,143 +6756,149 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2759 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 536: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2763 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 537: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2767 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 538: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2771 + { + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} + } + case 539: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2772 +//line sql.y:2776 { yyVAL.expr = nil } - case 539: + case 540: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2776 +//line sql.y:2780 { yyVAL.expr = yyDollar[1].expr } - case 540: + case 541: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2781 +//line sql.y:2785 { yyVAL.str = string("") } - case 541: + case 542: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2785 +//line sql.y:2789 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 542: + case 543: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2791 +//line sql.y:2795 { yyVAL.whens = []*When{yyDollar[1].when} } - case 543: + case 544: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2795 +//line sql.y:2799 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 544: + case 545: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2801 +//line sql.y:2805 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 545: + case 546: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2806 +//line sql.y:2810 { yyVAL.expr = nil } - case 546: + case 547: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2810 +//line sql.y:2814 { yyVAL.expr = yyDollar[2].expr } - case 547: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2816 - { - yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} - } case 548: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2820 { - yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} + yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } case 549: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2824 { - yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} + yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } case 550: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2830 + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:2828 { - yyVAL.expr = NewStrVal(yyDollar[1].bytes) + yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } case 551: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2834 { - yyVAL.expr = NewHexVal(yyDollar[1].bytes) + yyVAL.expr = NewStrVal(yyDollar[1].bytes) } case 552: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2838 { - yyVAL.expr = NewBitVal(yyDollar[1].bytes) + yyVAL.expr = NewHexVal(yyDollar[1].bytes) } case 553: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2842 { - yyVAL.expr = NewIntVal(yyDollar[1].bytes) + yyVAL.expr = NewBitVal(yyDollar[1].bytes) } case 554: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2846 { - yyVAL.expr = NewFloatVal(yyDollar[1].bytes) + yyVAL.expr = NewIntVal(yyDollar[1].bytes) } case 555: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2850 { - yyVAL.expr = NewHexNum(yyDollar[1].bytes) + yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } case 556: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2854 { - yyVAL.expr = NewValArg(yyDollar[1].bytes) + yyVAL.expr = NewHexNum(yyDollar[1].bytes) } case 557: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2858 { - yyVAL.expr = &NullVal{} + yyVAL.expr = NewValArg(yyDollar[1].bytes) } case 558: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2864 +//line sql.y:2862 + { + yyVAL.expr = &NullVal{} + } + case 559: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2868 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -6900,239 +6907,239 @@ yydefault: } yyVAL.expr = NewIntVal([]byte("1")) } - case 559: + case 560: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2873 +//line sql.y:2877 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 560: + case 561: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2877 +//line sql.y:2881 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 561: + case 562: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2882 +//line sql.y:2886 { yyVAL.exprs = nil } - case 562: + case 563: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2886 +//line sql.y:2890 { yyVAL.exprs = yyDollar[3].exprs } - case 563: + case 564: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2891 +//line sql.y:2895 { yyVAL.expr = nil } - case 564: + case 565: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2895 +//line sql.y:2899 { yyVAL.expr = yyDollar[2].expr } - case 565: + case 566: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2900 +//line sql.y:2904 { yyVAL.orderBy = nil } - case 566: + case 567: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2904 +//line sql.y:2908 { yyVAL.orderBy = yyDollar[3].orderBy } - case 567: + case 568: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2910 +//line sql.y:2914 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 568: + case 569: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2914 +//line sql.y:2918 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 569: + case 570: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2920 +//line sql.y:2924 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } - case 570: + case 571: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2925 +//line sql.y:2929 { yyVAL.str = AscScr } - case 571: + case 572: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2929 +//line sql.y:2933 { yyVAL.str = AscScr } - case 572: + case 573: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2933 +//line sql.y:2937 { yyVAL.str = DescScr } - case 573: + case 574: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2938 +//line sql.y:2942 { yyVAL.limit = nil } - case 574: + case 575: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2942 +//line sql.y:2946 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 575: + case 576: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2946 +//line sql.y:2950 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 576: + case 577: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2950 +//line sql.y:2954 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 577: + case 578: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2955 +//line sql.y:2959 { yyVAL.str = "" } - case 578: + case 579: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2959 +//line sql.y:2963 { yyVAL.str = ForUpdateStr } - case 579: + case 580: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2963 +//line sql.y:2967 { yyVAL.str = ShareModeStr } - case 580: + case 581: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2976 +//line sql.y:2980 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 581: + case 582: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2980 +//line sql.y:2984 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 582: + case 583: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2984 +//line sql.y:2988 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } - case 583: + case 584: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2989 +//line sql.y:2993 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 584: + case 585: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2993 +//line sql.y:2997 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 585: + case 586: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2997 +//line sql.y:3001 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } - case 586: + case 587: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3004 +//line sql.y:3008 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 587: + case 588: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3008 +//line sql.y:3012 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 588: + case 589: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3012 +//line sql.y:3016 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 589: + case 590: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3016 +//line sql.y:3020 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 590: + case 591: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3021 +//line sql.y:3025 { yyVAL.updateExprs = nil } - case 591: + case 592: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3025 +//line sql.y:3029 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 592: + case 593: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3031 +//line sql.y:3035 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 593: + case 594: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3035 +//line sql.y:3039 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 594: + case 595: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3041 +//line sql.y:3045 { yyVAL.valTuple = yyDollar[1].valTuple } - case 595: + case 596: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3045 +//line sql.y:3049 { yyVAL.valTuple = ValTuple{} } - case 596: + case 597: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3051 +//line sql.y:3055 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 597: + case 598: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3057 +//line sql.y:3061 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = &ParenExpr{yyDollar[1].valTuple[0]} @@ -7140,195 +7147,189 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 598: + case 599: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3067 +//line sql.y:3071 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 599: + case 600: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3071 +//line sql.y:3075 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 600: + case 601: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3077 +//line sql.y:3081 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 601: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3083 - { - yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} - } case 602: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3087 { - yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) + yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } case 603: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3093 +//line sql.y:3091 { - yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} + yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } case 604: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3097 { - yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("off"))} + yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} } case 605: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3101 { - yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} + yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("off"))} } case 606: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3105 + { + yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} + } + case 607: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3109 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } - case 608: + case 609: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3112 +//line sql.y:3116 { yyVAL.bytes = []byte("charset") } - case 610: + case 611: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3119 +//line sql.y:3123 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } - case 611: + case 612: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3123 +//line sql.y:3127 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 612: + case 613: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3127 +//line sql.y:3131 { yyVAL.expr = &Default{} } - case 615: + case 616: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3136 +//line sql.y:3140 { yyVAL.byt = 0 } - case 616: + case 617: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3138 +//line sql.y:3142 { yyVAL.byt = 1 } - case 617: + case 618: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3141 +//line sql.y:3145 { yyVAL.empty = struct{}{} } - case 618: + case 619: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3143 +//line sql.y:3147 { yyVAL.empty = struct{}{} } - case 619: + case 620: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3146 +//line sql.y:3150 { yyVAL.str = "" } - case 620: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3148 - { - yyVAL.str = IgnoreStr - } case 621: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3152 { - yyVAL.empty = struct{}{} + yyVAL.str = IgnoreStr } case 622: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3154 +//line sql.y:3156 { yyVAL.empty = struct{}{} } case 623: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3156 +//line sql.y:3158 { yyVAL.empty = struct{}{} } case 624: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3158 +//line sql.y:3160 { yyVAL.empty = struct{}{} } case 625: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3160 +//line sql.y:3162 { yyVAL.empty = struct{}{} } case 626: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3162 +//line sql.y:3164 { yyVAL.empty = struct{}{} } case 627: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3164 +//line sql.y:3166 { yyVAL.empty = struct{}{} } case 628: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3166 +//line sql.y:3168 { yyVAL.empty = struct{}{} } case 629: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3168 +//line sql.y:3170 { yyVAL.empty = struct{}{} } case 630: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3170 +//line sql.y:3172 { yyVAL.empty = struct{}{} } case 631: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3173 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3174 { yyVAL.empty = struct{}{} } case 632: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3175 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3177 { yyVAL.empty = struct{}{} } case 633: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3177 +//line sql.y:3179 { yyVAL.empty = struct{}{} } @@ -7340,45 +7341,45 @@ yydefault: } case 635: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3183 +//line sql.y:3185 { yyVAL.empty = struct{}{} } case 636: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3186 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3187 { yyVAL.empty = struct{}{} } case 637: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3188 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3190 { yyVAL.empty = struct{}{} } case 638: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3190 +//line sql.y:3192 { yyVAL.empty = struct{}{} } case 639: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3193 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3194 { - yyVAL.colIdent = ColIdent{} + yyVAL.empty = struct{}{} } case 640: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3195 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3197 { - yyVAL.colIdent = yyDollar[2].colIdent + yyVAL.colIdent = ColIdent{} } case 641: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3199 { - yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) + yyVAL.colIdent = yyDollar[2].colIdent } case 642: yyDollar = yyS[yypt-1 : yypt+1] @@ -7386,17 +7387,17 @@ yydefault: { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 644: + case 643: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3210 +//line sql.y:3207 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 645: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3216 +//line sql.y:3214 { - yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) + yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 646: yyDollar = yyS[yypt-1 : yypt+1] @@ -7404,41 +7405,41 @@ yydefault: { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 648: + case 647: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3224 + { + yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) + } + case 649: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3227 +//line sql.y:3231 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 936: + case 937: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3540 +//line sql.y:3544 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 937: + case 938: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3549 +//line sql.y:3553 { decNesting(yylex) } - case 938: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3554 - { - skipToEnd(yylex) - } case 939: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3559 +//line sql.y:3558 { skipToEnd(yylex) } case 940: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:3563 { skipToEnd(yylex) @@ -7449,6 +7450,12 @@ yydefault: { skipToEnd(yylex) } + case 942: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3571 + { + skipToEnd(yylex) + } } goto yystack /* stack new state and value */ } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 85a31e4818e..f26b31d6cad 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -2663,6 +2663,10 @@ function_call_conflict: { $$ = &FuncExpr{Name: NewColIdent("database"), Exprs: $3} } +| SCHEMA openb select_expression_list_opt closeb + { + $$ = &FuncExpr{Name: NewColIdent("schema"), Exprs: $3} + } | MOD openb select_expression_list closeb { $$ = &FuncExpr{Name: NewColIdent("mod"), Exprs: $3} diff --git a/go/vt/vtgate/engine/primitive.go b/go/vt/vtgate/engine/primitive.go index a62bac5942f..34a8d96a226 100644 --- a/go/vt/vtgate/engine/primitive.go +++ b/go/vt/vtgate/engine/primitive.go @@ -20,6 +20,8 @@ import ( "sync" "time" + "vitess.io/vitess/go/vt/sqlparser" + "golang.org/x/net/context" "vitess.io/vitess/go/sqltypes" @@ -94,10 +96,8 @@ type Plan struct { Rows uint64 `json:",omitempty"` // Total number of errors Errors uint64 `json:",omitempty"` - // NeedsLastInsertID signals whether this plan will need to be provided with last_insert_id - NeedsLastInsertID bool `json:"-"` // don't include in the json representation - // NeedsDatabaseName signals whether this plan will need to be provided with the database name - NeedsDatabaseName bool `json:"-"` // don't include in the json representation + // Stores BindVars needed to be provided as part of expression rewriting + sqlparser.BindVarNeeds `json:"-"` } // AddStats updates the plan execution statistics diff --git a/go/vt/vtgate/executor.go b/go/vt/vtgate/executor.go index b28c5a909db..108482b643f 100644 --- a/go/vt/vtgate/executor.go +++ b/go/vt/vtgate/executor.go @@ -145,6 +145,9 @@ func (e *Executor) Execute(ctx context.Context, method string, safeSession *Safe logStats := NewLogStats(ctx, method, sql, bindVars) result, err = e.execute(ctx, safeSession, sql, bindVars, logStats) + if err == nil { + safeSession.FoundRows = result.RowsAffected + } logStats.Error = err if result != nil && len(result.Rows) > *warnMemoryRows { warnings.Add("ResultsExceeded", 1) @@ -328,10 +331,11 @@ func (e *Executor) handleExec(ctx context.Context, safeSession *SafeSession, sql return nil, err } - if plan.NeedsLastInsertID { + bindVarNeeds := plan.BindVarNeeds + if bindVarNeeds.NeedLastInsertID { bindVars[sqlparser.LastInsertIDName] = sqltypes.Uint64BindVariable(safeSession.GetLastInsertId()) } - if plan.NeedsDatabaseName { + if bindVarNeeds.NeedDatabase { keyspace, _, _, _ := e.ParseDestinationTarget(safeSession.TargetString) if keyspace == "" { bindVars[sqlparser.DBVarName] = sqltypes.NullBindVariable @@ -339,6 +343,9 @@ func (e *Executor) handleExec(ctx context.Context, safeSession *SafeSession, sql bindVars[sqlparser.DBVarName] = sqltypes.StringBindVariable(keyspace) } } + if bindVarNeeds.NeedFoundRows { + bindVars[sqlparser.FoundRowsName] = sqltypes.Uint64BindVariable(safeSession.FoundRows) + } qr, err := plan.Instructions.Execute(vcursor, bindVars, true) logStats.ExecuteTime = time.Since(execStart) @@ -1407,15 +1414,15 @@ func (e *Executor) getPlan(vcursor *vcursorImpl, sql string, comments sqlparser. } keyspace := vcursor.keyspace planKey := keyspace + vindexes.TabletTypeSuffix[vcursor.tabletType] + ":" + sql - if result, ok := e.plans.Get(planKey); ok { - return result.(*engine.Plan), nil + if plan, ok := e.plans.Get(planKey); ok { + return plan.(*engine.Plan), nil } stmt, err := sqlparser.Parse(sql) if err != nil { return nil, err } if !e.normalize { - plan, err := planbuilder.BuildFromStmt(sql, stmt, vcursor, false, false) + plan, err := planbuilder.BuildFromStmt(sql, stmt, vcursor, sqlparser.BindVarNeeds{}) if err != nil { return nil, err } @@ -1439,10 +1446,10 @@ func (e *Executor) getPlan(vcursor *vcursorImpl, sql string, comments sqlparser. } planKey = keyspace + vindexes.TabletTypeSuffix[vcursor.tabletType] + ":" + normalized - if result, ok := e.plans.Get(planKey); ok { - return result.(*engine.Plan), nil + if plan, ok := e.plans.Get(planKey); ok { + return plan.(*engine.Plan), nil } - plan, err := planbuilder.BuildFromStmt(normalized, rewrittenStatement, vcursor, result.NeedLastInsertID, result.NeedDatabase) + plan, err := planbuilder.BuildFromStmt(normalized, rewrittenStatement, vcursor, result.BindVarNeeds) if err != nil { return nil, err } diff --git a/go/vt/vtgate/executor_select_test.go b/go/vt/vtgate/executor_select_test.go index 14363bb6449..3cc40311a57 100644 --- a/go/vt/vtgate/executor_select_test.go +++ b/go/vt/vtgate/executor_select_test.go @@ -235,6 +235,27 @@ func TestSelectLastInsertId(t *testing.T) { assert.Equal(t, wantQueries, sbc1.Queries) } +func TestFoundRows(t *testing.T) { + executor, sbc1, _, _ := createExecutorEnv() + executor.normalize = true + logChan := QueryLogger.Subscribe("Test") + defer QueryLogger.Unsubscribe(logChan) + + // run this extra query so we can assert on the number of rows found + _, err := executorExec(executor, "select 42", map[string]*querypb.BindVariable{}) + require.NoError(t, err) + + sql := "select found_rows()" + _, err = executorExec(executor, sql, map[string]*querypb.BindVariable{}) + require.NoError(t, err) + expected := &querypb.BoundQuery{ + Sql: "select :__vtfrows as `found_rows()` from dual", + BindVariables: map[string]*querypb.BindVariable{"__vtfrows": sqltypes.Uint64BindVariable(1)}, + } + + assert.Equal(t, expected, sbc1.Queries[1]) +} + func TestSelectLastInsertIdInUnion(t *testing.T) { executor, sbc1, _, _ := createExecutorEnv() executor.normalize = true diff --git a/go/vt/vtgate/executor_test.go b/go/vt/vtgate/executor_test.go index ec148f45594..d23b00131b2 100644 --- a/go/vt/vtgate/executor_test.go +++ b/go/vt/vtgate/executor_test.go @@ -609,7 +609,7 @@ func TestExecutorAutocommit(t *testing.T) { if err != nil { t.Fatal(err) } - wantSession := &vtgatepb.Session{TargetString: "@master", InTransaction: true} + wantSession := &vtgatepb.Session{TargetString: "@master", InTransaction: true, FoundRows: 1} testSession := *session.Session testSession.ShardSessions = nil if !proto.Equal(&testSession, wantSession) { @@ -643,7 +643,7 @@ func TestExecutorAutocommit(t *testing.T) { if err != nil { t.Fatal(err) } - wantSession = &vtgatepb.Session{Autocommit: true, TargetString: "@master"} + wantSession = &vtgatepb.Session{Autocommit: true, TargetString: "@master", FoundRows: 1} if !proto.Equal(session.Session, wantSession) { t.Errorf("autocommit=1: %v, want %v", session.Session, wantSession) } @@ -672,7 +672,7 @@ func TestExecutorAutocommit(t *testing.T) { if err != nil { t.Fatal(err) } - wantSession = &vtgatepb.Session{InTransaction: true, Autocommit: true, TargetString: "@master"} + wantSession = &vtgatepb.Session{InTransaction: true, Autocommit: true, TargetString: "@master", FoundRows: 1} testSession = *session.Session testSession.ShardSessions = nil if !proto.Equal(&testSession, wantSession) { diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index dc912cd72e6..bd016333523 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -263,14 +263,14 @@ func Build(query string, vschema ContextVSchema) (*engine.Plan, error) { return nil, err } - return BuildFromStmt(query, result.AST, vschema, result.NeedLastInsertID, result.NeedDatabase) + return BuildFromStmt(query, result.AST, vschema, result.BindVarNeeds) } // BuildFromStmt builds a plan based on the AST provided. // TODO(sougou): The query input is trusted as the source // of the AST. Maybe this function just returns instructions // and engine.Plan can be built by the caller. -func BuildFromStmt(query string, stmt sqlparser.Statement, vschema ContextVSchema, needsLastInsertID, needsDBName bool) (*engine.Plan, error) { +func BuildFromStmt(query string, stmt sqlparser.Statement, vschema ContextVSchema, bindVarNeeds sqlparser.BindVarNeeds) (*engine.Plan, error) { var err error var instruction engine.Primitive switch stmt := stmt.(type) { @@ -309,10 +309,9 @@ func BuildFromStmt(query string, stmt sqlparser.Statement, vschema ContextVSchem return nil, err } plan := &engine.Plan{ - Original: query, - Instructions: instruction, - NeedsLastInsertID: needsLastInsertID, - NeedsDatabaseName: needsDBName, + Original: query, + Instructions: instruction, } + plan.BindVarNeeds = bindVarNeeds return plan, nil } diff --git a/go/vt/vtgate/vtgate_test.go b/go/vt/vtgate/vtgate_test.go index 560aca613b0..2705dc42008 100644 --- a/go/vt/vtgate/vtgate_test.go +++ b/go/vt/vtgate/vtgate_test.go @@ -254,6 +254,7 @@ func TestVTGateExecute(t *testing.T) { }, TransactionId: 1, }}, + FoundRows: 1, } if !proto.Equal(wantSession, session) { t.Errorf("want \n%+v, got \n%+v", wantSession, session)