From 2348d695f7fe45f9d23ae9b66787a411cb682863 Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Wed, 10 Feb 2021 01:14:04 +0530 Subject: [PATCH 01/15] added dbanem in ShowBasic ast and moved few of the show commands from legacy to ShowBasic Signed-off-by: Harshit Gangal --- go/vt/sqlparser/ast.go | 7 +- go/vt/sqlparser/ast_funcs.go | 10 + go/vt/sqlparser/constants.go | 11 + go/vt/sqlparser/parse_test.go | 3 +- go/vt/sqlparser/sql.go | 10987 ++++++++++++++++---------------- go/vt/sqlparser/sql.y | 44 +- go/vt/sqlparser/token.go | 2 + 7 files changed, 5562 insertions(+), 5502 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 52b8e39e8e4..68efd46df1c 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -1228,6 +1228,7 @@ type ( // ShowBasic is of ShowInternal type, holds Simple SHOW queries with a filter. ShowBasic struct { Command ShowCommandType + DbName string Filter *ShowFilter } ) @@ -3158,7 +3159,11 @@ func (node *ShowTableStatus) Format(buf *TrackedBuffer) { // Format formats the node. func (node *ShowBasic) Format(buf *TrackedBuffer) { - buf.astPrintf(node, "show%s%v", node.Command.ToString(), node.Filter) + buf.astPrintf(node, "show%s", node.Command.ToString()) + if node.DbName != "" { + buf.astPrintf(node, " from %s", node.DbName) + } + buf.astPrintf(node, "%v", node.Filter) } // Format formats the node. diff --git a/go/vt/sqlparser/ast_funcs.go b/go/vt/sqlparser/ast_funcs.go index bdd00bce729..566cb1e4dff 100644 --- a/go/vt/sqlparser/ast_funcs.go +++ b/go/vt/sqlparser/ast_funcs.go @@ -1231,6 +1231,8 @@ func (ty ShowCommandType) ToString() string { return DatabaseStr case Function: return FunctionStr + case OpenTable: + return OpenTableStr case Privilege: return PrivilegeStr case Procedure: @@ -1239,6 +1241,14 @@ func (ty ShowCommandType) ToString() string { return StatusGlobalStr case StatusSession: return StatusSessionStr + case Table: + return TableStr + case TableFull: + return TableFullStr + case TableStatus: + return TableStatusStr + case Trigger: + return TriggerStr case VariableGlobal: return VariableGlobalStr case VariableSession: diff --git a/go/vt/sqlparser/constants.go b/go/vt/sqlparser/constants.go index 854586c0118..e3d77c87e18 100644 --- a/go/vt/sqlparser/constants.go +++ b/go/vt/sqlparser/constants.go @@ -16,6 +16,7 @@ limitations under the License. package sqlparser +// String constants to be used in ast. const ( // Select.Distinct DistinctStr = "distinct " @@ -213,10 +214,15 @@ const ( CollationStr = " collation" DatabaseStr = " databases" FunctionStr = " function status" + OpenTableStr = " open tables" PrivilegeStr = " privileges" ProcedureStr = " procedure status" StatusGlobalStr = " global status" StatusSessionStr = " status" + TableStr = " tables" + TableFullStr = " full tables" + TableStatusStr = " table status" + TriggerStr = " triggers" VariableGlobalStr = " global variables" VariableSessionStr = " variables" KeyspaceStr = " keyspaces" @@ -453,10 +459,15 @@ const ( Collation Database Function + OpenTable Privilege Procedure StatusGlobal StatusSession + Table + TableFull + TableStatus + Trigger VariableGlobal VariableSession Keyspace diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 80b8d60edf5..98221776cd7 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1388,8 +1388,7 @@ var ( input: "show master status", output: "show master", }, { - input: "show open tables", - output: "show open", + input: "show open tables", }, { input: "show plugins", output: "show plugins", diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 31282263b9e..edfed9cfea4 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -136,7 +136,6 @@ type yySymType struct { tableOption *TableOption tableOptions TableOptions renameTablePairs []*RenameTablePair - columnTypeOptions *ColumnTypeOptions } const LEX_ERROR = 57346 @@ -337,251 +336,252 @@ const SQL = 57540 const UNDEFINED = 57541 const SEQUENCE = 57542 const MERGE = 57543 -const TEMPORARY = 57544 -const TEMPTABLE = 57545 -const INVOKER = 57546 -const SECURITY = 57547 -const FIRST = 57548 -const AFTER = 57549 -const LAST = 57550 -const BEGIN = 57551 -const START = 57552 -const TRANSACTION = 57553 -const COMMIT = 57554 -const ROLLBACK = 57555 -const SAVEPOINT = 57556 -const RELEASE = 57557 -const WORK = 57558 -const BIT = 57559 -const TINYINT = 57560 -const SMALLINT = 57561 -const MEDIUMINT = 57562 -const INT = 57563 -const INTEGER = 57564 -const BIGINT = 57565 -const INTNUM = 57566 -const REAL = 57567 -const DOUBLE = 57568 -const FLOAT_TYPE = 57569 -const DECIMAL = 57570 -const NUMERIC = 57571 -const TIME = 57572 -const TIMESTAMP = 57573 -const DATETIME = 57574 -const YEAR = 57575 -const CHAR = 57576 -const VARCHAR = 57577 -const BOOL = 57578 -const CHARACTER = 57579 -const VARBINARY = 57580 -const NCHAR = 57581 -const TEXT = 57582 -const TINYTEXT = 57583 -const MEDIUMTEXT = 57584 -const LONGTEXT = 57585 -const BLOB = 57586 -const TINYBLOB = 57587 -const MEDIUMBLOB = 57588 -const LONGBLOB = 57589 -const JSON = 57590 -const ENUM = 57591 -const GEOMETRY = 57592 -const POINT = 57593 -const LINESTRING = 57594 -const POLYGON = 57595 -const GEOMETRYCOLLECTION = 57596 -const MULTIPOINT = 57597 -const MULTILINESTRING = 57598 -const MULTIPOLYGON = 57599 -const NULLX = 57600 -const AUTO_INCREMENT = 57601 -const APPROXNUM = 57602 -const SIGNED = 57603 -const UNSIGNED = 57604 -const ZEROFILL = 57605 -const COLLATION = 57606 -const DATABASES = 57607 -const SCHEMAS = 57608 -const TABLES = 57609 -const VITESS_METADATA = 57610 -const VSCHEMA = 57611 -const FULL = 57612 -const PROCESSLIST = 57613 -const COLUMNS = 57614 -const FIELDS = 57615 -const ENGINES = 57616 -const PLUGINS = 57617 -const EXTENDED = 57618 -const KEYSPACES = 57619 -const VITESS_KEYSPACES = 57620 -const VITESS_SHARDS = 57621 -const VITESS_TABLETS = 57622 -const CODE = 57623 -const PRIVILEGES = 57624 -const FUNCTION = 57625 -const NAMES = 57626 -const CHARSET = 57627 -const GLOBAL = 57628 -const SESSION = 57629 -const ISOLATION = 57630 -const LEVEL = 57631 -const READ = 57632 -const WRITE = 57633 -const ONLY = 57634 -const REPEATABLE = 57635 -const COMMITTED = 57636 -const UNCOMMITTED = 57637 -const SERIALIZABLE = 57638 -const CURRENT_TIMESTAMP = 57639 -const DATABASE = 57640 -const CURRENT_DATE = 57641 -const CURRENT_TIME = 57642 -const LOCALTIME = 57643 -const LOCALTIMESTAMP = 57644 -const CURRENT_USER = 57645 -const UTC_DATE = 57646 -const UTC_TIME = 57647 -const UTC_TIMESTAMP = 57648 -const REPLACE = 57649 -const CONVERT = 57650 -const CAST = 57651 -const SUBSTR = 57652 -const SUBSTRING = 57653 -const GROUP_CONCAT = 57654 -const SEPARATOR = 57655 -const TIMESTAMPADD = 57656 -const TIMESTAMPDIFF = 57657 -const MATCH = 57658 -const AGAINST = 57659 -const BOOLEAN = 57660 -const LANGUAGE = 57661 -const WITH = 57662 -const QUERY = 57663 -const EXPANSION = 57664 -const WITHOUT = 57665 -const VALIDATION = 57666 -const UNUSED = 57667 -const ARRAY = 57668 -const CUME_DIST = 57669 -const DESCRIPTION = 57670 -const DENSE_RANK = 57671 -const EMPTY = 57672 -const EXCEPT = 57673 -const FIRST_VALUE = 57674 -const GROUPING = 57675 -const GROUPS = 57676 -const JSON_TABLE = 57677 -const LAG = 57678 -const LAST_VALUE = 57679 -const LATERAL = 57680 -const LEAD = 57681 -const MEMBER = 57682 -const NTH_VALUE = 57683 -const NTILE = 57684 -const OF = 57685 -const OVER = 57686 -const PERCENT_RANK = 57687 -const RANK = 57688 -const RECURSIVE = 57689 -const ROW_NUMBER = 57690 -const SYSTEM = 57691 -const WINDOW = 57692 -const ACTIVE = 57693 -const ADMIN = 57694 -const BUCKETS = 57695 -const CLONE = 57696 -const COMPONENT = 57697 -const DEFINITION = 57698 -const ENFORCED = 57699 -const EXCLUDE = 57700 -const FOLLOWING = 57701 -const GEOMCOLLECTION = 57702 -const GET_MASTER_PUBLIC_KEY = 57703 -const HISTOGRAM = 57704 -const HISTORY = 57705 -const INACTIVE = 57706 -const INVISIBLE = 57707 -const LOCKED = 57708 -const MASTER_COMPRESSION_ALGORITHMS = 57709 -const MASTER_PUBLIC_KEY_PATH = 57710 -const MASTER_TLS_CIPHERSUITES = 57711 -const MASTER_ZSTD_COMPRESSION_LEVEL = 57712 -const NESTED = 57713 -const NETWORK_NAMESPACE = 57714 -const NOWAIT = 57715 -const NULLS = 57716 -const OJ = 57717 -const OLD = 57718 -const OPTIONAL = 57719 -const ORDINALITY = 57720 -const ORGANIZATION = 57721 -const OTHERS = 57722 -const PATH = 57723 -const PERSIST = 57724 -const PERSIST_ONLY = 57725 -const PRECEDING = 57726 -const PRIVILEGE_CHECKS_USER = 57727 -const PROCESS = 57728 -const RANDOM = 57729 -const REFERENCE = 57730 -const REQUIRE_ROW_FORMAT = 57731 -const RESOURCE = 57732 -const RESPECT = 57733 -const RESTART = 57734 -const RETAIN = 57735 -const REUSE = 57736 -const ROLE = 57737 -const SECONDARY = 57738 -const SECONDARY_ENGINE = 57739 -const SECONDARY_LOAD = 57740 -const SECONDARY_UNLOAD = 57741 -const SKIP = 57742 -const SRID = 57743 -const THREAD_PRIORITY = 57744 -const TIES = 57745 -const UNBOUNDED = 57746 -const VCPU = 57747 -const VISIBLE = 57748 -const FORMAT = 57749 -const TREE = 57750 -const VITESS = 57751 -const TRADITIONAL = 57752 -const LOCAL = 57753 -const LOW_PRIORITY = 57754 -const NO_WRITE_TO_BINLOG = 57755 -const LOGS = 57756 -const ERROR = 57757 -const GENERAL = 57758 -const HOSTS = 57759 -const OPTIMIZER_COSTS = 57760 -const USER_RESOURCES = 57761 -const SLOW = 57762 -const CHANNEL = 57763 -const RELAY = 57764 -const EXPORT = 57765 -const AVG_ROW_LENGTH = 57766 -const CONNECTION = 57767 -const CHECKSUM = 57768 -const DELAY_KEY_WRITE = 57769 -const ENCRYPTION = 57770 -const ENGINE = 57771 -const INSERT_METHOD = 57772 -const MAX_ROWS = 57773 -const MIN_ROWS = 57774 -const PACK_KEYS = 57775 -const PASSWORD = 57776 -const FIXED = 57777 -const DYNAMIC = 57778 -const COMPRESSED = 57779 -const REDUNDANT = 57780 -const COMPACT = 57781 -const ROW_FORMAT = 57782 -const STATS_AUTO_RECALC = 57783 -const STATS_PERSISTENT = 57784 -const STATS_SAMPLE_PAGES = 57785 -const STORAGE = 57786 -const MEMORY = 57787 -const DISK = 57788 +const TEMPTABLE = 57544 +const INVOKER = 57545 +const SECURITY = 57546 +const FIRST = 57547 +const AFTER = 57548 +const LAST = 57549 +const BEGIN = 57550 +const START = 57551 +const TRANSACTION = 57552 +const COMMIT = 57553 +const ROLLBACK = 57554 +const SAVEPOINT = 57555 +const RELEASE = 57556 +const WORK = 57557 +const BIT = 57558 +const TINYINT = 57559 +const SMALLINT = 57560 +const MEDIUMINT = 57561 +const INT = 57562 +const INTEGER = 57563 +const BIGINT = 57564 +const INTNUM = 57565 +const REAL = 57566 +const DOUBLE = 57567 +const FLOAT_TYPE = 57568 +const DECIMAL = 57569 +const NUMERIC = 57570 +const TIME = 57571 +const TIMESTAMP = 57572 +const DATETIME = 57573 +const YEAR = 57574 +const CHAR = 57575 +const VARCHAR = 57576 +const BOOL = 57577 +const CHARACTER = 57578 +const VARBINARY = 57579 +const NCHAR = 57580 +const TEXT = 57581 +const TINYTEXT = 57582 +const MEDIUMTEXT = 57583 +const LONGTEXT = 57584 +const BLOB = 57585 +const TINYBLOB = 57586 +const MEDIUMBLOB = 57587 +const LONGBLOB = 57588 +const JSON = 57589 +const ENUM = 57590 +const GEOMETRY = 57591 +const POINT = 57592 +const LINESTRING = 57593 +const POLYGON = 57594 +const GEOMETRYCOLLECTION = 57595 +const MULTIPOINT = 57596 +const MULTILINESTRING = 57597 +const MULTIPOLYGON = 57598 +const NULLX = 57599 +const AUTO_INCREMENT = 57600 +const APPROXNUM = 57601 +const SIGNED = 57602 +const UNSIGNED = 57603 +const ZEROFILL = 57604 +const COLLATION = 57605 +const DATABASES = 57606 +const SCHEMAS = 57607 +const TABLES = 57608 +const VITESS_METADATA = 57609 +const VSCHEMA = 57610 +const FULL = 57611 +const PROCESSLIST = 57612 +const COLUMNS = 57613 +const FIELDS = 57614 +const ENGINES = 57615 +const PLUGINS = 57616 +const EXTENDED = 57617 +const KEYSPACES = 57618 +const VITESS_KEYSPACES = 57619 +const VITESS_SHARDS = 57620 +const VITESS_TABLETS = 57621 +const CODE = 57622 +const PRIVILEGES = 57623 +const FUNCTION = 57624 +const OPEN = 57625 +const TRIGGERS = 57626 +const NAMES = 57627 +const CHARSET = 57628 +const GLOBAL = 57629 +const SESSION = 57630 +const ISOLATION = 57631 +const LEVEL = 57632 +const READ = 57633 +const WRITE = 57634 +const ONLY = 57635 +const REPEATABLE = 57636 +const COMMITTED = 57637 +const UNCOMMITTED = 57638 +const SERIALIZABLE = 57639 +const CURRENT_TIMESTAMP = 57640 +const DATABASE = 57641 +const CURRENT_DATE = 57642 +const CURRENT_TIME = 57643 +const LOCALTIME = 57644 +const LOCALTIMESTAMP = 57645 +const CURRENT_USER = 57646 +const UTC_DATE = 57647 +const UTC_TIME = 57648 +const UTC_TIMESTAMP = 57649 +const REPLACE = 57650 +const CONVERT = 57651 +const CAST = 57652 +const SUBSTR = 57653 +const SUBSTRING = 57654 +const GROUP_CONCAT = 57655 +const SEPARATOR = 57656 +const TIMESTAMPADD = 57657 +const TIMESTAMPDIFF = 57658 +const MATCH = 57659 +const AGAINST = 57660 +const BOOLEAN = 57661 +const LANGUAGE = 57662 +const WITH = 57663 +const QUERY = 57664 +const EXPANSION = 57665 +const WITHOUT = 57666 +const VALIDATION = 57667 +const UNUSED = 57668 +const ARRAY = 57669 +const CUME_DIST = 57670 +const DESCRIPTION = 57671 +const DENSE_RANK = 57672 +const EMPTY = 57673 +const EXCEPT = 57674 +const FIRST_VALUE = 57675 +const GROUPING = 57676 +const GROUPS = 57677 +const JSON_TABLE = 57678 +const LAG = 57679 +const LAST_VALUE = 57680 +const LATERAL = 57681 +const LEAD = 57682 +const MEMBER = 57683 +const NTH_VALUE = 57684 +const NTILE = 57685 +const OF = 57686 +const OVER = 57687 +const PERCENT_RANK = 57688 +const RANK = 57689 +const RECURSIVE = 57690 +const ROW_NUMBER = 57691 +const SYSTEM = 57692 +const WINDOW = 57693 +const ACTIVE = 57694 +const ADMIN = 57695 +const BUCKETS = 57696 +const CLONE = 57697 +const COMPONENT = 57698 +const DEFINITION = 57699 +const ENFORCED = 57700 +const EXCLUDE = 57701 +const FOLLOWING = 57702 +const GEOMCOLLECTION = 57703 +const GET_MASTER_PUBLIC_KEY = 57704 +const HISTOGRAM = 57705 +const HISTORY = 57706 +const INACTIVE = 57707 +const INVISIBLE = 57708 +const LOCKED = 57709 +const MASTER_COMPRESSION_ALGORITHMS = 57710 +const MASTER_PUBLIC_KEY_PATH = 57711 +const MASTER_TLS_CIPHERSUITES = 57712 +const MASTER_ZSTD_COMPRESSION_LEVEL = 57713 +const NESTED = 57714 +const NETWORK_NAMESPACE = 57715 +const NOWAIT = 57716 +const NULLS = 57717 +const OJ = 57718 +const OLD = 57719 +const OPTIONAL = 57720 +const ORDINALITY = 57721 +const ORGANIZATION = 57722 +const OTHERS = 57723 +const PATH = 57724 +const PERSIST = 57725 +const PERSIST_ONLY = 57726 +const PRECEDING = 57727 +const PRIVILEGE_CHECKS_USER = 57728 +const PROCESS = 57729 +const RANDOM = 57730 +const REFERENCE = 57731 +const REQUIRE_ROW_FORMAT = 57732 +const RESOURCE = 57733 +const RESPECT = 57734 +const RESTART = 57735 +const RETAIN = 57736 +const REUSE = 57737 +const ROLE = 57738 +const SECONDARY = 57739 +const SECONDARY_ENGINE = 57740 +const SECONDARY_LOAD = 57741 +const SECONDARY_UNLOAD = 57742 +const SKIP = 57743 +const SRID = 57744 +const THREAD_PRIORITY = 57745 +const TIES = 57746 +const UNBOUNDED = 57747 +const VCPU = 57748 +const VISIBLE = 57749 +const FORMAT = 57750 +const TREE = 57751 +const VITESS = 57752 +const TRADITIONAL = 57753 +const LOCAL = 57754 +const LOW_PRIORITY = 57755 +const NO_WRITE_TO_BINLOG = 57756 +const LOGS = 57757 +const ERROR = 57758 +const GENERAL = 57759 +const HOSTS = 57760 +const OPTIMIZER_COSTS = 57761 +const USER_RESOURCES = 57762 +const SLOW = 57763 +const CHANNEL = 57764 +const RELAY = 57765 +const EXPORT = 57766 +const AVG_ROW_LENGTH = 57767 +const CONNECTION = 57768 +const CHECKSUM = 57769 +const DELAY_KEY_WRITE = 57770 +const ENCRYPTION = 57771 +const ENGINE = 57772 +const INSERT_METHOD = 57773 +const MAX_ROWS = 57774 +const MIN_ROWS = 57775 +const PACK_KEYS = 57776 +const PASSWORD = 57777 +const FIXED = 57778 +const DYNAMIC = 57779 +const COMPRESSED = 57780 +const REDUNDANT = 57781 +const COMPACT = 57782 +const ROW_FORMAT = 57783 +const STATS_AUTO_RECALC = 57784 +const STATS_PERSISTENT = 57785 +const STATS_SAMPLE_PAGES = 57786 +const STORAGE = 57787 +const MEMORY = 57788 +const DISK = 57789 var yyToknames = [...]string{ "$end", @@ -802,7 +802,6 @@ var yyToknames = [...]string{ "UNDEFINED", "SEQUENCE", "MERGE", - "TEMPORARY", "TEMPTABLE", "INVOKER", "SECURITY", @@ -884,6 +883,8 @@ var yyToknames = [...]string{ "CODE", "PRIVILEGES", "FUNCTION", + "OPEN", + "TRIGGERS", "NAMES", "CHARSET", "GLOBAL", @@ -1061,591 +1062,596 @@ var yyExca = [...]int{ -1, 1, 1, -1, -2, 0, - -1, 43, - 163, 921, - -2, 90, -1, 44, 1, 111, - 464, 111, + 465, 111, -2, 117, -1, 45, 143, 117, - 254, 117, - 302, 117, - -2, 324, + 253, 117, + 303, 117, + -2, 329, -1, 52, - 34, 463, - 164, 463, - 176, 463, - 209, 477, - 210, 477, - -2, 465, + 209, 484, + 210, 484, + 287, 472, + 288, 472, + 289, 472, + -2, 470, -1, 57, - 166, 487, - -2, 485, + 166, 494, + -2, 492, -1, 82, - 56, 554, - -2, 562, - -1, 107, + 56, 561, + -2, 569, + -1, 106, 1, 112, - 464, 112, + 465, 112, -2, 117, - -1, 117, - 169, 229, - 170, 229, - -2, 318, - -1, 136, + -1, 116, + 169, 234, + 170, 234, + -2, 323, + -1, 135, 143, 117, - 254, 117, - 302, 117, - -2, 333, - -1, 564, - 150, 942, - -2, 938, - -1, 565, - 150, 943, - -2, 939, - -1, 583, - 56, 555, - -2, 567, - -1, 584, - 56, 556, - -2, 568, - -1, 604, - 118, 1279, + 253, 117, + 303, 117, + -2, 338, + -1, 567, + 150, 947, + -2, 943, + -1, 568, + 150, 948, + -2, 944, + -1, 586, + 56, 562, + -2, 574, + -1, 587, + 56, 563, + -2, 575, + -1, 607, + 118, 1285, -2, 83, - -1, 605, - 118, 1163, + -1, 608, + 118, 1168, -2, 84, - -1, 611, - 118, 1213, - -2, 915, - -1, 748, - 118, 1102, - -2, 912, - -1, 783, + -1, 614, + 118, 1218, + -2, 922, + -1, 751, + 118, 1107, + -2, 919, + -1, 786, 175, 37, 180, 37, - -2, 240, - -1, 862, - 1, 371, - 464, 371, + -2, 245, + -1, 865, + 1, 376, + 465, 376, -2, 117, - -1, 1094, - 1, 267, - 464, 267, + -1, 1101, + 1, 272, + 465, 272, -2, 117, - -1, 1172, - 169, 229, - 170, 229, - -2, 318, - -1, 1181, + -1, 1179, + 169, 234, + 170, 234, + -2, 323, + -1, 1188, 175, 38, 180, 38, - -2, 241, - -1, 1385, - 150, 945, - -2, 941, - -1, 1477, + -2, 246, + -1, 1396, + 150, 950, + -2, 946, + -1, 1488, 74, 65, 82, 65, -2, 69, - -1, 1498, - 1, 268, - 464, 268, + -1, 1509, + 1, 273, + 465, 273, -2, 117, - -1, 1906, - 5, 809, - 18, 809, - 20, 809, - 32, 809, - 83, 809, - -2, 593, - -1, 2118, - 46, 883, - -2, 881, + -1, 1911, + 5, 816, + 18, 816, + 20, 816, + 32, 816, + 83, 816, + -2, 600, + -1, 2127, + 46, 890, + -2, 888, } const yyPrivate = 57344 -const yyLast = 27755 +const yyLast = 27802 var yyAct = [...]int{ - 564, 2199, 2186, 1958, 2118, 1819, 2163, 1709, 2127, 2069, - 2047, 1676, 1886, 81, 3, 997, 1561, 593, 1788, 537, - 1887, 1955, 523, 1883, 1528, 1422, 1042, 1792, 1710, 1156, - 506, 1696, 1533, 916, 1773, 508, 1774, 1495, 1049, 145, - 1898, 576, 1845, 1379, 1303, 1636, 1474, 1772, 176, 1766, - 1611, 188, 1559, 471, 188, 1535, 1179, 1290, 131, 487, - 1371, 188, 1079, 1086, 1513, 752, 778, 1456, 1069, 188, - 874, 79, 609, 1047, 1070, 1424, 1463, 585, 1052, 570, - 499, 510, 500, 1405, 1072, 1035, 1348, 32, 759, 813, - 487, 933, 1186, 487, 188, 487, 1155, 1269, 764, 760, - 756, 784, 1439, 779, 780, 1524, 1083, 1059, 1085, 77, - 1306, 868, 108, 148, 1076, 1479, 1171, 1151, 109, 114, - 115, 768, 494, 606, 781, 175, 855, 1010, 8, 7, - 1197, 6, 1811, 1810, 1590, 76, 1011, 1833, 1834, 2071, - 177, 178, 179, 1337, 1419, 1420, 1336, 1256, 1335, 1334, - 1333, 82, 1332, 791, 497, 2155, 498, 1674, 110, 753, - 1325, 2115, 116, 591, 595, 571, 2026, 1932, 2093, 2092, - 2042, 188, 817, 2043, 2205, 816, 818, 1514, 2160, 2198, - 1382, 188, 78, 867, 2138, 495, 188, 84, 85, 86, - 87, 88, 89, 2189, 1157, 549, 603, 555, 556, 553, - 554, 1959, 552, 551, 550, 177, 178, 179, 1578, 1626, - 2159, 934, 557, 558, 1862, 1538, 1990, 2137, 770, 1675, - 772, 110, 1912, 815, 914, 102, 771, 1832, 34, 174, - 449, 70, 38, 39, 1597, 1624, 829, 830, 1596, 833, - 834, 835, 836, 794, 1489, 839, 840, 841, 842, 843, - 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, - 1913, 1914, 819, 820, 821, 462, 1421, 610, 169, 1490, - 1491, 1480, 795, 884, 463, 1740, 944, 1087, 1739, 1088, - 105, 1741, 97, 475, 460, 882, 912, 100, 773, 110, - 99, 98, 169, 111, 1537, 568, 870, 105, 826, 182, - 183, 895, 567, 69, 153, 896, 893, 894, 893, 894, - 1757, 1507, 1981, 1821, 105, 170, 1979, 111, 485, 133, - 1326, 1327, 1328, 457, 1324, 832, 831, 2140, 153, 774, - 489, 474, 469, 483, 1246, 1793, 1560, 103, 1815, 177, - 178, 179, 1275, 1270, 1593, 1744, 1816, 2188, 1278, 856, - 1279, 932, 1280, 910, 103, 888, 889, 890, 150, 143, - 151, 1824, 885, 863, 132, 911, 940, 886, 887, 168, - 1605, 2156, 838, 837, 883, 475, 1247, 1823, 1248, 1272, - 2037, 1274, 150, 802, 151, 1822, 2089, 775, 1562, 120, - 121, 142, 141, 168, 1457, 811, 1276, 800, 810, 503, - 809, 808, 450, 451, 452, 807, 467, 468, 478, 806, - 805, 804, 464, 466, 479, 453, 454, 481, 480, 799, - 456, 455, 1273, 474, 459, 476, 1846, 154, 1165, 812, - 2038, 1931, 2175, 104, 1480, 757, 475, 159, 173, 755, - 475, 137, 118, 144, 125, 117, 908, 138, 139, 188, - 104, 154, 2206, 757, 1610, 107, 757, 1539, 787, 1185, - 1184, 159, 126, 897, 901, 786, 2203, 104, 869, 1848, - 1595, 769, 487, 487, 487, 803, 129, 127, 122, 123, - 124, 128, 2136, 934, 474, 597, 119, 898, 474, 801, - 487, 487, 1825, 1754, 1749, 130, 1584, 793, 939, 936, - 937, 938, 943, 945, 942, 926, 941, 1677, 1679, 475, - 177, 178, 179, 935, 2128, 1283, 793, 920, 793, 822, - 951, 877, 878, 879, 880, 881, 1625, 1850, 1782, 1854, - 1613, 1849, 1592, 1847, 828, 1612, 2141, 1750, 1852, 146, - 793, 913, 1871, 1870, 1869, 767, 71, 1851, 944, 477, - 1613, 793, 766, 765, 1803, 1612, 500, 474, 866, 1752, - 1853, 1855, 1747, 146, 763, 1008, 448, 472, 188, 1258, - 1257, 1259, 1260, 1261, 1748, 1604, 907, 180, 1603, 1580, - 982, 983, 473, 2122, 2010, 1736, 1040, 980, 909, 903, - 1911, 905, 1701, 1644, 487, 1045, 1048, 188, 1570, 188, - 188, 891, 487, 1678, 1485, 1063, 995, 793, 487, 1039, - 872, 1655, 140, 2201, 860, 1652, 2202, 1496, 2200, 960, - 929, 927, 970, 928, 134, 970, 998, 135, 902, 904, - 1435, 862, 792, 1755, 1753, 606, 1321, 1304, 940, 786, - 789, 790, 950, 757, 876, 1068, 2097, 783, 787, 1307, - 92, 792, 1036, 792, 814, 1896, 1355, 796, 786, 1864, - 786, 789, 790, 1053, 757, 1271, 782, 797, 783, 787, - 1353, 1354, 1352, 1089, 930, 792, 947, 827, 1013, 1015, - 1017, 1019, 1021, 1023, 1024, 798, 792, 1014, 1016, 1033, - 1020, 1022, 950, 1025, 857, 93, 858, 917, 918, 859, - 177, 178, 179, 1579, 147, 152, 149, 155, 156, 157, - 158, 160, 161, 162, 163, 861, 1406, 1162, 1662, 1406, - 164, 165, 166, 167, 1577, 1041, 900, 1575, 147, 152, - 149, 155, 156, 157, 158, 160, 161, 162, 163, 802, - 1751, 899, 792, 1916, 164, 165, 166, 167, 796, 786, - 982, 983, 188, 1305, 982, 983, 1147, 875, 797, 1572, - 1762, 800, 1408, 1051, 172, 1308, 1158, 1159, 1160, 1161, - 939, 936, 937, 938, 943, 945, 942, 1572, 941, 610, - 949, 947, 487, 1576, 1181, 935, 963, 964, 965, 966, - 967, 960, 1190, 2190, 970, 1056, 1194, 950, 2207, 487, - 487, 1574, 487, 2025, 487, 487, 2180, 487, 487, 487, - 487, 487, 487, 961, 962, 963, 964, 965, 966, 967, - 960, 2191, 487, 970, 2024, 1937, 188, 1230, 2193, 1265, - 1191, 177, 178, 179, 2181, 1373, 1170, 1629, 1630, 1631, - 1770, 1650, 1243, 1769, 579, 69, 1084, 1177, 1189, 1649, - 948, 949, 947, 487, 1542, 1225, 1226, 1351, 1866, 596, - 762, 188, 1437, 1163, 1164, 1263, 2208, 1253, 950, 188, - 1266, 1289, 1251, 188, 948, 949, 947, 1250, 1249, 1440, - 1441, 1146, 1241, 1188, 188, 1154, 188, 1227, 1264, 1153, - 1235, 1374, 950, 1167, 1294, 1232, 1168, 1166, 487, 487, - 487, 188, 487, 487, 188, 487, 487, 1231, 1873, 1180, - 1206, 984, 985, 986, 987, 988, 989, 990, 991, 992, - 993, 1233, 1234, 1818, 1262, 1436, 1252, 1239, 1240, 2192, - 1199, 580, 1200, 188, 1202, 1204, 601, 1309, 1208, 1210, - 1212, 1214, 1216, 1187, 1187, 1292, 1651, 598, 599, 2182, - 948, 949, 947, 1295, 1993, 1297, 1874, 1299, 1300, 1301, - 1302, 948, 949, 947, 1338, 1339, 1340, 1341, 950, 2171, - 2060, 1372, 2022, 1349, 1998, 772, 110, 1919, 1284, 950, - 1375, 771, 959, 958, 968, 969, 961, 962, 963, 964, - 965, 966, 967, 960, 487, 1875, 970, 177, 178, 179, - 1228, 959, 958, 968, 969, 961, 962, 963, 964, 965, - 966, 967, 960, 1376, 1377, 970, 1779, 1319, 1771, 1392, - 1393, 1767, 1343, 1345, 1346, 1620, 1588, 487, 487, 1383, - 948, 949, 947, 1587, 1344, 1350, 1293, 1389, 188, 1394, - 1397, 1637, 948, 949, 947, 1407, 1254, 1331, 950, 1242, - 565, 487, 1238, 1384, 1429, 1237, 500, 1236, 188, 2087, - 950, 487, 948, 949, 947, 188, 2086, 188, 1385, 998, - 1944, 2174, 1957, 1413, 1414, 188, 188, 1944, 2134, 1795, - 950, 1430, 487, 1944, 2123, 487, 1944, 580, 1475, 1944, - 2095, 1442, 2040, 580, 1572, 580, 487, 1383, 177, 178, - 179, 189, 1743, 1781, 189, 1504, 1386, 1494, 1895, 488, - 2126, 189, 177, 178, 179, 606, 1554, 78, 606, 189, - 1730, 1454, 1310, 1311, 1312, 2005, 1314, 1315, 1480, 1317, - 1318, 1450, 2008, 580, 1499, 69, 1385, 177, 178, 179, - 488, 1552, 946, 488, 189, 488, 177, 178, 179, 2096, - 1244, 487, 1944, 1949, 1884, 188, 1929, 1928, 487, 1925, - 1926, 1500, 1503, 1895, 1551, 1553, 1532, 1944, 1452, 34, - 1530, 1925, 1924, 1927, 1515, 1516, 1517, 487, 34, 1536, - 1390, 1391, 1449, 487, 1396, 1399, 1400, 1190, 1486, 1190, - 1478, 1487, 1460, 1483, 1704, 580, 1481, 1571, 1481, 1502, - 1501, 1448, 580, 1480, 1812, 1150, 1797, 1790, 1791, 1412, - 1460, 580, 1415, 1416, 946, 580, 1459, 1705, 1150, 1149, - 1508, 189, 1509, 1510, 1511, 1512, 2076, 487, 1697, 1372, - 1697, 189, 1095, 1094, 1372, 1372, 189, 80, 1520, 1521, - 1522, 1523, 1558, 1568, 69, 1569, 1573, 1531, 1526, 1527, - 1540, 1543, 1448, 69, 1541, 1547, 1548, 1549, 1482, 610, - 1482, 1992, 610, 1488, 1667, 1666, 1484, 1460, 1480, 188, - 1448, 1564, 1572, 188, 188, 188, 188, 188, 1567, 1555, - 1582, 1531, 1563, 188, 188, 188, 188, 1438, 2027, 1583, - 1417, 1329, 1581, 2049, 1585, 1586, 34, 1460, 573, 1895, - 794, 1572, 1282, 1448, 1081, 188, 188, 188, 959, 958, - 968, 969, 961, 962, 963, 964, 965, 966, 967, 960, - 188, 777, 970, 188, 487, 776, 1956, 1221, 2016, 795, - 1152, 1529, 1817, 1565, 1525, 1519, 2028, 2029, 2030, 1187, - 959, 958, 968, 969, 961, 962, 963, 964, 965, 966, - 967, 960, 1347, 1518, 970, 1356, 1357, 1358, 1359, 1360, - 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, - 1268, 69, 1349, 69, 1614, 1222, 1223, 1224, 1775, 1182, - 1618, 1178, 1148, 1591, 94, 2105, 959, 958, 968, 969, - 961, 962, 963, 964, 965, 966, 967, 960, 1776, 1608, - 970, 958, 968, 969, 961, 962, 963, 964, 965, 966, - 967, 960, 1409, 2031, 970, 174, 1899, 1900, 188, 1820, - 2195, 1623, 1218, 1776, 1663, 2050, 188, 1157, 2187, 1902, - 1884, 1646, 1786, 1785, 1350, 1784, 1545, 1322, 1285, 1632, - 968, 969, 961, 962, 963, 964, 965, 966, 967, 960, - 188, 1905, 970, 1904, 1687, 1688, 1048, 1683, 2032, 2033, - 1718, 188, 188, 188, 188, 188, 1645, 1219, 1220, 1690, - 1706, 1721, 1717, 188, 571, 2177, 1722, 188, 1719, 586, - 188, 188, 2158, 1720, 188, 188, 188, 1702, 1661, 1723, - 1728, 1469, 1470, 1876, 587, 1711, 1699, 1742, 1686, 189, - 1050, 1681, 1036, 1673, 2009, 526, 525, 528, 529, 530, - 531, 2146, 1689, 1947, 527, 1761, 532, 1054, 1055, 589, - 1695, 588, 488, 488, 488, 1694, 1731, 1698, 1700, 1712, - 1733, 2143, 1715, 2179, 2162, 2164, 1713, 1714, 1745, 1716, - 488, 488, 1684, 2170, 2169, 1729, 188, 1734, 1724, 2119, - 1685, 1760, 1737, 1763, 1764, 1765, 2117, 487, 1292, 96, - 1281, 1641, 1642, 487, 1536, 566, 487, 1746, 1190, 1768, - 1780, 1402, 824, 487, 1758, 1759, 101, 586, 823, 1043, - 1968, 919, 1659, 1775, 1798, 1809, 1403, 1805, 1831, 2074, - 1777, 1044, 587, 188, 2106, 1804, 1794, 111, 1921, 1465, - 1468, 1469, 1470, 1466, 1800, 1467, 1471, 1920, 1566, 181, - 1807, 188, 1196, 1195, 1170, 583, 584, 589, 189, 588, - 1183, 1808, 2003, 171, 1799, 1433, 184, 1778, 1384, 1465, - 1468, 1469, 1470, 1466, 1806, 1467, 1471, 1440, 1441, 1899, - 1900, 1550, 1288, 1385, 488, 487, 2088, 189, 2044, 189, - 189, 1372, 488, 1473, 574, 575, 1628, 1827, 488, 1826, - 1693, 577, 1829, 2184, 1830, 1879, 2183, 2167, 1692, 2147, - 2002, 1943, 1556, 1844, 578, 80, 2001, 1697, 1842, 1835, - 1865, 487, 2197, 2196, 1843, 1656, 1653, 1841, 1064, 1057, - 2197, 2120, 188, 1918, 1857, 1434, 573, 78, 1863, 83, - 75, 1, 487, 458, 1418, 1034, 470, 2185, 487, 487, - 1255, 1856, 1885, 1245, 1960, 1880, 2046, 1950, 1534, 785, - 136, 1497, 1498, 2130, 91, 1888, 750, 90, 788, 906, - 1557, 188, 2041, 1756, 1506, 1842, 1101, 1099, 1100, 1098, - 1711, 1894, 1103, 1102, 1882, 1097, 1323, 484, 1472, 1090, - 1058, 825, 1930, 1633, 1634, 1635, 1903, 1320, 1589, 1387, - 1388, 1907, 465, 1909, 892, 1910, 461, 978, 1691, 1738, - 607, 600, 1890, 2168, 2144, 2142, 2116, 1908, 2070, 2145, - 2114, 1938, 2178, 188, 1915, 188, 188, 188, 2161, 1505, - 1432, 487, 1046, 2000, 1878, 1660, 1922, 1923, 1007, 1404, - 1073, 509, 189, 1431, 188, 1428, 1342, 524, 521, 1934, - 1933, 1872, 169, 522, 1443, 1703, 952, 507, 501, 1951, - 1065, 1961, 487, 487, 487, 1464, 188, 1536, 1462, 1946, - 1948, 1461, 488, 1286, 1954, 1969, 1953, 111, 1077, 1893, - 1901, 1897, 1071, 1447, 1594, 1814, 931, 582, 153, 488, - 488, 496, 488, 95, 488, 488, 1945, 488, 488, 488, - 488, 488, 488, 1401, 2104, 1935, 1936, 1627, 1989, 581, - 60, 37, 488, 491, 2154, 1977, 189, 922, 590, 31, - 30, 29, 28, 23, 1991, 1972, 22, 21, 20, 19, - 25, 18, 17, 16, 106, 47, 44, 42, 113, 112, - 1966, 1967, 150, 488, 151, 45, 41, 500, 864, 2004, - 27, 189, 26, 168, 2014, 15, 14, 2015, 13, 189, - 2017, 12, 11, 189, 2013, 10, 9, 5, 4, 925, - 24, 1711, 996, 2012, 189, 2, 189, 0, 0, 1999, - 2019, 2020, 0, 0, 487, 487, 2018, 0, 488, 488, - 488, 189, 488, 488, 189, 488, 488, 487, 0, 0, - 487, 2034, 2035, 0, 1974, 1975, 0, 1976, 0, 0, - 1978, 154, 1980, 0, 0, 2045, 2053, 0, 0, 0, - 0, 159, 0, 189, 0, 0, 0, 0, 0, 2021, - 0, 2023, 0, 2048, 0, 487, 487, 487, 188, 2051, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 487, - 0, 487, 0, 2063, 2065, 2066, 0, 487, 2073, 2072, - 500, 2077, 2079, 2067, 0, 1888, 2075, 0, 0, 1888, - 0, 2059, 0, 0, 0, 2082, 0, 1837, 1838, 188, - 2052, 0, 0, 0, 488, 0, 0, 0, 0, 0, - 487, 188, 1858, 1859, 2081, 1860, 1861, 2091, 2094, 2084, - 2083, 2085, 0, 2068, 0, 0, 1867, 1868, 2098, 0, - 0, 0, 0, 0, 0, 0, 0, 488, 488, 2113, - 0, 0, 0, 146, 0, 0, 0, 0, 189, 2121, - 0, 0, 0, 0, 0, 0, 1888, 487, 487, 0, - 0, 488, 2124, 0, 0, 0, 0, 2129, 189, 0, - 0, 488, 0, 0, 0, 189, 0, 189, 0, 0, - 0, 0, 0, 487, 2139, 189, 189, 487, 2148, 536, - 2048, 2131, 488, 2150, 0, 488, 0, 0, 1639, 0, - 2157, 0, 1640, 0, 0, 2153, 488, 2166, 2165, 1917, - 0, 0, 0, 1647, 1648, 0, 1711, 0, 0, 1654, - 0, 2176, 1657, 1658, 0, 0, 0, 0, 0, 0, - 1664, 0, 1665, 0, 0, 1668, 1669, 1670, 1671, 1672, - 187, 0, 0, 482, 0, 0, 0, 0, 2194, 0, - 187, 1682, 0, 0, 0, 0, 0, 0, 187, 2204, - 0, 488, 0, 1118, 0, 189, 0, 0, 488, 0, - 0, 0, 0, 0, 594, 594, 0, 0, 0, 0, - 0, 0, 0, 187, 0, 0, 0, 488, 1987, 0, - 0, 0, 580, 488, 0, 0, 1970, 1726, 1727, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 147, 152, - 149, 155, 156, 157, 158, 160, 161, 162, 163, 0, - 0, 0, 0, 0, 164, 165, 166, 167, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 488, 959, 958, - 968, 969, 961, 962, 963, 964, 965, 966, 967, 960, - 0, 0, 970, 0, 0, 0, 0, 0, 0, 0, - 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 187, 0, 0, 0, 0, 187, 1106, 0, 0, 189, - 0, 0, 0, 189, 189, 189, 189, 189, 0, 0, - 0, 0, 0, 189, 189, 189, 189, 959, 958, 968, - 969, 961, 962, 963, 964, 965, 966, 967, 960, 0, - 0, 970, 0, 0, 0, 189, 189, 189, 0, 1119, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1986, - 189, 0, 0, 189, 488, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2054, 2055, 2056, 2057, 2058, 0, - 0, 0, 2061, 2062, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1839, 1840, 1132, 1135, 1136, 1137, - 1138, 1139, 1140, 0, 1141, 1142, 1143, 1144, 1145, 1120, - 1121, 1122, 1123, 1104, 1105, 1133, 0, 1107, 1836, 1108, - 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1124, - 1125, 1126, 1127, 1128, 1129, 1130, 1131, 0, 959, 958, - 968, 969, 961, 962, 963, 964, 965, 966, 967, 960, - 0, 535, 970, 0, 0, 0, 0, 0, 189, 0, - 1891, 1985, 0, 0, 0, 0, 189, 0, 959, 958, - 968, 969, 961, 962, 963, 964, 965, 966, 967, 960, - 0, 1906, 970, 0, 0, 0, 0, 0, 0, 0, - 189, 0, 0, 0, 0, 0, 0, 1134, 0, 0, - 0, 189, 189, 189, 189, 189, 0, 0, 0, 0, - 486, 0, 0, 189, 0, 2151, 0, 189, 0, 0, - 189, 189, 0, 0, 189, 189, 189, 0, 0, 0, - 34, 35, 36, 70, 38, 39, 0, 0, 0, 0, - 0, 608, 0, 1984, 754, 0, 761, 0, 0, 0, - 74, 0, 0, 0, 0, 40, 66, 67, 0, 64, - 68, 0, 0, 0, 0, 0, 65, 0, 187, 0, - 959, 958, 968, 969, 961, 962, 963, 964, 965, 966, - 967, 960, 0, 0, 970, 0, 189, 0, 0, 0, - 0, 0, 0, 0, 1971, 53, 0, 488, 1973, 0, - 0, 0, 0, 488, 0, 69, 488, 0, 0, 1982, - 1983, 0, 0, 488, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1997, 0, 0, 0, 0, - 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, - 0, 0, 2006, 2007, 0, 0, 2011, 0, 0, 0, - 0, 189, 959, 958, 968, 969, 961, 962, 963, 964, - 965, 966, 967, 960, 0, 0, 970, 0, 0, 0, - 1638, 0, 0, 0, 0, 0, 0, 43, 46, 49, - 48, 51, 0, 63, 0, 488, 0, 187, 0, 0, - 959, 958, 968, 969, 961, 962, 963, 964, 965, 966, - 967, 960, 594, 2039, 970, 0, 0, 0, 52, 73, - 72, 0, 0, 61, 62, 50, 187, 0, 187, 1080, - 0, 488, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 488, 0, 0, 0, 0, 2064, 488, 488, - 54, 55, 0, 56, 57, 58, 59, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 954, 0, 957, - 0, 189, 0, 0, 0, 971, 972, 973, 974, 975, - 976, 977, 1037, 955, 956, 953, 959, 958, 968, 969, - 961, 962, 963, 964, 965, 966, 967, 960, 0, 0, - 970, 0, 0, 0, 0, 0, 0, 2100, 2101, 2102, - 2103, 0, 2107, 0, 2108, 2109, 2110, 0, 2111, 2112, - 0, 0, 0, 189, 0, 189, 189, 189, 0, 0, - 0, 488, 0, 186, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 490, 189, 0, 0, 0, 71, 0, - 0, 569, 0, 0, 0, 0, 0, 2135, 0, 0, - 0, 0, 488, 488, 488, 0, 189, 0, 0, 0, - 0, 187, 0, 0, 0, 0, 758, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2172, 2173, 0, 0, 0, 0, - 0, 0, 0, 0, 1193, 0, 0, 0, 0, 0, - 0, 0, 0, 608, 608, 608, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1193, - 1193, 921, 923, 0, 0, 187, 0, 0, 0, 0, - 0, 0, 0, 854, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 865, 0, 0, 0, 0, 871, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 187, 0, 0, 0, 488, 488, 0, 0, 187, 0, - 0, 0, 1291, 0, 0, 0, 0, 488, 0, 0, - 488, 0, 0, 187, 0, 187, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 187, 0, 0, 187, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 488, 488, 488, 189, 0, - 0, 0, 0, 0, 0, 1061, 0, 0, 0, 488, - 0, 488, 187, 608, 0, 0, 0, 488, 0, 1091, + 567, 2213, 2200, 1960, 2140, 1825, 1721, 2073, 2051, 1794, + 540, 526, 2127, 1891, 2177, 1688, 1506, 1433, 1892, 1722, + 1708, 1888, 1957, 1798, 755, 1056, 1049, 923, 1573, 1541, + 1546, 81, 3, 509, 1526, 1004, 1779, 579, 1780, 144, + 1164, 1485, 511, 1903, 1850, 877, 1648, 1158, 175, 1390, + 1548, 187, 1571, 475, 187, 1186, 1382, 1297, 79, 490, + 130, 187, 1778, 1772, 895, 781, 612, 1093, 1086, 187, + 1059, 1467, 588, 1474, 1054, 1435, 1079, 1042, 1416, 573, + 816, 1204, 513, 1359, 32, 940, 1620, 1083, 762, 759, + 490, 787, 1077, 490, 187, 490, 1163, 1450, 768, 1076, + 502, 1276, 763, 782, 783, 1092, 794, 1193, 1490, 1090, + 77, 1317, 858, 1066, 147, 107, 1537, 609, 108, 1017, + 497, 8, 1178, 113, 114, 7, 1018, 6, 2075, 1817, + 1816, 1263, 174, 784, 76, 1602, 1838, 1839, 176, 177, + 178, 1430, 1431, 1527, 1348, 1347, 1346, 1345, 1344, 1343, + 82, 500, 1336, 501, 2169, 594, 598, 1686, 756, 109, + 2124, 2030, 574, 1934, 2102, 2101, 2046, 820, 115, 2047, + 187, 819, 2219, 1165, 2174, 821, 2212, 2151, 2203, 1961, + 187, 1590, 871, 498, 78, 187, 84, 85, 86, 87, + 88, 89, 2173, 2150, 1551, 1638, 449, 1867, 552, 606, + 558, 559, 556, 557, 1992, 555, 554, 553, 1609, 773, + 1687, 1752, 1608, 818, 1751, 560, 561, 1753, 941, 1918, + 1919, 109, 775, 173, 798, 774, 832, 833, 1917, 836, + 837, 838, 839, 613, 1837, 842, 843, 844, 845, 846, + 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, + 829, 797, 1636, 776, 168, 1501, 1502, 1491, 1094, 898, + 1095, 34, 1500, 1432, 70, 38, 39, 479, 888, 887, + 822, 823, 824, 1550, 885, 168, 835, 902, 903, 110, + 919, 132, 571, 951, 176, 177, 178, 777, 570, 109, + 152, 834, 104, 180, 181, 182, 1763, 168, 1520, 2023, + 110, 1983, 1827, 488, 921, 901, 902, 903, 104, 169, + 2153, 152, 1335, 102, 1337, 1338, 1339, 478, 1981, 492, + 486, 142, 110, 1253, 1821, 1799, 131, 1572, 1605, 1282, + 1277, 1822, 1285, 152, 1286, 1287, 69, 892, 893, 2202, + 859, 890, 891, 894, 149, 917, 150, 1393, 866, 1281, + 1830, 119, 120, 141, 140, 167, 889, 939, 918, 1617, + 841, 941, 886, 840, 1254, 149, 1255, 150, 104, 96, + 97, 2170, 947, 1828, 1756, 100, 167, 1829, 99, 98, + 1279, 2098, 2041, 1283, 778, 1574, 479, 149, 805, 150, + 1280, 803, 1468, 814, 813, 812, 796, 479, 167, 811, + 810, 809, 808, 136, 117, 143, 124, 116, 807, 137, + 138, 802, 869, 153, 1172, 815, 2042, 760, 2220, 2189, + 760, 758, 2217, 158, 125, 790, 951, 1624, 1933, 760, + 1851, 172, 789, 106, 153, 796, 478, 1552, 128, 126, + 121, 122, 123, 127, 158, 1607, 103, 478, 118, 187, + 1192, 1191, 1491, 479, 1831, 870, 153, 129, 767, 2149, + 600, 1596, 103, 1689, 1691, 1290, 158, 904, 908, 831, + 176, 177, 178, 1853, 927, 796, 490, 490, 490, 915, + 806, 825, 796, 804, 1788, 1604, 905, 1876, 1875, 1874, + 796, 771, 770, 490, 490, 796, 880, 881, 882, 883, + 884, 769, 1809, 478, 448, 179, 946, 943, 944, 945, + 950, 952, 949, 1637, 948, 947, 1592, 2141, 2154, 2090, + 920, 942, 103, 1622, 145, 2131, 933, 1667, 1621, 899, + 1855, 795, 1859, 863, 1854, 2012, 1852, 799, 789, 1616, + 1916, 1857, 1615, 1713, 1656, 145, 1419, 800, 1622, 910, + 1856, 912, 1582, 1621, 1265, 1264, 1266, 1267, 1268, 1690, + 989, 990, 1496, 1858, 1860, 801, 1070, 145, 1002, 2215, + 795, 187, 2216, 875, 2214, 139, 1507, 789, 792, 793, + 71, 760, 977, 1748, 1664, 786, 790, 133, 909, 911, + 134, 987, 1446, 879, 900, 872, 873, 490, 596, 1046, + 187, 1332, 187, 187, 785, 490, 957, 1047, 865, 914, + 795, 490, 830, 860, 2106, 861, 936, 795, 862, 954, + 934, 916, 935, 799, 789, 795, 1005, 817, 582, 896, + 795, 967, 609, 800, 977, 957, 1901, 789, 792, 793, + 1591, 760, 1318, 1075, 1278, 786, 790, 1043, 1096, 946, + 943, 944, 945, 950, 952, 949, 1366, 948, 92, 2091, + 2089, 1060, 1869, 503, 942, 937, 989, 990, 864, 1417, + 1364, 1365, 1363, 1020, 1022, 1024, 1026, 1028, 1030, 1031, + 1021, 1023, 1589, 1027, 1029, 907, 1032, 176, 177, 178, + 1040, 146, 151, 148, 154, 155, 156, 157, 159, 160, + 161, 162, 906, 93, 1162, 506, 878, 163, 164, 165, + 166, 1587, 146, 151, 148, 154, 155, 156, 157, 159, + 160, 161, 162, 989, 990, 805, 803, 1048, 163, 164, + 165, 166, 956, 954, 146, 151, 148, 154, 155, 156, + 157, 159, 160, 161, 162, 897, 766, 1768, 613, 957, + 163, 164, 165, 166, 1417, 187, 1674, 1761, 1319, 1154, + 970, 971, 972, 973, 974, 967, 2134, 187, 977, 1663, + 1166, 1167, 1168, 1169, 176, 177, 178, 1584, 1384, 1448, + 1063, 924, 925, 2221, 171, 490, 1517, 1188, 955, 956, + 954, 1091, 1354, 1356, 1357, 1197, 1871, 2029, 1518, 1201, + 1584, 1588, 490, 490, 1355, 490, 957, 490, 490, 1184, + 490, 490, 490, 490, 490, 490, 968, 969, 970, 971, + 972, 973, 974, 967, 1586, 490, 977, 2028, 1662, 187, + 1237, 2204, 2194, 1939, 1385, 1878, 1661, 1641, 1642, 1643, + 1198, 1177, 1447, 1451, 1452, 1250, 1776, 1824, 772, 1234, + 1196, 2222, 1775, 955, 956, 954, 490, 1170, 1171, 2205, + 2195, 955, 956, 954, 187, 1232, 1233, 955, 956, 954, + 187, 957, 1555, 187, 1296, 1273, 187, 1258, 1160, 957, + 765, 604, 1257, 1879, 1206, 957, 1207, 187, 1209, 1211, + 187, 1153, 1215, 1217, 1219, 1221, 1223, 187, 187, 1194, + 1194, 1195, 1174, 1175, 1173, 490, 490, 490, 187, 490, + 490, 187, 490, 490, 1256, 1240, 1241, 1248, 1242, 1187, + 69, 1246, 1247, 1777, 1272, 955, 956, 954, 955, 956, + 954, 1302, 1362, 1058, 1305, 1239, 1307, 1308, 1309, 1310, + 187, 1312, 1299, 957, 599, 1316, 957, 955, 956, 954, + 1238, 1213, 1304, 2207, 176, 177, 178, 1291, 1755, 1311, + 176, 177, 178, 1315, 1566, 957, 1320, 1270, 2206, 1235, + 1260, 1360, 176, 177, 178, 2196, 1564, 2185, 1383, 2163, + 109, 775, 583, 1271, 774, 2064, 2026, 1386, 975, 976, + 968, 969, 970, 971, 972, 973, 974, 967, 2000, 1880, + 977, 490, 2114, 966, 965, 975, 976, 968, 969, 970, + 971, 972, 973, 974, 967, 1785, 1773, 977, 176, 177, + 178, 1632, 1251, 1387, 1388, 1330, 1269, 1342, 2096, 1259, + 1394, 1400, 601, 602, 490, 490, 1600, 529, 528, 531, + 532, 533, 534, 1361, 1599, 187, 530, 1300, 535, 176, + 177, 178, 1261, 1405, 1408, 1249, 1245, 1244, 490, 1418, + 1395, 1243, 1946, 2188, 78, 187, 1946, 2147, 490, 1396, + 1946, 2132, 187, 1005, 187, 1946, 583, 1946, 2104, 2044, + 583, 1440, 187, 187, 1441, 1492, 1424, 1425, 2095, 490, + 1584, 583, 490, 1959, 1453, 2010, 583, 1801, 1394, 1946, + 1951, 1931, 1930, 490, 958, 1927, 1928, 1927, 1926, 1459, + 583, 1491, 1818, 1486, 1397, 2031, 609, 1157, 1803, 609, + 1796, 1797, 1471, 583, 1787, 34, 34, 1511, 1465, 1492, + 953, 583, 1585, 1461, 1157, 1156, 1709, 1396, 1102, 1101, + 503, 1510, 583, 1515, 1900, 1889, 1709, 1493, 1742, 1015, + 1716, 1528, 1529, 1530, 1900, 1495, 1491, 1521, 490, 1522, + 1523, 1524, 1525, 2032, 2033, 2034, 490, 80, 1514, 1460, + 1489, 1563, 1565, 1717, 2080, 1533, 1534, 1535, 1536, 1052, + 1055, 1463, 1543, 2007, 490, 953, 1470, 1584, 2105, 1946, + 490, 1493, 1929, 1494, 1197, 1498, 1197, 1549, 1497, 1491, + 69, 69, 1782, 1471, 1583, 1471, 1513, 1512, 1570, 1321, + 1322, 1323, 2115, 1325, 1326, 1900, 1328, 1329, 34, 1499, + 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, + 1679, 1678, 613, 1459, 490, 613, 1383, 1471, 1459, 1459, + 1584, 1383, 1383, 1544, 576, 1567, 1449, 1428, 1340, 1580, + 1289, 1581, 1088, 1228, 568, 780, 1554, 779, 1593, 2139, + 1553, 69, 1556, 1560, 1561, 1562, 1539, 1540, 2053, 1958, + 2018, 1159, 1542, 1823, 1577, 1538, 187, 1544, 1576, 1575, + 187, 187, 187, 187, 187, 1532, 1531, 1594, 1275, 798, + 187, 187, 1595, 69, 187, 1189, 1185, 1597, 1598, 1194, + 1579, 1229, 1230, 1231, 173, 188, 1155, 94, 188, 1904, + 1905, 1826, 2209, 491, 2054, 188, 797, 1165, 187, 69, + 1781, 2201, 2035, 188, 1225, 1922, 1476, 1479, 1480, 1481, + 1477, 187, 1478, 1482, 187, 490, 1904, 1905, 1907, 1476, + 1479, 1480, 1481, 1477, 491, 1478, 1482, 491, 188, 491, + 1626, 1889, 1910, 1792, 1401, 1402, 1791, 1627, 1407, 1410, + 1411, 1628, 583, 1603, 1790, 1782, 1630, 2036, 2037, 1226, + 1227, 1558, 1333, 1293, 1360, 1733, 1735, 1731, 1480, 1481, + 1734, 1625, 1732, 1423, 1909, 1730, 1426, 1427, 1729, 966, + 965, 975, 976, 968, 969, 970, 971, 972, 973, 974, + 967, 2191, 1995, 977, 2172, 1881, 1698, 1057, 966, 965, + 975, 976, 968, 969, 970, 971, 972, 973, 974, 967, + 2011, 1949, 977, 1707, 188, 1706, 1635, 589, 2159, 187, + 2156, 2193, 2176, 2178, 188, 2184, 1696, 187, 1658, 188, + 2183, 2126, 590, 101, 1697, 2128, 1361, 1644, 1649, 966, + 965, 975, 976, 968, 969, 970, 971, 972, 973, 974, + 967, 187, 1288, 977, 569, 1061, 1062, 592, 1695, 591, + 1786, 1413, 187, 187, 187, 187, 187, 1657, 1301, 827, + 1702, 826, 574, 589, 187, 1970, 1414, 1714, 187, 1050, + 170, 187, 187, 183, 1673, 187, 187, 187, 590, 1718, + 1781, 1051, 1711, 1836, 926, 1043, 1685, 1811, 1754, 1810, + 1760, 110, 1693, 1723, 2136, 2135, 2078, 1578, 1203, 1740, + 1202, 586, 587, 592, 1701, 591, 1190, 2005, 1767, 1444, + 1710, 1557, 1743, 1292, 1712, 1640, 1745, 1451, 1452, 2097, + 2048, 1484, 580, 1766, 2198, 1769, 1770, 1771, 2197, 1757, + 1398, 1399, 1349, 1350, 1351, 1352, 1736, 1764, 1765, 187, + 1741, 577, 578, 1299, 1746, 1725, 1726, 1749, 1728, 490, + 2181, 1724, 2160, 1705, 1727, 490, 2004, 1758, 490, 1945, + 1197, 1704, 1568, 581, 80, 490, 2003, 1804, 1549, 1884, + 1709, 2211, 2210, 83, 1442, 1668, 1774, 1815, 1783, 1665, + 1071, 1064, 2211, 2129, 2024, 187, 1445, 1403, 1404, 576, + 1806, 78, 1814, 75, 1, 1800, 459, 1429, 1813, 1041, + 474, 2199, 1262, 1252, 1962, 187, 2050, 1952, 1177, 1547, + 788, 1784, 135, 1508, 1509, 1805, 2143, 91, 753, 90, + 1395, 791, 913, 1569, 503, 2088, 1812, 2045, 1762, 1396, + 1519, 2022, 1921, 1759, 2133, 1108, 1106, 490, 1107, 1105, + 1110, 1109, 1104, 1383, 1334, 1358, 487, 1483, 1367, 1368, + 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, + 1379, 1380, 1381, 1848, 1847, 1849, 1832, 1097, 1065, 828, + 1932, 1516, 1840, 490, 1834, 1505, 1835, 1868, 1331, 1601, + 469, 465, 985, 188, 187, 1846, 1703, 1750, 1862, 610, + 603, 1895, 2182, 2157, 490, 2155, 2125, 2074, 2158, 1861, + 490, 490, 2123, 1890, 2192, 1420, 2175, 1443, 1893, 1053, + 491, 491, 491, 2002, 1883, 1672, 1014, 1415, 1080, 1653, + 1654, 1847, 1899, 187, 512, 1439, 1353, 491, 491, 527, + 524, 525, 1887, 1454, 1545, 1715, 959, 510, 504, 1723, + 1671, 1072, 1912, 1475, 1914, 1473, 1915, 1472, 1294, 1084, + 1906, 1908, 1902, 1078, 1877, 1458, 1606, 1820, 1989, 938, + 585, 1924, 1925, 499, 1913, 95, 1412, 1940, 2113, 187, + 1639, 187, 187, 187, 1991, 584, 1920, 490, 60, 37, + 494, 2168, 1898, 929, 593, 31, 30, 29, 28, 23, + 187, 22, 21, 20, 19, 25, 18, 1936, 1935, 17, + 16, 1947, 105, 47, 44, 188, 42, 1963, 490, 490, + 490, 112, 187, 111, 1950, 45, 1956, 1953, 41, 867, + 1971, 27, 1948, 26, 1549, 1955, 15, 14, 1841, 13, + 12, 491, 11, 10, 188, 9, 188, 188, 5, 491, + 4, 932, 1937, 1938, 24, 491, 1003, 2, 966, 965, + 975, 976, 968, 969, 970, 971, 972, 973, 974, 967, + 1968, 1969, 977, 0, 0, 1979, 1974, 966, 965, 975, + 976, 968, 969, 970, 971, 972, 973, 974, 967, 1976, + 1977, 977, 1978, 0, 0, 1980, 0, 1982, 0, 0, + 0, 0, 2006, 0, 2001, 0, 0, 0, 0, 0, + 2015, 0, 0, 0, 0, 2014, 0, 0, 0, 0, + 0, 0, 0, 1651, 2021, 0, 0, 1652, 2020, 0, + 0, 0, 0, 1723, 0, 0, 490, 490, 1659, 1660, + 0, 0, 0, 0, 1666, 2039, 0, 1669, 1670, 490, + 0, 2025, 490, 2027, 2038, 1676, 0, 1677, 2049, 0, + 1680, 1681, 1682, 1683, 1684, 0, 0, 0, 2057, 0, + 0, 0, 0, 0, 0, 0, 1694, 0, 0, 2052, + 0, 0, 0, 0, 0, 0, 0, 490, 490, 490, + 187, 2055, 0, 0, 0, 0, 2067, 2069, 2070, 188, + 0, 490, 2056, 490, 0, 0, 1675, 2071, 1893, 490, + 0, 188, 1893, 539, 0, 2083, 2079, 0, 2086, 2063, + 0, 0, 1738, 1739, 0, 2072, 2092, 0, 0, 491, + 2077, 2081, 2093, 187, 2094, 0, 1699, 1700, 1055, 0, + 0, 0, 2085, 0, 490, 187, 491, 491, 2087, 491, + 0, 491, 491, 2107, 491, 491, 491, 491, 491, 491, + 1645, 1646, 1647, 2100, 186, 0, 0, 485, 0, 491, + 2103, 0, 0, 188, 186, 0, 0, 2122, 0, 0, + 0, 1893, 186, 0, 2130, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 490, 490, 597, 597, + 491, 0, 0, 0, 2142, 0, 0, 186, 188, 0, + 0, 0, 0, 0, 188, 0, 0, 188, 0, 2137, + 188, 2152, 490, 2052, 2144, 0, 2161, 0, 0, 0, + 490, 188, 2164, 0, 188, 0, 0, 0, 0, 2167, + 0, 188, 188, 2171, 0, 0, 1650, 0, 0, 491, + 491, 491, 188, 491, 491, 188, 491, 491, 2180, 2179, + 0, 0, 1723, 0, 0, 2190, 966, 965, 975, 976, + 968, 969, 970, 971, 972, 973, 974, 967, 0, 0, + 977, 0, 0, 186, 188, 1994, 0, 0, 0, 0, + 1844, 1845, 2208, 186, 0, 0, 0, 961, 186, 964, + 0, 0, 0, 2218, 0, 978, 979, 980, 981, 982, + 983, 984, 0, 962, 963, 960, 966, 965, 975, 976, + 968, 969, 970, 971, 972, 973, 974, 967, 0, 0, + 977, 0, 966, 965, 975, 976, 968, 969, 970, 971, + 972, 973, 974, 967, 0, 491, 977, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1896, 0, 0, 0, + 0, 0, 0, 1870, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1911, 491, 491, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, + 0, 0, 0, 0, 0, 0, 0, 0, 1885, 0, + 0, 0, 491, 0, 0, 0, 0, 0, 0, 188, + 0, 0, 491, 0, 0, 0, 188, 0, 188, 0, + 0, 0, 0, 0, 0, 0, 188, 188, 1988, 0, + 0, 0, 0, 491, 0, 0, 491, 0, 0, 0, + 0, 0, 0, 0, 0, 1842, 1843, 491, 0, 0, + 0, 0, 0, 0, 1987, 0, 0, 0, 0, 0, + 1863, 1864, 0, 1865, 1866, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1872, 1873, 0, 0, 0, 0, + 0, 0, 0, 1973, 0, 0, 0, 1975, 0, 0, + 0, 0, 0, 1986, 0, 0, 0, 0, 1984, 1985, + 0, 0, 491, 0, 0, 0, 0, 0, 0, 0, + 491, 0, 0, 0, 1999, 0, 0, 0, 0, 0, + 0, 0, 176, 177, 178, 0, 0, 0, 491, 0, + 0, 2008, 2009, 0, 491, 2013, 0, 966, 965, 975, + 976, 968, 969, 970, 971, 972, 973, 974, 967, 0, + 0, 977, 0, 0, 0, 0, 1923, 0, 0, 0, + 1993, 0, 186, 966, 965, 975, 976, 968, 969, 970, + 971, 972, 973, 974, 967, 0, 0, 977, 491, 0, + 0, 0, 466, 503, 0, 0, 0, 0, 0, 2043, + 2016, 467, 0, 2017, 0, 0, 2019, 0, 0, 0, + 0, 461, 966, 965, 975, 976, 968, 969, 970, 971, + 972, 973, 974, 967, 0, 0, 977, 0, 0, 0, + 188, 0, 0, 0, 188, 188, 188, 188, 188, 0, + 0, 0, 0, 2068, 188, 188, 0, 1972, 188, 0, + 458, 0, 0, 0, 0, 0, 0, 0, 0, 473, + 966, 965, 975, 976, 968, 969, 970, 971, 972, 973, + 974, 967, 188, 0, 977, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 188, 0, 0, 188, 491, + 0, 0, 0, 0, 186, 0, 0, 0, 0, 0, + 0, 479, 2076, 503, 0, 2109, 2110, 2111, 2112, 597, + 2116, 0, 2117, 2118, 2119, 0, 2120, 2121, 0, 0, + 0, 0, 0, 186, 0, 186, 1087, 0, 450, 451, + 452, 462, 471, 472, 463, 0, 0, 0, 468, 470, + 482, 453, 454, 484, 483, 0, 457, 455, 456, 464, + 0, 478, 460, 480, 0, 0, 0, 0, 0, 0, + 2148, 0, 0, 0, 0, 0, 538, 965, 975, 976, + 968, 969, 970, 971, 972, 973, 974, 967, 0, 0, + 977, 0, 0, 188, 0, 0, 0, 0, 0, 0, + 0, 188, 2058, 2059, 2060, 2061, 2062, 0, 0, 0, + 2065, 2066, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2186, 2187, 0, 188, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 489, 188, 188, 188, 188, + 188, 0, 0, 0, 0, 0, 0, 0, 188, 0, + 0, 0, 188, 0, 0, 188, 188, 0, 0, 188, + 188, 188, 0, 0, 0, 0, 611, 0, 0, 757, + 0, 764, 0, 0, 0, 0, 1044, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 481, 186, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 186, 0, 0, 0, 0, 476, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 477, 0, 0, 188, 0, 0, 0, 185, 0, 0, + 0, 1200, 0, 491, 0, 0, 0, 493, 0, 491, + 0, 0, 491, 0, 0, 572, 0, 0, 0, 491, + 0, 0, 0, 0, 2165, 0, 1200, 1200, 0, 0, + 0, 0, 186, 0, 0, 0, 0, 0, 0, 188, + 761, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, + 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, + 0, 0, 0, 186, 0, 0, 186, 0, 0, 1298, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 186, 491, 0, 186, 0, 0, 0, 0, 0, 0, + 1313, 1314, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 186, 0, 0, 186, 0, 857, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 868, 491, 0, 0, + 0, 874, 0, 0, 0, 0, 0, 0, 188, 0, + 0, 0, 0, 186, 0, 0, 0, 0, 491, 0, + 0, 0, 0, 0, 491, 491, 0, 0, 0, 0, + 0, 0, 0, 34, 35, 36, 70, 38, 39, 0, + 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, + 0, 0, 0, 74, 0, 0, 0, 0, 40, 66, + 67, 0, 64, 68, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 597, 1298, 0, 0, 0, + 597, 597, 0, 0, 597, 597, 597, 0, 0, 0, + 1200, 0, 0, 188, 0, 188, 188, 188, 53, 0, + 0, 491, 0, 0, 0, 0, 0, 0, 69, 597, + 597, 597, 597, 597, 188, 0, 0, 0, 1437, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 491, 491, 491, 0, 188, 0, 186, 0, + 0, 0, 0, 0, 1298, 186, 0, 186, 0, 0, + 0, 0, 0, 0, 0, 186, 186, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 43, 46, 49, 48, 51, 0, 63, 0, 0, 0, + 0, 0, 611, 611, 611, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 928, + 930, 52, 73, 72, 0, 0, 61, 62, 50, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 491, 491, 54, 55, 0, 56, 57, 58, 59, 0, + 0, 0, 0, 491, 0, 876, 491, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 541, 33, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 491, 491, 491, 188, 0, 0, 0, 0, 0, + 0, 0, 0, 1068, 0, 491, 0, 491, 33, 0, + 0, 611, 0, 491, 0, 0, 0, 1098, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 188, 0, 186, + 0, 0, 71, 186, 186, 186, 186, 186, 491, 188, + 0, 0, 575, 186, 186, 0, 0, 186, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 186, 0, 0, 186, 0, 0, + 491, 491, 0, 0, 0, 0, 1074, 0, 0, 1085, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 491, 0, 0, 0, + 0, 0, 0, 0, 491, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 597, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 757, 186, 0, 0, 0, 0, 0, 0, 0, + 1437, 0, 0, 0, 1199, 0, 0, 0, 1205, 1205, + 0, 1205, 0, 1205, 1205, 0, 1214, 1205, 1205, 1205, + 1205, 1205, 0, 597, 186, 0, 0, 0, 0, 1199, + 1199, 757, 0, 0, 1200, 186, 186, 186, 186, 186, + 0, 0, 0, 0, 0, 0, 0, 1737, 0, 0, + 0, 186, 0, 0, 186, 186, 0, 0, 186, 1747, + 1298, 1103, 1274, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1161, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 611, 611, 611, 0, 611, 611, 0, 611, 611, + 0, 0, 186, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1236, 1200, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1298, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 186, 0, + 1284, 0, 0, 0, 0, 0, 1085, 0, 0, 1295, + 0, 0, 0, 0, 0, 0, 0, 0, 186, 0, + 0, 0, 0, 1303, 0, 0, 1306, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1389, 0, 611, + 0, 0, 0, 0, 1324, 0, 0, 1327, 0, 597, + 0, 0, 0, 1199, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1421, 1422, 0, 0, 0, 0, 1085, 0, 0, 0, + 922, 922, 922, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1455, 0, 0, 186, 0, 33, + 0, 0, 0, 0, 1068, 0, 0, 611, 0, 0, + 1200, 0, 986, 988, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 611, 0, 0, 611, 0, + 0, 0, 0, 0, 0, 0, 186, 0, 0, 757, + 0, 0, 0, 1001, 0, 0, 0, 1006, 1007, 1008, + 1009, 1010, 1011, 1012, 1013, 0, 1016, 1019, 1019, 1019, + 1025, 1019, 1019, 1025, 1019, 1033, 1034, 1035, 1036, 1037, + 1038, 1039, 0, 0, 0, 0, 0, 1045, 0, 0, + 33, 0, 186, 0, 186, 186, 186, 0, 0, 0, + 0, 0, 0, 1200, 764, 0, 0, 0, 0, 0, + 0, 1462, 1559, 186, 0, 168, 1081, 0, 1466, 0, + 1469, 0, 0, 0, 0, 0, 1793, 0, 0, 1488, + 757, 0, 0, 0, 0, 186, 764, 0, 0, 168, + 110, 0, 132, 0, 0, 0, 0, 0, 0, 0, + 1176, 152, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 110, 0, 132, 0, 0, 0, + 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, + 757, 0, 142, 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 488, 189, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 594, 1291, 0, 0, 0, 594, - 594, 0, 0, 594, 594, 594, 0, 0, 0, 1193, - 0, 0, 0, 0, 0, 0, 0, 488, 488, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 594, 594, - 594, 594, 594, 0, 0, 0, 0, 1426, 0, 0, - 0, 0, 0, 488, 0, 0, 0, 488, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, - 0, 0, 0, 1291, 187, 0, 187, 0, 0, 0, - 0, 0, 0, 0, 187, 187, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1787, - 0, 873, 0, 754, 0, 0, 538, 33, 0, 0, - 0, 0, 0, 111, 0, 133, 1192, 0, 0, 0, - 1198, 1198, 0, 1198, 153, 1198, 1198, 0, 1207, 1198, - 1198, 1198, 1198, 1198, 0, 0, 0, 0, 0, 0, - 33, 1192, 1192, 754, 187, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 143, 0, 0, 0, 0, - 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1267, 0, 0, 0, 150, 0, - 151, 0, 0, 0, 572, 1173, 1174, 142, 141, 168, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 608, - 608, 608, 0, 608, 608, 0, 608, 608, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 137, 1175, 144, - 0, 1172, 0, 138, 139, 0, 0, 154, 0, 1067, - 0, 0, 1078, 0, 0, 0, 0, 159, 187, 0, - 0, 0, 187, 187, 187, 187, 187, 0, 0, 0, - 0, 0, 187, 187, 187, 187, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1615, 1616, 187, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, - 0, 0, 187, 0, 0, 1378, 0, 608, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1192, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1410, 1411, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 594, 594, 1444, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1061, 0, 0, 608, 0, 0, 0, 0, - 0, 594, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 608, 1096, 0, 608, 187, 140, 0, - 0, 0, 0, 0, 0, 1426, 0, 754, 0, 0, - 134, 0, 0, 135, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 594, 187, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1193, - 187, 187, 187, 187, 187, 0, 0, 0, 0, 0, - 0, 0, 1725, 0, 0, 0, 187, 0, 0, 187, - 187, 0, 761, 187, 1735, 1291, 0, 0, 1229, 1546, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, - 0, 0, 0, 0, 761, 0, 0, 0, 0, 0, - 0, 0, 0, 1277, 0, 0, 0, 0, 0, 0, - 0, 1287, 0, 0, 147, 152, 149, 155, 156, 157, - 158, 160, 161, 162, 163, 187, 1296, 0, 1298, 0, - 164, 165, 166, 167, 0, 0, 0, 0, 754, 0, - 1193, 0, 0, 1313, 0, 0, 1316, 0, 0, 0, - 1291, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 915, 915, - 915, 0, 187, 0, 0, 1078, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, - 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 979, 981, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 594, 0, 0, 0, 0, 0, 0, - 0, 0, 994, 0, 0, 1622, 999, 1000, 1001, 1002, - 1003, 1004, 1005, 1006, 0, 1009, 1012, 1012, 1012, 1018, - 1012, 1012, 1018, 1012, 1026, 1027, 1028, 1029, 1030, 1031, - 1032, 0, 0, 0, 0, 0, 1038, 0, 0, 33, - 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1193, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1074, 0, 0, 0, 0, - 1451, 0, 169, 0, 0, 0, 0, 1455, 0, 1458, - 187, 0, 0, 1169, 0, 0, 0, 0, 1477, 0, - 0, 0, 0, 0, 0, 0, 0, 111, 0, 133, - 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 187, 0, 187, 187, 187, 0, 0, 143, - 0, 1192, 0, 1193, 132, 0, 0, 0, 0, 0, - 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, - 0, 0, 150, 0, 151, 0, 0, 1544, 0, 1173, - 1174, 142, 141, 168, 0, 187, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 137, 1175, 144, 0, 1172, 0, 138, 139, 0, - 0, 154, 0, 0, 0, 0, 0, 0, 1789, 0, - 0, 159, 1192, 0, 1796, 1193, 0, 1789, 0, 0, - 0, 0, 608, 0, 1801, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1078, 0, 0, 0, 1598, 1599, 1600, 1601, 1602, - 0, 0, 0, 0, 0, 1606, 1607, 1078, 1609, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1617, - 0, 0, 0, 0, 0, 0, 608, 0, 0, 0, - 0, 0, 1619, 0, 0, 1621, 0, 0, 0, 0, - 0, 0, 0, 146, 0, 0, 0, 1426, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1198, 0, 915, 915, 915, 0, 915, 915, - 0, 915, 915, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 608, 0, 0, 1192, 0, 187, 1892, - 1198, 0, 140, 0, 0, 0, 0, 0, 0, 0, - 187, 0, 0, 0, 134, 0, 0, 135, 0, 0, + 0, 0, 0, 0, 1200, 149, 142, 150, 0, 0, + 0, 131, 1180, 1181, 141, 140, 167, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, + 0, 150, 0, 0, 0, 0, 1180, 1181, 141, 140, + 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 136, 1182, 143, 0, 1179, 0, + 137, 138, 0, 0, 153, 0, 0, 0, 0, 0, + 0, 1634, 0, 0, 158, 0, 0, 0, 136, 1182, + 143, 0, 1179, 0, 137, 138, 0, 0, 153, 0, + 0, 0, 0, 1437, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1085, 0, 0, 0, 1610, 1611, 1612, 1613, + 1614, 0, 0, 0, 0, 0, 1618, 1619, 0, 0, + 1623, 0, 0, 0, 0, 0, 186, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 186, 0, + 0, 0, 0, 0, 1629, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1631, 0, 0, + 1633, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, + 0, 0, 0, 0, 0, 0, 0, 1199, 0, 922, + 922, 922, 0, 922, 922, 0, 922, 922, 0, 0, + 0, 0, 0, 1200, 0, 0, 139, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 133, 0, + 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, + 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 133, 0, 1125, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1193, 0, 754, 0, 0, 1192, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1795, 0, 0, 0, 1199, + 0, 1802, 0, 0, 1795, 0, 0, 0, 0, 611, + 0, 1807, 0, 0, 0, 0, 0, 0, 1744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1732, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1962, 1963, 1964, 0, 0, 147, 152, - 149, 155, 156, 157, 158, 160, 161, 162, 163, 0, - 0, 0, 0, 0, 164, 165, 166, 167, 0, 0, + 0, 0, 146, 151, 148, 154, 155, 156, 157, 159, + 160, 161, 162, 0, 0, 0, 0, 0, 163, 164, + 165, 166, 0, 0, 0, 0, 146, 151, 148, 154, + 155, 156, 157, 159, 160, 161, 162, 1113, 0, 0, + 0, 0, 163, 164, 165, 166, 1487, 0, 0, 0, + 0, 0, 0, 611, 0, 1789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1476, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1192, 0, 0, + 1126, 0, 0, 0, 0, 0, 0, 0, 0, 1205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1819, 0, 0, 0, 0, 0, 0, 0, 0, + 611, 0, 0, 1199, 0, 0, 1897, 1205, 0, 0, + 0, 1833, 0, 0, 0, 0, 1139, 1142, 1143, 1144, + 1145, 1146, 1147, 0, 1148, 1149, 1150, 1151, 1152, 1127, + 1128, 1129, 1130, 1111, 1112, 1140, 0, 1114, 0, 1115, + 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1131, + 1132, 1133, 1134, 1135, 1136, 1137, 1138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1828, 0, 1789, 2036, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1789, 0, - 0, 608, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 757, 0, 0, 1199, 0, 0, 0, + 1882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1964, 1965, 1966, 0, 0, 1141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1789, 1789, 1789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2078, 0, 2080, 0, 0, 0, 0, 0, 1789, 0, - 0, 0, 0, 0, 1877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1941, 0, 1942, 1943, 1944, + 0, 0, 0, 0, 0, 0, 0, 1199, 0, 0, + 0, 0, 0, 0, 0, 0, 1954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 608, 608, + 0, 0, 1795, 2040, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1795, 0, 0, 611, 1655, + 0, 0, 575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1939, 0, 1940, 1941, 1942, - 0, 0, 1192, 0, 2149, 0, 0, 0, 1789, 0, - 0, 0, 0, 0, 0, 0, 1952, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1965, 0, + 0, 0, 0, 1795, 1795, 1795, 0, 0, 0, 1692, + 0, 0, 0, 0, 0, 0, 0, 2082, 0, 2084, + 0, 0, 0, 0, 0, 1795, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1081, 0, 0, 0, 0, + 0, 0, 1719, 1720, 0, 0, 1081, 1081, 1081, 1081, + 1081, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1795, 0, 1487, 0, 0, 1081, 0, 0, 0, 1081, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1643, 0, 0, 572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1680, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 611, 611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1074, 0, 0, 0, - 0, 0, 0, 1707, 1708, 0, 0, 1074, 1074, 1074, - 1074, 1074, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1476, 0, 0, 1074, 0, 0, 0, - 1074, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1199, 0, 2162, 0, + 0, 0, 0, 0, 0, 0, 1795, 0, 0, 2099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1808, 2108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1653,22 +1659,19 @@ 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, - 1802, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2090, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1894, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1081, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1889, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1676,13 +1679,13 @@ 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, 1990, 0, 0, 0, 0, 0, 0, 1996, + 1997, 1998, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1988, - 0, 0, 0, 0, 0, 0, 1994, 1995, 1996, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1690,2285 +1693,2285 @@ 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, 1894, 0, 33, 0, 1894, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1894, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1889, 0, 33, 0, 1889, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1889, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 732, 719, 33, 2125, 668, 735, 639, - 657, 744, 659, 662, 702, 619, 681, 330, 654, 0, - 643, 615, 650, 616, 641, 670, 241, 674, 638, 721, - 684, 734, 288, 0, 621, 644, 343, 704, 380, 227, - 297, 295, 408, 251, 244, 240, 226, 272, 303, 341, - 398, 335, 741, 292, 691, 0, 389, 315, 0, 0, - 0, 672, 724, 679, 715, 667, 703, 628, 690, 736, - 655, 699, 737, 278, 225, 195, 327, 390, 254, 0, - 0, 0, 177, 178, 179, 0, 2132, 2133, 0, 0, - 0, 0, 0, 217, 0, 223, 696, 731, 652, 698, - 237, 276, 243, 236, 405, 701, 747, 614, 693, 0, - 617, 620, 743, 727, 647, 648, 0, 0, 0, 0, - 0, 0, 0, 671, 680, 712, 665, 0, 0, 0, - 0, 0, 0, 0, 0, 645, 0, 689, 0, 0, - 0, 624, 618, 0, 0, 0, 0, 669, 0, 0, - 0, 627, 0, 646, 713, 0, 612, 262, 622, 316, - 717, 726, 666, 434, 730, 664, 663, 733, 708, 625, - 723, 658, 287, 623, 284, 191, 205, 0, 656, 326, - 364, 370, 722, 642, 651, 228, 649, 368, 339, 421, - 213, 252, 361, 344, 366, 688, 706, 367, 293, 410, - 356, 420, 435, 436, 235, 320, 427, 402, 432, 444, - 206, 232, 333, 395, 424, 386, 313, 406, 407, 283, - 385, 260, 194, 291, 198, 397, 418, 218, 378, 0, - 0, 0, 200, 416, 394, 310, 280, 281, 199, 0, - 360, 239, 258, 230, 329, 413, 414, 229, 446, 208, - 431, 202, 209, 430, 322, 409, 417, 311, 302, 201, - 415, 309, 301, 286, 249, 268, 354, 296, 355, 269, - 318, 317, 319, 0, 196, 0, 391, 425, 447, 215, - 637, 718, 404, 440, 443, 0, 357, 216, 259, 248, - 353, 257, 289, 439, 441, 442, 214, 351, 265, 321, - 210, 271, 387, 285, 294, 710, 746, 338, 369, 219, - 423, 388, 632, 636, 630, 631, 682, 683, 633, 738, - 739, 740, 714, 626, 0, 634, 635, 0, 720, 728, - 729, 687, 190, 203, 290, 742, 358, 255, 445, 429, - 426, 613, 629, 234, 640, 0, 0, 653, 660, 661, - 673, 675, 676, 677, 678, 686, 694, 695, 697, 705, - 707, 709, 711, 716, 725, 745, 192, 193, 204, 212, - 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, - 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, - 331, 332, 334, 336, 337, 340, 346, 347, 348, 349, - 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, - 377, 381, 382, 383, 384, 392, 396, 411, 412, 422, - 433, 437, 264, 419, 438, 0, 298, 685, 692, 300, - 250, 266, 275, 700, 428, 393, 207, 365, 256, 197, - 224, 211, 231, 245, 247, 279, 308, 314, 342, 345, - 261, 242, 222, 362, 220, 379, 399, 400, 401, 403, - 312, 238, 732, 719, 0, 0, 668, 735, 639, 657, - 744, 659, 662, 702, 619, 681, 330, 654, 0, 643, - 615, 650, 616, 641, 670, 241, 674, 638, 721, 684, - 734, 288, 0, 621, 644, 343, 704, 380, 227, 297, - 295, 408, 251, 244, 240, 226, 272, 303, 341, 398, - 335, 741, 292, 691, 0, 389, 315, 0, 0, 0, - 672, 724, 679, 715, 667, 703, 628, 690, 736, 655, - 699, 737, 278, 225, 195, 327, 390, 254, 0, 0, - 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 696, 731, 652, 698, 237, - 276, 243, 236, 405, 701, 747, 614, 693, 0, 617, - 620, 743, 727, 647, 648, 0, 0, 0, 0, 0, - 0, 0, 671, 680, 712, 665, 0, 0, 0, 0, - 0, 0, 1881, 0, 645, 0, 689, 0, 0, 0, - 624, 618, 0, 0, 0, 0, 669, 0, 0, 0, - 627, 0, 646, 713, 0, 612, 262, 622, 316, 717, - 726, 666, 434, 730, 664, 663, 733, 708, 625, 723, - 658, 287, 623, 284, 191, 205, 0, 656, 326, 364, - 370, 722, 642, 651, 228, 649, 368, 339, 421, 213, - 252, 361, 344, 366, 688, 706, 367, 293, 410, 356, - 420, 435, 436, 235, 320, 427, 402, 432, 444, 206, - 232, 333, 395, 424, 386, 313, 406, 407, 283, 385, - 260, 194, 291, 198, 397, 418, 218, 378, 0, 0, - 0, 200, 416, 394, 310, 280, 281, 199, 0, 360, - 239, 258, 230, 329, 413, 414, 229, 446, 208, 431, - 202, 209, 430, 322, 409, 417, 311, 302, 201, 415, - 309, 301, 286, 249, 268, 354, 296, 355, 269, 318, - 317, 319, 0, 196, 0, 391, 425, 447, 215, 637, - 718, 404, 440, 443, 0, 357, 216, 259, 248, 353, - 257, 289, 439, 441, 442, 214, 351, 265, 321, 210, - 271, 387, 285, 294, 710, 746, 338, 369, 219, 423, - 388, 632, 636, 630, 631, 682, 683, 633, 738, 739, - 740, 714, 626, 0, 634, 635, 0, 720, 728, 729, - 687, 190, 203, 290, 742, 358, 255, 445, 429, 426, - 613, 629, 234, 640, 0, 0, 653, 660, 661, 673, - 675, 676, 677, 678, 686, 694, 695, 697, 705, 707, - 709, 711, 716, 725, 745, 192, 193, 204, 212, 221, - 233, 246, 253, 263, 267, 270, 273, 274, 277, 282, - 299, 304, 305, 306, 307, 323, 324, 325, 328, 331, - 332, 334, 336, 337, 340, 346, 347, 348, 349, 350, - 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, - 381, 382, 383, 384, 392, 396, 411, 412, 422, 433, - 437, 264, 419, 438, 0, 298, 685, 692, 300, 250, - 266, 275, 700, 428, 393, 207, 365, 256, 197, 224, - 211, 231, 245, 247, 279, 308, 314, 342, 345, 261, - 242, 222, 362, 220, 379, 399, 400, 401, 403, 312, - 238, 732, 719, 0, 0, 668, 735, 639, 657, 744, - 659, 662, 702, 619, 681, 330, 654, 0, 643, 615, - 650, 616, 641, 670, 241, 674, 638, 721, 684, 734, - 288, 0, 621, 644, 343, 704, 380, 227, 297, 295, - 408, 251, 244, 240, 226, 272, 303, 341, 398, 335, - 741, 292, 691, 0, 389, 315, 0, 0, 0, 672, - 724, 679, 715, 667, 703, 628, 690, 736, 655, 699, - 737, 278, 225, 195, 327, 390, 254, 0, 0, 0, - 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, - 0, 217, 0, 223, 696, 731, 652, 698, 237, 276, - 243, 236, 405, 701, 747, 614, 693, 0, 617, 620, - 743, 727, 647, 648, 0, 0, 0, 0, 0, 0, - 0, 671, 680, 712, 665, 0, 0, 0, 0, 0, - 0, 1736, 0, 645, 0, 689, 0, 0, 0, 624, - 618, 0, 0, 0, 0, 669, 0, 0, 0, 627, - 0, 646, 713, 0, 612, 262, 622, 316, 717, 726, - 666, 434, 730, 664, 663, 733, 708, 625, 723, 658, - 287, 623, 284, 191, 205, 0, 656, 326, 364, 370, - 722, 642, 651, 228, 649, 368, 339, 421, 213, 252, - 361, 344, 366, 688, 706, 367, 293, 410, 356, 420, - 435, 436, 235, 320, 427, 402, 432, 444, 206, 232, - 333, 395, 424, 386, 313, 406, 407, 283, 385, 260, - 194, 291, 198, 397, 418, 218, 378, 0, 0, 0, - 200, 416, 394, 310, 280, 281, 199, 0, 360, 239, - 258, 230, 329, 413, 414, 229, 446, 208, 431, 202, - 209, 430, 322, 409, 417, 311, 302, 201, 415, 309, - 301, 286, 249, 268, 354, 296, 355, 269, 318, 317, - 319, 0, 196, 0, 391, 425, 447, 215, 637, 718, - 404, 440, 443, 0, 357, 216, 259, 248, 353, 257, - 289, 439, 441, 442, 214, 351, 265, 321, 210, 271, - 387, 285, 294, 710, 746, 338, 369, 219, 423, 388, - 632, 636, 630, 631, 682, 683, 633, 738, 739, 740, - 714, 626, 0, 634, 635, 0, 720, 728, 729, 687, - 190, 203, 290, 742, 358, 255, 445, 429, 426, 613, - 629, 234, 640, 0, 0, 653, 660, 661, 673, 675, - 676, 677, 678, 686, 694, 695, 697, 705, 707, 709, - 711, 716, 725, 745, 192, 193, 204, 212, 221, 233, - 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, - 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, + 735, 722, 33, 2138, 671, 738, 642, 660, 747, 662, + 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, + 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, + 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, + 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, + 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, + 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, + 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, + 177, 178, 0, 2145, 2146, 0, 0, 0, 0, 0, + 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, + 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, + 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, + 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, + 0, 0, 648, 0, 692, 0, 0, 0, 627, 621, + 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, + 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, + 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, + 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, + 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, + 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, + 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, + 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, + 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, + 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, + 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, + 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, + 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, + 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, + 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, + 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, + 387, 284, 293, 713, 749, 338, 369, 218, 423, 388, + 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, + 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, + 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, + 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, + 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, + 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, + 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, + 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 411, 412, 422, 433, 437, - 264, 419, 438, 0, 298, 685, 692, 300, 250, 266, - 275, 700, 428, 393, 207, 365, 256, 197, 224, 211, - 231, 245, 247, 279, 308, 314, 342, 345, 261, 242, - 222, 362, 220, 379, 399, 400, 401, 403, 312, 238, - 732, 719, 0, 0, 668, 735, 639, 657, 744, 659, - 662, 702, 619, 681, 330, 654, 0, 643, 615, 650, - 616, 641, 670, 241, 674, 638, 721, 684, 734, 288, - 0, 621, 644, 343, 704, 380, 227, 297, 295, 408, - 251, 244, 240, 226, 272, 303, 341, 398, 335, 741, - 292, 691, 0, 389, 315, 0, 0, 0, 672, 724, - 679, 715, 667, 703, 628, 690, 736, 655, 699, 737, - 278, 225, 195, 327, 390, 254, 0, 0, 0, 177, - 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, - 217, 0, 223, 696, 731, 652, 698, 237, 276, 243, - 236, 405, 701, 747, 614, 693, 0, 617, 620, 743, - 727, 647, 648, 0, 0, 0, 0, 0, 0, 0, - 671, 680, 712, 665, 0, 0, 0, 0, 0, 0, - 1453, 0, 645, 0, 689, 0, 0, 0, 624, 618, - 0, 0, 0, 0, 669, 0, 0, 0, 627, 0, - 646, 713, 0, 612, 262, 622, 316, 717, 726, 666, - 434, 730, 664, 663, 733, 708, 625, 723, 658, 287, - 623, 284, 191, 205, 0, 656, 326, 364, 370, 722, - 642, 651, 228, 649, 368, 339, 421, 213, 252, 361, - 344, 366, 688, 706, 367, 293, 410, 356, 420, 435, - 436, 235, 320, 427, 402, 432, 444, 206, 232, 333, - 395, 424, 386, 313, 406, 407, 283, 385, 260, 194, - 291, 198, 397, 418, 218, 378, 0, 0, 0, 200, - 416, 394, 310, 280, 281, 199, 0, 360, 239, 258, - 230, 329, 413, 414, 229, 446, 208, 431, 202, 209, - 430, 322, 409, 417, 311, 302, 201, 415, 309, 301, - 286, 249, 268, 354, 296, 355, 269, 318, 317, 319, - 0, 196, 0, 391, 425, 447, 215, 637, 718, 404, - 440, 443, 0, 357, 216, 259, 248, 353, 257, 289, - 439, 441, 442, 214, 351, 265, 321, 210, 271, 387, - 285, 294, 710, 746, 338, 369, 219, 423, 388, 632, - 636, 630, 631, 682, 683, 633, 738, 739, 740, 714, - 626, 0, 634, 635, 0, 720, 728, 729, 687, 190, - 203, 290, 742, 358, 255, 445, 429, 426, 613, 629, - 234, 640, 0, 0, 653, 660, 661, 673, 675, 676, - 677, 678, 686, 694, 695, 697, 705, 707, 709, 711, - 716, 725, 745, 192, 193, 204, 212, 221, 233, 246, - 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, - 305, 306, 307, 323, 324, 325, 328, 331, 332, 334, - 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, - 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, - 383, 384, 392, 396, 411, 412, 422, 433, 437, 264, - 419, 438, 0, 298, 685, 692, 300, 250, 266, 275, - 700, 428, 393, 207, 365, 256, 197, 224, 211, 231, - 245, 247, 279, 308, 314, 342, 345, 261, 242, 222, - 362, 220, 379, 399, 400, 401, 403, 312, 238, 732, - 719, 0, 0, 668, 735, 639, 657, 744, 659, 662, - 702, 619, 681, 330, 654, 0, 643, 615, 650, 616, - 641, 670, 241, 674, 638, 721, 684, 734, 288, 0, - 621, 644, 343, 704, 380, 227, 297, 295, 408, 251, - 244, 240, 226, 272, 303, 341, 398, 335, 741, 292, - 691, 0, 389, 315, 0, 0, 0, 672, 724, 679, - 715, 667, 703, 628, 690, 736, 655, 699, 737, 278, - 225, 195, 327, 390, 254, 69, 0, 0, 177, 178, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 696, 731, 652, 698, 237, 276, 243, 236, - 405, 701, 747, 614, 693, 0, 617, 620, 743, 727, - 647, 648, 0, 0, 0, 0, 0, 0, 0, 671, - 680, 712, 665, 0, 0, 0, 0, 0, 0, 0, - 0, 645, 0, 689, 0, 0, 0, 624, 618, 0, - 0, 0, 0, 669, 0, 0, 0, 627, 0, 646, - 713, 0, 612, 262, 622, 316, 717, 726, 666, 434, - 730, 664, 663, 733, 708, 625, 723, 658, 287, 623, - 284, 191, 205, 0, 656, 326, 364, 370, 722, 642, - 651, 228, 649, 368, 339, 421, 213, 252, 361, 344, - 366, 688, 706, 367, 293, 410, 356, 420, 435, 436, - 235, 320, 427, 402, 432, 444, 206, 232, 333, 395, - 424, 386, 313, 406, 407, 283, 385, 260, 194, 291, - 198, 397, 418, 218, 378, 0, 0, 0, 200, 416, - 394, 310, 280, 281, 199, 0, 360, 239, 258, 230, - 329, 413, 414, 229, 446, 208, 431, 202, 209, 430, - 322, 409, 417, 311, 302, 201, 415, 309, 301, 286, - 249, 268, 354, 296, 355, 269, 318, 317, 319, 0, - 196, 0, 391, 425, 447, 215, 637, 718, 404, 440, - 443, 0, 357, 216, 259, 248, 353, 257, 289, 439, - 441, 442, 214, 351, 265, 321, 210, 271, 387, 285, - 294, 710, 746, 338, 369, 219, 423, 388, 632, 636, - 630, 631, 682, 683, 633, 738, 739, 740, 714, 626, - 0, 634, 635, 0, 720, 728, 729, 687, 190, 203, - 290, 742, 358, 255, 445, 429, 426, 613, 629, 234, - 640, 0, 0, 653, 660, 661, 673, 675, 676, 677, - 678, 686, 694, 695, 697, 705, 707, 709, 711, 716, - 725, 745, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 334, 336, + 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, + 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, + 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, + 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, + 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, + 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, + 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, + 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, + 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, + 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, + 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, + 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, + 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, + 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, + 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, + 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, + 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, + 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, + 1886, 0, 648, 0, 692, 0, 0, 0, 627, 621, + 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, + 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, + 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, + 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, + 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, + 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, + 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, + 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, + 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, + 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, + 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, + 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, + 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, + 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, + 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, + 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, + 387, 284, 293, 713, 749, 338, 369, 218, 423, 388, + 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, + 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, + 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, + 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, + 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, + 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, + 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, + 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, + 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, + 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, + 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, + 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, + 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, + 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, + 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, + 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, + 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, + 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, + 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, + 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, + 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, + 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, + 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, + 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, + 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, + 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, + 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, + 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, + 1748, 0, 648, 0, 692, 0, 0, 0, 627, 621, + 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, + 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, + 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, + 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, + 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, + 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, + 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, + 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, + 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, + 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, + 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, + 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, + 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, + 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, + 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, + 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, + 387, 284, 293, 713, 749, 338, 369, 218, 423, 388, + 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, + 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, + 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, + 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, + 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, + 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, + 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, + 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, + 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, + 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, + 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, + 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, + 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, + 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, + 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, + 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, + 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, + 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, + 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, + 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, + 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, + 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, + 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, + 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, + 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, + 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, + 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, + 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, + 1464, 0, 648, 0, 692, 0, 0, 0, 627, 621, + 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, + 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, + 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, + 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, + 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, + 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, + 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, + 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, + 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, + 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, + 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, + 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, + 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, + 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, + 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, + 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, + 387, 284, 293, 713, 749, 338, 369, 218, 423, 388, + 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, + 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, + 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, + 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, + 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, + 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, + 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, + 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, + 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, + 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, + 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, + 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, + 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, + 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, + 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, + 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, + 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, + 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, + 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, + 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, + 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, + 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, + 277, 224, 194, 326, 390, 253, 69, 0, 0, 176, + 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, + 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, + 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, + 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, + 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, + 0, 0, 648, 0, 692, 0, 0, 0, 627, 621, + 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, + 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, + 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, + 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, + 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, + 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, + 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, + 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, + 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, + 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, + 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, + 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, + 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, + 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, + 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, + 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, + 387, 284, 293, 713, 749, 338, 369, 218, 423, 388, + 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, + 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, + 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, + 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, + 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, + 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, + 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, + 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, + 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, + 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, + 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, + 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, + 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, + 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, + 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, + 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, + 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, + 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, + 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, + 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, + 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, + 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, + 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, + 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, + 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, + 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, + 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, + 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, + 0, 0, 648, 0, 692, 0, 0, 0, 627, 621, + 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, + 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, + 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, + 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, + 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, + 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, + 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, + 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, + 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, + 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, + 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, + 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, + 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, + 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, + 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, + 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, + 387, 284, 293, 713, 749, 338, 369, 218, 423, 388, + 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, + 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, + 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, + 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, + 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, + 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, + 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, + 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, + 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, + 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, + 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, + 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, + 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, + 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, + 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, + 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, + 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, + 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, + 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, + 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, + 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, + 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, + 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, + 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, + 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, + 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, + 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, + 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, + 0, 0, 648, 0, 692, 0, 0, 0, 627, 621, + 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, + 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, + 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, + 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, + 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, + 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, + 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, + 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, + 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, + 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, + 328, 412, 413, 228, 446, 207, 431, 201, 752, 430, + 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, + 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, + 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, + 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, + 441, 442, 213, 351, 264, 332, 420, 614, 751, 608, + 607, 284, 293, 713, 749, 338, 369, 218, 423, 388, + 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, + 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, + 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, + 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, + 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, + 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, + 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, + 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, + 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, + 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, + 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, + 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, + 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, + 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, + 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, + 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, + 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, + 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, + 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, + 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, + 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, + 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, + 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, + 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, + 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, + 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, + 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, + 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, + 0, 0, 648, 0, 692, 0, 0, 0, 627, 621, + 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, + 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, + 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, + 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, + 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, + 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, + 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, + 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, + 197, 397, 1089, 217, 378, 0, 0, 0, 199, 415, + 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, + 328, 412, 413, 228, 446, 207, 431, 201, 752, 430, + 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, + 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, + 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, + 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, + 441, 442, 213, 351, 264, 332, 420, 614, 751, 608, + 607, 284, 293, 713, 749, 338, 369, 218, 423, 388, + 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, + 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, + 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, + 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, + 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, + 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, + 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, + 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, + 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, + 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, + 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, + 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, + 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, + 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, + 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, + 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, + 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, + 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, + 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, + 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, + 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, + 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, + 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, + 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, + 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, + 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, + 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, + 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, + 0, 0, 648, 0, 692, 0, 0, 0, 627, 621, + 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, + 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, + 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, + 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, + 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, + 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, + 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, + 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, + 197, 397, 605, 217, 378, 0, 0, 0, 199, 415, + 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, + 328, 412, 413, 228, 446, 207, 431, 201, 752, 430, + 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, + 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, + 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, + 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, + 441, 442, 213, 351, 264, 332, 420, 614, 751, 608, + 607, 284, 293, 713, 749, 338, 369, 218, 423, 388, + 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, + 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, + 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, + 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, + 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, + 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, + 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, + 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, + 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, + 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, + 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, + 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, + 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, + 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, + 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, + 329, 0, 0, 1391, 0, 508, 0, 0, 0, 240, + 0, 507, 0, 0, 0, 287, 0, 0, 1392, 343, + 0, 380, 226, 296, 294, 407, 250, 243, 239, 225, + 271, 302, 341, 398, 335, 551, 291, 0, 0, 389, + 314, 0, 0, 0, 0, 0, 542, 543, 0, 0, + 0, 0, 0, 0, 0, 0, 277, 224, 194, 326, + 390, 253, 69, 0, 0, 176, 177, 178, 529, 528, + 531, 532, 533, 534, 0, 0, 216, 530, 222, 535, + 536, 537, 0, 236, 275, 242, 235, 405, 0, 0, + 0, 505, 522, 0, 550, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 519, 520, 595, 0, 0, 0, + 565, 0, 521, 0, 0, 514, 515, 517, 516, 518, + 523, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 261, 0, 315, 564, 0, 0, 434, 0, 0, 562, + 0, 0, 0, 0, 0, 286, 0, 283, 190, 204, + 0, 0, 325, 364, 370, 0, 0, 0, 227, 0, + 368, 339, 421, 212, 251, 361, 344, 366, 0, 0, + 367, 292, 409, 356, 419, 435, 436, 234, 319, 427, + 402, 432, 444, 205, 231, 333, 395, 424, 386, 312, + 406, 282, 385, 259, 193, 290, 197, 397, 417, 217, + 378, 0, 0, 0, 199, 415, 394, 309, 279, 280, + 198, 0, 360, 238, 257, 229, 328, 412, 413, 228, + 446, 207, 431, 201, 208, 430, 321, 408, 416, 310, + 301, 200, 414, 308, 300, 285, 248, 267, 354, 295, + 355, 268, 317, 316, 318, 0, 195, 0, 391, 425, + 447, 214, 0, 0, 404, 440, 443, 0, 357, 215, + 258, 247, 353, 256, 288, 439, 441, 442, 213, 351, + 264, 332, 420, 320, 209, 270, 387, 284, 293, 0, + 0, 338, 369, 218, 423, 388, 552, 563, 558, 559, + 556, 557, 0, 555, 554, 553, 566, 544, 545, 546, + 547, 549, 0, 560, 561, 548, 189, 202, 289, 0, + 358, 254, 445, 429, 426, 0, 0, 233, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 191, 192, 203, 211, 220, 232, 245, 252, 262, 266, + 269, 272, 273, 276, 281, 298, 303, 304, 305, 306, + 322, 323, 324, 327, 330, 331, 334, 336, 337, 340, + 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, + 373, 374, 375, 376, 377, 381, 382, 383, 384, 392, + 396, 410, 411, 422, 433, 437, 263, 418, 438, 0, + 297, 0, 0, 299, 249, 265, 274, 0, 428, 393, + 206, 365, 255, 196, 223, 210, 230, 244, 246, 278, + 307, 313, 342, 345, 260, 241, 221, 362, 219, 379, + 399, 400, 401, 403, 311, 237, 329, 0, 0, 0, + 0, 508, 0, 0, 0, 240, 0, 507, 0, 0, + 0, 287, 0, 0, 0, 343, 0, 380, 226, 296, + 294, 407, 250, 243, 239, 225, 271, 302, 341, 398, + 335, 551, 291, 0, 0, 389, 314, 0, 0, 0, + 0, 0, 542, 543, 0, 0, 0, 0, 0, 0, + 1503, 0, 277, 224, 194, 326, 390, 253, 69, 0, + 0, 176, 177, 178, 529, 528, 531, 532, 533, 534, + 0, 0, 216, 530, 222, 535, 536, 537, 1504, 236, + 275, 242, 235, 405, 0, 0, 0, 505, 522, 0, + 550, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 519, 520, 0, 0, 0, 0, 565, 0, 521, 0, + 0, 514, 515, 517, 516, 518, 523, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 261, 0, 315, 564, + 0, 0, 434, 0, 0, 562, 0, 0, 0, 0, + 0, 286, 0, 283, 190, 204, 0, 0, 325, 364, + 370, 0, 0, 0, 227, 0, 368, 339, 421, 212, + 251, 361, 344, 366, 0, 0, 367, 292, 409, 356, + 419, 435, 436, 234, 319, 427, 402, 432, 444, 205, + 231, 333, 395, 424, 386, 312, 406, 282, 385, 259, + 193, 290, 197, 397, 417, 217, 378, 0, 0, 0, + 199, 415, 394, 309, 279, 280, 198, 0, 360, 238, + 257, 229, 328, 412, 413, 228, 446, 207, 431, 201, + 208, 430, 321, 408, 416, 310, 301, 200, 414, 308, + 300, 285, 248, 267, 354, 295, 355, 268, 317, 316, + 318, 0, 195, 0, 391, 425, 447, 214, 0, 0, + 404, 440, 443, 0, 357, 215, 258, 247, 353, 256, + 288, 439, 441, 442, 213, 351, 264, 332, 420, 320, + 209, 270, 387, 284, 293, 0, 0, 338, 369, 218, + 423, 388, 552, 563, 558, 559, 556, 557, 0, 555, + 554, 553, 566, 544, 545, 546, 547, 549, 0, 560, + 561, 548, 189, 202, 289, 0, 358, 254, 445, 429, + 426, 0, 0, 233, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 191, 192, 203, 211, + 220, 232, 245, 252, 262, 266, 269, 272, 273, 276, + 281, 298, 303, 304, 305, 306, 322, 323, 324, 327, + 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, + 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, + 377, 381, 382, 383, 384, 392, 396, 410, 411, 422, + 433, 437, 263, 418, 438, 0, 297, 0, 0, 299, + 249, 265, 274, 0, 428, 393, 206, 365, 255, 196, + 223, 210, 230, 244, 246, 278, 307, 313, 342, 345, + 260, 241, 221, 362, 219, 379, 399, 400, 401, 403, + 311, 237, 329, 0, 0, 0, 0, 508, 0, 0, + 0, 240, 0, 507, 0, 0, 0, 287, 0, 0, + 0, 343, 0, 380, 226, 296, 294, 407, 250, 243, + 239, 225, 271, 302, 341, 398, 335, 551, 291, 0, + 0, 389, 314, 0, 0, 0, 0, 0, 542, 543, + 0, 0, 0, 0, 0, 0, 0, 0, 277, 224, + 194, 326, 390, 253, 69, 0, 583, 176, 177, 178, + 529, 528, 531, 532, 533, 534, 0, 0, 216, 530, + 222, 535, 536, 537, 0, 236, 275, 242, 235, 405, + 0, 0, 0, 505, 522, 0, 550, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 519, 520, 0, 0, + 0, 0, 565, 0, 521, 0, 0, 514, 515, 517, + 516, 518, 523, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 261, 0, 315, 564, 0, 0, 434, 0, + 0, 562, 0, 0, 0, 0, 0, 286, 0, 283, + 190, 204, 0, 0, 325, 364, 370, 0, 0, 0, + 227, 0, 368, 339, 421, 212, 251, 361, 344, 366, + 0, 0, 367, 292, 409, 356, 419, 435, 436, 234, + 319, 427, 402, 432, 444, 205, 231, 333, 395, 424, + 386, 312, 406, 282, 385, 259, 193, 290, 197, 397, + 417, 217, 378, 0, 0, 0, 199, 415, 394, 309, + 279, 280, 198, 0, 360, 238, 257, 229, 328, 412, + 413, 228, 446, 207, 431, 201, 208, 430, 321, 408, + 416, 310, 301, 200, 414, 308, 300, 285, 248, 267, + 354, 295, 355, 268, 317, 316, 318, 0, 195, 0, + 391, 425, 447, 214, 0, 0, 404, 440, 443, 0, + 357, 215, 258, 247, 353, 256, 288, 439, 441, 442, + 213, 351, 264, 332, 420, 320, 209, 270, 387, 284, + 293, 0, 0, 338, 369, 218, 423, 388, 552, 563, + 558, 559, 556, 557, 0, 555, 554, 553, 566, 544, + 545, 546, 547, 549, 0, 560, 561, 548, 189, 202, + 289, 0, 358, 254, 445, 429, 426, 0, 0, 233, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 191, 192, 203, 211, 220, 232, 245, 252, + 262, 266, 269, 272, 273, 276, 281, 298, 303, 304, + 305, 306, 322, 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, - 384, 392, 396, 411, 412, 422, 433, 437, 264, 419, - 438, 0, 298, 685, 692, 300, 250, 266, 275, 700, - 428, 393, 207, 365, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 342, 345, 261, 242, 222, 362, - 220, 379, 399, 400, 401, 403, 312, 238, 732, 719, - 0, 0, 668, 735, 639, 657, 744, 659, 662, 702, - 619, 681, 330, 654, 0, 643, 615, 650, 616, 641, - 670, 241, 674, 638, 721, 684, 734, 288, 0, 621, - 644, 343, 704, 380, 227, 297, 295, 408, 251, 244, - 240, 226, 272, 303, 341, 398, 335, 741, 292, 691, - 0, 389, 315, 0, 0, 0, 672, 724, 679, 715, - 667, 703, 628, 690, 736, 655, 699, 737, 278, 225, - 195, 327, 390, 254, 0, 0, 0, 177, 178, 179, - 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, - 223, 696, 731, 652, 698, 237, 276, 243, 236, 405, - 701, 747, 614, 693, 0, 617, 620, 743, 727, 647, - 648, 0, 0, 0, 0, 0, 0, 0, 671, 680, - 712, 665, 0, 0, 0, 0, 0, 0, 0, 0, - 645, 0, 689, 0, 0, 0, 624, 618, 0, 0, - 0, 0, 669, 0, 0, 0, 627, 0, 646, 713, - 0, 612, 262, 622, 316, 717, 726, 666, 434, 730, - 664, 663, 733, 708, 625, 723, 658, 287, 623, 284, - 191, 205, 0, 656, 326, 364, 370, 722, 642, 651, - 228, 649, 368, 339, 421, 213, 252, 361, 344, 366, - 688, 706, 367, 293, 410, 356, 420, 435, 436, 235, - 320, 427, 402, 432, 444, 206, 232, 333, 395, 424, - 386, 313, 406, 407, 283, 385, 260, 194, 291, 198, - 397, 418, 218, 378, 0, 0, 0, 200, 416, 394, - 310, 280, 281, 199, 0, 360, 239, 258, 230, 329, - 413, 414, 229, 446, 208, 431, 202, 209, 430, 322, - 409, 417, 311, 302, 201, 415, 309, 301, 286, 249, - 268, 354, 296, 355, 269, 318, 317, 319, 0, 196, - 0, 391, 425, 447, 215, 637, 718, 404, 440, 443, - 0, 357, 216, 259, 248, 353, 257, 289, 439, 441, - 442, 214, 351, 265, 321, 210, 271, 387, 285, 294, - 710, 746, 338, 369, 219, 423, 388, 632, 636, 630, - 631, 682, 683, 633, 738, 739, 740, 714, 626, 0, - 634, 635, 0, 720, 728, 729, 687, 190, 203, 290, - 742, 358, 255, 445, 429, 426, 613, 629, 234, 640, - 0, 0, 653, 660, 661, 673, 675, 676, 677, 678, - 686, 694, 695, 697, 705, 707, 709, 711, 716, 725, - 745, 192, 193, 204, 212, 221, 233, 246, 253, 263, - 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, - 307, 323, 324, 325, 328, 331, 332, 334, 336, 337, - 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, - 372, 373, 374, 375, 376, 377, 381, 382, 383, 384, - 392, 396, 411, 412, 422, 433, 437, 264, 419, 438, - 0, 298, 685, 692, 300, 250, 266, 275, 700, 428, - 393, 207, 365, 256, 197, 224, 211, 231, 245, 247, - 279, 308, 314, 342, 345, 261, 242, 222, 362, 220, - 379, 399, 400, 401, 403, 312, 238, 732, 719, 0, - 0, 668, 735, 639, 657, 744, 659, 662, 702, 619, - 681, 330, 654, 0, 643, 615, 650, 616, 641, 670, - 241, 674, 638, 721, 684, 734, 288, 0, 621, 644, - 343, 704, 380, 227, 297, 295, 408, 251, 244, 240, - 226, 272, 303, 341, 398, 335, 741, 292, 691, 0, - 389, 315, 0, 0, 0, 672, 724, 679, 715, 667, - 703, 628, 690, 736, 655, 699, 737, 278, 225, 195, - 327, 390, 254, 0, 0, 0, 177, 178, 179, 0, - 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, - 696, 731, 652, 698, 237, 276, 243, 236, 405, 701, - 747, 614, 693, 0, 617, 620, 743, 727, 647, 648, - 0, 0, 0, 0, 0, 0, 0, 671, 680, 712, - 665, 0, 0, 0, 0, 0, 0, 0, 0, 645, - 0, 689, 0, 0, 0, 624, 618, 0, 0, 0, - 0, 669, 0, 0, 0, 627, 0, 646, 713, 0, - 612, 262, 622, 316, 717, 726, 666, 434, 730, 664, - 663, 733, 708, 625, 723, 658, 287, 623, 284, 191, - 205, 0, 656, 326, 364, 370, 722, 642, 651, 228, - 649, 368, 339, 421, 213, 252, 361, 344, 366, 688, - 706, 367, 293, 410, 356, 420, 435, 436, 235, 320, - 427, 402, 432, 444, 206, 232, 333, 395, 424, 386, - 313, 406, 407, 283, 385, 260, 194, 291, 198, 397, - 418, 218, 378, 0, 0, 0, 200, 416, 394, 310, - 280, 281, 199, 0, 360, 239, 258, 230, 329, 413, - 414, 229, 446, 208, 431, 202, 749, 430, 322, 409, - 417, 311, 302, 201, 415, 309, 301, 286, 249, 268, - 354, 296, 355, 269, 318, 317, 319, 0, 196, 0, - 391, 425, 447, 215, 637, 718, 404, 440, 443, 0, - 357, 216, 259, 248, 353, 257, 289, 439, 441, 442, - 214, 351, 265, 611, 748, 605, 604, 285, 294, 710, - 746, 338, 369, 219, 423, 388, 632, 636, 630, 631, - 682, 683, 633, 738, 739, 740, 714, 626, 0, 634, - 635, 0, 720, 728, 729, 687, 190, 203, 290, 742, - 358, 255, 445, 429, 426, 613, 629, 234, 640, 0, - 0, 653, 660, 661, 673, 675, 676, 677, 678, 686, - 694, 695, 697, 705, 707, 709, 711, 716, 725, 745, - 192, 193, 204, 212, 221, 233, 246, 253, 263, 267, - 270, 273, 274, 277, 282, 299, 304, 305, 306, 307, - 323, 324, 325, 328, 331, 332, 334, 336, 337, 340, + 384, 392, 396, 410, 411, 422, 433, 437, 263, 418, + 438, 0, 297, 0, 0, 299, 249, 265, 274, 0, + 428, 393, 206, 365, 255, 196, 223, 210, 230, 244, + 246, 278, 307, 313, 342, 345, 260, 241, 221, 362, + 219, 379, 399, 400, 401, 403, 311, 237, 329, 0, + 0, 0, 0, 508, 0, 0, 0, 240, 0, 507, + 0, 0, 0, 287, 0, 0, 0, 343, 0, 380, + 226, 296, 294, 407, 250, 243, 239, 225, 271, 302, + 341, 398, 335, 551, 291, 0, 0, 389, 314, 0, + 0, 0, 0, 0, 542, 543, 0, 0, 0, 0, + 0, 0, 0, 0, 277, 224, 194, 326, 390, 253, + 69, 0, 0, 176, 177, 178, 529, 528, 531, 532, + 533, 534, 0, 0, 216, 530, 222, 535, 536, 537, + 0, 236, 275, 242, 235, 405, 0, 0, 0, 505, + 522, 0, 550, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 519, 520, 595, 0, 0, 0, 565, 0, + 521, 0, 0, 514, 515, 517, 516, 518, 523, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 261, 0, + 315, 564, 0, 0, 434, 0, 0, 562, 0, 0, + 0, 0, 0, 286, 0, 283, 190, 204, 0, 0, + 325, 364, 370, 0, 0, 0, 227, 0, 368, 339, + 421, 212, 251, 361, 344, 366, 0, 0, 367, 292, + 409, 356, 419, 435, 436, 234, 319, 427, 402, 432, + 444, 205, 231, 333, 395, 424, 386, 312, 406, 282, + 385, 259, 193, 290, 197, 397, 417, 217, 378, 0, + 0, 0, 199, 415, 394, 309, 279, 280, 198, 0, + 360, 238, 257, 229, 328, 412, 413, 228, 446, 207, + 431, 201, 208, 430, 321, 408, 416, 310, 301, 200, + 414, 308, 300, 285, 248, 267, 354, 295, 355, 268, + 317, 316, 318, 0, 195, 0, 391, 425, 447, 214, + 0, 0, 404, 440, 443, 0, 357, 215, 258, 247, + 353, 256, 288, 439, 441, 442, 213, 351, 264, 332, + 420, 320, 209, 270, 387, 284, 293, 0, 0, 338, + 369, 218, 423, 388, 552, 563, 558, 559, 556, 557, + 0, 555, 554, 553, 566, 544, 545, 546, 547, 549, + 0, 560, 561, 548, 189, 202, 289, 0, 358, 254, + 445, 429, 426, 0, 0, 233, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, + 203, 211, 220, 232, 245, 252, 262, 266, 269, 272, + 273, 276, 281, 298, 303, 304, 305, 306, 322, 323, + 324, 327, 330, 331, 334, 336, 337, 340, 346, 347, + 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, + 375, 376, 377, 381, 382, 383, 384, 392, 396, 410, + 411, 422, 433, 437, 263, 418, 438, 0, 297, 0, + 0, 299, 249, 265, 274, 0, 428, 393, 206, 365, + 255, 196, 223, 210, 230, 244, 246, 278, 307, 313, + 342, 345, 260, 241, 221, 362, 219, 379, 399, 400, + 401, 403, 311, 237, 329, 0, 0, 0, 0, 508, + 0, 0, 0, 240, 0, 507, 0, 0, 0, 287, + 0, 0, 0, 343, 0, 380, 226, 296, 294, 407, + 250, 243, 239, 225, 271, 302, 341, 398, 335, 551, + 291, 0, 0, 389, 314, 0, 0, 0, 0, 0, + 542, 543, 0, 0, 0, 0, 0, 0, 0, 0, + 277, 224, 194, 326, 390, 253, 69, 0, 0, 176, + 177, 178, 529, 1409, 531, 532, 533, 534, 0, 0, + 216, 530, 222, 535, 536, 537, 0, 236, 275, 242, + 235, 405, 0, 0, 0, 505, 522, 0, 550, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 519, 520, + 595, 0, 0, 0, 565, 0, 521, 0, 0, 514, + 515, 517, 516, 518, 523, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 261, 0, 315, 564, 0, 0, + 434, 0, 0, 562, 0, 0, 0, 0, 0, 286, + 0, 283, 190, 204, 0, 0, 325, 364, 370, 0, + 0, 0, 227, 0, 368, 339, 421, 212, 251, 361, + 344, 366, 0, 0, 367, 292, 409, 356, 419, 435, + 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, + 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, + 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, + 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, + 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, + 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, + 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, + 195, 0, 391, 425, 447, 214, 0, 0, 404, 440, + 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, + 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, + 387, 284, 293, 0, 0, 338, 369, 218, 423, 388, + 552, 563, 558, 559, 556, 557, 0, 555, 554, 553, + 566, 544, 545, 546, 547, 549, 0, 560, 561, 548, + 189, 202, 289, 0, 358, 254, 445, 429, 426, 0, + 0, 233, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 191, 192, 203, 211, 220, 232, + 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, + 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, + 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, + 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, + 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, + 263, 418, 438, 0, 297, 0, 0, 299, 249, 265, + 274, 0, 428, 393, 206, 365, 255, 196, 223, 210, + 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, + 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, + 329, 0, 0, 0, 0, 508, 0, 0, 0, 240, + 0, 507, 0, 0, 0, 287, 0, 0, 0, 343, + 0, 380, 226, 296, 294, 407, 250, 243, 239, 225, + 271, 302, 341, 398, 335, 551, 291, 0, 0, 389, + 314, 0, 0, 0, 0, 0, 542, 543, 0, 0, + 0, 0, 0, 0, 0, 0, 277, 224, 194, 326, + 390, 253, 69, 0, 0, 176, 177, 178, 529, 1406, + 531, 532, 533, 534, 0, 0, 216, 530, 222, 535, + 536, 537, 0, 236, 275, 242, 235, 405, 0, 0, + 0, 505, 522, 0, 550, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 519, 520, 595, 0, 0, 0, + 565, 0, 521, 0, 0, 514, 515, 517, 516, 518, + 523, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 261, 0, 315, 564, 0, 0, 434, 0, 0, 562, + 0, 0, 0, 0, 0, 286, 0, 283, 190, 204, + 0, 0, 325, 364, 370, 0, 0, 0, 227, 0, + 368, 339, 421, 212, 251, 361, 344, 366, 0, 0, + 367, 292, 409, 356, 419, 435, 436, 234, 319, 427, + 402, 432, 444, 205, 231, 333, 395, 424, 386, 312, + 406, 282, 385, 259, 193, 290, 197, 397, 417, 217, + 378, 0, 0, 0, 199, 415, 394, 309, 279, 280, + 198, 0, 360, 238, 257, 229, 328, 412, 413, 228, + 446, 207, 431, 201, 208, 430, 321, 408, 416, 310, + 301, 200, 414, 308, 300, 285, 248, 267, 354, 295, + 355, 268, 317, 316, 318, 0, 195, 0, 391, 425, + 447, 214, 0, 0, 404, 440, 443, 0, 357, 215, + 258, 247, 353, 256, 288, 439, 441, 442, 213, 351, + 264, 332, 420, 320, 209, 270, 387, 284, 293, 0, + 0, 338, 369, 218, 423, 388, 552, 563, 558, 559, + 556, 557, 0, 555, 554, 553, 566, 544, 545, 546, + 547, 549, 0, 560, 561, 548, 189, 202, 289, 0, + 358, 254, 445, 429, 426, 0, 0, 233, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 191, 192, 203, 211, 220, 232, 245, 252, 262, 266, + 269, 272, 273, 276, 281, 298, 303, 304, 305, 306, + 322, 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, 384, 392, - 396, 411, 412, 422, 433, 437, 264, 419, 438, 0, - 298, 685, 692, 300, 250, 266, 275, 700, 428, 393, - 207, 365, 256, 197, 224, 211, 231, 245, 247, 279, - 308, 314, 342, 345, 261, 242, 222, 362, 220, 379, - 399, 400, 401, 403, 312, 238, 732, 719, 0, 0, - 668, 735, 639, 657, 744, 659, 662, 702, 619, 681, - 330, 654, 0, 643, 615, 650, 616, 641, 670, 241, - 674, 638, 721, 684, 734, 288, 0, 621, 644, 343, - 704, 380, 227, 297, 295, 408, 251, 244, 240, 226, - 272, 303, 341, 398, 335, 741, 292, 691, 0, 389, - 315, 0, 0, 0, 672, 724, 679, 715, 667, 703, - 628, 690, 736, 655, 699, 737, 278, 225, 195, 327, - 390, 254, 0, 0, 0, 177, 178, 179, 0, 0, - 0, 0, 0, 0, 0, 0, 217, 0, 223, 696, - 731, 652, 698, 237, 276, 243, 236, 405, 701, 747, - 614, 693, 0, 617, 620, 743, 727, 647, 648, 0, - 0, 0, 0, 0, 0, 0, 671, 680, 712, 665, - 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, - 689, 0, 0, 0, 624, 618, 0, 0, 0, 0, - 669, 0, 0, 0, 627, 0, 646, 713, 0, 612, - 262, 622, 316, 717, 726, 666, 434, 730, 664, 663, - 733, 708, 625, 723, 658, 287, 623, 284, 191, 205, - 0, 656, 326, 364, 370, 722, 642, 651, 228, 649, - 368, 339, 421, 213, 252, 361, 344, 366, 688, 706, - 367, 293, 410, 356, 420, 435, 436, 235, 320, 427, - 402, 432, 444, 206, 232, 333, 395, 424, 386, 313, - 406, 407, 283, 385, 260, 194, 291, 198, 397, 1082, - 218, 378, 0, 0, 0, 200, 416, 394, 310, 280, - 281, 199, 0, 360, 239, 258, 230, 329, 413, 414, - 229, 446, 208, 431, 202, 749, 430, 322, 409, 417, - 311, 302, 201, 415, 309, 301, 286, 249, 268, 354, - 296, 355, 269, 318, 317, 319, 0, 196, 0, 391, - 425, 447, 215, 637, 718, 404, 440, 443, 0, 357, - 216, 259, 248, 353, 257, 289, 439, 441, 442, 214, - 351, 265, 611, 748, 605, 604, 285, 294, 710, 746, - 338, 369, 219, 423, 388, 632, 636, 630, 631, 682, - 683, 633, 738, 739, 740, 714, 626, 0, 634, 635, - 0, 720, 728, 729, 687, 190, 203, 290, 742, 358, - 255, 445, 429, 426, 613, 629, 234, 640, 0, 0, - 653, 660, 661, 673, 675, 676, 677, 678, 686, 694, - 695, 697, 705, 707, 709, 711, 716, 725, 745, 192, - 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, - 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, - 324, 325, 328, 331, 332, 334, 336, 337, 340, 346, + 396, 410, 411, 422, 433, 437, 263, 418, 438, 0, + 297, 0, 0, 299, 249, 265, 274, 0, 428, 393, + 206, 365, 255, 196, 223, 210, 230, 244, 246, 278, + 307, 313, 342, 345, 260, 241, 221, 362, 219, 379, + 399, 400, 401, 403, 311, 237, 576, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, + 0, 0, 0, 0, 508, 0, 0, 0, 240, 0, + 507, 0, 0, 0, 287, 0, 0, 0, 343, 0, + 380, 226, 296, 294, 407, 250, 243, 239, 225, 271, + 302, 341, 398, 335, 551, 291, 0, 0, 389, 314, + 0, 0, 0, 0, 0, 542, 543, 0, 0, 0, + 0, 0, 0, 0, 0, 277, 224, 194, 326, 390, + 253, 69, 0, 0, 176, 177, 178, 529, 528, 531, + 532, 533, 534, 0, 0, 216, 530, 222, 535, 536, + 537, 0, 236, 275, 242, 235, 405, 0, 0, 0, + 505, 522, 0, 550, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 519, 520, 0, 0, 0, 0, 565, + 0, 521, 0, 0, 514, 515, 517, 516, 518, 523, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, + 0, 315, 564, 0, 0, 434, 0, 0, 562, 0, + 0, 0, 0, 0, 286, 0, 283, 190, 204, 0, + 0, 325, 364, 370, 0, 0, 0, 227, 0, 368, + 339, 421, 212, 251, 361, 344, 366, 0, 0, 367, + 292, 409, 356, 419, 435, 436, 234, 319, 427, 402, + 432, 444, 205, 231, 333, 395, 424, 386, 312, 406, + 282, 385, 259, 193, 290, 197, 397, 417, 217, 378, + 0, 0, 0, 199, 415, 394, 309, 279, 280, 198, + 0, 360, 238, 257, 229, 328, 412, 413, 228, 446, + 207, 431, 201, 208, 430, 321, 408, 416, 310, 301, + 200, 414, 308, 300, 285, 248, 267, 354, 295, 355, + 268, 317, 316, 318, 0, 195, 0, 391, 425, 447, + 214, 0, 0, 404, 440, 443, 0, 357, 215, 258, + 247, 353, 256, 288, 439, 441, 442, 213, 351, 264, + 332, 420, 320, 209, 270, 387, 284, 293, 0, 0, + 338, 369, 218, 423, 388, 552, 563, 558, 559, 556, + 557, 0, 555, 554, 553, 566, 544, 545, 546, 547, + 549, 0, 560, 561, 548, 189, 202, 289, 0, 358, + 254, 445, 429, 426, 0, 0, 233, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, + 192, 203, 211, 220, 232, 245, 252, 262, 266, 269, + 272, 273, 276, 281, 298, 303, 304, 305, 306, 322, + 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, 384, 392, 396, - 411, 412, 422, 433, 437, 264, 419, 438, 0, 298, - 685, 692, 300, 250, 266, 275, 700, 428, 393, 207, - 365, 256, 197, 224, 211, 231, 245, 247, 279, 308, - 314, 342, 345, 261, 242, 222, 362, 220, 379, 399, - 400, 401, 403, 312, 238, 732, 719, 0, 0, 668, - 735, 639, 657, 744, 659, 662, 702, 619, 681, 330, - 654, 0, 643, 615, 650, 616, 641, 670, 241, 674, - 638, 721, 684, 734, 288, 0, 621, 644, 343, 704, - 380, 227, 297, 295, 408, 251, 244, 240, 226, 272, - 303, 341, 398, 335, 741, 292, 691, 0, 389, 315, - 0, 0, 0, 672, 724, 679, 715, 667, 703, 628, - 690, 736, 655, 699, 737, 278, 225, 195, 327, 390, - 254, 0, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 696, 731, - 652, 698, 237, 276, 243, 236, 405, 701, 747, 614, - 693, 0, 617, 620, 743, 727, 647, 648, 0, 0, - 0, 0, 0, 0, 0, 671, 680, 712, 665, 0, - 0, 0, 0, 0, 0, 0, 0, 645, 0, 689, - 0, 0, 0, 624, 618, 0, 0, 0, 0, 669, - 0, 0, 0, 627, 0, 646, 713, 0, 612, 262, - 622, 316, 717, 726, 666, 434, 730, 664, 663, 733, - 708, 625, 723, 658, 287, 623, 284, 191, 205, 0, - 656, 326, 364, 370, 722, 642, 651, 228, 649, 368, - 339, 421, 213, 252, 361, 344, 366, 688, 706, 367, - 293, 410, 356, 420, 435, 436, 235, 320, 427, 402, - 432, 444, 206, 232, 333, 395, 424, 386, 313, 406, - 407, 283, 385, 260, 194, 291, 198, 397, 602, 218, - 378, 0, 0, 0, 200, 416, 394, 310, 280, 281, - 199, 0, 360, 239, 258, 230, 329, 413, 414, 229, - 446, 208, 431, 202, 749, 430, 322, 409, 417, 311, - 302, 201, 415, 309, 301, 286, 249, 268, 354, 296, - 355, 269, 318, 317, 319, 0, 196, 0, 391, 425, - 447, 215, 637, 718, 404, 440, 443, 0, 357, 216, - 259, 248, 353, 257, 289, 439, 441, 442, 214, 351, - 265, 611, 748, 605, 604, 285, 294, 710, 746, 338, - 369, 219, 423, 388, 632, 636, 630, 631, 682, 683, - 633, 738, 739, 740, 714, 626, 0, 634, 635, 0, - 720, 728, 729, 687, 190, 203, 290, 742, 358, 255, - 445, 429, 426, 613, 629, 234, 640, 0, 0, 653, - 660, 661, 673, 675, 676, 677, 678, 686, 694, 695, - 697, 705, 707, 709, 711, 716, 725, 745, 192, 193, - 204, 212, 221, 233, 246, 253, 263, 267, 270, 273, - 274, 277, 282, 299, 304, 305, 306, 307, 323, 324, - 325, 328, 331, 332, 334, 336, 337, 340, 346, 347, - 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, - 375, 376, 377, 381, 382, 383, 384, 392, 396, 411, - 412, 422, 433, 437, 264, 419, 438, 0, 298, 685, - 692, 300, 250, 266, 275, 700, 428, 393, 207, 365, - 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, - 342, 345, 261, 242, 222, 362, 220, 379, 399, 400, - 401, 403, 312, 238, 330, 0, 0, 1380, 0, 505, - 0, 0, 0, 241, 0, 504, 0, 0, 0, 288, - 0, 0, 1381, 343, 0, 380, 227, 297, 295, 408, - 251, 244, 240, 226, 272, 303, 341, 398, 335, 548, - 292, 0, 0, 389, 315, 0, 0, 0, 0, 0, - 539, 540, 0, 0, 0, 0, 0, 0, 0, 0, - 278, 225, 195, 327, 390, 254, 69, 0, 0, 177, - 178, 179, 526, 525, 528, 529, 530, 531, 0, 0, - 217, 527, 223, 532, 533, 534, 0, 237, 276, 243, - 236, 405, 0, 0, 0, 502, 519, 0, 547, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 516, 517, - 592, 0, 0, 0, 562, 0, 518, 0, 0, 511, - 512, 514, 513, 515, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 316, 561, 0, 0, - 434, 0, 0, 559, 0, 0, 0, 0, 0, 287, - 0, 284, 191, 205, 0, 0, 326, 364, 370, 0, - 0, 0, 228, 0, 368, 339, 421, 213, 252, 361, - 344, 366, 0, 0, 367, 293, 410, 356, 420, 435, - 436, 235, 320, 427, 402, 432, 444, 206, 232, 333, - 395, 424, 386, 313, 406, 407, 283, 385, 260, 194, - 291, 198, 397, 418, 218, 378, 0, 0, 0, 200, - 416, 394, 310, 280, 281, 199, 0, 360, 239, 258, - 230, 329, 413, 414, 229, 446, 208, 431, 202, 209, - 430, 322, 409, 417, 311, 302, 201, 415, 309, 301, - 286, 249, 268, 354, 296, 355, 269, 318, 317, 319, - 0, 196, 0, 391, 425, 447, 215, 0, 0, 404, - 440, 443, 0, 357, 216, 259, 248, 353, 257, 289, - 439, 441, 442, 214, 351, 265, 321, 210, 271, 387, - 285, 294, 0, 0, 338, 369, 219, 423, 388, 549, - 560, 555, 556, 553, 554, 0, 552, 551, 550, 563, - 541, 542, 543, 544, 546, 0, 557, 558, 545, 190, - 203, 290, 0, 358, 255, 445, 429, 426, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, - 305, 306, 307, 323, 324, 325, 328, 331, 332, 334, - 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, - 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, - 383, 384, 392, 396, 411, 412, 422, 433, 437, 264, - 419, 438, 0, 298, 0, 0, 300, 250, 266, 275, - 0, 428, 393, 207, 365, 256, 197, 224, 211, 231, - 245, 247, 279, 308, 314, 342, 345, 261, 242, 222, - 362, 220, 379, 399, 400, 401, 403, 312, 238, 330, - 0, 0, 0, 0, 505, 0, 0, 0, 241, 0, - 504, 0, 0, 0, 288, 0, 0, 0, 343, 0, - 380, 227, 297, 295, 408, 251, 244, 240, 226, 272, - 303, 341, 398, 335, 548, 292, 0, 0, 389, 315, - 0, 0, 0, 0, 0, 539, 540, 0, 0, 0, - 0, 0, 0, 1492, 0, 278, 225, 195, 327, 390, - 254, 69, 0, 0, 177, 178, 179, 526, 525, 528, - 529, 530, 531, 0, 0, 217, 527, 223, 532, 533, - 534, 1493, 237, 276, 243, 236, 405, 0, 0, 0, - 502, 519, 0, 547, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 516, 517, 0, 0, 0, 0, 562, - 0, 518, 0, 0, 511, 512, 514, 513, 515, 520, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, - 0, 316, 561, 0, 0, 434, 0, 0, 559, 0, - 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, - 0, 326, 364, 370, 0, 0, 0, 228, 0, 368, - 339, 421, 213, 252, 361, 344, 366, 0, 0, 367, - 293, 410, 356, 420, 435, 436, 235, 320, 427, 402, - 432, 444, 206, 232, 333, 395, 424, 386, 313, 406, - 407, 283, 385, 260, 194, 291, 198, 397, 418, 218, - 378, 0, 0, 0, 200, 416, 394, 310, 280, 281, - 199, 0, 360, 239, 258, 230, 329, 413, 414, 229, - 446, 208, 431, 202, 209, 430, 322, 409, 417, 311, - 302, 201, 415, 309, 301, 286, 249, 268, 354, 296, - 355, 269, 318, 317, 319, 0, 196, 0, 391, 425, - 447, 215, 0, 0, 404, 440, 443, 0, 357, 216, - 259, 248, 353, 257, 289, 439, 441, 442, 214, 351, - 265, 321, 210, 271, 387, 285, 294, 0, 0, 338, - 369, 219, 423, 388, 549, 560, 555, 556, 553, 554, - 0, 552, 551, 550, 563, 541, 542, 543, 544, 546, - 0, 557, 558, 545, 190, 203, 290, 0, 358, 255, - 445, 429, 426, 0, 0, 234, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, - 204, 212, 221, 233, 246, 253, 263, 267, 270, 273, - 274, 277, 282, 299, 304, 305, 306, 307, 323, 324, - 325, 328, 331, 332, 334, 336, 337, 340, 346, 347, - 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, - 375, 376, 377, 381, 382, 383, 384, 392, 396, 411, - 412, 422, 433, 437, 264, 419, 438, 0, 298, 0, - 0, 300, 250, 266, 275, 0, 428, 393, 207, 365, - 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, - 342, 345, 261, 242, 222, 362, 220, 379, 399, 400, - 401, 403, 312, 238, 330, 0, 0, 0, 0, 505, - 0, 0, 0, 241, 0, 504, 0, 0, 0, 288, - 0, 0, 0, 343, 0, 380, 227, 297, 295, 408, - 251, 244, 240, 226, 272, 303, 341, 398, 335, 548, - 292, 0, 0, 389, 315, 0, 0, 0, 0, 0, - 539, 540, 0, 0, 0, 0, 0, 0, 0, 0, - 278, 225, 195, 327, 390, 254, 69, 0, 580, 177, - 178, 179, 526, 525, 528, 529, 530, 531, 0, 0, - 217, 527, 223, 532, 533, 534, 0, 237, 276, 243, - 236, 405, 0, 0, 0, 502, 519, 0, 547, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 516, 517, - 0, 0, 0, 0, 562, 0, 518, 0, 0, 511, - 512, 514, 513, 515, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 316, 561, 0, 0, - 434, 0, 0, 559, 0, 0, 0, 0, 0, 287, - 0, 284, 191, 205, 0, 0, 326, 364, 370, 0, - 0, 0, 228, 0, 368, 339, 421, 213, 252, 361, - 344, 366, 0, 0, 367, 293, 410, 356, 420, 435, - 436, 235, 320, 427, 402, 432, 444, 206, 232, 333, - 395, 424, 386, 313, 406, 407, 283, 385, 260, 194, - 291, 198, 397, 418, 218, 378, 0, 0, 0, 200, - 416, 394, 310, 280, 281, 199, 0, 360, 239, 258, - 230, 329, 413, 414, 229, 446, 208, 431, 202, 209, - 430, 322, 409, 417, 311, 302, 201, 415, 309, 301, - 286, 249, 268, 354, 296, 355, 269, 318, 317, 319, - 0, 196, 0, 391, 425, 447, 215, 0, 0, 404, - 440, 443, 0, 357, 216, 259, 248, 353, 257, 289, - 439, 441, 442, 214, 351, 265, 321, 210, 271, 387, - 285, 294, 0, 0, 338, 369, 219, 423, 388, 549, - 560, 555, 556, 553, 554, 0, 552, 551, 550, 563, - 541, 542, 543, 544, 546, 0, 557, 558, 545, 190, - 203, 290, 0, 358, 255, 445, 429, 426, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, - 305, 306, 307, 323, 324, 325, 328, 331, 332, 334, - 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, - 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, - 383, 384, 392, 396, 411, 412, 422, 433, 437, 264, - 419, 438, 0, 298, 0, 0, 300, 250, 266, 275, - 0, 428, 393, 207, 365, 256, 197, 224, 211, 231, - 245, 247, 279, 308, 314, 342, 345, 261, 242, 222, - 362, 220, 379, 399, 400, 401, 403, 312, 238, 330, - 0, 0, 0, 0, 505, 0, 0, 0, 241, 0, - 504, 0, 0, 0, 288, 0, 0, 0, 343, 0, - 380, 227, 297, 295, 408, 251, 244, 240, 226, 272, - 303, 341, 398, 335, 548, 292, 0, 0, 389, 315, - 0, 0, 0, 0, 0, 539, 540, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 225, 195, 327, 390, - 254, 69, 0, 0, 177, 178, 179, 526, 525, 528, - 529, 530, 531, 0, 0, 217, 527, 223, 532, 533, - 534, 0, 237, 276, 243, 236, 405, 0, 0, 0, - 502, 519, 0, 547, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 516, 517, 592, 0, 0, 0, 562, - 0, 518, 0, 0, 511, 512, 514, 513, 515, 520, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, - 0, 316, 561, 0, 0, 434, 0, 0, 559, 0, - 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, - 0, 326, 364, 370, 0, 0, 0, 228, 0, 368, - 339, 421, 213, 252, 361, 344, 366, 0, 0, 367, - 293, 410, 356, 420, 435, 436, 235, 320, 427, 402, - 432, 444, 206, 232, 333, 395, 424, 386, 313, 406, - 407, 283, 385, 260, 194, 291, 198, 397, 418, 218, - 378, 0, 0, 0, 200, 416, 394, 310, 280, 281, - 199, 0, 360, 239, 258, 230, 329, 413, 414, 229, - 446, 208, 431, 202, 209, 430, 322, 409, 417, 311, - 302, 201, 415, 309, 301, 286, 249, 268, 354, 296, - 355, 269, 318, 317, 319, 0, 196, 0, 391, 425, - 447, 215, 0, 0, 404, 440, 443, 0, 357, 216, - 259, 248, 353, 257, 289, 439, 441, 442, 214, 351, - 265, 321, 210, 271, 387, 285, 294, 0, 0, 338, - 369, 219, 423, 388, 549, 560, 555, 556, 553, 554, - 0, 552, 551, 550, 563, 541, 542, 543, 544, 546, - 0, 557, 558, 545, 190, 203, 290, 0, 358, 255, - 445, 429, 426, 0, 0, 234, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, - 204, 212, 221, 233, 246, 253, 263, 267, 270, 273, - 274, 277, 282, 299, 304, 305, 306, 307, 323, 324, - 325, 328, 331, 332, 334, 336, 337, 340, 346, 347, - 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, - 375, 376, 377, 381, 382, 383, 384, 392, 396, 411, - 412, 422, 433, 437, 264, 419, 438, 0, 298, 0, - 0, 300, 250, 266, 275, 0, 428, 393, 207, 365, - 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, - 342, 345, 261, 242, 222, 362, 220, 379, 399, 400, - 401, 403, 312, 238, 330, 0, 0, 0, 0, 505, - 0, 0, 0, 241, 0, 504, 0, 0, 0, 288, - 0, 0, 0, 343, 0, 380, 227, 297, 295, 408, - 251, 244, 240, 226, 272, 303, 341, 398, 335, 548, - 292, 0, 0, 389, 315, 0, 0, 0, 0, 0, - 539, 540, 0, 0, 0, 0, 0, 0, 0, 0, - 278, 225, 195, 327, 390, 254, 69, 0, 0, 177, - 178, 179, 526, 1398, 528, 529, 530, 531, 0, 0, - 217, 527, 223, 532, 533, 534, 0, 237, 276, 243, - 236, 405, 0, 0, 0, 502, 519, 0, 547, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 516, 517, - 592, 0, 0, 0, 562, 0, 518, 0, 0, 511, - 512, 514, 513, 515, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 316, 561, 0, 0, - 434, 0, 0, 559, 0, 0, 0, 0, 0, 287, - 0, 284, 191, 205, 0, 0, 326, 364, 370, 0, - 0, 0, 228, 0, 368, 339, 421, 213, 252, 361, - 344, 366, 0, 0, 367, 293, 410, 356, 420, 435, - 436, 235, 320, 427, 402, 432, 444, 206, 232, 333, - 395, 424, 386, 313, 406, 407, 283, 385, 260, 194, - 291, 198, 397, 418, 218, 378, 0, 0, 0, 200, - 416, 394, 310, 280, 281, 199, 0, 360, 239, 258, - 230, 329, 413, 414, 229, 446, 208, 431, 202, 209, - 430, 322, 409, 417, 311, 302, 201, 415, 309, 301, - 286, 249, 268, 354, 296, 355, 269, 318, 317, 319, - 0, 196, 0, 391, 425, 447, 215, 0, 0, 404, - 440, 443, 0, 357, 216, 259, 248, 353, 257, 289, - 439, 441, 442, 214, 351, 265, 321, 210, 271, 387, - 285, 294, 0, 0, 338, 369, 219, 423, 388, 549, - 560, 555, 556, 553, 554, 0, 552, 551, 550, 563, - 541, 542, 543, 544, 546, 0, 557, 558, 545, 190, - 203, 290, 0, 358, 255, 445, 429, 426, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, - 305, 306, 307, 323, 324, 325, 328, 331, 332, 334, - 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, - 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, - 383, 384, 392, 396, 411, 412, 422, 433, 437, 264, - 419, 438, 0, 298, 0, 0, 300, 250, 266, 275, - 0, 428, 393, 207, 365, 256, 197, 224, 211, 231, - 245, 247, 279, 308, 314, 342, 345, 261, 242, 222, - 362, 220, 379, 399, 400, 401, 403, 312, 238, 330, - 0, 0, 0, 0, 505, 0, 0, 0, 241, 0, - 504, 0, 0, 0, 288, 0, 0, 0, 343, 0, - 380, 227, 297, 295, 408, 251, 244, 240, 226, 272, - 303, 341, 398, 335, 548, 292, 0, 0, 389, 315, - 0, 0, 0, 0, 0, 539, 540, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 225, 195, 327, 390, - 254, 69, 0, 0, 177, 178, 179, 526, 1395, 528, - 529, 530, 531, 0, 0, 217, 527, 223, 532, 533, - 534, 0, 237, 276, 243, 236, 405, 0, 0, 0, - 502, 519, 0, 547, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 516, 517, 592, 0, 0, 0, 562, - 0, 518, 0, 0, 511, 512, 514, 513, 515, 520, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, - 0, 316, 561, 0, 0, 434, 0, 0, 559, 0, - 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, - 0, 326, 364, 370, 0, 0, 0, 228, 0, 368, - 339, 421, 213, 252, 361, 344, 366, 0, 0, 367, - 293, 410, 356, 420, 435, 436, 235, 320, 427, 402, - 432, 444, 206, 232, 333, 395, 424, 386, 313, 406, - 407, 283, 385, 260, 194, 291, 198, 397, 418, 218, - 378, 0, 0, 0, 200, 416, 394, 310, 280, 281, - 199, 0, 360, 239, 258, 230, 329, 413, 414, 229, - 446, 208, 431, 202, 209, 430, 322, 409, 417, 311, - 302, 201, 415, 309, 301, 286, 249, 268, 354, 296, - 355, 269, 318, 317, 319, 0, 196, 0, 391, 425, - 447, 215, 0, 0, 404, 440, 443, 0, 357, 216, - 259, 248, 353, 257, 289, 439, 441, 442, 214, 351, - 265, 321, 210, 271, 387, 285, 294, 0, 0, 338, - 369, 219, 423, 388, 549, 560, 555, 556, 553, 554, - 0, 552, 551, 550, 563, 541, 542, 543, 544, 546, - 0, 557, 558, 545, 190, 203, 290, 0, 358, 255, - 445, 429, 426, 0, 0, 234, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, - 204, 212, 221, 233, 246, 253, 263, 267, 270, 273, - 274, 277, 282, 299, 304, 305, 306, 307, 323, 324, - 325, 328, 331, 332, 334, 336, 337, 340, 346, 347, - 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, - 375, 376, 377, 381, 382, 383, 384, 392, 396, 411, - 412, 422, 433, 437, 264, 419, 438, 0, 298, 0, - 0, 300, 250, 266, 275, 0, 428, 393, 207, 365, - 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, - 342, 345, 261, 242, 222, 362, 220, 379, 399, 400, - 401, 403, 312, 238, 573, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, - 0, 0, 505, 0, 0, 0, 241, 0, 504, 0, - 0, 0, 288, 0, 0, 0, 343, 0, 380, 227, - 297, 295, 408, 251, 244, 240, 226, 272, 303, 341, - 398, 335, 548, 292, 0, 0, 389, 315, 0, 0, - 0, 0, 0, 539, 540, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 225, 195, 327, 390, 254, 69, - 0, 0, 177, 178, 179, 526, 525, 528, 529, 530, - 531, 0, 0, 217, 527, 223, 532, 533, 534, 0, - 237, 276, 243, 236, 405, 0, 0, 0, 502, 519, - 0, 547, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 516, 517, 0, 0, 0, 0, 562, 0, 518, - 0, 0, 511, 512, 514, 513, 515, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, - 561, 0, 0, 434, 0, 0, 559, 0, 0, 0, - 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, - 364, 370, 0, 0, 0, 228, 0, 368, 339, 421, - 213, 252, 361, 344, 366, 0, 0, 367, 293, 410, - 356, 420, 435, 436, 235, 320, 427, 402, 432, 444, - 206, 232, 333, 395, 424, 386, 313, 406, 407, 283, - 385, 260, 194, 291, 198, 397, 418, 218, 378, 0, - 0, 0, 200, 416, 394, 310, 280, 281, 199, 0, - 360, 239, 258, 230, 329, 413, 414, 229, 446, 208, - 431, 202, 209, 430, 322, 409, 417, 311, 302, 201, - 415, 309, 301, 286, 249, 268, 354, 296, 355, 269, - 318, 317, 319, 0, 196, 0, 391, 425, 447, 215, - 0, 0, 404, 440, 443, 0, 357, 216, 259, 248, - 353, 257, 289, 439, 441, 442, 214, 351, 265, 321, - 210, 271, 387, 285, 294, 0, 0, 338, 369, 219, - 423, 388, 549, 560, 555, 556, 553, 554, 0, 552, - 551, 550, 563, 541, 542, 543, 544, 546, 0, 557, - 558, 545, 190, 203, 290, 0, 358, 255, 445, 429, - 426, 0, 0, 234, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, - 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, - 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, - 331, 332, 334, 336, 337, 340, 346, 347, 348, 349, - 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, - 377, 381, 382, 383, 384, 392, 396, 411, 412, 422, - 433, 437, 264, 419, 438, 0, 298, 0, 0, 300, - 250, 266, 275, 0, 428, 393, 207, 365, 256, 197, - 224, 211, 231, 245, 247, 279, 308, 314, 342, 345, - 261, 242, 222, 362, 220, 379, 399, 400, 401, 403, - 312, 238, 330, 0, 0, 0, 0, 505, 0, 0, - 0, 241, 0, 504, 0, 0, 0, 288, 0, 0, - 0, 343, 0, 380, 227, 297, 295, 408, 251, 244, - 240, 226, 272, 303, 341, 398, 335, 548, 292, 0, - 0, 389, 315, 0, 0, 0, 0, 0, 539, 540, - 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, - 195, 327, 390, 254, 69, 0, 0, 177, 178, 179, - 526, 525, 528, 529, 530, 531, 0, 0, 217, 527, - 223, 532, 533, 534, 0, 237, 276, 243, 236, 405, - 0, 0, 0, 502, 519, 0, 547, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 516, 517, 0, 0, - 0, 0, 562, 0, 518, 0, 0, 511, 512, 514, - 513, 515, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 316, 561, 0, 0, 434, 0, - 0, 559, 0, 0, 0, 0, 0, 287, 0, 284, - 191, 205, 0, 0, 326, 364, 370, 0, 0, 0, - 228, 0, 368, 339, 421, 213, 252, 361, 344, 366, - 0, 0, 367, 293, 410, 356, 420, 435, 436, 235, - 320, 427, 402, 432, 444, 206, 232, 333, 395, 424, - 386, 313, 406, 407, 283, 385, 260, 194, 291, 198, - 397, 418, 218, 378, 0, 0, 0, 200, 416, 394, - 310, 280, 281, 199, 0, 360, 239, 258, 230, 329, - 413, 414, 229, 446, 208, 431, 202, 209, 430, 322, - 409, 417, 311, 302, 201, 415, 309, 301, 286, 249, - 268, 354, 296, 355, 269, 318, 317, 319, 0, 196, - 0, 391, 425, 447, 215, 0, 0, 404, 440, 443, - 0, 357, 216, 259, 248, 353, 257, 289, 439, 441, - 442, 214, 351, 265, 321, 210, 271, 387, 285, 294, - 0, 0, 338, 369, 219, 423, 388, 549, 560, 555, - 556, 553, 554, 0, 552, 551, 550, 563, 541, 542, - 543, 544, 546, 0, 557, 558, 545, 190, 203, 290, - 0, 358, 255, 445, 429, 426, 0, 0, 234, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, - 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, - 307, 323, 324, 325, 328, 331, 332, 334, 336, 337, - 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, - 372, 373, 374, 375, 376, 377, 381, 382, 383, 384, - 392, 396, 411, 412, 422, 433, 437, 264, 419, 438, - 0, 298, 0, 0, 300, 250, 266, 275, 0, 428, - 393, 207, 365, 256, 197, 224, 211, 231, 245, 247, - 279, 308, 314, 342, 345, 261, 242, 222, 362, 220, - 379, 399, 400, 401, 403, 312, 238, 330, 0, 0, - 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, - 0, 0, 288, 0, 0, 0, 343, 0, 380, 227, - 297, 295, 408, 251, 244, 240, 226, 272, 303, 341, - 398, 335, 548, 292, 0, 0, 389, 315, 0, 0, - 0, 0, 0, 539, 540, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 225, 195, 327, 390, 254, 69, - 0, 0, 177, 178, 179, 526, 525, 528, 529, 530, - 531, 0, 0, 217, 527, 223, 532, 533, 534, 0, - 237, 276, 243, 236, 405, 0, 0, 0, 0, 519, - 0, 547, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 516, 517, 0, 0, 0, 0, 562, 0, 518, - 0, 0, 511, 512, 514, 513, 515, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, - 561, 0, 0, 434, 0, 0, 559, 0, 0, 0, - 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, - 364, 370, 0, 0, 0, 228, 0, 368, 339, 421, - 213, 252, 361, 344, 366, 2152, 0, 367, 293, 410, - 356, 420, 435, 436, 235, 320, 427, 402, 432, 444, - 206, 232, 333, 395, 424, 386, 313, 406, 407, 283, - 385, 260, 194, 291, 198, 397, 418, 218, 378, 0, - 0, 0, 200, 416, 394, 310, 280, 281, 199, 0, - 360, 239, 258, 230, 329, 413, 414, 229, 446, 208, - 431, 202, 209, 430, 322, 409, 417, 311, 302, 201, - 415, 309, 301, 286, 249, 268, 354, 296, 355, 269, - 318, 317, 319, 0, 196, 0, 391, 425, 447, 215, - 0, 0, 404, 440, 443, 0, 357, 216, 259, 248, - 353, 257, 289, 439, 441, 442, 214, 351, 265, 321, - 210, 271, 387, 285, 294, 0, 0, 338, 369, 219, - 423, 388, 549, 560, 555, 556, 553, 554, 0, 552, - 551, 550, 563, 541, 542, 543, 544, 546, 0, 557, - 558, 545, 190, 203, 290, 0, 358, 255, 445, 429, - 426, 0, 0, 234, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, - 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, - 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, - 331, 332, 334, 336, 337, 340, 346, 347, 348, 349, - 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, - 377, 381, 382, 383, 384, 392, 396, 411, 412, 422, - 433, 437, 264, 419, 438, 0, 298, 0, 0, 300, - 250, 266, 275, 0, 428, 393, 207, 365, 256, 197, - 224, 211, 231, 245, 247, 279, 308, 314, 342, 345, - 261, 242, 222, 362, 220, 379, 399, 400, 401, 403, - 312, 238, 330, 0, 0, 0, 0, 0, 0, 0, - 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, - 0, 343, 0, 380, 227, 297, 295, 408, 251, 244, - 240, 226, 272, 303, 341, 398, 335, 548, 292, 0, - 0, 389, 315, 0, 0, 0, 0, 0, 539, 540, - 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, - 195, 327, 390, 254, 69, 0, 580, 177, 178, 179, - 526, 525, 528, 529, 530, 531, 0, 0, 217, 527, - 223, 532, 533, 534, 0, 237, 276, 243, 236, 405, - 0, 0, 0, 0, 519, 0, 547, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 516, 517, 0, 0, - 0, 0, 562, 0, 518, 0, 0, 511, 512, 514, - 513, 515, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 316, 561, 0, 0, 434, 0, - 0, 559, 0, 0, 0, 0, 0, 287, 0, 284, - 191, 205, 0, 0, 326, 364, 370, 0, 0, 0, - 228, 0, 368, 339, 421, 213, 252, 361, 344, 366, - 0, 0, 367, 293, 410, 356, 420, 435, 436, 235, - 320, 427, 402, 432, 444, 206, 232, 333, 395, 424, - 386, 313, 406, 407, 283, 385, 260, 194, 291, 198, - 397, 418, 218, 378, 0, 0, 0, 200, 416, 394, - 310, 280, 281, 199, 0, 360, 239, 258, 230, 329, - 413, 414, 229, 446, 208, 431, 202, 209, 430, 322, - 409, 417, 311, 302, 201, 415, 309, 301, 286, 249, - 268, 354, 296, 355, 269, 318, 317, 319, 0, 196, - 0, 391, 425, 447, 215, 0, 0, 404, 440, 443, - 0, 357, 216, 259, 248, 353, 257, 289, 439, 441, - 442, 214, 351, 265, 321, 210, 271, 387, 285, 294, - 0, 0, 338, 369, 219, 423, 388, 549, 560, 555, - 556, 553, 554, 0, 552, 551, 550, 563, 541, 542, - 543, 544, 546, 0, 557, 558, 545, 190, 203, 290, - 0, 358, 255, 445, 429, 426, 0, 0, 234, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, - 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, - 307, 323, 324, 325, 328, 331, 332, 334, 336, 337, + 410, 411, 422, 433, 437, 263, 418, 438, 0, 297, + 0, 0, 299, 249, 265, 274, 0, 428, 393, 206, + 365, 255, 196, 223, 210, 230, 244, 246, 278, 307, + 313, 342, 345, 260, 241, 221, 362, 219, 379, 399, + 400, 401, 403, 311, 237, 329, 0, 0, 0, 0, + 508, 0, 0, 0, 240, 0, 507, 0, 0, 0, + 287, 0, 0, 0, 343, 0, 380, 226, 296, 294, + 407, 250, 243, 239, 225, 271, 302, 341, 398, 335, + 551, 291, 0, 0, 389, 314, 0, 0, 0, 0, + 0, 542, 543, 0, 0, 0, 0, 0, 0, 0, + 0, 277, 224, 194, 326, 390, 253, 69, 0, 0, + 176, 177, 178, 529, 528, 531, 532, 533, 534, 0, + 0, 216, 530, 222, 535, 536, 537, 0, 236, 275, + 242, 235, 405, 0, 0, 0, 505, 522, 0, 550, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 519, + 520, 0, 0, 0, 0, 565, 0, 521, 0, 0, + 514, 515, 517, 516, 518, 523, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 261, 0, 315, 564, 0, + 0, 434, 0, 0, 562, 0, 0, 0, 0, 0, + 286, 0, 283, 190, 204, 0, 0, 325, 364, 370, + 0, 0, 0, 227, 0, 368, 339, 421, 212, 251, + 361, 344, 366, 0, 0, 367, 292, 409, 356, 419, + 435, 436, 234, 319, 427, 402, 432, 444, 205, 231, + 333, 395, 424, 386, 312, 406, 282, 385, 259, 193, + 290, 197, 397, 417, 217, 378, 0, 0, 0, 199, + 415, 394, 309, 279, 280, 198, 0, 360, 238, 257, + 229, 328, 412, 413, 228, 446, 207, 431, 201, 208, + 430, 321, 408, 416, 310, 301, 200, 414, 308, 300, + 285, 248, 267, 354, 295, 355, 268, 317, 316, 318, + 0, 195, 0, 391, 425, 447, 214, 0, 0, 404, + 440, 443, 0, 357, 215, 258, 247, 353, 256, 288, + 439, 441, 442, 213, 351, 264, 332, 420, 320, 209, + 270, 387, 284, 293, 0, 0, 338, 369, 218, 423, + 388, 552, 563, 558, 559, 556, 557, 0, 555, 554, + 553, 566, 544, 545, 546, 547, 549, 0, 560, 561, + 548, 189, 202, 289, 0, 358, 254, 445, 429, 426, + 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 191, 192, 203, 211, 220, + 232, 245, 252, 262, 266, 269, 272, 273, 276, 281, + 298, 303, 304, 305, 306, 322, 323, 324, 327, 330, + 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, + 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, + 381, 382, 383, 384, 392, 396, 410, 411, 422, 433, + 437, 263, 418, 438, 0, 297, 0, 0, 299, 249, + 265, 274, 0, 428, 393, 206, 365, 255, 196, 223, + 210, 230, 244, 246, 278, 307, 313, 342, 345, 260, + 241, 221, 362, 219, 379, 399, 400, 401, 403, 311, + 237, 329, 0, 0, 0, 0, 0, 0, 0, 0, + 240, 0, 0, 0, 0, 0, 287, 0, 0, 0, + 343, 0, 380, 226, 296, 294, 407, 250, 243, 239, + 225, 271, 302, 341, 398, 335, 551, 291, 0, 0, + 389, 314, 0, 0, 0, 0, 0, 542, 543, 0, + 0, 0, 0, 0, 0, 0, 0, 277, 224, 194, + 326, 390, 253, 69, 0, 0, 176, 177, 178, 529, + 528, 531, 532, 533, 534, 0, 0, 216, 530, 222, + 535, 536, 537, 0, 236, 275, 242, 235, 405, 0, + 0, 0, 0, 522, 0, 550, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 519, 520, 0, 0, 0, + 0, 565, 0, 521, 0, 0, 514, 515, 517, 516, + 518, 523, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 261, 0, 315, 564, 0, 0, 434, 0, 0, + 562, 0, 0, 0, 0, 0, 286, 0, 283, 190, + 204, 0, 0, 325, 364, 370, 0, 0, 0, 227, + 0, 368, 339, 421, 212, 251, 361, 344, 366, 2166, + 0, 367, 292, 409, 356, 419, 435, 436, 234, 319, + 427, 402, 432, 444, 205, 231, 333, 395, 424, 386, + 312, 406, 282, 385, 259, 193, 290, 197, 397, 417, + 217, 378, 0, 0, 0, 199, 415, 394, 309, 279, + 280, 198, 0, 360, 238, 257, 229, 328, 412, 413, + 228, 446, 207, 431, 201, 208, 430, 321, 408, 416, + 310, 301, 200, 414, 308, 300, 285, 248, 267, 354, + 295, 355, 268, 317, 316, 318, 0, 195, 0, 391, + 425, 447, 214, 0, 0, 404, 440, 443, 0, 357, + 215, 258, 247, 353, 256, 288, 439, 441, 442, 213, + 351, 264, 332, 420, 320, 209, 270, 387, 284, 293, + 0, 0, 338, 369, 218, 423, 388, 552, 563, 558, + 559, 556, 557, 0, 555, 554, 553, 566, 544, 545, + 546, 547, 549, 0, 560, 561, 548, 189, 202, 289, + 0, 358, 254, 445, 429, 426, 0, 0, 233, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 191, 192, 203, 211, 220, 232, 245, 252, 262, + 266, 269, 272, 273, 276, 281, 298, 303, 304, 305, + 306, 322, 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, 384, - 392, 396, 411, 412, 422, 433, 437, 264, 419, 438, - 0, 298, 0, 0, 300, 250, 266, 275, 0, 428, - 393, 207, 365, 256, 197, 224, 211, 231, 245, 247, - 279, 308, 314, 342, 345, 261, 242, 222, 362, 220, - 379, 399, 400, 401, 403, 312, 238, 330, 0, 0, - 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, - 0, 0, 288, 0, 0, 0, 343, 0, 380, 227, - 297, 295, 408, 251, 244, 240, 226, 272, 303, 341, - 398, 335, 548, 292, 0, 0, 389, 315, 0, 0, - 0, 0, 0, 539, 540, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 225, 195, 327, 390, 254, 69, - 0, 0, 177, 178, 179, 526, 525, 528, 529, 530, - 531, 0, 0, 217, 527, 223, 532, 533, 534, 0, - 237, 276, 243, 236, 405, 0, 0, 0, 0, 519, - 0, 547, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 516, 517, 0, 0, 0, 0, 562, 0, 518, - 0, 0, 511, 512, 514, 513, 515, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, - 561, 0, 0, 434, 0, 0, 559, 0, 0, 0, - 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, - 364, 370, 0, 0, 0, 228, 0, 368, 339, 421, - 213, 252, 361, 344, 366, 0, 0, 367, 293, 410, - 356, 420, 435, 436, 235, 320, 427, 402, 432, 444, - 206, 232, 333, 395, 424, 386, 313, 406, 407, 283, - 385, 260, 194, 291, 198, 397, 418, 218, 378, 0, - 0, 0, 200, 416, 394, 310, 280, 281, 199, 0, - 360, 239, 258, 230, 329, 413, 414, 229, 446, 208, - 431, 202, 209, 430, 322, 409, 417, 311, 302, 201, - 415, 309, 301, 286, 249, 268, 354, 296, 355, 269, - 318, 317, 319, 0, 196, 0, 391, 425, 447, 215, - 0, 0, 404, 440, 443, 0, 357, 216, 259, 248, - 353, 257, 289, 439, 441, 442, 214, 351, 265, 321, - 210, 271, 387, 285, 294, 0, 0, 338, 369, 219, - 423, 388, 549, 560, 555, 556, 553, 554, 0, 552, - 551, 550, 563, 541, 542, 543, 544, 546, 0, 557, - 558, 545, 190, 203, 290, 0, 358, 255, 445, 429, - 426, 0, 0, 234, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, - 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, - 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, - 331, 332, 334, 336, 337, 340, 346, 347, 348, 349, - 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, - 377, 381, 382, 383, 384, 392, 396, 411, 412, 422, - 433, 437, 264, 419, 438, 0, 298, 0, 0, 300, - 250, 266, 275, 0, 428, 393, 207, 365, 256, 197, - 224, 211, 231, 245, 247, 279, 308, 314, 342, 345, - 261, 242, 222, 362, 220, 379, 399, 400, 401, 403, - 312, 238, 330, 0, 0, 0, 0, 0, 0, 0, - 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, - 0, 343, 0, 380, 227, 297, 295, 408, 251, 244, - 240, 226, 272, 303, 341, 398, 335, 0, 292, 0, - 0, 389, 315, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, - 195, 327, 390, 254, 0, 0, 0, 177, 178, 179, - 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, - 223, 0, 0, 0, 0, 237, 276, 243, 236, 405, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 959, 958, 968, 969, 961, 962, 963, 964, - 965, 966, 967, 960, 0, 0, 970, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 316, 0, 0, 0, 434, 0, - 0, 0, 0, 0, 0, 0, 0, 287, 0, 284, - 191, 205, 0, 0, 326, 364, 370, 0, 0, 0, - 228, 0, 368, 339, 421, 213, 252, 361, 344, 366, - 0, 0, 367, 293, 410, 356, 420, 435, 436, 235, - 320, 427, 402, 432, 444, 206, 232, 333, 395, 424, - 386, 313, 406, 407, 283, 385, 260, 194, 291, 198, - 397, 418, 218, 378, 0, 0, 0, 200, 416, 394, - 310, 280, 281, 199, 0, 360, 239, 258, 230, 329, - 413, 414, 229, 446, 208, 431, 202, 209, 430, 322, - 409, 417, 311, 302, 201, 415, 309, 301, 286, 249, - 268, 354, 296, 355, 269, 318, 317, 319, 0, 196, - 0, 391, 425, 447, 215, 0, 0, 404, 440, 443, - 0, 357, 216, 259, 248, 353, 257, 289, 439, 441, - 442, 214, 351, 265, 321, 210, 271, 387, 285, 294, - 0, 0, 338, 369, 219, 423, 388, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 190, 203, 290, - 0, 358, 255, 445, 429, 426, 0, 0, 234, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, - 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, - 307, 323, 324, 325, 328, 331, 332, 334, 336, 337, + 392, 396, 410, 411, 422, 433, 437, 263, 418, 438, + 0, 297, 0, 0, 299, 249, 265, 274, 0, 428, + 393, 206, 365, 255, 196, 223, 210, 230, 244, 246, + 278, 307, 313, 342, 345, 260, 241, 221, 362, 219, + 379, 399, 400, 401, 403, 311, 237, 329, 0, 0, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, + 0, 0, 287, 0, 0, 0, 343, 0, 380, 226, + 296, 294, 407, 250, 243, 239, 225, 271, 302, 341, + 398, 335, 551, 291, 0, 0, 389, 314, 0, 0, + 0, 0, 0, 542, 543, 0, 0, 0, 0, 0, + 0, 0, 0, 277, 224, 194, 326, 390, 253, 69, + 0, 583, 176, 177, 178, 529, 528, 531, 532, 533, + 534, 0, 0, 216, 530, 222, 535, 536, 537, 0, + 236, 275, 242, 235, 405, 0, 0, 0, 0, 522, + 0, 550, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 519, 520, 0, 0, 0, 0, 565, 0, 521, + 0, 0, 514, 515, 517, 516, 518, 523, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 261, 0, 315, + 564, 0, 0, 434, 0, 0, 562, 0, 0, 0, + 0, 0, 286, 0, 283, 190, 204, 0, 0, 325, + 364, 370, 0, 0, 0, 227, 0, 368, 339, 421, + 212, 251, 361, 344, 366, 0, 0, 367, 292, 409, + 356, 419, 435, 436, 234, 319, 427, 402, 432, 444, + 205, 231, 333, 395, 424, 386, 312, 406, 282, 385, + 259, 193, 290, 197, 397, 417, 217, 378, 0, 0, + 0, 199, 415, 394, 309, 279, 280, 198, 0, 360, + 238, 257, 229, 328, 412, 413, 228, 446, 207, 431, + 201, 208, 430, 321, 408, 416, 310, 301, 200, 414, + 308, 300, 285, 248, 267, 354, 295, 355, 268, 317, + 316, 318, 0, 195, 0, 391, 425, 447, 214, 0, + 0, 404, 440, 443, 0, 357, 215, 258, 247, 353, + 256, 288, 439, 441, 442, 213, 351, 264, 332, 420, + 320, 209, 270, 387, 284, 293, 0, 0, 338, 369, + 218, 423, 388, 552, 563, 558, 559, 556, 557, 0, + 555, 554, 553, 566, 544, 545, 546, 547, 549, 0, + 560, 561, 548, 189, 202, 289, 0, 358, 254, 445, + 429, 426, 0, 0, 233, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 191, 192, 203, + 211, 220, 232, 245, 252, 262, 266, 269, 272, 273, + 276, 281, 298, 303, 304, 305, 306, 322, 323, 324, + 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, + 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, + 376, 377, 381, 382, 383, 384, 392, 396, 410, 411, + 422, 433, 437, 263, 418, 438, 0, 297, 0, 0, + 299, 249, 265, 274, 0, 428, 393, 206, 365, 255, + 196, 223, 210, 230, 244, 246, 278, 307, 313, 342, + 345, 260, 241, 221, 362, 219, 379, 399, 400, 401, + 403, 311, 237, 329, 0, 0, 0, 0, 0, 0, + 0, 0, 240, 0, 0, 0, 0, 0, 287, 0, + 0, 0, 343, 0, 380, 226, 296, 294, 407, 250, + 243, 239, 225, 271, 302, 341, 398, 335, 551, 291, + 0, 0, 389, 314, 0, 0, 0, 0, 0, 542, + 543, 0, 0, 0, 0, 0, 0, 0, 0, 277, + 224, 194, 326, 390, 253, 69, 0, 0, 176, 177, + 178, 529, 528, 531, 532, 533, 534, 0, 0, 216, + 530, 222, 535, 536, 537, 0, 236, 275, 242, 235, + 405, 0, 0, 0, 0, 522, 0, 550, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 519, 520, 0, + 0, 0, 0, 565, 0, 521, 0, 0, 514, 515, + 517, 516, 518, 523, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 261, 0, 315, 564, 0, 0, 434, + 0, 0, 562, 0, 0, 0, 0, 0, 286, 0, + 283, 190, 204, 0, 0, 325, 364, 370, 0, 0, + 0, 227, 0, 368, 339, 421, 212, 251, 361, 344, + 366, 0, 0, 367, 292, 409, 356, 419, 435, 436, + 234, 319, 427, 402, 432, 444, 205, 231, 333, 395, + 424, 386, 312, 406, 282, 385, 259, 193, 290, 197, + 397, 417, 217, 378, 0, 0, 0, 199, 415, 394, + 309, 279, 280, 198, 0, 360, 238, 257, 229, 328, + 412, 413, 228, 446, 207, 431, 201, 208, 430, 321, + 408, 416, 310, 301, 200, 414, 308, 300, 285, 248, + 267, 354, 295, 355, 268, 317, 316, 318, 0, 195, + 0, 391, 425, 447, 214, 0, 0, 404, 440, 443, + 0, 357, 215, 258, 247, 353, 256, 288, 439, 441, + 442, 213, 351, 264, 332, 420, 320, 209, 270, 387, + 284, 293, 0, 0, 338, 369, 218, 423, 388, 552, + 563, 558, 559, 556, 557, 0, 555, 554, 553, 566, + 544, 545, 546, 547, 549, 0, 560, 561, 548, 189, + 202, 289, 0, 358, 254, 445, 429, 426, 0, 0, + 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 191, 192, 203, 211, 220, 232, 245, + 252, 262, 266, 269, 272, 273, 276, 281, 298, 303, + 304, 305, 306, 322, 323, 324, 327, 330, 331, 334, + 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, + 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, + 383, 384, 392, 396, 410, 411, 422, 433, 437, 263, + 418, 438, 0, 297, 0, 0, 299, 249, 265, 274, + 0, 428, 393, 206, 365, 255, 196, 223, 210, 230, + 244, 246, 278, 307, 313, 342, 345, 260, 241, 221, + 362, 219, 379, 399, 400, 401, 403, 311, 237, 329, + 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, + 0, 0, 0, 0, 287, 0, 0, 0, 343, 0, + 380, 226, 296, 294, 407, 250, 243, 239, 225, 271, + 302, 341, 398, 335, 0, 291, 0, 0, 389, 314, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 277, 224, 194, 326, 390, + 253, 0, 0, 0, 176, 177, 178, 0, 0, 0, + 0, 0, 0, 0, 0, 216, 0, 222, 0, 0, + 0, 0, 236, 275, 242, 235, 405, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 966, + 965, 975, 976, 968, 969, 970, 971, 972, 973, 974, + 967, 0, 0, 977, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, + 0, 315, 0, 0, 0, 434, 0, 0, 0, 0, + 0, 0, 0, 0, 286, 0, 283, 190, 204, 0, + 0, 325, 364, 370, 0, 0, 0, 227, 0, 368, + 339, 421, 212, 251, 361, 344, 366, 0, 0, 367, + 292, 409, 356, 419, 435, 436, 234, 319, 427, 402, + 432, 444, 205, 231, 333, 395, 424, 386, 312, 406, + 282, 385, 259, 193, 290, 197, 397, 417, 217, 378, + 0, 0, 0, 199, 415, 394, 309, 279, 280, 198, + 0, 360, 238, 257, 229, 328, 412, 413, 228, 446, + 207, 431, 201, 208, 430, 321, 408, 416, 310, 301, + 200, 414, 308, 300, 285, 248, 267, 354, 295, 355, + 268, 317, 316, 318, 0, 195, 0, 391, 425, 447, + 214, 0, 0, 404, 440, 443, 0, 357, 215, 258, + 247, 353, 256, 288, 439, 441, 442, 213, 351, 264, + 332, 420, 320, 209, 270, 387, 284, 293, 0, 0, + 338, 369, 218, 423, 388, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 189, 202, 289, 0, 358, + 254, 445, 429, 426, 0, 0, 233, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, + 192, 203, 211, 220, 232, 245, 252, 262, 266, 269, + 272, 273, 276, 281, 298, 303, 304, 305, 306, 322, + 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, + 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, + 374, 375, 376, 377, 381, 382, 383, 384, 392, 396, + 410, 411, 422, 433, 437, 263, 418, 438, 0, 297, + 0, 0, 299, 249, 265, 274, 0, 428, 393, 206, + 365, 255, 196, 223, 210, 230, 244, 246, 278, 307, + 313, 342, 345, 260, 241, 221, 362, 219, 379, 399, + 400, 401, 403, 311, 237, 329, 0, 0, 0, 0, + 0, 0, 0, 0, 240, 796, 0, 0, 0, 0, + 287, 0, 0, 0, 343, 0, 380, 226, 296, 294, + 407, 250, 243, 239, 225, 271, 302, 341, 398, 335, + 0, 291, 0, 0, 389, 314, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 277, 224, 194, 326, 390, 253, 0, 0, 0, + 176, 177, 178, 0, 0, 0, 0, 0, 0, 0, + 0, 216, 0, 222, 0, 0, 0, 0, 236, 275, + 242, 235, 405, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 261, 0, 315, 0, 0, + 795, 434, 0, 0, 0, 0, 0, 0, 792, 793, + 286, 760, 283, 190, 204, 786, 790, 325, 364, 370, + 0, 0, 0, 227, 0, 368, 339, 421, 212, 251, + 361, 344, 366, 0, 0, 367, 292, 409, 356, 419, + 435, 436, 234, 319, 427, 402, 432, 444, 205, 231, + 333, 395, 424, 386, 312, 406, 282, 385, 259, 193, + 290, 197, 397, 417, 217, 378, 0, 0, 0, 199, + 415, 394, 309, 279, 280, 198, 0, 360, 238, 257, + 229, 328, 412, 413, 228, 446, 207, 431, 201, 208, + 430, 321, 408, 416, 310, 301, 200, 414, 308, 300, + 285, 248, 267, 354, 295, 355, 268, 317, 316, 318, + 0, 195, 0, 391, 425, 447, 214, 0, 0, 404, + 440, 443, 0, 357, 215, 258, 247, 353, 256, 288, + 439, 441, 442, 213, 351, 264, 332, 420, 320, 209, + 270, 387, 284, 293, 0, 0, 338, 369, 218, 423, + 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 189, 202, 289, 0, 358, 254, 445, 429, 426, + 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 191, 192, 203, 211, 220, + 232, 245, 252, 262, 266, 269, 272, 273, 276, 281, + 298, 303, 304, 305, 306, 322, 323, 324, 327, 330, + 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, + 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, + 381, 382, 383, 384, 392, 396, 410, 411, 422, 433, + 437, 263, 418, 438, 0, 297, 0, 0, 299, 249, + 265, 274, 0, 428, 393, 206, 365, 255, 196, 223, + 210, 230, 244, 246, 278, 307, 313, 342, 345, 260, + 241, 221, 362, 219, 379, 399, 400, 401, 403, 311, + 237, 329, 0, 0, 0, 1067, 0, 0, 0, 0, + 240, 0, 0, 0, 0, 0, 287, 0, 0, 0, + 343, 0, 380, 226, 296, 294, 407, 250, 243, 239, + 225, 271, 302, 341, 398, 335, 0, 291, 0, 0, + 389, 314, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 277, 224, 194, + 326, 390, 253, 0, 0, 0, 176, 177, 178, 0, + 1069, 0, 0, 0, 0, 0, 0, 216, 0, 222, + 0, 0, 0, 0, 236, 275, 242, 235, 405, 955, + 956, 954, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 957, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 261, 0, 315, 0, 0, 0, 434, 0, 0, + 0, 0, 0, 0, 0, 0, 286, 0, 283, 190, + 204, 0, 0, 325, 364, 370, 0, 0, 0, 227, + 0, 368, 339, 421, 212, 251, 361, 344, 366, 0, + 0, 367, 292, 409, 356, 419, 435, 436, 234, 319, + 427, 402, 432, 444, 205, 231, 333, 395, 424, 386, + 312, 406, 282, 385, 259, 193, 290, 197, 397, 417, + 217, 378, 0, 0, 0, 199, 415, 394, 309, 279, + 280, 198, 0, 360, 238, 257, 229, 328, 412, 413, + 228, 446, 207, 431, 201, 208, 430, 321, 408, 416, + 310, 301, 200, 414, 308, 300, 285, 248, 267, 354, + 295, 355, 268, 317, 316, 318, 0, 195, 0, 391, + 425, 447, 214, 0, 0, 404, 440, 443, 0, 357, + 215, 258, 247, 353, 256, 288, 439, 441, 442, 213, + 351, 264, 332, 420, 320, 209, 270, 387, 284, 293, + 0, 0, 338, 369, 218, 423, 388, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 202, 289, + 0, 358, 254, 445, 429, 426, 0, 0, 233, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 191, 192, 203, 211, 220, 232, 245, 252, 262, + 266, 269, 272, 273, 276, 281, 298, 303, 304, 305, + 306, 322, 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, 384, - 392, 396, 411, 412, 422, 433, 437, 264, 419, 438, - 0, 298, 0, 0, 300, 250, 266, 275, 0, 428, - 393, 207, 365, 256, 197, 224, 211, 231, 245, 247, - 279, 308, 314, 342, 345, 261, 242, 222, 362, 220, - 379, 399, 400, 401, 403, 312, 238, 330, 0, 0, - 0, 0, 0, 0, 0, 0, 241, 793, 0, 0, - 0, 0, 288, 0, 0, 0, 343, 0, 380, 227, - 297, 295, 408, 251, 244, 240, 226, 272, 303, 341, - 398, 335, 0, 292, 0, 0, 389, 315, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 225, 195, 327, 390, 254, 0, - 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, - 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, - 237, 276, 243, 236, 405, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, - 0, 0, 792, 434, 0, 0, 0, 0, 0, 0, - 789, 790, 287, 757, 284, 191, 205, 783, 787, 326, - 364, 370, 0, 0, 0, 228, 0, 368, 339, 421, - 213, 252, 361, 344, 366, 0, 0, 367, 293, 410, - 356, 420, 435, 436, 235, 320, 427, 402, 432, 444, - 206, 232, 333, 395, 424, 386, 313, 406, 407, 283, - 385, 260, 194, 291, 198, 397, 418, 218, 378, 0, - 0, 0, 200, 416, 394, 310, 280, 281, 199, 0, - 360, 239, 258, 230, 329, 413, 414, 229, 446, 208, - 431, 202, 209, 430, 322, 409, 417, 311, 302, 201, - 415, 309, 301, 286, 249, 268, 354, 296, 355, 269, - 318, 317, 319, 0, 196, 0, 391, 425, 447, 215, - 0, 0, 404, 440, 443, 0, 357, 216, 259, 248, - 353, 257, 289, 439, 441, 442, 214, 351, 265, 321, - 210, 271, 387, 285, 294, 0, 0, 338, 369, 219, + 392, 396, 410, 411, 422, 433, 437, 263, 418, 438, + 0, 297, 0, 0, 299, 249, 265, 274, 0, 428, + 393, 206, 365, 255, 196, 223, 210, 230, 244, 246, + 278, 307, 313, 342, 345, 260, 241, 221, 362, 219, + 379, 399, 400, 401, 403, 311, 237, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 329, 0, 0, 0, 0, 0, 0, 0, 0, 240, + 0, 0, 0, 0, 0, 287, 0, 0, 0, 343, + 0, 380, 226, 296, 294, 407, 250, 243, 239, 225, + 271, 302, 341, 398, 335, 0, 291, 0, 0, 389, + 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 277, 224, 194, 326, + 390, 253, 69, 0, 583, 176, 177, 178, 0, 0, + 0, 0, 0, 0, 0, 0, 216, 0, 222, 0, + 0, 0, 0, 236, 275, 242, 235, 405, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 261, 0, 315, 0, 0, 0, 434, 0, 0, 0, + 0, 0, 0, 0, 0, 286, 0, 283, 190, 204, + 0, 0, 325, 364, 370, 0, 0, 0, 227, 0, + 368, 339, 421, 212, 251, 361, 344, 366, 0, 0, + 367, 292, 409, 356, 419, 435, 436, 234, 319, 427, + 402, 432, 444, 205, 231, 333, 395, 424, 386, 312, + 406, 282, 385, 259, 193, 290, 197, 397, 417, 217, + 378, 0, 0, 0, 199, 415, 394, 309, 279, 280, + 198, 0, 360, 238, 257, 229, 328, 412, 413, 228, + 446, 207, 431, 201, 208, 430, 321, 408, 416, 310, + 301, 200, 414, 308, 300, 285, 248, 267, 354, 295, + 355, 268, 317, 316, 318, 0, 195, 0, 391, 425, + 447, 214, 0, 0, 404, 440, 443, 0, 357, 215, + 258, 247, 353, 256, 288, 439, 441, 442, 213, 351, + 264, 332, 420, 320, 209, 270, 387, 284, 293, 0, + 0, 338, 369, 218, 423, 388, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 189, 202, 289, 0, + 358, 254, 445, 429, 426, 0, 0, 233, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 191, 192, 203, 211, 220, 232, 245, 252, 262, 266, + 269, 272, 273, 276, 281, 298, 303, 304, 305, 306, + 322, 323, 324, 327, 330, 331, 334, 336, 337, 340, + 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, + 373, 374, 375, 376, 377, 381, 382, 383, 384, 392, + 396, 410, 411, 422, 433, 437, 263, 418, 438, 0, + 297, 0, 0, 299, 249, 265, 274, 0, 428, 393, + 206, 365, 255, 196, 223, 210, 230, 244, 246, 278, + 307, 313, 342, 345, 260, 241, 221, 362, 219, 379, + 399, 400, 401, 403, 311, 237, 329, 0, 0, 0, + 1436, 0, 0, 0, 0, 240, 0, 0, 0, 0, + 0, 287, 0, 0, 0, 343, 0, 380, 226, 296, + 294, 407, 250, 243, 239, 225, 271, 302, 341, 398, + 335, 0, 291, 0, 0, 389, 314, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 277, 224, 194, 326, 390, 253, 0, 0, + 0, 176, 177, 178, 0, 1438, 0, 0, 0, 0, + 0, 0, 216, 0, 222, 0, 0, 0, 0, 236, + 275, 242, 235, 405, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 261, 0, 315, 0, + 0, 0, 434, 0, 0, 0, 0, 0, 0, 0, + 0, 286, 0, 283, 190, 204, 0, 0, 325, 364, + 370, 0, 0, 0, 227, 0, 368, 339, 421, 212, + 251, 361, 344, 366, 0, 1434, 367, 292, 409, 356, + 419, 435, 436, 234, 319, 427, 402, 432, 444, 205, + 231, 333, 395, 424, 386, 312, 406, 282, 385, 259, + 193, 290, 197, 397, 417, 217, 378, 0, 0, 0, + 199, 415, 394, 309, 279, 280, 198, 0, 360, 238, + 257, 229, 328, 412, 413, 228, 446, 207, 431, 201, + 208, 430, 321, 408, 416, 310, 301, 200, 414, 308, + 300, 285, 248, 267, 354, 295, 355, 268, 317, 316, + 318, 0, 195, 0, 391, 425, 447, 214, 0, 0, + 404, 440, 443, 0, 357, 215, 258, 247, 353, 256, + 288, 439, 441, 442, 213, 351, 264, 332, 420, 320, + 209, 270, 387, 284, 293, 0, 0, 338, 369, 218, 423, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 190, 203, 290, 0, 358, 255, 445, 429, - 426, 0, 0, 234, 0, 0, 0, 0, 0, 0, + 0, 0, 189, 202, 289, 0, 358, 254, 445, 429, + 426, 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, - 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, - 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, - 331, 332, 334, 336, 337, 340, 346, 347, 348, 349, + 0, 0, 0, 0, 0, 0, 191, 192, 203, 211, + 220, 232, 245, 252, 262, 266, 269, 272, 273, 276, + 281, 298, 303, 304, 305, 306, 322, 323, 324, 327, + 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, - 377, 381, 382, 383, 384, 392, 396, 411, 412, 422, - 433, 437, 264, 419, 438, 0, 298, 0, 0, 300, - 250, 266, 275, 0, 428, 393, 207, 365, 256, 197, - 224, 211, 231, 245, 247, 279, 308, 314, 342, 345, - 261, 242, 222, 362, 220, 379, 399, 400, 401, 403, - 312, 238, 330, 0, 0, 0, 1060, 0, 0, 0, - 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, - 0, 343, 0, 380, 227, 297, 295, 408, 251, 244, - 240, 226, 272, 303, 341, 398, 335, 0, 292, 0, - 0, 389, 315, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, - 195, 327, 390, 254, 0, 0, 0, 177, 178, 179, - 0, 1062, 0, 0, 0, 0, 0, 0, 217, 0, - 223, 0, 0, 0, 0, 237, 276, 243, 236, 405, - 948, 949, 947, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 950, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 316, 0, 0, 0, 434, 0, - 0, 0, 0, 0, 0, 0, 0, 287, 0, 284, - 191, 205, 0, 0, 326, 364, 370, 0, 0, 0, - 228, 0, 368, 339, 421, 213, 252, 361, 344, 366, - 0, 0, 367, 293, 410, 356, 420, 435, 436, 235, - 320, 427, 402, 432, 444, 206, 232, 333, 395, 424, - 386, 313, 406, 407, 283, 385, 260, 194, 291, 198, - 397, 418, 218, 378, 0, 0, 0, 200, 416, 394, - 310, 280, 281, 199, 0, 360, 239, 258, 230, 329, - 413, 414, 229, 446, 208, 431, 202, 209, 430, 322, - 409, 417, 311, 302, 201, 415, 309, 301, 286, 249, - 268, 354, 296, 355, 269, 318, 317, 319, 0, 196, - 0, 391, 425, 447, 215, 0, 0, 404, 440, 443, - 0, 357, 216, 259, 248, 353, 257, 289, 439, 441, - 442, 214, 351, 265, 321, 210, 271, 387, 285, 294, - 0, 0, 338, 369, 219, 423, 388, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 190, 203, 290, - 0, 358, 255, 445, 429, 426, 0, 0, 234, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, - 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, - 307, 323, 324, 325, 328, 331, 332, 334, 336, 337, - 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, - 372, 373, 374, 375, 376, 377, 381, 382, 383, 384, - 392, 396, 411, 412, 422, 433, 437, 264, 419, 438, - 0, 298, 0, 0, 300, 250, 266, 275, 0, 428, - 393, 207, 365, 256, 197, 224, 211, 231, 245, 247, - 279, 308, 314, 342, 345, 261, 242, 222, 362, 220, - 379, 399, 400, 401, 403, 312, 238, 34, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 330, 0, 0, 0, 0, 0, 0, 0, 0, 241, - 0, 0, 0, 0, 0, 288, 0, 0, 0, 343, - 0, 380, 227, 297, 295, 408, 251, 244, 240, 226, - 272, 303, 341, 398, 335, 0, 292, 0, 0, 389, - 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, - 390, 254, 69, 0, 580, 177, 178, 179, 0, 0, - 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, - 0, 0, 0, 237, 276, 243, 236, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 316, 0, 0, 0, 434, 0, 0, 0, - 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, - 0, 0, 326, 364, 370, 0, 0, 0, 228, 0, - 368, 339, 421, 213, 252, 361, 344, 366, 0, 0, - 367, 293, 410, 356, 420, 435, 436, 235, 320, 427, - 402, 432, 444, 206, 232, 333, 395, 424, 386, 313, - 406, 407, 283, 385, 260, 194, 291, 198, 397, 418, - 218, 378, 0, 0, 0, 200, 416, 394, 310, 280, - 281, 199, 0, 360, 239, 258, 230, 329, 413, 414, - 229, 446, 208, 431, 202, 209, 430, 322, 409, 417, - 311, 302, 201, 415, 309, 301, 286, 249, 268, 354, - 296, 355, 269, 318, 317, 319, 0, 196, 0, 391, - 425, 447, 215, 0, 0, 404, 440, 443, 0, 357, - 216, 259, 248, 353, 257, 289, 439, 441, 442, 214, - 351, 265, 321, 210, 271, 387, 285, 294, 0, 0, - 338, 369, 219, 423, 388, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 190, 203, 290, 0, 358, - 255, 445, 429, 426, 0, 0, 234, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, - 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, - 324, 325, 328, 331, 332, 334, 336, 337, 340, 346, - 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, - 374, 375, 376, 377, 381, 382, 383, 384, 392, 396, - 411, 412, 422, 433, 437, 264, 419, 438, 0, 298, - 0, 0, 300, 250, 266, 275, 0, 428, 393, 207, - 365, 256, 197, 224, 211, 231, 245, 247, 279, 308, - 314, 342, 345, 261, 242, 222, 362, 220, 379, 399, - 400, 401, 403, 312, 238, 330, 0, 0, 0, 1425, - 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, - 288, 0, 0, 0, 343, 0, 380, 227, 297, 295, - 408, 251, 244, 240, 226, 272, 303, 341, 398, 335, - 0, 292, 0, 0, 389, 315, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 225, 195, 327, 390, 254, 0, 0, 0, - 177, 178, 179, 0, 1427, 0, 0, 0, 0, 0, - 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, - 243, 236, 405, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 262, 0, 316, 0, 0, - 0, 434, 0, 0, 0, 0, 0, 0, 0, 0, - 287, 0, 284, 191, 205, 0, 0, 326, 364, 370, - 0, 0, 0, 228, 0, 368, 339, 421, 213, 252, - 361, 344, 366, 0, 1423, 367, 293, 410, 356, 420, - 435, 436, 235, 320, 427, 402, 432, 444, 206, 232, - 333, 395, 424, 386, 313, 406, 407, 283, 385, 260, - 194, 291, 198, 397, 418, 218, 378, 0, 0, 0, - 200, 416, 394, 310, 280, 281, 199, 0, 360, 239, - 258, 230, 329, 413, 414, 229, 446, 208, 431, 202, - 209, 430, 322, 409, 417, 311, 302, 201, 415, 309, - 301, 286, 249, 268, 354, 296, 355, 269, 318, 317, - 319, 0, 196, 0, 391, 425, 447, 215, 0, 0, - 404, 440, 443, 0, 357, 216, 259, 248, 353, 257, - 289, 439, 441, 442, 214, 351, 265, 321, 210, 271, - 387, 285, 294, 0, 0, 338, 369, 219, 423, 388, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 190, 203, 290, 0, 358, 255, 445, 429, 426, 0, - 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, - 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, - 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, - 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, - 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 411, 412, 422, 433, 437, - 264, 419, 438, 0, 298, 0, 0, 300, 250, 266, - 275, 0, 428, 393, 207, 365, 256, 197, 224, 211, - 231, 245, 247, 279, 308, 314, 342, 345, 261, 242, - 222, 362, 220, 379, 399, 400, 401, 403, 312, 238, - 330, 0, 0, 0, 0, 0, 0, 0, 0, 241, - 0, 0, 0, 0, 0, 288, 0, 0, 0, 343, - 0, 380, 227, 297, 295, 408, 251, 244, 240, 226, - 272, 303, 341, 398, 335, 0, 292, 0, 0, 389, - 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, - 390, 254, 0, 0, 0, 177, 178, 179, 0, 0, - 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, - 0, 0, 0, 237, 276, 243, 236, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 751, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 316, 0, 0, 0, 434, 0, 0, 0, - 0, 0, 0, 0, 0, 287, 757, 284, 191, 205, - 755, 0, 326, 364, 370, 0, 0, 0, 228, 0, - 368, 339, 421, 213, 252, 361, 344, 366, 0, 0, - 367, 293, 410, 356, 420, 435, 436, 235, 320, 427, - 402, 432, 444, 206, 232, 333, 395, 424, 386, 313, - 406, 407, 283, 385, 260, 194, 291, 198, 397, 418, - 218, 378, 0, 0, 0, 200, 416, 394, 310, 280, - 281, 199, 0, 360, 239, 258, 230, 329, 413, 414, - 229, 446, 208, 431, 202, 209, 430, 322, 409, 417, - 311, 302, 201, 415, 309, 301, 286, 249, 268, 354, - 296, 355, 269, 318, 317, 319, 0, 196, 0, 391, - 425, 447, 215, 0, 0, 404, 440, 443, 0, 357, - 216, 259, 248, 353, 257, 289, 439, 441, 442, 214, - 351, 265, 321, 210, 271, 387, 285, 294, 0, 0, - 338, 369, 219, 423, 388, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 190, 203, 290, 0, 358, - 255, 445, 429, 426, 0, 0, 234, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, - 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, - 324, 325, 328, 331, 332, 334, 336, 337, 340, 346, - 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, - 374, 375, 376, 377, 381, 382, 383, 384, 392, 396, - 411, 412, 422, 433, 437, 264, 419, 438, 0, 298, - 0, 0, 300, 250, 266, 275, 0, 428, 393, 207, - 365, 256, 197, 224, 211, 231, 245, 247, 279, 308, - 314, 342, 345, 261, 242, 222, 362, 220, 379, 399, - 400, 401, 403, 312, 238, 330, 0, 0, 0, 1425, - 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, - 288, 0, 0, 0, 343, 0, 380, 227, 297, 295, - 408, 251, 244, 240, 226, 272, 303, 341, 398, 335, - 0, 292, 0, 0, 389, 315, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 225, 195, 327, 390, 254, 0, 0, 0, - 177, 178, 179, 0, 1427, 0, 0, 0, 0, 0, - 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, - 243, 236, 405, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 262, 0, 316, 0, 0, - 0, 434, 0, 0, 0, 0, 0, 0, 0, 0, - 287, 0, 284, 191, 205, 0, 0, 326, 364, 370, - 0, 0, 0, 228, 0, 368, 339, 421, 213, 252, - 361, 344, 366, 0, 0, 367, 293, 410, 356, 420, - 435, 436, 235, 320, 427, 402, 432, 444, 206, 232, - 333, 395, 424, 386, 313, 406, 407, 283, 385, 260, - 194, 291, 198, 397, 418, 218, 378, 0, 0, 0, - 200, 416, 394, 310, 280, 281, 199, 0, 360, 239, - 258, 230, 329, 413, 414, 229, 446, 208, 431, 202, - 209, 430, 322, 409, 417, 311, 302, 201, 415, 309, - 301, 286, 249, 268, 354, 296, 355, 269, 318, 317, - 319, 0, 196, 0, 391, 425, 447, 215, 0, 0, - 404, 440, 443, 0, 357, 216, 259, 248, 353, 257, - 289, 439, 441, 442, 214, 351, 265, 321, 210, 271, - 387, 285, 294, 0, 0, 338, 369, 219, 423, 388, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 190, 203, 290, 0, 358, 255, 445, 429, 426, 0, - 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, - 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, - 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, - 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, - 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 411, 412, 422, 433, 437, - 264, 419, 438, 0, 298, 0, 0, 300, 250, 266, - 275, 0, 428, 393, 207, 365, 256, 197, 224, 211, - 231, 245, 247, 279, 308, 314, 342, 345, 261, 242, - 222, 362, 220, 379, 399, 400, 401, 403, 312, 238, - 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, - 0, 0, 343, 0, 380, 227, 297, 295, 408, 251, - 244, 240, 226, 272, 303, 341, 398, 335, 0, 292, - 0, 0, 389, 315, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 225, 195, 327, 390, 254, 69, 0, 0, 177, 178, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, - 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 316, 0, 0, 0, 434, - 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, - 284, 191, 205, 0, 0, 326, 364, 370, 0, 0, - 0, 228, 0, 368, 339, 421, 213, 252, 361, 344, - 366, 0, 0, 367, 293, 410, 356, 420, 435, 436, - 235, 320, 427, 402, 432, 444, 206, 232, 333, 395, - 424, 386, 313, 406, 407, 283, 385, 260, 194, 291, - 198, 397, 418, 218, 378, 0, 0, 0, 200, 416, - 394, 310, 280, 281, 199, 0, 360, 239, 258, 230, - 329, 413, 414, 229, 446, 208, 431, 202, 209, 430, - 322, 409, 417, 311, 302, 201, 415, 309, 301, 286, - 249, 268, 354, 296, 355, 269, 318, 317, 319, 0, - 196, 0, 391, 425, 447, 215, 0, 0, 404, 440, - 443, 0, 357, 216, 259, 248, 353, 257, 289, 439, - 441, 442, 214, 351, 265, 321, 210, 271, 387, 285, - 294, 0, 0, 338, 369, 219, 423, 388, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, - 290, 0, 358, 255, 445, 429, 426, 0, 0, 234, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 334, 336, + 377, 381, 382, 383, 384, 392, 396, 410, 411, 422, + 433, 437, 263, 418, 438, 0, 297, 0, 0, 299, + 249, 265, 274, 0, 428, 393, 206, 365, 255, 196, + 223, 210, 230, 244, 246, 278, 307, 313, 342, 345, + 260, 241, 221, 362, 219, 379, 399, 400, 401, 403, + 311, 237, 329, 0, 0, 0, 0, 0, 0, 0, + 0, 240, 0, 0, 0, 0, 0, 287, 0, 0, + 0, 343, 0, 380, 226, 296, 294, 407, 250, 243, + 239, 225, 271, 302, 341, 398, 335, 0, 291, 0, + 0, 389, 314, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 277, 224, + 194, 326, 390, 253, 0, 0, 0, 176, 177, 178, + 0, 0, 0, 0, 0, 0, 0, 0, 216, 0, + 222, 0, 0, 0, 0, 236, 275, 242, 235, 405, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 261, 0, 315, 0, 0, 0, 434, 0, + 0, 0, 0, 0, 0, 0, 0, 286, 760, 283, + 190, 204, 758, 0, 325, 364, 370, 0, 0, 0, + 227, 0, 368, 339, 421, 212, 251, 361, 344, 366, + 0, 0, 367, 292, 409, 356, 419, 435, 436, 234, + 319, 427, 402, 432, 444, 205, 231, 333, 395, 424, + 386, 312, 406, 282, 385, 259, 193, 290, 197, 397, + 417, 217, 378, 0, 0, 0, 199, 415, 394, 309, + 279, 280, 198, 0, 360, 238, 257, 229, 328, 412, + 413, 228, 446, 207, 431, 201, 208, 430, 321, 408, + 416, 310, 301, 200, 414, 308, 300, 285, 248, 267, + 354, 295, 355, 268, 317, 316, 318, 0, 195, 0, + 391, 425, 447, 214, 0, 0, 404, 440, 443, 0, + 357, 215, 258, 247, 353, 256, 288, 439, 441, 442, + 213, 351, 264, 332, 420, 320, 209, 270, 387, 284, + 293, 0, 0, 338, 369, 218, 423, 388, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 189, 202, + 289, 0, 358, 254, 445, 429, 426, 0, 0, 233, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 191, 192, 203, 211, 220, 232, 245, 252, + 262, 266, 269, 272, 273, 276, 281, 298, 303, 304, + 305, 306, 322, 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, - 384, 392, 396, 411, 412, 422, 433, 437, 264, 419, - 438, 0, 298, 0, 0, 300, 250, 266, 275, 0, - 428, 393, 207, 365, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 342, 345, 261, 242, 222, 362, - 220, 379, 399, 400, 401, 403, 312, 238, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, - 0, 0, 0, 288, 0, 0, 0, 343, 0, 380, - 227, 297, 295, 408, 251, 244, 240, 226, 272, 303, - 341, 398, 335, 0, 292, 0, 0, 389, 315, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 278, 225, 195, 327, 390, 254, - 0, 0, 0, 177, 178, 179, 0, 0, 1445, 0, - 0, 1446, 0, 0, 217, 0, 223, 0, 0, 0, - 0, 237, 276, 243, 236, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 316, 0, 0, 0, 434, 0, 0, 0, 0, 0, - 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, - 326, 364, 370, 0, 0, 0, 228, 0, 368, 339, - 421, 213, 252, 361, 344, 366, 0, 0, 367, 293, - 410, 356, 420, 435, 436, 235, 320, 427, 402, 432, - 444, 206, 232, 333, 395, 424, 386, 313, 406, 407, - 283, 385, 260, 194, 291, 198, 397, 418, 218, 378, - 0, 0, 0, 200, 416, 394, 310, 280, 281, 199, - 0, 360, 239, 258, 230, 329, 413, 414, 229, 446, - 208, 431, 202, 209, 430, 322, 409, 417, 311, 302, - 201, 415, 309, 301, 286, 249, 268, 354, 296, 355, - 269, 318, 317, 319, 0, 196, 0, 391, 425, 447, - 215, 0, 0, 404, 440, 443, 0, 357, 216, 259, - 248, 353, 257, 289, 439, 441, 442, 214, 351, 265, - 321, 210, 271, 387, 285, 294, 0, 0, 338, 369, - 219, 423, 388, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 203, 290, 0, 358, 255, 445, - 429, 426, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, - 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, - 328, 331, 332, 334, 336, 337, 340, 346, 347, 348, + 384, 392, 396, 410, 411, 422, 433, 437, 263, 418, + 438, 0, 297, 0, 0, 299, 249, 265, 274, 0, + 428, 393, 206, 365, 255, 196, 223, 210, 230, 244, + 246, 278, 307, 313, 342, 345, 260, 241, 221, 362, + 219, 379, 399, 400, 401, 403, 311, 237, 329, 0, + 0, 0, 1436, 0, 0, 0, 0, 240, 0, 0, + 0, 0, 0, 287, 0, 0, 0, 343, 0, 380, + 226, 296, 294, 407, 250, 243, 239, 225, 271, 302, + 341, 398, 335, 0, 291, 0, 0, 389, 314, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 277, 224, 194, 326, 390, 253, + 0, 0, 0, 176, 177, 178, 0, 1438, 0, 0, + 0, 0, 0, 0, 216, 0, 222, 0, 0, 0, + 0, 236, 275, 242, 235, 405, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 261, 0, + 315, 0, 0, 0, 434, 0, 0, 0, 0, 0, + 0, 0, 0, 286, 0, 283, 190, 204, 0, 0, + 325, 364, 370, 0, 0, 0, 227, 0, 368, 339, + 421, 212, 251, 361, 344, 366, 0, 0, 367, 292, + 409, 356, 419, 435, 436, 234, 319, 427, 402, 432, + 444, 205, 231, 333, 395, 424, 386, 312, 406, 282, + 385, 259, 193, 290, 197, 397, 417, 217, 378, 0, + 0, 0, 199, 415, 394, 309, 279, 280, 198, 0, + 360, 238, 257, 229, 328, 412, 413, 228, 446, 207, + 431, 201, 208, 430, 321, 408, 416, 310, 301, 200, + 414, 308, 300, 285, 248, 267, 354, 295, 355, 268, + 317, 316, 318, 0, 195, 0, 391, 425, 447, 214, + 0, 0, 404, 440, 443, 0, 357, 215, 258, 247, + 353, 256, 288, 439, 441, 442, 213, 351, 264, 332, + 420, 320, 209, 270, 387, 284, 293, 0, 0, 338, + 369, 218, 423, 388, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 189, 202, 289, 0, 358, 254, + 445, 429, 426, 0, 0, 233, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, + 203, 211, 220, 232, 245, 252, 262, 266, 269, 272, + 273, 276, 281, 298, 303, 304, 305, 306, 322, 323, + 324, 327, 330, 331, 334, 336, 337, 340, 346, 347, + 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, + 375, 376, 377, 381, 382, 383, 384, 392, 396, 410, + 411, 422, 433, 437, 263, 418, 438, 0, 297, 0, + 0, 299, 249, 265, 274, 0, 428, 393, 206, 365, + 255, 196, 223, 210, 230, 244, 246, 278, 307, 313, + 342, 345, 260, 241, 221, 362, 219, 379, 399, 400, + 401, 403, 311, 237, 34, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 329, 0, 0, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, + 0, 0, 287, 0, 0, 0, 343, 0, 380, 226, + 296, 294, 407, 250, 243, 239, 225, 271, 302, 341, + 398, 335, 0, 291, 0, 0, 389, 314, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 277, 224, 194, 326, 390, 253, 69, + 0, 0, 176, 177, 178, 0, 0, 0, 0, 0, + 0, 0, 0, 216, 0, 222, 0, 0, 0, 0, + 236, 275, 242, 235, 405, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 261, 0, 315, + 0, 0, 0, 434, 0, 0, 0, 0, 0, 0, + 0, 0, 286, 0, 283, 190, 204, 0, 0, 325, + 364, 370, 0, 0, 0, 227, 0, 368, 339, 421, + 212, 251, 361, 344, 366, 0, 0, 367, 292, 409, + 356, 419, 435, 436, 234, 319, 427, 402, 432, 444, + 205, 231, 333, 395, 424, 386, 312, 406, 282, 385, + 259, 193, 290, 197, 397, 417, 217, 378, 0, 0, + 0, 199, 415, 394, 309, 279, 280, 198, 0, 360, + 238, 257, 229, 328, 412, 413, 228, 446, 207, 431, + 201, 208, 430, 321, 408, 416, 310, 301, 200, 414, + 308, 300, 285, 248, 267, 354, 295, 355, 268, 317, + 316, 318, 0, 195, 0, 391, 425, 447, 214, 0, + 0, 404, 440, 443, 0, 357, 215, 258, 247, 353, + 256, 288, 439, 441, 442, 213, 351, 264, 332, 420, + 320, 209, 270, 387, 284, 293, 0, 0, 338, 369, + 218, 423, 388, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 189, 202, 289, 0, 358, 254, 445, + 429, 426, 0, 0, 233, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 191, 192, 203, + 211, 220, 232, 245, 252, 262, 266, 269, 272, 273, + 276, 281, 298, 303, 304, 305, 306, 322, 323, 324, + 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, - 376, 377, 381, 382, 383, 384, 392, 396, 411, 412, - 422, 433, 437, 264, 419, 438, 0, 298, 0, 0, - 300, 250, 266, 275, 0, 428, 393, 207, 365, 256, - 197, 224, 211, 231, 245, 247, 279, 308, 314, 342, - 345, 261, 242, 222, 362, 220, 379, 399, 400, 401, - 403, 312, 238, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 0, 1093, 0, 0, 0, 288, 0, - 0, 0, 343, 0, 380, 227, 297, 295, 408, 251, - 244, 240, 226, 272, 303, 341, 398, 335, 0, 292, - 0, 0, 389, 315, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 225, 195, 327, 390, 254, 0, 0, 0, 177, 178, - 179, 0, 1092, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, + 376, 377, 381, 382, 383, 384, 392, 396, 410, 411, + 422, 433, 437, 263, 418, 438, 0, 297, 0, 0, + 299, 249, 265, 274, 0, 428, 393, 206, 365, 255, + 196, 223, 210, 230, 244, 246, 278, 307, 313, 342, + 345, 260, 241, 221, 362, 219, 379, 399, 400, 401, + 403, 311, 237, 329, 0, 0, 0, 0, 0, 0, + 0, 0, 240, 0, 0, 0, 0, 0, 287, 0, + 0, 0, 343, 0, 380, 226, 296, 294, 407, 250, + 243, 239, 225, 271, 302, 341, 398, 335, 0, 291, + 0, 0, 389, 314, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, + 224, 194, 326, 390, 253, 0, 0, 0, 176, 177, + 178, 0, 0, 1456, 0, 0, 1457, 0, 0, 216, + 0, 222, 0, 0, 0, 0, 236, 275, 242, 235, 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 316, 0, 0, 0, 434, - 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, - 284, 191, 205, 0, 0, 326, 364, 370, 0, 0, - 0, 228, 0, 368, 339, 421, 213, 252, 361, 344, - 366, 0, 0, 367, 293, 410, 356, 420, 435, 436, - 235, 320, 427, 402, 432, 444, 206, 232, 333, 395, - 424, 386, 313, 406, 407, 283, 385, 260, 194, 291, - 198, 397, 418, 218, 378, 0, 0, 0, 200, 416, - 394, 310, 280, 281, 199, 0, 360, 239, 258, 230, - 329, 413, 414, 229, 446, 208, 431, 202, 209, 430, - 322, 409, 417, 311, 302, 201, 415, 309, 301, 286, - 249, 268, 354, 296, 355, 269, 318, 317, 319, 0, - 196, 0, 391, 425, 447, 215, 0, 0, 404, 440, - 443, 0, 357, 216, 259, 248, 353, 257, 289, 439, - 441, 442, 214, 351, 265, 321, 210, 271, 387, 285, - 294, 0, 0, 338, 369, 219, 423, 388, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, - 290, 0, 358, 255, 445, 429, 426, 0, 0, 234, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 334, 336, - 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, - 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, - 384, 392, 396, 411, 412, 422, 433, 437, 264, 419, - 438, 0, 298, 0, 0, 300, 250, 266, 275, 0, - 428, 393, 207, 365, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 342, 345, 261, 242, 222, 362, - 220, 379, 399, 400, 401, 403, 312, 238, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, - 0, 0, 0, 288, 0, 0, 0, 343, 0, 380, - 227, 297, 295, 408, 251, 244, 240, 226, 272, 303, - 341, 398, 335, 0, 292, 0, 0, 389, 315, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 278, 225, 195, 327, 390, 254, - 0, 0, 580, 177, 178, 179, 0, 0, 0, 0, - 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, - 0, 237, 276, 243, 236, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 316, 0, 0, 0, 434, 0, 0, 0, 0, 0, - 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, - 326, 364, 370, 0, 0, 0, 228, 0, 368, 339, - 421, 213, 252, 361, 344, 366, 0, 0, 367, 293, - 410, 356, 420, 435, 436, 235, 320, 427, 402, 432, - 444, 206, 232, 333, 395, 424, 386, 313, 406, 407, - 283, 385, 260, 194, 291, 198, 397, 418, 218, 378, - 0, 0, 0, 200, 416, 394, 310, 280, 281, 199, - 0, 360, 239, 258, 230, 329, 413, 414, 229, 446, - 208, 431, 202, 209, 430, 322, 409, 417, 311, 302, - 201, 415, 309, 301, 286, 249, 268, 354, 296, 355, - 269, 318, 317, 319, 0, 196, 0, 391, 425, 447, - 215, 0, 0, 404, 440, 443, 0, 357, 216, 259, - 248, 353, 257, 289, 439, 441, 442, 214, 351, 265, - 321, 210, 271, 387, 285, 294, 0, 0, 338, 369, - 219, 423, 388, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 203, 290, 0, 358, 255, 445, - 429, 426, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, - 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, - 328, 331, 332, 334, 336, 337, 340, 346, 347, 348, - 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, - 376, 377, 381, 382, 383, 384, 392, 396, 411, 412, - 422, 433, 437, 264, 419, 438, 0, 298, 0, 0, - 300, 250, 266, 275, 0, 428, 393, 207, 365, 256, - 197, 224, 211, 231, 245, 247, 279, 308, 314, 342, - 345, 261, 242, 222, 362, 220, 379, 399, 400, 401, - 403, 312, 238, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, - 0, 0, 343, 0, 380, 227, 297, 295, 408, 251, - 244, 240, 226, 272, 303, 341, 398, 335, 0, 292, - 0, 0, 389, 315, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 225, 195, 327, 390, 254, 69, 0, 0, 177, 178, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, - 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 261, 0, 315, 0, 0, 0, 434, + 0, 0, 0, 0, 0, 0, 0, 0, 286, 0, + 283, 190, 204, 0, 0, 325, 364, 370, 0, 0, + 0, 227, 0, 368, 339, 421, 212, 251, 361, 344, + 366, 0, 0, 367, 292, 409, 356, 419, 435, 436, + 234, 319, 427, 402, 432, 444, 205, 231, 333, 395, + 424, 386, 312, 406, 282, 385, 259, 193, 290, 197, + 397, 417, 217, 378, 0, 0, 0, 199, 415, 394, + 309, 279, 280, 198, 0, 360, 238, 257, 229, 328, + 412, 413, 228, 446, 207, 431, 201, 208, 430, 321, + 408, 416, 310, 301, 200, 414, 308, 300, 285, 248, + 267, 354, 295, 355, 268, 317, 316, 318, 0, 195, + 0, 391, 425, 447, 214, 0, 0, 404, 440, 443, + 0, 357, 215, 258, 247, 353, 256, 288, 439, 441, + 442, 213, 351, 264, 332, 420, 320, 209, 270, 387, + 284, 293, 0, 0, 338, 369, 218, 423, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, + 202, 289, 0, 358, 254, 445, 429, 426, 0, 0, + 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 191, 192, 203, 211, 220, 232, 245, + 252, 262, 266, 269, 272, 273, 276, 281, 298, 303, + 304, 305, 306, 322, 323, 324, 327, 330, 331, 334, + 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, + 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, + 383, 384, 392, 396, 410, 411, 422, 433, 437, 263, + 418, 438, 0, 297, 0, 0, 299, 249, 265, 274, + 0, 428, 393, 206, 365, 255, 196, 223, 210, 230, + 244, 246, 278, 307, 313, 342, 345, 260, 241, 221, + 362, 219, 379, 399, 400, 401, 403, 311, 237, 329, + 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, + 1100, 0, 0, 0, 287, 0, 0, 0, 343, 0, + 380, 226, 296, 294, 407, 250, 243, 239, 225, 271, + 302, 341, 398, 335, 0, 291, 0, 0, 389, 314, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 277, 224, 194, 326, 390, + 253, 0, 0, 0, 176, 177, 178, 0, 1099, 0, + 0, 0, 0, 0, 0, 216, 0, 222, 0, 0, + 0, 0, 236, 275, 242, 235, 405, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, + 0, 315, 0, 0, 0, 434, 0, 0, 0, 0, + 0, 0, 0, 0, 286, 0, 283, 190, 204, 0, + 0, 325, 364, 370, 0, 0, 0, 227, 0, 368, + 339, 421, 212, 251, 361, 344, 366, 0, 0, 367, + 292, 409, 356, 419, 435, 436, 234, 319, 427, 402, + 432, 444, 205, 231, 333, 395, 424, 386, 312, 406, + 282, 385, 259, 193, 290, 197, 397, 417, 217, 378, + 0, 0, 0, 199, 415, 394, 309, 279, 280, 198, + 0, 360, 238, 257, 229, 328, 412, 413, 228, 446, + 207, 431, 201, 208, 430, 321, 408, 416, 310, 301, + 200, 414, 308, 300, 285, 248, 267, 354, 295, 355, + 268, 317, 316, 318, 0, 195, 0, 391, 425, 447, + 214, 0, 0, 404, 440, 443, 0, 357, 215, 258, + 247, 353, 256, 288, 439, 441, 442, 213, 351, 264, + 332, 420, 320, 209, 270, 387, 284, 293, 0, 0, + 338, 369, 218, 423, 388, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 189, 202, 289, 0, 358, + 254, 445, 429, 426, 0, 0, 233, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, + 192, 203, 211, 220, 232, 245, 252, 262, 266, 269, + 272, 273, 276, 281, 298, 303, 304, 305, 306, 322, + 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, + 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, + 374, 375, 376, 377, 381, 382, 383, 384, 392, 396, + 410, 411, 422, 433, 437, 263, 418, 438, 0, 297, + 0, 0, 299, 249, 265, 274, 0, 428, 393, 206, + 365, 255, 196, 223, 210, 230, 244, 246, 278, 307, + 313, 342, 345, 260, 241, 221, 362, 219, 379, 399, + 400, 401, 403, 311, 237, 329, 0, 0, 0, 0, + 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, + 287, 0, 0, 0, 343, 0, 380, 226, 296, 294, + 407, 250, 243, 239, 225, 271, 302, 341, 398, 335, + 0, 291, 0, 0, 389, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 277, 224, 194, 326, 390, 253, 0, 0, 583, + 176, 177, 178, 0, 0, 0, 0, 0, 0, 0, + 0, 216, 0, 222, 0, 0, 0, 0, 236, 275, + 242, 235, 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 316, 0, 0, 0, 434, - 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, - 284, 191, 205, 0, 0, 326, 364, 370, 0, 0, - 0, 228, 0, 368, 339, 421, 213, 252, 361, 344, - 366, 0, 0, 367, 293, 410, 356, 420, 435, 436, - 235, 320, 427, 402, 432, 444, 206, 232, 333, 395, - 424, 386, 313, 406, 407, 283, 385, 260, 194, 291, - 198, 397, 418, 218, 378, 0, 0, 0, 200, 416, - 394, 310, 280, 281, 199, 0, 360, 239, 258, 230, - 329, 413, 414, 229, 446, 208, 431, 202, 209, 430, - 322, 409, 417, 311, 302, 201, 415, 309, 301, 286, - 249, 268, 354, 296, 355, 269, 318, 317, 319, 0, - 196, 0, 391, 425, 447, 215, 0, 0, 404, 440, - 443, 0, 357, 216, 259, 248, 353, 257, 289, 439, - 441, 442, 214, 351, 265, 321, 210, 271, 387, 285, - 294, 0, 0, 338, 369, 219, 423, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, - 290, 0, 358, 255, 445, 429, 426, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 334, 336, - 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, - 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, - 384, 392, 396, 411, 412, 422, 433, 437, 264, 419, - 438, 0, 298, 0, 0, 300, 250, 266, 275, 0, - 428, 393, 207, 365, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 342, 345, 261, 242, 222, 362, - 220, 379, 399, 400, 401, 403, 312, 238, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, - 0, 0, 0, 288, 0, 0, 0, 343, 0, 380, - 227, 297, 295, 408, 251, 244, 240, 226, 272, 303, - 341, 398, 335, 0, 292, 0, 0, 389, 315, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 278, 225, 195, 327, 390, 254, - 0, 0, 0, 177, 178, 179, 0, 1427, 0, 0, - 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, - 0, 237, 276, 243, 236, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 316, 0, 0, 0, 434, 0, 0, 0, 0, 0, - 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, - 326, 364, 370, 0, 0, 0, 228, 0, 368, 339, - 421, 213, 252, 361, 344, 366, 0, 0, 367, 293, - 410, 356, 420, 435, 436, 235, 320, 427, 402, 432, - 444, 206, 232, 333, 395, 424, 386, 313, 406, 407, - 283, 385, 260, 194, 291, 198, 397, 418, 218, 378, - 0, 0, 0, 200, 416, 394, 310, 280, 281, 199, - 0, 360, 239, 258, 230, 329, 413, 414, 229, 446, - 208, 431, 202, 209, 430, 322, 409, 417, 311, 302, - 201, 415, 309, 301, 286, 249, 268, 354, 296, 355, - 269, 318, 317, 319, 0, 196, 0, 391, 425, 447, - 215, 0, 0, 404, 440, 443, 0, 357, 216, 259, - 248, 353, 257, 289, 439, 441, 442, 214, 351, 265, - 321, 210, 271, 387, 285, 294, 0, 0, 338, 369, - 219, 423, 388, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 203, 290, 0, 358, 255, 445, - 429, 426, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, - 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, - 328, 331, 332, 334, 336, 337, 340, 346, 347, 348, + 0, 0, 0, 0, 0, 261, 0, 315, 0, 0, + 0, 434, 0, 0, 0, 0, 0, 0, 0, 0, + 286, 0, 283, 190, 204, 0, 0, 325, 364, 370, + 0, 0, 0, 227, 0, 368, 339, 421, 212, 251, + 361, 344, 366, 0, 0, 367, 292, 409, 356, 419, + 435, 436, 234, 319, 427, 402, 432, 444, 205, 231, + 333, 395, 424, 386, 312, 406, 282, 385, 259, 193, + 290, 197, 397, 417, 217, 378, 0, 0, 0, 199, + 415, 394, 309, 279, 280, 198, 0, 360, 238, 257, + 229, 328, 412, 413, 228, 446, 207, 431, 201, 208, + 430, 321, 408, 416, 310, 301, 200, 414, 308, 300, + 285, 248, 267, 354, 295, 355, 268, 317, 316, 318, + 0, 195, 0, 391, 425, 447, 214, 0, 0, 404, + 440, 443, 0, 357, 215, 258, 247, 353, 256, 288, + 439, 441, 442, 213, 351, 264, 332, 420, 320, 209, + 270, 387, 284, 293, 0, 0, 338, 369, 218, 423, + 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 189, 202, 289, 0, 358, 254, 445, 429, 426, + 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 191, 192, 203, 211, 220, + 232, 245, 252, 262, 266, 269, 272, 273, 276, 281, + 298, 303, 304, 305, 306, 322, 323, 324, 327, 330, + 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, + 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, + 381, 382, 383, 384, 392, 396, 410, 411, 422, 433, + 437, 263, 418, 438, 0, 297, 0, 0, 299, 249, + 265, 274, 0, 428, 393, 206, 365, 255, 196, 223, + 210, 230, 244, 246, 278, 307, 313, 342, 345, 260, + 241, 221, 362, 219, 379, 399, 400, 401, 403, 311, + 237, 329, 0, 0, 0, 0, 0, 0, 0, 0, + 240, 0, 0, 0, 0, 0, 287, 0, 0, 0, + 343, 0, 380, 226, 296, 294, 407, 250, 243, 239, + 225, 271, 302, 341, 398, 335, 0, 291, 0, 0, + 389, 314, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 277, 224, 194, + 326, 390, 253, 69, 0, 0, 176, 177, 178, 0, + 0, 0, 0, 0, 0, 0, 0, 216, 0, 222, + 0, 0, 0, 0, 236, 275, 242, 235, 405, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 261, 0, 315, 0, 0, 0, 434, 0, 0, + 0, 0, 0, 0, 0, 0, 286, 0, 283, 190, + 204, 0, 0, 325, 364, 370, 0, 0, 0, 227, + 0, 368, 339, 421, 212, 251, 361, 344, 366, 0, + 0, 367, 292, 409, 356, 419, 435, 436, 234, 319, + 427, 402, 432, 444, 205, 231, 333, 395, 424, 386, + 312, 406, 282, 385, 259, 193, 290, 197, 397, 417, + 217, 378, 0, 0, 0, 199, 415, 394, 309, 279, + 280, 198, 0, 360, 238, 257, 229, 328, 412, 413, + 228, 446, 207, 431, 201, 208, 430, 321, 408, 416, + 310, 301, 200, 414, 308, 300, 285, 248, 267, 354, + 295, 355, 268, 317, 316, 318, 0, 195, 0, 391, + 425, 447, 214, 0, 0, 404, 440, 443, 0, 357, + 215, 258, 247, 353, 256, 288, 439, 441, 442, 213, + 351, 264, 332, 420, 320, 209, 270, 387, 284, 293, + 0, 0, 338, 369, 218, 423, 388, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 202, 289, + 0, 358, 254, 445, 429, 426, 0, 0, 233, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 191, 192, 203, 211, 220, 232, 245, 252, 262, + 266, 269, 272, 273, 276, 281, 298, 303, 304, 305, + 306, 322, 323, 324, 327, 330, 331, 334, 336, 337, + 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, + 372, 373, 374, 375, 376, 377, 381, 382, 383, 384, + 392, 396, 410, 411, 422, 433, 437, 263, 418, 438, + 0, 297, 0, 0, 299, 249, 265, 274, 0, 428, + 393, 206, 365, 255, 196, 223, 210, 230, 244, 246, + 278, 307, 313, 342, 345, 260, 241, 221, 362, 219, + 379, 399, 400, 401, 403, 311, 237, 329, 0, 0, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, + 0, 0, 287, 0, 0, 0, 343, 0, 380, 226, + 296, 294, 407, 250, 243, 239, 225, 271, 302, 341, + 398, 335, 0, 291, 0, 0, 389, 314, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 277, 224, 194, 326, 390, 253, 0, + 0, 0, 176, 177, 178, 0, 1438, 0, 0, 0, + 0, 0, 0, 216, 0, 222, 0, 0, 0, 0, + 236, 275, 242, 235, 405, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 261, 0, 315, + 0, 0, 0, 434, 0, 0, 0, 0, 0, 0, + 0, 0, 286, 0, 283, 190, 204, 0, 0, 325, + 364, 370, 0, 0, 0, 227, 0, 368, 339, 421, + 212, 251, 361, 344, 366, 0, 0, 367, 292, 409, + 356, 419, 435, 436, 234, 319, 427, 402, 432, 444, + 205, 231, 333, 395, 424, 386, 312, 406, 282, 385, + 259, 193, 290, 197, 397, 417, 217, 378, 0, 0, + 0, 199, 415, 394, 309, 279, 280, 198, 0, 360, + 238, 257, 229, 328, 412, 413, 228, 446, 207, 431, + 201, 208, 430, 321, 408, 416, 310, 301, 200, 414, + 308, 300, 285, 248, 267, 354, 295, 355, 268, 317, + 316, 318, 0, 195, 0, 391, 425, 447, 214, 0, + 0, 404, 440, 443, 0, 357, 215, 258, 247, 353, + 256, 288, 439, 441, 442, 213, 351, 264, 332, 420, + 320, 209, 270, 387, 284, 293, 0, 0, 338, 369, + 218, 423, 388, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 189, 202, 289, 0, 358, 254, 445, + 429, 426, 0, 0, 233, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 191, 192, 203, + 211, 220, 232, 245, 252, 262, 266, 269, 272, 273, + 276, 281, 298, 303, 304, 305, 306, 322, 323, 324, + 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, - 376, 377, 381, 382, 383, 384, 392, 396, 411, 412, - 422, 433, 437, 264, 419, 438, 0, 298, 0, 0, - 300, 250, 266, 275, 0, 428, 393, 207, 365, 256, - 197, 224, 211, 231, 245, 247, 279, 308, 314, 342, - 345, 261, 242, 222, 362, 220, 379, 399, 400, 401, - 403, 312, 238, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, - 0, 0, 343, 0, 380, 227, 297, 295, 408, 251, - 244, 240, 226, 272, 303, 341, 398, 335, 0, 292, - 0, 0, 389, 315, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 225, 195, 327, 390, 254, 0, 0, 0, 177, 178, - 179, 0, 1062, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, + 376, 377, 381, 382, 383, 384, 392, 396, 410, 411, + 422, 433, 437, 263, 418, 438, 0, 297, 0, 0, + 299, 249, 265, 274, 0, 428, 393, 206, 365, 255, + 196, 223, 210, 230, 244, 246, 278, 307, 313, 342, + 345, 260, 241, 221, 362, 219, 379, 399, 400, 401, + 403, 311, 237, 329, 0, 0, 0, 0, 0, 0, + 0, 0, 240, 0, 0, 0, 0, 0, 287, 0, + 0, 0, 343, 0, 380, 226, 296, 294, 407, 250, + 243, 239, 225, 271, 302, 341, 398, 335, 0, 291, + 0, 0, 389, 314, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, + 224, 194, 326, 390, 253, 0, 0, 0, 176, 177, + 178, 0, 1069, 0, 0, 0, 0, 0, 0, 216, + 0, 222, 0, 0, 0, 0, 236, 275, 242, 235, 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 316, 0, 0, 0, 434, - 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, - 284, 191, 205, 0, 0, 326, 364, 370, 0, 0, - 0, 228, 0, 368, 339, 421, 213, 252, 361, 344, - 366, 0, 0, 367, 293, 410, 356, 420, 435, 436, - 235, 320, 427, 402, 432, 444, 206, 232, 333, 395, - 424, 386, 313, 406, 407, 283, 385, 260, 194, 291, - 198, 397, 418, 218, 378, 0, 0, 0, 200, 416, - 394, 310, 280, 281, 199, 0, 360, 239, 258, 230, - 329, 413, 414, 229, 446, 208, 431, 202, 209, 430, - 322, 409, 417, 311, 302, 201, 415, 309, 301, 286, - 249, 268, 354, 296, 355, 269, 318, 317, 319, 0, - 196, 0, 391, 425, 447, 215, 0, 0, 404, 440, - 443, 0, 357, 216, 259, 248, 353, 257, 289, 439, - 441, 442, 214, 351, 265, 321, 210, 271, 387, 285, - 294, 0, 0, 338, 369, 219, 423, 388, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, - 290, 0, 358, 255, 445, 429, 426, 0, 0, 234, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 334, 336, - 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, - 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, - 384, 392, 396, 411, 412, 422, 433, 437, 264, 419, - 438, 0, 298, 0, 0, 300, 250, 266, 275, 0, - 428, 393, 207, 365, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 342, 345, 261, 242, 222, 362, - 220, 379, 399, 400, 401, 403, 312, 238, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, - 0, 0, 0, 288, 0, 0, 0, 343, 0, 380, - 227, 297, 295, 408, 251, 244, 240, 226, 272, 303, - 341, 398, 335, 0, 292, 0, 0, 389, 315, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 278, 225, 195, 327, 390, 254, - 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, - 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, - 0, 237, 276, 243, 236, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 316, 0, 0, 0, 434, 0, 0, 0, 0, 0, - 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, - 326, 364, 370, 0, 0, 0, 228, 0, 368, 339, - 421, 213, 252, 361, 344, 366, 0, 0, 367, 293, - 410, 356, 420, 435, 436, 235, 320, 427, 402, 432, - 444, 206, 232, 333, 395, 424, 386, 313, 406, 407, - 283, 385, 260, 194, 291, 198, 397, 418, 218, 378, - 0, 0, 0, 200, 416, 394, 310, 280, 281, 199, - 0, 360, 239, 258, 230, 329, 413, 414, 229, 446, - 208, 431, 202, 209, 430, 322, 409, 417, 311, 302, - 201, 415, 309, 301, 286, 249, 268, 354, 296, 355, - 269, 318, 317, 319, 0, 196, 0, 391, 425, 447, - 215, 0, 0, 404, 440, 443, 0, 357, 216, 259, - 248, 353, 257, 289, 439, 441, 442, 214, 351, 265, - 321, 210, 271, 387, 285, 294, 0, 0, 338, 369, - 219, 423, 388, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 203, 290, 1330, 358, 255, 445, - 429, 426, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, - 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, - 328, 331, 332, 334, 336, 337, 340, 346, 347, 348, - 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, - 376, 377, 381, 382, 383, 384, 392, 396, 411, 412, - 422, 433, 437, 264, 419, 438, 0, 298, 0, 0, - 300, 250, 266, 275, 0, 428, 393, 207, 365, 256, - 197, 224, 211, 231, 245, 247, 279, 308, 314, 342, - 345, 261, 242, 222, 362, 220, 379, 399, 400, 401, - 403, 312, 238, 330, 0, 1217, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, - 0, 0, 343, 0, 380, 227, 297, 295, 408, 251, - 244, 240, 226, 272, 303, 341, 398, 335, 0, 292, - 0, 0, 389, 315, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 225, 195, 327, 390, 254, 0, 0, 0, 177, 178, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, - 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 261, 0, 315, 0, 0, 0, 434, + 0, 0, 0, 0, 0, 0, 0, 0, 286, 0, + 283, 190, 204, 0, 0, 325, 364, 370, 0, 0, + 0, 227, 0, 368, 339, 421, 212, 251, 361, 344, + 366, 0, 0, 367, 292, 409, 356, 419, 435, 436, + 234, 319, 427, 402, 432, 444, 205, 231, 333, 395, + 424, 386, 312, 406, 282, 385, 259, 193, 290, 197, + 397, 417, 217, 378, 0, 0, 0, 199, 415, 394, + 309, 279, 280, 198, 0, 360, 238, 257, 229, 328, + 412, 413, 228, 446, 207, 431, 201, 208, 430, 321, + 408, 416, 310, 301, 200, 414, 308, 300, 285, 248, + 267, 354, 295, 355, 268, 317, 316, 318, 0, 195, + 0, 391, 425, 447, 214, 0, 0, 404, 440, 443, + 0, 357, 215, 258, 247, 353, 256, 288, 439, 441, + 442, 213, 351, 264, 332, 420, 320, 209, 270, 387, + 284, 293, 0, 0, 338, 369, 218, 423, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, + 202, 289, 0, 358, 254, 445, 429, 426, 0, 0, + 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 191, 192, 203, 211, 220, 232, 245, + 252, 262, 266, 269, 272, 273, 276, 281, 298, 303, + 304, 305, 306, 322, 323, 324, 327, 330, 331, 334, + 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, + 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, + 383, 384, 392, 396, 410, 411, 422, 433, 437, 263, + 418, 438, 0, 297, 0, 0, 299, 249, 265, 274, + 0, 428, 393, 206, 365, 255, 196, 223, 210, 230, + 244, 246, 278, 307, 313, 342, 345, 260, 241, 221, + 362, 219, 379, 399, 400, 401, 403, 311, 237, 329, + 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, + 0, 0, 0, 0, 287, 0, 0, 0, 343, 0, + 380, 226, 296, 294, 407, 250, 243, 239, 225, 271, + 302, 341, 398, 335, 0, 291, 0, 0, 389, 314, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 277, 224, 194, 326, 390, + 253, 0, 0, 0, 176, 177, 178, 0, 0, 0, + 0, 0, 0, 0, 0, 216, 0, 222, 0, 0, + 0, 0, 236, 275, 242, 235, 405, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, + 0, 315, 0, 0, 0, 434, 0, 0, 0, 0, + 0, 0, 0, 0, 286, 0, 283, 190, 204, 0, + 0, 325, 364, 370, 0, 0, 0, 227, 0, 368, + 339, 421, 212, 251, 361, 344, 366, 0, 0, 367, + 292, 409, 356, 419, 435, 436, 234, 319, 427, 402, + 432, 444, 205, 231, 333, 395, 424, 386, 312, 406, + 282, 385, 259, 193, 290, 197, 397, 417, 217, 378, + 0, 0, 0, 199, 415, 394, 309, 279, 280, 198, + 0, 360, 238, 257, 229, 328, 412, 413, 228, 446, + 207, 431, 201, 208, 430, 321, 408, 416, 310, 301, + 200, 414, 308, 300, 285, 248, 267, 354, 295, 355, + 268, 317, 316, 318, 0, 195, 0, 391, 425, 447, + 214, 0, 0, 404, 440, 443, 0, 357, 215, 258, + 247, 353, 256, 288, 439, 441, 442, 213, 351, 264, + 332, 420, 320, 209, 270, 387, 284, 293, 0, 0, + 338, 369, 218, 423, 388, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 189, 202, 289, 1341, 358, + 254, 445, 429, 426, 0, 0, 233, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, + 192, 203, 211, 220, 232, 245, 252, 262, 266, 269, + 272, 273, 276, 281, 298, 303, 304, 305, 306, 322, + 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, + 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, + 374, 375, 376, 377, 381, 382, 383, 384, 392, 396, + 410, 411, 422, 433, 437, 263, 418, 438, 0, 297, + 0, 0, 299, 249, 265, 274, 0, 428, 393, 206, + 365, 255, 196, 223, 210, 230, 244, 246, 278, 307, + 313, 342, 345, 260, 241, 221, 362, 219, 379, 399, + 400, 401, 403, 311, 237, 329, 0, 1224, 0, 0, + 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, + 287, 0, 0, 0, 343, 0, 380, 226, 296, 294, + 407, 250, 243, 239, 225, 271, 302, 341, 398, 335, + 0, 291, 0, 0, 389, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 277, 224, 194, 326, 390, 253, 0, 0, 0, + 176, 177, 178, 0, 0, 0, 0, 0, 0, 0, + 0, 216, 0, 222, 0, 0, 0, 0, 236, 275, + 242, 235, 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 316, 0, 0, 0, 434, - 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, - 284, 191, 205, 0, 0, 326, 364, 370, 0, 0, - 0, 228, 0, 368, 339, 421, 213, 252, 361, 344, - 366, 0, 0, 367, 293, 410, 356, 420, 435, 436, - 235, 320, 427, 402, 432, 444, 206, 232, 333, 395, - 424, 386, 313, 406, 407, 283, 385, 260, 194, 291, - 198, 397, 418, 218, 378, 0, 0, 0, 200, 416, - 394, 310, 280, 281, 199, 0, 360, 239, 258, 230, - 329, 413, 414, 229, 446, 208, 431, 202, 209, 430, - 322, 409, 417, 311, 302, 201, 415, 309, 301, 286, - 249, 268, 354, 296, 355, 269, 318, 317, 319, 0, - 196, 0, 391, 425, 447, 215, 0, 0, 404, 440, - 443, 0, 357, 216, 259, 248, 353, 257, 289, 439, - 441, 442, 214, 351, 265, 321, 210, 271, 387, 285, - 294, 0, 0, 338, 369, 219, 423, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, - 290, 0, 358, 255, 445, 429, 426, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 334, 336, - 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, - 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, - 384, 392, 396, 411, 412, 422, 433, 437, 264, 419, - 438, 0, 298, 0, 0, 300, 250, 266, 275, 0, - 428, 393, 207, 365, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 342, 345, 261, 242, 222, 362, - 220, 379, 399, 400, 401, 403, 312, 238, 330, 0, - 1215, 0, 0, 0, 0, 0, 0, 241, 0, 0, - 0, 0, 0, 288, 0, 0, 0, 343, 0, 380, - 227, 297, 295, 408, 251, 244, 240, 226, 272, 303, - 341, 398, 335, 0, 292, 0, 0, 389, 315, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 278, 225, 195, 327, 390, 254, - 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, - 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, - 0, 237, 276, 243, 236, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 316, 0, 0, 0, 434, 0, 0, 0, 0, 0, - 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, - 326, 364, 370, 0, 0, 0, 228, 0, 368, 339, - 421, 213, 252, 361, 344, 366, 0, 0, 367, 293, - 410, 356, 420, 435, 436, 235, 320, 427, 402, 432, - 444, 206, 232, 333, 395, 424, 386, 313, 406, 407, - 283, 385, 260, 194, 291, 198, 397, 418, 218, 378, - 0, 0, 0, 200, 416, 394, 310, 280, 281, 199, - 0, 360, 239, 258, 230, 329, 413, 414, 229, 446, - 208, 431, 202, 209, 430, 322, 409, 417, 311, 302, - 201, 415, 309, 301, 286, 249, 268, 354, 296, 355, - 269, 318, 317, 319, 0, 196, 0, 391, 425, 447, - 215, 0, 0, 404, 440, 443, 0, 357, 216, 259, - 248, 353, 257, 289, 439, 441, 442, 214, 351, 265, - 321, 210, 271, 387, 285, 294, 0, 0, 338, 369, - 219, 423, 388, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 203, 290, 0, 358, 255, 445, - 429, 426, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, - 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, - 328, 331, 332, 334, 336, 337, 340, 346, 347, 348, + 0, 0, 0, 0, 0, 261, 0, 315, 0, 0, + 0, 434, 0, 0, 0, 0, 0, 0, 0, 0, + 286, 0, 283, 190, 204, 0, 0, 325, 364, 370, + 0, 0, 0, 227, 0, 368, 339, 421, 212, 251, + 361, 344, 366, 0, 0, 367, 292, 409, 356, 419, + 435, 436, 234, 319, 427, 402, 432, 444, 205, 231, + 333, 395, 424, 386, 312, 406, 282, 385, 259, 193, + 290, 197, 397, 417, 217, 378, 0, 0, 0, 199, + 415, 394, 309, 279, 280, 198, 0, 360, 238, 257, + 229, 328, 412, 413, 228, 446, 207, 431, 201, 208, + 430, 321, 408, 416, 310, 301, 200, 414, 308, 300, + 285, 248, 267, 354, 295, 355, 268, 317, 316, 318, + 0, 195, 0, 391, 425, 447, 214, 0, 0, 404, + 440, 443, 0, 357, 215, 258, 247, 353, 256, 288, + 439, 441, 442, 213, 351, 264, 332, 420, 320, 209, + 270, 387, 284, 293, 0, 0, 338, 369, 218, 423, + 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 189, 202, 289, 0, 358, 254, 445, 429, 426, + 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 191, 192, 203, 211, 220, + 232, 245, 252, 262, 266, 269, 272, 273, 276, 281, + 298, 303, 304, 305, 306, 322, 323, 324, 327, 330, + 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, + 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, + 381, 382, 383, 384, 392, 396, 410, 411, 422, 433, + 437, 263, 418, 438, 0, 297, 0, 0, 299, 249, + 265, 274, 0, 428, 393, 206, 365, 255, 196, 223, + 210, 230, 244, 246, 278, 307, 313, 342, 345, 260, + 241, 221, 362, 219, 379, 399, 400, 401, 403, 311, + 237, 329, 0, 1222, 0, 0, 0, 0, 0, 0, + 240, 0, 0, 0, 0, 0, 287, 0, 0, 0, + 343, 0, 380, 226, 296, 294, 407, 250, 243, 239, + 225, 271, 302, 341, 398, 335, 0, 291, 0, 0, + 389, 314, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 277, 224, 194, + 326, 390, 253, 0, 0, 0, 176, 177, 178, 0, + 0, 0, 0, 0, 0, 0, 0, 216, 0, 222, + 0, 0, 0, 0, 236, 275, 242, 235, 405, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 261, 0, 315, 0, 0, 0, 434, 0, 0, + 0, 0, 0, 0, 0, 0, 286, 0, 283, 190, + 204, 0, 0, 325, 364, 370, 0, 0, 0, 227, + 0, 368, 339, 421, 212, 251, 361, 344, 366, 0, + 0, 367, 292, 409, 356, 419, 435, 436, 234, 319, + 427, 402, 432, 444, 205, 231, 333, 395, 424, 386, + 312, 406, 282, 385, 259, 193, 290, 197, 397, 417, + 217, 378, 0, 0, 0, 199, 415, 394, 309, 279, + 280, 198, 0, 360, 238, 257, 229, 328, 412, 413, + 228, 446, 207, 431, 201, 208, 430, 321, 408, 416, + 310, 301, 200, 414, 308, 300, 285, 248, 267, 354, + 295, 355, 268, 317, 316, 318, 0, 195, 0, 391, + 425, 447, 214, 0, 0, 404, 440, 443, 0, 357, + 215, 258, 247, 353, 256, 288, 439, 441, 442, 213, + 351, 264, 332, 420, 320, 209, 270, 387, 284, 293, + 0, 0, 338, 369, 218, 423, 388, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 202, 289, + 0, 358, 254, 445, 429, 426, 0, 0, 233, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 191, 192, 203, 211, 220, 232, 245, 252, 262, + 266, 269, 272, 273, 276, 281, 298, 303, 304, 305, + 306, 322, 323, 324, 327, 330, 331, 334, 336, 337, + 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, + 372, 373, 374, 375, 376, 377, 381, 382, 383, 384, + 392, 396, 410, 411, 422, 433, 437, 263, 418, 438, + 0, 297, 0, 0, 299, 249, 265, 274, 0, 428, + 393, 206, 365, 255, 196, 223, 210, 230, 244, 246, + 278, 307, 313, 342, 345, 260, 241, 221, 362, 219, + 379, 399, 400, 401, 403, 311, 237, 329, 0, 1220, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, + 0, 0, 287, 0, 0, 0, 343, 0, 380, 226, + 296, 294, 407, 250, 243, 239, 225, 271, 302, 341, + 398, 335, 0, 291, 0, 0, 389, 314, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 277, 224, 194, 326, 390, 253, 0, + 0, 0, 176, 177, 178, 0, 0, 0, 0, 0, + 0, 0, 0, 216, 0, 222, 0, 0, 0, 0, + 236, 275, 242, 235, 405, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 261, 0, 315, + 0, 0, 0, 434, 0, 0, 0, 0, 0, 0, + 0, 0, 286, 0, 283, 190, 204, 0, 0, 325, + 364, 370, 0, 0, 0, 227, 0, 368, 339, 421, + 212, 251, 361, 344, 366, 0, 0, 367, 292, 409, + 356, 419, 435, 436, 234, 319, 427, 402, 432, 444, + 205, 231, 333, 395, 424, 386, 312, 406, 282, 385, + 259, 193, 290, 197, 397, 417, 217, 378, 0, 0, + 0, 199, 415, 394, 309, 279, 280, 198, 0, 360, + 238, 257, 229, 328, 412, 413, 228, 446, 207, 431, + 201, 208, 430, 321, 408, 416, 310, 301, 200, 414, + 308, 300, 285, 248, 267, 354, 295, 355, 268, 317, + 316, 318, 0, 195, 0, 391, 425, 447, 214, 0, + 0, 404, 440, 443, 0, 357, 215, 258, 247, 353, + 256, 288, 439, 441, 442, 213, 351, 264, 332, 420, + 320, 209, 270, 387, 284, 293, 0, 0, 338, 369, + 218, 423, 388, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 189, 202, 289, 0, 358, 254, 445, + 429, 426, 0, 0, 233, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 191, 192, 203, + 211, 220, 232, 245, 252, 262, 266, 269, 272, 273, + 276, 281, 298, 303, 304, 305, 306, 322, 323, 324, + 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, - 376, 377, 381, 382, 383, 384, 392, 396, 411, 412, - 422, 433, 437, 264, 419, 438, 0, 298, 0, 0, - 300, 250, 266, 275, 0, 428, 393, 207, 365, 256, - 197, 224, 211, 231, 245, 247, 279, 308, 314, 342, - 345, 261, 242, 222, 362, 220, 379, 399, 400, 401, - 403, 312, 238, 330, 0, 1213, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, - 0, 0, 343, 0, 380, 227, 297, 295, 408, 251, - 244, 240, 226, 272, 303, 341, 398, 335, 0, 292, - 0, 0, 389, 315, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 225, 195, 327, 390, 254, 0, 0, 0, 177, 178, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, + 376, 377, 381, 382, 383, 384, 392, 396, 410, 411, + 422, 433, 437, 263, 418, 438, 0, 297, 0, 0, + 299, 249, 265, 274, 0, 428, 393, 206, 365, 255, + 196, 223, 210, 230, 244, 246, 278, 307, 313, 342, + 345, 260, 241, 221, 362, 219, 379, 399, 400, 401, + 403, 311, 237, 329, 0, 1218, 0, 0, 0, 0, + 0, 0, 240, 0, 0, 0, 0, 0, 287, 0, + 0, 0, 343, 0, 380, 226, 296, 294, 407, 250, + 243, 239, 225, 271, 302, 341, 398, 335, 0, 291, + 0, 0, 389, 314, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, + 224, 194, 326, 390, 253, 0, 0, 0, 176, 177, + 178, 0, 0, 0, 0, 0, 0, 0, 0, 216, + 0, 222, 0, 0, 0, 0, 236, 275, 242, 235, 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 316, 0, 0, 0, 434, - 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, - 284, 191, 205, 0, 0, 326, 364, 370, 0, 0, - 0, 228, 0, 368, 339, 421, 213, 252, 361, 344, - 366, 0, 0, 367, 293, 410, 356, 420, 435, 436, - 235, 320, 427, 402, 432, 444, 206, 232, 333, 395, - 424, 386, 313, 406, 407, 283, 385, 260, 194, 291, - 198, 397, 418, 218, 378, 0, 0, 0, 200, 416, - 394, 310, 280, 281, 199, 0, 360, 239, 258, 230, - 329, 413, 414, 229, 446, 208, 431, 202, 209, 430, - 322, 409, 417, 311, 302, 201, 415, 309, 301, 286, - 249, 268, 354, 296, 355, 269, 318, 317, 319, 0, - 196, 0, 391, 425, 447, 215, 0, 0, 404, 440, - 443, 0, 357, 216, 259, 248, 353, 257, 289, 439, - 441, 442, 214, 351, 265, 321, 210, 271, 387, 285, - 294, 0, 0, 338, 369, 219, 423, 388, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, - 290, 0, 358, 255, 445, 429, 426, 0, 0, 234, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 334, 336, - 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, - 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, - 384, 392, 396, 411, 412, 422, 433, 437, 264, 419, - 438, 0, 298, 0, 0, 300, 250, 266, 275, 0, - 428, 393, 207, 365, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 342, 345, 261, 242, 222, 362, - 220, 379, 399, 400, 401, 403, 312, 238, 330, 0, - 1211, 0, 0, 0, 0, 0, 0, 241, 0, 0, - 0, 0, 0, 288, 0, 0, 0, 343, 0, 380, - 227, 297, 295, 408, 251, 244, 240, 226, 272, 303, - 341, 398, 335, 0, 292, 0, 0, 389, 315, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 278, 225, 195, 327, 390, 254, - 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, - 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, - 0, 237, 276, 243, 236, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 316, 0, 0, 0, 434, 0, 0, 0, 0, 0, - 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, - 326, 364, 370, 0, 0, 0, 228, 0, 368, 339, - 421, 213, 252, 361, 344, 366, 0, 0, 367, 293, - 410, 356, 420, 435, 436, 235, 320, 427, 402, 432, - 444, 206, 232, 333, 395, 424, 386, 313, 406, 407, - 283, 385, 260, 194, 291, 198, 397, 418, 218, 378, - 0, 0, 0, 200, 416, 394, 310, 280, 281, 199, - 0, 360, 239, 258, 230, 329, 413, 414, 229, 446, - 208, 431, 202, 209, 430, 322, 409, 417, 311, 302, - 201, 415, 309, 301, 286, 249, 268, 354, 296, 355, - 269, 318, 317, 319, 0, 196, 0, 391, 425, 447, - 215, 0, 0, 404, 440, 443, 0, 357, 216, 259, - 248, 353, 257, 289, 439, 441, 442, 214, 351, 265, - 321, 210, 271, 387, 285, 294, 0, 0, 338, 369, - 219, 423, 388, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 203, 290, 0, 358, 255, 445, - 429, 426, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, - 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, - 328, 331, 332, 334, 336, 337, 340, 346, 347, 348, - 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, - 376, 377, 381, 382, 383, 384, 392, 396, 411, 412, - 422, 433, 437, 264, 419, 438, 0, 298, 0, 0, - 300, 250, 266, 275, 0, 428, 393, 207, 365, 256, - 197, 224, 211, 231, 245, 247, 279, 308, 314, 342, - 345, 261, 242, 222, 362, 220, 379, 399, 400, 401, - 403, 312, 238, 330, 0, 1209, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, - 0, 0, 343, 0, 380, 227, 297, 295, 408, 251, - 244, 240, 226, 272, 303, 341, 398, 335, 0, 292, - 0, 0, 389, 315, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 225, 195, 327, 390, 254, 0, 0, 0, 177, 178, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, - 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 261, 0, 315, 0, 0, 0, 434, + 0, 0, 0, 0, 0, 0, 0, 0, 286, 0, + 283, 190, 204, 0, 0, 325, 364, 370, 0, 0, + 0, 227, 0, 368, 339, 421, 212, 251, 361, 344, + 366, 0, 0, 367, 292, 409, 356, 419, 435, 436, + 234, 319, 427, 402, 432, 444, 205, 231, 333, 395, + 424, 386, 312, 406, 282, 385, 259, 193, 290, 197, + 397, 417, 217, 378, 0, 0, 0, 199, 415, 394, + 309, 279, 280, 198, 0, 360, 238, 257, 229, 328, + 412, 413, 228, 446, 207, 431, 201, 208, 430, 321, + 408, 416, 310, 301, 200, 414, 308, 300, 285, 248, + 267, 354, 295, 355, 268, 317, 316, 318, 0, 195, + 0, 391, 425, 447, 214, 0, 0, 404, 440, 443, + 0, 357, 215, 258, 247, 353, 256, 288, 439, 441, + 442, 213, 351, 264, 332, 420, 320, 209, 270, 387, + 284, 293, 0, 0, 338, 369, 218, 423, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, + 202, 289, 0, 358, 254, 445, 429, 426, 0, 0, + 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 191, 192, 203, 211, 220, 232, 245, + 252, 262, 266, 269, 272, 273, 276, 281, 298, 303, + 304, 305, 306, 322, 323, 324, 327, 330, 331, 334, + 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, + 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, + 383, 384, 392, 396, 410, 411, 422, 433, 437, 263, + 418, 438, 0, 297, 0, 0, 299, 249, 265, 274, + 0, 428, 393, 206, 365, 255, 196, 223, 210, 230, + 244, 246, 278, 307, 313, 342, 345, 260, 241, 221, + 362, 219, 379, 399, 400, 401, 403, 311, 237, 329, + 0, 1216, 0, 0, 0, 0, 0, 0, 240, 0, + 0, 0, 0, 0, 287, 0, 0, 0, 343, 0, + 380, 226, 296, 294, 407, 250, 243, 239, 225, 271, + 302, 341, 398, 335, 0, 291, 0, 0, 389, 314, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 277, 224, 194, 326, 390, + 253, 0, 0, 0, 176, 177, 178, 0, 0, 0, + 0, 0, 0, 0, 0, 216, 0, 222, 0, 0, + 0, 0, 236, 275, 242, 235, 405, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, + 0, 315, 0, 0, 0, 434, 0, 0, 0, 0, + 0, 0, 0, 0, 286, 0, 283, 190, 204, 0, + 0, 325, 364, 370, 0, 0, 0, 227, 0, 368, + 339, 421, 212, 251, 361, 344, 366, 0, 0, 367, + 292, 409, 356, 419, 435, 436, 234, 319, 427, 402, + 432, 444, 205, 231, 333, 395, 424, 386, 312, 406, + 282, 385, 259, 193, 290, 197, 397, 417, 217, 378, + 0, 0, 0, 199, 415, 394, 309, 279, 280, 198, + 0, 360, 238, 257, 229, 328, 412, 413, 228, 446, + 207, 431, 201, 208, 430, 321, 408, 416, 310, 301, + 200, 414, 308, 300, 285, 248, 267, 354, 295, 355, + 268, 317, 316, 318, 0, 195, 0, 391, 425, 447, + 214, 0, 0, 404, 440, 443, 0, 357, 215, 258, + 247, 353, 256, 288, 439, 441, 442, 213, 351, 264, + 332, 420, 320, 209, 270, 387, 284, 293, 0, 0, + 338, 369, 218, 423, 388, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 189, 202, 289, 0, 358, + 254, 445, 429, 426, 0, 0, 233, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, + 192, 203, 211, 220, 232, 245, 252, 262, 266, 269, + 272, 273, 276, 281, 298, 303, 304, 305, 306, 322, + 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, + 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, + 374, 375, 376, 377, 381, 382, 383, 384, 392, 396, + 410, 411, 422, 433, 437, 263, 418, 438, 0, 297, + 0, 0, 299, 249, 265, 274, 0, 428, 393, 206, + 365, 255, 196, 223, 210, 230, 244, 246, 278, 307, + 313, 342, 345, 260, 241, 221, 362, 219, 379, 399, + 400, 401, 403, 311, 237, 329, 0, 1212, 0, 0, + 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, + 287, 0, 0, 0, 343, 0, 380, 226, 296, 294, + 407, 250, 243, 239, 225, 271, 302, 341, 398, 335, + 0, 291, 0, 0, 389, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 277, 224, 194, 326, 390, 253, 0, 0, 0, + 176, 177, 178, 0, 0, 0, 0, 0, 0, 0, + 0, 216, 0, 222, 0, 0, 0, 0, 236, 275, + 242, 235, 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 316, 0, 0, 0, 434, - 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, - 284, 191, 205, 0, 0, 326, 364, 370, 0, 0, - 0, 228, 0, 368, 339, 421, 213, 252, 361, 344, - 366, 0, 0, 367, 293, 410, 356, 420, 435, 436, - 235, 320, 427, 402, 432, 444, 206, 232, 333, 395, - 424, 386, 313, 406, 407, 283, 385, 260, 194, 291, - 198, 397, 418, 218, 378, 0, 0, 0, 200, 416, - 394, 310, 280, 281, 199, 0, 360, 239, 258, 230, - 329, 413, 414, 229, 446, 208, 431, 202, 209, 430, - 322, 409, 417, 311, 302, 201, 415, 309, 301, 286, - 249, 268, 354, 296, 355, 269, 318, 317, 319, 0, - 196, 0, 391, 425, 447, 215, 0, 0, 404, 440, - 443, 0, 357, 216, 259, 248, 353, 257, 289, 439, - 441, 442, 214, 351, 265, 321, 210, 271, 387, 285, - 294, 0, 0, 338, 369, 219, 423, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, - 290, 0, 358, 255, 445, 429, 426, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 334, 336, - 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, - 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, - 384, 392, 396, 411, 412, 422, 433, 437, 264, 419, - 438, 0, 298, 0, 0, 300, 250, 266, 275, 0, - 428, 393, 207, 365, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 342, 345, 261, 242, 222, 362, - 220, 379, 399, 400, 401, 403, 312, 238, 330, 0, - 1205, 0, 0, 0, 0, 0, 0, 241, 0, 0, - 0, 0, 0, 288, 0, 0, 0, 343, 0, 380, - 227, 297, 295, 408, 251, 244, 240, 226, 272, 303, - 341, 398, 335, 0, 292, 0, 0, 389, 315, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 278, 225, 195, 327, 390, 254, - 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, - 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, - 0, 237, 276, 243, 236, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 316, 0, 0, 0, 434, 0, 0, 0, 0, 0, - 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, - 326, 364, 370, 0, 0, 0, 228, 0, 368, 339, - 421, 213, 252, 361, 344, 366, 0, 0, 367, 293, - 410, 356, 420, 435, 436, 235, 320, 427, 402, 432, - 444, 206, 232, 333, 395, 424, 386, 313, 406, 407, - 283, 385, 260, 194, 291, 198, 397, 418, 218, 378, - 0, 0, 0, 200, 416, 394, 310, 280, 281, 199, - 0, 360, 239, 258, 230, 329, 413, 414, 229, 446, - 208, 431, 202, 209, 430, 322, 409, 417, 311, 302, - 201, 415, 309, 301, 286, 249, 268, 354, 296, 355, - 269, 318, 317, 319, 0, 196, 0, 391, 425, 447, - 215, 0, 0, 404, 440, 443, 0, 357, 216, 259, - 248, 353, 257, 289, 439, 441, 442, 214, 351, 265, - 321, 210, 271, 387, 285, 294, 0, 0, 338, 369, - 219, 423, 388, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 203, 290, 0, 358, 255, 445, - 429, 426, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, - 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, - 328, 331, 332, 334, 336, 337, 340, 346, 347, 348, + 0, 0, 0, 0, 0, 261, 0, 315, 0, 0, + 0, 434, 0, 0, 0, 0, 0, 0, 0, 0, + 286, 0, 283, 190, 204, 0, 0, 325, 364, 370, + 0, 0, 0, 227, 0, 368, 339, 421, 212, 251, + 361, 344, 366, 0, 0, 367, 292, 409, 356, 419, + 435, 436, 234, 319, 427, 402, 432, 444, 205, 231, + 333, 395, 424, 386, 312, 406, 282, 385, 259, 193, + 290, 197, 397, 417, 217, 378, 0, 0, 0, 199, + 415, 394, 309, 279, 280, 198, 0, 360, 238, 257, + 229, 328, 412, 413, 228, 446, 207, 431, 201, 208, + 430, 321, 408, 416, 310, 301, 200, 414, 308, 300, + 285, 248, 267, 354, 295, 355, 268, 317, 316, 318, + 0, 195, 0, 391, 425, 447, 214, 0, 0, 404, + 440, 443, 0, 357, 215, 258, 247, 353, 256, 288, + 439, 441, 442, 213, 351, 264, 332, 420, 320, 209, + 270, 387, 284, 293, 0, 0, 338, 369, 218, 423, + 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 189, 202, 289, 0, 358, 254, 445, 429, 426, + 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 191, 192, 203, 211, 220, + 232, 245, 252, 262, 266, 269, 272, 273, 276, 281, + 298, 303, 304, 305, 306, 322, 323, 324, 327, 330, + 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, + 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, + 381, 382, 383, 384, 392, 396, 410, 411, 422, 433, + 437, 263, 418, 438, 0, 297, 0, 0, 299, 249, + 265, 274, 0, 428, 393, 206, 365, 255, 196, 223, + 210, 230, 244, 246, 278, 307, 313, 342, 345, 260, + 241, 221, 362, 219, 379, 399, 400, 401, 403, 311, + 237, 329, 0, 1210, 0, 0, 0, 0, 0, 0, + 240, 0, 0, 0, 0, 0, 287, 0, 0, 0, + 343, 0, 380, 226, 296, 294, 407, 250, 243, 239, + 225, 271, 302, 341, 398, 335, 0, 291, 0, 0, + 389, 314, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 277, 224, 194, + 326, 390, 253, 0, 0, 0, 176, 177, 178, 0, + 0, 0, 0, 0, 0, 0, 0, 216, 0, 222, + 0, 0, 0, 0, 236, 275, 242, 235, 405, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 261, 0, 315, 0, 0, 0, 434, 0, 0, + 0, 0, 0, 0, 0, 0, 286, 0, 283, 190, + 204, 0, 0, 325, 364, 370, 0, 0, 0, 227, + 0, 368, 339, 421, 212, 251, 361, 344, 366, 0, + 0, 367, 292, 409, 356, 419, 435, 436, 234, 319, + 427, 402, 432, 444, 205, 231, 333, 395, 424, 386, + 312, 406, 282, 385, 259, 193, 290, 197, 397, 417, + 217, 378, 0, 0, 0, 199, 415, 394, 309, 279, + 280, 198, 0, 360, 238, 257, 229, 328, 412, 413, + 228, 446, 207, 431, 201, 208, 430, 321, 408, 416, + 310, 301, 200, 414, 308, 300, 285, 248, 267, 354, + 295, 355, 268, 317, 316, 318, 0, 195, 0, 391, + 425, 447, 214, 0, 0, 404, 440, 443, 0, 357, + 215, 258, 247, 353, 256, 288, 439, 441, 442, 213, + 351, 264, 332, 420, 320, 209, 270, 387, 284, 293, + 0, 0, 338, 369, 218, 423, 388, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 202, 289, + 0, 358, 254, 445, 429, 426, 0, 0, 233, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 191, 192, 203, 211, 220, 232, 245, 252, 262, + 266, 269, 272, 273, 276, 281, 298, 303, 304, 305, + 306, 322, 323, 324, 327, 330, 331, 334, 336, 337, + 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, + 372, 373, 374, 375, 376, 377, 381, 382, 383, 384, + 392, 396, 410, 411, 422, 433, 437, 263, 418, 438, + 0, 297, 0, 0, 299, 249, 265, 274, 0, 428, + 393, 206, 365, 255, 196, 223, 210, 230, 244, 246, + 278, 307, 313, 342, 345, 260, 241, 221, 362, 219, + 379, 399, 400, 401, 403, 311, 237, 329, 0, 1208, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, + 0, 0, 287, 0, 0, 0, 343, 0, 380, 226, + 296, 294, 407, 250, 243, 239, 225, 271, 302, 341, + 398, 335, 0, 291, 0, 0, 389, 314, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 277, 224, 194, 326, 390, 253, 0, + 0, 0, 176, 177, 178, 0, 0, 0, 0, 0, + 0, 0, 0, 216, 0, 222, 0, 0, 0, 0, + 236, 275, 242, 235, 405, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 261, 0, 315, + 0, 0, 0, 434, 0, 0, 0, 0, 0, 0, + 0, 0, 286, 0, 283, 190, 204, 0, 0, 325, + 364, 370, 0, 0, 0, 227, 0, 368, 339, 421, + 212, 251, 361, 344, 366, 0, 0, 367, 292, 409, + 356, 419, 435, 436, 234, 319, 427, 402, 432, 444, + 205, 231, 333, 395, 424, 386, 312, 406, 282, 385, + 259, 193, 290, 197, 397, 417, 217, 378, 0, 0, + 0, 199, 415, 394, 309, 279, 280, 198, 0, 360, + 238, 257, 229, 328, 412, 413, 228, 446, 207, 431, + 201, 208, 430, 321, 408, 416, 310, 301, 200, 414, + 308, 300, 285, 248, 267, 354, 295, 355, 268, 317, + 316, 318, 0, 195, 0, 391, 425, 447, 214, 0, + 0, 404, 440, 443, 0, 357, 215, 258, 247, 353, + 256, 288, 439, 441, 442, 213, 351, 264, 332, 420, + 320, 209, 270, 387, 284, 293, 0, 0, 338, 369, + 218, 423, 388, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 189, 202, 289, 0, 358, 254, 445, + 429, 426, 0, 0, 233, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 191, 192, 203, + 211, 220, 232, 245, 252, 262, 266, 269, 272, 273, + 276, 281, 298, 303, 304, 305, 306, 322, 323, 324, + 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, - 376, 377, 381, 382, 383, 384, 392, 396, 411, 412, - 422, 433, 437, 264, 419, 438, 0, 298, 0, 0, - 300, 250, 266, 275, 0, 428, 393, 207, 365, 256, - 197, 224, 211, 231, 245, 247, 279, 308, 314, 342, - 345, 261, 242, 222, 362, 220, 379, 399, 400, 401, - 403, 312, 238, 330, 0, 1203, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, - 0, 0, 343, 0, 380, 227, 297, 295, 408, 251, - 244, 240, 226, 272, 303, 341, 398, 335, 0, 292, - 0, 0, 389, 315, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 225, 195, 327, 390, 254, 0, 0, 0, 177, 178, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, + 376, 377, 381, 382, 383, 384, 392, 396, 410, 411, + 422, 433, 437, 263, 418, 438, 0, 297, 0, 0, + 299, 249, 265, 274, 0, 428, 393, 206, 365, 255, + 196, 223, 210, 230, 244, 246, 278, 307, 313, 342, + 345, 260, 241, 221, 362, 219, 379, 399, 400, 401, + 403, 311, 237, 329, 0, 0, 0, 0, 0, 0, + 0, 0, 240, 0, 0, 0, 0, 0, 287, 0, + 0, 0, 343, 0, 380, 226, 296, 294, 407, 250, + 243, 239, 225, 271, 302, 341, 398, 335, 0, 291, + 0, 0, 389, 314, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, + 224, 194, 326, 390, 253, 1183, 0, 0, 176, 177, + 178, 0, 0, 0, 0, 0, 0, 0, 0, 216, + 0, 222, 0, 0, 0, 0, 236, 275, 242, 235, 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 316, 0, 0, 0, 434, - 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, - 284, 191, 205, 0, 0, 326, 364, 370, 0, 0, - 0, 228, 0, 368, 339, 421, 213, 252, 361, 344, - 366, 0, 0, 367, 293, 410, 356, 420, 435, 436, - 235, 320, 427, 402, 432, 444, 206, 232, 333, 395, - 424, 386, 313, 406, 407, 283, 385, 260, 194, 291, - 198, 397, 418, 218, 378, 0, 0, 0, 200, 416, - 394, 310, 280, 281, 199, 0, 360, 239, 258, 230, - 329, 413, 414, 229, 446, 208, 431, 202, 209, 430, - 322, 409, 417, 311, 302, 201, 415, 309, 301, 286, - 249, 268, 354, 296, 355, 269, 318, 317, 319, 0, - 196, 0, 391, 425, 447, 215, 0, 0, 404, 440, - 443, 0, 357, 216, 259, 248, 353, 257, 289, 439, - 441, 442, 214, 351, 265, 321, 210, 271, 387, 285, - 294, 0, 0, 338, 369, 219, 423, 388, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, - 290, 0, 358, 255, 445, 429, 426, 0, 0, 234, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 261, 0, 315, 0, 0, 0, 434, + 0, 0, 0, 0, 0, 0, 0, 0, 286, 0, + 283, 190, 204, 0, 0, 325, 364, 370, 0, 0, + 0, 227, 0, 368, 339, 421, 212, 251, 361, 344, + 366, 0, 0, 367, 292, 409, 356, 419, 435, 436, + 234, 319, 427, 402, 432, 444, 205, 231, 333, 395, + 424, 386, 312, 406, 282, 385, 259, 193, 290, 197, + 397, 417, 217, 378, 0, 0, 0, 199, 415, 394, + 309, 279, 280, 198, 0, 360, 238, 257, 229, 328, + 412, 413, 228, 446, 207, 431, 201, 208, 430, 321, + 408, 416, 310, 301, 200, 414, 308, 300, 285, 248, + 267, 354, 295, 355, 268, 317, 316, 318, 0, 195, + 0, 391, 425, 447, 214, 0, 0, 404, 440, 443, + 0, 357, 215, 258, 247, 353, 256, 288, 439, 441, + 442, 213, 351, 264, 332, 420, 320, 209, 270, 387, + 284, 293, 0, 0, 338, 369, 218, 423, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 334, 336, - 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, - 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, - 384, 392, 396, 411, 412, 422, 433, 437, 264, 419, - 438, 0, 298, 0, 0, 300, 250, 266, 275, 0, - 428, 393, 207, 365, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 342, 345, 261, 242, 222, 362, - 220, 379, 399, 400, 401, 403, 312, 238, 330, 0, - 1201, 0, 0, 0, 0, 0, 0, 241, 0, 0, - 0, 0, 0, 288, 0, 0, 0, 343, 0, 380, - 227, 297, 295, 408, 251, 244, 240, 226, 272, 303, - 341, 398, 335, 0, 292, 0, 0, 389, 315, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 278, 225, 195, 327, 390, 254, - 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, - 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, - 0, 237, 276, 243, 236, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 316, 0, 0, 0, 434, 0, 0, 0, 0, 0, - 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, - 326, 364, 370, 0, 0, 0, 228, 0, 368, 339, - 421, 213, 252, 361, 344, 366, 0, 0, 367, 293, - 410, 356, 420, 435, 436, 235, 320, 427, 402, 432, - 444, 206, 232, 333, 395, 424, 386, 313, 406, 407, - 283, 385, 260, 194, 291, 198, 397, 418, 218, 378, - 0, 0, 0, 200, 416, 394, 310, 280, 281, 199, - 0, 360, 239, 258, 230, 329, 413, 414, 229, 446, - 208, 431, 202, 209, 430, 322, 409, 417, 311, 302, - 201, 415, 309, 301, 286, 249, 268, 354, 296, 355, - 269, 318, 317, 319, 0, 196, 0, 391, 425, 447, - 215, 0, 0, 404, 440, 443, 0, 357, 216, 259, - 248, 353, 257, 289, 439, 441, 442, 214, 351, 265, - 321, 210, 271, 387, 285, 294, 0, 0, 338, 369, - 219, 423, 388, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 203, 290, 0, 358, 255, 445, - 429, 426, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, - 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, - 328, 331, 332, 334, 336, 337, 340, 346, 347, 348, - 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, - 376, 377, 381, 382, 383, 384, 392, 396, 411, 412, - 422, 433, 437, 264, 419, 438, 0, 298, 0, 0, - 300, 250, 266, 275, 0, 428, 393, 207, 365, 256, - 197, 224, 211, 231, 245, 247, 279, 308, 314, 342, - 345, 261, 242, 222, 362, 220, 379, 399, 400, 401, - 403, 312, 238, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, - 0, 0, 343, 0, 380, 227, 297, 295, 408, 251, - 244, 240, 226, 272, 303, 341, 398, 335, 0, 292, - 0, 0, 389, 315, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 225, 195, 327, 390, 254, 1176, 0, 0, 177, 178, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, - 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 316, 0, 0, 0, 434, - 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, - 284, 191, 205, 0, 0, 326, 364, 370, 0, 0, - 0, 228, 0, 368, 339, 421, 213, 252, 361, 344, - 366, 0, 0, 367, 293, 410, 356, 420, 435, 436, - 235, 320, 427, 402, 432, 444, 206, 232, 333, 395, - 424, 386, 313, 406, 407, 283, 385, 260, 194, 291, - 198, 397, 418, 218, 378, 0, 0, 0, 200, 416, - 394, 310, 280, 281, 199, 0, 360, 239, 258, 230, - 329, 413, 414, 229, 446, 208, 431, 202, 209, 430, - 322, 409, 417, 311, 302, 201, 415, 309, 301, 286, - 249, 268, 354, 296, 355, 269, 318, 317, 319, 0, - 196, 0, 391, 425, 447, 215, 0, 0, 404, 440, - 443, 0, 357, 216, 259, 248, 353, 257, 289, 439, - 441, 442, 214, 351, 265, 321, 210, 271, 387, 285, - 294, 0, 0, 338, 369, 219, 423, 388, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, + 202, 289, 0, 358, 254, 445, 429, 426, 0, 0, + 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, - 290, 0, 358, 255, 445, 429, 426, 0, 0, 234, + 0, 0, 0, 191, 192, 203, 211, 220, 232, 245, + 252, 262, 266, 269, 272, 273, 276, 281, 298, 303, + 304, 305, 306, 322, 323, 324, 327, 330, 331, 334, + 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, + 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, + 383, 384, 392, 396, 410, 411, 422, 433, 437, 263, + 418, 438, 0, 297, 0, 0, 299, 249, 265, 274, + 0, 428, 393, 206, 365, 255, 196, 223, 210, 230, + 244, 246, 278, 307, 313, 342, 345, 260, 241, 221, + 362, 219, 379, 399, 400, 401, 403, 311, 237, 1082, + 0, 0, 0, 0, 0, 0, 329, 0, 0, 0, + 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, + 0, 287, 0, 0, 0, 343, 0, 380, 226, 296, + 294, 407, 250, 243, 239, 225, 271, 302, 341, 398, + 335, 0, 291, 0, 0, 389, 314, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 277, 224, 194, 326, 390, 253, 0, 0, + 0, 176, 177, 178, 0, 0, 0, 0, 0, 0, + 0, 0, 216, 0, 222, 0, 0, 0, 0, 236, + 275, 242, 235, 405, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 261, 0, 315, 0, + 0, 0, 434, 0, 0, 0, 0, 0, 0, 0, + 0, 286, 0, 283, 190, 204, 0, 0, 325, 364, + 370, 0, 0, 0, 227, 0, 368, 339, 421, 212, + 251, 361, 344, 366, 0, 0, 367, 292, 409, 356, + 419, 435, 436, 234, 319, 427, 402, 432, 444, 205, + 231, 333, 395, 424, 386, 312, 406, 282, 385, 259, + 193, 290, 197, 397, 417, 217, 378, 0, 0, 0, + 199, 415, 394, 309, 279, 280, 198, 0, 360, 238, + 257, 229, 328, 412, 413, 228, 446, 207, 431, 201, + 208, 430, 321, 408, 416, 310, 301, 200, 414, 308, + 300, 285, 248, 267, 354, 295, 355, 268, 317, 316, + 318, 0, 195, 0, 391, 425, 447, 214, 0, 0, + 404, 440, 443, 0, 357, 215, 258, 247, 353, 256, + 288, 439, 441, 442, 213, 351, 264, 332, 420, 320, + 209, 270, 387, 284, 293, 0, 0, 338, 369, 218, + 423, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 189, 202, 289, 0, 358, 254, 445, 429, + 426, 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 334, 336, + 0, 0, 0, 0, 0, 0, 191, 192, 203, 211, + 220, 232, 245, 252, 262, 266, 269, 272, 273, 276, + 281, 298, 303, 304, 305, 306, 322, 323, 324, 327, + 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, + 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, + 377, 381, 382, 383, 384, 392, 396, 410, 411, 422, + 433, 437, 263, 418, 438, 0, 297, 0, 0, 299, + 249, 265, 274, 0, 428, 393, 206, 365, 255, 196, + 223, 210, 230, 244, 246, 278, 307, 313, 342, 345, + 260, 241, 221, 362, 219, 379, 399, 400, 401, 403, + 311, 237, 329, 0, 0, 0, 0, 0, 0, 0, + 1073, 240, 0, 0, 0, 0, 0, 287, 0, 0, + 0, 343, 0, 380, 226, 296, 294, 407, 250, 243, + 239, 225, 271, 302, 341, 398, 335, 0, 291, 0, + 0, 389, 314, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 277, 224, + 194, 326, 390, 253, 0, 0, 0, 176, 177, 178, + 0, 0, 0, 0, 0, 0, 0, 0, 216, 0, + 222, 0, 0, 0, 0, 236, 275, 242, 235, 405, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 261, 0, 315, 0, 0, 0, 434, 0, + 0, 0, 0, 0, 0, 0, 0, 286, 0, 283, + 190, 204, 0, 0, 325, 364, 370, 0, 0, 0, + 227, 0, 368, 339, 421, 212, 251, 361, 344, 366, + 0, 0, 367, 292, 409, 356, 419, 435, 436, 234, + 319, 427, 402, 432, 444, 205, 231, 333, 395, 424, + 386, 312, 406, 282, 385, 259, 193, 290, 197, 397, + 417, 217, 378, 0, 0, 0, 199, 415, 394, 309, + 279, 280, 198, 0, 360, 238, 257, 229, 328, 412, + 413, 228, 446, 207, 431, 201, 208, 430, 321, 408, + 416, 310, 301, 200, 414, 308, 300, 285, 248, 267, + 354, 295, 355, 268, 317, 316, 318, 0, 195, 0, + 391, 425, 447, 214, 0, 0, 404, 440, 443, 0, + 357, 215, 258, 247, 353, 256, 288, 439, 441, 442, + 213, 351, 264, 332, 420, 320, 209, 270, 387, 284, + 293, 0, 0, 338, 369, 218, 423, 388, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 189, 202, + 289, 0, 358, 254, 445, 429, 426, 0, 0, 233, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 191, 192, 203, 211, 220, 232, 245, 252, + 262, 266, 269, 272, 273, 276, 281, 298, 303, 304, + 305, 306, 322, 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, - 384, 392, 396, 411, 412, 422, 433, 437, 264, 419, - 438, 0, 298, 0, 0, 300, 250, 266, 275, 0, - 428, 393, 207, 365, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 342, 345, 261, 242, 222, 362, - 220, 379, 399, 400, 401, 403, 312, 238, 1075, 0, - 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, - 288, 0, 0, 0, 343, 0, 380, 227, 297, 295, - 408, 251, 244, 240, 226, 272, 303, 341, 398, 335, - 0, 292, 0, 0, 389, 315, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 225, 195, 327, 390, 254, 0, 0, 0, - 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, - 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, - 243, 236, 405, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 262, 0, 316, 0, 0, - 0, 434, 0, 0, 0, 0, 0, 0, 0, 0, - 287, 0, 284, 191, 205, 0, 0, 326, 364, 370, - 0, 0, 0, 228, 0, 368, 339, 421, 213, 252, - 361, 344, 366, 0, 0, 367, 293, 410, 356, 420, - 435, 436, 235, 320, 427, 402, 432, 444, 206, 232, - 333, 395, 424, 386, 313, 406, 407, 283, 385, 260, - 194, 291, 198, 397, 418, 218, 378, 0, 0, 0, - 200, 416, 394, 310, 280, 281, 199, 0, 360, 239, - 258, 230, 329, 413, 414, 229, 446, 208, 431, 202, - 209, 430, 322, 409, 417, 311, 302, 201, 415, 309, - 301, 286, 249, 268, 354, 296, 355, 269, 318, 317, - 319, 0, 196, 0, 391, 425, 447, 215, 0, 0, - 404, 440, 443, 0, 357, 216, 259, 248, 353, 257, - 289, 439, 441, 442, 214, 351, 265, 321, 210, 271, - 387, 285, 294, 0, 0, 338, 369, 219, 423, 388, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 190, 203, 290, 0, 358, 255, 445, 429, 426, 0, - 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, - 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, - 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, - 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, - 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 411, 412, 422, 433, 437, - 264, 419, 438, 0, 298, 0, 0, 300, 250, 266, - 275, 0, 428, 393, 207, 365, 256, 197, 224, 211, - 231, 245, 247, 279, 308, 314, 342, 345, 261, 242, - 222, 362, 220, 379, 399, 400, 401, 403, 312, 238, - 330, 0, 0, 0, 0, 0, 0, 0, 1066, 241, - 0, 0, 0, 0, 0, 288, 0, 0, 0, 343, - 0, 380, 227, 297, 295, 408, 251, 244, 240, 226, - 272, 303, 341, 398, 335, 0, 292, 0, 0, 389, - 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, - 390, 254, 0, 0, 0, 177, 178, 179, 0, 0, - 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, - 0, 0, 0, 237, 276, 243, 236, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 316, 0, 0, 0, 434, 0, 0, 0, - 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, - 0, 0, 326, 364, 370, 0, 0, 0, 228, 0, - 368, 339, 421, 213, 252, 361, 344, 366, 0, 0, - 367, 293, 410, 356, 420, 435, 436, 235, 320, 427, - 402, 432, 444, 206, 232, 333, 395, 424, 386, 313, - 406, 407, 283, 385, 260, 194, 291, 198, 397, 418, - 218, 378, 0, 0, 0, 200, 416, 394, 310, 280, - 281, 199, 0, 360, 239, 258, 230, 329, 413, 414, - 229, 446, 208, 431, 202, 209, 430, 322, 409, 417, - 311, 302, 201, 415, 309, 301, 286, 249, 268, 354, - 296, 355, 269, 318, 317, 319, 0, 196, 0, 391, - 425, 447, 215, 0, 0, 404, 440, 443, 0, 357, - 216, 259, 248, 353, 257, 289, 439, 441, 442, 214, - 351, 265, 321, 210, 271, 387, 285, 294, 0, 0, - 338, 369, 219, 423, 388, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 190, 203, 290, 0, 358, - 255, 445, 429, 426, 0, 0, 234, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, - 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, - 324, 325, 328, 331, 332, 334, 336, 337, 340, 346, - 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, - 374, 375, 376, 377, 381, 382, 383, 384, 392, 396, - 411, 412, 422, 433, 437, 264, 419, 438, 0, 298, - 0, 0, 300, 250, 266, 275, 0, 428, 393, 207, - 365, 256, 197, 224, 211, 231, 245, 247, 279, 308, - 314, 342, 345, 261, 242, 222, 362, 220, 379, 399, - 400, 401, 403, 312, 238, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, - 288, 0, 0, 0, 343, 0, 380, 227, 297, 295, - 408, 251, 244, 240, 226, 272, 303, 341, 398, 335, - 0, 292, 0, 0, 389, 315, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 225, 195, 327, 390, 254, 0, 0, 0, - 177, 178, 179, 0, 924, 0, 0, 0, 0, 0, - 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, - 243, 236, 405, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 262, 0, 316, 0, 0, - 0, 434, 0, 0, 0, 0, 0, 0, 0, 0, - 287, 0, 284, 191, 205, 0, 0, 326, 364, 370, - 0, 0, 0, 228, 0, 368, 339, 421, 213, 252, - 361, 344, 366, 0, 0, 367, 293, 410, 356, 420, - 435, 436, 235, 320, 427, 402, 432, 444, 206, 232, - 333, 395, 424, 386, 313, 406, 407, 283, 385, 260, - 194, 291, 198, 397, 418, 218, 378, 0, 0, 0, - 200, 416, 394, 310, 280, 281, 199, 0, 360, 239, - 258, 230, 329, 413, 414, 229, 446, 208, 431, 202, - 209, 430, 322, 409, 417, 311, 302, 201, 415, 309, - 301, 286, 249, 268, 354, 296, 355, 269, 318, 317, - 319, 0, 196, 0, 391, 425, 447, 215, 0, 0, - 404, 440, 443, 0, 357, 216, 259, 248, 353, 257, - 289, 439, 441, 442, 214, 351, 265, 321, 210, 271, - 387, 285, 294, 0, 0, 338, 369, 219, 423, 388, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 190, 203, 290, 0, 358, 255, 445, 429, 426, 0, - 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, - 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, - 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, + 384, 392, 396, 410, 411, 422, 433, 437, 263, 418, + 438, 0, 297, 0, 0, 299, 249, 265, 274, 0, + 428, 393, 206, 365, 255, 196, 223, 210, 230, 244, + 246, 278, 307, 313, 342, 345, 260, 241, 221, 362, + 219, 379, 399, 400, 401, 403, 311, 237, 329, 0, + 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, + 0, 0, 0, 287, 0, 0, 0, 343, 0, 380, + 226, 296, 294, 407, 250, 243, 239, 225, 271, 302, + 341, 398, 335, 0, 291, 0, 0, 389, 314, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 277, 224, 194, 326, 390, 253, + 0, 0, 0, 176, 177, 178, 0, 931, 0, 0, + 0, 0, 0, 0, 216, 0, 222, 0, 0, 0, + 0, 236, 275, 242, 235, 405, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 261, 0, + 315, 0, 0, 0, 434, 0, 0, 0, 0, 0, + 0, 0, 0, 286, 0, 283, 190, 204, 0, 0, + 325, 364, 370, 0, 0, 0, 227, 0, 368, 339, + 421, 212, 251, 361, 344, 366, 0, 0, 367, 292, + 409, 356, 419, 435, 436, 234, 319, 427, 402, 432, + 444, 205, 231, 333, 395, 424, 386, 312, 406, 282, + 385, 259, 193, 290, 197, 397, 417, 217, 378, 0, + 0, 0, 199, 415, 394, 309, 279, 280, 198, 0, + 360, 238, 257, 229, 328, 412, 413, 228, 446, 207, + 431, 201, 208, 430, 321, 408, 416, 310, 301, 200, + 414, 308, 300, 285, 248, 267, 354, 295, 355, 268, + 317, 316, 318, 0, 195, 0, 391, 425, 447, 214, + 0, 0, 404, 440, 443, 0, 357, 215, 258, 247, + 353, 256, 288, 439, 441, 442, 213, 351, 264, 332, + 420, 320, 209, 270, 387, 284, 293, 0, 0, 338, + 369, 218, 423, 388, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 189, 202, 289, 0, 358, 254, + 445, 429, 426, 0, 0, 233, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, + 203, 211, 220, 232, 245, 252, 262, 266, 269, 272, + 273, 276, 281, 298, 303, 304, 305, 306, 322, 323, + 324, 327, 330, 331, 334, 336, 337, 340, 346, 347, + 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, + 375, 376, 377, 381, 382, 383, 384, 392, 396, 410, + 411, 422, 433, 437, 263, 418, 438, 0, 297, 0, + 0, 299, 249, 265, 274, 0, 428, 393, 206, 365, + 255, 196, 223, 210, 230, 244, 246, 278, 307, 313, + 342, 345, 260, 241, 221, 362, 219, 379, 399, 400, + 401, 403, 311, 237, 329, 0, 0, 0, 0, 0, + 0, 0, 0, 240, 0, 0, 0, 0, 0, 287, + 0, 0, 0, 343, 0, 380, 226, 296, 294, 407, + 250, 243, 239, 225, 271, 302, 341, 398, 335, 0, + 291, 0, 0, 389, 314, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, + 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, + 216, 0, 222, 0, 0, 0, 0, 236, 275, 242, + 235, 405, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 496, 0, 261, 0, 315, 0, 0, 0, + 434, 0, 0, 0, 0, 0, 0, 0, 0, 286, + 0, 283, 190, 204, 0, 0, 325, 364, 370, 0, + 0, 0, 227, 0, 368, 339, 421, 212, 251, 361, + 344, 366, 0, 0, 367, 292, 409, 356, 419, 435, + 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, + 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, + 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, + 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, + 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, + 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, + 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, + 195, 0, 391, 425, 447, 214, 0, 0, 404, 440, + 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, + 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, + 387, 284, 293, 0, 0, 338, 369, 218, 423, 388, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 189, 202, 289, 0, 358, 254, 445, 429, 426, 0, + 0, 233, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 191, 192, 203, 211, 220, 232, + 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, + 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 411, 412, 422, 433, 437, - 264, 419, 438, 0, 298, 0, 0, 300, 250, 266, - 275, 0, 428, 393, 207, 365, 256, 197, 224, 211, - 231, 245, 247, 279, 308, 314, 342, 345, 261, 242, - 222, 362, 220, 379, 399, 400, 401, 403, 312, 238, - 330, 0, 0, 0, 0, 0, 0, 0, 0, 241, - 0, 0, 0, 0, 0, 288, 0, 0, 0, 343, - 0, 380, 227, 297, 295, 408, 251, 244, 240, 226, - 272, 303, 341, 398, 335, 0, 292, 0, 0, 389, - 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, - 390, 254, 0, 0, 0, 177, 178, 179, 0, 0, - 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, - 0, 0, 0, 237, 276, 243, 236, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 493, 0, - 262, 0, 316, 0, 0, 0, 434, 0, 0, 0, - 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, - 0, 0, 326, 364, 370, 0, 0, 0, 228, 0, - 368, 339, 421, 213, 252, 361, 344, 366, 0, 0, - 367, 293, 410, 356, 420, 435, 436, 235, 320, 427, - 402, 432, 444, 206, 232, 333, 395, 424, 386, 313, - 406, 407, 283, 385, 260, 194, 291, 198, 397, 418, - 218, 378, 0, 0, 0, 200, 416, 394, 310, 280, - 281, 199, 0, 360, 239, 258, 230, 329, 413, 414, - 229, 446, 208, 431, 202, 209, 430, 322, 409, 417, - 311, 302, 201, 415, 309, 301, 286, 249, 268, 354, - 296, 355, 269, 318, 317, 319, 0, 196, 0, 391, - 425, 447, 215, 0, 0, 404, 440, 443, 0, 357, - 216, 259, 248, 353, 257, 289, 439, 441, 442, 214, - 351, 265, 321, 210, 271, 387, 285, 294, 0, 0, - 338, 369, 219, 423, 388, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 190, 203, 290, 0, 358, - 255, 445, 429, 426, 0, 0, 234, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, - 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, - 324, 325, 328, 331, 332, 334, 336, 337, 340, 346, - 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, - 374, 375, 376, 377, 381, 382, 383, 384, 392, 396, - 411, 412, 422, 433, 437, 492, 419, 438, 0, 298, - 0, 0, 300, 250, 266, 275, 0, 428, 393, 207, - 365, 256, 197, 224, 211, 231, 245, 247, 279, 308, - 314, 342, 345, 261, 242, 222, 362, 220, 379, 399, - 400, 401, 403, 312, 238, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, - 288, 0, 0, 0, 343, 0, 380, 227, 297, 295, - 408, 251, 244, 240, 226, 272, 303, 341, 398, 335, - 0, 292, 0, 0, 389, 315, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 225, 195, 327, 390, 254, 0, 0, 0, - 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, - 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, - 243, 236, 405, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, + 495, 418, 438, 0, 297, 0, 0, 299, 249, 265, + 274, 0, 428, 393, 206, 365, 255, 196, 223, 210, + 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, + 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, + 329, 0, 0, 0, 0, 0, 0, 0, 0, 240, + 0, 0, 0, 0, 0, 287, 0, 0, 0, 343, + 0, 380, 226, 296, 294, 407, 250, 243, 239, 225, + 271, 302, 341, 398, 335, 0, 291, 0, 0, 389, + 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 277, 224, 194, 326, + 390, 253, 0, 0, 0, 176, 177, 178, 0, 0, + 0, 0, 0, 0, 0, 0, 216, 0, 222, 0, + 0, 0, 0, 236, 275, 242, 235, 405, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 261, 0, 315, 0, 184, 0, 434, 0, 0, 0, + 0, 0, 0, 0, 0, 286, 0, 283, 190, 204, + 0, 0, 325, 364, 370, 0, 0, 0, 227, 0, + 368, 339, 421, 212, 251, 361, 344, 366, 0, 0, + 367, 292, 409, 356, 419, 435, 436, 234, 319, 427, + 402, 432, 444, 205, 231, 333, 395, 424, 386, 312, + 406, 282, 385, 259, 193, 290, 197, 397, 417, 217, + 378, 0, 0, 0, 199, 415, 394, 309, 279, 280, + 198, 0, 360, 238, 257, 229, 328, 412, 413, 228, + 446, 207, 431, 201, 208, 430, 321, 408, 416, 310, + 301, 200, 414, 308, 300, 285, 248, 267, 354, 295, + 355, 268, 317, 316, 318, 0, 195, 0, 391, 425, + 447, 214, 0, 0, 404, 440, 443, 0, 357, 215, + 258, 247, 353, 256, 288, 439, 441, 442, 213, 351, + 264, 332, 420, 320, 209, 270, 387, 284, 293, 0, + 0, 338, 369, 218, 423, 388, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 189, 202, 289, 0, + 358, 254, 445, 429, 426, 0, 0, 233, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 191, 192, 203, 211, 220, 232, 245, 252, 262, 266, + 269, 272, 273, 276, 281, 298, 303, 304, 305, 306, + 322, 323, 324, 327, 330, 331, 334, 336, 337, 340, + 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, + 373, 374, 375, 376, 377, 381, 382, 383, 384, 392, + 396, 410, 411, 422, 433, 437, 263, 418, 438, 0, + 297, 0, 0, 299, 249, 265, 274, 0, 428, 393, + 206, 365, 255, 196, 223, 210, 230, 244, 246, 278, + 307, 313, 342, 345, 260, 241, 221, 362, 219, 379, + 399, 400, 401, 403, 311, 237, 329, 0, 0, 0, + 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, + 0, 287, 0, 0, 0, 343, 0, 380, 226, 296, + 294, 407, 250, 243, 239, 225, 271, 302, 341, 398, + 335, 0, 291, 0, 0, 389, 314, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 277, 224, 194, 326, 390, 253, 0, 0, + 0, 176, 177, 178, 0, 0, 0, 0, 0, 0, + 0, 0, 216, 0, 222, 0, 0, 0, 0, 236, + 275, 242, 235, 405, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 261, 0, 315, 0, + 0, 0, 434, 0, 0, 0, 0, 0, 0, 0, + 0, 286, 0, 283, 190, 204, 0, 0, 325, 364, + 370, 0, 0, 0, 227, 0, 368, 339, 421, 212, + 251, 361, 344, 366, 0, 0, 367, 292, 409, 356, + 419, 435, 436, 234, 319, 427, 402, 432, 444, 205, + 231, 333, 395, 424, 386, 312, 406, 282, 385, 259, + 193, 290, 197, 397, 417, 217, 378, 0, 0, 0, + 199, 415, 394, 309, 279, 280, 198, 0, 360, 238, + 257, 229, 328, 412, 413, 228, 446, 207, 431, 201, + 208, 430, 321, 408, 416, 310, 301, 200, 414, 308, + 300, 285, 248, 267, 354, 295, 355, 268, 317, 316, + 318, 0, 195, 0, 391, 425, 447, 214, 0, 0, + 404, 440, 443, 0, 357, 215, 258, 247, 353, 256, + 288, 439, 441, 442, 213, 351, 264, 332, 420, 320, + 209, 270, 387, 284, 293, 0, 0, 338, 369, 218, + 423, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 189, 202, 289, 0, 358, 254, 445, 429, + 426, 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 262, 0, 316, 0, 185, - 0, 434, 0, 0, 0, 0, 0, 0, 0, 0, - 287, 0, 284, 191, 205, 0, 0, 326, 364, 370, - 0, 0, 0, 228, 0, 368, 339, 421, 213, 252, - 361, 344, 366, 0, 0, 367, 293, 410, 356, 420, - 435, 436, 235, 320, 427, 402, 432, 444, 206, 232, - 333, 395, 424, 386, 313, 406, 407, 283, 385, 260, - 194, 291, 198, 397, 418, 218, 378, 0, 0, 0, - 200, 416, 394, 310, 280, 281, 199, 0, 360, 239, - 258, 230, 329, 413, 414, 229, 446, 208, 431, 202, - 209, 430, 322, 409, 417, 311, 302, 201, 415, 309, - 301, 286, 249, 268, 354, 296, 355, 269, 318, 317, - 319, 0, 196, 0, 391, 425, 447, 215, 0, 0, - 404, 440, 443, 0, 357, 216, 259, 248, 353, 257, - 289, 439, 441, 442, 214, 351, 265, 321, 210, 271, - 387, 285, 294, 0, 0, 338, 369, 219, 423, 388, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 190, 203, 290, 0, 358, 255, 445, 429, 426, 0, - 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, - 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, - 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, - 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, - 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 411, 412, 422, 433, 437, - 264, 419, 438, 0, 298, 0, 0, 300, 250, 266, - 275, 0, 428, 393, 207, 365, 256, 197, 224, 211, - 231, 245, 247, 279, 308, 314, 342, 345, 261, 242, - 222, 362, 220, 379, 399, 400, 401, 403, 312, 238, - 330, 0, 0, 0, 0, 0, 0, 0, 0, 241, - 0, 0, 0, 0, 0, 288, 0, 0, 0, 343, - 0, 380, 227, 297, 295, 408, 251, 244, 240, 226, - 272, 303, 341, 398, 335, 0, 292, 0, 0, 389, - 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, - 390, 254, 0, 0, 0, 177, 178, 179, 0, 0, - 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, - 0, 0, 0, 237, 276, 243, 236, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 316, 0, 0, 0, 434, 0, 0, 0, - 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, - 0, 0, 326, 364, 370, 0, 0, 0, 228, 0, - 368, 339, 421, 213, 252, 361, 344, 366, 0, 0, - 367, 293, 410, 356, 420, 435, 436, 235, 320, 427, - 402, 432, 444, 206, 232, 333, 395, 424, 386, 313, - 406, 407, 283, 385, 260, 194, 291, 198, 397, 418, - 218, 378, 0, 0, 0, 200, 416, 394, 310, 280, - 281, 199, 0, 360, 239, 258, 230, 329, 413, 414, - 229, 446, 208, 431, 202, 209, 430, 322, 409, 417, - 311, 302, 201, 415, 309, 301, 286, 249, 268, 354, - 296, 355, 269, 318, 317, 319, 0, 196, 0, 391, - 425, 447, 215, 0, 0, 404, 440, 443, 0, 357, - 216, 259, 248, 353, 257, 289, 439, 441, 442, 214, - 351, 265, 321, 210, 271, 387, 285, 294, 0, 0, - 338, 369, 219, 423, 388, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 190, 203, 290, 0, 358, - 255, 445, 429, 426, 0, 0, 234, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, - 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, - 324, 325, 328, 331, 332, 334, 336, 337, 340, 346, - 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, - 374, 375, 376, 377, 381, 382, 383, 384, 392, 396, - 411, 412, 422, 433, 437, 264, 419, 438, 0, 298, - 0, 0, 300, 250, 266, 275, 0, 428, 393, 207, - 365, 256, 197, 224, 211, 231, 245, 247, 279, 308, - 314, 342, 345, 261, 242, 222, 362, 220, 379, 399, - 400, 401, 403, 312, 238, + 0, 0, 0, 0, 0, 0, 191, 192, 203, 211, + 220, 232, 245, 252, 262, 266, 269, 272, 273, 276, + 281, 298, 303, 304, 305, 306, 322, 323, 324, 327, + 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, + 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, + 377, 381, 382, 383, 384, 392, 396, 410, 411, 422, + 433, 437, 263, 418, 438, 0, 297, 0, 0, 299, + 249, 265, 274, 0, 428, 393, 206, 365, 255, 196, + 223, 210, 230, 244, 246, 278, 307, 313, 342, 345, + 260, 241, 221, 362, 219, 379, 399, 400, 401, 403, + 311, 237, } var yyPact = [...]int{ - 2534, -1000, -329, 1692, -1000, -1000, -1000, -1000, -1000, -1000, + 2977, -1000, -331, 1606, -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, 1659, 1290, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 569, 1303, 118, 1567, 287, 152, 913, 414, 135, - 26846, 403, 121, 27291, -1000, 105, -1000, 85, 27291, 99, - 26401, -1000, -1000, -274, 12573, 1524, 18, 11, 27291, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1292, 1633, 1643, - 1657, 1112, 1555, -1000, 10780, 10780, 318, 318, 318, 9000, - -1000, -1000, 16591, 27291, 27291, 1338, 401, 913, 389, 388, - 381, 303, -106, -1000, -1000, -1000, -1000, 1567, -1000, -1000, - 186, -1000, 191, 1243, -1000, 1239, -1000, 468, 487, 221, - 291, 277, 213, 212, 211, 207, 203, 202, 200, 197, - 234, -1000, 536, 536, -166, -169, 1807, 294, 294, 294, - 353, 1544, 1538, -1000, 511, -1000, 536, 536, 182, 536, - 536, 536, 536, 167, 166, 536, 536, 536, 536, 536, - 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, - 27291, -1000, 136, 541, 597, 1567, 155, -1000, -1000, -1000, - 27291, 395, 913, 300, 300, 27291, -1000, 460, -1000, -1000, + -1000, -1000, 1568, 1212, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 577, 1226, 206, 1481, 249, 146, 965, 342, 130, + 26891, 341, 2348, 27337, -1000, 93, -1000, 71, 27337, 89, + 26445, -1000, -1000, -278, 12586, 1423, 5, -1, 27337, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1238, 1540, 1524, + 1566, 1059, 1461, -1000, 10789, 10789, 293, 293, 293, 9005, + -1000, -1000, 16613, 27337, 27337, 1227, 290, 965, 337, 328, + 327, 290, -116, -1000, -1000, -1000, 1481, -1000, -1000, 144, + -1000, 188, 1175, -1000, 1173, -1000, 406, 367, 213, 285, + 282, 210, 204, 203, 202, 201, 197, 196, 195, 220, + -1000, 509, 509, -171, -175, 270, 261, 261, 261, 315, + 1447, 1445, -1000, 446, -1000, 509, 509, 133, 509, 509, + 509, 509, 157, 154, 509, 509, 509, 509, 509, 509, + 509, 509, 509, 509, 509, 509, 509, 509, 509, 27337, + -1000, 127, 460, 550, 1481, 140, -1000, -1000, -1000, 27337, + 287, 965, 287, 287, 27337, -1000, 423, -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, @@ -3994,23 +3997,24 @@ 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, 27291, 631, - 631, 631, 631, 631, 631, 76, -1000, 64, 158, 146, - 148, 17, 56, 426, -1000, 412, -1000, 143, 81, -1000, - 631, 7164, 7164, 7164, -1000, 1550, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 351, -1000, -1000, -1000, -1000, 27291, - 25956, 222, 556, -1000, -1000, -1000, 67, -1000, -1000, 1060, - 955, -1000, 12573, 2667, 1054, 1054, -1000, -1000, 429, -1000, - -1000, 13908, 13908, 13908, 13908, 13908, 13908, 13908, 13908, 13908, - 13908, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1054, 456, -1000, 12128, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 12573, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, -1000, -1000, -1000, 27291, -1000, 1054, - 1659, -1000, 1290, -1000, -1000, -1000, 1559, 12573, 12573, 1659, - -1000, 1444, 10780, -1000, -1000, 1457, -1000, -1000, -1000, -1000, - 701, 1677, -1000, 15243, 455, 1676, 25511, -1000, 19274, 25066, - 1222, 8541, -28, -1000, -1000, -1000, 555, 18384, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 27337, 580, + 580, 580, 580, 580, 580, 65, -14, -1000, 59, 132, + 128, 134, 617, -24, 617, 18, 54, 386, -1000, 445, + -1000, 135, 75, -1000, 580, 7165, 7165, 7165, -1000, 1473, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 308, -1000, -1000, + -1000, -1000, 27337, 25999, 255, 547, -1000, -1000, -1000, 74, + -1000, -1000, 1103, 821, -1000, 12586, 2097, 1180, 1180, -1000, + -1000, 409, -1000, -1000, 13924, 13924, 13924, 13924, 13924, 13924, + 13924, 13924, 13924, 13924, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1180, 418, + -1000, 12140, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, + 12586, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, + 1180, 1180, 1180, 1180, 1180, 1180, 1180, -1000, -1000, -1000, + 27337, -1000, 1180, 1568, -1000, 1212, -1000, -1000, -1000, 1469, + 12586, 12586, 1568, -1000, 1351, 10789, -1000, -1000, 1405, -1000, + -1000, -1000, -1000, 686, 1589, -1000, 15262, 416, 1588, 25553, + -1000, 19302, 25107, 1170, 8545, -48, -1000, -1000, -1000, 530, + 18410, -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, @@ -4024,323 +4028,325 @@ 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, 1550, - 1150, 27291, -1000, -1000, 2172, 913, -1000, 1301, -1000, 1136, - -1000, 1249, 136, 303, 1353, 913, 913, 913, 913, 607, - -1000, -1000, -1000, 536, 536, 233, 287, 3847, -1000, -1000, - -1000, 24614, 1300, 913, -1000, 1298, -1000, 1591, 290, 522, - 522, 913, -1000, -1000, 27291, 913, 1584, 1583, 27291, 27291, - -1000, 24169, -1000, 23724, 23279, 821, 27291, 22834, 22389, 21944, - 21499, 21054, -1000, 1392, -1000, 1297, -1000, -1000, -1000, 27291, - 27291, 27291, 29, -1000, -1000, 27291, 913, -1000, -1000, 818, - 806, 536, 536, 801, 969, 967, 964, 536, 536, 793, - 961, 1062, 153, 789, 788, 783, 837, 958, 117, 835, - 799, 781, 27291, 1289, -1000, 128, 547, 175, 218, 179, - 27291, 132, 1567, 1519, 1220, 349, 300, 1365, 27291, 1618, - 913, -1000, 7623, -1000, -1000, 948, 12573, -1000, -1000, -1000, - -1000, -1000, 631, 27291, 631, 27291, 631, 631, 631, 631, - 625, 637, 625, -1000, -1000, -1000, -1000, 7164, 7164, 7164, - 27291, 7164, 7164, 27291, 7164, 7164, 637, -1000, -1000, -1000, - 510, -1000, 1364, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 93, -1000, -1000, -1000, -1000, -1000, 1692, -1000, -1000, -1000, - -105, 1209, 20609, -1000, -279, -281, -282, -283, -1000, -1000, - -1000, -285, -288, -1000, -1000, -1000, 12573, 12573, 12573, 12573, - 924, 517, 13908, 764, 544, 13908, 13908, 13908, 13908, 13908, - 13908, 13908, 13908, 13908, 13908, 13908, 13908, 13908, 13908, 13908, - 747, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 913, - -1000, 1690, 1418, 1418, 482, 482, 482, 482, 482, 482, - 482, 482, 482, 14353, 9445, 7623, 1112, 1132, 1659, 10780, - 10780, 12573, 12573, 11670, 11225, 10780, 1549, 605, 955, 27291, - -1000, -1000, 13463, -1000, -1000, -1000, -1000, -1000, 848, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 27291, 27291, 10780, 10780, - 10780, 10780, 10780, -1000, 1208, -1000, -163, 16146, 12573, 1643, - 1112, 1457, 1598, 1685, 502, 843, 1205, -1000, 854, 1643, - 17939, 1170, -1000, 1457, -1000, -1000, -1000, 27291, -1000, -1000, - 20164, -1000, -1000, 6705, 27291, 196, 27291, -1000, 1185, 1536, - -1000, -1000, -1000, 1630, 17494, 27291, 1186, 1184, -1000, -1000, - 454, 8082, -28, -1000, 8082, 1181, -1000, -62, -39, 9890, - 474, -1000, -1000, -1000, 1807, 14798, 1022, -1000, 32, -1000, - -1000, -1000, 1249, -1000, 1249, 1249, 1249, 1249, 29, 29, - 29, 29, -1000, -1000, -1000, -1000, -1000, 1272, 1254, -1000, - 1249, 1249, 1249, 1249, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1473, 1056, 27337, -1000, -1000, 4163, 965, -1000, + 1225, -1000, 1052, -1000, 1190, 127, 27337, 594, 1243, 965, + 965, 965, 965, -1000, -1000, -1000, 509, 509, 219, 249, + 3854, -1000, -1000, -1000, 24654, 1215, 965, -1000, 1214, -1000, + 1497, 281, 461, 461, 965, -1000, -1000, 27337, 965, 1491, + 1489, 27337, 27337, -1000, 24208, -1000, 23762, 23316, 862, 27337, + 22870, 22424, 21978, 21532, 21086, -1000, 1294, -1000, 1223, -1000, + -1000, -1000, 27337, 27337, 27337, 14, -1000, -1000, 27337, 965, + -1000, -1000, 861, 846, 509, 509, 829, 973, 969, 968, + 509, 509, 828, 967, 934, 142, 825, 793, 788, 940, + 964, 101, 937, 894, 786, 27337, 1207, -1000, 115, 526, + 176, 186, 166, 27337, 116, 1481, 1421, 1168, 299, 27337, + 1509, 1300, 27337, 965, -1000, 7625, -1000, -1000, 959, 12586, + -1000, -1000, -1000, -1000, -1000, 580, 27337, 617, 580, 27337, + 580, 580, 580, 580, 617, 580, 27337, 27337, 617, 580, + 630, 617, -1000, -1000, 7165, 7165, 7165, 27337, 7165, 7165, + 27337, 7165, 7165, 630, -1000, -1000, -1000, 475, -1000, 1299, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 82, -1000, -1000, + -1000, -1000, -1000, 1606, -1000, -1000, -1000, -112, 1166, 20640, + -1000, -283, -284, -285, -286, -1000, -1000, -1000, -287, -288, + -1000, -1000, -1000, 12586, 12586, 12586, 12586, 694, 481, 13924, + 839, 544, 13924, 13924, 13924, 13924, 13924, 13924, 13924, 13924, + 13924, 13924, 13924, 13924, 13924, 13924, 13924, 690, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 965, -1000, 1603, 950, + 950, 439, 439, 439, 439, 439, 439, 439, 439, 439, + 14370, 9451, 7625, 1059, 1048, 1568, 10789, 10789, 12586, 12586, + 11681, 11235, 10789, 1449, 555, 821, 27337, -1000, -1000, 13478, + -1000, -1000, -1000, -1000, -1000, 899, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 27337, 27337, 10789, 10789, 10789, 10789, 10789, + -1000, 1165, -1000, -167, 16167, 12586, 1524, 1059, 1405, 1502, + 1596, 464, 760, 1164, -1000, 818, 1524, 17964, 1157, -1000, + 1405, -1000, -1000, -1000, 27337, -1000, -1000, 20194, -1000, -1000, + 6705, 27337, 194, 27337, -1000, 1155, 1276, -1000, -1000, -1000, + 1518, 17518, 27337, 1117, 1073, -1000, -1000, 412, 8085, -48, + -1000, 8085, 1137, -1000, -45, -54, 9897, 433, -1000, -1000, + -1000, 270, 14816, 1060, 688, 20, -1000, -1000, -1000, 1190, + -1000, 1190, 1190, 1190, 1190, 14, 14, 14, 14, -1000, + -1000, -1000, -1000, -1000, 1205, 1204, -1000, 1190, 1190, 1190, + 1190, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1194, 1194, + 1194, 1191, 1191, 254, -1000, 12586, 99, 27337, 1512, 783, + 115, -1000, 1507, 1298, -1000, 27337, 1243, 1243, 1243, -1000, + 888, 876, -1000, 1163, -1000, -1000, 1565, -1000, -1000, 466, + 620, 619, 453, 27337, 105, 187, -1000, 245, -1000, 27337, + 1193, 1488, 461, 965, -1000, 965, -1000, -1000, -1000, -1000, + 402, -1000, -1000, 965, 1158, -1000, 1105, 718, 605, 695, + 576, 1158, -1000, -1000, -157, 1158, -1000, 1158, -1000, 1158, + -1000, 1158, -1000, 1158, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 485, 27337, 105, 690, -1000, 295, -1000, -1000, + 690, 690, -1000, -1000, -1000, -1000, 956, 948, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 1253, 1253, 1253, 1250, 1250, 281, -1000, 12573, 120, - 27291, 1612, 765, 128, 27291, 1363, -1000, 27291, 1353, 1353, - 1353, -1000, 1617, 1053, 1028, -1000, 1197, -1000, -1000, 1655, - -1000, -1000, 489, 655, 633, 578, 27291, 113, 190, -1000, - 278, -1000, 27291, 1252, 1579, 522, 913, -1000, 913, -1000, - -1000, -1000, -1000, 448, -1000, -1000, 913, 1190, -1000, 1219, - 695, 621, 677, 618, 1190, -1000, -1000, -129, 1190, -1000, - 1190, -1000, 1190, -1000, 1190, -1000, 1190, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 548, 27291, 113, 747, -1000, - 330, -1000, -1000, 747, 747, -1000, -1000, -1000, -1000, 945, - 938, -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, -327, 27291, 367, - 122, 150, 27291, 27291, 27291, 27291, 27291, 420, -1000, -1000, - -1000, 164, 27291, 27291, 27291, 27291, 372, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 955, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 631, 27291, 27291, 27291, -1000, -1000, 631, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 27291, - -1000, 937, 27291, 27291, -1000, -1000, -1000, -1000, -1000, 339, - -72, 189, -1000, -1000, -1000, -1000, 1636, -1000, 955, 517, - 672, 567, -1000, -1000, 739, -1000, -1000, 1211, -1000, -1000, - -1000, -1000, 764, 13908, 13908, 13908, 853, 1211, 2571, 1309, - 1271, 482, 651, 651, 479, 479, 479, 479, 479, 680, - 680, -1000, -1000, -1000, -1000, 848, -1000, -1000, -1000, 848, - 10780, 10780, 1188, 1054, 443, -1000, 1292, -1000, -1000, 1643, - 1119, 1119, 767, 923, 603, 1674, 1119, 599, 1673, 1119, - 1119, 10780, -1000, -1000, 602, -1000, 12573, 848, -1000, 2149, - 1183, 1182, 1119, 848, 848, 1119, 1119, 27291, -1000, -271, - -1000, -89, 436, 1054, -1000, 19719, -1000, -1000, 848, 1060, - 1559, -1000, -1000, 1503, -1000, 1440, 12573, 12573, 12573, -1000, - -1000, -1000, 1559, 1648, -1000, 1471, 1466, 1664, 10780, 19274, - 1457, -1000, -1000, -1000, 442, 1664, 1163, 1054, -1000, 27291, - 19274, 19274, 19274, 19274, 19274, -1000, 1409, 1397, -1000, 1415, - 1408, 1426, 27291, -1000, 1128, 1112, 17494, 196, 1046, 19274, - 27291, -1000, -1000, 19274, 27291, 6246, -1000, 1181, -28, -32, - -1000, -1000, -1000, -1000, 955, -1000, 1014, -1000, 263, -1000, - 260, -1000, -1000, -1000, -1000, 464, 30, -1000, -1000, 29, - 29, -1000, -1000, 474, 616, 474, 474, 474, 933, 933, - -1000, -1000, -1000, -1000, -1000, 754, -1000, -1000, -1000, 751, - -1000, -1000, 935, 1346, 120, -1000, -1000, 536, 928, 1532, - -1000, -1000, 1020, 363, -1000, 27291, -1000, 1362, 1360, 1359, - -1000, -1000, -1000, -1000, -1000, 3223, 27291, 1125, -1000, 111, - 27291, 996, 27291, -1000, 1123, 27291, -1000, 913, -1000, -1000, - 7623, -1000, 27291, 1054, -1000, -1000, -1000, -1000, 391, 1565, - 1557, 113, 111, 474, 913, -1000, -1000, -1000, -1000, -1000, - -330, 1121, 27291, 125, -1000, 1251, 838, -1000, 1345, -1000, - -1000, -1000, -1000, 109, 173, 154, 326, -1000, 352, 1346, - 27291, -1000, -1000, -1000, -1000, -1000, -1000, 625, -1000, 625, - -1000, -1000, -1000, -1000, 1556, -80, -303, -1000, -300, -1000, - -1000, -1000, -1000, 853, 1211, 2319, -1000, 13908, 13908, -1000, - -1000, 1119, 1119, 10780, 7623, 1659, 1559, -1000, -1000, 282, - 747, 282, 13908, 13908, -1000, 13908, 13908, -1000, -120, 1221, - 542, -1000, 12573, 743, -1000, -1000, 13908, 13908, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 380, 379, 378, - 27291, -1000, -1000, -1000, 868, 907, 1434, 955, 955, -1000, - -1000, 27291, -1000, -1000, -1000, -1000, 1651, 12573, -1000, 1110, - -1000, 5787, 1643, 1357, 27291, 1054, 1692, 15701, 27291, 1217, - -1000, 537, 1536, 1343, 1356, 1566, -1000, -1000, -1000, -1000, - 1390, -1000, 1388, -1000, -1000, -1000, -1000, -1000, 1112, 1664, - 19274, 1215, -1000, 1215, -1000, 440, -1000, -1000, -1000, -85, - -51, -1000, -1000, -1000, 1807, -1000, -1000, -1000, 645, 13908, - 1683, -1000, 889, 1578, -1000, 1569, -1000, -1000, 474, 474, - -1000, -1000, -1000, -1000, -1000, -1000, 1089, -1000, 1077, 1091, - 1074, 57, -1000, 1321, 1551, 536, 536, -1000, 736, -1000, - 913, -1000, 27291, -1000, 27291, 27291, 27291, 1654, 1085, -1000, - 27291, -1000, -1000, 27291, -1000, -1000, 1459, 120, 1070, -1000, - -1000, -1000, 190, 27291, -1000, 1418, 111, -1000, -1000, -1000, - -1000, -1000, -1000, 1245, -1000, -1000, -1000, 989, -1000, -136, - 913, 27291, 27291, 27291, -1000, 27291, -1000, -1000, -1000, 631, - 631, -1000, 1548, -1000, 913, -1000, 13908, 1211, 1211, -1000, - -1000, 848, -1000, 1643, -1000, 848, 1249, 1249, -1000, 1249, - 1250, -1000, 1249, 77, 1249, 73, 848, 848, 2533, 2451, - 2349, 2208, 1054, -114, -1000, 955, 12573, 1179, 872, 1054, - 1054, 1054, 1012, 886, 29, -1000, -1000, -1000, 1661, 1653, - 955, -1000, -1000, -1000, 1594, 1081, 1043, -1000, -1000, 10335, - 1050, 1450, 434, 1012, 1659, 27291, 12573, -1000, -1000, 12573, - 1247, -1000, 12573, -1000, -1000, -1000, 1659, 1659, 1215, -1000, - -1000, 450, -1000, -1000, -1000, -1000, -1000, 1211, -119, -1000, - -1000, -1000, -1000, -1000, 29, 884, 29, 735, -1000, 714, - -1000, -1000, -208, -1000, -1000, 1258, 1383, -1000, -1000, 1245, - -1000, -1000, -1000, 27291, 27291, -1000, -1000, 180, -1000, 248, - 1010, -1000, -167, -1000, -1000, 1625, 27291, -1000, -1000, 7623, - -1000, -1000, 1212, 1351, -1000, -1000, -1000, -1000, -1000, -1000, - 1211, -1000, 1559, -1000, -1000, 255, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 13908, 13908, 13908, 13908, 13908, 1643, - 882, 955, 13908, 13908, 18829, 27291, 27291, 17036, 29, 19, - -1000, 12573, 12573, 1560, -1000, 1054, -1000, 1172, 27291, 1054, - 27291, -1000, 1643, -1000, 955, 955, 27291, 955, 1643, -1000, - -1000, 474, -1000, 474, 983, 976, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1623, 1085, -1000, 185, 27291, -1000, - 190, -1000, -172, -173, 1290, 1007, 1067, -1000, 528, 27291, - 27291, -1000, -1000, -1000, 2149, 2149, 2149, 2149, 1257, 848, - -1000, 2149, 2149, 1004, -1000, 1004, 1004, 436, -263, -1000, - 1513, 1505, 955, 1060, 1681, -1000, 1054, 1692, 433, 1043, - -1000, -1000, 1001, -1000, -1000, -1000, -1000, -1000, 1290, 1054, - 1029, -1000, -1000, -1000, 177, -1000, 7623, 5328, 995, -1000, - -1000, -1000, -1000, -1000, 848, 147, -154, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 19, 279, -1000, 1479, 1458, 1652, - 27291, 1043, 27291, -1000, 177, 13018, 27291, -1000, -57, -1000, - -1000, -1000, -1000, -1000, 1345, -1000, 1423, -126, -161, 1484, - 1486, 1486, 1505, 1650, 1499, 1497, -1000, 881, 1026, -1000, - -1000, 2149, 848, 988, 257, -1000, -1000, -136, -1000, 1416, - -1000, 1482, 733, -1000, -1000, -1000, -1000, 861, -1000, 1649, - 1646, -1000, -1000, -1000, 1355, 133, -1000, -144, -1000, 720, - -1000, -1000, -1000, 841, 740, 1347, -1000, 1672, -1000, -159, - -1000, -1000, -1000, -1000, -1000, 1680, 435, 435, -165, -1000, - -1000, -1000, 275, 768, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -327, 27337, 320, 107, 124, 27337, + 27337, 27337, 27337, 27337, 384, -1000, -1000, -1000, 153, 27337, + 27337, 370, -1000, 27337, 345, -1000, -1000, -1000, -1000, -1000, + -1000, 821, -1000, -1000, 580, -1000, -1000, -1000, -1000, -1000, + -1000, 580, -1000, -1000, -1000, 580, -1000, 27337, -1000, -1000, + 580, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 27337, -1000, 933, 27337, 27337, -1000, -1000, -1000, -1000, -1000, + 217, -56, 175, -1000, -1000, -1000, -1000, 1515, -1000, 821, + 481, 624, 510, -1000, -1000, 739, -1000, -1000, 2431, -1000, + -1000, -1000, -1000, 839, 13924, 13924, 13924, 1260, 2431, 2047, + 857, 2537, 439, 625, 625, 491, 491, 491, 491, 491, + 683, 683, -1000, -1000, -1000, -1000, 899, -1000, -1000, -1000, + 899, 10789, 10789, 1156, 1180, 394, -1000, 1238, -1000, -1000, + 1524, 1027, 1027, 754, 746, 572, 1587, 1027, 515, 1583, + 1027, 1027, 10789, -1000, -1000, 640, -1000, 12586, 899, -1000, + 1279, 1149, 1148, 1027, 899, 899, 1027, 1027, 27337, -1000, + -272, -1000, -99, 392, 1180, -1000, 19748, -1000, -1000, 899, + 1103, 1469, -1000, -1000, 1397, -1000, 1348, 12586, 12586, 12586, + -1000, -1000, -1000, 1469, 1561, -1000, 1371, 1369, 1577, 10789, + 19302, 1405, -1000, -1000, -1000, 393, 1577, 1119, 1180, -1000, + 27337, 19302, 19302, 19302, 19302, 19302, -1000, 1325, 1322, -1000, + 1314, 1312, 1313, 27337, -1000, 1040, 1059, 17518, 194, 1074, + 19302, 27337, -1000, -1000, 19302, 27337, 6245, -1000, 1137, -48, + -97, -1000, -1000, -1000, -1000, 821, -1000, 870, -1000, 292, + -1000, 242, -1000, -1000, -1000, -1000, 1480, -1000, 659, 17, + -1000, -1000, 14, 14, -1000, -1000, 433, 603, 433, 433, + 433, 928, 928, -1000, -1000, -1000, -1000, -1000, 763, -1000, + -1000, -1000, 757, -1000, -1000, 840, 1288, 99, -1000, -1000, + 509, 927, 1432, -1000, -1000, 1041, 319, -1000, 27337, -1000, + 1291, 1283, 1280, -1000, -1000, -1000, -1000, 3830, 27337, 1038, + -1000, 102, 27337, 1014, 27337, -1000, 1035, 27337, -1000, 965, + -1000, -1000, 7625, -1000, 27337, 1180, -1000, -1000, -1000, -1000, + 339, 1479, 1477, 105, 102, 433, 965, -1000, -1000, -1000, + -1000, -1000, -334, 1029, 27337, 111, -1000, 1192, 762, -1000, + 1237, -1000, -1000, -1000, -1000, 98, 173, 143, 288, -1000, + -1000, -1000, -1000, 1288, 27337, -1000, -1000, -1000, -1000, 617, + -1000, 617, -1000, -1000, -1000, -1000, 1471, -74, -305, -1000, + -302, -1000, -1000, -1000, -1000, 1260, 2431, 1739, -1000, 13924, + 13924, -1000, -1000, 1027, 1027, 10789, 7625, 1568, 1469, -1000, + -1000, 286, 690, 286, 13924, 13924, -1000, 13924, 13924, -1000, + -138, 1151, 545, -1000, 12586, 681, -1000, -1000, 13924, 13924, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 325, + 324, 323, 27337, -1000, -1000, -1000, 795, 911, 1346, 821, + 821, -1000, -1000, 27337, -1000, -1000, -1000, -1000, 1575, 12586, + -1000, 1121, -1000, 5785, 1524, 1278, 27337, 1180, 1606, 15721, + 27337, 1133, -1000, 518, 1276, 1236, 1265, 1263, -1000, -1000, + -1000, -1000, 1321, -1000, 1289, -1000, -1000, -1000, -1000, -1000, + 1059, 1577, 19302, 1123, -1000, 1123, -1000, 390, -1000, -1000, + -1000, -80, -93, -1000, -1000, -1000, 270, -1000, -1000, 1252, + 13924, -1000, -1000, -1000, 433, 433, -1000, -1000, -1000, -1000, + -1000, -1000, 1025, -1000, 1023, 1110, 1019, 53, -1000, 1125, + 1468, 509, 509, -1000, 744, -1000, 965, -1000, 27337, -1000, + 27337, 27337, 27337, 1562, 1107, -1000, 27337, -1000, -1000, 27337, + -1000, -1000, 1367, 99, 1017, -1000, -1000, -1000, 187, 27337, + -1000, 950, 102, -1000, -1000, -1000, -1000, -1000, -1000, 1188, + -1000, -1000, -1000, 1010, -1000, -159, 965, 27337, 27337, 27337, + -1000, 27337, -1000, -1000, 580, 580, -1000, 1453, -1000, 965, + -1000, 13924, 2431, 2431, -1000, -1000, 899, -1000, 1524, -1000, + 899, 1190, 1190, -1000, 1190, 1191, -1000, 1190, 80, 1190, + 63, 899, 899, 2383, 2344, 2318, 1758, 1180, -127, -1000, + 821, 12586, 2113, 1320, 1180, 1180, 1180, 1008, 910, 14, + -1000, -1000, -1000, 1571, 1559, 821, -1000, -1000, -1000, 1499, + 1072, 1101, -1000, -1000, 10343, 1013, 1366, 385, 1008, 1568, + 27337, 12586, -1000, -1000, 12586, 1189, -1000, 12586, -1000, -1000, + -1000, 1568, 1568, 1123, -1000, -1000, 448, -1000, -1000, -1000, + -1000, 24, 1594, 2431, -1000, -1000, 14, 898, 14, 738, + -1000, 708, -1000, -1000, -214, -1000, -1000, 1085, 1292, -1000, + -1000, 1188, -1000, -1000, -1000, 27337, 27337, -1000, -1000, 182, + -1000, 234, 997, -1000, -172, -1000, -1000, 1517, 27337, -1000, + -1000, 7625, -1000, -1000, 1187, 1240, -1000, -1000, -1000, -1000, + -1000, -1000, 2431, -1000, 1469, -1000, -1000, 200, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 13924, 13924, 13924, 13924, + 13924, 1524, 897, 821, 13924, 13924, 18856, 27337, 27337, 17059, + 14, -11, -1000, 12586, 12586, 1487, -1000, 1180, -1000, 1120, + 27337, 1180, 27337, -1000, 1524, -1000, 821, 821, 27337, 821, + 1524, -1000, 490, -1000, -117, 433, -1000, 433, 1005, 945, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1516, 1107, + -1000, 180, 27337, -1000, 187, -1000, -177, -178, 1212, 995, + 1106, -1000, 496, 27337, 27337, -1000, -1000, -1000, 1279, 1279, + 1279, 1279, 874, 899, -1000, 1279, 1279, 993, -1000, 993, + 993, 392, -265, -1000, 1398, 1401, 821, 1103, 1593, -1000, + 1180, 1606, 375, 1101, -1000, -1000, 988, -1000, 671, 1486, + -1000, 1485, -1000, -1000, -1000, -1000, -1000, 1212, 1180, 1178, + -1000, -1000, -1000, 179, -1000, 7625, 5325, 984, -1000, -1000, + -1000, -1000, -1000, 899, 123, -162, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -11, 262, -1000, 1378, 1375, 1555, 27337, + 1101, 27337, -1000, -1000, 891, -1000, -1000, 179, 13032, 27337, + -1000, -58, -1000, -1000, -1000, -1000, -1000, 1237, -1000, 1345, + -145, -166, 1382, 1384, 1384, 1401, 1553, 1395, 1389, -1000, + 889, 1062, -1000, -1000, -1000, 1279, 899, 980, 244, -1000, + -1000, -159, -1000, 1342, -1000, 1380, 759, -1000, -1000, -1000, + -1000, 887, -1000, 1531, 1527, -1000, -1000, -1000, 1248, 125, + -1000, -160, -1000, 758, -1000, -1000, -1000, 880, 865, 1239, + -1000, 1581, -1000, -163, -1000, -1000, -1000, -1000, -1000, 1592, + 391, 391, -168, -1000, -1000, -1000, 241, 753, -1000, -1000, + -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1935, 1932, 13, 87, 79, 1930, 1929, 1928, 1927, - 131, 129, 128, 1926, 1925, 1922, 1921, 1918, 1916, 1915, - 1912, 1910, 1908, 1906, 1905, 58, 116, 34, 36, 120, - 1899, 1898, 47, 1897, 1896, 1895, 118, 112, 455, 1894, - 113, 1893, 1892, 1891, 1890, 1889, 1888, 1887, 1886, 1883, - 1882, 1881, 1880, 1879, 151, 1878, 1877, 8, 1874, 50, - 1873, 1871, 1870, 1869, 1868, 91, 1867, 1864, 1863, 109, - 1853, 1851, 45, 180, 43, 78, 1847, 1846, 77, 764, - 1845, 97, 126, 1844, 17, 1843, 46, 68, 74, 1842, - 40, 1841, 1840, 114, 1838, 1833, 1831, 76, 1828, 1825, - 2792, 1820, 62, 84, 11, 31, 1818, 1817, 1816, 1815, - 30, 399, 1814, 1813, 22, 1808, 1807, 136, 1806, 86, - 15, 1805, 12, 19, 20, 1801, 81, 1800, 35, 52, - 27, 1799, 83, 1798, 1795, 1794, 1793, 38, 1792, 73, - 102, 41, 1790, 1789, 6, 9, 1788, 1782, 1780, 1779, - 1778, 1776, 4, 1775, 1774, 1773, 26, 1772, 18, 21, - 67, 130, 23, 7, 1771, 177, 1770, 28, 106, 63, - 108, 1769, 1768, 1767, 859, 1766, 44, 1764, 139, 1762, - 1758, 70, 1757, 111, 121, 1752, 1559, 1751, 72, 1050, - 2461, 33, 107, 1750, 1749, 2129, 57, 75, 25, 1748, - 1747, 1746, 122, 224, 60, 846, 42, 1745, 1743, 1742, - 1739, 1738, 1737, 1736, 117, 64, 37, 105, 24, 1734, - 1733, 1732, 49, 65, 1730, 104, 103, 66, 153, 1729, - 110, 92, 56, 1728, 89, 1727, 1726, 1724, 1723, 39, - 1722, 1721, 1720, 1719, 99, 88, 55, 29, 1718, 32, - 96, 101, 100, 1717, 16, 119, 10, 1716, 3, 0, - 1714, 5, 125, 1576, 124, 1713, 1710, 1, 1707, 2, - 1706, 1705, 85, 1704, 1703, 1701, 1700, 3246, 762, 115, - 1699, 127, + 0, 1867, 1866, 31, 84, 79, 1864, 1861, 1860, 1858, + 127, 125, 121, 1855, 1853, 1852, 1850, 1849, 1847, 1846, + 1843, 1841, 1839, 1838, 1835, 60, 122, 36, 38, 124, + 1833, 1831, 62, 1826, 1824, 1823, 118, 115, 433, 1822, + 114, 1820, 1819, 1816, 1815, 1814, 1813, 1812, 1811, 1809, + 1808, 1807, 1806, 1805, 150, 1804, 1803, 4, 1801, 86, + 1800, 1799, 1798, 1795, 1794, 85, 1790, 1788, 1786, 110, + 1785, 1783, 46, 347, 49, 70, 1780, 1779, 72, 784, + 1777, 101, 112, 1776, 598, 1775, 41, 99, 92, 1773, + 43, 1772, 1770, 87, 1769, 1768, 1767, 73, 1765, 1763, + 2766, 1761, 68, 76, 15, 20, 1758, 1757, 1756, 1755, + 33, 705, 1753, 1751, 11, 1750, 1749, 126, 1746, 83, + 35, 1745, 13, 10, 18, 1744, 82, 1738, 42, 52, + 23, 1737, 78, 1736, 1735, 1734, 1733, 25, 1729, 74, + 97, 37, 1727, 14, 7, 1726, 1724, 1722, 1718, 1717, + 1716, 12, 1715, 1713, 1712, 26, 1711, 9, 22, 71, + 81, 21, 6, 1710, 143, 1709, 19, 109, 67, 105, + 1707, 1706, 1702, 944, 1701, 64, 128, 1700, 1699, 45, + 1698, 412, 746, 1691, 1690, 1689, 66, 1254, 2666, 27, + 113, 1688, 1687, 2023, 57, 75, 17, 1667, 1666, 1664, + 120, 304, 56, 791, 44, 1662, 1661, 1660, 1659, 1658, + 1656, 1655, 47, 1654, 1653, 1652, 34, 16, 116, 29, + 1651, 1650, 1648, 1647, 1645, 63, 24, 1643, 104, 103, + 65, 106, 1642, 111, 107, 55, 1641, 80, 1639, 1638, + 1637, 1636, 39, 1634, 1633, 1632, 1630, 102, 88, 50, + 40, 1629, 30, 96, 91, 89, 1627, 28, 123, 8, + 1626, 3, 0, 1624, 5, 132, 1443, 133, 1623, 1622, + 1, 1621, 2, 1620, 1619, 77, 1617, 1616, 1614, 1613, + 3234, 546, 108, 1593, 119, } var yyR1 = [...]int{ - 0, 275, 276, 276, 1, 1, 1, 1, 1, 1, + 0, 278, 279, 279, 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, 259, 259, 259, 262, 262, 21, + 1, 1, 1, 1, 262, 262, 262, 265, 265, 21, 50, 3, 3, 3, 3, 2, 2, 8, 9, 4, 5, 5, 10, 10, 61, 61, 11, 12, 12, 12, - 12, 279, 279, 95, 95, 93, 93, 94, 94, 160, - 160, 13, 14, 14, 170, 170, 169, 169, 169, 171, - 171, 171, 171, 205, 205, 15, 15, 15, 15, 15, - 70, 70, 261, 261, 260, 258, 258, 257, 257, 256, - 23, 24, 33, 33, 33, 33, 34, 35, 263, 263, - 235, 39, 39, 38, 38, 38, 38, 40, 40, 37, - 37, 36, 36, 237, 237, 224, 224, 236, 236, 236, - 236, 236, 236, 236, 223, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 207, 207, 207, 207, - 210, 210, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 209, 209, 209, 209, 209, 211, 211, 211, 211, - 211, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 213, 213, 213, 213, - 213, 213, 213, 213, 222, 222, 214, 214, 217, 217, - 218, 218, 218, 219, 219, 220, 220, 215, 215, 215, - 216, 216, 216, 225, 249, 249, 248, 248, 246, 246, - 246, 246, 234, 234, 243, 243, 243, 243, 243, 233, - 233, 229, 229, 229, 230, 230, 231, 231, 228, 228, - 232, 232, 245, 245, 244, 226, 226, 227, 227, 251, - 251, 251, 251, 252, 268, 269, 267, 267, 267, 267, - 267, 59, 59, 59, 185, 185, 185, 241, 241, 240, - 240, 240, 242, 242, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 180, 180, 180, 266, 266, 266, 266, - 266, 266, 265, 265, 265, 238, 238, 238, 264, 264, - 129, 129, 130, 130, 30, 30, 30, 30, 30, 30, - 29, 29, 29, 25, 25, 25, 25, 25, 25, 25, + 12, 282, 282, 95, 95, 93, 93, 94, 94, 159, + 159, 13, 14, 14, 169, 169, 168, 168, 168, 170, + 170, 170, 170, 203, 203, 15, 15, 15, 15, 15, + 70, 70, 264, 264, 263, 261, 261, 260, 260, 259, + 23, 24, 33, 33, 33, 33, 34, 35, 266, 266, + 238, 39, 39, 38, 38, 38, 38, 40, 40, 37, + 37, 36, 36, 240, 240, 227, 227, 239, 239, 239, + 239, 239, 239, 239, 226, 205, 205, 205, 205, 208, + 208, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 207, 207, 207, 207, 207, 209, 209, 209, 209, 209, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 211, 211, 211, 211, 211, + 211, 211, 211, 225, 225, 212, 212, 218, 218, 219, + 219, 219, 221, 221, 222, 222, 183, 183, 183, 214, + 214, 215, 215, 220, 220, 216, 216, 216, 217, 217, + 217, 224, 224, 224, 224, 224, 213, 213, 228, 252, + 252, 251, 251, 249, 249, 249, 249, 237, 237, 246, + 246, 246, 246, 246, 236, 236, 232, 232, 232, 233, + 233, 234, 234, 231, 231, 235, 235, 248, 248, 247, + 229, 229, 230, 230, 254, 254, 254, 254, 255, 271, + 272, 270, 270, 270, 270, 270, 59, 59, 59, 184, + 184, 184, 244, 244, 243, 243, 243, 245, 245, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 178, 178, + 178, 269, 269, 269, 269, 269, 269, 268, 268, 268, + 241, 241, 241, 267, 267, 129, 129, 130, 130, 30, + 30, 30, 30, 30, 30, 29, 29, 29, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 31, 31, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 221, 221, 221, 253, 253, 254, 254, - 17, 22, 22, 18, 18, 18, 18, 19, 19, 41, + 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, + 31, 31, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 258, 258, 258, 258, + 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, + 258, 258, 258, 258, 258, 258, 258, 258, 223, 223, + 223, 256, 256, 257, 257, 17, 22, 22, 18, 18, + 18, 18, 19, 19, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 177, - 177, 270, 270, 179, 179, 175, 175, 178, 178, 176, - 176, 176, 181, 181, 181, 182, 182, 274, 274, 274, - 43, 43, 45, 45, 46, 47, 47, 200, 200, 201, - 201, 48, 49, 60, 60, 60, 60, 60, 60, 62, - 62, 62, 7, 7, 7, 7, 56, 56, 56, 6, - 6, 44, 44, 51, 271, 271, 272, 273, 273, 273, - 273, 52, 20, 20, 20, 20, 20, 20, 77, 77, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 71, 71, 71, 66, 66, 280, 54, 55, - 55, 69, 69, 69, 63, 63, 63, 68, 68, 68, - 74, 74, 76, 76, 76, 76, 76, 78, 78, 78, - 78, 78, 78, 73, 73, 75, 75, 75, 75, 193, - 193, 193, 192, 192, 85, 85, 86, 86, 87, 87, - 88, 88, 88, 127, 103, 103, 159, 159, 158, 158, - 161, 161, 89, 89, 89, 89, 90, 90, 91, 91, - 92, 92, 199, 199, 198, 198, 198, 197, 197, 96, - 96, 96, 98, 97, 97, 97, 97, 99, 99, 101, - 101, 100, 100, 102, 104, 104, 104, 104, 104, 105, - 105, 84, 84, 84, 84, 84, 84, 84, 84, 173, - 173, 107, 107, 106, 106, 106, 106, 106, 106, 106, - 106, 106, 106, 118, 118, 118, 118, 118, 118, 108, - 108, 108, 108, 108, 108, 108, 72, 72, 119, 119, - 119, 126, 120, 120, 111, 111, 111, 111, 111, 111, + 42, 42, 42, 42, 42, 42, 42, 42, 273, 273, + 177, 177, 174, 174, 176, 176, 175, 175, 175, 179, + 179, 179, 180, 180, 277, 277, 277, 43, 43, 45, + 45, 46, 47, 47, 198, 198, 199, 199, 48, 49, + 60, 60, 60, 60, 60, 60, 62, 62, 62, 7, + 7, 7, 7, 56, 56, 56, 6, 6, 44, 44, + 51, 274, 274, 275, 276, 276, 276, 276, 52, 20, + 20, 20, 20, 20, 20, 77, 77, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 71, + 71, 71, 66, 66, 283, 54, 55, 55, 69, 69, + 69, 63, 63, 63, 68, 68, 68, 74, 74, 76, + 76, 76, 76, 76, 78, 78, 78, 78, 78, 78, + 73, 73, 75, 75, 75, 75, 191, 191, 191, 190, + 190, 85, 85, 86, 86, 87, 87, 88, 88, 88, + 127, 103, 103, 158, 158, 157, 157, 160, 160, 89, + 89, 89, 89, 90, 90, 91, 91, 92, 92, 197, + 197, 196, 196, 196, 195, 195, 96, 96, 96, 98, + 97, 97, 97, 97, 99, 99, 101, 101, 100, 100, + 102, 104, 104, 104, 104, 104, 105, 105, 84, 84, + 84, 84, 84, 84, 84, 84, 172, 172, 107, 107, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 118, 118, 118, 118, 118, 118, 108, 108, 108, 108, + 108, 108, 108, 72, 72, 119, 119, 119, 126, 120, + 120, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 115, 115, - 115, 115, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 281, 281, 117, 116, 116, 116, 116, 116, 116, - 116, 67, 67, 67, 67, 67, 204, 204, 204, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 206, 206, 133, 133, 64, 64, 131, 131, 132, 134, - 134, 128, 128, 128, 110, 110, 110, 110, 110, 110, - 110, 110, 112, 112, 112, 135, 135, 136, 136, 137, - 137, 138, 138, 139, 140, 140, 140, 141, 141, 141, - 141, 32, 32, 32, 32, 32, 27, 27, 27, 27, - 28, 28, 28, 79, 79, 79, 79, 81, 81, 80, - 80, 57, 57, 58, 58, 58, 82, 82, 83, 83, - 83, 83, 156, 156, 156, 142, 142, 142, 142, 148, - 148, 148, 144, 144, 146, 146, 146, 147, 147, 147, - 145, 151, 151, 153, 153, 152, 152, 150, 150, 155, - 155, 154, 154, 149, 149, 109, 109, 109, 109, 109, - 157, 157, 157, 157, 162, 162, 122, 122, 124, 124, - 123, 125, 163, 163, 167, 164, 164, 168, 168, 168, - 168, 168, 165, 165, 166, 166, 194, 194, 194, 172, - 172, 186, 186, 183, 183, 184, 184, 174, 174, 187, - 187, 187, 53, 121, 121, 250, 250, 247, 190, 190, - 191, 191, 195, 195, 196, 196, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 277, 278, 202, 203, 203, 203, + 111, 111, 111, 111, 111, 115, 115, 115, 115, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 284, 284, + 117, 116, 116, 116, 116, 116, 116, 116, 67, 67, + 67, 67, 67, 202, 202, 202, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 133, + 133, 64, 64, 131, 131, 132, 134, 134, 128, 128, + 128, 110, 110, 110, 110, 110, 110, 110, 110, 112, + 112, 112, 135, 135, 136, 136, 137, 137, 138, 138, + 139, 140, 140, 140, 141, 141, 141, 141, 32, 32, + 32, 32, 32, 27, 27, 27, 27, 28, 28, 28, + 79, 79, 79, 79, 81, 81, 80, 80, 57, 57, + 58, 58, 58, 82, 82, 83, 83, 83, 83, 155, + 155, 155, 142, 142, 142, 142, 147, 147, 147, 143, + 143, 145, 145, 145, 146, 146, 146, 144, 150, 150, + 152, 152, 151, 151, 149, 149, 154, 154, 153, 153, + 148, 148, 109, 109, 109, 109, 109, 156, 156, 156, + 156, 161, 161, 122, 122, 124, 124, 123, 125, 162, + 162, 166, 163, 163, 167, 167, 167, 167, 167, 164, + 164, 165, 165, 192, 192, 192, 171, 171, 181, 181, + 182, 182, 173, 173, 185, 185, 185, 53, 121, 121, + 253, 253, 250, 188, 188, 189, 189, 193, 193, 194, + 194, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 280, 281, 200, 201, + 201, 201, } var yyR2 = [...]int{ @@ -4354,90 +4360,91 @@ var yyR2 = [...]int{ 4, 3, 5, 4, 1, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 6, 11, 2, 0, 2, 0, 2, 1, 0, 2, 1, 3, 3, - 5, 3, 6, 7, 7, 7, 4, 2, 1, 1, + 4, 3, 6, 7, 7, 7, 4, 2, 1, 1, 4, 0, 1, 1, 1, 2, 2, 0, 1, 4, 4, 4, 4, 2, 4, 1, 3, 1, 1, 3, - 4, 3, 3, 3, 3, 0, 2, 3, 3, 4, - 2, 3, 3, 2, 3, 2, 3, 1, 1, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, - 2, 4, 4, 2, 2, 3, 3, 3, 3, 1, - 1, 1, 1, 1, 6, 6, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 0, 3, 0, 5, - 0, 3, 5, 0, 1, 0, 1, 0, 2, 2, - 0, 2, 2, 5, 0, 1, 1, 2, 1, 3, - 2, 3, 0, 1, 3, 3, 3, 4, 2, 0, - 2, 1, 1, 1, 1, 1, 0, 1, 1, 1, - 0, 1, 1, 3, 3, 3, 1, 3, 1, 10, - 11, 11, 12, 5, 3, 3, 1, 1, 2, 2, - 2, 0, 1, 1, 0, 1, 2, 0, 1, 1, - 3, 2, 1, 2, 3, 3, 4, 4, 3, 3, - 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, + 4, 3, 3, 3, 8, 3, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, + 4, 4, 2, 2, 3, 3, 3, 3, 1, 1, + 1, 1, 1, 6, 6, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 0, 3, 0, 5, 0, + 3, 5, 0, 1, 0, 1, 0, 1, 2, 0, + 2, 0, 3, 0, 1, 0, 2, 2, 0, 2, + 2, 0, 2, 1, 2, 1, 0, 2, 5, 0, + 1, 1, 2, 1, 3, 2, 3, 0, 1, 3, + 3, 3, 4, 2, 0, 2, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 0, 1, 1, 3, 3, + 3, 1, 3, 1, 10, 11, 11, 12, 5, 3, + 3, 1, 1, 2, 2, 2, 0, 1, 1, 0, + 1, 2, 0, 1, 1, 3, 2, 1, 2, 3, + 3, 4, 4, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 4, 5, 0, 2, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, - 0, 2, 0, 2, 0, 1, 5, 1, 3, 7, - 1, 3, 3, 1, 2, 2, 2, 5, 5, 5, - 6, 6, 5, 5, 2, 2, 2, 2, 3, 3, - 3, 4, 1, 3, 5, 1, 3, 3, 3, 3, - 3, 3, 3, 3, 2, 2, 2, 4, 4, 2, - 10, 3, 6, 7, 5, 5, 5, 12, 7, 5, - 9, 5, 3, 7, 4, 4, 4, 4, 3, 3, - 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 2, 0, 2, 2, 1, 3, 8, 8, - 3, 3, 5, 6, 6, 5, 4, 3, 2, 3, - 3, 3, 3, 3, 3, 3, 4, 2, 4, 4, - 4, 4, 4, 5, 7, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 2, 4, 7, 2, 4, 5, - 4, 3, 3, 5, 2, 3, 3, 3, 3, 1, - 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, - 2, 2, 0, 2, 2, 0, 2, 0, 1, 1, - 2, 1, 1, 2, 1, 1, 5, 0, 1, 0, - 1, 2, 3, 0, 3, 3, 3, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 1, 1, 3, - 3, 2, 2, 3, 1, 3, 2, 1, 2, 1, - 2, 2, 3, 3, 6, 4, 7, 6, 1, 3, - 2, 2, 2, 2, 1, 1, 1, 3, 2, 1, - 1, 1, 0, 1, 1, 0, 3, 0, 2, 0, - 2, 1, 2, 2, 0, 1, 1, 0, 1, 1, - 0, 1, 0, 1, 2, 3, 4, 1, 1, 1, - 1, 1, 1, 1, 3, 1, 2, 3, 5, 0, - 1, 2, 1, 1, 0, 2, 1, 3, 1, 1, - 1, 3, 3, 3, 3, 7, 0, 3, 1, 3, - 1, 3, 4, 4, 4, 3, 2, 4, 0, 1, - 0, 2, 0, 1, 0, 1, 2, 1, 1, 1, - 2, 2, 1, 2, 3, 2, 3, 2, 2, 2, - 1, 1, 3, 3, 0, 5, 4, 5, 5, 0, - 2, 1, 3, 3, 3, 2, 3, 1, 2, 0, - 3, 1, 1, 3, 3, 4, 4, 5, 3, 4, - 5, 6, 2, 1, 2, 1, 2, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, - 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, + 3, 3, 3, 3, 3, 3, 4, 5, 0, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 1, 0, 2, 0, 2, 0, + 1, 5, 1, 3, 7, 1, 3, 3, 1, 2, + 2, 2, 5, 5, 5, 6, 6, 5, 5, 2, + 2, 2, 2, 3, 3, 3, 4, 1, 3, 5, + 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 2, 4, 4, 2, 10, 3, 6, 7, 5, + 5, 5, 12, 7, 5, 9, 5, 3, 7, 4, + 4, 4, 4, 3, 3, 3, 7, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 2, 0, 2, + 2, 1, 3, 8, 8, 3, 3, 5, 5, 6, + 5, 4, 3, 2, 3, 3, 3, 3, 3, 3, + 3, 4, 5, 2, 4, 4, 4, 4, 4, 5, + 4, 5, 4, 7, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 2, 4, 7, 2, 4, 5, 4, + 3, 3, 5, 2, 3, 3, 3, 3, 1, 1, + 0, 1, 0, 1, 1, 1, 0, 2, 2, 0, + 2, 2, 0, 2, 0, 1, 1, 2, 1, 1, + 2, 1, 1, 5, 0, 1, 0, 1, 2, 3, + 0, 3, 3, 3, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 1, 1, 3, 3, 2, 2, + 3, 1, 3, 2, 1, 2, 1, 2, 2, 3, + 3, 6, 4, 7, 6, 1, 3, 2, 2, 2, + 2, 1, 1, 1, 3, 2, 1, 1, 1, 0, + 1, 1, 0, 3, 0, 2, 0, 2, 1, 2, + 2, 0, 1, 1, 0, 1, 1, 0, 1, 0, + 1, 2, 3, 4, 1, 1, 1, 1, 1, 1, + 1, 3, 1, 2, 3, 5, 0, 1, 2, 1, + 1, 0, 2, 1, 3, 1, 1, 1, 3, 3, + 3, 3, 7, 0, 3, 1, 3, 1, 3, 4, + 4, 4, 3, 2, 4, 0, 1, 0, 2, 0, + 1, 0, 1, 2, 1, 1, 1, 2, 2, 1, + 2, 3, 2, 3, 2, 2, 2, 1, 1, 3, + 3, 0, 5, 4, 5, 5, 0, 2, 1, 3, + 3, 3, 2, 3, 1, 2, 0, 3, 1, 1, + 3, 3, 4, 4, 5, 3, 4, 5, 6, 2, + 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 0, 2, 1, 1, 1, 3, 1, + 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 1, 1, 1, 1, 4, 5, - 5, 6, 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, - 4, 0, 3, 4, 7, 3, 1, 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, 2, 1, 1, 3, 3, 3, 3, - 3, 3, 3, 0, 3, 3, 3, 0, 3, 1, - 1, 0, 4, 0, 1, 1, 0, 3, 1, 3, - 2, 1, 0, 2, 4, 0, 9, 3, 5, 0, - 3, 3, 0, 1, 0, 2, 2, 0, 2, 2, - 2, 0, 3, 0, 3, 0, 3, 0, 4, 0, - 3, 0, 4, 0, 1, 2, 1, 5, 4, 4, - 1, 3, 3, 5, 0, 5, 1, 3, 1, 2, - 3, 1, 1, 3, 3, 1, 3, 3, 3, 3, - 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, - 1, 0, 1, 0, 2, 0, 3, 0, 1, 0, - 1, 1, 5, 0, 1, 0, 1, 2, 1, 1, + 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 1, 1, 1, 1, 4, 5, 5, 6, 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, 4, 0, 3, + 4, 7, 3, 1, 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, + 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, + 0, 3, 3, 3, 0, 3, 1, 1, 0, 4, + 0, 1, 1, 0, 3, 1, 3, 2, 1, 0, + 2, 4, 0, 9, 3, 5, 0, 3, 3, 0, + 1, 0, 2, 2, 0, 2, 2, 2, 0, 3, + 0, 3, 0, 3, 0, 4, 0, 3, 0, 4, + 0, 1, 2, 1, 5, 4, 4, 1, 3, 3, + 5, 0, 5, 1, 3, 1, 2, 3, 1, 1, + 3, 3, 1, 3, 3, 3, 3, 3, 2, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 0, 2, + 0, 3, 0, 1, 0, 1, 1, 5, 0, 1, + 0, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -4477,456 +4484,460 @@ 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, 1, 1, - 1, 1, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, + 1, 1, } var yyChk = [...]int{ - -1000, -275, -1, -3, -8, -9, -10, -11, -12, -13, + -1000, -278, -1, -3, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -41, -42, -43, -45, -46, -47, -48, -49, -6, -44, -20, -21, -50, -51, - -52, -53, -4, -277, 6, 7, 8, -61, 10, 11, + -52, -53, -4, -280, 6, 7, 8, -61, 10, 11, 31, -23, -33, 153, -34, -24, 154, -35, 156, 155, - 191, 157, 184, 71, 226, 227, 229, 230, 231, 232, + 191, 157, 184, 71, 225, 226, 228, 229, 230, 231, -62, 189, 190, 159, 35, 42, 32, 33, 36, 81, - 9, 324, 186, 185, 26, -276, 464, -69, 5, -137, - 16, -3, -54, -280, -54, -54, -54, -54, -54, -54, - -235, -237, 81, 126, 81, -70, -186, 164, 173, 172, - 169, -263, 107, 219, 315, 162, -39, -38, -37, -36, - -40, 30, -30, -31, -255, -29, -26, 158, 155, 199, - 102, 103, 191, 192, 193, 157, 175, 190, 194, 189, - 208, -25, 77, 32, 337, 340, -242, 154, 160, 161, - 325, 105, 104, 72, 156, -239, 276, 441, -40, 443, - 95, 97, 442, 41, 164, 444, 445, 446, 447, 174, - 448, 449, 450, 451, 457, 458, 459, 460, 106, 5, - 163, -263, -79, 286, 77, -262, -259, 84, 85, 86, - 163, -186, 164, 165, -263, 163, -100, -195, -259, -189, - 334, 177, 368, 369, 224, 77, 276, 441, 226, 240, - 234, 261, 253, 335, 370, 178, 212, 438, 251, 254, - 302, 443, 371, 192, 298, 281, 289, 95, 229, 311, - 456, 372, 454, 97, 442, 76, 48, 41, 187, 249, - 245, 444, 213, 373, 345, 206, 105, 102, 463, 243, - 47, 28, 453, 104, 46, 445, 374, 446, 291, 266, - 432, 45, 193, 375, 80, 339, 440, 293, 244, 290, - 223, 452, 159, 376, 424, 300, 433, 377, 267, 271, - 378, 303, 49, 379, 380, 434, 103, 381, 75, 447, - 238, 239, 382, 221, 176, 305, 265, 174, 34, 294, - 336, 225, 55, 200, 306, 43, 269, 42, 428, 383, - 431, 264, 260, 50, 384, 385, 386, 387, 448, 263, - 237, 259, 462, 218, 449, 59, 161, 273, 272, 274, - 207, 301, 256, 388, 389, 390, 181, 78, 391, 246, - 19, 392, 393, 214, 394, 53, 395, 396, 309, 190, - 397, 51, 450, 38, 195, 451, 398, 399, 400, 401, - 402, 299, 403, 292, 268, 270, 202, 288, 338, 404, - 242, 194, 455, 405, 182, 439, 196, 199, 189, 310, - 183, 406, 407, 408, 409, 410, 411, 412, 230, 457, - 40, 413, 414, 415, 416, 222, 217, 304, 313, 58, - 79, 278, 417, 437, 236, 215, 418, 227, 52, 458, - 459, 460, 209, 461, 284, 106, 219, 220, 44, 257, - 201, 419, 420, 247, 248, 262, 235, 258, 228, 425, - 203, 191, 421, 312, 216, 279, 342, 208, 436, 341, - 255, 252, 210, 422, 165, 204, 205, 423, 426, 295, - 285, 296, 297, 286, 211, 340, 250, 280, 163, -165, - 281, 282, 283, 294, 295, 300, 299, 202, -274, 303, - 163, -175, 144, 153, 291, -179, 292, 285, 286, 211, - -270, -259, 446, 461, 302, 254, 304, 428, 287, 293, - 297, 296, -195, 228, -200, 233, -190, -259, -189, 231, - -100, -60, 424, 157, -202, -202, -71, 428, 430, -120, - -84, -106, 110, -111, 30, 24, -110, -107, -128, -125, - -126, 144, 145, 147, 146, 148, 133, 134, 141, 111, - 149, -115, -113, -114, -116, 88, 87, 96, 89, 90, - 91, 92, 98, 99, 100, -190, -195, -123, -277, 65, - 66, 325, 326, 327, 328, 333, 329, 113, 54, 314, - 323, 322, 321, 318, 319, 316, 317, 331, 332, 168, - 315, 162, 139, 324, -259, -189, 41, 284, 284, -100, - -5, -4, -277, 6, 21, 22, -141, 18, 17, -278, - 83, -63, -76, 60, 61, -78, 22, 37, 64, 62, - -55, -75, 135, -84, -195, -75, -174, 167, -174, -174, - -164, -205, 228, -168, 304, 303, -191, -166, -190, -188, - -165, 301, 158, 343, 109, 23, 25, 112, 144, 17, - 113, 36, 160, 175, 143, 171, 325, 153, 69, 344, - 316, 317, 314, 320, 327, 328, 315, 282, 30, 11, - 346, 26, 185, 22, 37, 137, 155, 116, 117, 188, - 24, 186, 100, 349, 20, 72, 180, 12, 173, 14, - 350, 351, 15, 168, 167, 128, 164, 67, 9, 149, - 27, 125, 63, 352, 29, 353, 354, 355, 356, 65, - 126, 18, 318, 319, 32, 429, 357, 333, 197, 139, - 70, 56, 430, 110, 358, 359, 98, 360, 101, 73, - 435, 107, 16, 68, 39, 361, 198, 362, 170, 363, - 307, 364, 127, 156, 324, 66, 365, 162, 283, 6, - 330, 31, 184, 172, 64, 366, 163, 115, 331, 332, - 166, 99, 5, 169, 33, 10, 71, 74, 321, 322, - 323, 54, 337, 114, 13, 367, 308, 108, 302, 254, - -236, 126, -223, -227, -190, 179, -252, 175, -100, -245, - -244, -190, -79, 163, -259, 164, 164, 164, -184, 168, - 324, -36, -37, -165, 143, 196, 82, 82, -227, -226, - -225, -264, 198, 179, -251, -243, 171, 180, -233, 172, - 173, -228, 164, 29, -264, -228, 170, 180, 198, 198, - 106, 198, 106, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 195, -234, 118, -234, 341, 341, -239, -264, - -264, -264, 166, 34, 34, -187, -228, 166, 23, -234, - -234, -165, 143, -234, -234, -234, -234, 206, 206, -234, - -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, - -234, -234, -234, -234, -100, -82, 213, 153, 155, 158, - 73, 118, -38, 208, -22, -100, 163, -259, -183, 168, - -183, -100, 150, -100, -181, 126, 13, -181, -181, -181, - -181, -181, 209, 298, 209, 298, 209, 210, 209, 210, - 209, -178, -177, 289, 290, 284, 288, -259, 431, 315, - 300, -259, 202, 163, 203, 165, -229, 164, 34, 176, - 210, 284, 205, -181, -203, -277, -191, -203, -203, 31, - 166, -190, -56, -190, 88, -7, -3, -11, -10, -12, - 118, -77, 284, -65, 144, 446, 432, 433, 434, 431, - 299, 439, 437, 435, 209, 436, 82, 109, 107, 108, - 125, -84, -108, 128, 110, 126, 127, 112, 130, 129, - 140, 133, 134, 135, 136, 137, 138, 139, 131, 132, - 143, 118, 119, 120, 121, 122, 123, 124, -173, -277, - -126, -277, 151, 152, -111, -111, -111, -111, -111, -111, - -111, -111, -111, -111, -277, 150, -2, -120, -4, -277, - -277, -277, -277, -277, -277, -277, -277, -133, -84, -277, - -281, -117, -277, -281, -117, -281, -117, -281, -277, -281, - -117, -281, -117, -281, -281, -117, -277, -277, -277, -277, - -277, -277, -277, -202, -271, -272, -103, -100, -277, -137, - -3, -54, -156, 20, 32, -84, -138, -139, -84, -137, - 56, -73, -75, -78, 60, 61, 94, 12, -193, -192, - 23, -190, 88, 150, 12, -101, 27, -100, -86, -87, - -88, -89, -103, -127, -277, 12, -93, -94, -100, -102, - -195, 82, 228, -168, -205, -170, -169, 305, 307, 118, - -194, -190, 88, 30, 83, 82, -100, -207, -210, -212, - -211, -213, -208, -209, 251, 252, 144, 255, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 31, 187, - 247, 248, 249, 250, 267, 268, 269, 270, 271, 272, - 273, 274, 234, 253, 335, 235, 236, 237, 238, 239, - 240, 242, 243, 244, 245, 246, -262, -259, 81, 83, - 82, -214, 81, -82, -184, -250, -247, 74, -259, -259, - -259, -259, 110, -234, -234, 195, -29, -26, -255, 16, - -25, -26, 158, 102, 103, 155, 81, -223, 81, -232, - -262, -259, 81, 29, 170, 169, -231, -228, -231, -232, - -259, -128, -190, -195, -259, 29, 29, -161, -190, -161, - -161, 21, -161, 21, -161, 21, 89, -190, -161, 21, - -161, 21, -161, 21, -161, 21, -161, 21, 30, 75, - 76, 30, 78, 79, 80, -128, -128, -223, -165, -100, - -259, 89, 89, -234, -234, 89, 88, 88, 88, -234, - -234, 89, 88, -259, 88, -265, 181, 223, 225, 89, - 89, 89, 89, 30, 88, -266, 30, 453, 452, 454, - 455, 456, 89, 30, 89, 30, 89, -190, 81, -81, - 215, 118, 204, 204, 163, 163, 217, -100, 216, 218, - 220, 41, 82, 166, -183, 73, -95, -100, 24, -259, - -196, -195, -188, 88, -84, -181, -100, -181, -100, -181, - -181, -181, -181, -176, 12, 128, -230, 12, 128, -176, - -203, -203, -203, -100, -203, -203, -100, -203, -203, -230, - -182, 126, 73, -201, 231, 265, 425, 426, 427, 82, - 337, -93, 431, 431, 431, 431, 431, 431, -84, -84, - -84, -84, -118, 98, 110, 99, 100, -111, -119, -123, - -126, 93, 128, 126, 127, 112, -111, -111, -111, -111, + 9, 325, 186, 185, 26, -279, 465, -69, 5, -137, + 16, -3, -54, -283, -54, -54, -54, -54, -54, -54, + -238, -240, 81, 126, 81, -70, 163, 164, 173, 172, + 169, -266, 107, 316, 162, -39, -38, -37, -36, -40, + 30, -30, -31, -258, -29, -26, 158, 155, 199, 102, + 103, 191, 192, 193, 157, 175, 190, 194, 189, 208, + -25, 77, 32, 338, 341, -245, 154, 160, 161, 326, + 105, 104, 72, 156, -242, 275, 442, -40, 444, 95, + 97, 443, 41, 164, 445, 446, 447, 448, 174, 449, + 450, 451, 452, 458, 459, 460, 461, 106, 5, 163, + -266, -79, 285, 77, -265, -262, 84, 85, 86, 163, + 163, 164, 165, -266, 163, -100, -193, -262, -187, 335, + 177, 369, 370, 223, 77, 275, 442, 225, 239, 233, + 260, 252, 336, 371, 178, 212, 439, 250, 253, 303, + 444, 372, 192, 297, 280, 288, 95, 228, 312, 457, + 373, 455, 97, 443, 76, 48, 41, 187, 248, 244, + 445, 213, 374, 346, 206, 105, 102, 464, 242, 47, + 28, 454, 104, 46, 446, 375, 447, 290, 265, 433, + 45, 193, 376, 80, 340, 441, 292, 243, 289, 222, + 453, 159, 377, 425, 299, 434, 378, 266, 270, 379, + 304, 49, 380, 381, 435, 103, 382, 75, 448, 237, + 238, 383, 220, 176, 306, 264, 174, 34, 293, 337, + 224, 55, 200, 307, 43, 268, 42, 429, 384, 432, + 263, 259, 50, 385, 386, 387, 388, 449, 262, 236, + 258, 463, 218, 450, 59, 161, 272, 271, 273, 207, + 302, 255, 389, 390, 391, 181, 78, 392, 245, 19, + 393, 394, 300, 214, 395, 53, 396, 397, 310, 190, + 398, 51, 451, 38, 195, 452, 399, 400, 401, 402, + 403, 298, 404, 291, 267, 269, 202, 287, 339, 405, + 241, 194, 456, 406, 182, 440, 196, 199, 189, 311, + 183, 407, 408, 409, 410, 411, 412, 413, 229, 458, + 40, 414, 415, 416, 417, 221, 217, 305, 314, 58, + 79, 277, 418, 438, 235, 215, 419, 226, 52, 459, + 460, 461, 209, 462, 283, 106, 219, 44, 256, 201, + 420, 421, 246, 247, 261, 234, 257, 227, 426, 203, + 301, 191, 422, 313, 216, 278, 343, 208, 437, 342, + 254, 251, 210, 423, 165, 204, 205, 424, 427, 294, + 284, 295, 296, 285, 211, 341, 249, 279, 163, -164, + 280, 281, 282, 293, 294, 299, 300, 298, 202, -277, + 304, 163, 283, 286, 301, -174, 144, 153, 290, -177, + 291, 284, 285, 211, -273, -262, 447, 462, 303, 253, + 305, 429, 292, 296, 295, -193, 227, -198, 232, -188, + -262, -187, 230, -100, -60, 425, 157, -200, -200, -71, + 429, 431, -120, -84, -106, 110, -111, 30, 24, -110, + -107, -128, -125, -126, 144, 145, 147, 146, 148, 133, + 134, 141, 111, 149, -115, -113, -114, -116, 88, 87, + 96, 89, 90, 91, 92, 98, 99, 100, -188, -193, + -123, -280, 65, 66, 326, 327, 328, 329, 334, 330, + 113, 54, 315, 324, 323, 322, 319, 320, 317, 318, + 332, 333, 168, 316, 162, 139, 325, -262, -187, 41, + 283, 283, -100, -5, -4, -280, 6, 21, 22, -141, + 18, 17, -281, 83, -63, -76, 60, 61, -78, 22, + 37, 64, 62, -55, -75, 135, -84, -193, -75, -173, + 167, -173, -173, -163, -203, 227, -167, 305, 304, -189, + -165, -188, -186, -164, 302, 158, 344, 109, 23, 25, + 112, 144, 17, 113, 36, 160, 175, 143, 171, 326, + 153, 69, 345, 317, 318, 315, 321, 328, 329, 316, + 281, 30, 11, 347, 26, 185, 22, 37, 137, 155, + 116, 117, 188, 24, 186, 100, 350, 20, 72, 180, + 12, 173, 14, 351, 352, 15, 168, 167, 128, 164, + 67, 9, 149, 27, 125, 63, 353, 29, 354, 355, + 356, 357, 65, 126, 18, 319, 320, 32, 430, 358, + 334, 197, 139, 70, 56, 431, 110, 359, 360, 98, + 361, 101, 73, 436, 107, 16, 68, 39, 362, 198, + 363, 170, 364, 308, 365, 127, 156, 325, 66, 366, + 162, 282, 6, 331, 31, 184, 172, 64, 367, 163, + 115, 332, 333, 166, 99, 5, 169, 33, 10, 71, + 74, 322, 323, 324, 54, 338, 114, 13, 368, 309, + 108, 303, 253, -239, 126, -226, -230, -188, 179, -255, + 175, -100, -248, -247, -188, -79, -182, 168, -262, 164, + 164, 164, -182, 325, -36, -37, -164, 143, 196, 82, + 82, -230, -229, -228, -267, 198, 179, -254, -246, 171, + 180, -236, 172, 173, -231, 164, 29, -267, -231, 170, + 180, 198, 198, 106, 198, 106, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 195, -237, 118, -237, 342, + 342, -242, -267, -267, -267, 166, 34, 34, -185, -231, + 166, 23, -237, -237, -164, 143, -237, -237, -237, -237, + 206, 206, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -100, -82, 213, + 153, 155, 158, 73, 118, -38, 208, -22, -100, -181, + 168, -262, -181, -181, -100, 150, -100, -179, 126, 13, + -179, -179, -179, -179, -179, 209, 297, 283, 209, 297, + 209, 210, 209, 210, 209, -175, 12, 128, 283, -175, + -176, 287, 288, 289, -262, 432, 316, 299, -262, 202, + 163, 203, 165, -232, 164, 34, 176, 210, 283, 205, + -179, -201, -280, -189, -201, -201, 31, 166, -188, -56, + -188, 88, -7, -3, -11, -10, -12, 118, -77, 283, + -65, 144, 447, 433, 434, 435, 432, 298, 440, 438, + 436, 209, 437, 82, 109, 107, 108, 125, -84, -108, + 128, 110, 126, 127, 112, 130, 129, 140, 133, 134, + 135, 136, 137, 138, 139, 131, 132, 143, 118, 119, + 120, 121, 122, 123, 124, -172, -280, -126, -280, 151, + 152, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -280, 150, -2, -120, -4, -280, -280, -280, -280, + -280, -280, -280, -280, -133, -84, -280, -284, -117, -280, + -284, -117, -284, -117, -284, -280, -284, -117, -284, -117, + -284, -284, -117, -280, -280, -280, -280, -280, -280, -280, + -200, -274, -275, -103, -100, -280, -137, -3, -54, -155, + 20, 32, -84, -138, -139, -84, -137, 56, -73, -75, + -78, 60, 61, 94, 12, -191, -190, 23, -188, 88, + 150, 12, -101, 27, -100, -86, -87, -88, -89, -103, + -127, -280, 12, -93, -94, -100, -102, -193, 82, 227, + -167, -203, -169, -168, 306, 308, 118, -192, -188, 88, + 30, 83, 82, -100, -205, -208, -210, -209, -211, -206, + -207, 250, 251, 144, 254, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 31, 187, 246, 247, 248, + 249, 266, 267, 268, 269, 270, 271, 272, 273, 233, + 252, 336, 234, 235, 236, 237, 238, 239, 241, 242, + 243, 244, 245, -265, -262, 81, 83, 82, -212, 81, + -82, -100, 110, -253, -250, 74, -262, -262, -262, -262, + -237, -237, 195, -29, -26, -258, 16, -25, -26, 158, + 102, 103, 155, 81, -226, 81, -235, -265, -262, 81, + 29, 170, 169, -234, -231, -234, -235, -262, -128, -188, + -193, -262, 29, 29, -160, -188, -160, -160, 21, -160, + 21, -160, 21, 89, -188, -160, 21, -160, 21, -160, + 21, -160, 21, -160, 21, 30, 75, 76, 30, 78, + 79, 80, -128, -128, -226, -164, -100, -262, 89, 89, + -237, -237, 89, 88, 88, 88, -237, -237, 89, 88, + -262, 88, -268, 181, 222, 224, 89, 89, 89, 89, + 30, 88, -269, 30, 454, 453, 455, 456, 457, 89, + 30, 89, 30, 89, -188, 81, -81, 215, 118, 204, + 204, 163, 163, 217, -100, 216, 218, 219, 41, 82, + 166, -93, 24, 73, -95, -100, -262, -194, -193, -186, + 88, -84, -179, -100, -175, -179, -100, -179, -179, -179, + -179, -175, -179, -193, -193, -175, -179, -233, 12, 128, + -175, -201, -201, -201, -100, -201, -201, -100, -201, -201, + -233, -180, 126, 73, -199, 230, 264, 426, 427, 428, + 82, 338, -93, 432, 432, 432, 432, 432, 432, -84, + -84, -84, -84, -118, 98, 110, 99, 100, -111, -119, + -123, -126, 93, 128, 126, 127, 112, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, - -111, -204, -259, 88, 144, -259, -110, -110, -190, -74, - 22, 37, -73, -191, -196, -188, -69, -278, -278, -137, - -73, -73, -84, -84, -128, 88, -73, -128, 88, -73, - -73, -68, 22, 37, -131, -132, 114, -128, -278, -111, - -190, -190, -73, -74, -74, -73, -73, 82, -273, 307, - 308, 429, -198, 198, -197, 23, -195, 88, -121, -120, - -141, -278, -142, 27, 10, 128, 82, 19, 82, -140, - 25, 26, -141, -112, -190, 89, 92, -85, 82, 12, - -78, -100, -192, 135, -196, -100, -160, 198, -100, 31, - 82, -96, -98, -97, -99, 63, 67, 69, 64, 65, - 66, 70, -199, 23, -86, -3, -277, -100, -93, -279, - 82, 12, 74, -279, 82, 150, -168, -170, 82, 306, - 308, 309, 73, 101, -84, -216, 143, -241, -240, -239, - -223, -225, -226, -227, 83, -143, -219, 279, -214, -214, - -214, -214, -214, -215, -165, -215, -215, -215, 81, 81, - -214, -214, -214, -214, -217, 81, -217, -217, -218, 81, - -218, -252, -84, -249, -248, -246, -247, 174, 95, 337, - -244, -140, 89, -81, -100, 73, -190, -250, -250, -250, - 24, -259, 88, -259, 88, 82, 17, -224, -223, -129, - 223, -254, 198, -251, -245, 81, 29, -231, -232, -232, - 150, -259, 82, 27, 106, 106, 106, 106, 337, 155, - 31, -223, -129, -204, 166, -204, -204, 88, 88, -180, - 461, -93, 165, 222, -83, 320, 88, 84, -100, -100, - -100, -100, -100, 158, 155, 206, -100, -100, -93, -100, - 82, -59, 183, 178, -181, -195, -195, -100, -181, -100, - 88, -100, -190, -65, 307, 337, 20, -66, 20, 98, - 99, 100, -119, -111, -111, -111, -72, 188, 109, -278, - -278, -73, -73, -277, 150, -5, -141, -278, -278, 82, - 74, 23, 12, 12, -278, 12, 12, -278, -278, -73, - -134, -132, 116, -84, -278, -278, 82, 82, -278, -278, - -278, -278, -278, -272, 428, 308, -104, 71, 167, 72, - -277, -197, -278, -156, 39, 47, 58, -84, -84, -139, - -156, -172, 20, 12, 54, 54, -105, 13, -75, -86, - -78, 150, -105, -109, 31, 54, -3, -277, -277, -163, - -167, -128, -87, -88, -88, -87, -88, 63, 63, 63, - 68, 63, 68, 63, -97, -195, -278, -278, -3, -160, - 74, -86, -100, -86, -102, -195, 135, -169, -171, 310, - 307, 313, -259, 88, 82, -239, -227, 98, 110, 30, - 73, 276, 95, 170, 29, 169, -220, 280, -215, -215, - -216, -259, 144, -216, -216, -216, -222, 88, -222, 89, - 89, 83, -32, -27, -28, 32, 77, -246, -234, 88, - 38, 83, 165, -100, 73, 73, 73, 16, -158, -190, - 82, 83, -130, 224, -128, 83, -190, 83, -158, -232, - -191, -190, -277, 163, 30, 30, -129, -130, -216, -259, - 463, 462, 83, -100, -80, 213, 221, 81, 85, -261, - 74, 204, 276, 204, 207, 166, -59, -32, -100, -176, - -176, 32, 307, 440, 438, -72, 109, -111, -111, -278, - -278, -74, -191, -137, -156, -206, 144, 251, 187, 249, - 245, 265, 256, 278, 247, 279, -204, -206, -111, -111, - -111, -111, 334, -137, 117, -84, 115, -111, -111, 164, - 164, 164, -161, 40, 88, 88, 59, -100, -135, 14, - -84, 135, -141, -162, 73, -163, -122, -124, -123, -277, - -157, -278, -190, -161, -105, 82, 118, -91, -90, 73, - 74, -92, 73, -90, 63, 63, -278, -105, -86, -105, - -105, 150, 307, 311, 312, -239, 98, -111, 10, 88, - 29, 29, -216, -216, 83, 82, 83, 82, 83, 82, - -185, 374, 110, -28, -27, -234, -234, 89, -259, -100, - -100, -100, -100, 17, 82, -223, -128, 54, -249, 83, - -253, -254, -100, -110, -130, -159, 81, 83, -258, 337, - -260, -259, -190, -190, -190, -100, -181, -181, 32, -259, - -111, -278, -141, -278, -214, -214, -214, -218, -214, 239, - -214, 239, -278, -278, 20, 20, 20, 20, -277, -64, - 330, -84, 82, 82, -277, -277, -277, -278, 88, -215, - -136, 15, 17, 28, -162, 82, -278, -278, 82, 54, - 150, -278, -137, -167, -84, -84, 81, -84, -137, -105, - -114, -215, 88, -215, 89, 89, 374, 30, 78, 79, - 80, 30, 75, 76, -159, -158, -190, 200, 182, -278, - 82, -221, 337, 340, 23, -158, -257, -256, -191, 81, - 74, -156, -215, -259, -111, -111, -111, -111, -111, -141, - 88, -111, -111, -158, -278, -158, -158, -198, -215, -145, - -150, -178, -84, -120, 29, -124, 54, -3, -190, -122, - -190, -141, -158, -141, -216, -216, 83, 83, 23, 201, - -100, -254, 341, 341, -3, 83, 82, 118, -158, -100, - -278, -278, -278, -278, -67, 128, 337, -278, -278, -278, - -278, -278, -278, -104, -148, 424, -151, 43, -152, 44, - 10, -122, 150, 83, -3, -277, 81, -57, 337, -256, - -238, -191, 88, 89, 83, -278, 335, 70, 338, -145, - 48, 257, -153, 52, -154, -149, 53, 17, -163, -190, - -57, -111, 197, -158, -58, 212, 428, -261, 59, 336, - 339, -146, 50, -144, 49, -144, -152, 17, -155, 45, - 46, 88, -278, -278, 83, 175, -258, 59, -147, 51, - 73, 101, 88, 17, 17, -268, -269, 73, 214, 337, - 73, 101, 88, 88, -269, 73, 11, 10, 338, -267, - 183, 178, 181, 31, -267, 339, 177, 30, 98, + -111, -111, -202, -262, 88, 144, -262, -110, -110, -188, + -74, 22, 37, -73, -189, -194, -186, -69, -281, -281, + -137, -73, -73, -84, -84, -128, 88, -73, -128, 88, + -73, -73, -68, 22, 37, -131, -132, 114, -128, -281, + -111, -188, -188, -73, -74, -74, -73, -73, 82, -276, + 308, 309, 430, -196, 198, -195, 23, -193, 88, -121, + -120, -141, -281, -142, 27, 10, 128, 82, 19, 82, + -140, 25, 26, -141, -112, -188, 89, 92, -85, 82, + 12, -78, -100, -190, 135, -194, -100, -159, 198, -100, + 31, 82, -96, -98, -97, -99, 63, 67, 69, 64, + 65, 66, 70, -197, 23, -86, -3, -280, -100, -93, + -282, 82, 12, 74, -282, 82, 150, -167, -169, 82, + 307, 309, 310, 73, 101, -84, -217, 143, -244, -243, + -242, -226, -228, -229, -230, 83, -183, 98, 110, -221, + 278, -212, -212, -212, -212, -212, -216, -164, -216, -216, + -216, 81, 81, -212, -212, -212, -212, -218, 81, -218, + -218, -219, 81, -219, -255, -84, -252, -251, -249, -250, + 174, 95, 338, -247, -140, 89, -81, 24, 73, -188, + -253, -253, -253, -262, 88, -262, 88, 82, 17, -227, + -226, -129, 222, -257, 198, -254, -248, 81, 29, -234, + -235, -235, 150, -262, 82, 27, 106, 106, 106, 106, + 338, 155, 31, -226, -129, -202, 166, -202, -202, 88, + 88, -178, 462, -93, 165, 221, -83, 321, 88, 84, + -100, -100, -100, -100, -100, 158, 155, 206, -100, -100, + -59, 183, 178, -100, 82, -59, -179, -179, -179, -100, + -179, -100, 88, -100, -188, -65, 308, 338, 20, -66, + 20, 98, 99, 100, -119, -111, -111, -111, -72, 188, + 109, -281, -281, -73, -73, -280, 150, -5, -141, -281, + -281, 82, 74, 23, 12, 12, -281, 12, 12, -281, + -281, -73, -134, -132, 116, -84, -281, -281, 82, 82, + -281, -281, -281, -281, -281, -275, 429, 309, -104, 71, + 167, 72, -280, -195, -281, -155, 39, 47, 58, -84, + -84, -139, -155, -171, 20, 12, 54, 54, -105, 13, + -75, -86, -78, 150, -105, -109, 31, 54, -3, -280, + -280, -162, -166, -128, -87, -88, -88, -87, -88, 63, + 63, 63, 68, 63, 68, 63, -97, -193, -281, -281, + -3, -159, 74, -86, -100, -86, -102, -193, 135, -168, + -170, 311, 308, 314, -262, 88, 82, -242, -230, -214, + 30, 98, -222, 279, -216, -216, -217, -262, 144, -217, + -217, -217, -225, 88, -225, 89, 89, 83, -32, -27, + -28, 32, 77, -249, -237, 88, 38, 83, 165, -100, + 73, 73, 73, 16, -157, -188, 82, 83, -130, 223, + -128, 83, -188, 83, -157, -235, -189, -188, -280, 163, + 30, 30, -129, -130, -217, -262, 464, 463, 83, -100, + -80, 213, 220, 81, 85, -264, 74, 204, 275, 204, + 207, 166, -32, -100, -175, -175, 32, 308, 441, 439, + -72, 109, -111, -111, -281, -281, -74, -189, -137, -155, + -204, 144, 250, 187, 248, 244, 264, 255, 277, 246, + 278, -202, -204, -111, -111, -111, -111, 335, -137, 117, + -84, 115, -111, -111, 164, 164, 164, -160, 40, 88, + 88, 59, -100, -135, 14, -84, 135, -141, -161, 73, + -162, -122, -124, -123, -280, -156, -281, -188, -160, -105, + 82, 118, -91, -90, 73, 74, -92, 73, -90, 63, + 63, -281, -105, -86, -105, -105, 150, 308, 312, 313, + -242, -215, 73, -111, -217, -217, 83, 82, 83, 82, + 83, 82, -184, 375, 110, -28, -27, -237, -237, 89, + -262, -100, -100, -100, -100, 17, 82, -226, -128, 54, + -252, 83, -256, -257, -100, -110, -130, -158, 81, 83, + -261, 338, -263, -262, -188, -188, -188, -100, -179, -179, + 32, -262, -111, -281, -141, -281, -212, -212, -212, -219, + -212, 238, -212, 238, -281, -281, 20, 20, 20, 20, + -280, -64, 331, -84, 82, 82, -280, -280, -280, -281, + 88, -216, -136, 15, 17, 28, -161, 82, -281, -281, + 82, 54, 150, -281, -137, -166, -84, -84, 81, -84, + -137, -105, -220, 275, 10, -216, 88, -216, 89, 89, + 375, 30, 78, 79, 80, 30, 75, 76, -158, -157, + -188, 200, 182, -281, 82, -223, 338, 341, 23, -157, + -260, -259, -189, 81, 74, -155, -216, -262, -111, -111, + -111, -111, -111, -141, 88, -111, -111, -157, -281, -157, + -157, -196, -216, -144, -149, -176, -84, -120, 29, -124, + 54, -3, -188, -122, -188, -141, -157, -141, -224, 170, + 29, 169, -114, -217, -217, 83, 83, 23, 201, -100, + -257, 342, 342, -3, 83, 82, 118, -157, -100, -281, + -281, -281, -281, -67, 128, 338, -281, -281, -281, -281, + -281, -281, -104, -147, 425, -150, 43, -151, 44, 10, + -122, 150, 83, -213, 95, 29, 29, -3, -280, 81, + -57, 338, -259, -241, -189, 88, 89, 83, -281, 336, + 70, 339, -144, 48, 256, -152, 52, -153, -148, 53, + 17, -162, -188, 88, -57, -111, 197, -157, -58, 212, + 429, -264, 59, 337, 340, -145, 50, -143, 49, -143, + -151, 17, -154, 45, 46, 88, -281, -281, 83, 175, + -261, 59, -146, 51, 73, 101, 88, 17, 17, -271, + -272, 73, 214, 338, 73, 101, 88, 88, -272, 73, + 11, 10, 339, -270, 183, 178, 181, 31, -270, 340, + 177, 30, 98, } var yyDef = [...]int{ 33, -2, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 809, 0, 547, 547, 547, 547, 547, 547, - 547, 0, 0, -2, -2, -2, 833, 37, 0, 921, - 0, 0, -2, 481, 482, 0, 484, -2, 0, 0, - 493, 1342, 1342, 542, 0, 0, 0, 0, 0, 1340, - 54, 55, 499, 500, 501, 1, 3, 0, 551, 817, - 0, 0, -2, 549, 0, 0, 927, 927, 927, 0, - 85, 86, 0, 0, 0, 833, 0, 0, 0, 0, - 0, 925, 0, 922, 108, 109, 89, -2, 113, 114, - 0, 118, 366, 327, 369, 325, 355, -2, 318, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 330, 222, 222, 0, 0, -2, 318, 318, 318, - 0, 0, 0, 352, 929, 272, 222, 222, 0, 222, - 222, 222, 222, 0, 0, 222, 222, 222, 222, 222, - 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, - 0, 107, 846, 0, 0, 117, 38, 34, 35, 36, - 0, 0, 0, 923, 923, 0, 418, 631, 942, 943, - 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, - 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, - 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, - 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, - 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, - 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, - 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, - 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, - 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, - 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, - 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, - 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, - 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, - 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, - 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, - 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, - 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, - 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, - 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, - 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, - 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, - 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, - 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, - 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, - 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, - 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 0, 472, - 472, 472, 472, 472, 472, 0, 427, 0, 0, 0, - 0, 0, 0, 0, 444, 0, 447, 0, 0, 454, - 472, 1343, 1343, 1343, 912, 0, 478, 479, 466, 464, - 461, 462, 480, 483, 0, 488, 491, 938, 939, 0, - 506, 0, 1156, 498, 511, 512, 0, 543, 544, 39, - 682, 641, 0, 647, 649, 0, 684, 685, 686, 687, - 688, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 714, 715, 716, 717, 794, 795, 796, 797, 798, - 799, 800, 801, 651, 652, 791, 0, 901, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 782, 0, 751, - 751, 751, 751, 751, 751, 751, 751, 0, 0, 0, - 0, 0, 0, 0, -2, -2, 1342, 0, 521, 0, - 809, 50, 0, 547, 552, 553, 852, 0, 0, 809, - 1341, 0, 0, -2, -2, 563, 569, 570, 571, 572, - 548, 0, 575, 579, 0, 0, 0, 928, 0, 0, - 71, 0, 1310, 905, -2, -2, 0, 0, 940, 941, - 914, -2, 946, 947, 948, 949, 950, 951, 952, 953, - 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, - 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, - 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, - 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, - 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, - 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, - 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, - 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, - 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, - 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, - 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, - 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, - 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, -2, 1101, - 0, 0, 127, 128, 0, 37, 248, 0, 123, 0, - 242, 196, 846, 925, 935, 0, 0, 0, 0, 0, - 91, 115, 116, 222, 222, 0, 117, 117, 334, 335, - 336, 0, 0, -2, 246, 0, 319, 0, 0, 236, - 236, 240, 238, 239, 0, 0, 0, 0, 0, 0, - 346, 0, 347, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 402, 0, 223, 0, 364, 365, 273, 0, - 0, 0, 0, 344, 345, 0, 0, 930, 931, 0, - 0, 222, 222, 0, 0, 0, 0, 222, 222, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 101, 837, 0, 0, 0, 0, - 0, 0, -2, 0, 410, 0, 923, 0, 0, 0, - 0, 417, 0, 419, 420, 0, 0, 421, 422, 423, - 424, 425, 472, 0, 472, 0, 472, 472, 472, 472, - 469, 0, 469, 467, 468, 459, 460, 1343, 1343, 1343, - 0, 1343, 1343, 0, 1343, 1343, 0, 231, 232, 233, - 475, 451, 452, 455, 456, 1344, 1345, 457, 458, 913, - 489, 492, 509, 507, 508, 510, 502, 503, 504, 505, - 0, 522, 523, 528, 0, 0, 0, 0, 534, 535, - 536, 0, 0, 539, 540, 541, 0, 0, 0, 0, - 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 669, 670, 671, 672, 673, 674, 675, 648, 0, - 662, 0, 0, 0, 704, 705, 706, 707, 708, 709, - 710, 711, 712, 0, 560, 0, 0, 0, 809, 0, - 0, 0, 0, 0, 0, 0, 557, 0, 783, 0, - 735, 743, 0, 736, 744, 737, 745, 738, 0, 739, - 746, 740, 747, 741, 742, 748, 0, 0, 0, 560, - 560, 0, 0, 40, 513, 514, 0, 614, 933, 817, - 0, 562, 855, 0, 0, 818, 810, 811, 814, 817, - 0, 584, 573, 564, 567, 568, 550, 0, 576, 580, - 0, 582, 583, 0, 0, 69, 0, 630, 0, 586, - 588, 589, 590, 612, 0, 0, 0, 0, 65, 67, - 631, 0, 1310, 911, 0, 73, 74, 0, 0, 0, - 210, 916, 917, 918, -2, 229, 0, 135, 203, 147, - 148, 149, 196, 151, 196, 196, 196, 196, 207, 207, - 207, 207, 179, 180, 181, 182, 183, 0, 0, 166, - 196, 196, 196, 196, 186, 187, 188, 189, 190, 191, - 192, 193, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 198, 198, 198, 200, 200, 0, 38, 0, 214, - 0, 814, 0, 837, 0, 0, 936, 0, 935, 935, - 935, 106, 0, 0, 0, 367, 328, 356, 368, 0, - 331, 332, -2, 0, 0, 318, 0, 320, 0, 230, - 0, -2, 0, 0, 0, 236, 240, 237, 240, 228, - 241, 348, 791, 0, 349, 350, 0, 382, 600, 0, - 0, 0, 0, 0, 388, 389, 390, 0, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 357, 358, - 359, 360, 361, 362, 363, 0, 0, 320, 0, 353, - 0, 274, 275, 0, 0, 278, 279, 280, 281, 0, - 0, 284, 285, 286, 287, 288, 312, 313, 314, 289, - 290, 291, 292, 293, 294, 295, 306, 307, 308, 309, - 310, 311, 296, 297, 298, 299, 300, 303, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 834, 835, - 836, 0, 0, 0, 0, 0, 261, 63, 924, 416, - 632, 944, 945, 473, 474, 426, 445, 428, 448, 429, - 431, 430, 432, 472, 0, 0, 0, 234, 235, 472, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 0, - 450, 0, 0, 0, 490, 494, 495, 496, 497, 0, - 0, 525, 530, 531, 532, 533, 545, 538, 683, 642, - 643, 644, 646, 663, 0, 665, 667, 653, 654, 678, - 679, 680, 0, 0, 0, 0, 676, 658, 0, 689, - 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, - 700, 703, 766, 767, 768, 0, 701, 702, 713, 0, - 0, 0, 561, 792, 0, -2, 0, 681, 900, 817, - 0, 0, 0, 0, 686, 794, 0, 686, 794, 0, - 0, 0, 558, 559, 789, 786, 0, 0, 752, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 516, 517, - 519, 0, 634, 0, 615, 0, 617, 618, 0, 934, - 852, 51, 41, 0, 853, 0, 0, 0, 0, 813, - 815, 816, 852, 0, 802, 0, 0, 639, 0, 0, - 565, 47, 581, 577, 0, 639, 0, 0, 629, 0, - 0, 0, 0, 0, 0, 619, 0, 0, 622, 0, - 0, 0, 0, 613, 0, 0, 0, -2, 0, 0, - 0, 61, 62, 0, 0, 0, 906, 72, 0, 0, - 77, 78, 907, 908, 909, 910, 0, 110, -2, 269, - 129, 131, 132, 133, 124, 134, 205, 204, 150, 207, - 207, 173, 174, 210, 0, 210, 210, 210, 0, 0, - 167, 168, 169, 170, 161, 0, 162, 163, 164, 0, - 165, 247, 0, 821, 215, 216, 218, 222, 0, 0, - 243, 244, 0, 0, 100, 0, 937, 0, 0, 0, - 926, 119, 120, 121, 122, 117, 0, 0, 125, 322, - 0, 0, 0, 245, 0, 0, 224, 240, 225, 226, - 0, 351, 0, 0, 384, 385, 386, 387, 0, 0, - 0, 320, 322, 210, 0, 276, 277, 282, 283, 301, - 0, 0, 0, 0, 847, 848, 0, 851, 92, 374, - 376, 375, 379, 0, 0, 0, 0, 411, 261, 821, - 0, 415, 262, 263, 433, 470, 471, 469, 449, 469, - 476, 453, 486, 529, 0, 0, 0, 537, 0, 664, - 666, 668, 655, 676, 659, 0, 656, 0, 0, 650, - 718, 0, 0, 560, 0, 809, 852, 722, 723, 0, - 0, 0, 0, 0, 759, 0, 0, 760, 0, 809, - 0, 787, 0, 0, 734, 753, 0, 0, 754, 755, - 756, 757, 758, 515, 518, 520, 594, 0, 0, 0, - 0, 616, 932, 43, 0, 0, 0, 819, 820, 812, - 42, 0, 919, 920, 803, 804, 805, 0, 574, 585, - 566, 0, 817, 894, 0, 0, 886, 0, 0, 639, - 902, 0, 587, 608, 610, 0, 605, 620, 621, 623, - 0, 625, 0, 627, 628, 591, 592, 593, 0, 639, - 0, 639, 66, 639, 68, 0, 633, 75, 76, 0, - 0, 82, 211, 212, 117, 271, 130, 136, 0, 0, - 0, 140, 0, 0, 143, 145, 146, 206, 210, 210, - 175, 208, 209, 176, 177, 178, 0, 194, 0, 0, - 0, 264, 87, 825, 824, 222, 222, 217, 0, 220, - 0, 197, 0, 102, 0, 0, 0, 0, 326, 598, - 0, 337, 338, 0, 321, 381, 0, 214, 0, 227, - 792, 601, 0, 0, 339, 0, 322, 342, 343, 354, - 304, 305, 302, 596, 838, 839, 840, 0, 850, 95, - 0, 0, 0, 0, 372, 0, 413, 414, 64, 472, - 472, 524, 0, 527, 0, 657, 0, 677, 660, 719, - 720, 0, 793, 817, 45, 0, 196, 196, 772, 196, - 200, 775, 196, 777, 196, 780, 0, 0, 0, 0, - 0, 0, 0, 784, 733, 790, 0, 0, 0, 0, - 0, 0, 0, 0, 207, 857, 854, 44, 807, 0, - 640, 578, 48, 52, 0, 894, 885, 896, 898, 0, - 0, 0, 890, 0, 809, 0, 0, 602, 609, 0, - 0, 603, 0, 604, 624, 626, -2, 809, 639, 59, - 60, 0, 79, 80, 81, 270, 137, 138, 0, 141, - 142, 144, 171, 172, 207, 0, 207, 0, 201, 0, - 253, 265, 0, 822, 823, 0, 0, 219, 221, 596, - 103, 104, 105, 0, 0, 126, 323, 0, 213, 0, - 0, 406, 403, 340, 341, 0, 0, 849, 373, 0, - 93, 94, 0, 0, 378, 412, 434, 446, 526, 546, - 661, 721, 852, 724, 769, 207, 773, 774, 776, 778, - 779, 781, 726, 725, 0, 0, 0, 0, 0, 817, - 0, 788, 0, 0, 0, 0, 0, 614, 207, 877, - 49, 0, 0, 0, 53, 0, 899, 0, 0, 0, - 0, 70, 817, 903, 904, 606, 0, 611, 817, 58, - 139, 210, 195, 210, 0, 0, 266, 826, 827, 828, - 829, 830, 831, 832, 0, 329, 599, 0, 0, 383, - 0, 391, 0, 0, 0, 0, 96, 97, 0, 0, - 0, 46, 770, 771, 0, 0, 0, 0, 761, 0, - 785, 0, 0, 0, 636, 0, 0, 634, 859, 858, - 871, 875, 808, 806, 0, 897, 0, 889, 892, 888, - 891, 56, 0, 57, 184, 185, 199, 202, 0, 0, - 0, 407, 404, 405, 841, 597, 0, 0, 0, 380, - 727, 729, 728, 730, 0, 0, 0, 732, 749, 750, - 635, 637, 638, 595, 877, 0, 870, 873, -2, 0, - 0, 887, 0, 607, 841, 0, 0, 370, 843, 98, - 99, 315, 316, 317, 92, 731, 0, 0, 0, 864, - 862, 862, 875, 0, 879, 0, 884, 0, 895, 893, - 88, 0, 0, 0, 0, 844, 845, 95, 762, 0, - 765, 867, 0, 860, 863, 861, 872, 0, 878, 0, - 0, 876, 408, 409, 249, 0, 377, 763, 856, 0, - 865, 866, 874, 0, 0, 250, 251, 0, 842, 0, - 868, 869, 880, 882, 252, 0, 0, 0, 0, 254, - 256, 257, 0, 0, 255, 764, 258, 259, 260, + 31, 32, 816, 0, 554, 554, 554, 554, 554, 554, + 554, 0, 0, 90, -2, -2, 840, 37, 0, 0, + 0, 0, -2, 488, 489, 0, 491, -2, 0, 0, + 500, 1348, 1348, 549, 0, 0, 0, 0, 0, 1346, + 54, 55, 506, 507, 508, 1, 3, 0, 558, 824, + 0, 0, -2, 556, 0, 0, 932, 932, 932, 0, + 85, 86, 0, 0, 0, 840, 930, 0, 0, 0, + 0, 930, 0, 108, 109, 89, -2, 113, 114, 0, + 118, 371, 332, 374, 330, 360, -2, 323, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 335, 227, 227, 0, 0, -2, 323, 323, 323, 0, + 0, 0, 357, 934, 277, 227, 227, 0, 227, 227, + 227, 227, 0, 0, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 0, + 107, 853, 0, 0, 117, 38, 34, 35, 36, 0, + 928, 0, 928, 928, 0, 423, 638, 947, 948, 1087, + 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, + 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, + 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, + 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, + 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, + 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, + 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, + 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, + 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, + 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, + 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, + 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, + 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, + 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, + 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, + 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, + 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, + 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, + 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, + 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, + 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, + 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, + 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, + 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, + 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, + 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 0, 479, + 479, 479, 479, 479, 479, 0, 0, 433, 0, 0, + 0, 0, 476, 473, 476, 0, 0, 0, 453, 0, + 456, 0, 0, 463, 479, 1349, 1349, 1349, 919, 0, + 485, 486, 471, 468, 469, 487, 490, 0, 495, 498, + 943, 944, 0, 513, 0, 1161, 505, 518, 519, 0, + 550, 551, 39, 689, 648, 0, 654, 656, 0, 691, + 692, 693, 694, 695, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 721, 722, 723, 724, 801, 802, + 803, 804, 805, 806, 807, 808, 658, 659, 798, 0, + 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 789, 0, 758, 758, 758, 758, 758, 758, 758, 758, + 0, 0, 0, 0, 0, 0, 0, -2, -2, 1348, + 0, 528, 0, 816, 50, 0, 554, 559, 560, 859, + 0, 0, 816, 1347, 0, 0, -2, -2, 570, 576, + 577, 578, 579, 555, 0, 582, 586, 0, 0, 0, + 933, 0, 0, 71, 0, 1315, 912, -2, -2, 0, + 0, 945, 946, 921, -2, 951, 952, 953, 954, 955, + 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, + 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, + 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, + 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, + 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, + 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, + 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, + 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, + 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, + 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, + 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, + 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, + 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, + 1086, -2, 1106, 0, 0, 127, 128, 0, 37, 253, + 0, 123, 0, 247, 185, 853, 0, 0, 940, 0, + 0, 0, 0, 91, 115, 116, 227, 227, 0, 117, + 117, 339, 340, 341, 0, 0, -2, 251, 0, 324, + 0, 0, 241, 241, 245, 243, 244, 0, 0, 0, + 0, 0, 0, 351, 0, 352, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 407, 0, 228, 0, 369, + 370, 278, 0, 0, 0, 0, 349, 350, 0, 0, + 935, 936, 0, 0, 227, 227, 0, 0, 0, 0, + 227, 227, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 101, 844, 0, + 0, 0, 0, 0, 0, -2, 0, 415, 0, 0, + 0, 0, 0, 0, 422, 0, 424, 425, 0, 0, + 426, 427, 428, 429, 430, 479, 0, 476, 479, 0, + 479, 479, 479, 479, 476, 479, 0, 0, 476, 479, + 0, 476, 474, 475, 1349, 1349, 1349, 0, 1349, 1349, + 0, 1349, 1349, 0, 236, 237, 238, 482, 460, 461, + 464, 465, 1350, 1351, 466, 467, 920, 496, 499, 516, + 514, 515, 517, 509, 510, 511, 512, 0, 529, 530, + 535, 0, 0, 0, 0, 541, 542, 543, 0, 0, + 546, 547, 548, 0, 0, 0, 0, 0, 652, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 676, 677, + 678, 679, 680, 681, 682, 655, 0, 669, 0, 0, + 0, 711, 712, 713, 714, 715, 716, 717, 718, 719, + 0, 567, 0, 0, 0, 816, 0, 0, 0, 0, + 0, 0, 0, 564, 0, 790, 0, 742, 750, 0, + 743, 751, 744, 752, 745, 0, 746, 753, 747, 754, + 748, 749, 755, 0, 0, 0, 567, 567, 0, 0, + 40, 520, 521, 0, 621, 938, 824, 0, 569, 862, + 0, 0, 825, 817, 818, 821, 824, 0, 591, 580, + 571, 574, 575, 557, 0, 583, 587, 0, 589, 590, + 0, 0, 69, 0, 637, 0, 593, 595, 596, 597, + 619, 0, 0, 0, 0, 65, 67, 638, 0, 1315, + 918, 0, 73, 74, 0, 0, 0, 208, 923, 924, + 925, -2, 234, 0, 196, 192, 136, 137, 138, 185, + 140, 185, 185, 185, 185, 205, 205, 205, 205, 168, + 169, 170, 171, 172, 0, 0, 155, 185, 185, 185, + 185, 175, 176, 177, 178, 179, 180, 181, 182, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 187, 187, + 187, 189, 189, 0, 38, 0, 219, 0, 821, 0, + 844, 100, 0, 0, 941, 0, 940, 940, 940, 106, + 0, 0, 372, 333, 361, 373, 0, 336, 337, -2, + 0, 0, 323, 0, 325, 0, 235, 0, -2, 0, + 0, 0, 241, 245, 242, 245, 233, 246, 353, 798, + 0, 354, 355, 0, 387, 607, 0, 0, 0, 0, + 0, 393, 394, 395, 0, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 362, 363, 364, 365, 366, + 367, 368, 0, 0, 325, 0, 358, 0, 279, 280, + 0, 0, 283, 284, 285, 286, 0, 0, 289, 290, + 291, 292, 293, 317, 318, 319, 294, 295, 296, 297, + 298, 299, 300, 311, 312, 313, 314, 315, 316, 301, + 302, 303, 304, 305, 308, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 841, 842, 843, 0, 0, + 0, 266, 929, 0, 266, 63, 421, 639, 949, 950, + 480, 481, 431, 454, 479, 434, 457, 435, 437, 436, + 438, 479, 440, 477, 478, 479, 442, 0, 239, 240, + 479, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 0, 459, 0, 0, 0, 497, 501, 502, 503, 504, + 0, 0, 532, 537, 538, 539, 540, 552, 545, 690, + 649, 650, 651, 653, 670, 0, 672, 674, 660, 661, + 685, 686, 687, 0, 0, 0, 0, 683, 665, 0, + 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, + 706, 707, 710, 773, 774, 775, 0, 708, 709, 720, + 0, 0, 0, 568, 799, 0, -2, 0, 688, 907, + 824, 0, 0, 0, 0, 693, 801, 0, 693, 801, + 0, 0, 0, 565, 566, 796, 793, 0, 0, 759, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 523, + 524, 526, 0, 641, 0, 622, 0, 624, 625, 0, + 939, 859, 51, 41, 0, 860, 0, 0, 0, 0, + 820, 822, 823, 859, 0, 809, 0, 0, 646, 0, + 0, 572, 47, 588, 584, 0, 646, 0, 0, 636, + 0, 0, 0, 0, 0, 0, 626, 0, 0, 629, + 0, 0, 0, 0, 620, 0, 0, 0, -2, 0, + 0, 0, 61, 62, 0, 0, 0, 913, 72, 0, + 0, 77, 78, 914, 915, 916, 917, 0, 110, -2, + 274, 129, 131, 132, 133, 124, 199, 197, 0, 194, + 193, 139, 205, 205, 162, 163, 208, 0, 208, 208, + 208, 0, 0, 156, 157, 158, 159, 150, 0, 151, + 152, 153, 0, 154, 252, 0, 828, 220, 221, 223, + 227, 0, 0, 248, 249, 0, 0, 931, 0, 942, + 0, 0, 0, 119, 120, 121, 122, 117, 0, 0, + 125, 327, 0, 0, 0, 250, 0, 0, 229, 245, + 230, 231, 0, 356, 0, 0, 389, 390, 391, 392, + 0, 0, 0, 325, 327, 208, 0, 281, 282, 287, + 288, 306, 0, 0, 0, 0, 854, 855, 0, 858, + 92, 379, 381, 380, 384, 0, 0, 0, 0, 416, + 418, 267, 268, 828, 0, 420, 432, 439, 441, 476, + 458, 476, 483, 462, 493, 536, 0, 0, 0, 544, + 0, 671, 673, 675, 662, 683, 666, 0, 663, 0, + 0, 657, 725, 0, 0, 567, 0, 816, 859, 729, + 730, 0, 0, 0, 0, 0, 766, 0, 0, 767, + 0, 816, 0, 794, 0, 0, 741, 760, 0, 0, + 761, 762, 763, 764, 765, 522, 525, 527, 601, 0, + 0, 0, 0, 623, 937, 43, 0, 0, 0, 826, + 827, 819, 42, 0, 926, 927, 810, 811, 812, 0, + 581, 592, 573, 0, 824, 901, 0, 0, 893, 0, + 0, 646, 909, 0, 594, 615, 617, 0, 612, 627, + 628, 630, 0, 632, 0, 634, 635, 598, 599, 600, + 0, 646, 0, 646, 66, 646, 68, 0, 640, 75, + 76, 0, 0, 82, 209, 210, 117, 276, 130, 201, + 0, 198, 135, 195, 208, 208, 164, 206, 207, 165, + 166, 167, 0, 183, 0, 0, 0, 269, 87, 832, + 831, 227, 227, 222, 0, 225, 0, 186, 0, 102, + 0, 0, 0, 0, 331, 605, 0, 342, 343, 0, + 326, 386, 0, 219, 0, 232, 799, 608, 0, 0, + 344, 0, 327, 347, 348, 359, 309, 310, 307, 603, + 845, 846, 847, 0, 857, 95, 0, 0, 0, 0, + 377, 0, 419, 64, 479, 479, 531, 0, 534, 0, + 664, 0, 684, 667, 726, 727, 0, 800, 824, 45, + 0, 185, 185, 779, 185, 189, 782, 185, 784, 185, + 787, 0, 0, 0, 0, 0, 0, 0, 791, 740, + 797, 0, 0, 0, 0, 0, 0, 0, 0, 205, + 864, 861, 44, 814, 0, 647, 585, 48, 52, 0, + 901, 892, 903, 905, 0, 0, 0, 897, 0, 816, + 0, 0, 609, 616, 0, 0, 610, 0, 611, 631, + 633, -2, 816, 646, 59, 60, 0, 79, 80, 81, + 275, 203, 0, 200, 160, 161, 205, 0, 205, 0, + 190, 0, 258, 270, 0, 829, 830, 0, 0, 224, + 226, 603, 103, 104, 105, 0, 0, 126, 328, 0, + 218, 0, 0, 411, 408, 345, 346, 0, 0, 856, + 378, 0, 93, 94, 0, 0, 383, 417, 443, 455, + 533, 553, 668, 728, 859, 731, 776, 205, 780, 781, + 783, 785, 786, 788, 733, 732, 0, 0, 0, 0, + 0, 824, 0, 795, 0, 0, 0, 0, 0, 621, + 205, 884, 49, 0, 0, 0, 53, 0, 906, 0, + 0, 0, 0, 70, 824, 910, 911, 613, 0, 618, + 824, 58, 211, 204, 0, 208, 184, 208, 0, 0, + 271, 833, 834, 835, 836, 837, 838, 839, 0, 334, + 606, 0, 0, 388, 0, 396, 0, 0, 0, 0, + 96, 97, 0, 0, 0, 46, 777, 778, 0, 0, + 0, 0, 768, 0, 792, 0, 0, 0, 643, 0, + 0, 641, 866, 865, 878, 882, 815, 813, 0, 904, + 0, 896, 899, 895, 898, 56, 0, 57, 216, 0, + 213, 215, 202, 173, 174, 188, 191, 0, 0, 0, + 412, 409, 410, 848, 604, 0, 0, 0, 385, 734, + 736, 735, 737, 0, 0, 0, 739, 756, 757, 642, + 644, 645, 602, 884, 0, 877, 880, -2, 0, 0, + 894, 0, 614, 134, 0, 212, 214, 848, 0, 0, + 375, 850, 98, 99, 320, 321, 322, 92, 738, 0, + 0, 0, 871, 869, 869, 882, 0, 886, 0, 891, + 0, 902, 900, 217, 88, 0, 0, 0, 0, 851, + 852, 95, 769, 0, 772, 874, 0, 867, 870, 868, + 879, 0, 885, 0, 0, 883, 413, 414, 254, 0, + 382, 770, 863, 0, 872, 873, 881, 0, 0, 255, + 256, 0, 849, 0, 875, 876, 887, 889, 257, 0, + 0, 0, 0, 259, 261, 262, 0, 0, 260, 771, + 263, 264, 265, } var yyTok1 = [...]int{ @@ -4935,7 +4946,7 @@ var yyTok1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 111, 3, 3, 3, 138, 130, 3, 81, 83, 135, 133, 82, 134, 150, 136, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 464, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 465, 119, 118, 120, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -5012,7 +5023,8 @@ var yyTok3 = [...]int{ 57770, 445, 57771, 446, 57772, 447, 57773, 448, 57774, 449, 57775, 450, 57776, 451, 57777, 452, 57778, 453, 57779, 454, 57780, 455, 57781, 456, 57782, 457, 57783, 458, 57784, 459, - 57785, 460, 57786, 461, 57787, 462, 57788, 463, 0, + 57785, 460, 57786, 461, 57787, 462, 57788, 463, 57789, 464, + 0, } var yyErrorMessages = [...]struct { @@ -5812,10 +5824,10 @@ yydefault: yyVAL.vindexParam = VindexParam{Key: yyDollar[1].colIdent, Val: yyDollar[3].str} } case 100: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:831 { - yyVAL.createTable = &CreateTable{Table: yyDollar[5].tableName, IfNotExists: yyDollar[4].boolean, Temp: yyDollar[2].boolean} + yyVAL.createTable = &CreateTable{Table: yyDollar[4].tableName, IfNotExists: yyDollar[3].boolean} setDDL(yylex, yyVAL.createTable) } case 101: @@ -6016,1414 +6028,1439 @@ yydefault: yyVAL.TableSpec.AddConstraint(yyDollar[3].constraintDefinition) } case 134: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:1002 { - yyDollar[2].columnType.Options = yyDollar[3].columnTypeOptions + yyDollar[2].columnType.NotNull = yyDollar[3].boolean + yyDollar[2].columnType.Default = yyDollar[4].optVal + yyDollar[2].columnType.OnUpdate = yyDollar[5].optVal + yyDollar[2].columnType.Autoincrement = yyDollar[6].boolean + yyDollar[2].columnType.KeyOpt = yyDollar[7].colKeyOpt + yyDollar[2].columnType.Comment = yyDollar[8].literal yyVAL.columnDefinition = &ColumnDefinition{Name: yyDollar[1].colIdent, Type: yyDollar[2].columnType} } case 135: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1012 - { - yyVAL.columnTypeOptions = &ColumnTypeOptions{NotNull: false, Default: nil, OnUpdate: nil, Autoincrement: false, KeyOpt: colKeyNone, Comment: nil} - } - case 136: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1016 - { - yyDollar[1].columnTypeOptions.NotNull = false - yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions - } - case 137: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1021 - { - yyDollar[1].columnTypeOptions.NotNull = true - yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions - } - case 138: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1026 +//line sql.y:1013 { - yyDollar[1].columnTypeOptions.Default = yyDollar[3].expr - yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + yyVAL.columnType = yyDollar[1].columnType + yyVAL.columnType.Unsigned = yyDollar[2].boolean + yyVAL.columnType.Zerofill = yyDollar[3].boolean } case 139: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1031 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1024 { - yyDollar[1].columnTypeOptions.OnUpdate = yyDollar[4].expr - yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + yyVAL.columnType = yyDollar[1].columnType + yyVAL.columnType.Length = yyDollar[2].literal } case 140: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1036 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1029 { - yyDollar[1].columnTypeOptions.Autoincrement = true - yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + yyVAL.columnType = yyDollar[1].columnType } case 141: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1041 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1035 { - yyDollar[1].columnTypeOptions.Comment = NewStrLiteral(yyDollar[3].bytes) - yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 142: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1046 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1039 { - yyDollar[1].columnTypeOptions.KeyOpt = colKeyPrimary - yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 143: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1051 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1043 { - yyDollar[1].columnTypeOptions.KeyOpt = colKey - yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 144: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1056 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1047 { - yyDollar[1].columnTypeOptions.KeyOpt = colKeyUniqueKey - yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 145: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1061 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1051 { - yyDollar[1].columnTypeOptions.KeyOpt = colKeyUnique - yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 146: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1068 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1055 { - yyVAL.columnType = yyDollar[1].columnType - yyVAL.columnType.Unsigned = yyDollar[2].boolean - yyVAL.columnType.Zerofill = yyDollar[3].boolean + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 150: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1079 - { - yyVAL.columnType = yyDollar[1].columnType - yyVAL.columnType.Length = yyDollar[2].literal - } - case 151: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1084 - { - yyVAL.columnType = yyDollar[1].columnType - } - case 152: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1090 - { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} - } - case 153: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1094 - { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} - } - case 154: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1098 - { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} - } - case 155: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1102 - { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} - } - case 156: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1106 - { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} - } - case 157: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1110 - { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} - } - case 158: + case 147: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1114 +//line sql.y:1059 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 159: + case 148: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1118 +//line sql.y:1063 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 160: + case 149: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1122 +//line sql.y:1067 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 161: + case 150: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1128 +//line sql.y:1073 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 162: + case 151: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1134 +//line sql.y:1079 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 163: + case 152: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1140 +//line sql.y:1085 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 164: + case 153: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1146 +//line sql.y:1091 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 165: + case 154: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1152 +//line sql.y:1097 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 166: + case 155: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1160 +//line sql.y:1105 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 167: + case 156: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1164 +//line sql.y:1109 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 168: + case 157: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1168 +//line sql.y:1113 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 169: + case 158: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1172 +//line sql.y:1117 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 170: + case 159: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1176 +//line sql.y:1121 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 171: + case 160: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1182 +//line sql.y:1127 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } - case 172: + case 161: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1186 +//line sql.y:1131 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } - case 173: + case 162: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1190 +//line sql.y:1135 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 174: + case 163: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1194 +//line sql.y:1139 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 175: + case 164: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1198 +//line sql.y:1143 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 176: + case 165: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1202 +//line sql.y:1147 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 177: + case 166: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1206 +//line sql.y:1151 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 178: + case 167: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1210 +//line sql.y:1155 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 179: + case 168: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1214 +//line sql.y:1159 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 180: + case 169: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1218 +//line sql.y:1163 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 181: + case 170: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1222 +//line sql.y:1167 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 182: + case 171: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1226 +//line sql.y:1171 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 183: + case 172: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1230 +//line sql.y:1175 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 184: + case 173: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1234 +//line sql.y:1179 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } - case 185: + case 174: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1239 +//line sql.y:1184 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } - case 186: + case 175: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1245 +//line sql.y:1190 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 187: + case 176: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1249 +//line sql.y:1194 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 188: + case 177: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1253 +//line sql.y:1198 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 189: + case 178: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1257 +//line sql.y:1202 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 190: + case 179: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1261 +//line sql.y:1206 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 191: + case 180: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1265 +//line sql.y:1210 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 192: + case 181: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1269 +//line sql.y:1214 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 193: + case 182: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1273 +//line sql.y:1218 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 194: + case 183: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1279 +//line sql.y:1224 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'") } - case 195: + case 184: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1284 +//line sql.y:1229 { yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'") } - case 196: + case 185: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1289 +//line sql.y:1234 { yyVAL.literal = nil } - case 197: + case 186: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1293 +//line sql.y:1238 { yyVAL.literal = NewIntLiteral(yyDollar[2].bytes) } - case 198: + case 187: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1298 +//line sql.y:1243 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 199: + case 188: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1302 +//line sql.y:1247 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), Scale: NewIntLiteral(yyDollar[4].bytes), } } - case 200: + case 189: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1310 +//line sql.y:1255 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 201: + case 190: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1314 +//line sql.y:1259 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), } } - case 202: + case 191: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1320 +//line sql.y:1265 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), Scale: NewIntLiteral(yyDollar[4].bytes), } } - case 203: + case 192: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:1273 + { + yyVAL.boolean = false + } + case 193: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1277 + { + yyVAL.boolean = true + } + case 194: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1328 +//line sql.y:1282 { yyVAL.boolean = false } - case 204: + case 195: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1332 +//line sql.y:1286 { yyVAL.boolean = true } - case 205: + case 196: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1337 +//line sql.y:1292 { yyVAL.boolean = false } - case 206: + case 197: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1341 +//line sql.y:1296 + { + yyVAL.boolean = false + } + case 198: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1300 { yyVAL.boolean = true } - case 207: + case 199: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1346 +//line sql.y:1305 + { + yyVAL.optVal = nil + } + case 200: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1309 + { + yyVAL.optVal = yyDollar[2].expr + } + case 201: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:1314 + { + yyVAL.optVal = nil + } + case 202: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1318 + { + yyVAL.optVal = yyDollar[3].expr + } + case 203: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:1323 + { + yyVAL.boolean = false + } + case 204: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1327 + { + yyVAL.boolean = true + } + case 205: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:1332 { yyVAL.str = "" } - case 208: + case 206: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1350 +//line sql.y:1336 { yyVAL.str = string(yyDollar[2].colIdent.String()) } - case 209: + case 207: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1354 +//line sql.y:1340 { yyVAL.str = string(yyDollar[2].bytes) } - case 210: + case 208: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1359 +//line sql.y:1345 { yyVAL.str = "" } - case 211: + case 209: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1363 +//line sql.y:1349 { yyVAL.str = string(yyDollar[2].colIdent.String()) } - case 212: + case 210: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1367 +//line sql.y:1353 { yyVAL.str = string(yyDollar[2].bytes) } + case 211: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:1358 + { + yyVAL.colKeyOpt = colKeyNone + } + case 212: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1362 + { + yyVAL.colKeyOpt = colKeyPrimary + } case 213: - yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1374 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1366 { - yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} + yyVAL.colKeyOpt = colKey } case 214: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1370 + { + yyVAL.colKeyOpt = colKeyUniqueKey + } + case 215: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1374 + { + yyVAL.colKeyOpt = colKeyUnique + } + case 216: yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:1379 + { + yyVAL.literal = nil + } + case 217: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1383 + { + yyVAL.literal = NewStrLiteral(yyDollar[2].bytes) + } + case 218: + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:1389 + { + yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} + } + case 219: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:1394 { yyVAL.indexOptions = nil } - case 215: + case 220: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1383 +//line sql.y:1398 { yyVAL.indexOptions = yyDollar[1].indexOptions } - case 216: + case 221: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1389 +//line sql.y:1404 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } - case 217: + case 222: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1393 +//line sql.y:1408 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } - case 218: + case 223: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1399 +//line sql.y:1414 { yyVAL.indexOption = yyDollar[1].indexOption } - case 219: + case 224: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1403 +//line sql.y:1418 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 220: + case 225: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1408 +//line sql.y:1423 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[2].bytes)} } - case 221: + case 226: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1412 +//line sql.y:1427 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), String: yyDollar[3].colIdent.String()} } - case 222: + case 227: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1418 +//line sql.y:1433 { yyVAL.str = "" } - case 223: + case 228: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1422 +//line sql.y:1437 { yyVAL.str = string(yyDollar[1].bytes) } - case 224: + case 229: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1428 +//line sql.y:1443 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), ConstraintName: NewColIdent(yyDollar[1].str), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } - case 225: + case 230: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1432 +//line sql.y:1447 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Spatial: true, Unique: false} } - case 226: + case 231: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1436 +//line sql.y:1451 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Fulltext: true, Unique: false} } - case 227: + case 232: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1440 +//line sql.y:1455 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].str), ConstraintName: NewColIdent(yyDollar[1].str), Name: NewColIdent(yyDollar[4].str), Unique: true} } - case 228: + case 233: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1444 +//line sql.y:1459 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(yyDollar[2].str), Unique: false} } - case 229: + case 234: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1449 +//line sql.y:1464 { yyVAL.str = "" } - case 230: + case 235: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1453 +//line sql.y:1468 { yyVAL.str = yyDollar[2].str } - case 231: + case 236: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1459 +//line sql.y:1474 { yyVAL.str = string(yyDollar[1].bytes) } - case 232: + case 237: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1463 +//line sql.y:1478 { yyVAL.str = string(yyDollar[1].bytes) } - case 233: + case 238: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1467 +//line sql.y:1482 { yyVAL.str = string(yyDollar[1].bytes) } - case 234: + case 239: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1474 +//line sql.y:1489 { yyVAL.str = string(yyDollar[1].bytes) } - case 235: + case 240: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1478 +//line sql.y:1493 { yyVAL.str = string(yyDollar[1].bytes) } - case 236: + case 241: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1483 +//line sql.y:1498 { yyVAL.str = "key" } - case 237: + case 242: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1487 +//line sql.y:1502 { yyVAL.str = yyDollar[1].str } - case 238: + case 243: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1493 +//line sql.y:1508 { yyVAL.str = string(yyDollar[1].bytes) } - case 239: + case 244: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1497 +//line sql.y:1512 { yyVAL.str = string(yyDollar[1].bytes) } - case 240: + case 245: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1502 +//line sql.y:1517 { yyVAL.str = "" } - case 241: + case 246: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1506 +//line sql.y:1521 { yyVAL.str = string(yyDollar[1].colIdent.String()) } - case 242: + case 247: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1512 +//line sql.y:1527 { yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } - case 243: + case 248: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1516 +//line sql.y:1531 { yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) } - case 244: + case 249: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1522 +//line sql.y:1537 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].literal, Direction: yyDollar[3].orderDirection} } - case 245: + case 250: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1528 +//line sql.y:1543 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } - case 246: + case 251: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1532 +//line sql.y:1547 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } - case 247: + case 252: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1538 +//line sql.y:1553 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } - case 248: + case 253: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1542 +//line sql.y:1557 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } - case 249: + case 254: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:1548 +//line sql.y:1563 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns} } - case 250: + case 255: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1552 +//line sql.y:1567 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction} } - case 251: + case 256: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1556 +//line sql.y:1571 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnUpdate: yyDollar[11].ReferenceAction} } - case 252: + case 257: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1560 +//line sql.y:1575 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction, OnUpdate: yyDollar[12].ReferenceAction} } - case 253: + case 258: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1566 +//line sql.y:1581 { yyVAL.constraintInfo = &CheckConstraintDefinition{Expr: yyDollar[3].expr, Enforced: yyDollar[5].boolean} } - case 254: + case 259: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1572 +//line sql.y:1587 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } - case 255: + case 260: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1578 +//line sql.y:1593 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } - case 256: + case 261: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1584 +//line sql.y:1599 { yyVAL.ReferenceAction = Restrict } - case 257: + case 262: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1588 +//line sql.y:1603 { yyVAL.ReferenceAction = Cascade } - case 258: + case 263: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1592 +//line sql.y:1607 { yyVAL.ReferenceAction = NoAction } - case 259: + case 264: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1596 +//line sql.y:1611 { yyVAL.ReferenceAction = SetDefault } - case 260: + case 265: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1600 +//line sql.y:1615 { yyVAL.ReferenceAction = SetNull } - case 261: + case 266: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1605 +//line sql.y:1620 { yyVAL.str = "" } - case 262: + case 267: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1609 +//line sql.y:1624 { yyVAL.str = string(yyDollar[1].bytes) } - case 263: + case 268: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1613 +//line sql.y:1628 { yyVAL.str = string(yyDollar[1].bytes) } - case 264: + case 269: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1618 +//line sql.y:1633 { yyVAL.boolean = true } - case 265: + case 270: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1622 +//line sql.y:1637 { yyVAL.boolean = true } - case 266: + case 271: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1626 +//line sql.y:1641 { yyVAL.boolean = false } - case 267: + case 272: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1631 +//line sql.y:1646 { yyVAL.tableOptions = nil } - case 268: + case 273: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1635 +//line sql.y:1650 { yyVAL.tableOptions = yyDollar[1].tableOptions } - case 269: + case 274: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1641 +//line sql.y:1656 { yyVAL.tableOptions = TableOptions{yyDollar[1].tableOption} } - case 270: + case 275: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1645 +//line sql.y:1660 { yyVAL.tableOptions = append(yyDollar[1].tableOptions, yyDollar[3].tableOption) } - case 271: + case 276: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1649 +//line sql.y:1664 { yyVAL.tableOptions = append(yyDollar[1].tableOptions, yyDollar[2].tableOption) } - case 272: + case 277: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1655 +//line sql.y:1670 { yyVAL.tableOptions = TableOptions{yyDollar[1].tableOption} } - case 273: + case 278: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1659 +//line sql.y:1674 { yyVAL.tableOptions = append(yyDollar[1].tableOptions, yyDollar[2].tableOption) } - case 274: + case 279: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1665 +//line sql.y:1680 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 275: + case 280: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1669 +//line sql.y:1684 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 276: + case 281: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1673 +//line sql.y:1688 { yyVAL.tableOption = &TableOption{Name: (string(yyDollar[2].bytes)), String: yyDollar[4].str} } - case 277: + case 282: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1677 +//line sql.y:1692 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[2].bytes), String: yyDollar[4].str} } - case 278: + case 283: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1681 +//line sql.y:1696 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 279: + case 284: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1685 +//line sql.y:1700 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)} } - case 280: + case 285: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1689 +//line sql.y:1704 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)} } - case 281: + case 286: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1693 +//line sql.y:1708 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)} } - case 282: + case 287: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1697 +//line sql.y:1712 { yyVAL.tableOption = &TableOption{Name: (string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes)), Value: NewStrLiteral(yyDollar[4].bytes)} } - case 283: + case 288: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1701 +//line sql.y:1716 { yyVAL.tableOption = &TableOption{Name: (string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes)), Value: NewStrLiteral(yyDollar[4].bytes)} } - case 284: + case 289: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1705 +//line sql.y:1720 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 285: + case 290: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1709 +//line sql.y:1724 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)} } - case 286: + case 291: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1713 +//line sql.y:1728 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: yyDollar[3].colIdent.String()} } - case 287: + case 292: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1717 +//line sql.y:1732 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)} } - case 288: + case 293: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1721 +//line sql.y:1736 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 289: + case 294: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1725 +//line sql.y:1740 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 290: + case 295: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1729 +//line sql.y:1744 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 291: + case 296: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1733 +//line sql.y:1748 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 292: + case 297: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1737 +//line sql.y:1752 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 293: + case 298: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1741 +//line sql.y:1756 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 294: + case 299: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1745 +//line sql.y:1760 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)} } - case 295: + case 300: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1749 +//line sql.y:1764 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 296: + case 301: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1753 +//line sql.y:1768 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 297: + case 302: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1757 +//line sql.y:1772 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 298: + case 303: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1761 +//line sql.y:1776 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 299: + case 304: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1765 +//line sql.y:1780 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 300: + case 305: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1769 +//line sql.y:1784 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 301: + case 306: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1773 +//line sql.y:1788 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: (yyDollar[3].colIdent.String() + yyDollar[4].str)} } - case 302: + case 307: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1777 +//line sql.y:1792 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Tables: yyDollar[4].tableNames} } - case 303: + case 308: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1782 +//line sql.y:1797 { yyVAL.str = "" } - case 304: + case 309: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1786 +//line sql.y:1801 { yyVAL.str = " " + string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } - case 305: + case 310: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1790 +//line sql.y:1805 { yyVAL.str = " " + string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } - case 315: + case 320: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1809 +//line sql.y:1824 { yyVAL.str = yyDollar[1].colIdent.String() } - case 316: + case 321: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1813 +//line sql.y:1828 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'" } - case 317: + case 322: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1817 +//line sql.y:1832 { yyVAL.str = string(yyDollar[1].bytes) } - case 318: + case 323: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1822 +//line sql.y:1837 { yyVAL.bytes = []byte("") } - case 320: + case 325: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1828 +//line sql.y:1843 { yyVAL.colName = nil } - case 321: + case 326: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1832 +//line sql.y:1847 { yyVAL.colName = yyDollar[2].colName } - case 322: + case 327: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1837 +//line sql.y:1852 { yyVAL.colName = nil } - case 323: + case 328: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1841 +//line sql.y:1856 { yyVAL.colName = yyDollar[2].colName } - case 324: + case 329: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1846 +//line sql.y:1861 { yyVAL.alterOptions = nil } - case 325: + case 330: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1850 +//line sql.y:1865 { yyVAL.alterOptions = yyDollar[1].alterOptions } - case 326: + case 331: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1854 +//line sql.y:1869 { yyVAL.alterOptions = append(yyDollar[1].alterOptions, &OrderByOption{Cols: yyDollar[5].columns}) } - case 327: + case 332: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1858 +//line sql.y:1873 { yyVAL.alterOptions = yyDollar[1].alterOptions } - case 328: + case 333: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1862 +//line sql.y:1877 { yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOptions...) } - case 329: + case 334: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1866 +//line sql.y:1881 { yyVAL.alterOptions = append(append(yyDollar[1].alterOptions, yyDollar[3].alterOptions...), &OrderByOption{Cols: yyDollar[7].columns}) } - case 330: + case 335: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1872 +//line sql.y:1887 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } - case 331: + case 336: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1876 +//line sql.y:1891 { yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOption) } - case 332: + case 337: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1880 +//line sql.y:1895 { yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOption) } - case 333: + case 338: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1886 +//line sql.y:1901 { yyVAL.alterOption = yyDollar[1].tableOptions } - case 334: + case 339: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1890 +//line sql.y:1905 { yyVAL.alterOption = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinition} } - case 335: + case 340: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1894 +//line sql.y:1909 { yyVAL.alterOption = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinition} } - case 336: + case 341: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1898 +//line sql.y:1913 { yyVAL.alterOption = &AddIndexDefinition{IndexDefinition: yyDollar[2].indexDefinition} } - case 337: + case 342: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1902 +//line sql.y:1917 { yyVAL.alterOption = &AddColumns{Columns: yyDollar[4].columnDefinitions} } - case 338: + case 343: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1906 +//line sql.y:1921 { yyVAL.alterOption = &AddColumns{Columns: []*ColumnDefinition{yyDollar[3].columnDefinition}, First: yyDollar[4].colName, After: yyDollar[5].colName} } - case 339: + case 344: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1910 +//line sql.y:1925 { yyVAL.alterOption = &AlterColumn{Column: yyDollar[3].colName, DropDefault: true} } - case 340: + case 345: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1914 +//line sql.y:1929 { yyVAL.alterOption = &AlterColumn{Column: yyDollar[3].colName, DropDefault: false, DefaultVal: yyDollar[6].expr} } - case 341: + case 346: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1918 +//line sql.y:1933 { yyVAL.alterOption = &ChangeColumn{OldColumn: yyDollar[3].colName, NewColDefinition: yyDollar[4].columnDefinition, First: yyDollar[5].colName, After: yyDollar[6].colName} } - case 342: + case 347: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1922 +//line sql.y:1937 { yyVAL.alterOption = &ModifyColumn{NewColDefinition: yyDollar[3].columnDefinition, First: yyDollar[4].colName, After: yyDollar[5].colName} } - case 343: + case 348: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1926 +//line sql.y:1941 { yyVAL.alterOption = &AlterCharset{CharacterSet: yyDollar[4].str, Collate: yyDollar[5].str} } - case 344: + case 349: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1930 +//line sql.y:1945 { yyVAL.alterOption = &KeyState{Enable: false} } - case 345: + case 350: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1934 +//line sql.y:1949 { yyVAL.alterOption = &KeyState{Enable: true} } - case 346: + case 351: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1938 +//line sql.y:1953 { yyVAL.alterOption = &TablespaceOperation{Import: false} } - case 347: + case 352: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1942 +//line sql.y:1957 { yyVAL.alterOption = &TablespaceOperation{Import: true} } - case 348: + case 353: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1946 +//line sql.y:1961 { yyVAL.alterOption = &DropColumn{Name: yyDollar[3].colName} } - case 349: + case 354: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1950 +//line sql.y:1965 { yyVAL.alterOption = &DropKey{Type: NormalKeyType, Name: yyDollar[3].colIdent.String()} } - case 350: + case 355: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1954 +//line sql.y:1969 { yyVAL.alterOption = &DropKey{Type: PrimaryKeyType} } - case 351: + case 356: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1958 +//line sql.y:1973 { yyVAL.alterOption = &DropKey{Type: ForeignKeyType, Name: yyDollar[4].colIdent.String()} } - case 352: + case 357: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1962 +//line sql.y:1977 { yyVAL.alterOption = &Force{} } - case 353: + case 358: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1966 +//line sql.y:1981 { yyVAL.alterOption = &RenameTableName{Table: yyDollar[3].tableName} } - case 354: + case 359: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1970 +//line sql.y:1985 { yyVAL.alterOption = &RenameIndex{OldName: yyDollar[3].colIdent.String(), NewName: yyDollar[5].colIdent.String()} } - case 355: + case 360: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1976 +//line sql.y:1991 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } - case 356: + case 361: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1980 +//line sql.y:1995 { yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOption) } - case 357: + case 362: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1986 +//line sql.y:2001 { yyVAL.alterOption = AlgorithmValue(string(yyDollar[3].bytes)) } - case 358: + case 363: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1990 +//line sql.y:2005 { yyVAL.alterOption = AlgorithmValue(string(yyDollar[3].bytes)) } - case 359: + case 364: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1994 +//line sql.y:2009 { yyVAL.alterOption = AlgorithmValue(string(yyDollar[3].bytes)) } - case 360: + case 365: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1998 +//line sql.y:2013 { yyVAL.alterOption = &LockOption{Type: DefaultType} } - case 361: + case 366: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2002 +//line sql.y:2017 { yyVAL.alterOption = &LockOption{Type: NoneType} } - case 362: + case 367: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2006 +//line sql.y:2021 { yyVAL.alterOption = &LockOption{Type: SharedType} } - case 363: + case 368: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2010 +//line sql.y:2025 { yyVAL.alterOption = &LockOption{Type: ExclusiveType} } - case 364: + case 369: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2014 +//line sql.y:2029 { yyVAL.alterOption = &Validation{With: true} } - case 365: + case 370: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2018 +//line sql.y:2033 { yyVAL.alterOption = &Validation{With: false} } - case 366: + case 371: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2024 +//line sql.y:2039 { yyDollar[1].alterTable.FullyParsed = true yyDollar[1].alterTable.AlterOptions = yyDollar[2].alterOptions yyVAL.statement = yyDollar[1].alterTable } - case 367: + case 372: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2030 +//line sql.y:2045 { yyDollar[1].alterTable.FullyParsed = true yyDollar[1].alterTable.AlterOptions = yyDollar[2].alterOptions yyDollar[1].alterTable.PartitionSpec = &PartitionSpec{Action: RemoveAction} yyVAL.statement = yyDollar[1].alterTable } - case 368: + case 373: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2037 +//line sql.y:2052 { yyDollar[1].alterTable.FullyParsed = true yyDollar[1].alterTable.AlterOptions = yyDollar[2].alterOptions yyDollar[1].alterTable.PartitionSpec = yyDollar[4].partSpec yyVAL.statement = yyDollar[1].alterTable } - case 369: + case 374: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2044 +//line sql.y:2059 { yyDollar[1].alterTable.FullyParsed = true yyDollar[1].alterTable.PartitionSpec = yyDollar[2].partSpec yyVAL.statement = yyDollar[1].alterTable } - case 370: + case 375: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:2050 +//line sql.y:2065 { yyVAL.statement = &AlterView{ViewName: yyDollar[6].tableName.ToViewName(), Algorithm: yyDollar[2].str, Definer: yyDollar[3].str, Security: yyDollar[4].str, Columns: yyDollar[7].columns, Select: yyDollar[9].selStmt, CheckOption: yyDollar[10].str} } - case 371: + case 376: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2054 +//line sql.y:2069 { yyDollar[1].alterDatabase.FullyParsed = true yyDollar[1].alterDatabase.DBName = yyDollar[2].colIdent.String() yyDollar[1].alterDatabase.AlterOptions = yyDollar[3].collateAndCharsets yyVAL.statement = yyDollar[1].alterDatabase } - case 372: + case 377: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2061 +//line sql.y:2076 { yyDollar[1].alterDatabase.FullyParsed = true yyDollar[1].alterDatabase.DBName = yyDollar[2].colIdent.String() yyDollar[1].alterDatabase.UpdateDataDirectory = true yyVAL.statement = yyDollar[1].alterDatabase } - case 373: + case 378: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2068 +//line sql.y:2083 { yyVAL.statement = &AlterVschema{ Action: CreateVindexDDLAction, @@ -7435,9 +7472,9 @@ yydefault: }, } } - case 374: + case 379: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2080 +//line sql.y:2095 { yyVAL.statement = &AlterVschema{ Action: DropVindexDDLAction, @@ -7447,21 +7484,21 @@ yydefault: }, } } - case 375: + case 380: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2090 +//line sql.y:2105 { yyVAL.statement = &AlterVschema{Action: AddVschemaTableDDLAction, Table: yyDollar[5].tableName} } - case 376: + case 381: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2094 +//line sql.y:2109 { yyVAL.statement = &AlterVschema{Action: DropVschemaTableDDLAction, Table: yyDollar[5].tableName} } - case 377: + case 382: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:2098 +//line sql.y:2113 { yyVAL.statement = &AlterVschema{ Action: AddColVindexDDLAction, @@ -7474,9 +7511,9 @@ yydefault: VindexCols: yyDollar[9].columns, } } - case 378: + case 383: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2111 +//line sql.y:2126 { yyVAL.statement = &AlterVschema{ Action: DropColVindexDDLAction, @@ -7486,15 +7523,15 @@ yydefault: }, } } - case 379: + case 384: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2121 +//line sql.y:2136 { yyVAL.statement = &AlterVschema{Action: AddSequenceDDLAction, Table: yyDollar[5].tableName} } - case 380: + case 385: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2125 +//line sql.y:2140 { yyVAL.statement = &AlterVschema{ Action: AddAutoIncDDLAction, @@ -7505,207 +7542,207 @@ yydefault: }, } } - case 381: + case 386: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2138 +//line sql.y:2153 { yyVAL.partSpec = &PartitionSpec{Action: AddAction, Definitions: []*PartitionDefinition{yyDollar[4].partDef}} } - case 382: + case 387: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2142 +//line sql.y:2157 { yyVAL.partSpec = &PartitionSpec{Action: DropAction, Names: yyDollar[3].partitions} } - case 383: + case 388: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2146 +//line sql.y:2161 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeAction, Names: yyDollar[3].partitions, Definitions: yyDollar[6].partDefs} } - case 384: + case 389: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2150 +//line sql.y:2165 { yyVAL.partSpec = &PartitionSpec{Action: DiscardAction, Names: yyDollar[3].partitions} } - case 385: + case 390: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2154 +//line sql.y:2169 { yyVAL.partSpec = &PartitionSpec{Action: DiscardAction, IsAll: true} } - case 386: + case 391: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2158 +//line sql.y:2173 { yyVAL.partSpec = &PartitionSpec{Action: ImportAction, Names: yyDollar[3].partitions} } - case 387: + case 392: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2162 +//line sql.y:2177 { yyVAL.partSpec = &PartitionSpec{Action: ImportAction, IsAll: true} } - case 388: + case 393: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2166 +//line sql.y:2181 { yyVAL.partSpec = &PartitionSpec{Action: TruncateAction, Names: yyDollar[3].partitions} } - case 389: + case 394: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2170 +//line sql.y:2185 { yyVAL.partSpec = &PartitionSpec{Action: TruncateAction, IsAll: true} } - case 390: + case 395: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2174 +//line sql.y:2189 { yyVAL.partSpec = &PartitionSpec{Action: CoalesceAction, Number: NewIntLiteral(yyDollar[3].bytes)} } - case 391: + case 396: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2178 +//line sql.y:2193 { yyVAL.partSpec = &PartitionSpec{Action: ExchangeAction, Names: Partitions{yyDollar[3].colIdent}, TableName: yyDollar[6].tableName, WithoutValidation: yyDollar[7].boolean} } - case 392: + case 397: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2182 +//line sql.y:2197 { yyVAL.partSpec = &PartitionSpec{Action: AnalyzeAction, Names: yyDollar[3].partitions} } - case 393: + case 398: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2186 +//line sql.y:2201 { yyVAL.partSpec = &PartitionSpec{Action: AnalyzeAction, IsAll: true} } - case 394: + case 399: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2190 +//line sql.y:2205 { yyVAL.partSpec = &PartitionSpec{Action: CheckAction, Names: yyDollar[3].partitions} } - case 395: + case 400: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2194 +//line sql.y:2209 { yyVAL.partSpec = &PartitionSpec{Action: CheckAction, IsAll: true} } - case 396: + case 401: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2198 +//line sql.y:2213 { yyVAL.partSpec = &PartitionSpec{Action: OptimizeAction, Names: yyDollar[3].partitions} } - case 397: + case 402: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2202 +//line sql.y:2217 { yyVAL.partSpec = &PartitionSpec{Action: OptimizeAction, IsAll: true} } - case 398: + case 403: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2206 +//line sql.y:2221 { yyVAL.partSpec = &PartitionSpec{Action: RebuildAction, Names: yyDollar[3].partitions} } - case 399: + case 404: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2210 +//line sql.y:2225 { yyVAL.partSpec = &PartitionSpec{Action: RebuildAction, IsAll: true} } - case 400: + case 405: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2214 +//line sql.y:2229 { yyVAL.partSpec = &PartitionSpec{Action: RepairAction, Names: yyDollar[3].partitions} } - case 401: + case 406: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2218 +//line sql.y:2233 { yyVAL.partSpec = &PartitionSpec{Action: RepairAction, IsAll: true} } - case 402: + case 407: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2222 +//line sql.y:2237 { yyVAL.partSpec = &PartitionSpec{Action: UpgradeAction} } - case 403: + case 408: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2227 +//line sql.y:2242 { yyVAL.boolean = false } - case 404: + case 409: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2231 +//line sql.y:2246 { yyVAL.boolean = false } - case 405: + case 410: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2235 +//line sql.y:2250 { yyVAL.boolean = true } - case 406: + case 411: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2242 +//line sql.y:2257 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } - case 407: + case 412: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2246 +//line sql.y:2261 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } - case 408: + case 413: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2252 +//line sql.y:2267 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } - case 409: + case 414: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2256 +//line sql.y:2271 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } - case 410: + case 415: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2262 +//line sql.y:2277 { yyVAL.statement = &RenameTable{TablePairs: yyDollar[3].renameTablePairs} } - case 411: + case 416: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2268 +//line sql.y:2283 { yyVAL.renameTablePairs = []*RenameTablePair{{FromTable: yyDollar[1].tableName, ToTable: yyDollar[3].tableName}} } - case 412: + case 417: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2272 +//line sql.y:2287 { yyVAL.renameTablePairs = append(yyDollar[1].renameTablePairs, &RenameTablePair{FromTable: yyDollar[3].tableName, ToTable: yyDollar[5].tableName}) } - case 413: - yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2278 + case 418: + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:2293 { - yyVAL.statement = &DropTable{FromTables: yyDollar[5].tableNames, IfExists: yyDollar[4].boolean, Temp: yyDollar[2].boolean} + yyVAL.statement = &DropTable{FromTables: yyDollar[4].tableNames, IfExists: yyDollar[3].boolean} } - case 414: + case 419: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2282 +//line sql.y:2297 { // Change this to an alter statement if yyDollar[3].colIdent.Lowered() == "primary" { @@ -7714,1275 +7751,1281 @@ yydefault: yyVAL.statement = &AlterTable{Table: yyDollar[5].tableName, AlterOptions: append([]AlterOption{&DropKey{Type: NormalKeyType, Name: yyDollar[3].colIdent.String()}}, yyDollar[6].alterOptions...)} } } - case 415: + case 420: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2291 +//line sql.y:2306 { yyVAL.statement = &DropView{FromTables: yyDollar[4].tableNames, IfExists: yyDollar[3].boolean} } - case 416: + case 421: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2295 +//line sql.y:2310 { yyVAL.statement = &DropDatabase{DBName: string(yyDollar[4].colIdent.String()), IfExists: yyDollar[3].boolean} } - case 417: + case 422: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2301 +//line sql.y:2316 { yyVAL.statement = &TruncateTable{Table: yyDollar[3].tableName} } - case 418: + case 423: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2305 +//line sql.y:2320 { yyVAL.statement = &TruncateTable{Table: yyDollar[2].tableName} } - case 419: + case 424: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2310 +//line sql.y:2325 { yyVAL.statement = &OtherRead{} } - case 420: + case 425: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2316 +//line sql.y:2331 { yyVAL.statement = &Show{&ShowBasic{Command: Charset, Filter: yyDollar[3].showFilter}} } - case 421: + case 426: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2320 +//line sql.y:2335 { yyVAL.statement = &Show{&ShowBasic{Command: Collation, Filter: yyDollar[3].showFilter}} } - case 422: + case 427: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2324 +//line sql.y:2339 { yyVAL.statement = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilter}} } - case 423: + case 428: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2328 +//line sql.y:2343 { yyVAL.statement = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilter}} } - case 424: + case 429: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2332 +//line sql.y:2347 { yyVAL.statement = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilter}} } - case 425: + case 430: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2336 +//line sql.y:2351 { yyVAL.statement = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilter}} } - case 426: + case 431: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2340 +//line sql.y:2355 { yyVAL.statement = &Show{&ShowBasic{Command: Function, Filter: yyDollar[4].showFilter}} } - case 427: + case 432: + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:2359 + { + yyVAL.statement = &Show{&ShowBasic{Command: OpenTable, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} + } + case 433: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2344 +//line sql.y:2363 { yyVAL.statement = &Show{&ShowBasic{Command: Privilege}} } - case 428: + case 434: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2348 +//line sql.y:2367 { yyVAL.statement = &Show{&ShowBasic{Command: Procedure, Filter: yyDollar[4].showFilter}} } - case 429: + case 435: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2352 +//line sql.y:2371 { yyVAL.statement = &Show{&ShowBasic{Command: StatusSession, Filter: yyDollar[4].showFilter}} } - case 430: + case 436: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2356 +//line sql.y:2375 { yyVAL.statement = &Show{&ShowBasic{Command: StatusGlobal, Filter: yyDollar[4].showFilter}} } - case 431: + case 437: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2360 +//line sql.y:2379 { yyVAL.statement = &Show{&ShowBasic{Command: VariableSession, Filter: yyDollar[4].showFilter}} } - case 432: + case 438: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2364 +//line sql.y:2383 { yyVAL.statement = &Show{&ShowBasic{Command: VariableGlobal, Filter: yyDollar[4].showFilter}} } - case 433: + case 439: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2368 +//line sql.y:2387 { - yyVAL.statement = &Show{&ShowTableStatus{DatabaseName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: TableStatus, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} } - case 434: + case 440: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:2391 + { + yyVAL.statement = &Show{&ShowBasic{Command: Table, DbName: yyDollar[3].str, Filter: yyDollar[4].showFilter}} + } + case 441: + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:2395 + { + yyVAL.statement = &Show{&ShowBasic{Command: TableFull, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} + } + case 442: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:2399 + { + yyVAL.statement = &Show{&ShowBasic{Command: Trigger, DbName: yyDollar[3].str, Filter: yyDollar[4].showFilter}} + } + case 443: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2372 +//line sql.y:2403 { yyVAL.statement = &Show{&ShowColumns{Full: yyDollar[2].str, Table: yyDollar[5].tableName, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}} } - case 435: + case 444: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2376 +//line sql.y:2407 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } - case 436: + case 445: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2380 +//line sql.y:2411 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 437: + case 446: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2384 +//line sql.y:2415 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 438: + case 447: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2388 +//line sql.y:2419 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } - case 439: + case 448: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2393 +//line sql.y:2424 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } - case 440: + case 449: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2397 +//line sql.y:2428 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 441: + case 450: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2401 +//line sql.y:2432 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } - case 442: + case 451: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2405 +//line sql.y:2436 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 443: + case 452: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2409 +//line sql.y:2440 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 444: + case 453: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2413 +//line sql.y:2444 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 445: + case 454: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2417 +//line sql.y:2448 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } - case 446: + case 455: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2421 +//line sql.y:2452 { showTablesOpt := &ShowTablesOpt{DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{&ShowLegacy{Extended: string(yyDollar[2].str), Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName, Scope: ImplicitScope}} } - case 447: + case 456: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2426 +//line sql.y:2457 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 448: + case 457: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2430 +//line sql.y:2461 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } - case 449: + case 458: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2434 +//line sql.y:2465 { - // this is ugly, but I couldn't find a better way for now - if yyDollar[3].str == "processlist" { - yyVAL.statement = &Show{&ShowLegacy{Type: yyDollar[3].str, Scope: ImplicitScope}} - } else { - showTablesOpt := &ShowTablesOpt{Full: yyDollar[2].str, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter} - yyVAL.statement = &Show{&ShowLegacy{Type: yyDollar[3].str, ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} - } + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 450: + case 459: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2444 +//line sql.y:2469 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{&ShowLegacy{Scope: VitessMetadataScope, Type: string(yyDollar[3].bytes), ShowTablesOpt: showTablesOpt}} } - case 451: + case 460: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2449 +//line sql.y:2474 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 452: + case 461: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2453 +//line sql.y:2478 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 453: + case 462: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2457 +//line sql.y:2482 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), OnTable: yyDollar[5].tableName, Scope: ImplicitScope}} } - case 454: + case 463: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2461 +//line sql.y:2486 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 455: + case 464: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2466 +//line sql.y:2491 { // This should probably be a different type (ShowVitessTopoOpt), but // just getting the thing working for now showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: yyDollar[2].str, ShowTablesOpt: showTablesOpt}} } - case 456: + case 465: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2480 +//line sql.y:2505 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].colIdent.String()), Scope: ImplicitScope}} } - case 457: + case 466: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2484 +//line sql.y:2509 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 458: + case 467: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2488 +//line sql.y:2513 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 459: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2494 - { - yyVAL.str = string(yyDollar[1].bytes) - } - case 460: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2498 - { - yyVAL.str = string(yyDollar[1].bytes) - } - case 461: + case 468: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2504 +//line sql.y:2519 { yyVAL.str = string(yyDollar[1].bytes) } - case 462: + case 469: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2508 +//line sql.y:2523 { yyVAL.str = string(yyDollar[1].bytes) } - case 463: + case 470: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2514 +//line sql.y:2529 { yyVAL.str = "" } - case 464: + case 471: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2518 +//line sql.y:2533 { yyVAL.str = "extended " } - case 465: + case 472: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2524 +//line sql.y:2539 { yyVAL.str = "" } - case 466: + case 473: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2528 +//line sql.y:2543 { yyVAL.str = "full " } - case 467: + case 474: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2534 +//line sql.y:2549 { yyVAL.str = string(yyDollar[1].bytes) } - case 468: + case 475: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2538 +//line sql.y:2553 { yyVAL.str = string(yyDollar[1].bytes) } - case 469: + case 476: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2544 +//line sql.y:2559 { yyVAL.str = "" } - case 470: + case 477: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2548 +//line sql.y:2563 { yyVAL.str = yyDollar[2].tableIdent.v } - case 471: + case 478: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2552 +//line sql.y:2567 { yyVAL.str = yyDollar[2].tableIdent.v } - case 472: + case 479: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2558 +//line sql.y:2573 { yyVAL.showFilter = nil } - case 473: + case 480: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2562 +//line sql.y:2577 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 474: + case 481: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2566 +//line sql.y:2581 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } - case 475: + case 482: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2572 +//line sql.y:2587 { yyVAL.showFilter = nil } - case 476: + case 483: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2576 +//line sql.y:2591 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 477: + case 484: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2582 +//line sql.y:2597 { yyVAL.empty = struct{}{} } - case 478: + case 485: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2586 +//line sql.y:2601 { yyVAL.empty = struct{}{} } - case 479: + case 486: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2590 +//line sql.y:2605 { yyVAL.empty = struct{}{} } - case 480: + case 487: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2596 +//line sql.y:2611 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } - case 481: + case 488: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2600 +//line sql.y:2615 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } - case 482: + case 489: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2606 +//line sql.y:2621 { yyVAL.statement = &Begin{} } - case 483: + case 490: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2610 +//line sql.y:2625 { yyVAL.statement = &Begin{} } - case 484: + case 491: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2616 +//line sql.y:2631 { yyVAL.statement = &Commit{} } - case 485: + case 492: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2622 +//line sql.y:2637 { yyVAL.statement = &Rollback{} } - case 486: + case 493: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2626 +//line sql.y:2641 { yyVAL.statement = &SRollback{Name: yyDollar[5].colIdent} } - case 487: + case 494: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2631 +//line sql.y:2646 { yyVAL.empty = struct{}{} } - case 488: + case 495: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2633 +//line sql.y:2648 { yyVAL.empty = struct{}{} } - case 489: + case 496: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2636 +//line sql.y:2651 { yyVAL.empty = struct{}{} } - case 490: + case 497: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2638 +//line sql.y:2653 { yyVAL.empty = struct{}{} } - case 491: + case 498: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2643 +//line sql.y:2658 { yyVAL.statement = &Savepoint{Name: yyDollar[2].colIdent} } - case 492: + case 499: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2649 +//line sql.y:2664 { yyVAL.statement = &Release{Name: yyDollar[3].colIdent} } - case 493: + case 500: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2654 +//line sql.y:2669 { yyVAL.explainType = EmptyType } - case 494: + case 501: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2658 +//line sql.y:2673 { yyVAL.explainType = JSONType } - case 495: + case 502: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2662 +//line sql.y:2677 { yyVAL.explainType = TreeType } - case 496: + case 503: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2666 +//line sql.y:2681 { yyVAL.explainType = VitessType } - case 497: + case 504: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2670 +//line sql.y:2685 { yyVAL.explainType = TraditionalType } - case 498: + case 505: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2674 +//line sql.y:2689 { yyVAL.explainType = AnalyzeType } - case 499: + case 506: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2680 +//line sql.y:2695 { yyVAL.bytes = yyDollar[1].bytes } - case 500: + case 507: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2684 +//line sql.y:2699 { yyVAL.bytes = yyDollar[1].bytes } - case 501: + case 508: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2688 +//line sql.y:2703 { yyVAL.bytes = yyDollar[1].bytes } - case 502: + case 509: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2694 +//line sql.y:2709 { yyVAL.statement = yyDollar[1].selStmt } - case 503: + case 510: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2698 +//line sql.y:2713 { yyVAL.statement = yyDollar[1].statement } - case 504: + case 511: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2702 +//line sql.y:2717 { yyVAL.statement = yyDollar[1].statement } - case 505: + case 512: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2706 +//line sql.y:2721 { yyVAL.statement = yyDollar[1].statement } - case 506: + case 513: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2711 +//line sql.y:2726 { yyVAL.str = "" } - case 507: + case 514: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2715 +//line sql.y:2730 { yyVAL.str = yyDollar[1].colIdent.val } - case 508: + case 515: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2719 +//line sql.y:2734 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'" } - case 509: + case 516: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2725 +//line sql.y:2740 { yyVAL.statement = &ExplainTab{Table: yyDollar[2].tableName, Wild: yyDollar[3].str} } - case 510: + case 517: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2729 +//line sql.y:2744 { yyVAL.statement = &ExplainStmt{Type: yyDollar[2].explainType, Statement: yyDollar[3].statement} } - case 511: + case 518: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2735 +//line sql.y:2750 { yyVAL.statement = &OtherAdmin{} } - case 512: + case 519: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2739 +//line sql.y:2754 { yyVAL.statement = &OtherAdmin{} } - case 513: + case 520: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2745 +//line sql.y:2760 { yyVAL.statement = &LockTables{Tables: yyDollar[3].tableAndLockTypes} } - case 514: + case 521: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2751 +//line sql.y:2766 { yyVAL.tableAndLockTypes = TableAndLockTypes{yyDollar[1].tableAndLockType} } - case 515: + case 522: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2755 +//line sql.y:2770 { yyVAL.tableAndLockTypes = append(yyDollar[1].tableAndLockTypes, yyDollar[3].tableAndLockType) } - case 516: + case 523: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2761 +//line sql.y:2776 { yyVAL.tableAndLockType = &TableAndLockType{Table: yyDollar[1].aliasedTableName, Lock: yyDollar[2].lockType} } - case 517: + case 524: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2767 +//line sql.y:2782 { yyVAL.lockType = Read } - case 518: + case 525: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2771 +//line sql.y:2786 { yyVAL.lockType = ReadLocal } - case 519: + case 526: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2775 +//line sql.y:2790 { yyVAL.lockType = Write } - case 520: + case 527: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2779 +//line sql.y:2794 { yyVAL.lockType = LowPriorityWrite } - case 521: + case 528: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2785 +//line sql.y:2800 { yyVAL.statement = &UnlockTables{} } - case 522: + case 529: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2791 +//line sql.y:2806 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, FlushOptions: yyDollar[3].strs} } - case 523: + case 530: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2795 +//line sql.y:2810 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean} } - case 524: + case 531: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2799 +//line sql.y:2814 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, WithLock: true} } - case 525: + case 532: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2803 +//line sql.y:2818 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, TableNames: yyDollar[4].tableNames} } - case 526: + case 533: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2807 +//line sql.y:2822 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, TableNames: yyDollar[4].tableNames, WithLock: true} } - case 527: + case 534: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2811 +//line sql.y:2826 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, TableNames: yyDollar[4].tableNames, ForExport: true} } - case 528: + case 535: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2817 +//line sql.y:2832 { yyVAL.strs = []string{yyDollar[1].str} } - case 529: + case 536: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2821 +//line sql.y:2836 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[3].str) } - case 530: + case 537: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2827 +//line sql.y:2842 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } - case 531: + case 538: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2831 +//line sql.y:2846 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } - case 532: + case 539: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2835 +//line sql.y:2850 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } - case 533: + case 540: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2839 +//line sql.y:2854 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } - case 534: + case 541: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2843 +//line sql.y:2858 { yyVAL.str = string(yyDollar[1].bytes) } - case 535: + case 542: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2847 +//line sql.y:2862 { yyVAL.str = string(yyDollar[1].bytes) } - case 536: + case 543: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2851 +//line sql.y:2866 { yyVAL.str = string(yyDollar[1].bytes) } - case 537: + case 544: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2855 +//line sql.y:2870 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) + yyDollar[3].str } - case 538: + case 545: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2859 +//line sql.y:2874 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } - case 539: + case 546: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2863 +//line sql.y:2878 { yyVAL.str = string(yyDollar[1].bytes) } - case 540: + case 547: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2867 +//line sql.y:2882 { yyVAL.str = string(yyDollar[1].bytes) } - case 541: + case 548: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2871 +//line sql.y:2886 { yyVAL.str = string(yyDollar[1].bytes) } - case 542: + case 549: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2876 +//line sql.y:2891 { yyVAL.boolean = false } - case 543: + case 550: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2880 +//line sql.y:2895 { yyVAL.boolean = true } - case 544: + case 551: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2884 +//line sql.y:2899 { yyVAL.boolean = true } - case 545: + case 552: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2889 +//line sql.y:2904 { yyVAL.str = "" } - case 546: + case 553: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2893 +//line sql.y:2908 { yyVAL.str = " " + string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) + " " + yyDollar[3].colIdent.String() } - case 547: + case 554: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2898 +//line sql.y:2913 { setAllowComments(yylex, true) } - case 548: + case 555: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2902 +//line sql.y:2917 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 549: + case 556: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2908 +//line sql.y:2923 { yyVAL.bytes2 = nil } - case 550: + case 557: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2912 +//line sql.y:2927 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 551: + case 558: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2918 +//line sql.y:2933 { yyVAL.boolean = true } - case 552: + case 559: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2922 +//line sql.y:2937 { yyVAL.boolean = false } - case 553: + case 560: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2926 +//line sql.y:2941 { yyVAL.boolean = true } - case 554: + case 561: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2931 +//line sql.y:2946 { yyVAL.str = "" } - case 555: + case 562: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2935 +//line sql.y:2950 { yyVAL.str = SQLNoCacheStr } - case 556: + case 563: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2939 +//line sql.y:2954 { yyVAL.str = SQLCacheStr } - case 557: + case 564: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2944 +//line sql.y:2959 { yyVAL.boolean = false } - case 558: + case 565: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2948 +//line sql.y:2963 { yyVAL.boolean = true } - case 559: + case 566: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2952 +//line sql.y:2967 { yyVAL.boolean = true } - case 560: + case 567: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2957 +//line sql.y:2972 { yyVAL.selectExprs = nil } - case 561: + case 568: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2961 +//line sql.y:2976 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 562: + case 569: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2966 +//line sql.y:2981 { yyVAL.strs = nil } - case 563: + case 570: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2970 +//line sql.y:2985 { yyVAL.strs = []string{yyDollar[1].str} } - case 564: + case 571: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2974 +//line sql.y:2989 { // TODO: This is a hack since I couldn't get it to work in a nicer way. I got 'conflicts: 8 shift/reduce' yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str} } - case 565: + case 572: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2978 +//line sql.y:2993 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } - case 566: + case 573: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2982 +//line sql.y:2997 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } - case 567: + case 574: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2988 +//line sql.y:3003 { yyVAL.str = SQLNoCacheStr } - case 568: + case 575: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2992 +//line sql.y:3007 { yyVAL.str = SQLCacheStr } - case 569: + case 576: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2996 +//line sql.y:3011 { yyVAL.str = DistinctStr } - case 570: + case 577: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3000 +//line sql.y:3015 { yyVAL.str = DistinctStr } - case 571: + case 578: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3004 +//line sql.y:3019 { yyVAL.str = StraightJoinHint } - case 572: + case 579: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3008 +//line sql.y:3023 { yyVAL.str = SQLCalcFoundRowsStr } - case 573: + case 580: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3014 +//line sql.y:3029 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 574: + case 581: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3018 +//line sql.y:3033 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 575: + case 582: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3024 +//line sql.y:3039 { yyVAL.selectExpr = &StarExpr{} } - case 576: + case 583: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3028 +//line sql.y:3043 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 577: + case 584: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3032 +//line sql.y:3047 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 578: + case 585: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3036 +//line sql.y:3051 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 579: + case 586: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3041 +//line sql.y:3056 { yyVAL.colIdent = ColIdent{} } - case 580: + case 587: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3045 +//line sql.y:3060 { yyVAL.colIdent = yyDollar[1].colIdent } - case 581: + case 588: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3049 +//line sql.y:3064 { yyVAL.colIdent = yyDollar[2].colIdent } - case 583: + case 590: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3056 +//line sql.y:3071 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 584: + case 591: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3061 +//line sql.y:3076 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 585: + case 592: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3065 +//line sql.y:3080 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 586: + case 593: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3071 +//line sql.y:3086 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 587: + case 594: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3075 +//line sql.y:3090 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 590: + case 597: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3085 +//line sql.y:3100 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 591: + case 598: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3089 +//line sql.y:3104 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].derivedTable, As: yyDollar[3].tableIdent} } - case 592: + case 599: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3093 +//line sql.y:3108 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 593: + case 600: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3099 +//line sql.y:3114 { yyVAL.derivedTable = &DerivedTable{yyDollar[2].selStmt} } - case 594: + case 601: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3105 +//line sql.y:3120 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 595: + case 602: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3109 +//line sql.y:3124 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 596: + case 603: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3114 +//line sql.y:3129 { yyVAL.columns = nil } - case 597: + case 604: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3118 +//line sql.y:3133 { yyVAL.columns = yyDollar[2].columns } - case 598: + case 605: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3124 +//line sql.y:3139 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 599: + case 606: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3128 +//line sql.y:3143 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 600: + case 607: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3134 +//line sql.y:3149 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 601: + case 608: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3138 +//line sql.y:3153 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 602: + case 609: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3151 +//line sql.y:3166 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 603: + case 610: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3155 +//line sql.y:3170 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 604: + case 611: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3159 +//line sql.y:3174 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 605: + case 612: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3163 +//line sql.y:3178 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr} } - case 606: + case 613: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3169 +//line sql.y:3184 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 607: + case 614: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3171 +//line sql.y:3186 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 608: + case 615: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3175 +//line sql.y:3190 { yyVAL.joinCondition = JoinCondition{} } - case 609: + case 616: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3177 +//line sql.y:3192 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 610: + case 617: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3181 +//line sql.y:3196 { yyVAL.joinCondition = JoinCondition{} } - case 611: + case 618: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3183 +//line sql.y:3198 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 612: + case 619: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3186 +//line sql.y:3201 { yyVAL.empty = struct{}{} } - case 613: + case 620: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3188 +//line sql.y:3203 { yyVAL.empty = struct{}{} } - case 614: + case 621: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3191 +//line sql.y:3206 { yyVAL.tableIdent = NewTableIdent("") } - case 615: + case 622: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3195 +//line sql.y:3210 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 616: + case 623: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3199 +//line sql.y:3214 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 618: + case 625: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3206 +//line sql.y:3221 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 619: + case 626: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3212 +//line sql.y:3227 { yyVAL.joinType = NormalJoinType } - case 620: + case 627: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3216 +//line sql.y:3231 { yyVAL.joinType = NormalJoinType } - case 621: + case 628: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3220 +//line sql.y:3235 { yyVAL.joinType = NormalJoinType } - case 622: + case 629: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3226 +//line sql.y:3241 { yyVAL.joinType = StraightJoinType } - case 623: + case 630: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3232 +//line sql.y:3247 { yyVAL.joinType = LeftJoinType } - case 624: + case 631: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3236 +//line sql.y:3251 { yyVAL.joinType = LeftJoinType } - case 625: + case 632: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3240 +//line sql.y:3255 { yyVAL.joinType = RightJoinType } - case 626: + case 633: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3244 +//line sql.y:3259 { yyVAL.joinType = RightJoinType } - case 627: + case 634: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3250 +//line sql.y:3265 { yyVAL.joinType = NaturalJoinType } - case 628: + case 635: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3254 +//line sql.y:3269 { if yyDollar[2].joinType == LeftJoinType { yyVAL.joinType = NaturalLeftJoinType @@ -8990,489 +9033,489 @@ yydefault: yyVAL.joinType = NaturalRightJoinType } } - case 629: + case 636: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3264 +//line sql.y:3279 { yyVAL.tableName = yyDollar[2].tableName } - case 630: + case 637: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3268 +//line sql.y:3283 { yyVAL.tableName = yyDollar[1].tableName } - case 631: + case 638: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3274 +//line sql.y:3289 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 632: + case 639: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3278 +//line sql.y:3293 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 633: + case 640: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3284 +//line sql.y:3299 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 634: + case 641: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3289 +//line sql.y:3304 { yyVAL.indexHints = nil } - case 635: + case 642: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3293 +//line sql.y:3308 { yyVAL.indexHints = &IndexHints{Type: UseOp, Indexes: yyDollar[4].columns} } - case 636: + case 643: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3297 +//line sql.y:3312 { yyVAL.indexHints = &IndexHints{Type: UseOp} } - case 637: + case 644: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3301 +//line sql.y:3316 { yyVAL.indexHints = &IndexHints{Type: IgnoreOp, Indexes: yyDollar[4].columns} } - case 638: + case 645: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3305 +//line sql.y:3320 { yyVAL.indexHints = &IndexHints{Type: ForceOp, Indexes: yyDollar[4].columns} } - case 639: + case 646: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3310 +//line sql.y:3325 { yyVAL.expr = nil } - case 640: + case 647: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3314 +//line sql.y:3329 { yyVAL.expr = yyDollar[2].expr } - case 641: + case 648: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3320 +//line sql.y:3335 { yyVAL.expr = yyDollar[1].expr } - case 642: + case 649: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3324 +//line sql.y:3339 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 643: + case 650: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3328 +//line sql.y:3343 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 644: + case 651: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3332 +//line sql.y:3347 { yyVAL.expr = &XorExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 645: + case 652: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3336 +//line sql.y:3351 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 646: + case 653: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3340 +//line sql.y:3355 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].isExprOperator, Expr: yyDollar[1].expr} } - case 647: + case 654: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3344 +//line sql.y:3359 { yyVAL.expr = yyDollar[1].expr } - case 648: + case 655: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3348 +//line sql.y:3363 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 649: + case 656: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3354 +//line sql.y:3369 { yyVAL.str = "" } - case 650: + case 657: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3358 +//line sql.y:3373 { yyVAL.str = string(yyDollar[2].colIdent.String()) } - case 651: + case 658: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3364 +//line sql.y:3379 { yyVAL.boolVal = BoolVal(true) } - case 652: + case 659: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3368 +//line sql.y:3383 { yyVAL.boolVal = BoolVal(false) } - case 653: + case 660: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3374 +//line sql.y:3389 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].comparisonExprOperator, Right: yyDollar[3].expr} } - case 654: + case 661: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3378 +//line sql.y:3393 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InOp, Right: yyDollar[3].colTuple} } - case 655: + case 662: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3382 +//line sql.y:3397 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInOp, Right: yyDollar[4].colTuple} } - case 656: + case 663: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3386 +//line sql.y:3401 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeOp, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 657: + case 664: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3390 +//line sql.y:3405 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeOp, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 658: + case 665: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3394 +//line sql.y:3409 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpOp, Right: yyDollar[3].expr} } - case 659: + case 666: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3398 +//line sql.y:3413 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpOp, Right: yyDollar[4].expr} } - case 660: + case 667: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3402 +//line sql.y:3417 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenOp, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 661: + case 668: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3406 +//line sql.y:3421 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenOp, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 662: + case 669: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3410 +//line sql.y:3425 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 663: + case 670: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3416 +//line sql.y:3431 { yyVAL.isExprOperator = IsNullOp } - case 664: + case 671: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3420 +//line sql.y:3435 { yyVAL.isExprOperator = IsNotNullOp } - case 665: + case 672: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3424 +//line sql.y:3439 { yyVAL.isExprOperator = IsTrueOp } - case 666: + case 673: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3428 +//line sql.y:3443 { yyVAL.isExprOperator = IsNotTrueOp } - case 667: + case 674: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3432 +//line sql.y:3447 { yyVAL.isExprOperator = IsFalseOp } - case 668: + case 675: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3436 +//line sql.y:3451 { yyVAL.isExprOperator = IsNotFalseOp } - case 669: + case 676: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3442 +//line sql.y:3457 { yyVAL.comparisonExprOperator = EqualOp } - case 670: + case 677: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3446 +//line sql.y:3461 { yyVAL.comparisonExprOperator = LessThanOp } - case 671: + case 678: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3450 +//line sql.y:3465 { yyVAL.comparisonExprOperator = GreaterThanOp } - case 672: + case 679: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3454 +//line sql.y:3469 { yyVAL.comparisonExprOperator = LessEqualOp } - case 673: + case 680: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3458 +//line sql.y:3473 { yyVAL.comparisonExprOperator = GreaterEqualOp } - case 674: + case 681: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3462 +//line sql.y:3477 { yyVAL.comparisonExprOperator = NotEqualOp } - case 675: + case 682: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3466 +//line sql.y:3481 { yyVAL.comparisonExprOperator = NullSafeEqualOp } - case 676: + case 683: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3471 +//line sql.y:3486 { yyVAL.expr = nil } - case 677: + case 684: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3475 +//line sql.y:3490 { yyVAL.expr = yyDollar[2].expr } - case 678: + case 685: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3481 +//line sql.y:3496 { yyVAL.colTuple = yyDollar[1].valTuple } - case 679: + case 686: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3485 +//line sql.y:3500 { yyVAL.colTuple = yyDollar[1].subquery } - case 680: + case 687: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3489 +//line sql.y:3504 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 681: + case 688: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3495 +//line sql.y:3510 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 682: + case 689: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3501 +//line sql.y:3516 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 683: + case 690: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3505 +//line sql.y:3520 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 684: + case 691: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3511 +//line sql.y:3526 { yyVAL.expr = yyDollar[1].expr } - case 685: + case 692: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3515 +//line sql.y:3530 { yyVAL.expr = yyDollar[1].boolVal } - case 686: + case 693: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3519 +//line sql.y:3534 { yyVAL.expr = yyDollar[1].colName } - case 687: + case 694: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3523 +//line sql.y:3538 { yyVAL.expr = yyDollar[1].expr } - case 688: + case 695: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3527 +//line sql.y:3542 { yyVAL.expr = yyDollar[1].subquery } - case 689: + case 696: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3531 +//line sql.y:3546 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndOp, Right: yyDollar[3].expr} } - case 690: + case 697: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3535 +//line sql.y:3550 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrOp, Right: yyDollar[3].expr} } - case 691: + case 698: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3539 +//line sql.y:3554 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorOp, Right: yyDollar[3].expr} } - case 692: + case 699: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3543 +//line sql.y:3558 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusOp, Right: yyDollar[3].expr} } - case 693: + case 700: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3547 +//line sql.y:3562 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusOp, Right: yyDollar[3].expr} } - case 694: + case 701: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3551 +//line sql.y:3566 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultOp, Right: yyDollar[3].expr} } - case 695: + case 702: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3555 +//line sql.y:3570 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivOp, Right: yyDollar[3].expr} } - case 696: + case 703: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3559 +//line sql.y:3574 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivOp, Right: yyDollar[3].expr} } - case 697: + case 704: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3563 +//line sql.y:3578 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } - case 698: + case 705: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3567 +//line sql.y:3582 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } - case 699: + case 706: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3571 +//line sql.y:3586 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftOp, Right: yyDollar[3].expr} } - case 700: + case 707: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3575 +//line sql.y:3590 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightOp, Right: yyDollar[3].expr} } - case 701: + case 708: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3579 +//line sql.y:3594 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } - case 702: + case 709: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3583 +//line sql.y:3598 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } - case 703: + case 710: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3587 +//line sql.y:3602 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } - case 704: + case 711: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3591 +//line sql.y:3606 { yyVAL.expr = &UnaryExpr{Operator: BinaryOp, Expr: yyDollar[2].expr} } - case 705: + case 712: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3595 +//line sql.y:3610 { yyVAL.expr = &UnaryExpr{Operator: UBinaryOp, Expr: yyDollar[2].expr} } - case 706: + case 713: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3599 +//line sql.y:3614 { yyVAL.expr = &UnaryExpr{Operator: Utf8Op, Expr: yyDollar[2].expr} } - case 707: + case 714: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3603 +//line sql.y:3618 { yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Op, Expr: yyDollar[2].expr} } - case 708: + case 715: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3607 +//line sql.y:3622 { yyVAL.expr = &UnaryExpr{Operator: Latin1Op, Expr: yyDollar[2].expr} } - case 709: + case 716: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3611 +//line sql.y:3626 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { yyVAL.expr = num @@ -9480,9 +9523,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusOp, Expr: yyDollar[2].expr} } } - case 710: + case 717: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3619 +//line sql.y:3634 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { // Handle double negative @@ -9496,21 +9539,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].expr} } } - case 711: + case 718: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3633 +//line sql.y:3648 { yyVAL.expr = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].expr} } - case 712: + case 719: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3637 +//line sql.y:3652 { yyVAL.expr = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].expr} } - case 713: + case 720: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3641 +//line sql.y:3656 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -9518,503 +9561,503 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 718: + case 725: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3659 +//line sql.y:3674 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 719: + case 726: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3663 +//line sql.y:3678 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 720: + case 727: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3667 +//line sql.y:3682 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 721: + case 728: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3671 +//line sql.y:3686 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 722: + case 729: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3681 +//line sql.y:3696 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } - case 723: + case 730: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3685 +//line sql.y:3700 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } - case 724: + case 731: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3689 +//line sql.y:3704 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 725: + case 732: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3693 +//line sql.y:3708 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 726: + case 733: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3697 +//line sql.y:3712 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 727: + case 734: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3701 +//line sql.y:3716 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 728: + case 735: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3705 +//line sql.y:3720 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 729: + case 736: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3709 +//line sql.y:3724 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 730: + case 737: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3713 +//line sql.y:3728 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 731: + case 738: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:3717 +//line sql.y:3732 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].matchExprOption} } - case 732: + case 739: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3721 +//line sql.y:3736 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].boolean, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit} } - case 733: + case 740: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3725 +//line sql.y:3740 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 734: + case 741: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3729 +//line sql.y:3744 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } - case 735: + case 742: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3739 +//line sql.y:3754 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } - case 736: + case 743: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3743 +//line sql.y:3758 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } - case 737: + case 744: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3747 +//line sql.y:3762 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } - case 738: + case 745: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3752 +//line sql.y:3767 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } - case 739: + case 746: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3757 +//line sql.y:3772 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } - case 740: + case 747: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3762 +//line sql.y:3777 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } - case 741: + case 748: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3768 +//line sql.y:3783 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } - case 742: + case 749: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3773 +//line sql.y:3788 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 743: + case 750: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3778 +//line sql.y:3793 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} } - case 744: + case 751: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3782 +//line sql.y:3797 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} } - case 745: + case 752: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3786 +//line sql.y:3801 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} } - case 746: + case 753: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3791 +//line sql.y:3806 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} } - case 747: + case 754: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3796 +//line sql.y:3811 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} } - case 748: + case 755: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3801 +//line sql.y:3816 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} } - case 749: + case 756: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3805 +//line sql.y:3820 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 750: + case 757: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3809 +//line sql.y:3824 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 753: + case 760: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3819 +//line sql.y:3834 { yyVAL.expr = yyDollar[2].expr } - case 754: + case 761: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3829 +//line sql.y:3844 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 755: + case 762: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3833 +//line sql.y:3848 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 756: + case 763: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3837 +//line sql.y:3852 { yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} } - case 757: + case 764: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3841 +//line sql.y:3856 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 758: + case 765: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3845 +//line sql.y:3860 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 759: + case 766: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3849 +//line sql.y:3864 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } - case 760: + case 767: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3853 +//line sql.y:3868 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } - case 761: + case 768: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3859 +//line sql.y:3874 { yyVAL.matchExprOption = NoOption } - case 762: + case 769: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3863 +//line sql.y:3878 { yyVAL.matchExprOption = BooleanModeOpt } - case 763: + case 770: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3867 +//line sql.y:3882 { yyVAL.matchExprOption = NaturalLanguageModeOpt } - case 764: + case 771: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3871 +//line sql.y:3886 { yyVAL.matchExprOption = NaturalLanguageModeWithQueryExpansionOpt } - case 765: + case 772: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3875 +//line sql.y:3890 { yyVAL.matchExprOption = QueryExpansionOpt } - case 766: + case 773: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3881 +//line sql.y:3896 { yyVAL.str = string(yyDollar[1].colIdent.String()) } - case 767: + case 774: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3885 +//line sql.y:3900 { yyVAL.str = string(yyDollar[1].bytes) } - case 768: + case 775: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3889 +//line sql.y:3904 { yyVAL.str = string(yyDollar[1].bytes) } - case 769: + case 776: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3895 +//line sql.y:3910 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 770: + case 777: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3899 +//line sql.y:3914 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Operator: CharacterSetOp} } - case 771: + case 778: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3903 +//line sql.y:3918 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: string(yyDollar[3].colIdent.String())} } - case 772: + case 779: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3907 +//line sql.y:3922 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 773: + case 780: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3911 +//line sql.y:3926 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 774: + case 781: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3915 +//line sql.y:3930 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 775: + case 782: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3921 +//line sql.y:3936 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 776: + case 783: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3925 +//line sql.y:3940 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 777: + case 784: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3929 +//line sql.y:3944 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 778: + case 785: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3933 +//line sql.y:3948 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 779: + case 786: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3937 +//line sql.y:3952 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 780: + case 787: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3941 +//line sql.y:3956 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 781: + case 788: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3945 +//line sql.y:3960 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 782: + case 789: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3950 +//line sql.y:3965 { yyVAL.expr = nil } - case 783: + case 790: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3954 +//line sql.y:3969 { yyVAL.expr = yyDollar[1].expr } - case 784: + case 791: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3959 +//line sql.y:3974 { yyVAL.str = string("") } - case 785: + case 792: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3963 +//line sql.y:3978 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 786: + case 793: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3969 +//line sql.y:3984 { yyVAL.whens = []*When{yyDollar[1].when} } - case 787: + case 794: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3973 +//line sql.y:3988 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 788: + case 795: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3979 +//line sql.y:3994 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 789: + case 796: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3984 +//line sql.y:3999 { yyVAL.expr = nil } - case 790: + case 797: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3988 +//line sql.y:4003 { yyVAL.expr = yyDollar[2].expr } - case 791: + case 798: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3994 +//line sql.y:4009 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 792: + case 799: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3998 +//line sql.y:4013 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 793: + case 800: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4002 +//line sql.y:4017 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 794: + case 801: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4008 +//line sql.y:4023 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } - case 795: + case 802: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4012 +//line sql.y:4027 { yyVAL.expr = NewHexLiteral(yyDollar[1].bytes) } - case 796: + case 803: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4016 +//line sql.y:4031 { yyVAL.expr = NewBitLiteral(yyDollar[1].bytes) } - case 797: + case 804: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4020 +//line sql.y:4035 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } - case 798: + case 805: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4024 +//line sql.y:4039 { yyVAL.expr = NewFloatLiteral(yyDollar[1].bytes) } - case 799: + case 806: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4028 +//line sql.y:4043 { yyVAL.expr = NewHexNumLiteral(yyDollar[1].bytes) } - case 800: + case 807: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4032 +//line sql.y:4047 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } - case 801: + case 808: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4036 +//line sql.y:4051 { yyVAL.expr = &NullVal{} } - case 802: + case 809: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4042 +//line sql.y:4057 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -10023,597 +10066,597 @@ yydefault: } yyVAL.expr = NewIntLiteral([]byte("1")) } - case 803: + case 810: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4051 +//line sql.y:4066 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } - case 804: + case 811: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4055 +//line sql.y:4070 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } - case 805: + case 812: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4060 +//line sql.y:4075 { yyVAL.exprs = nil } - case 806: + case 813: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4064 +//line sql.y:4079 { yyVAL.exprs = yyDollar[3].exprs } - case 807: + case 814: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4069 +//line sql.y:4084 { yyVAL.expr = nil } - case 808: + case 815: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4073 +//line sql.y:4088 { yyVAL.expr = yyDollar[2].expr } - case 809: + case 816: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4078 +//line sql.y:4093 { yyVAL.orderBy = nil } - case 810: + case 817: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4082 +//line sql.y:4097 { yyVAL.orderBy = yyDollar[3].orderBy } - case 811: + case 818: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4088 +//line sql.y:4103 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 812: + case 819: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4092 +//line sql.y:4107 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 813: + case 820: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4098 +//line sql.y:4113 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].orderDirection} } - case 814: + case 821: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4103 +//line sql.y:4118 { yyVAL.orderDirection = AscOrder } - case 815: + case 822: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4107 +//line sql.y:4122 { yyVAL.orderDirection = AscOrder } - case 816: + case 823: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4111 +//line sql.y:4126 { yyVAL.orderDirection = DescOrder } - case 817: + case 824: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4116 +//line sql.y:4131 { yyVAL.limit = nil } - case 818: + case 825: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4120 +//line sql.y:4135 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 819: + case 826: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4124 +//line sql.y:4139 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 820: + case 827: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4128 +//line sql.y:4143 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 821: + case 828: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4133 +//line sql.y:4148 { yyVAL.alterOptions = nil } - case 822: + case 829: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4137 +//line sql.y:4152 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption, yyDollar[2].alterOption} } - case 823: + case 830: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4141 +//line sql.y:4156 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption, yyDollar[2].alterOption} } - case 824: + case 831: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4145 +//line sql.y:4160 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } - case 825: + case 832: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4149 +//line sql.y:4164 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } - case 826: + case 833: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4156 +//line sql.y:4171 { yyVAL.alterOption = &LockOption{Type: DefaultType} } - case 827: + case 834: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4160 +//line sql.y:4175 { yyVAL.alterOption = &LockOption{Type: NoneType} } - case 828: + case 835: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4164 +//line sql.y:4179 { yyVAL.alterOption = &LockOption{Type: SharedType} } - case 829: + case 836: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4168 +//line sql.y:4183 { yyVAL.alterOption = &LockOption{Type: ExclusiveType} } - case 830: + case 837: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4174 +//line sql.y:4189 { yyVAL.alterOption = AlgorithmValue(yyDollar[3].bytes) } - case 831: + case 838: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4178 +//line sql.y:4193 { yyVAL.alterOption = AlgorithmValue(yyDollar[3].bytes) } - case 832: + case 839: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4182 +//line sql.y:4197 { yyVAL.alterOption = AlgorithmValue(yyDollar[3].bytes) } - case 833: + case 840: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4187 +//line sql.y:4202 { yyVAL.str = "" } - case 834: + case 841: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4191 +//line sql.y:4206 { yyVAL.str = string(yyDollar[3].bytes) } - case 835: + case 842: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4195 +//line sql.y:4210 { yyVAL.str = string(yyDollar[3].bytes) } - case 836: + case 843: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4199 +//line sql.y:4214 { yyVAL.str = string(yyDollar[3].bytes) } - case 837: + case 844: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4204 +//line sql.y:4219 { yyVAL.str = "" } - case 838: + case 845: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4208 +//line sql.y:4223 { yyVAL.str = yyDollar[3].str } - case 839: + case 846: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4214 +//line sql.y:4229 { yyVAL.str = string(yyDollar[1].bytes) } - case 840: + case 847: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4218 +//line sql.y:4233 { yyVAL.str = string(yyDollar[1].bytes) } - case 841: + case 848: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4223 +//line sql.y:4238 { yyVAL.str = "" } - case 842: + case 849: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4227 +//line sql.y:4242 { yyVAL.str = yyDollar[2].str } - case 843: + case 850: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4232 +//line sql.y:4247 { yyVAL.str = "cascaded" } - case 844: + case 851: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4236 +//line sql.y:4251 { yyVAL.str = string(yyDollar[1].bytes) } - case 845: + case 852: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4240 +//line sql.y:4255 { yyVAL.str = string(yyDollar[1].bytes) } - case 846: + case 853: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4245 +//line sql.y:4260 { yyVAL.str = "" } - case 847: + case 854: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4249 +//line sql.y:4264 { yyVAL.str = yyDollar[3].str } - case 848: + case 855: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4255 +//line sql.y:4270 { yyVAL.str = string(yyDollar[1].bytes) } - case 849: + case 856: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4259 +//line sql.y:4274 { yyVAL.str = string(yyDollar[1].bytes) } - case 850: + case 857: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4263 +//line sql.y:4278 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'@" + string(yyDollar[2].bytes) } - case 851: + case 858: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4267 +//line sql.y:4282 { yyVAL.str = string(yyDollar[1].bytes) } - case 852: + case 859: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4272 +//line sql.y:4287 { yyVAL.lock = NoLock } - case 853: + case 860: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4276 +//line sql.y:4291 { yyVAL.lock = ForUpdateLock } - case 854: + case 861: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4280 +//line sql.y:4295 { yyVAL.lock = ShareModeLock } - case 855: + case 862: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4285 +//line sql.y:4300 { yyVAL.selectInto = nil } - case 856: + case 863: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:4289 +//line sql.y:4304 { yyVAL.selectInto = &SelectInto{Type: IntoOutfileS3, FileName: string(yyDollar[4].bytes), Charset: yyDollar[5].str, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str} } - case 857: + case 864: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4293 +//line sql.y:4308 { yyVAL.selectInto = &SelectInto{Type: IntoDumpfile, FileName: string(yyDollar[3].bytes), Charset: "", FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} } - case 858: + case 865: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4297 +//line sql.y:4312 { yyVAL.selectInto = &SelectInto{Type: IntoOutfile, FileName: string(yyDollar[3].bytes), Charset: yyDollar[4].str, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} } - case 859: + case 866: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4302 +//line sql.y:4317 { yyVAL.str = "" } - case 860: + case 867: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4306 +//line sql.y:4321 { yyVAL.str = " format csv" + yyDollar[3].str } - case 861: + case 868: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4310 +//line sql.y:4325 { yyVAL.str = " format text" + yyDollar[3].str } - case 862: + case 869: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4315 +//line sql.y:4330 { yyVAL.str = "" } - case 863: + case 870: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4319 +//line sql.y:4334 { yyVAL.str = " header" } - case 864: + case 871: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4324 +//line sql.y:4339 { yyVAL.str = "" } - case 865: + case 872: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4328 +//line sql.y:4343 { yyVAL.str = " manifest on" } - case 866: + case 873: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4332 +//line sql.y:4347 { yyVAL.str = " manifest off" } - case 867: + case 874: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4337 +//line sql.y:4352 { yyVAL.str = "" } - case 868: + case 875: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4341 +//line sql.y:4356 { yyVAL.str = " overwrite on" } - case 869: + case 876: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4345 +//line sql.y:4360 { yyVAL.str = " overwrite off" } - case 870: + case 877: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4351 +//line sql.y:4366 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 871: + case 878: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4356 +//line sql.y:4371 { yyVAL.str = "" } - case 872: + case 879: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4360 +//line sql.y:4375 { yyVAL.str = " lines" + yyDollar[2].str + yyDollar[3].str } - case 873: + case 880: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4365 +//line sql.y:4380 { yyVAL.str = "" } - case 874: + case 881: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4369 +//line sql.y:4384 { yyVAL.str = " starting by '" + string(yyDollar[3].bytes) + "'" } - case 875: + case 882: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4374 +//line sql.y:4389 { yyVAL.str = "" } - case 876: + case 883: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4378 +//line sql.y:4393 { yyVAL.str = " terminated by '" + string(yyDollar[3].bytes) + "'" } - case 877: + case 884: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4383 +//line sql.y:4398 { yyVAL.str = "" } - case 878: + case 885: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4387 +//line sql.y:4402 { yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str + yyDollar[3].str + yyDollar[4].str } - case 879: + case 886: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4392 +//line sql.y:4407 { yyVAL.str = "" } - case 880: + case 887: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4396 +//line sql.y:4411 { yyVAL.str = " escaped by '" + string(yyDollar[3].bytes) + "'" } - case 881: + case 888: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4401 +//line sql.y:4416 { yyVAL.str = "" } - case 882: + case 889: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4405 +//line sql.y:4420 { yyVAL.str = yyDollar[1].str + " enclosed by '" + string(yyDollar[4].bytes) + "'" } - case 883: + case 890: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4410 +//line sql.y:4425 { yyVAL.str = "" } - case 884: + case 891: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4414 +//line sql.y:4429 { yyVAL.str = " optionally" } - case 885: + case 892: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4427 +//line sql.y:4442 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 886: + case 893: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4431 +//line sql.y:4446 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 887: + case 894: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4435 +//line sql.y:4450 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 888: + case 895: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4439 +//line sql.y:4454 { yyVAL.ins = &Insert{Rows: yyDollar[4].values} } - case 889: + case 896: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4443 +//line sql.y:4458 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 890: + case 897: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4449 +//line sql.y:4464 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 891: + case 898: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4453 +//line sql.y:4468 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 892: + case 899: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4457 +//line sql.y:4472 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 893: + case 900: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4461 +//line sql.y:4476 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 894: + case 901: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4466 +//line sql.y:4481 { yyVAL.updateExprs = nil } - case 895: + case 902: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4470 +//line sql.y:4485 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 896: + case 903: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4476 +//line sql.y:4491 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 897: + case 904: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4480 +//line sql.y:4495 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 898: + case 905: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4486 +//line sql.y:4501 { yyVAL.valTuple = yyDollar[1].valTuple } - case 899: + case 906: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4490 +//line sql.y:4505 { yyVAL.valTuple = ValTuple{} } - case 900: + case 907: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4496 +//line sql.y:4511 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 901: + case 908: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4502 +//line sql.y:4517 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = yyDollar[1].valTuple[0] @@ -10621,265 +10664,253 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 902: + case 909: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4512 +//line sql.y:4527 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 903: + case 910: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4516 +//line sql.y:4531 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 904: + case 911: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4522 +//line sql.y:4537 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 905: + case 912: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4528 +//line sql.y:4543 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 906: + case 913: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4532 +//line sql.y:4547 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 907: + case 914: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4538 +//line sql.y:4553 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("on"))} } - case 908: + case 915: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4542 +//line sql.y:4557 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("off"))} } - case 909: + case 916: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4546 +//line sql.y:4561 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: yyDollar[3].expr} } - case 910: + case 917: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4550 +//line sql.y:4565 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Scope: ImplicitScope, Expr: yyDollar[2].expr} } - case 911: + case 918: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4554 +//line sql.y:4569 { yyDollar[2].setExpr.Scope = yyDollar[1].scope yyVAL.setExpr = yyDollar[2].setExpr } - case 913: + case 920: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4562 +//line sql.y:4577 { yyVAL.bytes = []byte("charset") } - case 916: + case 923: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4572 +//line sql.y:4587 { yyVAL.expr = NewStrLiteral([]byte(yyDollar[1].colIdent.String())) } - case 917: + case 924: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4576 +//line sql.y:4591 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } - case 918: + case 925: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4580 +//line sql.y:4595 { yyVAL.expr = &Default{} } - case 921: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4589 - { - yyVAL.boolean = false - } - case 922: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4591 - { - yyVAL.boolean = true - } - case 923: + case 928: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4594 +//line sql.y:4604 { yyVAL.boolean = false } - case 924: + case 929: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4596 +//line sql.y:4606 { yyVAL.boolean = true } - case 925: + case 930: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4599 +//line sql.y:4609 { yyVAL.boolean = false } - case 926: + case 931: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4601 +//line sql.y:4611 { yyVAL.boolean = true } - case 927: + case 932: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4604 +//line sql.y:4614 { yyVAL.ignore = false } - case 928: + case 933: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4606 +//line sql.y:4616 { yyVAL.ignore = true } - case 929: + case 934: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4609 +//line sql.y:4619 { yyVAL.empty = struct{}{} } - case 930: + case 935: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4611 +//line sql.y:4621 { yyVAL.empty = struct{}{} } - case 931: + case 936: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4613 +//line sql.y:4623 { yyVAL.empty = struct{}{} } - case 932: + case 937: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4617 +//line sql.y:4627 { yyVAL.statement = &CallProc{Name: yyDollar[2].tableName, Params: yyDollar[4].exprs} } - case 933: + case 938: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4622 +//line sql.y:4632 { yyVAL.exprs = nil } - case 934: + case 939: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4626 +//line sql.y:4636 { yyVAL.exprs = yyDollar[1].exprs } - case 935: + case 940: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4631 +//line sql.y:4641 { yyVAL.indexOptions = nil } - case 936: + case 941: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4633 +//line sql.y:4643 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } - case 937: + case 942: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4637 +//line sql.y:4647 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[2].colIdent.String())} } - case 938: + case 943: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4643 +//line sql.y:4653 { yyVAL.colIdent = yyDollar[1].colIdent } - case 939: + case 944: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4647 +//line sql.y:4657 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 941: + case 946: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4654 +//line sql.y:4664 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 942: + case 947: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4660 +//line sql.y:4670 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) } - case 943: + case 948: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4664 +//line sql.y:4674 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 945: + case 950: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4671 +//line sql.y:4681 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 1340: + case 1346: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5090 +//line sql.y:5101 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 1341: + case 1347: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5099 +//line sql.y:5110 { decNesting(yylex) } - case 1342: + case 1348: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5104 +//line sql.y:5115 { skipToEnd(yylex) } - case 1343: + case 1349: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5109 +//line sql.y:5120 { skipToEnd(yylex) } - case 1344: + case 1350: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5113 +//line sql.y:5124 { skipToEnd(yylex) } - case 1345: + case 1351: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5117 +//line sql.y:5128 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index b0945212f4f..2e7aac08f17 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -221,7 +221,7 @@ func skipToEnd(yylex interface{}) { // SHOW tokens %token COLLATION DATABASES SCHEMAS TABLES VITESS_METADATA VSCHEMA FULL PROCESSLIST COLUMNS FIELDS ENGINES PLUGINS EXTENDED -%token KEYSPACES VITESS_KEYSPACES VITESS_SHARDS VITESS_TABLETS CODE PRIVILEGES FUNCTION +%token KEYSPACES VITESS_KEYSPACES VITESS_SHARDS VITESS_TABLETS CODE PRIVILEGES FUNCTION OPEN TRIGGERS // SET tokens %token NAMES CHARSET GLOBAL SESSION ISOLATION LEVEL READ WRITE ONLY REPEATABLE COMMITTED UNCOMMITTED SERIALIZABLE @@ -347,7 +347,7 @@ func skipToEnd(yylex interface{}) { %type for_from %type default_opt %type ignore_opt -%type full_opt from_database_opt tables_or_processlist columns_or_fields extended_opt storage_opt +%type full_opt from_database_opt columns_or_fields extended_opt storage_opt %type like_or_where_opt like_opt %type exists_opt not_exists_opt enforced_opt temp_opt %type to_opt @@ -2340,6 +2340,10 @@ show_statement: { $$ = &Show{&ShowBasic{Command: Function, Filter: $4}} } +| SHOW OPEN TABLES from_database_opt like_or_where_opt + { + $$ = &Show{&ShowBasic{Command: OpenTable, DbName:$4, Filter: $5}} + } | SHOW PRIVILEGES { $$ = &Show{&ShowBasic{Command: Privilege}} @@ -2366,7 +2370,19 @@ show_statement: } | SHOW TABLE STATUS from_database_opt like_or_where_opt { - $$ = &Show{&ShowTableStatus{DatabaseName:$4, Filter:$5}} + $$ = &Show{&ShowBasic{Command: TableStatus, DbName:$4, Filter: $5}} + } +| SHOW TABLES from_database_opt like_or_where_opt + { + $$ = &Show{&ShowBasic{Command: Table, DbName:$3, Filter: $4}} + } +| SHOW FULL TABLES from_database_opt like_or_where_opt + { + $$ = &Show{&ShowBasic{Command: TableFull, DbName:$4, Filter: $5}} + } +| SHOW TRIGGERS from_database_opt like_or_where_opt + { + $$ = &Show{&ShowBasic{Command: Trigger, DbName:$3, Filter: $4}} } | SHOW full_opt columns_or_fields from_or_in table_name from_database_opt like_or_where_opt { @@ -2430,15 +2446,9 @@ show_statement: { $$ = &Show{&ShowLegacy{Type: string($2) + " " + string($3), Table: $4, Scope: ImplicitScope}} } -| SHOW full_opt tables_or_processlist from_database_opt like_or_where_opt +| SHOW full_opt PROCESSLIST from_database_opt like_or_where_opt { - // this is ugly, but I couldn't find a better way for now - if $3 == "processlist" { - $$ = &Show{&ShowLegacy{Type: $3, Scope: ImplicitScope}} - } else { - showTablesOpt := &ShowTablesOpt{Full:$2, DbName:$4, Filter:$5} - $$ = &Show{&ShowLegacy{Type: $3, ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} - } + $$ = &Show{&ShowLegacy{Type: string($3), Scope: ImplicitScope}} } | SHOW VITESS_METADATA VARIABLES like_opt { @@ -2489,16 +2499,6 @@ show_statement: $$ = &Show{&ShowLegacy{Type: string($2), Scope: ImplicitScope}} } -tables_or_processlist: - TABLES - { - $$ = string($1) - } -| PROCESSLIST - { - $$ = string($1) - } - vitess_topo: VITESS_TABLETS { @@ -4969,6 +4969,7 @@ non_reserved_keyword: | OFFSET | OJ | OLD +| OPEN | OPTION | OPTIONAL | OPTIONALLY @@ -5057,6 +5058,7 @@ non_reserved_keyword: | TRANSACTION | TREE | TRIGGER +| TRIGGERS | TRUNCATE | UNBOUNDED | UNCOMMITTED diff --git a/go/vt/sqlparser/token.go b/go/vt/sqlparser/token.go index c5ea3b13def..b067d7aaaea 100644 --- a/go/vt/sqlparser/token.go +++ b/go/vt/sqlparser/token.go @@ -336,6 +336,7 @@ var keywords = map[string]int{ "offset": OFFSET, "on": ON, "only": ONLY, + "open": OPEN, "optimize": OPTIMIZE, "optimizer_costs": OPTIMIZER_COSTS, "option": OPTION, @@ -452,6 +453,7 @@ var keywords = map[string]int{ "tree": TREE, "traditional": TRADITIONAL, "trigger": TRIGGER, + "triggers": TRIGGERS, "true": TRUE, "truncate": TRUNCATE, "uncommitted": UNCOMMITTED, From ec552f98f28edbae8ad978b1767a1e2fb2466735 Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Wed, 10 Feb 2021 01:34:33 +0530 Subject: [PATCH 02/15] added show plan for show commands with dbname Signed-off-by: Harshit Gangal --- go/vt/vtgate/executor_test.go | 2 +- go/vt/vtgate/planbuilder/show.go | 112 ++++++++++++++++--------------- 2 files changed, 59 insertions(+), 55 deletions(-) diff --git a/go/vt/vtgate/executor_test.go b/go/vt/vtgate/executor_test.go index a1c7c4819d2..2878074bef8 100644 --- a/go/vt/vtgate/executor_test.go +++ b/go/vt/vtgate/executor_test.go @@ -460,7 +460,7 @@ func TestExecutorShow(t *testing.T) { require.NoError(t, err) _, err = executor.Execute(ctx, "TestExecute", session, "show tables", nil) - assert.EqualError(t, err, errNoKeyspace.Error(), "'show tables' should fail without a keyspace") + assert.EqualError(t, err, "keyspace not specified", "'show tables' should fail without a keyspace") assert.Empty(t, sbclookup.Queries, "sbclookup unexpectedly has queries already") showResults := &sqltypes.Result{ diff --git a/go/vt/vtgate/planbuilder/show.go b/go/vt/vtgate/planbuilder/show.go index 50a1ded109b..4aec5e57889 100644 --- a/go/vt/vtgate/planbuilder/show.go +++ b/go/vt/vtgate/planbuilder/show.go @@ -43,8 +43,6 @@ func buildShowPlan(stmt *sqlparser.Show, vschema ContextVSchema) (engine.Primiti return buildShowBasicPlan(show, vschema) case *sqlparser.ShowColumns: return buildShowColumnsPlan(show, vschema) - case *sqlparser.ShowTableStatus: - return buildShowTableStatusPlan(show, vschema) default: return nil, ErrPlanNotSupported } @@ -53,43 +51,14 @@ func buildShowPlan(stmt *sqlparser.Show, vschema ContextVSchema) (engine.Primiti func buildShowBasicPlan(show *sqlparser.ShowBasic, vschema ContextVSchema) (engine.Primitive, error) { switch show.Command { case sqlparser.Charset: - return showCharset(show) + return buildCharsetPlan(show) case sqlparser.Collation, sqlparser.Function, sqlparser.Privilege, sqlparser.Procedure, sqlparser.VariableGlobal, sqlparser.VariableSession: - return showSendAnywhere(show, vschema) + return buildSendAnywherePlan(show, vschema) case sqlparser.Database, sqlparser.Keyspace: - ks, err := vschema.AllKeyspace() - if err != nil { - return nil, err - } - - var filter *regexp.Regexp - - if show.Filter != nil { - filter = sqlparser.LikeToRegexp(show.Filter.Like) - } - - if filter == nil { - filter = regexp.MustCompile(".*") - } - - //rows := make([][]sqltypes.Value, 0, len(ks)+4) - var rows [][]sqltypes.Value - - if show.Command == sqlparser.Database { - //Hard code default databases - rows = append(rows, buildVarCharRow("information_schema")) - rows = append(rows, buildVarCharRow("mysql")) - rows = append(rows, buildVarCharRow("sys")) - rows = append(rows, buildVarCharRow("performance_schema")) - } - - for _, v := range ks { - if filter.MatchString(v.Name) { - rows = append(rows, buildVarCharRow(v.Name)) - } - } - return engine.NewRowsPrimitive(rows, buildVarCharFields("Database")), nil + return buildDBPlan(show, vschema) + case sqlparser.OpenTable, sqlparser.TableStatus, sqlparser.Table, sqlparser.TableFull, sqlparser.Trigger: + return buildPlanWithDB(show, vschema) case sqlparser.StatusGlobal, sqlparser.StatusSession: return engine.NewRowsPrimitive(make([][]sqltypes.Value, 0, 2), buildVarCharFields("Variable_name", "Value")), nil } @@ -97,21 +66,7 @@ func buildShowBasicPlan(show *sqlparser.ShowBasic, vschema ContextVSchema) (engi } -func showSendAnywhere(show *sqlparser.ShowBasic, vschema ContextVSchema) (engine.Primitive, error) { - ks, err := vschema.FirstSortedKeyspace() - if err != nil { - return nil, err - } - return &engine.Send{ - Keyspace: ks, - TargetDestination: key.DestinationAnyShard{}, - Query: sqlparser.String(show), - IsDML: false, - SingleShardOnly: true, - }, nil -} - -func showCharset(show *sqlparser.ShowBasic) (engine.Primitive, error) { +func buildCharsetPlan(show *sqlparser.ShowBasic) (engine.Primitive, error) { fields := buildVarCharFields("Charset", "Description", "Default collation") maxLenField := &querypb.Field{Name: "Maxlen", Type: sqltypes.Int32} fields = append(fields, maxLenField) @@ -125,6 +80,20 @@ func showCharset(show *sqlparser.ShowBasic) (engine.Primitive, error) { return engine.NewRowsPrimitive(rows, fields), nil } +func buildSendAnywherePlan(show *sqlparser.ShowBasic, vschema ContextVSchema) (engine.Primitive, error) { + ks, err := vschema.FirstSortedKeyspace() + if err != nil { + return nil, err + } + return &engine.Send{ + Keyspace: ks, + TargetDestination: key.DestinationAnyShard{}, + Query: sqlparser.String(show), + IsDML: false, + SingleShardOnly: true, + }, nil +} + func buildShowColumnsPlan(show *sqlparser.ShowColumns, vschema ContextVSchema) (engine.Primitive, error) { if show.DbName != "" { show.Table.Qualifier = sqlparser.NewTableIdent(show.DbName) @@ -155,8 +124,43 @@ func buildShowColumnsPlan(show *sqlparser.ShowColumns, vschema ContextVSchema) ( } -func buildShowTableStatusPlan(show *sqlparser.ShowTableStatus, vschema ContextVSchema) (engine.Primitive, error) { - destination, keyspace, _, err := vschema.TargetDestination(show.DatabaseName) +func buildDBPlan(show *sqlparser.ShowBasic, vschema ContextVSchema) (engine.Primitive, error) { + ks, err := vschema.AllKeyspace() + if err != nil { + return nil, err + } + + var filter *regexp.Regexp + + if show.Filter != nil { + filter = sqlparser.LikeToRegexp(show.Filter.Like) + } + + if filter == nil { + filter = regexp.MustCompile(".*") + } + + //rows := make([][]sqltypes.Value, 0, len(ks)+4) + var rows [][]sqltypes.Value + + if show.Command == sqlparser.Database { + //Hard code default databases + rows = append(rows, buildVarCharRow("information_schema")) + rows = append(rows, buildVarCharRow("mysql")) + rows = append(rows, buildVarCharRow("sys")) + rows = append(rows, buildVarCharRow("performance_schema")) + } + + for _, v := range ks { + if filter.MatchString(v.Name) { + rows = append(rows, buildVarCharRow(v.Name)) + } + } + return engine.NewRowsPrimitive(rows, buildVarCharFields("Database")), nil +} + +func buildPlanWithDB(show *sqlparser.ShowBasic, vschema ContextVSchema) (engine.Primitive, error) { + destination, keyspace, _, err := vschema.TargetDestination(show.DbName) if err != nil { return nil, err } @@ -165,7 +169,7 @@ func buildShowTableStatusPlan(show *sqlparser.ShowTableStatus, vschema ContextVS } // Remove Database Name from the query. - show.DatabaseName = "" + show.DbName = "" query := sqlparser.String(show) return &engine.Send{ From 1e3b8794304e83a4d333c2d8ed18514b385ee869 Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Fri, 12 Feb 2021 10:07:38 +0530 Subject: [PATCH 03/15] use showBasic instead of showLegacy in tabletserver planner Signed-off-by: Harshit Gangal --- go/vt/vttablet/tabletserver/planbuilder/builder.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/go/vt/vttablet/tabletserver/planbuilder/builder.go b/go/vt/vttablet/tabletserver/planbuilder/builder.go index f2bdbec76ab..5224293bf04 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/builder.go +++ b/go/vt/vttablet/tabletserver/planbuilder/builder.go @@ -129,12 +129,13 @@ func analyzeInsert(ins *sqlparser.Insert, tables map[string]*schema.Table) (plan func analyzeShow(show *sqlparser.Show, dbName string) (plan *Plan, err error) { switch showInternal := show.Internal.(type) { - case *sqlparser.ShowLegacy: - if showInternal.Type == sqlparser.KeywordString(sqlparser.TABLES) { + case *sqlparser.ShowBasic: + switch showInternal.Command { + case sqlparser.Table, sqlparser.TableFull: // rewrite WHERE clause if it exists // `where Tables_in_Keyspace` => `where Tables_in_DbName` - if showInternal.ShowTablesOpt != nil && showInternal.ShowTablesOpt.Filter != nil { - filter := showInternal.ShowTablesOpt.Filter.Filter + if showInternal.Filter != nil { + filter := showInternal.Filter.Filter if filter != nil { sqlparser.Rewrite(filter, func(cursor *sqlparser.Cursor) bool { switch n := cursor.Node().(type) { From f44af7a1c3f917785f8178183138f5b0ec9ee6c7 Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Fri, 12 Feb 2021 12:42:32 +0530 Subject: [PATCH 04/15] use full_opt instead of command Signed-off-by: Harshit Gangal --- go/vt/sqlparser/ast.go | 14 +- go/vt/sqlparser/ast_funcs.go | 2 - go/vt/sqlparser/constants.go | 2 - go/vt/sqlparser/sql.go | 11137 ++++++++-------- go/vt/sqlparser/sql.y | 16 +- go/vt/vtgate/planbuilder/show.go | 2 +- .../tabletserver/planbuilder/builder.go | 2 +- 7 files changed, 5566 insertions(+), 5609 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 68efd46df1c..d8820c67b6d 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -1210,7 +1210,7 @@ type ( // ShowColumns is of ShowInternal type, holds the show columns statement. ShowColumns struct { - Full string + Full bool Table TableName DbName string Filter *ShowFilter @@ -1228,6 +1228,7 @@ type ( // ShowBasic is of ShowInternal type, holds Simple SHOW queries with a filter. ShowBasic struct { Command ShowCommandType + Full bool DbName string Filter *ShowFilter } @@ -2445,7 +2446,10 @@ func (node *Show) Format(buf *TrackedBuffer) { // Format formats the node. func (node *ShowColumns) Format(buf *TrackedBuffer) { - buf.astPrintf(node, "show %s", node.Full) + buf.WriteString("show ") + if node.Full { + buf.WriteString("full ") + } buf.astPrintf(node, "columns from %v", node.Table) buf.printIf(node.DbName != "", " from "+node.DbName) @@ -3159,7 +3163,11 @@ func (node *ShowTableStatus) Format(buf *TrackedBuffer) { // Format formats the node. func (node *ShowBasic) Format(buf *TrackedBuffer) { - buf.astPrintf(node, "show%s", node.Command.ToString()) + buf.WriteString("show") + if node.Full { + buf.WriteString(" full") + } + buf.astPrintf(node, "%s", node.Command.ToString()) if node.DbName != "" { buf.astPrintf(node, " from %s", node.DbName) } diff --git a/go/vt/sqlparser/ast_funcs.go b/go/vt/sqlparser/ast_funcs.go index 566cb1e4dff..a2cb204b517 100644 --- a/go/vt/sqlparser/ast_funcs.go +++ b/go/vt/sqlparser/ast_funcs.go @@ -1243,8 +1243,6 @@ func (ty ShowCommandType) ToString() string { return StatusSessionStr case Table: return TableStr - case TableFull: - return TableFullStr case TableStatus: return TableStatusStr case Trigger: diff --git a/go/vt/sqlparser/constants.go b/go/vt/sqlparser/constants.go index e3d77c87e18..11eaf3e71d7 100644 --- a/go/vt/sqlparser/constants.go +++ b/go/vt/sqlparser/constants.go @@ -220,7 +220,6 @@ const ( StatusGlobalStr = " global status" StatusSessionStr = " status" TableStr = " tables" - TableFullStr = " full tables" TableStatusStr = " table status" TriggerStr = " triggers" VariableGlobalStr = " global variables" @@ -465,7 +464,6 @@ const ( StatusGlobal StatusSession Table - TableFull TableStatus Trigger VariableGlobal diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index edfed9cfea4..ba4432713d7 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -136,6 +136,7 @@ type yySymType struct { tableOption *TableOption tableOptions TableOptions renameTablePairs []*RenameTablePair + columnTypeOptions *ColumnTypeOptions } const LEX_ERROR = 57346 @@ -336,252 +337,253 @@ const SQL = 57540 const UNDEFINED = 57541 const SEQUENCE = 57542 const MERGE = 57543 -const TEMPTABLE = 57544 -const INVOKER = 57545 -const SECURITY = 57546 -const FIRST = 57547 -const AFTER = 57548 -const LAST = 57549 -const BEGIN = 57550 -const START = 57551 -const TRANSACTION = 57552 -const COMMIT = 57553 -const ROLLBACK = 57554 -const SAVEPOINT = 57555 -const RELEASE = 57556 -const WORK = 57557 -const BIT = 57558 -const TINYINT = 57559 -const SMALLINT = 57560 -const MEDIUMINT = 57561 -const INT = 57562 -const INTEGER = 57563 -const BIGINT = 57564 -const INTNUM = 57565 -const REAL = 57566 -const DOUBLE = 57567 -const FLOAT_TYPE = 57568 -const DECIMAL = 57569 -const NUMERIC = 57570 -const TIME = 57571 -const TIMESTAMP = 57572 -const DATETIME = 57573 -const YEAR = 57574 -const CHAR = 57575 -const VARCHAR = 57576 -const BOOL = 57577 -const CHARACTER = 57578 -const VARBINARY = 57579 -const NCHAR = 57580 -const TEXT = 57581 -const TINYTEXT = 57582 -const MEDIUMTEXT = 57583 -const LONGTEXT = 57584 -const BLOB = 57585 -const TINYBLOB = 57586 -const MEDIUMBLOB = 57587 -const LONGBLOB = 57588 -const JSON = 57589 -const ENUM = 57590 -const GEOMETRY = 57591 -const POINT = 57592 -const LINESTRING = 57593 -const POLYGON = 57594 -const GEOMETRYCOLLECTION = 57595 -const MULTIPOINT = 57596 -const MULTILINESTRING = 57597 -const MULTIPOLYGON = 57598 -const NULLX = 57599 -const AUTO_INCREMENT = 57600 -const APPROXNUM = 57601 -const SIGNED = 57602 -const UNSIGNED = 57603 -const ZEROFILL = 57604 -const COLLATION = 57605 -const DATABASES = 57606 -const SCHEMAS = 57607 -const TABLES = 57608 -const VITESS_METADATA = 57609 -const VSCHEMA = 57610 -const FULL = 57611 -const PROCESSLIST = 57612 -const COLUMNS = 57613 -const FIELDS = 57614 -const ENGINES = 57615 -const PLUGINS = 57616 -const EXTENDED = 57617 -const KEYSPACES = 57618 -const VITESS_KEYSPACES = 57619 -const VITESS_SHARDS = 57620 -const VITESS_TABLETS = 57621 -const CODE = 57622 -const PRIVILEGES = 57623 -const FUNCTION = 57624 -const OPEN = 57625 -const TRIGGERS = 57626 -const NAMES = 57627 -const CHARSET = 57628 -const GLOBAL = 57629 -const SESSION = 57630 -const ISOLATION = 57631 -const LEVEL = 57632 -const READ = 57633 -const WRITE = 57634 -const ONLY = 57635 -const REPEATABLE = 57636 -const COMMITTED = 57637 -const UNCOMMITTED = 57638 -const SERIALIZABLE = 57639 -const CURRENT_TIMESTAMP = 57640 -const DATABASE = 57641 -const CURRENT_DATE = 57642 -const CURRENT_TIME = 57643 -const LOCALTIME = 57644 -const LOCALTIMESTAMP = 57645 -const CURRENT_USER = 57646 -const UTC_DATE = 57647 -const UTC_TIME = 57648 -const UTC_TIMESTAMP = 57649 -const REPLACE = 57650 -const CONVERT = 57651 -const CAST = 57652 -const SUBSTR = 57653 -const SUBSTRING = 57654 -const GROUP_CONCAT = 57655 -const SEPARATOR = 57656 -const TIMESTAMPADD = 57657 -const TIMESTAMPDIFF = 57658 -const MATCH = 57659 -const AGAINST = 57660 -const BOOLEAN = 57661 -const LANGUAGE = 57662 -const WITH = 57663 -const QUERY = 57664 -const EXPANSION = 57665 -const WITHOUT = 57666 -const VALIDATION = 57667 -const UNUSED = 57668 -const ARRAY = 57669 -const CUME_DIST = 57670 -const DESCRIPTION = 57671 -const DENSE_RANK = 57672 -const EMPTY = 57673 -const EXCEPT = 57674 -const FIRST_VALUE = 57675 -const GROUPING = 57676 -const GROUPS = 57677 -const JSON_TABLE = 57678 -const LAG = 57679 -const LAST_VALUE = 57680 -const LATERAL = 57681 -const LEAD = 57682 -const MEMBER = 57683 -const NTH_VALUE = 57684 -const NTILE = 57685 -const OF = 57686 -const OVER = 57687 -const PERCENT_RANK = 57688 -const RANK = 57689 -const RECURSIVE = 57690 -const ROW_NUMBER = 57691 -const SYSTEM = 57692 -const WINDOW = 57693 -const ACTIVE = 57694 -const ADMIN = 57695 -const BUCKETS = 57696 -const CLONE = 57697 -const COMPONENT = 57698 -const DEFINITION = 57699 -const ENFORCED = 57700 -const EXCLUDE = 57701 -const FOLLOWING = 57702 -const GEOMCOLLECTION = 57703 -const GET_MASTER_PUBLIC_KEY = 57704 -const HISTOGRAM = 57705 -const HISTORY = 57706 -const INACTIVE = 57707 -const INVISIBLE = 57708 -const LOCKED = 57709 -const MASTER_COMPRESSION_ALGORITHMS = 57710 -const MASTER_PUBLIC_KEY_PATH = 57711 -const MASTER_TLS_CIPHERSUITES = 57712 -const MASTER_ZSTD_COMPRESSION_LEVEL = 57713 -const NESTED = 57714 -const NETWORK_NAMESPACE = 57715 -const NOWAIT = 57716 -const NULLS = 57717 -const OJ = 57718 -const OLD = 57719 -const OPTIONAL = 57720 -const ORDINALITY = 57721 -const ORGANIZATION = 57722 -const OTHERS = 57723 -const PATH = 57724 -const PERSIST = 57725 -const PERSIST_ONLY = 57726 -const PRECEDING = 57727 -const PRIVILEGE_CHECKS_USER = 57728 -const PROCESS = 57729 -const RANDOM = 57730 -const REFERENCE = 57731 -const REQUIRE_ROW_FORMAT = 57732 -const RESOURCE = 57733 -const RESPECT = 57734 -const RESTART = 57735 -const RETAIN = 57736 -const REUSE = 57737 -const ROLE = 57738 -const SECONDARY = 57739 -const SECONDARY_ENGINE = 57740 -const SECONDARY_LOAD = 57741 -const SECONDARY_UNLOAD = 57742 -const SKIP = 57743 -const SRID = 57744 -const THREAD_PRIORITY = 57745 -const TIES = 57746 -const UNBOUNDED = 57747 -const VCPU = 57748 -const VISIBLE = 57749 -const FORMAT = 57750 -const TREE = 57751 -const VITESS = 57752 -const TRADITIONAL = 57753 -const LOCAL = 57754 -const LOW_PRIORITY = 57755 -const NO_WRITE_TO_BINLOG = 57756 -const LOGS = 57757 -const ERROR = 57758 -const GENERAL = 57759 -const HOSTS = 57760 -const OPTIMIZER_COSTS = 57761 -const USER_RESOURCES = 57762 -const SLOW = 57763 -const CHANNEL = 57764 -const RELAY = 57765 -const EXPORT = 57766 -const AVG_ROW_LENGTH = 57767 -const CONNECTION = 57768 -const CHECKSUM = 57769 -const DELAY_KEY_WRITE = 57770 -const ENCRYPTION = 57771 -const ENGINE = 57772 -const INSERT_METHOD = 57773 -const MAX_ROWS = 57774 -const MIN_ROWS = 57775 -const PACK_KEYS = 57776 -const PASSWORD = 57777 -const FIXED = 57778 -const DYNAMIC = 57779 -const COMPRESSED = 57780 -const REDUNDANT = 57781 -const COMPACT = 57782 -const ROW_FORMAT = 57783 -const STATS_AUTO_RECALC = 57784 -const STATS_PERSISTENT = 57785 -const STATS_SAMPLE_PAGES = 57786 -const STORAGE = 57787 -const MEMORY = 57788 -const DISK = 57789 +const TEMPORARY = 57544 +const TEMPTABLE = 57545 +const INVOKER = 57546 +const SECURITY = 57547 +const FIRST = 57548 +const AFTER = 57549 +const LAST = 57550 +const BEGIN = 57551 +const START = 57552 +const TRANSACTION = 57553 +const COMMIT = 57554 +const ROLLBACK = 57555 +const SAVEPOINT = 57556 +const RELEASE = 57557 +const WORK = 57558 +const BIT = 57559 +const TINYINT = 57560 +const SMALLINT = 57561 +const MEDIUMINT = 57562 +const INT = 57563 +const INTEGER = 57564 +const BIGINT = 57565 +const INTNUM = 57566 +const REAL = 57567 +const DOUBLE = 57568 +const FLOAT_TYPE = 57569 +const DECIMAL = 57570 +const NUMERIC = 57571 +const TIME = 57572 +const TIMESTAMP = 57573 +const DATETIME = 57574 +const YEAR = 57575 +const CHAR = 57576 +const VARCHAR = 57577 +const BOOL = 57578 +const CHARACTER = 57579 +const VARBINARY = 57580 +const NCHAR = 57581 +const TEXT = 57582 +const TINYTEXT = 57583 +const MEDIUMTEXT = 57584 +const LONGTEXT = 57585 +const BLOB = 57586 +const TINYBLOB = 57587 +const MEDIUMBLOB = 57588 +const LONGBLOB = 57589 +const JSON = 57590 +const ENUM = 57591 +const GEOMETRY = 57592 +const POINT = 57593 +const LINESTRING = 57594 +const POLYGON = 57595 +const GEOMETRYCOLLECTION = 57596 +const MULTIPOINT = 57597 +const MULTILINESTRING = 57598 +const MULTIPOLYGON = 57599 +const NULLX = 57600 +const AUTO_INCREMENT = 57601 +const APPROXNUM = 57602 +const SIGNED = 57603 +const UNSIGNED = 57604 +const ZEROFILL = 57605 +const COLLATION = 57606 +const DATABASES = 57607 +const SCHEMAS = 57608 +const TABLES = 57609 +const VITESS_METADATA = 57610 +const VSCHEMA = 57611 +const FULL = 57612 +const PROCESSLIST = 57613 +const COLUMNS = 57614 +const FIELDS = 57615 +const ENGINES = 57616 +const PLUGINS = 57617 +const EXTENDED = 57618 +const KEYSPACES = 57619 +const VITESS_KEYSPACES = 57620 +const VITESS_SHARDS = 57621 +const VITESS_TABLETS = 57622 +const CODE = 57623 +const PRIVILEGES = 57624 +const FUNCTION = 57625 +const OPEN = 57626 +const TRIGGERS = 57627 +const NAMES = 57628 +const CHARSET = 57629 +const GLOBAL = 57630 +const SESSION = 57631 +const ISOLATION = 57632 +const LEVEL = 57633 +const READ = 57634 +const WRITE = 57635 +const ONLY = 57636 +const REPEATABLE = 57637 +const COMMITTED = 57638 +const UNCOMMITTED = 57639 +const SERIALIZABLE = 57640 +const CURRENT_TIMESTAMP = 57641 +const DATABASE = 57642 +const CURRENT_DATE = 57643 +const CURRENT_TIME = 57644 +const LOCALTIME = 57645 +const LOCALTIMESTAMP = 57646 +const CURRENT_USER = 57647 +const UTC_DATE = 57648 +const UTC_TIME = 57649 +const UTC_TIMESTAMP = 57650 +const REPLACE = 57651 +const CONVERT = 57652 +const CAST = 57653 +const SUBSTR = 57654 +const SUBSTRING = 57655 +const GROUP_CONCAT = 57656 +const SEPARATOR = 57657 +const TIMESTAMPADD = 57658 +const TIMESTAMPDIFF = 57659 +const MATCH = 57660 +const AGAINST = 57661 +const BOOLEAN = 57662 +const LANGUAGE = 57663 +const WITH = 57664 +const QUERY = 57665 +const EXPANSION = 57666 +const WITHOUT = 57667 +const VALIDATION = 57668 +const UNUSED = 57669 +const ARRAY = 57670 +const CUME_DIST = 57671 +const DESCRIPTION = 57672 +const DENSE_RANK = 57673 +const EMPTY = 57674 +const EXCEPT = 57675 +const FIRST_VALUE = 57676 +const GROUPING = 57677 +const GROUPS = 57678 +const JSON_TABLE = 57679 +const LAG = 57680 +const LAST_VALUE = 57681 +const LATERAL = 57682 +const LEAD = 57683 +const MEMBER = 57684 +const NTH_VALUE = 57685 +const NTILE = 57686 +const OF = 57687 +const OVER = 57688 +const PERCENT_RANK = 57689 +const RANK = 57690 +const RECURSIVE = 57691 +const ROW_NUMBER = 57692 +const SYSTEM = 57693 +const WINDOW = 57694 +const ACTIVE = 57695 +const ADMIN = 57696 +const BUCKETS = 57697 +const CLONE = 57698 +const COMPONENT = 57699 +const DEFINITION = 57700 +const ENFORCED = 57701 +const EXCLUDE = 57702 +const FOLLOWING = 57703 +const GEOMCOLLECTION = 57704 +const GET_MASTER_PUBLIC_KEY = 57705 +const HISTOGRAM = 57706 +const HISTORY = 57707 +const INACTIVE = 57708 +const INVISIBLE = 57709 +const LOCKED = 57710 +const MASTER_COMPRESSION_ALGORITHMS = 57711 +const MASTER_PUBLIC_KEY_PATH = 57712 +const MASTER_TLS_CIPHERSUITES = 57713 +const MASTER_ZSTD_COMPRESSION_LEVEL = 57714 +const NESTED = 57715 +const NETWORK_NAMESPACE = 57716 +const NOWAIT = 57717 +const NULLS = 57718 +const OJ = 57719 +const OLD = 57720 +const OPTIONAL = 57721 +const ORDINALITY = 57722 +const ORGANIZATION = 57723 +const OTHERS = 57724 +const PATH = 57725 +const PERSIST = 57726 +const PERSIST_ONLY = 57727 +const PRECEDING = 57728 +const PRIVILEGE_CHECKS_USER = 57729 +const PROCESS = 57730 +const RANDOM = 57731 +const REFERENCE = 57732 +const REQUIRE_ROW_FORMAT = 57733 +const RESOURCE = 57734 +const RESPECT = 57735 +const RESTART = 57736 +const RETAIN = 57737 +const REUSE = 57738 +const ROLE = 57739 +const SECONDARY = 57740 +const SECONDARY_ENGINE = 57741 +const SECONDARY_LOAD = 57742 +const SECONDARY_UNLOAD = 57743 +const SKIP = 57744 +const SRID = 57745 +const THREAD_PRIORITY = 57746 +const TIES = 57747 +const UNBOUNDED = 57748 +const VCPU = 57749 +const VISIBLE = 57750 +const FORMAT = 57751 +const TREE = 57752 +const VITESS = 57753 +const TRADITIONAL = 57754 +const LOCAL = 57755 +const LOW_PRIORITY = 57756 +const NO_WRITE_TO_BINLOG = 57757 +const LOGS = 57758 +const ERROR = 57759 +const GENERAL = 57760 +const HOSTS = 57761 +const OPTIMIZER_COSTS = 57762 +const USER_RESOURCES = 57763 +const SLOW = 57764 +const CHANNEL = 57765 +const RELAY = 57766 +const EXPORT = 57767 +const AVG_ROW_LENGTH = 57768 +const CONNECTION = 57769 +const CHECKSUM = 57770 +const DELAY_KEY_WRITE = 57771 +const ENCRYPTION = 57772 +const ENGINE = 57773 +const INSERT_METHOD = 57774 +const MAX_ROWS = 57775 +const MIN_ROWS = 57776 +const PACK_KEYS = 57777 +const PASSWORD = 57778 +const FIXED = 57779 +const DYNAMIC = 57780 +const COMPRESSED = 57781 +const REDUNDANT = 57782 +const COMPACT = 57783 +const ROW_FORMAT = 57784 +const STATS_AUTO_RECALC = 57785 +const STATS_PERSISTENT = 57786 +const STATS_SAMPLE_PAGES = 57787 +const STORAGE = 57788 +const MEMORY = 57789 +const DISK = 57790 var yyToknames = [...]string{ "$end", @@ -802,6 +804,7 @@ var yyToknames = [...]string{ "UNDEFINED", "SEQUENCE", "MERGE", + "TEMPORARY", "TEMPTABLE", "INVOKER", "SECURITY", @@ -1062,2916 +1065,2894 @@ var yyExca = [...]int{ -1, 1, 1, -1, -2, 0, + -1, 43, + 163, 922, + -2, 90, -1, 44, 1, 111, - 465, 111, + 466, 111, -2, 117, -1, 45, 143, 117, - 253, 117, - 303, 117, - -2, 329, + 254, 117, + 304, 117, + -2, 324, -1, 52, - 209, 484, - 210, 484, - 287, 472, - 288, 472, - 289, 472, - -2, 470, + 34, 464, + 164, 464, + 176, 464, + 209, 478, + 210, 478, + -2, 466, -1, 57, - 166, 494, - -2, 492, + 166, 488, + -2, 486, -1, 82, - 56, 561, - -2, 569, - -1, 106, + 56, 555, + -2, 563, + -1, 107, 1, 112, - 465, 112, + 466, 112, -2, 117, - -1, 116, - 169, 234, - 170, 234, - -2, 323, - -1, 135, + -1, 117, + 169, 229, + 170, 229, + -2, 318, + -1, 136, 143, 117, - 253, 117, - 303, 117, - -2, 338, - -1, 567, - 150, 947, - -2, 943, + 254, 117, + 304, 117, + -2, 333, -1, 568, - 150, 948, - -2, 944, - -1, 586, - 56, 562, - -2, 574, + 150, 943, + -2, 939, + -1, 569, + 150, 944, + -2, 940, -1, 587, - 56, 563, - -2, 575, - -1, 607, - 118, 1285, - -2, 83, + 56, 556, + -2, 568, + -1, 588, + 56, 557, + -2, 569, -1, 608, - 118, 1168, + 118, 1281, + -2, 83, + -1, 609, + 118, 1164, -2, 84, - -1, 614, - 118, 1218, - -2, 922, - -1, 751, - 118, 1107, - -2, 919, - -1, 786, + -1, 615, + 118, 1214, + -2, 916, + -1, 752, + 118, 1103, + -2, 913, + -1, 787, 175, 37, 180, 37, - -2, 245, - -1, 865, - 1, 376, - 465, 376, + -2, 240, + -1, 866, + 1, 371, + 466, 371, -2, 117, -1, 1101, - 1, 272, - 465, 272, + 1, 267, + 466, 267, -2, 117, -1, 1179, - 169, 234, - 170, 234, - -2, 323, + 169, 229, + 170, 229, + -2, 318, -1, 1188, 175, 38, 180, 38, - -2, 246, - -1, 1396, - 150, 950, - -2, 946, - -1, 1488, + -2, 241, + -1, 1395, + 150, 946, + -2, 942, + -1, 1487, 74, 65, 82, 65, -2, 69, - -1, 1509, - 1, 273, - 465, 273, + -1, 1508, + 1, 268, + 466, 268, -2, 117, - -1, 1911, - 5, 816, - 18, 816, - 20, 816, - 32, 816, - 83, 816, - -2, 600, - -1, 2127, - 46, 890, - -2, 888, + -1, 1916, + 5, 810, + 18, 810, + 20, 810, + 32, 810, + 83, 810, + -2, 594, + -1, 2128, + 46, 884, + -2, 882, } const yyPrivate = 57344 -const yyLast = 27802 +const yyLast = 27558 var yyAct = [...]int{ - 567, 2213, 2200, 1960, 2140, 1825, 1721, 2073, 2051, 1794, - 540, 526, 2127, 1891, 2177, 1688, 1506, 1433, 1892, 1722, - 1708, 1888, 1957, 1798, 755, 1056, 1049, 923, 1573, 1541, - 1546, 81, 3, 509, 1526, 1004, 1779, 579, 1780, 144, - 1164, 1485, 511, 1903, 1850, 877, 1648, 1158, 175, 1390, - 1548, 187, 1571, 475, 187, 1186, 1382, 1297, 79, 490, - 130, 187, 1778, 1772, 895, 781, 612, 1093, 1086, 187, - 1059, 1467, 588, 1474, 1054, 1435, 1079, 1042, 1416, 573, - 816, 1204, 513, 1359, 32, 940, 1620, 1083, 762, 759, - 490, 787, 1077, 490, 187, 490, 1163, 1450, 768, 1076, - 502, 1276, 763, 782, 783, 1092, 794, 1193, 1490, 1090, - 77, 1317, 858, 1066, 147, 107, 1537, 609, 108, 1017, - 497, 8, 1178, 113, 114, 7, 1018, 6, 2075, 1817, - 1816, 1263, 174, 784, 76, 1602, 1838, 1839, 176, 177, - 178, 1430, 1431, 1527, 1348, 1347, 1346, 1345, 1344, 1343, - 82, 500, 1336, 501, 2169, 594, 598, 1686, 756, 109, - 2124, 2030, 574, 1934, 2102, 2101, 2046, 820, 115, 2047, - 187, 819, 2219, 1165, 2174, 821, 2212, 2151, 2203, 1961, - 187, 1590, 871, 498, 78, 187, 84, 85, 86, 87, - 88, 89, 2173, 2150, 1551, 1638, 449, 1867, 552, 606, - 558, 559, 556, 557, 1992, 555, 554, 553, 1609, 773, - 1687, 1752, 1608, 818, 1751, 560, 561, 1753, 941, 1918, - 1919, 109, 775, 173, 798, 774, 832, 833, 1917, 836, - 837, 838, 839, 613, 1837, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, - 829, 797, 1636, 776, 168, 1501, 1502, 1491, 1094, 898, - 1095, 34, 1500, 1432, 70, 38, 39, 479, 888, 887, - 822, 823, 824, 1550, 885, 168, 835, 902, 903, 110, - 919, 132, 571, 951, 176, 177, 178, 777, 570, 109, - 152, 834, 104, 180, 181, 182, 1763, 168, 1520, 2023, - 110, 1983, 1827, 488, 921, 901, 902, 903, 104, 169, - 2153, 152, 1335, 102, 1337, 1338, 1339, 478, 1981, 492, - 486, 142, 110, 1253, 1821, 1799, 131, 1572, 1605, 1282, - 1277, 1822, 1285, 152, 1286, 1287, 69, 892, 893, 2202, - 859, 890, 891, 894, 149, 917, 150, 1393, 866, 1281, - 1830, 119, 120, 141, 140, 167, 889, 939, 918, 1617, - 841, 941, 886, 840, 1254, 149, 1255, 150, 104, 96, - 97, 2170, 947, 1828, 1756, 100, 167, 1829, 99, 98, - 1279, 2098, 2041, 1283, 778, 1574, 479, 149, 805, 150, - 1280, 803, 1468, 814, 813, 812, 796, 479, 167, 811, - 810, 809, 808, 136, 117, 143, 124, 116, 807, 137, - 138, 802, 869, 153, 1172, 815, 2042, 760, 2220, 2189, - 760, 758, 2217, 158, 125, 790, 951, 1624, 1933, 760, - 1851, 172, 789, 106, 153, 796, 478, 1552, 128, 126, - 121, 122, 123, 127, 158, 1607, 103, 478, 118, 187, - 1192, 1191, 1491, 479, 1831, 870, 153, 129, 767, 2149, - 600, 1596, 103, 1689, 1691, 1290, 158, 904, 908, 831, - 176, 177, 178, 1853, 927, 796, 490, 490, 490, 915, - 806, 825, 796, 804, 1788, 1604, 905, 1876, 1875, 1874, - 796, 771, 770, 490, 490, 796, 880, 881, 882, 883, - 884, 769, 1809, 478, 448, 179, 946, 943, 944, 945, - 950, 952, 949, 1637, 948, 947, 1592, 2141, 2154, 2090, - 920, 942, 103, 1622, 145, 2131, 933, 1667, 1621, 899, - 1855, 795, 1859, 863, 1854, 2012, 1852, 799, 789, 1616, - 1916, 1857, 1615, 1713, 1656, 145, 1419, 800, 1622, 910, - 1856, 912, 1582, 1621, 1265, 1264, 1266, 1267, 1268, 1690, - 989, 990, 1496, 1858, 1860, 801, 1070, 145, 1002, 2215, - 795, 187, 2216, 875, 2214, 139, 1507, 789, 792, 793, - 71, 760, 977, 1748, 1664, 786, 790, 133, 909, 911, - 134, 987, 1446, 879, 900, 872, 873, 490, 596, 1046, - 187, 1332, 187, 187, 785, 490, 957, 1047, 865, 914, - 795, 490, 830, 860, 2106, 861, 936, 795, 862, 954, - 934, 916, 935, 799, 789, 795, 1005, 817, 582, 896, - 795, 967, 609, 800, 977, 957, 1901, 789, 792, 793, - 1591, 760, 1318, 1075, 1278, 786, 790, 1043, 1096, 946, - 943, 944, 945, 950, 952, 949, 1366, 948, 92, 2091, - 2089, 1060, 1869, 503, 942, 937, 989, 990, 864, 1417, - 1364, 1365, 1363, 1020, 1022, 1024, 1026, 1028, 1030, 1031, - 1021, 1023, 1589, 1027, 1029, 907, 1032, 176, 177, 178, - 1040, 146, 151, 148, 154, 155, 156, 157, 159, 160, - 161, 162, 906, 93, 1162, 506, 878, 163, 164, 165, - 166, 1587, 146, 151, 148, 154, 155, 156, 157, 159, - 160, 161, 162, 989, 990, 805, 803, 1048, 163, 164, - 165, 166, 956, 954, 146, 151, 148, 154, 155, 156, - 157, 159, 160, 161, 162, 897, 766, 1768, 613, 957, - 163, 164, 165, 166, 1417, 187, 1674, 1761, 1319, 1154, - 970, 971, 972, 973, 974, 967, 2134, 187, 977, 1663, - 1166, 1167, 1168, 1169, 176, 177, 178, 1584, 1384, 1448, - 1063, 924, 925, 2221, 171, 490, 1517, 1188, 955, 956, - 954, 1091, 1354, 1356, 1357, 1197, 1871, 2029, 1518, 1201, - 1584, 1588, 490, 490, 1355, 490, 957, 490, 490, 1184, - 490, 490, 490, 490, 490, 490, 968, 969, 970, 971, - 972, 973, 974, 967, 1586, 490, 977, 2028, 1662, 187, - 1237, 2204, 2194, 1939, 1385, 1878, 1661, 1641, 1642, 1643, - 1198, 1177, 1447, 1451, 1452, 1250, 1776, 1824, 772, 1234, - 1196, 2222, 1775, 955, 956, 954, 490, 1170, 1171, 2205, - 2195, 955, 956, 954, 187, 1232, 1233, 955, 956, 954, - 187, 957, 1555, 187, 1296, 1273, 187, 1258, 1160, 957, - 765, 604, 1257, 1879, 1206, 957, 1207, 187, 1209, 1211, - 187, 1153, 1215, 1217, 1219, 1221, 1223, 187, 187, 1194, - 1194, 1195, 1174, 1175, 1173, 490, 490, 490, 187, 490, - 490, 187, 490, 490, 1256, 1240, 1241, 1248, 1242, 1187, - 69, 1246, 1247, 1777, 1272, 955, 956, 954, 955, 956, - 954, 1302, 1362, 1058, 1305, 1239, 1307, 1308, 1309, 1310, - 187, 1312, 1299, 957, 599, 1316, 957, 955, 956, 954, - 1238, 1213, 1304, 2207, 176, 177, 178, 1291, 1755, 1311, - 176, 177, 178, 1315, 1566, 957, 1320, 1270, 2206, 1235, - 1260, 1360, 176, 177, 178, 2196, 1564, 2185, 1383, 2163, - 109, 775, 583, 1271, 774, 2064, 2026, 1386, 975, 976, - 968, 969, 970, 971, 972, 973, 974, 967, 2000, 1880, - 977, 490, 2114, 966, 965, 975, 976, 968, 969, 970, - 971, 972, 973, 974, 967, 1785, 1773, 977, 176, 177, - 178, 1632, 1251, 1387, 1388, 1330, 1269, 1342, 2096, 1259, - 1394, 1400, 601, 602, 490, 490, 1600, 529, 528, 531, - 532, 533, 534, 1361, 1599, 187, 530, 1300, 535, 176, - 177, 178, 1261, 1405, 1408, 1249, 1245, 1244, 490, 1418, - 1395, 1243, 1946, 2188, 78, 187, 1946, 2147, 490, 1396, - 1946, 2132, 187, 1005, 187, 1946, 583, 1946, 2104, 2044, - 583, 1440, 187, 187, 1441, 1492, 1424, 1425, 2095, 490, - 1584, 583, 490, 1959, 1453, 2010, 583, 1801, 1394, 1946, - 1951, 1931, 1930, 490, 958, 1927, 1928, 1927, 1926, 1459, - 583, 1491, 1818, 1486, 1397, 2031, 609, 1157, 1803, 609, - 1796, 1797, 1471, 583, 1787, 34, 34, 1511, 1465, 1492, - 953, 583, 1585, 1461, 1157, 1156, 1709, 1396, 1102, 1101, - 503, 1510, 583, 1515, 1900, 1889, 1709, 1493, 1742, 1015, - 1716, 1528, 1529, 1530, 1900, 1495, 1491, 1521, 490, 1522, - 1523, 1524, 1525, 2032, 2033, 2034, 490, 80, 1514, 1460, - 1489, 1563, 1565, 1717, 2080, 1533, 1534, 1535, 1536, 1052, - 1055, 1463, 1543, 2007, 490, 953, 1470, 1584, 2105, 1946, - 490, 1493, 1929, 1494, 1197, 1498, 1197, 1549, 1497, 1491, - 69, 69, 1782, 1471, 1583, 1471, 1513, 1512, 1570, 1321, - 1322, 1323, 2115, 1325, 1326, 1900, 1328, 1329, 34, 1499, - 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, - 1679, 1678, 613, 1459, 490, 613, 1383, 1471, 1459, 1459, - 1584, 1383, 1383, 1544, 576, 1567, 1449, 1428, 1340, 1580, - 1289, 1581, 1088, 1228, 568, 780, 1554, 779, 1593, 2139, - 1553, 69, 1556, 1560, 1561, 1562, 1539, 1540, 2053, 1958, - 2018, 1159, 1542, 1823, 1577, 1538, 187, 1544, 1576, 1575, - 187, 187, 187, 187, 187, 1532, 1531, 1594, 1275, 798, - 187, 187, 1595, 69, 187, 1189, 1185, 1597, 1598, 1194, - 1579, 1229, 1230, 1231, 173, 188, 1155, 94, 188, 1904, - 1905, 1826, 2209, 491, 2054, 188, 797, 1165, 187, 69, - 1781, 2201, 2035, 188, 1225, 1922, 1476, 1479, 1480, 1481, - 1477, 187, 1478, 1482, 187, 490, 1904, 1905, 1907, 1476, - 1479, 1480, 1481, 1477, 491, 1478, 1482, 491, 188, 491, - 1626, 1889, 1910, 1792, 1401, 1402, 1791, 1627, 1407, 1410, - 1411, 1628, 583, 1603, 1790, 1782, 1630, 2036, 2037, 1226, - 1227, 1558, 1333, 1293, 1360, 1733, 1735, 1731, 1480, 1481, - 1734, 1625, 1732, 1423, 1909, 1730, 1426, 1427, 1729, 966, - 965, 975, 976, 968, 969, 970, 971, 972, 973, 974, - 967, 2191, 1995, 977, 2172, 1881, 1698, 1057, 966, 965, - 975, 976, 968, 969, 970, 971, 972, 973, 974, 967, - 2011, 1949, 977, 1707, 188, 1706, 1635, 589, 2159, 187, - 2156, 2193, 2176, 2178, 188, 2184, 1696, 187, 1658, 188, - 2183, 2126, 590, 101, 1697, 2128, 1361, 1644, 1649, 966, - 965, 975, 976, 968, 969, 970, 971, 972, 973, 974, - 967, 187, 1288, 977, 569, 1061, 1062, 592, 1695, 591, - 1786, 1413, 187, 187, 187, 187, 187, 1657, 1301, 827, - 1702, 826, 574, 589, 187, 1970, 1414, 1714, 187, 1050, - 170, 187, 187, 183, 1673, 187, 187, 187, 590, 1718, - 1781, 1051, 1711, 1836, 926, 1043, 1685, 1811, 1754, 1810, - 1760, 110, 1693, 1723, 2136, 2135, 2078, 1578, 1203, 1740, - 1202, 586, 587, 592, 1701, 591, 1190, 2005, 1767, 1444, - 1710, 1557, 1743, 1292, 1712, 1640, 1745, 1451, 1452, 2097, - 2048, 1484, 580, 1766, 2198, 1769, 1770, 1771, 2197, 1757, - 1398, 1399, 1349, 1350, 1351, 1352, 1736, 1764, 1765, 187, - 1741, 577, 578, 1299, 1746, 1725, 1726, 1749, 1728, 490, - 2181, 1724, 2160, 1705, 1727, 490, 2004, 1758, 490, 1945, - 1197, 1704, 1568, 581, 80, 490, 2003, 1804, 1549, 1884, - 1709, 2211, 2210, 83, 1442, 1668, 1774, 1815, 1783, 1665, - 1071, 1064, 2211, 2129, 2024, 187, 1445, 1403, 1404, 576, - 1806, 78, 1814, 75, 1, 1800, 459, 1429, 1813, 1041, - 474, 2199, 1262, 1252, 1962, 187, 2050, 1952, 1177, 1547, - 788, 1784, 135, 1508, 1509, 1805, 2143, 91, 753, 90, - 1395, 791, 913, 1569, 503, 2088, 1812, 2045, 1762, 1396, - 1519, 2022, 1921, 1759, 2133, 1108, 1106, 490, 1107, 1105, - 1110, 1109, 1104, 1383, 1334, 1358, 487, 1483, 1367, 1368, - 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, - 1379, 1380, 1381, 1848, 1847, 1849, 1832, 1097, 1065, 828, - 1932, 1516, 1840, 490, 1834, 1505, 1835, 1868, 1331, 1601, - 469, 465, 985, 188, 187, 1846, 1703, 1750, 1862, 610, - 603, 1895, 2182, 2157, 490, 2155, 2125, 2074, 2158, 1861, - 490, 490, 2123, 1890, 2192, 1420, 2175, 1443, 1893, 1053, - 491, 491, 491, 2002, 1883, 1672, 1014, 1415, 1080, 1653, - 1654, 1847, 1899, 187, 512, 1439, 1353, 491, 491, 527, - 524, 525, 1887, 1454, 1545, 1715, 959, 510, 504, 1723, - 1671, 1072, 1912, 1475, 1914, 1473, 1915, 1472, 1294, 1084, - 1906, 1908, 1902, 1078, 1877, 1458, 1606, 1820, 1989, 938, - 585, 1924, 1925, 499, 1913, 95, 1412, 1940, 2113, 187, - 1639, 187, 187, 187, 1991, 584, 1920, 490, 60, 37, - 494, 2168, 1898, 929, 593, 31, 30, 29, 28, 23, - 187, 22, 21, 20, 19, 25, 18, 1936, 1935, 17, - 16, 1947, 105, 47, 44, 188, 42, 1963, 490, 490, - 490, 112, 187, 111, 1950, 45, 1956, 1953, 41, 867, - 1971, 27, 1948, 26, 1549, 1955, 15, 14, 1841, 13, - 12, 491, 11, 10, 188, 9, 188, 188, 5, 491, - 4, 932, 1937, 1938, 24, 491, 1003, 2, 966, 965, + 568, 2209, 2196, 1968, 2128, 1829, 2137, 2173, 512, 1719, + 2079, 1798, 541, 81, 3, 1896, 2057, 1686, 1897, 1505, + 527, 1432, 1571, 1004, 1056, 1965, 1049, 1706, 1720, 1893, + 1538, 1802, 1163, 580, 1523, 878, 510, 1784, 1543, 1783, + 1908, 1389, 817, 756, 1855, 901, 1204, 1782, 176, 1646, + 1621, 188, 1297, 475, 188, 1545, 131, 79, 1484, 491, + 1381, 188, 1569, 1776, 1086, 1466, 1093, 1473, 1076, 188, + 613, 782, 589, 1059, 1186, 1054, 1434, 1079, 923, 574, + 1042, 514, 1415, 145, 1358, 1077, 940, 1158, 503, 763, + 491, 1276, 1083, 491, 188, 491, 1449, 760, 768, 788, + 764, 1092, 32, 785, 783, 784, 77, 1162, 1489, 1534, + 1066, 872, 175, 108, 1313, 1178, 109, 148, 114, 772, + 795, 115, 1193, 1090, 498, 859, 8, 7, 6, 76, + 1017, 921, 1821, 1820, 1600, 1263, 1843, 2081, 1018, 1844, + 1429, 1430, 1347, 1524, 177, 178, 179, 1346, 1345, 1344, + 1343, 941, 1342, 501, 1335, 502, 1684, 2125, 595, 599, + 1942, 116, 110, 2165, 757, 2036, 2103, 2102, 610, 941, + 821, 188, 2052, 820, 2208, 2053, 819, 177, 178, 179, + 575, 188, 2215, 871, 2170, 1636, 188, 499, 78, 833, + 834, 82, 837, 838, 839, 840, 451, 2148, 843, 844, + 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, + 855, 856, 857, 607, 1164, 2199, 951, 1969, 1418, 1588, + 822, 776, 798, 2169, 775, 110, 1872, 84, 85, 86, + 87, 88, 89, 614, 951, 1548, 2147, 466, 2000, 799, + 774, 823, 824, 825, 1685, 34, 467, 1490, 70, 38, + 39, 1094, 1750, 1095, 777, 1749, 463, 1499, 1751, 1923, + 1924, 1922, 1431, 169, 553, 830, 559, 560, 557, 558, + 1842, 556, 555, 554, 1797, 1607, 1500, 1501, 1634, 1606, + 889, 561, 562, 479, 886, 899, 900, 1392, 111, 836, + 133, 939, 835, 110, 888, 460, 874, 174, 572, 153, + 583, 177, 178, 179, 473, 571, 947, 1767, 2150, 1517, + 105, 1991, 182, 183, 1547, 1989, 1336, 1337, 1338, 1831, + 69, 896, 778, 489, 947, 898, 899, 900, 919, 1334, + 143, 493, 487, 478, 1803, 132, 1570, 1825, 1603, 917, + 1277, 2198, 1285, 860, 1286, 1826, 1287, 479, 893, 894, + 1282, 891, 892, 150, 895, 151, 1615, 867, 1834, 842, + 1180, 1181, 142, 141, 168, 841, 1253, 103, 1281, 890, + 2099, 1833, 102, 887, 452, 453, 454, 1279, 471, 472, + 482, 2166, 105, 170, 468, 470, 483, 455, 456, 485, + 484, 1832, 459, 457, 458, 465, 2047, 478, 462, 480, + 479, 177, 178, 179, 1283, 806, 804, 918, 1254, 1280, + 1255, 1572, 137, 1182, 144, 2048, 1179, 1467, 138, 139, + 815, 814, 154, 813, 812, 811, 1941, 105, 810, 97, + 1764, 1759, 159, 479, 100, 809, 808, 99, 98, 803, + 946, 943, 944, 945, 950, 952, 949, 779, 948, 1172, + 478, 188, 816, 761, 797, 942, 2216, 759, 946, 943, + 944, 945, 950, 952, 949, 104, 948, 904, 908, 2213, + 761, 479, 107, 942, 1760, 791, 491, 491, 491, 1549, + 910, 2185, 912, 478, 103, 1490, 761, 1620, 881, 882, + 883, 884, 885, 905, 491, 491, 1762, 807, 805, 1757, + 797, 915, 790, 2146, 1635, 873, 173, 1192, 1191, 933, + 920, 1758, 832, 1605, 1687, 1689, 773, 2151, 797, 909, + 911, 478, 2138, 481, 601, 1856, 1835, 1594, 1290, 797, + 927, 826, 1792, 1602, 146, 797, 1881, 104, 1880, 1879, + 771, 476, 2115, 966, 965, 975, 976, 968, 969, 970, + 971, 972, 973, 974, 967, 770, 477, 977, 769, 1265, + 1264, 1266, 1267, 1268, 1746, 71, 2132, 1813, 1858, 870, + 1765, 1763, 188, 767, 450, 180, 1614, 989, 990, 1613, + 2020, 1623, 104, 1623, 1921, 140, 1622, 1711, 1622, 796, + 1047, 987, 1590, 1506, 1654, 800, 790, 134, 491, 1046, + 135, 188, 897, 188, 188, 801, 491, 1665, 924, 925, + 1688, 1580, 491, 1495, 1070, 797, 2211, 907, 1002, 2212, + 876, 2210, 936, 934, 935, 977, 1860, 1445, 1864, 1331, + 1859, 914, 1857, 92, 906, 796, 1662, 1862, 902, 1314, + 957, 800, 790, 916, 967, 1005, 1861, 977, 866, 1043, + 2107, 801, 1365, 796, 864, 831, 955, 956, 954, 1863, + 1865, 1075, 1060, 818, 796, 954, 1363, 1364, 1362, 802, + 796, 790, 793, 794, 957, 761, 880, 1761, 93, 787, + 791, 957, 1906, 1278, 610, 1020, 1022, 1024, 1026, 1028, + 1030, 1031, 1096, 1021, 1023, 1040, 1027, 1029, 786, 1032, + 937, 147, 152, 149, 155, 156, 157, 158, 160, 161, + 162, 163, 865, 1874, 1416, 1587, 1589, 164, 165, 166, + 167, 966, 965, 975, 976, 968, 969, 970, 971, 972, + 973, 974, 967, 1169, 861, 977, 862, 1585, 806, 863, + 970, 971, 972, 973, 974, 967, 989, 990, 977, 614, + 796, 956, 954, 2116, 903, 1315, 188, 790, 793, 794, + 1154, 761, 177, 178, 179, 787, 791, 1582, 957, 1048, + 1165, 1166, 1167, 1168, 804, 989, 990, 177, 178, 179, + 1647, 1383, 2200, 1416, 1660, 1672, 491, 1926, 1188, 879, + 172, 1586, 1659, 1353, 1355, 1356, 1197, 1063, 1450, 1451, + 1201, 1582, 2035, 491, 491, 1354, 491, 1198, 491, 491, + 2201, 491, 491, 491, 491, 491, 491, 955, 956, 954, + 1170, 1171, 1772, 2034, 69, 1584, 491, 2217, 2190, 1184, + 188, 1237, 1232, 1233, 1272, 957, 1361, 1384, 1177, 1947, + 530, 529, 532, 533, 534, 535, 1250, 1780, 1779, 531, + 1206, 536, 1207, 1091, 1209, 1211, 2191, 491, 1215, 1217, + 1219, 1221, 1223, 1552, 1270, 188, 1639, 1640, 1641, 1234, + 1196, 1273, 1153, 188, 1058, 1296, 1883, 188, 1240, 1241, + 955, 956, 954, 1258, 1246, 1247, 766, 1161, 188, 1257, + 1661, 188, 1160, 1271, 1256, 2218, 1174, 1248, 957, 1175, + 1187, 1242, 1173, 188, 188, 491, 491, 491, 188, 491, + 491, 188, 491, 491, 1194, 1194, 1239, 1195, 955, 956, + 954, 1238, 1302, 1269, 1884, 1305, 1876, 1307, 1308, 1309, + 1310, 177, 178, 179, 1304, 1753, 957, 1317, 1260, 1781, + 188, 1311, 1312, 605, 1316, 1828, 1213, 1299, 968, 969, + 970, 971, 972, 973, 974, 967, 584, 2203, 977, 2202, + 169, 78, 2192, 955, 956, 954, 2181, 177, 178, 179, + 1235, 1564, 2070, 1359, 955, 956, 954, 2032, 1382, 2008, + 776, 957, 1291, 775, 110, 111, 1929, 1385, 600, 177, + 178, 179, 957, 1562, 1885, 1789, 153, 1259, 177, 178, + 179, 491, 966, 965, 975, 976, 968, 969, 970, 971, + 972, 973, 974, 967, 1777, 1630, 977, 1598, 1597, 1404, + 1407, 1300, 1261, 1249, 1447, 1417, 1386, 1387, 1329, 1245, + 1399, 1244, 1341, 1243, 491, 491, 1320, 1321, 1322, 584, + 1324, 1325, 1360, 1327, 1328, 188, 1905, 177, 178, 179, + 150, 1251, 151, 1954, 2184, 1394, 1954, 2144, 491, 1954, + 2133, 168, 1954, 584, 1491, 188, 1954, 2105, 491, 1439, + 2050, 584, 188, 1395, 188, 584, 602, 603, 1423, 1424, + 1440, 1393, 188, 188, 1582, 584, 569, 1446, 1707, 491, + 1452, 1005, 491, 2018, 584, 1485, 1954, 1959, 1939, 1938, + 1935, 1936, 34, 491, 1935, 1934, 1458, 584, 1490, 1822, + 1396, 2097, 955, 956, 954, 1157, 1807, 1800, 1801, 154, + 1470, 584, 2096, 1464, 1967, 1491, 1492, 1714, 1805, 159, + 957, 953, 584, 1460, 1494, 1157, 1156, 189, 1102, 1101, + 189, 1395, 1791, 1583, 34, 492, 1510, 189, 80, 1393, + 1715, 1525, 1526, 1527, 1894, 189, 1707, 1470, 491, 1514, + 1740, 2037, 188, 1905, 2015, 491, 953, 610, 1490, 1459, + 610, 1561, 1563, 1469, 1513, 1488, 492, 69, 1462, 492, + 189, 492, 2106, 1540, 491, 1509, 1954, 1492, 34, 1546, + 491, 1497, 2086, 1493, 1197, 1490, 1197, 1518, 1582, 1519, + 1520, 1521, 1522, 1937, 1581, 1470, 1498, 1512, 1511, 2038, + 2039, 2040, 1496, 577, 1458, 1530, 1531, 1532, 1533, 69, + 2187, 1677, 1397, 1398, 1470, 1905, 1676, 1568, 1458, 1582, + 1565, 146, 614, 1448, 491, 614, 1382, 1427, 1339, 1458, + 1289, 1382, 1382, 1475, 1478, 1479, 1480, 1476, 1088, 1477, + 1481, 1541, 1553, 1909, 1910, 1551, 781, 189, 1550, 1536, + 1537, 1228, 507, 69, 1786, 780, 1441, 189, 1578, 2136, + 1579, 69, 189, 1557, 1558, 1559, 188, 1591, 2059, 1574, + 188, 188, 188, 188, 188, 1541, 798, 1573, 69, 1966, + 188, 188, 188, 188, 1400, 1401, 1593, 1592, 1406, 1409, + 1410, 1595, 1596, 799, 2026, 2041, 2003, 1159, 1539, 1229, + 1230, 1231, 1915, 1194, 188, 1577, 1827, 1575, 1535, 1529, + 1528, 1275, 1189, 1422, 1185, 1155, 1425, 1426, 94, 1785, + 188, 1225, 174, 188, 491, 1909, 1910, 1830, 2060, 1997, + 1624, 1164, 2205, 2197, 1912, 1894, 1796, 1625, 1626, 1795, + 2042, 2043, 1628, 966, 965, 975, 976, 968, 969, 970, + 971, 972, 973, 974, 967, 1794, 1555, 977, 1601, 1332, + 1914, 1292, 1728, 1731, 1786, 1359, 1226, 1227, 1732, 1733, + 1727, 1479, 1480, 2168, 1618, 975, 976, 968, 969, 970, + 971, 972, 973, 974, 967, 1886, 1696, 977, 147, 152, + 149, 155, 156, 157, 158, 160, 161, 162, 163, 1057, + 2019, 1957, 1705, 1704, 164, 165, 166, 167, 1475, 1478, + 1479, 1480, 1476, 2156, 1477, 1481, 1633, 1729, 188, 2153, + 2189, 2172, 1730, 1656, 2174, 1694, 188, 2180, 2179, 96, + 1790, 2129, 2127, 1695, 1360, 1288, 590, 1642, 966, 965, 975, 976, 968, 969, 970, 971, 972, 973, 974, 967, - 1968, 1969, 977, 0, 0, 1979, 1974, 966, 965, 975, - 976, 968, 969, 970, 971, 972, 973, 974, 967, 1976, - 1977, 977, 1978, 0, 0, 1980, 0, 1982, 0, 0, - 0, 0, 2006, 0, 2001, 0, 0, 0, 0, 0, - 2015, 0, 0, 0, 0, 2014, 0, 0, 0, 0, - 0, 0, 0, 1651, 2021, 0, 0, 1652, 2020, 0, - 0, 0, 0, 1723, 0, 0, 490, 490, 1659, 1660, - 0, 0, 0, 0, 1666, 2039, 0, 1669, 1670, 490, - 0, 2025, 490, 2027, 2038, 1676, 0, 1677, 2049, 0, - 1680, 1681, 1682, 1683, 1684, 0, 0, 0, 2057, 0, - 0, 0, 0, 0, 0, 0, 1694, 0, 0, 2052, - 0, 0, 0, 0, 0, 0, 0, 490, 490, 490, - 187, 2055, 0, 0, 0, 0, 2067, 2069, 2070, 188, - 0, 490, 2056, 490, 0, 0, 1675, 2071, 1893, 490, - 0, 188, 1893, 539, 0, 2083, 2079, 0, 2086, 2063, - 0, 0, 1738, 1739, 0, 2072, 2092, 0, 0, 491, - 2077, 2081, 2093, 187, 2094, 0, 1699, 1700, 1055, 0, - 0, 0, 2085, 0, 490, 187, 491, 491, 2087, 491, - 0, 491, 491, 2107, 491, 491, 491, 491, 491, 491, - 1645, 1646, 1647, 2100, 186, 0, 0, 485, 0, 491, - 2103, 0, 0, 188, 186, 0, 0, 2122, 0, 0, - 0, 1893, 186, 0, 2130, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 490, 490, 597, 597, - 491, 0, 0, 0, 2142, 0, 0, 186, 188, 0, - 0, 0, 0, 0, 188, 0, 0, 188, 0, 2137, - 188, 2152, 490, 2052, 2144, 0, 2161, 0, 0, 0, - 490, 188, 2164, 0, 188, 0, 0, 0, 0, 2167, - 0, 188, 188, 2171, 0, 0, 1650, 0, 0, 491, - 491, 491, 188, 491, 491, 188, 491, 491, 2180, 2179, - 0, 0, 1723, 0, 0, 2190, 966, 965, 975, 976, - 968, 969, 970, 971, 972, 973, 974, 967, 0, 0, - 977, 0, 0, 186, 188, 1994, 0, 0, 0, 0, - 1844, 1845, 2208, 186, 0, 0, 0, 961, 186, 964, - 0, 0, 0, 2218, 0, 978, 979, 980, 981, 982, - 983, 984, 0, 962, 963, 960, 966, 965, 975, 976, - 968, 969, 970, 971, 972, 973, 974, 967, 0, 0, - 977, 0, 966, 965, 975, 976, 968, 969, 970, 971, - 972, 973, 974, 967, 0, 491, 977, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1896, 0, 0, 0, - 0, 0, 0, 1870, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1911, 491, 491, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, - 0, 0, 0, 0, 0, 0, 0, 0, 1885, 0, - 0, 0, 491, 0, 0, 0, 0, 0, 0, 188, - 0, 0, 491, 0, 0, 0, 188, 0, 188, 0, - 0, 0, 0, 0, 0, 0, 188, 188, 1988, 0, - 0, 0, 0, 491, 0, 0, 491, 0, 0, 0, - 0, 0, 0, 0, 0, 1842, 1843, 491, 0, 0, - 0, 0, 0, 0, 1987, 0, 0, 0, 0, 0, - 1863, 1864, 0, 1865, 1866, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1872, 1873, 0, 0, 0, 0, - 0, 0, 0, 1973, 0, 0, 0, 1975, 0, 0, - 0, 0, 0, 1986, 0, 0, 0, 0, 1984, 1985, - 0, 0, 491, 0, 0, 0, 0, 0, 0, 0, - 491, 0, 0, 0, 1999, 0, 0, 0, 0, 0, - 0, 0, 176, 177, 178, 0, 0, 0, 491, 0, - 0, 2008, 2009, 0, 491, 2013, 0, 966, 965, 975, - 976, 968, 969, 970, 971, 972, 973, 974, 967, 0, - 0, 977, 0, 0, 0, 0, 1923, 0, 0, 0, - 1993, 0, 186, 966, 965, 975, 976, 968, 969, 970, - 971, 972, 973, 974, 967, 0, 0, 977, 491, 0, - 0, 0, 466, 503, 0, 0, 0, 0, 0, 2043, - 2016, 467, 0, 2017, 0, 0, 2019, 0, 0, 0, - 0, 461, 966, 965, 975, 976, 968, 969, 970, 971, - 972, 973, 974, 967, 0, 0, 977, 0, 0, 0, - 188, 0, 0, 0, 188, 188, 188, 188, 188, 0, - 0, 0, 0, 2068, 188, 188, 0, 1972, 188, 0, - 458, 0, 0, 0, 0, 0, 0, 0, 0, 473, + 188, 591, 977, 101, 570, 828, 1412, 1693, 827, 1978, + 1050, 188, 188, 188, 188, 188, 1655, 590, 1721, 1700, + 1716, 1413, 1051, 188, 1061, 1062, 593, 188, 592, 181, + 188, 188, 591, 1712, 188, 188, 188, 1671, 1785, 575, + 1738, 1841, 926, 1815, 1814, 1043, 111, 1752, 1683, 2084, + 171, 1931, 1691, 184, 1930, 587, 588, 593, 1709, 592, + 1576, 1203, 1202, 1190, 1699, 1771, 2013, 1450, 1451, 1560, + 1443, 1295, 1708, 1710, 2098, 2054, 1483, 189, 1638, 1722, + 578, 579, 1725, 1770, 581, 1773, 1774, 1775, 1741, 1734, + 2194, 2193, 1743, 1739, 1768, 1769, 188, 1723, 1724, 1744, + 1726, 1703, 492, 492, 492, 1747, 1299, 491, 2177, 1702, + 2157, 2012, 1953, 491, 1566, 582, 491, 1546, 1197, 1804, + 492, 492, 1756, 491, 80, 2011, 1889, 1808, 1707, 1666, + 1788, 1663, 1755, 1778, 1071, 1819, 2207, 2206, 2207, 1064, + 1787, 2130, 1928, 188, 1649, 1444, 577, 78, 1650, 83, + 75, 1, 461, 1818, 1428, 1041, 474, 2195, 1262, 1657, + 1658, 188, 1177, 1252, 1817, 1664, 1970, 2056, 1667, 1668, + 1960, 1544, 789, 1394, 136, 1507, 1674, 1508, 1675, 2140, + 91, 1678, 1679, 1680, 1681, 1682, 754, 90, 792, 913, + 1567, 1395, 1809, 2051, 1816, 491, 1766, 1692, 189, 1810, + 1516, 1382, 1108, 1106, 1107, 1105, 1110, 1837, 1109, 1836, + 1104, 1333, 488, 1839, 1482, 1840, 1097, 1065, 1651, 1652, + 1853, 829, 464, 1854, 492, 1940, 1330, 189, 1599, 189, + 189, 491, 492, 1845, 1873, 1851, 469, 985, 492, 1669, + 1701, 1748, 188, 1736, 1737, 611, 1867, 604, 1900, 2178, + 2154, 2152, 491, 2126, 2080, 2155, 2124, 2188, 491, 491, + 2171, 1866, 1515, 1721, 1895, 1442, 1053, 2010, 1898, 1888, + 1670, 1014, 1414, 1852, 1080, 513, 1438, 1882, 1352, 528, + 525, 188, 526, 1453, 1713, 959, 1892, 1904, 511, 505, + 1072, 1474, 1472, 1471, 1293, 1084, 1911, 597, 1907, 1078, + 1457, 1604, 1824, 938, 586, 1903, 1913, 1917, 500, 1919, + 95, 1920, 1411, 2114, 1637, 1999, 585, 60, 991, 992, + 993, 994, 995, 996, 997, 998, 999, 1000, 1932, 1933, + 1852, 1948, 37, 188, 495, 188, 188, 188, 2164, 1918, + 929, 491, 594, 31, 30, 29, 2002, 28, 23, 22, + 21, 20, 1956, 19, 188, 25, 18, 17, 16, 106, + 47, 1943, 504, 44, 1944, 42, 113, 112, 1945, 1946, + 45, 1971, 491, 491, 491, 1961, 188, 41, 1925, 868, + 1546, 27, 189, 26, 1955, 1979, 1958, 15, 1964, 14, + 13, 12, 1963, 966, 965, 975, 976, 968, 969, 970, + 971, 972, 973, 974, 967, 11, 10, 977, 9, 5, + 1849, 1850, 492, 4, 932, 1976, 1977, 24, 1003, 2, + 0, 0, 0, 0, 0, 0, 0, 1982, 0, 492, + 492, 1987, 492, 0, 492, 492, 0, 492, 492, 492, + 492, 492, 492, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 492, 0, 1721, 0, 189, 0, 0, 2009, + 0, 0, 0, 0, 0, 2014, 0, 0, 0, 2022, + 0, 0, 0, 0, 2023, 0, 1901, 0, 0, 0, + 0, 0, 2028, 492, 1984, 1985, 2029, 1986, 0, 2030, + 1988, 189, 1990, 0, 491, 491, 0, 1916, 0, 189, + 0, 540, 0, 189, 0, 2045, 0, 491, 0, 2031, + 491, 2033, 0, 0, 189, 2044, 0, 189, 2055, 0, + 0, 0, 0, 0, 0, 0, 2063, 0, 0, 189, + 189, 492, 492, 492, 189, 492, 492, 189, 492, 492, + 0, 0, 0, 0, 0, 491, 491, 491, 188, 2061, + 0, 0, 187, 0, 0, 486, 2073, 2075, 2076, 491, + 2062, 491, 187, 0, 0, 0, 189, 491, 1898, 2077, + 187, 2087, 1898, 2069, 2085, 2089, 2083, 0, 2092, 0, + 0, 0, 0, 2078, 0, 0, 598, 598, 2058, 188, + 0, 2094, 0, 2095, 0, 187, 2091, 0, 0, 0, + 491, 188, 2093, 0, 0, 0, 0, 0, 2104, 0, + 1981, 2108, 0, 2101, 1983, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1992, 1993, 492, 0, 0, + 0, 0, 0, 0, 0, 2123, 0, 0, 0, 1898, + 0, 2007, 2131, 0, 0, 0, 0, 491, 491, 0, + 0, 0, 2134, 0, 0, 0, 0, 0, 2016, 2017, + 492, 492, 2021, 2139, 0, 0, 0, 0, 0, 0, + 0, 189, 187, 491, 0, 2149, 0, 491, 0, 1721, + 2158, 2160, 187, 0, 492, 0, 0, 187, 2163, 0, + 2167, 189, 0, 0, 492, 0, 0, 2176, 189, 2175, + 189, 0, 0, 0, 0, 169, 0, 0, 189, 189, + 0, 2186, 0, 0, 0, 492, 0, 0, 492, 2049, + 0, 0, 0, 0, 0, 2058, 2141, 0, 0, 492, + 111, 0, 0, 0, 0, 0, 0, 0, 2204, 0, + 0, 153, 0, 0, 0, 0, 0, 0, 0, 2214, 966, 965, 975, 976, 968, 969, 970, 971, 972, 973, - 974, 967, 188, 0, 977, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 188, 0, 0, 188, 491, - 0, 0, 0, 0, 186, 0, 0, 0, 0, 0, - 0, 479, 2076, 503, 0, 2109, 2110, 2111, 2112, 597, - 2116, 0, 2117, 2118, 2119, 0, 2120, 2121, 0, 0, - 0, 0, 0, 186, 0, 186, 1087, 0, 450, 451, - 452, 462, 471, 472, 463, 0, 0, 0, 468, 470, - 482, 453, 454, 484, 483, 0, 457, 455, 456, 464, - 0, 478, 460, 480, 0, 0, 0, 0, 0, 0, - 2148, 0, 0, 0, 0, 0, 538, 965, 975, 976, + 974, 967, 1357, 2074, 977, 1366, 1367, 1368, 1369, 1370, + 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, + 0, 1125, 1754, 0, 492, 0, 0, 0, 189, 0, + 0, 492, 0, 0, 0, 150, 0, 151, 0, 0, + 0, 0, 0, 0, 958, 0, 168, 0, 0, 0, + 492, 0, 0, 1996, 0, 0, 492, 0, 0, 0, + 0, 0, 1419, 2110, 2111, 2112, 2113, 0, 2117, 0, + 2118, 2119, 2120, 0, 2121, 2122, 0, 0, 0, 0, + 504, 0, 0, 0, 0, 0, 0, 0, 0, 1015, + 0, 0, 1995, 0, 0, 0, 0, 0, 0, 0, + 492, 1846, 0, 0, 154, 0, 0, 0, 0, 0, + 0, 0, 0, 2145, 159, 0, 0, 0, 0, 1052, + 1055, 966, 965, 975, 976, 968, 969, 970, 971, 972, + 973, 974, 967, 0, 1113, 977, 0, 0, 0, 0, + 0, 0, 189, 0, 0, 0, 189, 189, 189, 189, + 189, 0, 0, 0, 0, 0, 189, 189, 189, 189, + 2182, 2183, 966, 965, 975, 976, 968, 969, 970, 971, + 972, 973, 974, 967, 0, 0, 977, 1126, 0, 0, + 189, 965, 975, 976, 968, 969, 970, 971, 972, 973, + 974, 967, 187, 0, 977, 0, 189, 0, 0, 189, + 492, 966, 965, 975, 976, 968, 969, 970, 971, 972, + 973, 974, 967, 0, 0, 977, 146, 0, 0, 0, + 0, 0, 0, 0, 1139, 1142, 1143, 1144, 1145, 1146, + 1147, 0, 1148, 1149, 1150, 1151, 1152, 1127, 1128, 1129, + 1130, 1111, 1112, 1140, 0, 1114, 1648, 1115, 1116, 1117, + 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1131, 1132, 1133, + 1134, 1135, 1136, 1137, 1138, 0, 966, 965, 975, 976, 968, 969, 970, 971, 972, 973, 974, 967, 0, 0, - 977, 0, 0, 188, 0, 0, 0, 0, 0, 0, - 0, 188, 2058, 2059, 2060, 2061, 2062, 0, 0, 0, - 2065, 2066, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2186, 2187, 0, 188, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 489, 188, 188, 188, 188, - 188, 0, 0, 0, 0, 0, 0, 0, 188, 0, - 0, 0, 188, 0, 0, 188, 188, 0, 0, 188, - 188, 188, 0, 0, 0, 0, 611, 0, 0, 757, - 0, 764, 0, 0, 0, 0, 1044, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 481, 186, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 186, 0, 0, 0, 0, 476, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 477, 0, 0, 188, 0, 0, 0, 185, 0, 0, - 0, 1200, 0, 491, 0, 0, 0, 493, 0, 491, - 0, 0, 491, 0, 0, 572, 0, 0, 0, 491, - 0, 0, 0, 0, 2165, 0, 1200, 1200, 0, 0, - 0, 0, 186, 0, 0, 0, 0, 0, 0, 188, - 761, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, - 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, - 0, 0, 0, 186, 0, 0, 186, 0, 0, 1298, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 186, 491, 0, 186, 0, 0, 0, 0, 0, 0, - 1313, 1314, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 186, 0, 0, 186, 0, 857, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 868, 491, 0, 0, - 0, 874, 0, 0, 0, 0, 0, 0, 188, 0, - 0, 0, 0, 186, 0, 0, 0, 0, 491, 0, - 0, 0, 0, 0, 491, 491, 0, 0, 0, 0, - 0, 0, 0, 34, 35, 36, 70, 38, 39, 0, - 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, + 977, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, + 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 189, 1141, 598, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 189, 189, + 189, 189, 187, 1994, 187, 1087, 0, 0, 0, 189, + 0, 0, 0, 189, 0, 0, 189, 189, 0, 0, + 189, 189, 189, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 539, 0, 147, 152, 149, 155, 156, 157, 158, + 160, 161, 162, 163, 0, 0, 0, 0, 0, 164, + 165, 166, 167, 0, 0, 0, 1643, 1644, 1645, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1301, 0, + 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 492, 0, 0, 0, 0, 0, 492, + 490, 0, 492, 0, 0, 0, 0, 0, 0, 492, + 0, 0, 966, 965, 975, 976, 968, 969, 970, 971, + 972, 973, 974, 967, 0, 0, 977, 0, 0, 189, + 0, 612, 0, 0, 758, 0, 765, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, + 0, 1348, 1349, 1350, 1351, 0, 0, 187, 0, 0, + 0, 0, 0, 0, 0, 0, 961, 0, 964, 0, + 0, 0, 0, 0, 978, 979, 980, 981, 982, 983, + 984, 492, 962, 963, 960, 966, 965, 975, 976, 968, + 969, 970, 971, 972, 973, 974, 967, 0, 0, 977, + 1200, 0, 0, 0, 0, 0, 1402, 1403, 0, 0, + 0, 0, 542, 33, 0, 0, 0, 492, 0, 0, + 0, 0, 0, 0, 0, 1200, 1200, 0, 189, 0, + 0, 187, 0, 0, 0, 0, 0, 0, 492, 0, + 0, 0, 0, 504, 492, 492, 33, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 187, 189, 0, 0, + 0, 0, 0, 0, 187, 0, 0, 0, 1298, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, + 576, 0, 187, 0, 1504, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1318, 1319, 0, 0, 0, 187, + 0, 0, 187, 0, 0, 0, 0, 0, 0, 189, + 0, 189, 189, 189, 0, 0, 0, 492, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 189, 187, 0, 0, 0, 0, 0, 0, 0, 0, + 1847, 1848, 0, 1542, 0, 0, 0, 0, 492, 492, + 492, 0, 189, 0, 0, 1868, 1869, 0, 1870, 1871, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1877, + 1878, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 598, 1298, 0, 0, 0, 598, 598, + 0, 0, 598, 598, 598, 0, 0, 0, 1200, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 598, 598, 598, + 598, 598, 0, 0, 0, 0, 1436, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1927, 0, 0, 0, 187, 0, 0, 0, + 0, 0, 1298, 187, 0, 187, 0, 0, 0, 0, + 492, 492, 0, 187, 187, 0, 0, 0, 0, 0, + 0, 0, 0, 492, 0, 0, 492, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 612, 612, 612, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 492, 492, 492, 189, 928, 930, 0, 0, 0, + 0, 0, 0, 0, 0, 492, 0, 492, 0, 1980, + 0, 0, 0, 492, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 187, 0, 0, 0, 1044, 0, 0, + 0, 0, 0, 0, 0, 189, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 492, 189, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1673, 0, 0, 0, 186, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 494, 0, + 0, 0, 0, 492, 492, 0, 573, 0, 0, 1068, + 0, 0, 0, 0, 1697, 1698, 1055, 612, 0, 0, + 0, 0, 0, 1098, 0, 0, 0, 0, 0, 492, + 0, 762, 0, 492, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, + 0, 187, 187, 187, 187, 187, 0, 0, 922, 922, + 922, 187, 187, 187, 187, 0, 0, 2064, 2065, 2066, + 2067, 2068, 0, 0, 0, 2071, 2072, 0, 33, 0, + 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, + 0, 986, 988, 0, 0, 0, 0, 0, 0, 0, + 0, 187, 0, 0, 187, 0, 0, 0, 858, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 869, 0, + 0, 0, 1001, 875, 0, 0, 1006, 1007, 1008, 1009, + 1010, 1011, 1012, 1013, 0, 1016, 1019, 1019, 1019, 1025, + 1019, 1019, 1025, 1019, 1033, 1034, 1035, 1036, 1037, 1038, + 1039, 0, 0, 0, 0, 0, 1045, 0, 0, 33, + 0, 0, 598, 598, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 598, 0, 1081, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 758, 0, 187, + 0, 0, 0, 0, 0, 0, 0, 1436, 2161, 0, + 1199, 0, 0, 0, 1205, 1205, 0, 1205, 0, 1205, + 1205, 0, 1214, 1205, 1205, 1205, 1205, 1205, 0, 0, + 598, 187, 0, 0, 0, 1199, 1199, 758, 0, 0, + 1875, 1200, 187, 187, 187, 187, 187, 0, 0, 0, + 0, 0, 0, 0, 1735, 0, 0, 0, 187, 0, + 0, 187, 187, 0, 0, 187, 1745, 1298, 1274, 0, + 0, 169, 0, 0, 0, 1890, 0, 0, 0, 0, + 0, 0, 1176, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 111, 0, 133, 0, + 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, + 0, 0, 0, 0, 0, 0, 612, 612, 612, 0, + 612, 612, 0, 612, 612, 0, 0, 187, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, + 0, 0, 1200, 132, 0, 0, 0, 0, 0, 0, + 0, 0, 1298, 0, 0, 0, 0, 0, 0, 0, + 0, 150, 0, 151, 0, 0, 0, 0, 1180, 1181, + 142, 141, 168, 0, 187, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 877, 0, + 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1388, 0, 612, 0, 0, 0, 0, 0, + 137, 1182, 144, 0, 1179, 598, 138, 139, 1199, 0, + 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 159, 0, 0, 0, 2001, 1420, 1421, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 504, 0, 1454, + 0, 0, 0, 187, 2024, 0, 0, 2025, 0, 1068, + 2027, 0, 612, 0, 0, 0, 1200, 922, 922, 922, + 0, 922, 922, 0, 922, 922, 0, 0, 0, 0, + 612, 0, 0, 612, 0, 0, 0, 0, 0, 0, + 0, 0, 187, 0, 758, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1074, 0, + 0, 1085, 146, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 187, 0, 187, 187, 187, 765, + 0, 0, 0, 0, 0, 1200, 1556, 0, 0, 2082, + 504, 0, 0, 0, 169, 187, 0, 0, 0, 0, + 0, 0, 0, 140, 0, 758, 0, 0, 0, 0, + 0, 765, 0, 0, 0, 134, 0, 187, 135, 111, + 0, 133, 0, 34, 35, 36, 70, 38, 39, 0, + 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 40, 66, - 67, 0, 64, 68, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 0, 597, 1298, 0, 0, 0, - 597, 597, 0, 0, 597, 597, 597, 0, 0, 0, - 1200, 0, 0, 188, 0, 188, 188, 188, 53, 0, - 0, 491, 0, 0, 0, 0, 0, 0, 69, 597, - 597, 597, 597, 597, 188, 0, 0, 0, 1437, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 491, 491, 491, 0, 188, 0, 186, 0, - 0, 0, 0, 0, 1298, 186, 0, 186, 0, 0, - 0, 0, 0, 0, 0, 186, 186, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 43, 46, 49, 48, 51, 0, 63, 0, 0, 0, - 0, 0, 611, 611, 611, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 928, - 930, 52, 73, 72, 0, 0, 61, 62, 50, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 491, 491, 54, 55, 0, 56, 57, 58, 59, 0, - 0, 0, 0, 491, 0, 876, 491, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 541, 33, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 491, 491, 491, 188, 0, 0, 0, 0, 0, - 0, 0, 0, 1068, 0, 491, 0, 491, 33, 0, - 0, 611, 0, 491, 0, 0, 0, 1098, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 188, 0, 186, - 0, 0, 71, 186, 186, 186, 186, 186, 491, 188, - 0, 0, 575, 186, 186, 0, 0, 186, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 186, 0, 0, 186, 0, 0, - 491, 491, 0, 0, 0, 0, 1074, 0, 0, 1085, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 491, 0, 0, 0, - 0, 0, 0, 0, 491, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 597, 597, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 597, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 757, 186, 0, 0, 0, 0, 0, 0, 0, - 1437, 0, 0, 0, 1199, 0, 0, 0, 1205, 1205, - 0, 1205, 0, 1205, 1205, 0, 1214, 1205, 1205, 1205, - 1205, 1205, 0, 597, 186, 0, 0, 0, 0, 1199, - 1199, 757, 0, 0, 1200, 186, 186, 186, 186, 186, - 0, 0, 0, 0, 0, 0, 0, 1737, 0, 0, - 0, 186, 0, 0, 186, 186, 0, 0, 186, 1747, - 1298, 1103, 1274, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1161, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 611, 611, 611, 0, 611, 611, 0, 611, 611, - 0, 0, 186, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1236, 1200, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1298, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 186, 0, - 1284, 0, 0, 0, 0, 0, 1085, 0, 0, 1295, - 0, 0, 0, 0, 0, 0, 0, 0, 186, 0, - 0, 0, 0, 1303, 0, 0, 1306, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1389, 0, 611, - 0, 0, 0, 0, 1324, 0, 0, 1327, 0, 597, - 0, 0, 0, 1199, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1421, 1422, 0, 0, 0, 0, 1085, 0, 0, 0, - 922, 922, 922, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1455, 0, 0, 186, 0, 33, - 0, 0, 0, 0, 1068, 0, 0, 611, 0, 0, - 1200, 0, 986, 988, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 611, 0, 0, 611, 0, - 0, 0, 0, 0, 0, 0, 186, 0, 0, 757, - 0, 0, 0, 1001, 0, 0, 0, 1006, 1007, 1008, - 1009, 1010, 1011, 1012, 1013, 0, 1016, 1019, 1019, 1019, - 1025, 1019, 1019, 1025, 1019, 1033, 1034, 1035, 1036, 1037, - 1038, 1039, 0, 0, 0, 0, 0, 1045, 0, 0, - 33, 0, 186, 0, 186, 186, 186, 0, 0, 0, - 0, 0, 0, 1200, 764, 0, 0, 0, 0, 0, - 0, 1462, 1559, 186, 0, 168, 1081, 0, 1466, 0, - 1469, 0, 0, 0, 0, 0, 1793, 0, 0, 1488, - 757, 0, 0, 0, 0, 186, 764, 0, 0, 168, - 110, 0, 132, 0, 0, 0, 0, 0, 0, 0, - 1176, 152, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 110, 0, 132, 0, 0, 0, - 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, - 757, 0, 142, 0, 0, 0, 0, 131, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1200, 149, 142, 150, 0, 0, - 0, 131, 1180, 1181, 141, 140, 167, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, - 0, 150, 0, 0, 0, 0, 1180, 1181, 141, 140, - 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 136, 1182, 143, 0, 1179, 0, - 137, 138, 0, 0, 153, 0, 0, 0, 0, 0, - 0, 1634, 0, 0, 158, 0, 0, 0, 136, 1182, - 143, 0, 1179, 0, 137, 138, 0, 0, 153, 0, - 0, 0, 0, 1437, 0, 0, 0, 0, 158, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1085, 0, 0, 0, 1610, 1611, 1612, 1613, - 1614, 0, 0, 0, 0, 0, 1618, 1619, 0, 0, - 1623, 0, 0, 0, 0, 0, 186, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 186, 0, - 0, 0, 0, 0, 1629, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1631, 0, 0, - 1633, 0, 0, 0, 0, 145, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, - 0, 0, 0, 0, 0, 0, 0, 1199, 0, 922, - 922, 922, 0, 922, 922, 0, 922, 922, 0, 0, - 0, 0, 0, 1200, 0, 0, 139, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 133, 0, - 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, - 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 133, 0, 1125, 134, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1795, 0, 0, 0, 1199, - 0, 1802, 0, 0, 1795, 0, 0, 0, 0, 611, - 0, 1807, 0, 0, 0, 0, 0, 0, 1744, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 146, 151, 148, 154, 155, 156, 157, 159, - 160, 161, 162, 0, 0, 0, 0, 0, 163, 164, - 165, 166, 0, 0, 0, 0, 146, 151, 148, 154, - 155, 156, 157, 159, 160, 161, 162, 1113, 0, 0, - 0, 0, 163, 164, 165, 166, 1487, 0, 0, 0, - 0, 0, 0, 611, 0, 1789, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1126, 0, 0, 0, 0, 0, 0, 0, 0, 1205, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1819, 0, 0, 0, 0, 0, 0, 0, 0, - 611, 0, 0, 1199, 0, 0, 1897, 1205, 0, 0, - 0, 1833, 0, 0, 0, 0, 1139, 1142, 1143, 1144, - 1145, 1146, 1147, 0, 1148, 1149, 1150, 1151, 1152, 1127, - 1128, 1129, 1130, 1111, 1112, 1140, 0, 1114, 0, 1115, - 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1131, - 1132, 1133, 1134, 1135, 1136, 1137, 1138, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 757, 0, 0, 1199, 0, 0, 0, - 1882, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1964, 1965, 1966, 0, 0, 1141, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1941, 0, 1942, 1943, 1944, + 67, 0, 64, 68, 0, 758, 0, 0, 0, 65, + 0, 143, 0, 0, 0, 0, 132, 0, 0, 0, + 0, 0, 0, 0, 1486, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 150, 0, 151, 1200, 53, 0, + 0, 120, 121, 142, 141, 168, 0, 0, 69, 0, + 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, + 152, 149, 155, 156, 157, 158, 160, 161, 162, 163, + 0, 0, 0, 0, 0, 164, 165, 166, 167, 0, + 0, 0, 0, 137, 118, 144, 125, 117, 0, 138, + 139, 0, 0, 154, 0, 1632, 0, 0, 0, 0, + 0, 0, 0, 159, 126, 0, 0, 0, 0, 0, + 43, 46, 49, 48, 51, 0, 63, 1236, 129, 127, + 122, 123, 124, 128, 0, 0, 0, 0, 119, 1436, + 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, + 0, 52, 73, 72, 0, 0, 61, 62, 50, 0, + 0, 0, 1284, 0, 0, 0, 0, 0, 0, 0, + 1294, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 187, 0, 0, 0, 0, 1303, 0, 0, 1306, 0, + 0, 0, 187, 54, 55, 0, 56, 57, 58, 59, + 0, 0, 0, 0, 0, 1323, 0, 0, 1326, 0, + 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1085, 0, 0, + 0, 1199, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1200, 0, 0, 0, 140, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, + 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1653, 0, 1799, 576, + 0, 0, 1199, 0, 1806, 0, 0, 1799, 0, 0, + 0, 0, 612, 0, 1811, 0, 0, 0, 0, 0, + 0, 0, 1461, 0, 0, 0, 0, 0, 0, 1465, + 0, 1468, 0, 0, 0, 0, 1690, 0, 0, 0, + 1487, 0, 147, 152, 149, 155, 156, 157, 158, 160, + 161, 162, 163, 0, 0, 0, 0, 0, 164, 165, + 166, 167, 1081, 0, 0, 0, 0, 0, 0, 1717, + 1718, 0, 0, 1081, 1081, 1081, 1081, 1081, 0, 0, + 0, 0, 0, 0, 0, 0, 612, 0, 0, 1486, + 0, 0, 1081, 0, 0, 0, 1081, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1554, + 0, 0, 1205, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 612, 0, 0, 1199, 0, 0, 1902, + 1205, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1812, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 758, 1085, 0, 1199, 0, 1608, 1609, 1610, + 1611, 1612, 0, 0, 0, 0, 0, 1616, 1617, 1085, + 1619, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1972, 1973, 1974, 0, 0, 0, 0, + 0, 1627, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1629, 0, 0, + 1631, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1899, 0, + 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1199, 0, 0, - 0, 0, 0, 0, 0, 0, 1954, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1967, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1795, 2040, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1795, 0, 0, 611, 1655, - 0, 0, 575, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1795, 1795, 1795, 0, 0, 0, 1692, - 0, 0, 0, 0, 0, 0, 0, 2082, 0, 2084, - 0, 0, 0, 0, 0, 1795, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1081, 0, 0, 0, 0, - 0, 0, 1719, 1720, 0, 0, 1081, 1081, 1081, 1081, - 1081, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1795, 0, 1487, 0, 0, 1081, 0, 0, 0, 1081, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 611, 611, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1199, 0, 2162, 0, - 0, 0, 0, 0, 0, 0, 1795, 0, 0, 2099, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1808, 2108, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1081, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1799, 2046, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1799, 0, + 0, 612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1799, 1799, 1799, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1742, 0, + 2088, 0, 2090, 0, 0, 0, 0, 0, 1799, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1998, 0, 0, 0, 0, + 0, 0, 2004, 2005, 2006, 0, 0, 0, 0, 0, + 0, 1799, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1793, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 612, 612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1894, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1081, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1990, 0, 0, 0, 0, 0, 0, 1996, - 1997, 1998, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1894, 0, 33, 0, 1894, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1894, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 735, 722, 33, 2138, 671, 738, 642, 660, 747, 662, - 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, - 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, - 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, - 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, - 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, - 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, - 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, - 177, 178, 0, 2145, 2146, 0, 0, 0, 0, 0, - 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, - 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, - 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, - 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, - 0, 0, 648, 0, 692, 0, 0, 0, 627, 621, - 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, - 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, - 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, - 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, - 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, - 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, - 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, - 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, - 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, - 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, - 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, - 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, - 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, - 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, - 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, - 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, - 387, 284, 293, 713, 749, 338, 369, 218, 423, 388, - 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, - 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, - 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, - 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, - 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, - 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, - 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, - 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, - 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, - 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, - 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, - 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, - 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, - 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, - 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, - 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, - 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, - 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, - 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, - 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, - 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, - 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, - 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, - 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, - 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, - 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, - 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, - 1886, 0, 648, 0, 692, 0, 0, 0, 627, 621, - 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, - 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, - 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, - 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, - 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, - 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, - 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, - 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, - 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, - 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, - 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, - 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, - 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, - 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, - 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, - 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, - 387, 284, 293, 713, 749, 338, 369, 218, 423, 388, - 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, - 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, - 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, - 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, - 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, - 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, - 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, - 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, - 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, - 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, - 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, - 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, - 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, - 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, - 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, - 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, - 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, - 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, - 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, - 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, - 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, - 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, - 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, - 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, - 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, - 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, - 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, - 1748, 0, 648, 0, 692, 0, 0, 0, 627, 621, - 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, - 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, - 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, - 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, - 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, - 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, - 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, - 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, - 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, - 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, - 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, - 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, - 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, - 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, - 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, - 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, - 387, 284, 293, 713, 749, 338, 369, 218, 423, 388, - 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, - 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, - 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, - 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, - 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, - 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, - 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, - 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, - 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, - 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, - 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, - 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, - 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, - 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, - 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, - 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, - 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, - 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, - 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, - 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, - 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, - 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, - 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, - 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, - 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, - 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, - 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, - 1464, 0, 648, 0, 692, 0, 0, 0, 627, 621, - 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, - 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, - 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, - 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, - 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, - 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, - 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, - 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, - 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, - 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, - 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, - 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, - 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, - 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, - 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, - 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, - 387, 284, 293, 713, 749, 338, 369, 218, 423, 388, - 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, - 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, - 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, - 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, - 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, - 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, - 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, - 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, - 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, - 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, - 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, - 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, - 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, - 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, - 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, - 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, - 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, - 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, - 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, - 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, - 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, - 277, 224, 194, 326, 390, 253, 69, 0, 0, 176, - 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, - 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, - 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, - 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, - 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, - 0, 0, 648, 0, 692, 0, 0, 0, 627, 621, - 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, - 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, - 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, - 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, - 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, - 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, - 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, - 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, - 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, - 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, - 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, - 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, - 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, - 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, - 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, - 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, - 387, 284, 293, 713, 749, 338, 369, 218, 423, 388, - 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, - 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, - 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, - 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, - 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, - 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, - 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, - 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, - 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, - 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, - 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, - 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, - 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, - 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, - 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, - 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, - 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, - 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, - 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, - 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, - 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, - 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, - 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, - 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, - 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, - 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, - 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, - 0, 0, 648, 0, 692, 0, 0, 0, 627, 621, - 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, - 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, - 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, - 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, - 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, - 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, - 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, - 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, - 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, - 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, - 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, - 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, - 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, - 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, - 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, - 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, - 387, 284, 293, 713, 749, 338, 369, 218, 423, 388, - 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, - 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, - 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, - 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, - 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, - 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, - 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, - 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, - 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, - 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, - 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, - 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, - 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, - 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, - 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, - 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, - 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, - 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, - 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, - 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, - 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, - 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, - 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, - 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, - 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, - 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, - 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, - 0, 0, 648, 0, 692, 0, 0, 0, 627, 621, - 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, - 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, - 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, - 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, - 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, - 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, - 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, - 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, - 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, - 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, - 328, 412, 413, 228, 446, 207, 431, 201, 752, 430, - 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, - 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, - 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, - 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, - 441, 442, 213, 351, 264, 332, 420, 614, 751, 608, - 607, 284, 293, 713, 749, 338, 369, 218, 423, 388, - 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, - 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, - 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, - 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, - 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, - 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, - 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, - 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, - 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, - 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, - 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, - 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, - 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, - 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, - 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, - 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, - 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, - 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, - 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, - 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, - 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, - 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, - 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, - 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, - 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, - 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, - 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, - 0, 0, 648, 0, 692, 0, 0, 0, 627, 621, - 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, - 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, - 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, - 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, - 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, - 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, - 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, - 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, - 197, 397, 1089, 217, 378, 0, 0, 0, 199, 415, - 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, - 328, 412, 413, 228, 446, 207, 431, 201, 752, 430, - 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, - 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, - 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, - 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, - 441, 442, 213, 351, 264, 332, 420, 614, 751, 608, - 607, 284, 293, 713, 749, 338, 369, 218, 423, 388, - 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, - 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, - 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, - 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, - 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, - 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, - 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, - 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, - 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, - 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, - 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, - 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, - 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, - 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, - 735, 722, 0, 0, 671, 738, 642, 660, 747, 662, - 665, 705, 622, 684, 329, 657, 0, 646, 618, 653, - 619, 644, 673, 240, 677, 641, 724, 687, 737, 287, - 0, 624, 647, 343, 707, 380, 226, 296, 294, 407, - 250, 243, 239, 225, 271, 302, 341, 398, 335, 744, - 291, 694, 0, 389, 314, 0, 0, 0, 675, 727, - 682, 718, 670, 706, 631, 693, 739, 658, 702, 740, - 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, - 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, - 216, 0, 222, 699, 734, 655, 701, 236, 275, 242, - 235, 405, 704, 750, 617, 696, 0, 620, 623, 746, - 730, 650, 651, 0, 0, 0, 0, 0, 0, 0, - 674, 683, 715, 668, 0, 0, 0, 0, 0, 0, - 0, 0, 648, 0, 692, 0, 0, 0, 627, 621, - 0, 0, 0, 0, 672, 0, 0, 0, 630, 0, - 649, 716, 0, 615, 261, 625, 315, 720, 729, 669, - 434, 733, 667, 666, 736, 711, 628, 726, 661, 286, - 626, 283, 190, 204, 0, 659, 325, 364, 370, 725, - 645, 654, 227, 652, 368, 339, 421, 212, 251, 361, - 344, 366, 691, 709, 367, 292, 409, 356, 419, 435, - 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, - 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, - 197, 397, 605, 217, 378, 0, 0, 0, 199, 415, - 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, - 328, 412, 413, 228, 446, 207, 431, 201, 752, 430, - 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, - 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, - 195, 0, 391, 425, 447, 214, 640, 721, 404, 440, - 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, - 441, 442, 213, 351, 264, 332, 420, 614, 751, 608, - 607, 284, 293, 713, 749, 338, 369, 218, 423, 388, - 635, 639, 633, 634, 685, 686, 636, 741, 742, 743, - 717, 629, 0, 637, 638, 0, 723, 731, 732, 690, - 189, 202, 289, 745, 358, 254, 445, 429, 426, 616, - 632, 233, 643, 0, 0, 656, 663, 664, 676, 678, - 679, 680, 681, 689, 697, 698, 700, 708, 710, 712, - 714, 719, 728, 748, 191, 192, 203, 211, 220, 232, - 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, - 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, - 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, - 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, - 263, 418, 438, 0, 297, 688, 695, 299, 249, 265, - 274, 703, 428, 393, 206, 365, 255, 196, 223, 210, - 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, - 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, - 329, 0, 0, 1391, 0, 508, 0, 0, 0, 240, - 0, 507, 0, 0, 0, 287, 0, 0, 1392, 343, - 0, 380, 226, 296, 294, 407, 250, 243, 239, 225, - 271, 302, 341, 398, 335, 551, 291, 0, 0, 389, - 314, 0, 0, 0, 0, 0, 542, 543, 0, 0, - 0, 0, 0, 0, 0, 0, 277, 224, 194, 326, - 390, 253, 69, 0, 0, 176, 177, 178, 529, 528, - 531, 532, 533, 534, 0, 0, 216, 530, 222, 535, - 536, 537, 0, 236, 275, 242, 235, 405, 0, 0, - 0, 505, 522, 0, 550, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 519, 520, 595, 0, 0, 0, - 565, 0, 521, 0, 0, 514, 515, 517, 516, 518, - 523, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 261, 0, 315, 564, 0, 0, 434, 0, 0, 562, - 0, 0, 0, 0, 0, 286, 0, 283, 190, 204, - 0, 0, 325, 364, 370, 0, 0, 0, 227, 0, - 368, 339, 421, 212, 251, 361, 344, 366, 0, 0, - 367, 292, 409, 356, 419, 435, 436, 234, 319, 427, - 402, 432, 444, 205, 231, 333, 395, 424, 386, 312, - 406, 282, 385, 259, 193, 290, 197, 397, 417, 217, - 378, 0, 0, 0, 199, 415, 394, 309, 279, 280, - 198, 0, 360, 238, 257, 229, 328, 412, 413, 228, - 446, 207, 431, 201, 208, 430, 321, 408, 416, 310, - 301, 200, 414, 308, 300, 285, 248, 267, 354, 295, - 355, 268, 317, 316, 318, 0, 195, 0, 391, 425, - 447, 214, 0, 0, 404, 440, 443, 0, 357, 215, - 258, 247, 353, 256, 288, 439, 441, 442, 213, 351, - 264, 332, 420, 320, 209, 270, 387, 284, 293, 0, - 0, 338, 369, 218, 423, 388, 552, 563, 558, 559, - 556, 557, 0, 555, 554, 553, 566, 544, 545, 546, - 547, 549, 0, 560, 561, 548, 189, 202, 289, 0, - 358, 254, 445, 429, 426, 0, 0, 233, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 191, 192, 203, 211, 220, 232, 245, 252, 262, 266, - 269, 272, 273, 276, 281, 298, 303, 304, 305, 306, - 322, 323, 324, 327, 330, 331, 334, 336, 337, 340, - 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, - 373, 374, 375, 376, 377, 381, 382, 383, 384, 392, - 396, 410, 411, 422, 433, 437, 263, 418, 438, 0, - 297, 0, 0, 299, 249, 265, 274, 0, 428, 393, - 206, 365, 255, 196, 223, 210, 230, 244, 246, 278, - 307, 313, 342, 345, 260, 241, 221, 362, 219, 379, - 399, 400, 401, 403, 311, 237, 329, 0, 0, 0, - 0, 508, 0, 0, 0, 240, 0, 507, 0, 0, - 0, 287, 0, 0, 0, 343, 0, 380, 226, 296, - 294, 407, 250, 243, 239, 225, 271, 302, 341, 398, - 335, 551, 291, 0, 0, 389, 314, 0, 0, 0, - 0, 0, 542, 543, 0, 0, 0, 0, 0, 0, - 1503, 0, 277, 224, 194, 326, 390, 253, 69, 0, - 0, 176, 177, 178, 529, 528, 531, 532, 533, 534, - 0, 0, 216, 530, 222, 535, 536, 537, 1504, 236, - 275, 242, 235, 405, 0, 0, 0, 505, 522, 0, - 550, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 519, 520, 0, 0, 0, 0, 565, 0, 521, 0, - 0, 514, 515, 517, 516, 518, 523, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 261, 0, 315, 564, - 0, 0, 434, 0, 0, 562, 0, 0, 0, 0, - 0, 286, 0, 283, 190, 204, 0, 0, 325, 364, - 370, 0, 0, 0, 227, 0, 368, 339, 421, 212, - 251, 361, 344, 366, 0, 0, 367, 292, 409, 356, - 419, 435, 436, 234, 319, 427, 402, 432, 444, 205, - 231, 333, 395, 424, 386, 312, 406, 282, 385, 259, - 193, 290, 197, 397, 417, 217, 378, 0, 0, 0, - 199, 415, 394, 309, 279, 280, 198, 0, 360, 238, - 257, 229, 328, 412, 413, 228, 446, 207, 431, 201, - 208, 430, 321, 408, 416, 310, 301, 200, 414, 308, - 300, 285, 248, 267, 354, 295, 355, 268, 317, 316, - 318, 0, 195, 0, 391, 425, 447, 214, 0, 0, - 404, 440, 443, 0, 357, 215, 258, 247, 353, 256, - 288, 439, 441, 442, 213, 351, 264, 332, 420, 320, - 209, 270, 387, 284, 293, 0, 0, 338, 369, 218, - 423, 388, 552, 563, 558, 559, 556, 557, 0, 555, - 554, 553, 566, 544, 545, 546, 547, 549, 0, 560, - 561, 548, 189, 202, 289, 0, 358, 254, 445, 429, - 426, 0, 0, 233, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 191, 192, 203, 211, - 220, 232, 245, 252, 262, 266, 269, 272, 273, 276, - 281, 298, 303, 304, 305, 306, 322, 323, 324, 327, - 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, - 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, - 377, 381, 382, 383, 384, 392, 396, 410, 411, 422, - 433, 437, 263, 418, 438, 0, 297, 0, 0, 299, - 249, 265, 274, 0, 428, 393, 206, 365, 255, 196, - 223, 210, 230, 244, 246, 278, 307, 313, 342, 345, - 260, 241, 221, 362, 219, 379, 399, 400, 401, 403, - 311, 237, 329, 0, 0, 0, 0, 508, 0, 0, - 0, 240, 0, 507, 0, 0, 0, 287, 0, 0, - 0, 343, 0, 380, 226, 296, 294, 407, 250, 243, - 239, 225, 271, 302, 341, 398, 335, 551, 291, 0, - 0, 389, 314, 0, 0, 0, 0, 0, 542, 543, - 0, 0, 0, 0, 0, 0, 0, 0, 277, 224, - 194, 326, 390, 253, 69, 0, 583, 176, 177, 178, - 529, 528, 531, 532, 533, 534, 0, 0, 216, 530, - 222, 535, 536, 537, 0, 236, 275, 242, 235, 405, - 0, 0, 0, 505, 522, 0, 550, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 519, 520, 0, 0, - 0, 0, 565, 0, 521, 0, 0, 514, 515, 517, - 516, 518, 523, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 261, 0, 315, 564, 0, 0, 434, 0, - 0, 562, 0, 0, 0, 0, 0, 286, 0, 283, - 190, 204, 0, 0, 325, 364, 370, 0, 0, 0, - 227, 0, 368, 339, 421, 212, 251, 361, 344, 366, - 0, 0, 367, 292, 409, 356, 419, 435, 436, 234, - 319, 427, 402, 432, 444, 205, 231, 333, 395, 424, - 386, 312, 406, 282, 385, 259, 193, 290, 197, 397, - 417, 217, 378, 0, 0, 0, 199, 415, 394, 309, - 279, 280, 198, 0, 360, 238, 257, 229, 328, 412, - 413, 228, 446, 207, 431, 201, 208, 430, 321, 408, - 416, 310, 301, 200, 414, 308, 300, 285, 248, 267, - 354, 295, 355, 268, 317, 316, 318, 0, 195, 0, - 391, 425, 447, 214, 0, 0, 404, 440, 443, 0, - 357, 215, 258, 247, 353, 256, 288, 439, 441, 442, - 213, 351, 264, 332, 420, 320, 209, 270, 387, 284, - 293, 0, 0, 338, 369, 218, 423, 388, 552, 563, - 558, 559, 556, 557, 0, 555, 554, 553, 566, 544, - 545, 546, 547, 549, 0, 560, 561, 548, 189, 202, - 289, 0, 358, 254, 445, 429, 426, 0, 0, 233, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 191, 192, 203, 211, 220, 232, 245, 252, - 262, 266, 269, 272, 273, 276, 281, 298, 303, 304, - 305, 306, 322, 323, 324, 327, 330, 331, 334, 336, - 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, - 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, - 384, 392, 396, 410, 411, 422, 433, 437, 263, 418, - 438, 0, 297, 0, 0, 299, 249, 265, 274, 0, - 428, 393, 206, 365, 255, 196, 223, 210, 230, 244, - 246, 278, 307, 313, 342, 345, 260, 241, 221, 362, - 219, 379, 399, 400, 401, 403, 311, 237, 329, 0, - 0, 0, 0, 508, 0, 0, 0, 240, 0, 507, - 0, 0, 0, 287, 0, 0, 0, 343, 0, 380, - 226, 296, 294, 407, 250, 243, 239, 225, 271, 302, - 341, 398, 335, 551, 291, 0, 0, 389, 314, 0, - 0, 0, 0, 0, 542, 543, 0, 0, 0, 0, - 0, 0, 0, 0, 277, 224, 194, 326, 390, 253, - 69, 0, 0, 176, 177, 178, 529, 528, 531, 532, - 533, 534, 0, 0, 216, 530, 222, 535, 536, 537, - 0, 236, 275, 242, 235, 405, 0, 0, 0, 505, - 522, 0, 550, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 519, 520, 595, 0, 0, 0, 565, 0, - 521, 0, 0, 514, 515, 517, 516, 518, 523, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 261, 0, - 315, 564, 0, 0, 434, 0, 0, 562, 0, 0, - 0, 0, 0, 286, 0, 283, 190, 204, 0, 0, - 325, 364, 370, 0, 0, 0, 227, 0, 368, 339, - 421, 212, 251, 361, 344, 366, 0, 0, 367, 292, - 409, 356, 419, 435, 436, 234, 319, 427, 402, 432, - 444, 205, 231, 333, 395, 424, 386, 312, 406, 282, - 385, 259, 193, 290, 197, 397, 417, 217, 378, 0, - 0, 0, 199, 415, 394, 309, 279, 280, 198, 0, - 360, 238, 257, 229, 328, 412, 413, 228, 446, 207, - 431, 201, 208, 430, 321, 408, 416, 310, 301, 200, - 414, 308, 300, 285, 248, 267, 354, 295, 355, 268, - 317, 316, 318, 0, 195, 0, 391, 425, 447, 214, - 0, 0, 404, 440, 443, 0, 357, 215, 258, 247, - 353, 256, 288, 439, 441, 442, 213, 351, 264, 332, - 420, 320, 209, 270, 387, 284, 293, 0, 0, 338, - 369, 218, 423, 388, 552, 563, 558, 559, 556, 557, - 0, 555, 554, 553, 566, 544, 545, 546, 547, 549, - 0, 560, 561, 548, 189, 202, 289, 0, 358, 254, - 445, 429, 426, 0, 0, 233, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, - 203, 211, 220, 232, 245, 252, 262, 266, 269, 272, - 273, 276, 281, 298, 303, 304, 305, 306, 322, 323, - 324, 327, 330, 331, 334, 336, 337, 340, 346, 347, - 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, - 375, 376, 377, 381, 382, 383, 384, 392, 396, 410, - 411, 422, 433, 437, 263, 418, 438, 0, 297, 0, - 0, 299, 249, 265, 274, 0, 428, 393, 206, 365, - 255, 196, 223, 210, 230, 244, 246, 278, 307, 313, - 342, 345, 260, 241, 221, 362, 219, 379, 399, 400, - 401, 403, 311, 237, 329, 0, 0, 0, 0, 508, - 0, 0, 0, 240, 0, 507, 0, 0, 0, 287, - 0, 0, 0, 343, 0, 380, 226, 296, 294, 407, - 250, 243, 239, 225, 271, 302, 341, 398, 335, 551, - 291, 0, 0, 389, 314, 0, 0, 0, 0, 0, - 542, 543, 0, 0, 0, 0, 0, 0, 0, 0, - 277, 224, 194, 326, 390, 253, 69, 0, 0, 176, - 177, 178, 529, 1409, 531, 532, 533, 534, 0, 0, - 216, 530, 222, 535, 536, 537, 0, 236, 275, 242, - 235, 405, 0, 0, 0, 505, 522, 0, 550, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 519, 520, - 595, 0, 0, 0, 565, 0, 521, 0, 0, 514, - 515, 517, 516, 518, 523, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 261, 0, 315, 564, 0, 0, - 434, 0, 0, 562, 0, 0, 0, 0, 0, 286, - 0, 283, 190, 204, 0, 0, 325, 364, 370, 0, - 0, 0, 227, 0, 368, 339, 421, 212, 251, 361, - 344, 366, 0, 0, 367, 292, 409, 356, 419, 435, - 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, - 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, - 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, - 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, - 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, - 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, - 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, - 195, 0, 391, 425, 447, 214, 0, 0, 404, 440, - 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, - 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, - 387, 284, 293, 0, 0, 338, 369, 218, 423, 388, - 552, 563, 558, 559, 556, 557, 0, 555, 554, 553, - 566, 544, 545, 546, 547, 549, 0, 560, 561, 548, - 189, 202, 289, 0, 358, 254, 445, 429, 426, 0, - 0, 233, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 191, 192, 203, 211, 220, 232, - 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, - 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, - 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, - 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, - 263, 418, 438, 0, 297, 0, 0, 299, 249, 265, - 274, 0, 428, 393, 206, 365, 255, 196, 223, 210, - 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, - 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, - 329, 0, 0, 0, 0, 508, 0, 0, 0, 240, - 0, 507, 0, 0, 0, 287, 0, 0, 0, 343, - 0, 380, 226, 296, 294, 407, 250, 243, 239, 225, - 271, 302, 341, 398, 335, 551, 291, 0, 0, 389, - 314, 0, 0, 0, 0, 0, 542, 543, 0, 0, - 0, 0, 0, 0, 0, 0, 277, 224, 194, 326, - 390, 253, 69, 0, 0, 176, 177, 178, 529, 1406, - 531, 532, 533, 534, 0, 0, 216, 530, 222, 535, - 536, 537, 0, 236, 275, 242, 235, 405, 0, 0, - 0, 505, 522, 0, 550, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 519, 520, 595, 0, 0, 0, - 565, 0, 521, 0, 0, 514, 515, 517, 516, 518, - 523, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 261, 0, 315, 564, 0, 0, 434, 0, 0, 562, - 0, 0, 0, 0, 0, 286, 0, 283, 190, 204, - 0, 0, 325, 364, 370, 0, 0, 0, 227, 0, - 368, 339, 421, 212, 251, 361, 344, 366, 0, 0, - 367, 292, 409, 356, 419, 435, 436, 234, 319, 427, - 402, 432, 444, 205, 231, 333, 395, 424, 386, 312, - 406, 282, 385, 259, 193, 290, 197, 397, 417, 217, - 378, 0, 0, 0, 199, 415, 394, 309, 279, 280, - 198, 0, 360, 238, 257, 229, 328, 412, 413, 228, - 446, 207, 431, 201, 208, 430, 321, 408, 416, 310, - 301, 200, 414, 308, 300, 285, 248, 267, 354, 295, - 355, 268, 317, 316, 318, 0, 195, 0, 391, 425, - 447, 214, 0, 0, 404, 440, 443, 0, 357, 215, - 258, 247, 353, 256, 288, 439, 441, 442, 213, 351, - 264, 332, 420, 320, 209, 270, 387, 284, 293, 0, - 0, 338, 369, 218, 423, 388, 552, 563, 558, 559, - 556, 557, 0, 555, 554, 553, 566, 544, 545, 546, - 547, 549, 0, 560, 561, 548, 189, 202, 289, 0, - 358, 254, 445, 429, 426, 0, 0, 233, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 191, 192, 203, 211, 220, 232, 245, 252, 262, 266, - 269, 272, 273, 276, 281, 298, 303, 304, 305, 306, - 322, 323, 324, 327, 330, 331, 334, 336, 337, 340, - 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, - 373, 374, 375, 376, 377, 381, 382, 383, 384, 392, - 396, 410, 411, 422, 433, 437, 263, 418, 438, 0, - 297, 0, 0, 299, 249, 265, 274, 0, 428, 393, - 206, 365, 255, 196, 223, 210, 230, 244, 246, 278, - 307, 313, 342, 345, 260, 241, 221, 362, 219, 379, - 399, 400, 401, 403, 311, 237, 576, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, - 0, 0, 0, 0, 508, 0, 0, 0, 240, 0, - 507, 0, 0, 0, 287, 0, 0, 0, 343, 0, - 380, 226, 296, 294, 407, 250, 243, 239, 225, 271, - 302, 341, 398, 335, 551, 291, 0, 0, 389, 314, - 0, 0, 0, 0, 0, 542, 543, 0, 0, 0, - 0, 0, 0, 0, 0, 277, 224, 194, 326, 390, - 253, 69, 0, 0, 176, 177, 178, 529, 528, 531, - 532, 533, 534, 0, 0, 216, 530, 222, 535, 536, - 537, 0, 236, 275, 242, 235, 405, 0, 0, 0, - 505, 522, 0, 550, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 519, 520, 0, 0, 0, 0, 565, - 0, 521, 0, 0, 514, 515, 517, 516, 518, 523, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, - 0, 315, 564, 0, 0, 434, 0, 0, 562, 0, - 0, 0, 0, 0, 286, 0, 283, 190, 204, 0, - 0, 325, 364, 370, 0, 0, 0, 227, 0, 368, - 339, 421, 212, 251, 361, 344, 366, 0, 0, 367, - 292, 409, 356, 419, 435, 436, 234, 319, 427, 402, - 432, 444, 205, 231, 333, 395, 424, 386, 312, 406, - 282, 385, 259, 193, 290, 197, 397, 417, 217, 378, - 0, 0, 0, 199, 415, 394, 309, 279, 280, 198, - 0, 360, 238, 257, 229, 328, 412, 413, 228, 446, - 207, 431, 201, 208, 430, 321, 408, 416, 310, 301, - 200, 414, 308, 300, 285, 248, 267, 354, 295, 355, - 268, 317, 316, 318, 0, 195, 0, 391, 425, 447, - 214, 0, 0, 404, 440, 443, 0, 357, 215, 258, - 247, 353, 256, 288, 439, 441, 442, 213, 351, 264, - 332, 420, 320, 209, 270, 387, 284, 293, 0, 0, - 338, 369, 218, 423, 388, 552, 563, 558, 559, 556, - 557, 0, 555, 554, 553, 566, 544, 545, 546, 547, - 549, 0, 560, 561, 548, 189, 202, 289, 0, 358, - 254, 445, 429, 426, 0, 0, 233, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, - 192, 203, 211, 220, 232, 245, 252, 262, 266, 269, - 272, 273, 276, 281, 298, 303, 304, 305, 306, 322, - 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, - 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, - 374, 375, 376, 377, 381, 382, 383, 384, 392, 396, - 410, 411, 422, 433, 437, 263, 418, 438, 0, 297, - 0, 0, 299, 249, 265, 274, 0, 428, 393, 206, - 365, 255, 196, 223, 210, 230, 244, 246, 278, 307, - 313, 342, 345, 260, 241, 221, 362, 219, 379, 399, - 400, 401, 403, 311, 237, 329, 0, 0, 0, 0, - 508, 0, 0, 0, 240, 0, 507, 0, 0, 0, - 287, 0, 0, 0, 343, 0, 380, 226, 296, 294, - 407, 250, 243, 239, 225, 271, 302, 341, 398, 335, - 551, 291, 0, 0, 389, 314, 0, 0, 0, 0, - 0, 542, 543, 0, 0, 0, 0, 0, 0, 0, - 0, 277, 224, 194, 326, 390, 253, 69, 0, 0, - 176, 177, 178, 529, 528, 531, 532, 533, 534, 0, - 0, 216, 530, 222, 535, 536, 537, 0, 236, 275, - 242, 235, 405, 0, 0, 0, 505, 522, 0, 550, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 519, - 520, 0, 0, 0, 0, 565, 0, 521, 0, 0, - 514, 515, 517, 516, 518, 523, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 261, 0, 315, 564, 0, - 0, 434, 0, 0, 562, 0, 0, 0, 0, 0, - 286, 0, 283, 190, 204, 0, 0, 325, 364, 370, - 0, 0, 0, 227, 0, 368, 339, 421, 212, 251, - 361, 344, 366, 0, 0, 367, 292, 409, 356, 419, - 435, 436, 234, 319, 427, 402, 432, 444, 205, 231, - 333, 395, 424, 386, 312, 406, 282, 385, 259, 193, - 290, 197, 397, 417, 217, 378, 0, 0, 0, 199, - 415, 394, 309, 279, 280, 198, 0, 360, 238, 257, - 229, 328, 412, 413, 228, 446, 207, 431, 201, 208, - 430, 321, 408, 416, 310, 301, 200, 414, 308, 300, - 285, 248, 267, 354, 295, 355, 268, 317, 316, 318, - 0, 195, 0, 391, 425, 447, 214, 0, 0, 404, - 440, 443, 0, 357, 215, 258, 247, 353, 256, 288, - 439, 441, 442, 213, 351, 264, 332, 420, 320, 209, - 270, 387, 284, 293, 0, 0, 338, 369, 218, 423, - 388, 552, 563, 558, 559, 556, 557, 0, 555, 554, - 553, 566, 544, 545, 546, 547, 549, 0, 560, 561, - 548, 189, 202, 289, 0, 358, 254, 445, 429, 426, - 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 191, 192, 203, 211, 220, - 232, 245, 252, 262, 266, 269, 272, 273, 276, 281, - 298, 303, 304, 305, 306, 322, 323, 324, 327, 330, - 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, - 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, - 381, 382, 383, 384, 392, 396, 410, 411, 422, 433, - 437, 263, 418, 438, 0, 297, 0, 0, 299, 249, - 265, 274, 0, 428, 393, 206, 365, 255, 196, 223, - 210, 230, 244, 246, 278, 307, 313, 342, 345, 260, - 241, 221, 362, 219, 379, 399, 400, 401, 403, 311, - 237, 329, 0, 0, 0, 0, 0, 0, 0, 0, - 240, 0, 0, 0, 0, 0, 287, 0, 0, 0, - 343, 0, 380, 226, 296, 294, 407, 250, 243, 239, - 225, 271, 302, 341, 398, 335, 551, 291, 0, 0, - 389, 314, 0, 0, 0, 0, 0, 542, 543, 0, - 0, 0, 0, 0, 0, 0, 0, 277, 224, 194, - 326, 390, 253, 69, 0, 0, 176, 177, 178, 529, - 528, 531, 532, 533, 534, 0, 0, 216, 530, 222, - 535, 536, 537, 0, 236, 275, 242, 235, 405, 0, - 0, 0, 0, 522, 0, 550, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 519, 520, 0, 0, 0, - 0, 565, 0, 521, 0, 0, 514, 515, 517, 516, - 518, 523, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 261, 0, 315, 564, 0, 0, 434, 0, 0, - 562, 0, 0, 0, 0, 0, 286, 0, 283, 190, - 204, 0, 0, 325, 364, 370, 0, 0, 0, 227, - 0, 368, 339, 421, 212, 251, 361, 344, 366, 2166, - 0, 367, 292, 409, 356, 419, 435, 436, 234, 319, - 427, 402, 432, 444, 205, 231, 333, 395, 424, 386, - 312, 406, 282, 385, 259, 193, 290, 197, 397, 417, - 217, 378, 0, 0, 0, 199, 415, 394, 309, 279, - 280, 198, 0, 360, 238, 257, 229, 328, 412, 413, - 228, 446, 207, 431, 201, 208, 430, 321, 408, 416, - 310, 301, 200, 414, 308, 300, 285, 248, 267, 354, - 295, 355, 268, 317, 316, 318, 0, 195, 0, 391, - 425, 447, 214, 0, 0, 404, 440, 443, 0, 357, - 215, 258, 247, 353, 256, 288, 439, 441, 442, 213, - 351, 264, 332, 420, 320, 209, 270, 387, 284, 293, - 0, 0, 338, 369, 218, 423, 388, 552, 563, 558, - 559, 556, 557, 0, 555, 554, 553, 566, 544, 545, - 546, 547, 549, 0, 560, 561, 548, 189, 202, 289, - 0, 358, 254, 445, 429, 426, 0, 0, 233, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 191, 192, 203, 211, 220, 232, 245, 252, 262, - 266, 269, 272, 273, 276, 281, 298, 303, 304, 305, - 306, 322, 323, 324, 327, 330, 331, 334, 336, 337, - 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, - 372, 373, 374, 375, 376, 377, 381, 382, 383, 384, - 392, 396, 410, 411, 422, 433, 437, 263, 418, 438, - 0, 297, 0, 0, 299, 249, 265, 274, 0, 428, - 393, 206, 365, 255, 196, 223, 210, 230, 244, 246, - 278, 307, 313, 342, 345, 260, 241, 221, 362, 219, - 379, 399, 400, 401, 403, 311, 237, 329, 0, 0, - 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, - 0, 0, 287, 0, 0, 0, 343, 0, 380, 226, - 296, 294, 407, 250, 243, 239, 225, 271, 302, 341, - 398, 335, 551, 291, 0, 0, 389, 314, 0, 0, - 0, 0, 0, 542, 543, 0, 0, 0, 0, 0, - 0, 0, 0, 277, 224, 194, 326, 390, 253, 69, - 0, 583, 176, 177, 178, 529, 528, 531, 532, 533, - 534, 0, 0, 216, 530, 222, 535, 536, 537, 0, - 236, 275, 242, 235, 405, 0, 0, 0, 0, 522, - 0, 550, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 519, 520, 0, 0, 0, 0, 565, 0, 521, - 0, 0, 514, 515, 517, 516, 518, 523, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 261, 0, 315, - 564, 0, 0, 434, 0, 0, 562, 0, 0, 0, - 0, 0, 286, 0, 283, 190, 204, 0, 0, 325, - 364, 370, 0, 0, 0, 227, 0, 368, 339, 421, - 212, 251, 361, 344, 366, 0, 0, 367, 292, 409, - 356, 419, 435, 436, 234, 319, 427, 402, 432, 444, - 205, 231, 333, 395, 424, 386, 312, 406, 282, 385, - 259, 193, 290, 197, 397, 417, 217, 378, 0, 0, - 0, 199, 415, 394, 309, 279, 280, 198, 0, 360, - 238, 257, 229, 328, 412, 413, 228, 446, 207, 431, - 201, 208, 430, 321, 408, 416, 310, 301, 200, 414, - 308, 300, 285, 248, 267, 354, 295, 355, 268, 317, - 316, 318, 0, 195, 0, 391, 425, 447, 214, 0, - 0, 404, 440, 443, 0, 357, 215, 258, 247, 353, - 256, 288, 439, 441, 442, 213, 351, 264, 332, 420, - 320, 209, 270, 387, 284, 293, 0, 0, 338, 369, - 218, 423, 388, 552, 563, 558, 559, 556, 557, 0, - 555, 554, 553, 566, 544, 545, 546, 547, 549, 0, - 560, 561, 548, 189, 202, 289, 0, 358, 254, 445, - 429, 426, 0, 0, 233, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 191, 192, 203, - 211, 220, 232, 245, 252, 262, 266, 269, 272, 273, - 276, 281, 298, 303, 304, 305, 306, 322, 323, 324, - 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, - 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, - 376, 377, 381, 382, 383, 384, 392, 396, 410, 411, - 422, 433, 437, 263, 418, 438, 0, 297, 0, 0, - 299, 249, 265, 274, 0, 428, 393, 206, 365, 255, - 196, 223, 210, 230, 244, 246, 278, 307, 313, 342, - 345, 260, 241, 221, 362, 219, 379, 399, 400, 401, - 403, 311, 237, 329, 0, 0, 0, 0, 0, 0, - 0, 0, 240, 0, 0, 0, 0, 0, 287, 0, - 0, 0, 343, 0, 380, 226, 296, 294, 407, 250, - 243, 239, 225, 271, 302, 341, 398, 335, 551, 291, - 0, 0, 389, 314, 0, 0, 0, 0, 0, 542, - 543, 0, 0, 0, 0, 0, 0, 0, 0, 277, - 224, 194, 326, 390, 253, 69, 0, 0, 176, 177, - 178, 529, 528, 531, 532, 533, 534, 0, 0, 216, - 530, 222, 535, 536, 537, 0, 236, 275, 242, 235, - 405, 0, 0, 0, 0, 522, 0, 550, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 519, 520, 0, - 0, 0, 0, 565, 0, 521, 0, 0, 514, 515, - 517, 516, 518, 523, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 261, 0, 315, 564, 0, 0, 434, - 0, 0, 562, 0, 0, 0, 0, 0, 286, 0, - 283, 190, 204, 0, 0, 325, 364, 370, 0, 0, - 0, 227, 0, 368, 339, 421, 212, 251, 361, 344, - 366, 0, 0, 367, 292, 409, 356, 419, 435, 436, - 234, 319, 427, 402, 432, 444, 205, 231, 333, 395, - 424, 386, 312, 406, 282, 385, 259, 193, 290, 197, - 397, 417, 217, 378, 0, 0, 0, 199, 415, 394, - 309, 279, 280, 198, 0, 360, 238, 257, 229, 328, - 412, 413, 228, 446, 207, 431, 201, 208, 430, 321, - 408, 416, 310, 301, 200, 414, 308, 300, 285, 248, - 267, 354, 295, 355, 268, 317, 316, 318, 0, 195, - 0, 391, 425, 447, 214, 0, 0, 404, 440, 443, - 0, 357, 215, 258, 247, 353, 256, 288, 439, 441, - 442, 213, 351, 264, 332, 420, 320, 209, 270, 387, - 284, 293, 0, 0, 338, 369, 218, 423, 388, 552, - 563, 558, 559, 556, 557, 0, 555, 554, 553, 566, - 544, 545, 546, 547, 549, 0, 560, 561, 548, 189, - 202, 289, 0, 358, 254, 445, 429, 426, 0, 0, - 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 191, 192, 203, 211, 220, 232, 245, - 252, 262, 266, 269, 272, 273, 276, 281, 298, 303, - 304, 305, 306, 322, 323, 324, 327, 330, 331, 334, - 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, - 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, - 383, 384, 392, 396, 410, 411, 422, 433, 437, 263, - 418, 438, 0, 297, 0, 0, 299, 249, 265, 274, - 0, 428, 393, 206, 365, 255, 196, 223, 210, 230, - 244, 246, 278, 307, 313, 342, 345, 260, 241, 221, - 362, 219, 379, 399, 400, 401, 403, 311, 237, 329, - 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, - 0, 0, 0, 0, 287, 0, 0, 0, 343, 0, - 380, 226, 296, 294, 407, 250, 243, 239, 225, 271, - 302, 341, 398, 335, 0, 291, 0, 0, 389, 314, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 277, 224, 194, 326, 390, - 253, 0, 0, 0, 176, 177, 178, 0, 0, 0, - 0, 0, 0, 0, 0, 216, 0, 222, 0, 0, - 0, 0, 236, 275, 242, 235, 405, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 966, - 965, 975, 976, 968, 969, 970, 971, 972, 973, 974, - 967, 0, 0, 977, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, - 0, 315, 0, 0, 0, 434, 0, 0, 0, 0, - 0, 0, 0, 0, 286, 0, 283, 190, 204, 0, - 0, 325, 364, 370, 0, 0, 0, 227, 0, 368, - 339, 421, 212, 251, 361, 344, 366, 0, 0, 367, - 292, 409, 356, 419, 435, 436, 234, 319, 427, 402, - 432, 444, 205, 231, 333, 395, 424, 386, 312, 406, - 282, 385, 259, 193, 290, 197, 397, 417, 217, 378, - 0, 0, 0, 199, 415, 394, 309, 279, 280, 198, - 0, 360, 238, 257, 229, 328, 412, 413, 228, 446, - 207, 431, 201, 208, 430, 321, 408, 416, 310, 301, - 200, 414, 308, 300, 285, 248, 267, 354, 295, 355, - 268, 317, 316, 318, 0, 195, 0, 391, 425, 447, - 214, 0, 0, 404, 440, 443, 0, 357, 215, 258, - 247, 353, 256, 288, 439, 441, 442, 213, 351, 264, - 332, 420, 320, 209, 270, 387, 284, 293, 0, 0, - 338, 369, 218, 423, 388, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 189, 202, 289, 0, 358, - 254, 445, 429, 426, 0, 0, 233, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, - 192, 203, 211, 220, 232, 245, 252, 262, 266, 269, - 272, 273, 276, 281, 298, 303, 304, 305, 306, 322, - 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, - 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, - 374, 375, 376, 377, 381, 382, 383, 384, 392, 396, - 410, 411, 422, 433, 437, 263, 418, 438, 0, 297, - 0, 0, 299, 249, 265, 274, 0, 428, 393, 206, - 365, 255, 196, 223, 210, 230, 244, 246, 278, 307, - 313, 342, 345, 260, 241, 221, 362, 219, 379, 399, - 400, 401, 403, 311, 237, 329, 0, 0, 0, 0, - 0, 0, 0, 0, 240, 796, 0, 0, 0, 0, - 287, 0, 0, 0, 343, 0, 380, 226, 296, 294, - 407, 250, 243, 239, 225, 271, 302, 341, 398, 335, - 0, 291, 0, 0, 389, 314, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 277, 224, 194, 326, 390, 253, 0, 0, 0, - 176, 177, 178, 0, 0, 0, 0, 0, 0, 0, - 0, 216, 0, 222, 0, 0, 0, 0, 236, 275, - 242, 235, 405, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 261, 0, 315, 0, 0, - 795, 434, 0, 0, 0, 0, 0, 0, 792, 793, - 286, 760, 283, 190, 204, 786, 790, 325, 364, 370, - 0, 0, 0, 227, 0, 368, 339, 421, 212, 251, - 361, 344, 366, 0, 0, 367, 292, 409, 356, 419, - 435, 436, 234, 319, 427, 402, 432, 444, 205, 231, - 333, 395, 424, 386, 312, 406, 282, 385, 259, 193, - 290, 197, 397, 417, 217, 378, 0, 0, 0, 199, - 415, 394, 309, 279, 280, 198, 0, 360, 238, 257, - 229, 328, 412, 413, 228, 446, 207, 431, 201, 208, - 430, 321, 408, 416, 310, 301, 200, 414, 308, 300, - 285, 248, 267, 354, 295, 355, 268, 317, 316, 318, - 0, 195, 0, 391, 425, 447, 214, 0, 0, 404, - 440, 443, 0, 357, 215, 258, 247, 353, 256, 288, - 439, 441, 442, 213, 351, 264, 332, 420, 320, 209, - 270, 387, 284, 293, 0, 0, 338, 369, 218, 423, - 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 189, 202, 289, 0, 358, 254, 445, 429, 426, - 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 191, 192, 203, 211, 220, - 232, 245, 252, 262, 266, 269, 272, 273, 276, 281, - 298, 303, 304, 305, 306, 322, 323, 324, 327, 330, - 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, - 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, - 381, 382, 383, 384, 392, 396, 410, 411, 422, 433, - 437, 263, 418, 438, 0, 297, 0, 0, 299, 249, - 265, 274, 0, 428, 393, 206, 365, 255, 196, 223, - 210, 230, 244, 246, 278, 307, 313, 342, 345, 260, - 241, 221, 362, 219, 379, 399, 400, 401, 403, 311, - 237, 329, 0, 0, 0, 1067, 0, 0, 0, 0, - 240, 0, 0, 0, 0, 0, 287, 0, 0, 0, - 343, 0, 380, 226, 296, 294, 407, 250, 243, 239, - 225, 271, 302, 341, 398, 335, 0, 291, 0, 0, - 389, 314, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 277, 224, 194, - 326, 390, 253, 0, 0, 0, 176, 177, 178, 0, - 1069, 0, 0, 0, 0, 0, 0, 216, 0, 222, - 0, 0, 0, 0, 236, 275, 242, 235, 405, 955, - 956, 954, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 957, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 261, 0, 315, 0, 0, 0, 434, 0, 0, - 0, 0, 0, 0, 0, 0, 286, 0, 283, 190, - 204, 0, 0, 325, 364, 370, 0, 0, 0, 227, - 0, 368, 339, 421, 212, 251, 361, 344, 366, 0, - 0, 367, 292, 409, 356, 419, 435, 436, 234, 319, - 427, 402, 432, 444, 205, 231, 333, 395, 424, 386, - 312, 406, 282, 385, 259, 193, 290, 197, 397, 417, - 217, 378, 0, 0, 0, 199, 415, 394, 309, 279, - 280, 198, 0, 360, 238, 257, 229, 328, 412, 413, - 228, 446, 207, 431, 201, 208, 430, 321, 408, 416, - 310, 301, 200, 414, 308, 300, 285, 248, 267, 354, - 295, 355, 268, 317, 316, 318, 0, 195, 0, 391, - 425, 447, 214, 0, 0, 404, 440, 443, 0, 357, - 215, 258, 247, 353, 256, 288, 439, 441, 442, 213, - 351, 264, 332, 420, 320, 209, 270, 387, 284, 293, - 0, 0, 338, 369, 218, 423, 388, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 189, 202, 289, - 0, 358, 254, 445, 429, 426, 0, 0, 233, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 191, 192, 203, 211, 220, 232, 245, 252, 262, - 266, 269, 272, 273, 276, 281, 298, 303, 304, 305, - 306, 322, 323, 324, 327, 330, 331, 334, 336, 337, - 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, - 372, 373, 374, 375, 376, 377, 381, 382, 383, 384, - 392, 396, 410, 411, 422, 433, 437, 263, 418, 438, - 0, 297, 0, 0, 299, 249, 265, 274, 0, 428, - 393, 206, 365, 255, 196, 223, 210, 230, 244, 246, - 278, 307, 313, 342, 345, 260, 241, 221, 362, 219, - 379, 399, 400, 401, 403, 311, 237, 34, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 329, 0, 0, 0, 0, 0, 0, 0, 0, 240, - 0, 0, 0, 0, 0, 287, 0, 0, 0, 343, - 0, 380, 226, 296, 294, 407, 250, 243, 239, 225, - 271, 302, 341, 398, 335, 0, 291, 0, 0, 389, - 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 277, 224, 194, 326, - 390, 253, 69, 0, 583, 176, 177, 178, 0, 0, - 0, 0, 0, 0, 0, 0, 216, 0, 222, 0, - 0, 0, 0, 236, 275, 242, 235, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 261, 0, 315, 0, 0, 0, 434, 0, 0, 0, - 0, 0, 0, 0, 0, 286, 0, 283, 190, 204, - 0, 0, 325, 364, 370, 0, 0, 0, 227, 0, - 368, 339, 421, 212, 251, 361, 344, 366, 0, 0, - 367, 292, 409, 356, 419, 435, 436, 234, 319, 427, - 402, 432, 444, 205, 231, 333, 395, 424, 386, 312, - 406, 282, 385, 259, 193, 290, 197, 397, 417, 217, - 378, 0, 0, 0, 199, 415, 394, 309, 279, 280, - 198, 0, 360, 238, 257, 229, 328, 412, 413, 228, - 446, 207, 431, 201, 208, 430, 321, 408, 416, 310, - 301, 200, 414, 308, 300, 285, 248, 267, 354, 295, - 355, 268, 317, 316, 318, 0, 195, 0, 391, 425, - 447, 214, 0, 0, 404, 440, 443, 0, 357, 215, - 258, 247, 353, 256, 288, 439, 441, 442, 213, 351, - 264, 332, 420, 320, 209, 270, 387, 284, 293, 0, - 0, 338, 369, 218, 423, 388, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 189, 202, 289, 0, - 358, 254, 445, 429, 426, 0, 0, 233, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 191, 192, 203, 211, 220, 232, 245, 252, 262, 266, - 269, 272, 273, 276, 281, 298, 303, 304, 305, 306, - 322, 323, 324, 327, 330, 331, 334, 336, 337, 340, - 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, - 373, 374, 375, 376, 377, 381, 382, 383, 384, 392, - 396, 410, 411, 422, 433, 437, 263, 418, 438, 0, - 297, 0, 0, 299, 249, 265, 274, 0, 428, 393, - 206, 365, 255, 196, 223, 210, 230, 244, 246, 278, - 307, 313, 342, 345, 260, 241, 221, 362, 219, 379, - 399, 400, 401, 403, 311, 237, 329, 0, 0, 0, - 1436, 0, 0, 0, 0, 240, 0, 0, 0, 0, - 0, 287, 0, 0, 0, 343, 0, 380, 226, 296, - 294, 407, 250, 243, 239, 225, 271, 302, 341, 398, - 335, 0, 291, 0, 0, 389, 314, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 277, 224, 194, 326, 390, 253, 0, 0, - 0, 176, 177, 178, 0, 1438, 0, 0, 0, 0, - 0, 0, 216, 0, 222, 0, 0, 0, 0, 236, - 275, 242, 235, 405, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 261, 0, 315, 0, - 0, 0, 434, 0, 0, 0, 0, 0, 0, 0, - 0, 286, 0, 283, 190, 204, 0, 0, 325, 364, - 370, 0, 0, 0, 227, 0, 368, 339, 421, 212, - 251, 361, 344, 366, 0, 1434, 367, 292, 409, 356, - 419, 435, 436, 234, 319, 427, 402, 432, 444, 205, - 231, 333, 395, 424, 386, 312, 406, 282, 385, 259, - 193, 290, 197, 397, 417, 217, 378, 0, 0, 0, - 199, 415, 394, 309, 279, 280, 198, 0, 360, 238, - 257, 229, 328, 412, 413, 228, 446, 207, 431, 201, - 208, 430, 321, 408, 416, 310, 301, 200, 414, 308, - 300, 285, 248, 267, 354, 295, 355, 268, 317, 316, - 318, 0, 195, 0, 391, 425, 447, 214, 0, 0, - 404, 440, 443, 0, 357, 215, 258, 247, 353, 256, - 288, 439, 441, 442, 213, 351, 264, 332, 420, 320, - 209, 270, 387, 284, 293, 0, 0, 338, 369, 218, - 423, 388, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 189, 202, 289, 0, 358, 254, 445, 429, - 426, 0, 0, 233, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 191, 192, 203, 211, - 220, 232, 245, 252, 262, 266, 269, 272, 273, 276, - 281, 298, 303, 304, 305, 306, 322, 323, 324, 327, - 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, - 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, - 377, 381, 382, 383, 384, 392, 396, 410, 411, 422, - 433, 437, 263, 418, 438, 0, 297, 0, 0, 299, - 249, 265, 274, 0, 428, 393, 206, 365, 255, 196, - 223, 210, 230, 244, 246, 278, 307, 313, 342, 345, - 260, 241, 221, 362, 219, 379, 399, 400, 401, 403, - 311, 237, 329, 0, 0, 0, 0, 0, 0, 0, - 0, 240, 0, 0, 0, 0, 0, 287, 0, 0, - 0, 343, 0, 380, 226, 296, 294, 407, 250, 243, - 239, 225, 271, 302, 341, 398, 335, 0, 291, 0, - 0, 389, 314, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 277, 224, - 194, 326, 390, 253, 0, 0, 0, 176, 177, 178, - 0, 0, 0, 0, 0, 0, 0, 0, 216, 0, - 222, 0, 0, 0, 0, 236, 275, 242, 235, 405, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 261, 0, 315, 0, 0, 0, 434, 0, - 0, 0, 0, 0, 0, 0, 0, 286, 760, 283, - 190, 204, 758, 0, 325, 364, 370, 0, 0, 0, - 227, 0, 368, 339, 421, 212, 251, 361, 344, 366, - 0, 0, 367, 292, 409, 356, 419, 435, 436, 234, - 319, 427, 402, 432, 444, 205, 231, 333, 395, 424, - 386, 312, 406, 282, 385, 259, 193, 290, 197, 397, - 417, 217, 378, 0, 0, 0, 199, 415, 394, 309, - 279, 280, 198, 0, 360, 238, 257, 229, 328, 412, - 413, 228, 446, 207, 431, 201, 208, 430, 321, 408, - 416, 310, 301, 200, 414, 308, 300, 285, 248, 267, - 354, 295, 355, 268, 317, 316, 318, 0, 195, 0, - 391, 425, 447, 214, 0, 0, 404, 440, 443, 0, - 357, 215, 258, 247, 353, 256, 288, 439, 441, 442, - 213, 351, 264, 332, 420, 320, 209, 270, 387, 284, - 293, 0, 0, 338, 369, 218, 423, 388, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 189, 202, - 289, 0, 358, 254, 445, 429, 426, 0, 0, 233, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 191, 192, 203, 211, 220, 232, 245, 252, - 262, 266, 269, 272, 273, 276, 281, 298, 303, 304, - 305, 306, 322, 323, 324, 327, 330, 331, 334, 336, - 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, - 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, - 384, 392, 396, 410, 411, 422, 433, 437, 263, 418, - 438, 0, 297, 0, 0, 299, 249, 265, 274, 0, - 428, 393, 206, 365, 255, 196, 223, 210, 230, 244, - 246, 278, 307, 313, 342, 345, 260, 241, 221, 362, - 219, 379, 399, 400, 401, 403, 311, 237, 329, 0, - 0, 0, 1436, 0, 0, 0, 0, 240, 0, 0, - 0, 0, 0, 287, 0, 0, 0, 343, 0, 380, - 226, 296, 294, 407, 250, 243, 239, 225, 271, 302, - 341, 398, 335, 0, 291, 0, 0, 389, 314, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 277, 224, 194, 326, 390, 253, - 0, 0, 0, 176, 177, 178, 0, 1438, 0, 0, - 0, 0, 0, 0, 216, 0, 222, 0, 0, 0, - 0, 236, 275, 242, 235, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 261, 0, - 315, 0, 0, 0, 434, 0, 0, 0, 0, 0, - 0, 0, 0, 286, 0, 283, 190, 204, 0, 0, - 325, 364, 370, 0, 0, 0, 227, 0, 368, 339, - 421, 212, 251, 361, 344, 366, 0, 0, 367, 292, - 409, 356, 419, 435, 436, 234, 319, 427, 402, 432, - 444, 205, 231, 333, 395, 424, 386, 312, 406, 282, - 385, 259, 193, 290, 197, 397, 417, 217, 378, 0, - 0, 0, 199, 415, 394, 309, 279, 280, 198, 0, - 360, 238, 257, 229, 328, 412, 413, 228, 446, 207, - 431, 201, 208, 430, 321, 408, 416, 310, 301, 200, - 414, 308, 300, 285, 248, 267, 354, 295, 355, 268, - 317, 316, 318, 0, 195, 0, 391, 425, 447, 214, - 0, 0, 404, 440, 443, 0, 357, 215, 258, 247, - 353, 256, 288, 439, 441, 442, 213, 351, 264, 332, - 420, 320, 209, 270, 387, 284, 293, 0, 0, 338, - 369, 218, 423, 388, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 189, 202, 289, 0, 358, 254, - 445, 429, 426, 0, 0, 233, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, - 203, 211, 220, 232, 245, 252, 262, 266, 269, 272, - 273, 276, 281, 298, 303, 304, 305, 306, 322, 323, - 324, 327, 330, 331, 334, 336, 337, 340, 346, 347, - 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, - 375, 376, 377, 381, 382, 383, 384, 392, 396, 410, - 411, 422, 433, 437, 263, 418, 438, 0, 297, 0, - 0, 299, 249, 265, 274, 0, 428, 393, 206, 365, - 255, 196, 223, 210, 230, 244, 246, 278, 307, 313, - 342, 345, 260, 241, 221, 362, 219, 379, 399, 400, - 401, 403, 311, 237, 34, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 329, 0, 0, - 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, - 0, 0, 287, 0, 0, 0, 343, 0, 380, 226, - 296, 294, 407, 250, 243, 239, 225, 271, 302, 341, - 398, 335, 0, 291, 0, 0, 389, 314, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 277, 224, 194, 326, 390, 253, 69, - 0, 0, 176, 177, 178, 0, 0, 0, 0, 0, - 0, 0, 0, 216, 0, 222, 0, 0, 0, 0, - 236, 275, 242, 235, 405, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 261, 0, 315, - 0, 0, 0, 434, 0, 0, 0, 0, 0, 0, - 0, 0, 286, 0, 283, 190, 204, 0, 0, 325, - 364, 370, 0, 0, 0, 227, 0, 368, 339, 421, - 212, 251, 361, 344, 366, 0, 0, 367, 292, 409, - 356, 419, 435, 436, 234, 319, 427, 402, 432, 444, - 205, 231, 333, 395, 424, 386, 312, 406, 282, 385, - 259, 193, 290, 197, 397, 417, 217, 378, 0, 0, - 0, 199, 415, 394, 309, 279, 280, 198, 0, 360, - 238, 257, 229, 328, 412, 413, 228, 446, 207, 431, - 201, 208, 430, 321, 408, 416, 310, 301, 200, 414, - 308, 300, 285, 248, 267, 354, 295, 355, 268, 317, - 316, 318, 0, 195, 0, 391, 425, 447, 214, 0, - 0, 404, 440, 443, 0, 357, 215, 258, 247, 353, - 256, 288, 439, 441, 442, 213, 351, 264, 332, 420, - 320, 209, 270, 387, 284, 293, 0, 0, 338, 369, - 218, 423, 388, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 189, 202, 289, 0, 358, 254, 445, - 429, 426, 0, 0, 233, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 191, 192, 203, - 211, 220, 232, 245, 252, 262, 266, 269, 272, 273, - 276, 281, 298, 303, 304, 305, 306, 322, 323, 324, - 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, - 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, - 376, 377, 381, 382, 383, 384, 392, 396, 410, 411, - 422, 433, 437, 263, 418, 438, 0, 297, 0, 0, - 299, 249, 265, 274, 0, 428, 393, 206, 365, 255, - 196, 223, 210, 230, 244, 246, 278, 307, 313, 342, - 345, 260, 241, 221, 362, 219, 379, 399, 400, 401, - 403, 311, 237, 329, 0, 0, 0, 0, 0, 0, - 0, 0, 240, 0, 0, 0, 0, 0, 287, 0, - 0, 0, 343, 0, 380, 226, 296, 294, 407, 250, - 243, 239, 225, 271, 302, 341, 398, 335, 0, 291, - 0, 0, 389, 314, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, - 224, 194, 326, 390, 253, 0, 0, 0, 176, 177, - 178, 0, 0, 1456, 0, 0, 1457, 0, 0, 216, - 0, 222, 0, 0, 0, 0, 236, 275, 242, 235, - 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 261, 0, 315, 0, 0, 0, 434, - 0, 0, 0, 0, 0, 0, 0, 0, 286, 0, - 283, 190, 204, 0, 0, 325, 364, 370, 0, 0, - 0, 227, 0, 368, 339, 421, 212, 251, 361, 344, - 366, 0, 0, 367, 292, 409, 356, 419, 435, 436, - 234, 319, 427, 402, 432, 444, 205, 231, 333, 395, - 424, 386, 312, 406, 282, 385, 259, 193, 290, 197, - 397, 417, 217, 378, 0, 0, 0, 199, 415, 394, - 309, 279, 280, 198, 0, 360, 238, 257, 229, 328, - 412, 413, 228, 446, 207, 431, 201, 208, 430, 321, - 408, 416, 310, 301, 200, 414, 308, 300, 285, 248, - 267, 354, 295, 355, 268, 317, 316, 318, 0, 195, - 0, 391, 425, 447, 214, 0, 0, 404, 440, 443, - 0, 357, 215, 258, 247, 353, 256, 288, 439, 441, - 442, 213, 351, 264, 332, 420, 320, 209, 270, 387, - 284, 293, 0, 0, 338, 369, 218, 423, 388, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, - 202, 289, 0, 358, 254, 445, 429, 426, 0, 0, - 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 191, 192, 203, 211, 220, 232, 245, - 252, 262, 266, 269, 272, 273, 276, 281, 298, 303, - 304, 305, 306, 322, 323, 324, 327, 330, 331, 334, - 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, - 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, - 383, 384, 392, 396, 410, 411, 422, 433, 437, 263, - 418, 438, 0, 297, 0, 0, 299, 249, 265, 274, - 0, 428, 393, 206, 365, 255, 196, 223, 210, 230, - 244, 246, 278, 307, 313, 342, 345, 260, 241, 221, - 362, 219, 379, 399, 400, 401, 403, 311, 237, 329, - 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, - 1100, 0, 0, 0, 287, 0, 0, 0, 343, 0, - 380, 226, 296, 294, 407, 250, 243, 239, 225, 271, - 302, 341, 398, 335, 0, 291, 0, 0, 389, 314, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 277, 224, 194, 326, 390, - 253, 0, 0, 0, 176, 177, 178, 0, 1099, 0, - 0, 0, 0, 0, 0, 216, 0, 222, 0, 0, - 0, 0, 236, 275, 242, 235, 405, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, - 0, 315, 0, 0, 0, 434, 0, 0, 0, 0, - 0, 0, 0, 0, 286, 0, 283, 190, 204, 0, - 0, 325, 364, 370, 0, 0, 0, 227, 0, 368, - 339, 421, 212, 251, 361, 344, 366, 0, 0, 367, - 292, 409, 356, 419, 435, 436, 234, 319, 427, 402, - 432, 444, 205, 231, 333, 395, 424, 386, 312, 406, - 282, 385, 259, 193, 290, 197, 397, 417, 217, 378, - 0, 0, 0, 199, 415, 394, 309, 279, 280, 198, - 0, 360, 238, 257, 229, 328, 412, 413, 228, 446, - 207, 431, 201, 208, 430, 321, 408, 416, 310, 301, - 200, 414, 308, 300, 285, 248, 267, 354, 295, 355, - 268, 317, 316, 318, 0, 195, 0, 391, 425, 447, - 214, 0, 0, 404, 440, 443, 0, 357, 215, 258, - 247, 353, 256, 288, 439, 441, 442, 213, 351, 264, - 332, 420, 320, 209, 270, 387, 284, 293, 0, 0, - 338, 369, 218, 423, 388, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 189, 202, 289, 0, 358, - 254, 445, 429, 426, 0, 0, 233, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, - 192, 203, 211, 220, 232, 245, 252, 262, 266, 269, - 272, 273, 276, 281, 298, 303, 304, 305, 306, 322, - 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, - 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, - 374, 375, 376, 377, 381, 382, 383, 384, 392, 396, - 410, 411, 422, 433, 437, 263, 418, 438, 0, 297, - 0, 0, 299, 249, 265, 274, 0, 428, 393, 206, - 365, 255, 196, 223, 210, 230, 244, 246, 278, 307, - 313, 342, 345, 260, 241, 221, 362, 219, 379, 399, - 400, 401, 403, 311, 237, 329, 0, 0, 0, 0, - 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, - 287, 0, 0, 0, 343, 0, 380, 226, 296, 294, - 407, 250, 243, 239, 225, 271, 302, 341, 398, 335, - 0, 291, 0, 0, 389, 314, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 277, 224, 194, 326, 390, 253, 0, 0, 583, - 176, 177, 178, 0, 0, 0, 0, 0, 0, 0, - 0, 216, 0, 222, 0, 0, 0, 0, 236, 275, - 242, 235, 405, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 261, 0, 315, 0, 0, - 0, 434, 0, 0, 0, 0, 0, 0, 0, 0, - 286, 0, 283, 190, 204, 0, 0, 325, 364, 370, - 0, 0, 0, 227, 0, 368, 339, 421, 212, 251, - 361, 344, 366, 0, 0, 367, 292, 409, 356, 419, - 435, 436, 234, 319, 427, 402, 432, 444, 205, 231, - 333, 395, 424, 386, 312, 406, 282, 385, 259, 193, - 290, 197, 397, 417, 217, 378, 0, 0, 0, 199, - 415, 394, 309, 279, 280, 198, 0, 360, 238, 257, - 229, 328, 412, 413, 228, 446, 207, 431, 201, 208, - 430, 321, 408, 416, 310, 301, 200, 414, 308, 300, - 285, 248, 267, 354, 295, 355, 268, 317, 316, 318, - 0, 195, 0, 391, 425, 447, 214, 0, 0, 404, - 440, 443, 0, 357, 215, 258, 247, 353, 256, 288, - 439, 441, 442, 213, 351, 264, 332, 420, 320, 209, - 270, 387, 284, 293, 0, 0, 338, 369, 218, 423, - 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 189, 202, 289, 0, 358, 254, 445, 429, 426, - 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 191, 192, 203, 211, 220, - 232, 245, 252, 262, 266, 269, 272, 273, 276, 281, - 298, 303, 304, 305, 306, 322, 323, 324, 327, 330, - 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, - 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, - 381, 382, 383, 384, 392, 396, 410, 411, 422, 433, - 437, 263, 418, 438, 0, 297, 0, 0, 299, 249, - 265, 274, 0, 428, 393, 206, 365, 255, 196, 223, - 210, 230, 244, 246, 278, 307, 313, 342, 345, 260, - 241, 221, 362, 219, 379, 399, 400, 401, 403, 311, - 237, 329, 0, 0, 0, 0, 0, 0, 0, 0, - 240, 0, 0, 0, 0, 0, 287, 0, 0, 0, - 343, 0, 380, 226, 296, 294, 407, 250, 243, 239, - 225, 271, 302, 341, 398, 335, 0, 291, 0, 0, - 389, 314, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 277, 224, 194, - 326, 390, 253, 69, 0, 0, 176, 177, 178, 0, - 0, 0, 0, 0, 0, 0, 0, 216, 0, 222, - 0, 0, 0, 0, 236, 275, 242, 235, 405, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 261, 0, 315, 0, 0, 0, 434, 0, 0, - 0, 0, 0, 0, 0, 0, 286, 0, 283, 190, - 204, 0, 0, 325, 364, 370, 0, 0, 0, 227, - 0, 368, 339, 421, 212, 251, 361, 344, 366, 0, - 0, 367, 292, 409, 356, 419, 435, 436, 234, 319, - 427, 402, 432, 444, 205, 231, 333, 395, 424, 386, - 312, 406, 282, 385, 259, 193, 290, 197, 397, 417, - 217, 378, 0, 0, 0, 199, 415, 394, 309, 279, - 280, 198, 0, 360, 238, 257, 229, 328, 412, 413, - 228, 446, 207, 431, 201, 208, 430, 321, 408, 416, - 310, 301, 200, 414, 308, 300, 285, 248, 267, 354, - 295, 355, 268, 317, 316, 318, 0, 195, 0, 391, - 425, 447, 214, 0, 0, 404, 440, 443, 0, 357, - 215, 258, 247, 353, 256, 288, 439, 441, 442, 213, - 351, 264, 332, 420, 320, 209, 270, 387, 284, 293, - 0, 0, 338, 369, 218, 423, 388, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 189, 202, 289, - 0, 358, 254, 445, 429, 426, 0, 0, 233, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 191, 192, 203, 211, 220, 232, 245, 252, 262, - 266, 269, 272, 273, 276, 281, 298, 303, 304, 305, - 306, 322, 323, 324, 327, 330, 331, 334, 336, 337, - 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, - 372, 373, 374, 375, 376, 377, 381, 382, 383, 384, - 392, 396, 410, 411, 422, 433, 437, 263, 418, 438, - 0, 297, 0, 0, 299, 249, 265, 274, 0, 428, - 393, 206, 365, 255, 196, 223, 210, 230, 244, 246, - 278, 307, 313, 342, 345, 260, 241, 221, 362, 219, - 379, 399, 400, 401, 403, 311, 237, 329, 0, 0, - 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, - 0, 0, 287, 0, 0, 0, 343, 0, 380, 226, - 296, 294, 407, 250, 243, 239, 225, 271, 302, 341, - 398, 335, 0, 291, 0, 0, 389, 314, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 277, 224, 194, 326, 390, 253, 0, - 0, 0, 176, 177, 178, 0, 1438, 0, 0, 0, - 0, 0, 0, 216, 0, 222, 0, 0, 0, 0, - 236, 275, 242, 235, 405, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 261, 0, 315, - 0, 0, 0, 434, 0, 0, 0, 0, 0, 0, - 0, 0, 286, 0, 283, 190, 204, 0, 0, 325, - 364, 370, 0, 0, 0, 227, 0, 368, 339, 421, - 212, 251, 361, 344, 366, 0, 0, 367, 292, 409, - 356, 419, 435, 436, 234, 319, 427, 402, 432, 444, - 205, 231, 333, 395, 424, 386, 312, 406, 282, 385, - 259, 193, 290, 197, 397, 417, 217, 378, 0, 0, - 0, 199, 415, 394, 309, 279, 280, 198, 0, 360, - 238, 257, 229, 328, 412, 413, 228, 446, 207, 431, - 201, 208, 430, 321, 408, 416, 310, 301, 200, 414, - 308, 300, 285, 248, 267, 354, 295, 355, 268, 317, - 316, 318, 0, 195, 0, 391, 425, 447, 214, 0, - 0, 404, 440, 443, 0, 357, 215, 258, 247, 353, - 256, 288, 439, 441, 442, 213, 351, 264, 332, 420, - 320, 209, 270, 387, 284, 293, 0, 0, 338, 369, - 218, 423, 388, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 189, 202, 289, 0, 358, 254, 445, - 429, 426, 0, 0, 233, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 191, 192, 203, - 211, 220, 232, 245, 252, 262, 266, 269, 272, 273, - 276, 281, 298, 303, 304, 305, 306, 322, 323, 324, - 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, - 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, - 376, 377, 381, 382, 383, 384, 392, 396, 410, 411, - 422, 433, 437, 263, 418, 438, 0, 297, 0, 0, - 299, 249, 265, 274, 0, 428, 393, 206, 365, 255, - 196, 223, 210, 230, 244, 246, 278, 307, 313, 342, - 345, 260, 241, 221, 362, 219, 379, 399, 400, 401, - 403, 311, 237, 329, 0, 0, 0, 0, 0, 0, - 0, 0, 240, 0, 0, 0, 0, 0, 287, 0, - 0, 0, 343, 0, 380, 226, 296, 294, 407, 250, - 243, 239, 225, 271, 302, 341, 398, 335, 0, 291, - 0, 0, 389, 314, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, - 224, 194, 326, 390, 253, 0, 0, 0, 176, 177, - 178, 0, 1069, 0, 0, 0, 0, 0, 0, 216, - 0, 222, 0, 0, 0, 0, 236, 275, 242, 235, - 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 261, 0, 315, 0, 0, 0, 434, - 0, 0, 0, 0, 0, 0, 0, 0, 286, 0, - 283, 190, 204, 0, 0, 325, 364, 370, 0, 0, - 0, 227, 0, 368, 339, 421, 212, 251, 361, 344, - 366, 0, 0, 367, 292, 409, 356, 419, 435, 436, - 234, 319, 427, 402, 432, 444, 205, 231, 333, 395, - 424, 386, 312, 406, 282, 385, 259, 193, 290, 197, - 397, 417, 217, 378, 0, 0, 0, 199, 415, 394, - 309, 279, 280, 198, 0, 360, 238, 257, 229, 328, - 412, 413, 228, 446, 207, 431, 201, 208, 430, 321, - 408, 416, 310, 301, 200, 414, 308, 300, 285, 248, - 267, 354, 295, 355, 268, 317, 316, 318, 0, 195, - 0, 391, 425, 447, 214, 0, 0, 404, 440, 443, - 0, 357, 215, 258, 247, 353, 256, 288, 439, 441, - 442, 213, 351, 264, 332, 420, 320, 209, 270, 387, - 284, 293, 0, 0, 338, 369, 218, 423, 388, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, - 202, 289, 0, 358, 254, 445, 429, 426, 0, 0, - 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 191, 192, 203, 211, 220, 232, 245, - 252, 262, 266, 269, 272, 273, 276, 281, 298, 303, - 304, 305, 306, 322, 323, 324, 327, 330, 331, 334, - 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, - 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, - 383, 384, 392, 396, 410, 411, 422, 433, 437, 263, - 418, 438, 0, 297, 0, 0, 299, 249, 265, 274, - 0, 428, 393, 206, 365, 255, 196, 223, 210, 230, - 244, 246, 278, 307, 313, 342, 345, 260, 241, 221, - 362, 219, 379, 399, 400, 401, 403, 311, 237, 329, - 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, - 0, 0, 0, 0, 287, 0, 0, 0, 343, 0, - 380, 226, 296, 294, 407, 250, 243, 239, 225, 271, - 302, 341, 398, 335, 0, 291, 0, 0, 389, 314, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 277, 224, 194, 326, 390, - 253, 0, 0, 0, 176, 177, 178, 0, 0, 0, - 0, 0, 0, 0, 0, 216, 0, 222, 0, 0, - 0, 0, 236, 275, 242, 235, 405, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, - 0, 315, 0, 0, 0, 434, 0, 0, 0, 0, - 0, 0, 0, 0, 286, 0, 283, 190, 204, 0, - 0, 325, 364, 370, 0, 0, 0, 227, 0, 368, - 339, 421, 212, 251, 361, 344, 366, 0, 0, 367, - 292, 409, 356, 419, 435, 436, 234, 319, 427, 402, - 432, 444, 205, 231, 333, 395, 424, 386, 312, 406, - 282, 385, 259, 193, 290, 197, 397, 417, 217, 378, - 0, 0, 0, 199, 415, 394, 309, 279, 280, 198, - 0, 360, 238, 257, 229, 328, 412, 413, 228, 446, - 207, 431, 201, 208, 430, 321, 408, 416, 310, 301, - 200, 414, 308, 300, 285, 248, 267, 354, 295, 355, - 268, 317, 316, 318, 0, 195, 0, 391, 425, 447, - 214, 0, 0, 404, 440, 443, 0, 357, 215, 258, - 247, 353, 256, 288, 439, 441, 442, 213, 351, 264, - 332, 420, 320, 209, 270, 387, 284, 293, 0, 0, - 338, 369, 218, 423, 388, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 189, 202, 289, 1341, 358, - 254, 445, 429, 426, 0, 0, 233, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, - 192, 203, 211, 220, 232, 245, 252, 262, 266, 269, - 272, 273, 276, 281, 298, 303, 304, 305, 306, 322, - 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, - 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, - 374, 375, 376, 377, 381, 382, 383, 384, 392, 396, - 410, 411, 422, 433, 437, 263, 418, 438, 0, 297, - 0, 0, 299, 249, 265, 274, 0, 428, 393, 206, - 365, 255, 196, 223, 210, 230, 244, 246, 278, 307, - 313, 342, 345, 260, 241, 221, 362, 219, 379, 399, - 400, 401, 403, 311, 237, 329, 0, 1224, 0, 0, - 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, - 287, 0, 0, 0, 343, 0, 380, 226, 296, 294, - 407, 250, 243, 239, 225, 271, 302, 341, 398, 335, - 0, 291, 0, 0, 389, 314, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 277, 224, 194, 326, 390, 253, 0, 0, 0, - 176, 177, 178, 0, 0, 0, 0, 0, 0, 0, - 0, 216, 0, 222, 0, 0, 0, 0, 236, 275, - 242, 235, 405, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 261, 0, 315, 0, 0, - 0, 434, 0, 0, 0, 0, 0, 0, 0, 0, - 286, 0, 283, 190, 204, 0, 0, 325, 364, 370, - 0, 0, 0, 227, 0, 368, 339, 421, 212, 251, - 361, 344, 366, 0, 0, 367, 292, 409, 356, 419, - 435, 436, 234, 319, 427, 402, 432, 444, 205, 231, - 333, 395, 424, 386, 312, 406, 282, 385, 259, 193, - 290, 197, 397, 417, 217, 378, 0, 0, 0, 199, - 415, 394, 309, 279, 280, 198, 0, 360, 238, 257, - 229, 328, 412, 413, 228, 446, 207, 431, 201, 208, - 430, 321, 408, 416, 310, 301, 200, 414, 308, 300, - 285, 248, 267, 354, 295, 355, 268, 317, 316, 318, - 0, 195, 0, 391, 425, 447, 214, 0, 0, 404, - 440, 443, 0, 357, 215, 258, 247, 353, 256, 288, - 439, 441, 442, 213, 351, 264, 332, 420, 320, 209, - 270, 387, 284, 293, 0, 0, 338, 369, 218, 423, - 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 189, 202, 289, 0, 358, 254, 445, 429, 426, - 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 191, 192, 203, 211, 220, - 232, 245, 252, 262, 266, 269, 272, 273, 276, 281, - 298, 303, 304, 305, 306, 322, 323, 324, 327, 330, - 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, - 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, - 381, 382, 383, 384, 392, 396, 410, 411, 422, 433, - 437, 263, 418, 438, 0, 297, 0, 0, 299, 249, - 265, 274, 0, 428, 393, 206, 365, 255, 196, 223, - 210, 230, 244, 246, 278, 307, 313, 342, 345, 260, - 241, 221, 362, 219, 379, 399, 400, 401, 403, 311, - 237, 329, 0, 1222, 0, 0, 0, 0, 0, 0, - 240, 0, 0, 0, 0, 0, 287, 0, 0, 0, - 343, 0, 380, 226, 296, 294, 407, 250, 243, 239, - 225, 271, 302, 341, 398, 335, 0, 291, 0, 0, - 389, 314, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 277, 224, 194, - 326, 390, 253, 0, 0, 0, 176, 177, 178, 0, - 0, 0, 0, 0, 0, 0, 0, 216, 0, 222, - 0, 0, 0, 0, 236, 275, 242, 235, 405, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 261, 0, 315, 0, 0, 0, 434, 0, 0, - 0, 0, 0, 0, 0, 0, 286, 0, 283, 190, - 204, 0, 0, 325, 364, 370, 0, 0, 0, 227, - 0, 368, 339, 421, 212, 251, 361, 344, 366, 0, - 0, 367, 292, 409, 356, 419, 435, 436, 234, 319, - 427, 402, 432, 444, 205, 231, 333, 395, 424, 386, - 312, 406, 282, 385, 259, 193, 290, 197, 397, 417, - 217, 378, 0, 0, 0, 199, 415, 394, 309, 279, - 280, 198, 0, 360, 238, 257, 229, 328, 412, 413, - 228, 446, 207, 431, 201, 208, 430, 321, 408, 416, - 310, 301, 200, 414, 308, 300, 285, 248, 267, 354, - 295, 355, 268, 317, 316, 318, 0, 195, 0, 391, - 425, 447, 214, 0, 0, 404, 440, 443, 0, 357, - 215, 258, 247, 353, 256, 288, 439, 441, 442, 213, - 351, 264, 332, 420, 320, 209, 270, 387, 284, 293, - 0, 0, 338, 369, 218, 423, 388, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 189, 202, 289, - 0, 358, 254, 445, 429, 426, 0, 0, 233, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 191, 192, 203, 211, 220, 232, 245, 252, 262, - 266, 269, 272, 273, 276, 281, 298, 303, 304, 305, - 306, 322, 323, 324, 327, 330, 331, 334, 336, 337, - 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, - 372, 373, 374, 375, 376, 377, 381, 382, 383, 384, - 392, 396, 410, 411, 422, 433, 437, 263, 418, 438, - 0, 297, 0, 0, 299, 249, 265, 274, 0, 428, - 393, 206, 365, 255, 196, 223, 210, 230, 244, 246, - 278, 307, 313, 342, 345, 260, 241, 221, 362, 219, - 379, 399, 400, 401, 403, 311, 237, 329, 0, 1220, - 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, - 0, 0, 287, 0, 0, 0, 343, 0, 380, 226, - 296, 294, 407, 250, 243, 239, 225, 271, 302, 341, - 398, 335, 0, 291, 0, 0, 389, 314, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 277, 224, 194, 326, 390, 253, 0, - 0, 0, 176, 177, 178, 0, 0, 0, 0, 0, - 0, 0, 0, 216, 0, 222, 0, 0, 0, 0, - 236, 275, 242, 235, 405, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 261, 0, 315, - 0, 0, 0, 434, 0, 0, 0, 0, 0, 0, - 0, 0, 286, 0, 283, 190, 204, 0, 0, 325, - 364, 370, 0, 0, 0, 227, 0, 368, 339, 421, - 212, 251, 361, 344, 366, 0, 0, 367, 292, 409, - 356, 419, 435, 436, 234, 319, 427, 402, 432, 444, - 205, 231, 333, 395, 424, 386, 312, 406, 282, 385, - 259, 193, 290, 197, 397, 417, 217, 378, 0, 0, - 0, 199, 415, 394, 309, 279, 280, 198, 0, 360, - 238, 257, 229, 328, 412, 413, 228, 446, 207, 431, - 201, 208, 430, 321, 408, 416, 310, 301, 200, 414, - 308, 300, 285, 248, 267, 354, 295, 355, 268, 317, - 316, 318, 0, 195, 0, 391, 425, 447, 214, 0, - 0, 404, 440, 443, 0, 357, 215, 258, 247, 353, - 256, 288, 439, 441, 442, 213, 351, 264, 332, 420, - 320, 209, 270, 387, 284, 293, 0, 0, 338, 369, - 218, 423, 388, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 189, 202, 289, 0, 358, 254, 445, - 429, 426, 0, 0, 233, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 191, 192, 203, - 211, 220, 232, 245, 252, 262, 266, 269, 272, 273, - 276, 281, 298, 303, 304, 305, 306, 322, 323, 324, - 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, - 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, - 376, 377, 381, 382, 383, 384, 392, 396, 410, 411, - 422, 433, 437, 263, 418, 438, 0, 297, 0, 0, - 299, 249, 265, 274, 0, 428, 393, 206, 365, 255, - 196, 223, 210, 230, 244, 246, 278, 307, 313, 342, - 345, 260, 241, 221, 362, 219, 379, 399, 400, 401, - 403, 311, 237, 329, 0, 1218, 0, 0, 0, 0, - 0, 0, 240, 0, 0, 0, 0, 0, 287, 0, - 0, 0, 343, 0, 380, 226, 296, 294, 407, 250, - 243, 239, 225, 271, 302, 341, 398, 335, 0, 291, - 0, 0, 389, 314, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, - 224, 194, 326, 390, 253, 0, 0, 0, 176, 177, - 178, 0, 0, 0, 0, 0, 0, 0, 0, 216, - 0, 222, 0, 0, 0, 0, 236, 275, 242, 235, - 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 261, 0, 315, 0, 0, 0, 434, - 0, 0, 0, 0, 0, 0, 0, 0, 286, 0, - 283, 190, 204, 0, 0, 325, 364, 370, 0, 0, - 0, 227, 0, 368, 339, 421, 212, 251, 361, 344, - 366, 0, 0, 367, 292, 409, 356, 419, 435, 436, - 234, 319, 427, 402, 432, 444, 205, 231, 333, 395, - 424, 386, 312, 406, 282, 385, 259, 193, 290, 197, - 397, 417, 217, 378, 0, 0, 0, 199, 415, 394, - 309, 279, 280, 198, 0, 360, 238, 257, 229, 328, - 412, 413, 228, 446, 207, 431, 201, 208, 430, 321, - 408, 416, 310, 301, 200, 414, 308, 300, 285, 248, - 267, 354, 295, 355, 268, 317, 316, 318, 0, 195, - 0, 391, 425, 447, 214, 0, 0, 404, 440, 443, - 0, 357, 215, 258, 247, 353, 256, 288, 439, 441, - 442, 213, 351, 264, 332, 420, 320, 209, 270, 387, - 284, 293, 0, 0, 338, 369, 218, 423, 388, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, - 202, 289, 0, 358, 254, 445, 429, 426, 0, 0, - 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 191, 192, 203, 211, 220, 232, 245, - 252, 262, 266, 269, 272, 273, 276, 281, 298, 303, - 304, 305, 306, 322, 323, 324, 327, 330, 331, 334, - 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, - 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, - 383, 384, 392, 396, 410, 411, 422, 433, 437, 263, - 418, 438, 0, 297, 0, 0, 299, 249, 265, 274, - 0, 428, 393, 206, 365, 255, 196, 223, 210, 230, - 244, 246, 278, 307, 313, 342, 345, 260, 241, 221, - 362, 219, 379, 399, 400, 401, 403, 311, 237, 329, - 0, 1216, 0, 0, 0, 0, 0, 0, 240, 0, - 0, 0, 0, 0, 287, 0, 0, 0, 343, 0, - 380, 226, 296, 294, 407, 250, 243, 239, 225, 271, - 302, 341, 398, 335, 0, 291, 0, 0, 389, 314, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 277, 224, 194, 326, 390, - 253, 0, 0, 0, 176, 177, 178, 0, 0, 0, - 0, 0, 0, 0, 0, 216, 0, 222, 0, 0, - 0, 0, 236, 275, 242, 235, 405, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, - 0, 315, 0, 0, 0, 434, 0, 0, 0, 0, - 0, 0, 0, 0, 286, 0, 283, 190, 204, 0, - 0, 325, 364, 370, 0, 0, 0, 227, 0, 368, - 339, 421, 212, 251, 361, 344, 366, 0, 0, 367, - 292, 409, 356, 419, 435, 436, 234, 319, 427, 402, - 432, 444, 205, 231, 333, 395, 424, 386, 312, 406, - 282, 385, 259, 193, 290, 197, 397, 417, 217, 378, - 0, 0, 0, 199, 415, 394, 309, 279, 280, 198, - 0, 360, 238, 257, 229, 328, 412, 413, 228, 446, - 207, 431, 201, 208, 430, 321, 408, 416, 310, 301, - 200, 414, 308, 300, 285, 248, 267, 354, 295, 355, - 268, 317, 316, 318, 0, 195, 0, 391, 425, 447, - 214, 0, 0, 404, 440, 443, 0, 357, 215, 258, - 247, 353, 256, 288, 439, 441, 442, 213, 351, 264, - 332, 420, 320, 209, 270, 387, 284, 293, 0, 0, - 338, 369, 218, 423, 388, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 189, 202, 289, 0, 358, - 254, 445, 429, 426, 0, 0, 233, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, - 192, 203, 211, 220, 232, 245, 252, 262, 266, 269, - 272, 273, 276, 281, 298, 303, 304, 305, 306, 322, - 323, 324, 327, 330, 331, 334, 336, 337, 340, 346, - 347, 348, 349, 350, 352, 359, 363, 371, 372, 373, - 374, 375, 376, 377, 381, 382, 383, 384, 392, 396, - 410, 411, 422, 433, 437, 263, 418, 438, 0, 297, - 0, 0, 299, 249, 265, 274, 0, 428, 393, 206, - 365, 255, 196, 223, 210, 230, 244, 246, 278, 307, - 313, 342, 345, 260, 241, 221, 362, 219, 379, 399, - 400, 401, 403, 311, 237, 329, 0, 1212, 0, 0, - 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, - 287, 0, 0, 0, 343, 0, 380, 226, 296, 294, - 407, 250, 243, 239, 225, 271, 302, 341, 398, 335, - 0, 291, 0, 0, 389, 314, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 277, 224, 194, 326, 390, 253, 0, 0, 0, - 176, 177, 178, 0, 0, 0, 0, 0, 0, 0, - 0, 216, 0, 222, 0, 0, 0, 0, 236, 275, - 242, 235, 405, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 261, 0, 315, 0, 0, - 0, 434, 0, 0, 0, 0, 0, 0, 0, 0, - 286, 0, 283, 190, 204, 0, 0, 325, 364, 370, - 0, 0, 0, 227, 0, 368, 339, 421, 212, 251, - 361, 344, 366, 0, 0, 367, 292, 409, 356, 419, - 435, 436, 234, 319, 427, 402, 432, 444, 205, 231, - 333, 395, 424, 386, 312, 406, 282, 385, 259, 193, - 290, 197, 397, 417, 217, 378, 0, 0, 0, 199, - 415, 394, 309, 279, 280, 198, 0, 360, 238, 257, - 229, 328, 412, 413, 228, 446, 207, 431, 201, 208, - 430, 321, 408, 416, 310, 301, 200, 414, 308, 300, - 285, 248, 267, 354, 295, 355, 268, 317, 316, 318, - 0, 195, 0, 391, 425, 447, 214, 0, 0, 404, - 440, 443, 0, 357, 215, 258, 247, 353, 256, 288, - 439, 441, 442, 213, 351, 264, 332, 420, 320, 209, - 270, 387, 284, 293, 0, 0, 338, 369, 218, 423, - 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 189, 202, 289, 0, 358, 254, 445, 429, 426, - 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 191, 192, 203, 211, 220, - 232, 245, 252, 262, 266, 269, 272, 273, 276, 281, - 298, 303, 304, 305, 306, 322, 323, 324, 327, 330, - 331, 334, 336, 337, 340, 346, 347, 348, 349, 350, - 352, 359, 363, 371, 372, 373, 374, 375, 376, 377, - 381, 382, 383, 384, 392, 396, 410, 411, 422, 433, - 437, 263, 418, 438, 0, 297, 0, 0, 299, 249, - 265, 274, 0, 428, 393, 206, 365, 255, 196, 223, - 210, 230, 244, 246, 278, 307, 313, 342, 345, 260, - 241, 221, 362, 219, 379, 399, 400, 401, 403, 311, - 237, 329, 0, 1210, 0, 0, 0, 0, 0, 0, - 240, 0, 0, 0, 0, 0, 287, 0, 0, 0, - 343, 0, 380, 226, 296, 294, 407, 250, 243, 239, - 225, 271, 302, 341, 398, 335, 0, 291, 0, 0, - 389, 314, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 277, 224, 194, - 326, 390, 253, 0, 0, 0, 176, 177, 178, 0, - 0, 0, 0, 0, 0, 0, 0, 216, 0, 222, - 0, 0, 0, 0, 236, 275, 242, 235, 405, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 261, 0, 315, 0, 0, 0, 434, 0, 0, - 0, 0, 0, 0, 0, 0, 286, 0, 283, 190, - 204, 0, 0, 325, 364, 370, 0, 0, 0, 227, - 0, 368, 339, 421, 212, 251, 361, 344, 366, 0, - 0, 367, 292, 409, 356, 419, 435, 436, 234, 319, - 427, 402, 432, 444, 205, 231, 333, 395, 424, 386, - 312, 406, 282, 385, 259, 193, 290, 197, 397, 417, - 217, 378, 0, 0, 0, 199, 415, 394, 309, 279, - 280, 198, 0, 360, 238, 257, 229, 328, 412, 413, - 228, 446, 207, 431, 201, 208, 430, 321, 408, 416, - 310, 301, 200, 414, 308, 300, 285, 248, 267, 354, - 295, 355, 268, 317, 316, 318, 0, 195, 0, 391, - 425, 447, 214, 0, 0, 404, 440, 443, 0, 357, - 215, 258, 247, 353, 256, 288, 439, 441, 442, 213, - 351, 264, 332, 420, 320, 209, 270, 387, 284, 293, - 0, 0, 338, 369, 218, 423, 388, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 189, 202, 289, - 0, 358, 254, 445, 429, 426, 0, 0, 233, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 191, 192, 203, 211, 220, 232, 245, 252, 262, - 266, 269, 272, 273, 276, 281, 298, 303, 304, 305, - 306, 322, 323, 324, 327, 330, 331, 334, 336, 337, - 340, 346, 347, 348, 349, 350, 352, 359, 363, 371, - 372, 373, 374, 375, 376, 377, 381, 382, 383, 384, - 392, 396, 410, 411, 422, 433, 437, 263, 418, 438, - 0, 297, 0, 0, 299, 249, 265, 274, 0, 428, - 393, 206, 365, 255, 196, 223, 210, 230, 244, 246, - 278, 307, 313, 342, 345, 260, 241, 221, 362, 219, - 379, 399, 400, 401, 403, 311, 237, 329, 0, 1208, - 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, - 0, 0, 287, 0, 0, 0, 343, 0, 380, 226, - 296, 294, 407, 250, 243, 239, 225, 271, 302, 341, - 398, 335, 0, 291, 0, 0, 389, 314, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 277, 224, 194, 326, 390, 253, 0, - 0, 0, 176, 177, 178, 0, 0, 0, 0, 0, - 0, 0, 0, 216, 0, 222, 0, 0, 0, 0, - 236, 275, 242, 235, 405, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 261, 0, 315, - 0, 0, 0, 434, 0, 0, 0, 0, 0, 0, - 0, 0, 286, 0, 283, 190, 204, 0, 0, 325, - 364, 370, 0, 0, 0, 227, 0, 368, 339, 421, - 212, 251, 361, 344, 366, 0, 0, 367, 292, 409, - 356, 419, 435, 436, 234, 319, 427, 402, 432, 444, - 205, 231, 333, 395, 424, 386, 312, 406, 282, 385, - 259, 193, 290, 197, 397, 417, 217, 378, 0, 0, - 0, 199, 415, 394, 309, 279, 280, 198, 0, 360, - 238, 257, 229, 328, 412, 413, 228, 446, 207, 431, - 201, 208, 430, 321, 408, 416, 310, 301, 200, 414, - 308, 300, 285, 248, 267, 354, 295, 355, 268, 317, - 316, 318, 0, 195, 0, 391, 425, 447, 214, 0, - 0, 404, 440, 443, 0, 357, 215, 258, 247, 353, - 256, 288, 439, 441, 442, 213, 351, 264, 332, 420, - 320, 209, 270, 387, 284, 293, 0, 0, 338, 369, - 218, 423, 388, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 189, 202, 289, 0, 358, 254, 445, - 429, 426, 0, 0, 233, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 191, 192, 203, - 211, 220, 232, 245, 252, 262, 266, 269, 272, 273, - 276, 281, 298, 303, 304, 305, 306, 322, 323, 324, - 327, 330, 331, 334, 336, 337, 340, 346, 347, 348, - 349, 350, 352, 359, 363, 371, 372, 373, 374, 375, - 376, 377, 381, 382, 383, 384, 392, 396, 410, 411, - 422, 433, 437, 263, 418, 438, 0, 297, 0, 0, - 299, 249, 265, 274, 0, 428, 393, 206, 365, 255, - 196, 223, 210, 230, 244, 246, 278, 307, 313, 342, - 345, 260, 241, 221, 362, 219, 379, 399, 400, 401, - 403, 311, 237, 329, 0, 0, 0, 0, 0, 0, - 0, 0, 240, 0, 0, 0, 0, 0, 287, 0, - 0, 0, 343, 0, 380, 226, 296, 294, 407, 250, - 243, 239, 225, 271, 302, 341, 398, 335, 0, 291, - 0, 0, 389, 314, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, - 224, 194, 326, 390, 253, 1183, 0, 0, 176, 177, - 178, 0, 0, 0, 0, 0, 0, 0, 0, 216, - 0, 222, 0, 0, 0, 0, 236, 275, 242, 235, - 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 261, 0, 315, 0, 0, 0, 434, - 0, 0, 0, 0, 0, 0, 0, 0, 286, 0, - 283, 190, 204, 0, 0, 325, 364, 370, 0, 0, - 0, 227, 0, 368, 339, 421, 212, 251, 361, 344, - 366, 0, 0, 367, 292, 409, 356, 419, 435, 436, - 234, 319, 427, 402, 432, 444, 205, 231, 333, 395, - 424, 386, 312, 406, 282, 385, 259, 193, 290, 197, - 397, 417, 217, 378, 0, 0, 0, 199, 415, 394, - 309, 279, 280, 198, 0, 360, 238, 257, 229, 328, - 412, 413, 228, 446, 207, 431, 201, 208, 430, 321, - 408, 416, 310, 301, 200, 414, 308, 300, 285, 248, - 267, 354, 295, 355, 268, 317, 316, 318, 0, 195, - 0, 391, 425, 447, 214, 0, 0, 404, 440, 443, - 0, 357, 215, 258, 247, 353, 256, 288, 439, 441, - 442, 213, 351, 264, 332, 420, 320, 209, 270, 387, - 284, 293, 0, 0, 338, 369, 218, 423, 388, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, - 202, 289, 0, 358, 254, 445, 429, 426, 0, 0, - 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 191, 192, 203, 211, 220, 232, 245, - 252, 262, 266, 269, 272, 273, 276, 281, 298, 303, - 304, 305, 306, 322, 323, 324, 327, 330, 331, 334, - 336, 337, 340, 346, 347, 348, 349, 350, 352, 359, - 363, 371, 372, 373, 374, 375, 376, 377, 381, 382, - 383, 384, 392, 396, 410, 411, 422, 433, 437, 263, - 418, 438, 0, 297, 0, 0, 299, 249, 265, 274, - 0, 428, 393, 206, 365, 255, 196, 223, 210, 230, - 244, 246, 278, 307, 313, 342, 345, 260, 241, 221, - 362, 219, 379, 399, 400, 401, 403, 311, 237, 1082, - 0, 0, 0, 0, 0, 0, 329, 0, 0, 0, - 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, - 0, 287, 0, 0, 0, 343, 0, 380, 226, 296, - 294, 407, 250, 243, 239, 225, 271, 302, 341, 398, - 335, 0, 291, 0, 0, 389, 314, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 277, 224, 194, 326, 390, 253, 0, 0, - 0, 176, 177, 178, 0, 0, 0, 0, 0, 0, - 0, 0, 216, 0, 222, 0, 0, 0, 0, 236, - 275, 242, 235, 405, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 261, 0, 315, 0, - 0, 0, 434, 0, 0, 0, 0, 0, 0, 0, - 0, 286, 0, 283, 190, 204, 0, 0, 325, 364, - 370, 0, 0, 0, 227, 0, 368, 339, 421, 212, - 251, 361, 344, 366, 0, 0, 367, 292, 409, 356, - 419, 435, 436, 234, 319, 427, 402, 432, 444, 205, - 231, 333, 395, 424, 386, 312, 406, 282, 385, 259, - 193, 290, 197, 397, 417, 217, 378, 0, 0, 0, - 199, 415, 394, 309, 279, 280, 198, 0, 360, 238, - 257, 229, 328, 412, 413, 228, 446, 207, 431, 201, - 208, 430, 321, 408, 416, 310, 301, 200, 414, 308, - 300, 285, 248, 267, 354, 295, 355, 268, 317, 316, - 318, 0, 195, 0, 391, 425, 447, 214, 0, 0, - 404, 440, 443, 0, 357, 215, 258, 247, 353, 256, - 288, 439, 441, 442, 213, 351, 264, 332, 420, 320, - 209, 270, 387, 284, 293, 0, 0, 338, 369, 218, - 423, 388, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 189, 202, 289, 0, 358, 254, 445, 429, - 426, 0, 0, 233, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 191, 192, 203, 211, - 220, 232, 245, 252, 262, 266, 269, 272, 273, 276, - 281, 298, 303, 304, 305, 306, 322, 323, 324, 327, - 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, - 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, - 377, 381, 382, 383, 384, 392, 396, 410, 411, 422, - 433, 437, 263, 418, 438, 0, 297, 0, 0, 299, - 249, 265, 274, 0, 428, 393, 206, 365, 255, 196, - 223, 210, 230, 244, 246, 278, 307, 313, 342, 345, - 260, 241, 221, 362, 219, 379, 399, 400, 401, 403, - 311, 237, 329, 0, 0, 0, 0, 0, 0, 0, - 1073, 240, 0, 0, 0, 0, 0, 287, 0, 0, - 0, 343, 0, 380, 226, 296, 294, 407, 250, 243, - 239, 225, 271, 302, 341, 398, 335, 0, 291, 0, - 0, 389, 314, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 277, 224, - 194, 326, 390, 253, 0, 0, 0, 176, 177, 178, - 0, 0, 0, 0, 0, 0, 0, 0, 216, 0, - 222, 0, 0, 0, 0, 236, 275, 242, 235, 405, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 261, 0, 315, 0, 0, 0, 434, 0, - 0, 0, 0, 0, 0, 0, 0, 286, 0, 283, - 190, 204, 0, 0, 325, 364, 370, 0, 0, 0, - 227, 0, 368, 339, 421, 212, 251, 361, 344, 366, - 0, 0, 367, 292, 409, 356, 419, 435, 436, 234, - 319, 427, 402, 432, 444, 205, 231, 333, 395, 424, - 386, 312, 406, 282, 385, 259, 193, 290, 197, 397, - 417, 217, 378, 0, 0, 0, 199, 415, 394, 309, - 279, 280, 198, 0, 360, 238, 257, 229, 328, 412, - 413, 228, 446, 207, 431, 201, 208, 430, 321, 408, - 416, 310, 301, 200, 414, 308, 300, 285, 248, 267, - 354, 295, 355, 268, 317, 316, 318, 0, 195, 0, - 391, 425, 447, 214, 0, 0, 404, 440, 443, 0, - 357, 215, 258, 247, 353, 256, 288, 439, 441, 442, - 213, 351, 264, 332, 420, 320, 209, 270, 387, 284, - 293, 0, 0, 338, 369, 218, 423, 388, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 189, 202, - 289, 0, 358, 254, 445, 429, 426, 0, 0, 233, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 191, 192, 203, 211, 220, 232, 245, 252, - 262, 266, 269, 272, 273, 276, 281, 298, 303, 304, - 305, 306, 322, 323, 324, 327, 330, 331, 334, 336, - 337, 340, 346, 347, 348, 349, 350, 352, 359, 363, - 371, 372, 373, 374, 375, 376, 377, 381, 382, 383, - 384, 392, 396, 410, 411, 422, 433, 437, 263, 418, - 438, 0, 297, 0, 0, 299, 249, 265, 274, 0, - 428, 393, 206, 365, 255, 196, 223, 210, 230, 244, - 246, 278, 307, 313, 342, 345, 260, 241, 221, 362, - 219, 379, 399, 400, 401, 403, 311, 237, 329, 0, - 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, - 0, 0, 0, 287, 0, 0, 0, 343, 0, 380, - 226, 296, 294, 407, 250, 243, 239, 225, 271, 302, - 341, 398, 335, 0, 291, 0, 0, 389, 314, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 277, 224, 194, 326, 390, 253, - 0, 0, 0, 176, 177, 178, 0, 931, 0, 0, - 0, 0, 0, 0, 216, 0, 222, 0, 0, 0, - 0, 236, 275, 242, 235, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 261, 0, - 315, 0, 0, 0, 434, 0, 0, 0, 0, 0, - 0, 0, 0, 286, 0, 283, 190, 204, 0, 0, - 325, 364, 370, 0, 0, 0, 227, 0, 368, 339, - 421, 212, 251, 361, 344, 366, 0, 0, 367, 292, - 409, 356, 419, 435, 436, 234, 319, 427, 402, 432, - 444, 205, 231, 333, 395, 424, 386, 312, 406, 282, - 385, 259, 193, 290, 197, 397, 417, 217, 378, 0, - 0, 0, 199, 415, 394, 309, 279, 280, 198, 0, - 360, 238, 257, 229, 328, 412, 413, 228, 446, 207, - 431, 201, 208, 430, 321, 408, 416, 310, 301, 200, - 414, 308, 300, 285, 248, 267, 354, 295, 355, 268, - 317, 316, 318, 0, 195, 0, 391, 425, 447, 214, - 0, 0, 404, 440, 443, 0, 357, 215, 258, 247, - 353, 256, 288, 439, 441, 442, 213, 351, 264, 332, - 420, 320, 209, 270, 387, 284, 293, 0, 0, 338, - 369, 218, 423, 388, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 189, 202, 289, 0, 358, 254, - 445, 429, 426, 0, 0, 233, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, - 203, 211, 220, 232, 245, 252, 262, 266, 269, 272, - 273, 276, 281, 298, 303, 304, 305, 306, 322, 323, - 324, 327, 330, 331, 334, 336, 337, 340, 346, 347, - 348, 349, 350, 352, 359, 363, 371, 372, 373, 374, - 375, 376, 377, 381, 382, 383, 384, 392, 396, 410, - 411, 422, 433, 437, 263, 418, 438, 0, 297, 0, - 0, 299, 249, 265, 274, 0, 428, 393, 206, 365, - 255, 196, 223, 210, 230, 244, 246, 278, 307, 313, - 342, 345, 260, 241, 221, 362, 219, 379, 399, 400, - 401, 403, 311, 237, 329, 0, 0, 0, 0, 0, - 0, 0, 0, 240, 0, 0, 0, 0, 0, 287, - 0, 0, 0, 343, 0, 380, 226, 296, 294, 407, - 250, 243, 239, 225, 271, 302, 341, 398, 335, 0, - 291, 0, 0, 389, 314, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 277, 224, 194, 326, 390, 253, 0, 0, 0, 176, - 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, - 216, 0, 222, 0, 0, 0, 0, 236, 275, 242, - 235, 405, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 496, 0, 261, 0, 315, 0, 0, 0, - 434, 0, 0, 0, 0, 0, 0, 0, 0, 286, - 0, 283, 190, 204, 0, 0, 325, 364, 370, 0, - 0, 0, 227, 0, 368, 339, 421, 212, 251, 361, - 344, 366, 0, 0, 367, 292, 409, 356, 419, 435, - 436, 234, 319, 427, 402, 432, 444, 205, 231, 333, - 395, 424, 386, 312, 406, 282, 385, 259, 193, 290, - 197, 397, 417, 217, 378, 0, 0, 0, 199, 415, - 394, 309, 279, 280, 198, 0, 360, 238, 257, 229, - 328, 412, 413, 228, 446, 207, 431, 201, 208, 430, - 321, 408, 416, 310, 301, 200, 414, 308, 300, 285, - 248, 267, 354, 295, 355, 268, 317, 316, 318, 0, - 195, 0, 391, 425, 447, 214, 0, 0, 404, 440, - 443, 0, 357, 215, 258, 247, 353, 256, 288, 439, - 441, 442, 213, 351, 264, 332, 420, 320, 209, 270, - 387, 284, 293, 0, 0, 338, 369, 218, 423, 388, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 189, 202, 289, 0, 358, 254, 445, 429, 426, 0, - 0, 233, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 191, 192, 203, 211, 220, 232, - 245, 252, 262, 266, 269, 272, 273, 276, 281, 298, - 303, 304, 305, 306, 322, 323, 324, 327, 330, 331, - 334, 336, 337, 340, 346, 347, 348, 349, 350, 352, - 359, 363, 371, 372, 373, 374, 375, 376, 377, 381, - 382, 383, 384, 392, 396, 410, 411, 422, 433, 437, - 495, 418, 438, 0, 297, 0, 0, 299, 249, 265, - 274, 0, 428, 393, 206, 365, 255, 196, 223, 210, - 230, 244, 246, 278, 307, 313, 342, 345, 260, 241, - 221, 362, 219, 379, 399, 400, 401, 403, 311, 237, - 329, 0, 0, 0, 0, 0, 0, 0, 0, 240, - 0, 0, 0, 0, 0, 287, 0, 0, 0, 343, - 0, 380, 226, 296, 294, 407, 250, 243, 239, 225, - 271, 302, 341, 398, 335, 0, 291, 0, 0, 389, - 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 277, 224, 194, 326, - 390, 253, 0, 0, 0, 176, 177, 178, 0, 0, - 0, 0, 0, 0, 0, 0, 216, 0, 222, 0, - 0, 0, 0, 236, 275, 242, 235, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 261, 0, 315, 0, 184, 0, 434, 0, 0, 0, - 0, 0, 0, 0, 0, 286, 0, 283, 190, 204, - 0, 0, 325, 364, 370, 0, 0, 0, 227, 0, - 368, 339, 421, 212, 251, 361, 344, 366, 0, 0, - 367, 292, 409, 356, 419, 435, 436, 234, 319, 427, - 402, 432, 444, 205, 231, 333, 395, 424, 386, 312, - 406, 282, 385, 259, 193, 290, 197, 397, 417, 217, - 378, 0, 0, 0, 199, 415, 394, 309, 279, 280, - 198, 0, 360, 238, 257, 229, 328, 412, 413, 228, - 446, 207, 431, 201, 208, 430, 321, 408, 416, 310, - 301, 200, 414, 308, 300, 285, 248, 267, 354, 295, - 355, 268, 317, 316, 318, 0, 195, 0, 391, 425, - 447, 214, 0, 0, 404, 440, 443, 0, 357, 215, - 258, 247, 353, 256, 288, 439, 441, 442, 213, 351, - 264, 332, 420, 320, 209, 270, 387, 284, 293, 0, - 0, 338, 369, 218, 423, 388, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 189, 202, 289, 0, - 358, 254, 445, 429, 426, 0, 0, 233, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 191, 192, 203, 211, 220, 232, 245, 252, 262, 266, - 269, 272, 273, 276, 281, 298, 303, 304, 305, 306, - 322, 323, 324, 327, 330, 331, 334, 336, 337, 340, - 346, 347, 348, 349, 350, 352, 359, 363, 371, 372, - 373, 374, 375, 376, 377, 381, 382, 383, 384, 392, - 396, 410, 411, 422, 433, 437, 263, 418, 438, 0, - 297, 0, 0, 299, 249, 265, 274, 0, 428, 393, - 206, 365, 255, 196, 223, 210, 230, 244, 246, 278, - 307, 313, 342, 345, 260, 241, 221, 362, 219, 379, - 399, 400, 401, 403, 311, 237, 329, 0, 0, 0, - 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, - 0, 287, 0, 0, 0, 343, 0, 380, 226, 296, - 294, 407, 250, 243, 239, 225, 271, 302, 341, 398, - 335, 0, 291, 0, 0, 389, 314, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 277, 224, 194, 326, 390, 253, 0, 0, - 0, 176, 177, 178, 0, 0, 0, 0, 0, 0, - 0, 0, 216, 0, 222, 0, 0, 0, 0, 236, - 275, 242, 235, 405, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 261, 0, 315, 0, - 0, 0, 434, 0, 0, 0, 0, 0, 0, 0, - 0, 286, 0, 283, 190, 204, 0, 0, 325, 364, - 370, 0, 0, 0, 227, 0, 368, 339, 421, 212, - 251, 361, 344, 366, 0, 0, 367, 292, 409, 356, - 419, 435, 436, 234, 319, 427, 402, 432, 444, 205, - 231, 333, 395, 424, 386, 312, 406, 282, 385, 259, - 193, 290, 197, 397, 417, 217, 378, 0, 0, 0, - 199, 415, 394, 309, 279, 280, 198, 0, 360, 238, - 257, 229, 328, 412, 413, 228, 446, 207, 431, 201, - 208, 430, 321, 408, 416, 310, 301, 200, 414, 308, - 300, 285, 248, 267, 354, 295, 355, 268, 317, 316, - 318, 0, 195, 0, 391, 425, 447, 214, 0, 0, - 404, 440, 443, 0, 357, 215, 258, 247, 353, 256, - 288, 439, 441, 442, 213, 351, 264, 332, 420, 320, - 209, 270, 387, 284, 293, 0, 0, 338, 369, 218, - 423, 388, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 189, 202, 289, 0, 358, 254, 445, 429, - 426, 0, 0, 233, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 191, 192, 203, 211, - 220, 232, 245, 252, 262, 266, 269, 272, 273, 276, - 281, 298, 303, 304, 305, 306, 322, 323, 324, 327, - 330, 331, 334, 336, 337, 340, 346, 347, 348, 349, - 350, 352, 359, 363, 371, 372, 373, 374, 375, 376, - 377, 381, 382, 383, 384, 392, 396, 410, 411, 422, - 433, 437, 263, 418, 438, 0, 297, 0, 0, 299, - 249, 265, 274, 0, 428, 393, 206, 365, 255, 196, - 223, 210, 230, 244, 246, 278, 307, 313, 342, 345, - 260, 241, 221, 362, 219, 379, 399, 400, 401, 403, - 311, 237, + 1823, 0, 1199, 0, 2159, 0, 0, 0, 1799, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1838, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1899, 0, + 33, 0, 1899, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 33, 0, 1887, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1899, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 33, 2135, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1949, 0, 1950, 1951, 1952, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1962, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1975, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 736, 723, 0, 0, + 672, 739, 643, 661, 748, 663, 666, 706, 623, 685, + 330, 658, 0, 647, 619, 654, 620, 645, 674, 241, + 678, 642, 725, 688, 738, 288, 0, 625, 648, 344, + 708, 381, 227, 297, 295, 409, 251, 244, 240, 226, + 272, 303, 342, 399, 336, 745, 292, 695, 0, 390, + 315, 0, 0, 0, 676, 728, 683, 719, 671, 707, + 632, 694, 740, 659, 703, 741, 278, 225, 195, 327, + 391, 254, 0, 0, 0, 177, 178, 179, 0, 2142, + 2143, 0, 0, 0, 0, 0, 217, 0, 223, 700, + 735, 656, 702, 237, 276, 243, 236, 406, 705, 751, + 618, 697, 0, 621, 624, 747, 731, 651, 652, 0, + 0, 0, 0, 0, 0, 0, 675, 684, 716, 669, + 0, 0, 0, 0, 0, 0, 0, 0, 649, 0, + 693, 0, 0, 0, 628, 622, 2100, 0, 0, 0, + 673, 0, 0, 0, 631, 0, 650, 717, 2109, 616, + 262, 626, 316, 721, 730, 670, 436, 734, 668, 667, + 737, 712, 629, 727, 662, 287, 627, 284, 191, 205, + 0, 660, 326, 365, 371, 726, 646, 655, 228, 653, + 369, 340, 423, 213, 252, 362, 345, 367, 692, 710, + 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, + 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, + 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, + 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, + 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, + 229, 448, 208, 433, 202, 209, 432, 322, 410, 418, + 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, + 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, + 427, 449, 215, 641, 722, 405, 442, 445, 0, 358, + 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, + 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, + 714, 750, 339, 370, 219, 425, 389, 636, 640, 634, + 635, 686, 687, 637, 742, 743, 744, 718, 630, 0, + 638, 639, 0, 724, 732, 733, 691, 190, 203, 290, + 746, 359, 255, 447, 431, 428, 617, 633, 234, 644, + 0, 0, 657, 664, 665, 677, 679, 680, 681, 682, + 690, 698, 699, 701, 709, 711, 713, 715, 720, 729, + 749, 192, 193, 204, 212, 221, 233, 246, 253, 263, + 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, + 307, 323, 324, 325, 328, 331, 332, 335, 337, 338, + 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, + 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, + 393, 397, 412, 413, 424, 435, 439, 264, 420, 440, + 0, 298, 689, 696, 300, 250, 266, 275, 704, 430, + 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, + 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, + 380, 400, 401, 402, 404, 312, 238, 736, 723, 0, + 0, 672, 739, 643, 661, 748, 663, 666, 706, 623, + 685, 330, 658, 0, 647, 619, 654, 620, 645, 674, + 241, 678, 642, 725, 688, 738, 288, 0, 625, 648, + 344, 708, 381, 227, 297, 295, 409, 251, 244, 240, + 226, 272, 303, 342, 399, 336, 745, 292, 695, 0, + 390, 315, 0, 0, 0, 676, 728, 683, 719, 671, + 707, 632, 694, 740, 659, 703, 741, 278, 225, 195, + 327, 391, 254, 0, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 700, 735, 656, 702, 237, 276, 243, 236, 406, 705, + 751, 618, 697, 0, 621, 624, 747, 731, 651, 652, + 0, 0, 0, 0, 0, 0, 0, 675, 684, 716, + 669, 0, 0, 0, 0, 0, 0, 1891, 0, 649, + 0, 693, 0, 0, 0, 628, 622, 0, 0, 0, + 0, 673, 0, 0, 0, 631, 0, 650, 717, 0, + 616, 262, 626, 316, 721, 730, 670, 436, 734, 668, + 667, 737, 712, 629, 727, 662, 287, 627, 284, 191, + 205, 0, 660, 326, 365, 371, 726, 646, 655, 228, + 653, 369, 340, 423, 213, 252, 362, 345, 367, 692, + 710, 368, 293, 411, 357, 421, 437, 438, 235, 320, + 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, + 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, + 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, + 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, + 415, 229, 448, 208, 433, 202, 209, 432, 322, 410, + 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, + 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, + 392, 427, 449, 215, 641, 722, 405, 442, 445, 0, + 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, + 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, + 294, 714, 750, 339, 370, 219, 425, 389, 636, 640, + 634, 635, 686, 687, 637, 742, 743, 744, 718, 630, + 0, 638, 639, 0, 724, 732, 733, 691, 190, 203, + 290, 746, 359, 255, 447, 431, 428, 617, 633, 234, + 644, 0, 0, 657, 664, 665, 677, 679, 680, 681, + 682, 690, 698, 699, 701, 709, 711, 713, 715, 720, + 729, 749, 192, 193, 204, 212, 221, 233, 246, 253, + 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, + 306, 307, 323, 324, 325, 328, 331, 332, 335, 337, + 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, + 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, + 385, 393, 397, 412, 413, 424, 435, 439, 264, 420, + 440, 0, 298, 689, 696, 300, 250, 266, 275, 704, + 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, + 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, + 220, 380, 400, 401, 402, 404, 312, 238, 736, 723, + 0, 0, 672, 739, 643, 661, 748, 663, 666, 706, + 623, 685, 330, 658, 0, 647, 619, 654, 620, 645, + 674, 241, 678, 642, 725, 688, 738, 288, 0, 625, + 648, 344, 708, 381, 227, 297, 295, 409, 251, 244, + 240, 226, 272, 303, 342, 399, 336, 745, 292, 695, + 0, 390, 315, 0, 0, 0, 676, 728, 683, 719, + 671, 707, 632, 694, 740, 659, 703, 741, 278, 225, + 195, 327, 391, 254, 0, 0, 0, 177, 178, 179, + 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, + 223, 700, 735, 656, 702, 237, 276, 243, 236, 406, + 705, 751, 618, 697, 0, 621, 624, 747, 731, 651, + 652, 0, 0, 0, 0, 0, 0, 0, 675, 684, + 716, 669, 0, 0, 0, 0, 0, 0, 1746, 0, + 649, 0, 693, 0, 0, 0, 628, 622, 0, 0, + 0, 0, 673, 0, 0, 0, 631, 0, 650, 717, + 0, 616, 262, 626, 316, 721, 730, 670, 436, 734, + 668, 667, 737, 712, 629, 727, 662, 287, 627, 284, + 191, 205, 0, 660, 326, 365, 371, 726, 646, 655, + 228, 653, 369, 340, 423, 213, 252, 362, 345, 367, + 692, 710, 368, 293, 411, 357, 421, 437, 438, 235, + 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, + 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, + 398, 419, 218, 379, 0, 0, 0, 200, 417, 395, + 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, + 414, 415, 229, 448, 208, 433, 202, 209, 432, 322, + 410, 418, 311, 302, 201, 416, 309, 301, 286, 249, + 268, 355, 296, 356, 269, 318, 317, 319, 0, 196, + 0, 392, 427, 449, 215, 641, 722, 405, 442, 445, + 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, + 444, 214, 352, 265, 333, 422, 321, 210, 271, 388, + 285, 294, 714, 750, 339, 370, 219, 425, 389, 636, + 640, 634, 635, 686, 687, 637, 742, 743, 744, 718, + 630, 0, 638, 639, 0, 724, 732, 733, 691, 190, + 203, 290, 746, 359, 255, 447, 431, 428, 617, 633, + 234, 644, 0, 0, 657, 664, 665, 677, 679, 680, + 681, 682, 690, 698, 699, 701, 709, 711, 713, 715, + 720, 729, 749, 192, 193, 204, 212, 221, 233, 246, + 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, + 305, 306, 307, 323, 324, 325, 328, 331, 332, 335, + 337, 338, 341, 347, 348, 349, 350, 351, 353, 360, + 364, 372, 373, 374, 375, 376, 377, 378, 382, 383, + 384, 385, 393, 397, 412, 413, 424, 435, 439, 264, + 420, 440, 0, 298, 689, 696, 300, 250, 266, 275, + 704, 430, 394, 207, 366, 256, 197, 224, 211, 231, + 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, + 363, 220, 380, 400, 401, 402, 404, 312, 238, 736, + 723, 0, 0, 672, 739, 643, 661, 748, 663, 666, + 706, 623, 685, 330, 658, 0, 647, 619, 654, 620, + 645, 674, 241, 678, 642, 725, 688, 738, 288, 0, + 625, 648, 344, 708, 381, 227, 297, 295, 409, 251, + 244, 240, 226, 272, 303, 342, 399, 336, 745, 292, + 695, 0, 390, 315, 0, 0, 0, 676, 728, 683, + 719, 671, 707, 632, 694, 740, 659, 703, 741, 278, + 225, 195, 327, 391, 254, 0, 0, 0, 177, 178, + 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, + 0, 223, 700, 735, 656, 702, 237, 276, 243, 236, + 406, 705, 751, 618, 697, 0, 621, 624, 747, 731, + 651, 652, 0, 0, 0, 0, 0, 0, 0, 675, + 684, 716, 669, 0, 0, 0, 0, 0, 0, 1463, + 0, 649, 0, 693, 0, 0, 0, 628, 622, 0, + 0, 0, 0, 673, 0, 0, 0, 631, 0, 650, + 717, 0, 616, 262, 626, 316, 721, 730, 670, 436, + 734, 668, 667, 737, 712, 629, 727, 662, 287, 627, + 284, 191, 205, 0, 660, 326, 365, 371, 726, 646, + 655, 228, 653, 369, 340, 423, 213, 252, 362, 345, + 367, 692, 710, 368, 293, 411, 357, 421, 437, 438, + 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, + 426, 387, 313, 407, 408, 283, 386, 260, 194, 291, + 198, 398, 419, 218, 379, 0, 0, 0, 200, 417, + 395, 310, 280, 281, 199, 0, 361, 239, 258, 230, + 329, 414, 415, 229, 448, 208, 433, 202, 209, 432, + 322, 410, 418, 311, 302, 201, 416, 309, 301, 286, + 249, 268, 355, 296, 356, 269, 318, 317, 319, 0, + 196, 0, 392, 427, 449, 215, 641, 722, 405, 442, + 445, 0, 358, 216, 259, 248, 354, 257, 289, 441, + 443, 444, 214, 352, 265, 333, 422, 321, 210, 271, + 388, 285, 294, 714, 750, 339, 370, 219, 425, 389, + 636, 640, 634, 635, 686, 687, 637, 742, 743, 744, + 718, 630, 0, 638, 639, 0, 724, 732, 733, 691, + 190, 203, 290, 746, 359, 255, 447, 431, 428, 617, + 633, 234, 644, 0, 0, 657, 664, 665, 677, 679, + 680, 681, 682, 690, 698, 699, 701, 709, 711, 713, + 715, 720, 729, 749, 192, 193, 204, 212, 221, 233, + 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, + 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, + 335, 337, 338, 341, 347, 348, 349, 350, 351, 353, + 360, 364, 372, 373, 374, 375, 376, 377, 378, 382, + 383, 384, 385, 393, 397, 412, 413, 424, 435, 439, + 264, 420, 440, 0, 298, 689, 696, 300, 250, 266, + 275, 704, 430, 394, 207, 366, 256, 197, 224, 211, + 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, + 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, + 736, 723, 0, 0, 672, 739, 643, 661, 748, 663, + 666, 706, 623, 685, 330, 658, 0, 647, 619, 654, + 620, 645, 674, 241, 678, 642, 725, 688, 738, 288, + 0, 625, 648, 344, 708, 381, 227, 297, 295, 409, + 251, 244, 240, 226, 272, 303, 342, 399, 336, 745, + 292, 695, 0, 390, 315, 0, 0, 0, 676, 728, + 683, 719, 671, 707, 632, 694, 740, 659, 703, 741, + 278, 225, 195, 327, 391, 254, 69, 0, 0, 177, + 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, + 217, 0, 223, 700, 735, 656, 702, 237, 276, 243, + 236, 406, 705, 751, 618, 697, 0, 621, 624, 747, + 731, 651, 652, 0, 0, 0, 0, 0, 0, 0, + 675, 684, 716, 669, 0, 0, 0, 0, 0, 0, + 0, 0, 649, 0, 693, 0, 0, 0, 628, 622, + 0, 0, 0, 0, 673, 0, 0, 0, 631, 0, + 650, 717, 0, 616, 262, 626, 316, 721, 730, 670, + 436, 734, 668, 667, 737, 712, 629, 727, 662, 287, + 627, 284, 191, 205, 0, 660, 326, 365, 371, 726, + 646, 655, 228, 653, 369, 340, 423, 213, 252, 362, + 345, 367, 692, 710, 368, 293, 411, 357, 421, 437, + 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, + 396, 426, 387, 313, 407, 408, 283, 386, 260, 194, + 291, 198, 398, 419, 218, 379, 0, 0, 0, 200, + 417, 395, 310, 280, 281, 199, 0, 361, 239, 258, + 230, 329, 414, 415, 229, 448, 208, 433, 202, 209, + 432, 322, 410, 418, 311, 302, 201, 416, 309, 301, + 286, 249, 268, 355, 296, 356, 269, 318, 317, 319, + 0, 196, 0, 392, 427, 449, 215, 641, 722, 405, + 442, 445, 0, 358, 216, 259, 248, 354, 257, 289, + 441, 443, 444, 214, 352, 265, 333, 422, 321, 210, + 271, 388, 285, 294, 714, 750, 339, 370, 219, 425, + 389, 636, 640, 634, 635, 686, 687, 637, 742, 743, + 744, 718, 630, 0, 638, 639, 0, 724, 732, 733, + 691, 190, 203, 290, 746, 359, 255, 447, 431, 428, + 617, 633, 234, 644, 0, 0, 657, 664, 665, 677, + 679, 680, 681, 682, 690, 698, 699, 701, 709, 711, + 713, 715, 720, 729, 749, 192, 193, 204, 212, 221, + 233, 246, 253, 263, 267, 270, 273, 274, 277, 282, + 299, 304, 305, 306, 307, 323, 324, 325, 328, 331, + 332, 335, 337, 338, 341, 347, 348, 349, 350, 351, + 353, 360, 364, 372, 373, 374, 375, 376, 377, 378, + 382, 383, 384, 385, 393, 397, 412, 413, 424, 435, + 439, 264, 420, 440, 0, 298, 689, 696, 300, 250, + 266, 275, 704, 430, 394, 207, 366, 256, 197, 224, + 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, + 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, + 238, 736, 723, 0, 0, 672, 739, 643, 661, 748, + 663, 666, 706, 623, 685, 330, 658, 0, 647, 619, + 654, 620, 645, 674, 241, 678, 642, 725, 688, 738, + 288, 0, 625, 648, 344, 708, 381, 227, 297, 295, + 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, + 745, 292, 695, 0, 390, 315, 0, 0, 0, 676, + 728, 683, 719, 671, 707, 632, 694, 740, 659, 703, + 741, 278, 225, 195, 327, 391, 254, 0, 0, 0, + 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, + 0, 217, 0, 223, 700, 735, 656, 702, 237, 276, + 243, 236, 406, 705, 751, 618, 697, 0, 621, 624, + 747, 731, 651, 652, 0, 0, 0, 0, 0, 0, + 0, 675, 684, 716, 669, 0, 0, 0, 0, 0, + 0, 0, 0, 649, 0, 693, 0, 0, 0, 628, + 622, 0, 0, 0, 0, 673, 0, 0, 0, 631, + 0, 650, 717, 0, 616, 262, 626, 316, 721, 730, + 670, 436, 734, 668, 667, 737, 712, 629, 727, 662, + 287, 627, 284, 191, 205, 0, 660, 326, 365, 371, + 726, 646, 655, 228, 653, 369, 340, 423, 213, 252, + 362, 345, 367, 692, 710, 368, 293, 411, 357, 421, + 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, + 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, + 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, + 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, + 258, 230, 329, 414, 415, 229, 448, 208, 433, 202, + 209, 432, 322, 410, 418, 311, 302, 201, 416, 309, + 301, 286, 249, 268, 355, 296, 356, 269, 318, 317, + 319, 0, 196, 0, 392, 427, 449, 215, 641, 722, + 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, + 289, 441, 443, 444, 214, 352, 265, 333, 422, 321, + 210, 271, 388, 285, 294, 714, 750, 339, 370, 219, + 425, 389, 636, 640, 634, 635, 686, 687, 637, 742, + 743, 744, 718, 630, 0, 638, 639, 0, 724, 732, + 733, 691, 190, 203, 290, 746, 359, 255, 447, 431, + 428, 617, 633, 234, 644, 0, 0, 657, 664, 665, + 677, 679, 680, 681, 682, 690, 698, 699, 701, 709, + 711, 713, 715, 720, 729, 749, 192, 193, 204, 212, + 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, + 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, + 331, 332, 335, 337, 338, 341, 347, 348, 349, 350, + 351, 353, 360, 364, 372, 373, 374, 375, 376, 377, + 378, 382, 383, 384, 385, 393, 397, 412, 413, 424, + 435, 439, 264, 420, 440, 0, 298, 689, 696, 300, + 250, 266, 275, 704, 430, 394, 207, 366, 256, 197, + 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, + 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, + 312, 238, 736, 723, 0, 0, 672, 739, 643, 661, + 748, 663, 666, 706, 623, 685, 330, 658, 0, 647, + 619, 654, 620, 645, 674, 241, 678, 642, 725, 688, + 738, 288, 0, 625, 648, 344, 708, 381, 227, 297, + 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, + 336, 745, 292, 695, 0, 390, 315, 0, 0, 0, + 676, 728, 683, 719, 671, 707, 632, 694, 740, 659, + 703, 741, 278, 225, 195, 327, 391, 254, 0, 0, + 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, + 0, 0, 217, 0, 223, 700, 735, 656, 702, 237, + 276, 243, 236, 406, 705, 751, 618, 697, 0, 621, + 624, 747, 731, 651, 652, 0, 0, 0, 0, 0, + 0, 0, 675, 684, 716, 669, 0, 0, 0, 0, + 0, 0, 0, 0, 649, 0, 693, 0, 0, 0, + 628, 622, 0, 0, 0, 0, 673, 0, 0, 0, + 631, 0, 650, 717, 0, 616, 262, 626, 316, 721, + 730, 670, 436, 734, 668, 667, 737, 712, 629, 727, + 662, 287, 627, 284, 191, 205, 0, 660, 326, 365, + 371, 726, 646, 655, 228, 653, 369, 340, 423, 213, + 252, 362, 345, 367, 692, 710, 368, 293, 411, 357, + 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, + 232, 334, 396, 426, 387, 313, 407, 408, 283, 386, + 260, 194, 291, 198, 398, 419, 218, 379, 0, 0, + 0, 200, 417, 395, 310, 280, 281, 199, 0, 361, + 239, 258, 230, 329, 414, 415, 229, 448, 208, 433, + 202, 753, 432, 322, 410, 418, 311, 302, 201, 416, + 309, 301, 286, 249, 268, 355, 296, 356, 269, 318, + 317, 319, 0, 196, 0, 392, 427, 449, 215, 641, + 722, 405, 442, 445, 0, 358, 216, 259, 248, 354, + 257, 289, 441, 443, 444, 214, 352, 265, 333, 422, + 615, 752, 609, 608, 285, 294, 714, 750, 339, 370, + 219, 425, 389, 636, 640, 634, 635, 686, 687, 637, + 742, 743, 744, 718, 630, 0, 638, 639, 0, 724, + 732, 733, 691, 190, 203, 290, 746, 359, 255, 447, + 431, 428, 617, 633, 234, 644, 0, 0, 657, 664, + 665, 677, 679, 680, 681, 682, 690, 698, 699, 701, + 709, 711, 713, 715, 720, 729, 749, 192, 193, 204, + 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, + 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, + 328, 331, 332, 335, 337, 338, 341, 347, 348, 349, + 350, 351, 353, 360, 364, 372, 373, 374, 375, 376, + 377, 378, 382, 383, 384, 385, 393, 397, 412, 413, + 424, 435, 439, 264, 420, 440, 0, 298, 689, 696, + 300, 250, 266, 275, 704, 430, 394, 207, 366, 256, + 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, + 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, + 404, 312, 238, 736, 723, 0, 0, 672, 739, 643, + 661, 748, 663, 666, 706, 623, 685, 330, 658, 0, + 647, 619, 654, 620, 645, 674, 241, 678, 642, 725, + 688, 738, 288, 0, 625, 648, 344, 708, 381, 227, + 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, + 399, 336, 745, 292, 695, 0, 390, 315, 0, 0, + 0, 676, 728, 683, 719, 671, 707, 632, 694, 740, + 659, 703, 741, 278, 225, 195, 327, 391, 254, 0, + 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, + 0, 0, 0, 217, 0, 223, 700, 735, 656, 702, + 237, 276, 243, 236, 406, 705, 751, 618, 697, 0, + 621, 624, 747, 731, 651, 652, 0, 0, 0, 0, + 0, 0, 0, 675, 684, 716, 669, 0, 0, 0, + 0, 0, 0, 0, 0, 649, 0, 693, 0, 0, + 0, 628, 622, 0, 0, 0, 0, 673, 0, 0, + 0, 631, 0, 650, 717, 0, 616, 262, 626, 316, + 721, 730, 670, 436, 734, 668, 667, 737, 712, 629, + 727, 662, 287, 627, 284, 191, 205, 0, 660, 326, + 365, 371, 726, 646, 655, 228, 653, 369, 340, 423, + 213, 252, 362, 345, 367, 692, 710, 368, 293, 411, + 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, + 206, 232, 334, 396, 426, 387, 313, 407, 408, 283, + 386, 260, 194, 291, 198, 398, 1089, 218, 379, 0, + 0, 0, 200, 417, 395, 310, 280, 281, 199, 0, + 361, 239, 258, 230, 329, 414, 415, 229, 448, 208, + 433, 202, 753, 432, 322, 410, 418, 311, 302, 201, + 416, 309, 301, 286, 249, 268, 355, 296, 356, 269, + 318, 317, 319, 0, 196, 0, 392, 427, 449, 215, + 641, 722, 405, 442, 445, 0, 358, 216, 259, 248, + 354, 257, 289, 441, 443, 444, 214, 352, 265, 333, + 422, 615, 752, 609, 608, 285, 294, 714, 750, 339, + 370, 219, 425, 389, 636, 640, 634, 635, 686, 687, + 637, 742, 743, 744, 718, 630, 0, 638, 639, 0, + 724, 732, 733, 691, 190, 203, 290, 746, 359, 255, + 447, 431, 428, 617, 633, 234, 644, 0, 0, 657, + 664, 665, 677, 679, 680, 681, 682, 690, 698, 699, + 701, 709, 711, 713, 715, 720, 729, 749, 192, 193, + 204, 212, 221, 233, 246, 253, 263, 267, 270, 273, + 274, 277, 282, 299, 304, 305, 306, 307, 323, 324, + 325, 328, 331, 332, 335, 337, 338, 341, 347, 348, + 349, 350, 351, 353, 360, 364, 372, 373, 374, 375, + 376, 377, 378, 382, 383, 384, 385, 393, 397, 412, + 413, 424, 435, 439, 264, 420, 440, 0, 298, 689, + 696, 300, 250, 266, 275, 704, 430, 394, 207, 366, + 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, + 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, + 402, 404, 312, 238, 736, 723, 0, 0, 672, 739, + 643, 661, 748, 663, 666, 706, 623, 685, 330, 658, + 0, 647, 619, 654, 620, 645, 674, 241, 678, 642, + 725, 688, 738, 288, 0, 625, 648, 344, 708, 381, + 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, + 342, 399, 336, 745, 292, 695, 0, 390, 315, 0, + 0, 0, 676, 728, 683, 719, 671, 707, 632, 694, + 740, 659, 703, 741, 278, 225, 195, 327, 391, 254, + 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 217, 0, 223, 700, 735, 656, + 702, 237, 276, 243, 236, 406, 705, 751, 618, 697, + 0, 621, 624, 747, 731, 651, 652, 0, 0, 0, + 0, 0, 0, 0, 675, 684, 716, 669, 0, 0, + 0, 0, 0, 0, 0, 0, 649, 0, 693, 0, + 0, 0, 628, 622, 0, 0, 0, 0, 673, 0, + 0, 0, 631, 0, 650, 717, 0, 616, 262, 626, + 316, 721, 730, 670, 436, 734, 668, 667, 737, 712, + 629, 727, 662, 287, 627, 284, 191, 205, 0, 660, + 326, 365, 371, 726, 646, 655, 228, 653, 369, 340, + 423, 213, 252, 362, 345, 367, 692, 710, 368, 293, + 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, + 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, + 283, 386, 260, 194, 291, 198, 398, 606, 218, 379, + 0, 0, 0, 200, 417, 395, 310, 280, 281, 199, + 0, 361, 239, 258, 230, 329, 414, 415, 229, 448, + 208, 433, 202, 753, 432, 322, 410, 418, 311, 302, + 201, 416, 309, 301, 286, 249, 268, 355, 296, 356, + 269, 318, 317, 319, 0, 196, 0, 392, 427, 449, + 215, 641, 722, 405, 442, 445, 0, 358, 216, 259, + 248, 354, 257, 289, 441, 443, 444, 214, 352, 265, + 333, 422, 615, 752, 609, 608, 285, 294, 714, 750, + 339, 370, 219, 425, 389, 636, 640, 634, 635, 686, + 687, 637, 742, 743, 744, 718, 630, 0, 638, 639, + 0, 724, 732, 733, 691, 190, 203, 290, 746, 359, + 255, 447, 431, 428, 617, 633, 234, 644, 0, 0, + 657, 664, 665, 677, 679, 680, 681, 682, 690, 698, + 699, 701, 709, 711, 713, 715, 720, 729, 749, 192, + 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, + 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, + 324, 325, 328, 331, 332, 335, 337, 338, 341, 347, + 348, 349, 350, 351, 353, 360, 364, 372, 373, 374, + 375, 376, 377, 378, 382, 383, 384, 385, 393, 397, + 412, 413, 424, 435, 439, 264, 420, 440, 0, 298, + 689, 696, 300, 250, 266, 275, 704, 430, 394, 207, + 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, + 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, + 401, 402, 404, 312, 238, 330, 0, 0, 1390, 0, + 509, 0, 0, 0, 241, 0, 508, 0, 0, 0, + 288, 0, 0, 1391, 344, 0, 381, 227, 297, 295, + 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, + 552, 292, 0, 0, 390, 315, 0, 0, 0, 0, + 0, 543, 544, 0, 0, 0, 0, 0, 0, 0, + 0, 278, 225, 195, 327, 391, 254, 69, 0, 0, + 177, 178, 179, 530, 529, 532, 533, 534, 535, 0, + 0, 217, 531, 223, 536, 537, 538, 0, 237, 276, + 243, 236, 406, 0, 0, 0, 506, 523, 0, 551, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, + 521, 596, 0, 0, 0, 566, 0, 522, 0, 0, + 515, 516, 518, 517, 519, 524, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 316, 565, 0, + 0, 436, 0, 0, 563, 0, 0, 0, 0, 0, + 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, + 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, + 362, 345, 367, 0, 0, 368, 293, 411, 357, 421, + 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, + 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, + 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, + 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, + 258, 230, 329, 414, 415, 229, 448, 208, 433, 202, + 209, 432, 322, 410, 418, 311, 302, 201, 416, 309, + 301, 286, 249, 268, 355, 296, 356, 269, 318, 317, + 319, 0, 196, 0, 392, 427, 449, 215, 0, 0, + 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, + 289, 441, 443, 444, 214, 352, 265, 333, 422, 321, + 210, 271, 388, 285, 294, 0, 0, 339, 370, 219, + 425, 389, 553, 564, 559, 560, 557, 558, 0, 556, + 555, 554, 567, 545, 546, 547, 548, 550, 0, 561, + 562, 549, 190, 203, 290, 0, 359, 255, 447, 431, + 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, + 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, + 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, + 331, 332, 335, 337, 338, 341, 347, 348, 349, 350, + 351, 353, 360, 364, 372, 373, 374, 375, 376, 377, + 378, 382, 383, 384, 385, 393, 397, 412, 413, 424, + 435, 439, 264, 420, 440, 0, 298, 0, 0, 300, + 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, + 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, + 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, + 312, 238, 330, 0, 0, 0, 0, 509, 0, 0, + 0, 241, 0, 508, 0, 0, 0, 288, 0, 0, + 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, + 240, 226, 272, 303, 342, 399, 336, 552, 292, 0, + 0, 390, 315, 0, 0, 0, 0, 0, 543, 544, + 0, 0, 0, 0, 0, 0, 1502, 0, 278, 225, + 195, 327, 391, 254, 69, 0, 0, 177, 178, 179, + 530, 529, 532, 533, 534, 535, 0, 0, 217, 531, + 223, 536, 537, 538, 1503, 237, 276, 243, 236, 406, + 0, 0, 0, 506, 523, 0, 551, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 520, 521, 0, 0, + 0, 0, 566, 0, 522, 0, 0, 515, 516, 518, + 517, 519, 524, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 262, 0, 316, 565, 0, 0, 436, 0, + 0, 563, 0, 0, 0, 0, 0, 287, 0, 284, + 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, + 228, 0, 369, 340, 423, 213, 252, 362, 345, 367, + 0, 0, 368, 293, 411, 357, 421, 437, 438, 235, + 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, + 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, + 398, 419, 218, 379, 0, 0, 0, 200, 417, 395, + 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, + 414, 415, 229, 448, 208, 433, 202, 209, 432, 322, + 410, 418, 311, 302, 201, 416, 309, 301, 286, 249, + 268, 355, 296, 356, 269, 318, 317, 319, 0, 196, + 0, 392, 427, 449, 215, 0, 0, 405, 442, 445, + 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, + 444, 214, 352, 265, 333, 422, 321, 210, 271, 388, + 285, 294, 0, 0, 339, 370, 219, 425, 389, 553, + 564, 559, 560, 557, 558, 0, 556, 555, 554, 567, + 545, 546, 547, 548, 550, 0, 561, 562, 549, 190, + 203, 290, 0, 359, 255, 447, 431, 428, 0, 0, + 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, + 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, + 305, 306, 307, 323, 324, 325, 328, 331, 332, 335, + 337, 338, 341, 347, 348, 349, 350, 351, 353, 360, + 364, 372, 373, 374, 375, 376, 377, 378, 382, 383, + 384, 385, 393, 397, 412, 413, 424, 435, 439, 264, + 420, 440, 0, 298, 0, 0, 300, 250, 266, 275, + 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, + 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, + 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, + 0, 0, 0, 0, 509, 0, 0, 0, 241, 0, + 508, 0, 0, 0, 288, 0, 0, 0, 344, 0, + 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, + 303, 342, 399, 336, 552, 292, 0, 0, 390, 315, + 0, 0, 0, 0, 0, 543, 544, 0, 0, 0, + 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, + 254, 69, 0, 584, 177, 178, 179, 530, 529, 532, + 533, 534, 535, 0, 0, 217, 531, 223, 536, 537, + 538, 0, 237, 276, 243, 236, 406, 0, 0, 0, + 506, 523, 0, 551, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 520, 521, 0, 0, 0, 0, 566, + 0, 522, 0, 0, 515, 516, 518, 517, 519, 524, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, + 0, 316, 565, 0, 0, 436, 0, 0, 563, 0, + 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, + 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, + 340, 423, 213, 252, 362, 345, 367, 0, 0, 368, + 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, + 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, + 408, 283, 386, 260, 194, 291, 198, 398, 419, 218, + 379, 0, 0, 0, 200, 417, 395, 310, 280, 281, + 199, 0, 361, 239, 258, 230, 329, 414, 415, 229, + 448, 208, 433, 202, 209, 432, 322, 410, 418, 311, + 302, 201, 416, 309, 301, 286, 249, 268, 355, 296, + 356, 269, 318, 317, 319, 0, 196, 0, 392, 427, + 449, 215, 0, 0, 405, 442, 445, 0, 358, 216, + 259, 248, 354, 257, 289, 441, 443, 444, 214, 352, + 265, 333, 422, 321, 210, 271, 388, 285, 294, 0, + 0, 339, 370, 219, 425, 389, 553, 564, 559, 560, + 557, 558, 0, 556, 555, 554, 567, 545, 546, 547, + 548, 550, 0, 561, 562, 549, 190, 203, 290, 0, + 359, 255, 447, 431, 428, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 204, 212, 221, 233, 246, 253, 263, 267, + 270, 273, 274, 277, 282, 299, 304, 305, 306, 307, + 323, 324, 325, 328, 331, 332, 335, 337, 338, 341, + 347, 348, 349, 350, 351, 353, 360, 364, 372, 373, + 374, 375, 376, 377, 378, 382, 383, 384, 385, 393, + 397, 412, 413, 424, 435, 439, 264, 420, 440, 0, + 298, 0, 0, 300, 250, 266, 275, 0, 430, 394, + 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, + 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, + 400, 401, 402, 404, 312, 238, 330, 0, 0, 0, + 0, 509, 0, 0, 0, 241, 0, 508, 0, 0, + 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, + 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, + 336, 552, 292, 0, 0, 390, 315, 0, 0, 0, + 0, 0, 543, 544, 0, 0, 0, 0, 0, 0, + 0, 0, 278, 225, 195, 327, 391, 254, 69, 0, + 0, 177, 178, 179, 530, 529, 532, 533, 534, 535, + 0, 0, 217, 531, 223, 536, 537, 538, 0, 237, + 276, 243, 236, 406, 0, 0, 0, 506, 523, 0, + 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 520, 521, 596, 0, 0, 0, 566, 0, 522, 0, + 0, 515, 516, 518, 517, 519, 524, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 262, 0, 316, 565, + 0, 0, 436, 0, 0, 563, 0, 0, 0, 0, + 0, 287, 0, 284, 191, 205, 0, 0, 326, 365, + 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, + 252, 362, 345, 367, 0, 0, 368, 293, 411, 357, + 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, + 232, 334, 396, 426, 387, 313, 407, 408, 283, 386, + 260, 194, 291, 198, 398, 419, 218, 379, 0, 0, + 0, 200, 417, 395, 310, 280, 281, 199, 0, 361, + 239, 258, 230, 329, 414, 415, 229, 448, 208, 433, + 202, 209, 432, 322, 410, 418, 311, 302, 201, 416, + 309, 301, 286, 249, 268, 355, 296, 356, 269, 318, + 317, 319, 0, 196, 0, 392, 427, 449, 215, 0, + 0, 405, 442, 445, 0, 358, 216, 259, 248, 354, + 257, 289, 441, 443, 444, 214, 352, 265, 333, 422, + 321, 210, 271, 388, 285, 294, 0, 0, 339, 370, + 219, 425, 389, 553, 564, 559, 560, 557, 558, 0, + 556, 555, 554, 567, 545, 546, 547, 548, 550, 0, + 561, 562, 549, 190, 203, 290, 0, 359, 255, 447, + 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, + 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, + 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, + 328, 331, 332, 335, 337, 338, 341, 347, 348, 349, + 350, 351, 353, 360, 364, 372, 373, 374, 375, 376, + 377, 378, 382, 383, 384, 385, 393, 397, 412, 413, + 424, 435, 439, 264, 420, 440, 0, 298, 0, 0, + 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, + 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, + 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, + 404, 312, 238, 330, 0, 0, 0, 0, 509, 0, + 0, 0, 241, 0, 508, 0, 0, 0, 288, 0, + 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, + 244, 240, 226, 272, 303, 342, 399, 336, 552, 292, + 0, 0, 390, 315, 0, 0, 0, 0, 0, 543, + 544, 0, 0, 0, 0, 0, 0, 0, 0, 278, + 225, 195, 327, 391, 254, 69, 0, 0, 177, 178, + 179, 530, 1408, 532, 533, 534, 535, 0, 0, 217, + 531, 223, 536, 537, 538, 0, 237, 276, 243, 236, + 406, 0, 0, 0, 506, 523, 0, 551, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 520, 521, 596, + 0, 0, 0, 566, 0, 522, 0, 0, 515, 516, + 518, 517, 519, 524, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 316, 565, 0, 0, 436, + 0, 0, 563, 0, 0, 0, 0, 0, 287, 0, + 284, 191, 205, 0, 0, 326, 365, 371, 0, 0, + 0, 228, 0, 369, 340, 423, 213, 252, 362, 345, + 367, 0, 0, 368, 293, 411, 357, 421, 437, 438, + 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, + 426, 387, 313, 407, 408, 283, 386, 260, 194, 291, + 198, 398, 419, 218, 379, 0, 0, 0, 200, 417, + 395, 310, 280, 281, 199, 0, 361, 239, 258, 230, + 329, 414, 415, 229, 448, 208, 433, 202, 209, 432, + 322, 410, 418, 311, 302, 201, 416, 309, 301, 286, + 249, 268, 355, 296, 356, 269, 318, 317, 319, 0, + 196, 0, 392, 427, 449, 215, 0, 0, 405, 442, + 445, 0, 358, 216, 259, 248, 354, 257, 289, 441, + 443, 444, 214, 352, 265, 333, 422, 321, 210, 271, + 388, 285, 294, 0, 0, 339, 370, 219, 425, 389, + 553, 564, 559, 560, 557, 558, 0, 556, 555, 554, + 567, 545, 546, 547, 548, 550, 0, 561, 562, 549, + 190, 203, 290, 0, 359, 255, 447, 431, 428, 0, + 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, + 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, + 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, + 335, 337, 338, 341, 347, 348, 349, 350, 351, 353, + 360, 364, 372, 373, 374, 375, 376, 377, 378, 382, + 383, 384, 385, 393, 397, 412, 413, 424, 435, 439, + 264, 420, 440, 0, 298, 0, 0, 300, 250, 266, + 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, + 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, + 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, + 330, 0, 0, 0, 0, 509, 0, 0, 0, 241, + 0, 508, 0, 0, 0, 288, 0, 0, 0, 344, + 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, + 272, 303, 342, 399, 336, 552, 292, 0, 0, 390, + 315, 0, 0, 0, 0, 0, 543, 544, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, + 391, 254, 69, 0, 0, 177, 178, 179, 530, 1405, + 532, 533, 534, 535, 0, 0, 217, 531, 223, 536, + 537, 538, 0, 237, 276, 243, 236, 406, 0, 0, + 0, 506, 523, 0, 551, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 520, 521, 596, 0, 0, 0, + 566, 0, 522, 0, 0, 515, 516, 518, 517, 519, + 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 262, 0, 316, 565, 0, 0, 436, 0, 0, 563, + 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, + 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, + 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, + 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, + 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, + 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, + 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, + 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, + 229, 448, 208, 433, 202, 209, 432, 322, 410, 418, + 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, + 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, + 427, 449, 215, 0, 0, 405, 442, 445, 0, 358, + 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, + 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, + 0, 0, 339, 370, 219, 425, 389, 553, 564, 559, + 560, 557, 558, 0, 556, 555, 554, 567, 545, 546, + 547, 548, 550, 0, 561, 562, 549, 190, 203, 290, + 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, + 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, + 307, 323, 324, 325, 328, 331, 332, 335, 337, 338, + 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, + 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, + 393, 397, 412, 413, 424, 435, 439, 264, 420, 440, + 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, + 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, + 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, + 380, 400, 401, 402, 404, 312, 238, 577, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 330, 0, 0, 0, 0, 509, 0, 0, 0, 241, + 0, 508, 0, 0, 0, 288, 0, 0, 0, 344, + 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, + 272, 303, 342, 399, 336, 552, 292, 0, 0, 390, + 315, 0, 0, 0, 0, 0, 543, 544, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, + 391, 254, 69, 0, 0, 177, 178, 179, 530, 529, + 532, 533, 534, 535, 0, 0, 217, 531, 223, 536, + 537, 538, 0, 237, 276, 243, 236, 406, 0, 0, + 0, 506, 523, 0, 551, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 520, 521, 0, 0, 0, 0, + 566, 0, 522, 0, 0, 515, 516, 518, 517, 519, + 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 262, 0, 316, 565, 0, 0, 436, 0, 0, 563, + 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, + 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, + 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, + 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, + 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, + 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, + 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, + 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, + 229, 448, 208, 433, 202, 209, 432, 322, 410, 418, + 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, + 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, + 427, 449, 215, 0, 0, 405, 442, 445, 0, 358, + 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, + 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, + 0, 0, 339, 370, 219, 425, 389, 553, 564, 559, + 560, 557, 558, 0, 556, 555, 554, 567, 545, 546, + 547, 548, 550, 0, 561, 562, 549, 190, 203, 290, + 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, + 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, + 307, 323, 324, 325, 328, 331, 332, 335, 337, 338, + 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, + 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, + 393, 397, 412, 413, 424, 435, 439, 264, 420, 440, + 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, + 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, + 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, + 380, 400, 401, 402, 404, 312, 238, 330, 0, 0, + 0, 0, 509, 0, 0, 0, 241, 0, 508, 0, + 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, + 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, + 399, 336, 552, 292, 0, 0, 390, 315, 0, 0, + 0, 0, 0, 543, 544, 0, 0, 0, 0, 0, + 0, 0, 0, 278, 225, 195, 327, 391, 254, 69, + 0, 0, 177, 178, 179, 530, 529, 532, 533, 534, + 535, 0, 0, 217, 531, 223, 536, 537, 538, 0, + 237, 276, 243, 236, 406, 0, 0, 0, 506, 523, + 0, 551, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 520, 521, 0, 0, 0, 0, 566, 0, 522, + 0, 0, 515, 516, 518, 517, 519, 524, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, + 565, 0, 0, 436, 0, 0, 563, 0, 0, 0, + 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, + 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, + 213, 252, 362, 345, 367, 0, 0, 368, 293, 411, + 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, + 206, 232, 334, 396, 426, 387, 313, 407, 408, 283, + 386, 260, 194, 291, 198, 398, 419, 218, 379, 0, + 0, 0, 200, 417, 395, 310, 280, 281, 199, 0, + 361, 239, 258, 230, 329, 414, 415, 229, 448, 208, + 433, 202, 209, 432, 322, 410, 418, 311, 302, 201, + 416, 309, 301, 286, 249, 268, 355, 296, 356, 269, + 318, 317, 319, 0, 196, 0, 392, 427, 449, 215, + 0, 0, 405, 442, 445, 0, 358, 216, 259, 248, + 354, 257, 289, 441, 443, 444, 214, 352, 265, 333, + 422, 321, 210, 271, 388, 285, 294, 0, 0, 339, + 370, 219, 425, 389, 553, 564, 559, 560, 557, 558, + 0, 556, 555, 554, 567, 545, 546, 547, 548, 550, + 0, 561, 562, 549, 190, 203, 290, 0, 359, 255, + 447, 431, 428, 0, 0, 234, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, + 204, 212, 221, 233, 246, 253, 263, 267, 270, 273, + 274, 277, 282, 299, 304, 305, 306, 307, 323, 324, + 325, 328, 331, 332, 335, 337, 338, 341, 347, 348, + 349, 350, 351, 353, 360, 364, 372, 373, 374, 375, + 376, 377, 378, 382, 383, 384, 385, 393, 397, 412, + 413, 424, 435, 439, 264, 420, 440, 0, 298, 0, + 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, + 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, + 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, + 402, 404, 312, 238, 330, 0, 0, 0, 0, 0, + 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, + 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, + 251, 244, 240, 226, 272, 303, 342, 399, 336, 552, + 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, + 543, 544, 0, 0, 0, 0, 0, 0, 0, 0, + 278, 225, 195, 327, 391, 254, 69, 0, 0, 177, + 178, 179, 530, 529, 532, 533, 534, 535, 0, 0, + 217, 531, 223, 536, 537, 538, 0, 237, 276, 243, + 236, 406, 0, 0, 0, 0, 523, 0, 551, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 520, 521, + 0, 0, 0, 0, 566, 0, 522, 0, 0, 515, + 516, 518, 517, 519, 524, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 262, 0, 316, 565, 0, 0, + 436, 0, 0, 563, 0, 0, 0, 0, 0, 287, + 0, 284, 191, 205, 0, 0, 326, 365, 371, 0, + 0, 0, 228, 0, 369, 340, 423, 213, 252, 362, + 345, 367, 2162, 0, 368, 293, 411, 357, 421, 437, + 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, + 396, 426, 387, 313, 407, 408, 283, 386, 260, 194, + 291, 198, 398, 419, 218, 379, 0, 0, 0, 200, + 417, 395, 310, 280, 281, 199, 0, 361, 239, 258, + 230, 329, 414, 415, 229, 448, 208, 433, 202, 209, + 432, 322, 410, 418, 311, 302, 201, 416, 309, 301, + 286, 249, 268, 355, 296, 356, 269, 318, 317, 319, + 0, 196, 0, 392, 427, 449, 215, 0, 0, 405, + 442, 445, 0, 358, 216, 259, 248, 354, 257, 289, + 441, 443, 444, 214, 352, 265, 333, 422, 321, 210, + 271, 388, 285, 294, 0, 0, 339, 370, 219, 425, + 389, 553, 564, 559, 560, 557, 558, 0, 556, 555, + 554, 567, 545, 546, 547, 548, 550, 0, 561, 562, + 549, 190, 203, 290, 0, 359, 255, 447, 431, 428, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 253, 263, 267, 270, 273, 274, 277, 282, + 299, 304, 305, 306, 307, 323, 324, 325, 328, 331, + 332, 335, 337, 338, 341, 347, 348, 349, 350, 351, + 353, 360, 364, 372, 373, 374, 375, 376, 377, 378, + 382, 383, 384, 385, 393, 397, 412, 413, 424, 435, + 439, 264, 420, 440, 0, 298, 0, 0, 300, 250, + 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, + 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, + 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, + 238, 330, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, + 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, + 226, 272, 303, 342, 399, 336, 552, 292, 0, 0, + 390, 315, 0, 0, 0, 0, 0, 543, 544, 0, + 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, + 327, 391, 254, 69, 0, 584, 177, 178, 179, 530, + 529, 532, 533, 534, 535, 0, 0, 217, 531, 223, + 536, 537, 538, 0, 237, 276, 243, 236, 406, 0, + 0, 0, 0, 523, 0, 551, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 520, 521, 0, 0, 0, + 0, 566, 0, 522, 0, 0, 515, 516, 518, 517, + 519, 524, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 262, 0, 316, 565, 0, 0, 436, 0, 0, + 563, 0, 0, 0, 0, 0, 287, 0, 284, 191, + 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, + 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, + 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, + 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, + 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, + 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, + 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, + 415, 229, 448, 208, 433, 202, 209, 432, 322, 410, + 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, + 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, + 392, 427, 449, 215, 0, 0, 405, 442, 445, 0, + 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, + 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, + 294, 0, 0, 339, 370, 219, 425, 389, 553, 564, + 559, 560, 557, 558, 0, 556, 555, 554, 567, 545, + 546, 547, 548, 550, 0, 561, 562, 549, 190, 203, + 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, + 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, + 306, 307, 323, 324, 325, 328, 331, 332, 335, 337, + 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, + 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, + 385, 393, 397, 412, 413, 424, 435, 439, 264, 420, + 440, 0, 298, 0, 0, 300, 250, 266, 275, 0, + 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, + 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, + 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, + 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, + 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, + 342, 399, 336, 552, 292, 0, 0, 390, 315, 0, + 0, 0, 0, 0, 543, 544, 0, 0, 0, 0, + 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, + 69, 0, 0, 177, 178, 179, 530, 529, 532, 533, + 534, 535, 0, 0, 217, 531, 223, 536, 537, 538, + 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, + 523, 0, 551, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 520, 521, 0, 0, 0, 0, 566, 0, + 522, 0, 0, 515, 516, 518, 517, 519, 524, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, + 316, 565, 0, 0, 436, 0, 0, 563, 0, 0, + 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, + 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, + 423, 213, 252, 362, 345, 367, 0, 0, 368, 293, + 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, + 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, + 283, 386, 260, 194, 291, 198, 398, 419, 218, 379, + 0, 0, 0, 200, 417, 395, 310, 280, 281, 199, + 0, 361, 239, 258, 230, 329, 414, 415, 229, 448, + 208, 433, 202, 209, 432, 322, 410, 418, 311, 302, + 201, 416, 309, 301, 286, 249, 268, 355, 296, 356, + 269, 318, 317, 319, 0, 196, 0, 392, 427, 449, + 215, 0, 0, 405, 442, 445, 0, 358, 216, 259, + 248, 354, 257, 289, 441, 443, 444, 214, 352, 265, + 333, 422, 321, 210, 271, 388, 285, 294, 0, 0, + 339, 370, 219, 425, 389, 553, 564, 559, 560, 557, + 558, 0, 556, 555, 554, 567, 545, 546, 547, 548, + 550, 0, 561, 562, 549, 190, 203, 290, 0, 359, + 255, 447, 431, 428, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, + 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, + 324, 325, 328, 331, 332, 335, 337, 338, 341, 347, + 348, 349, 350, 351, 353, 360, 364, 372, 373, 374, + 375, 376, 377, 378, 382, 383, 384, 385, 393, 397, + 412, 413, 424, 435, 439, 264, 420, 440, 0, 298, + 0, 0, 300, 250, 266, 275, 0, 430, 394, 207, + 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, + 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, + 401, 402, 404, 312, 238, 330, 0, 0, 0, 0, + 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, + 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, + 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, + 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 278, 225, 195, 327, 391, 254, 0, 0, 0, + 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, + 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, + 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 966, 965, 975, 976, 968, + 969, 970, 971, 972, 973, 974, 967, 0, 0, 977, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 316, 0, 0, + 0, 436, 0, 0, 0, 0, 0, 0, 0, 0, + 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, + 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, + 362, 345, 367, 0, 0, 368, 293, 411, 357, 421, + 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, + 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, + 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, + 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, + 258, 230, 329, 414, 415, 229, 448, 208, 433, 202, + 209, 432, 322, 410, 418, 311, 302, 201, 416, 309, + 301, 286, 249, 268, 355, 296, 356, 269, 318, 317, + 319, 0, 196, 0, 392, 427, 449, 215, 0, 0, + 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, + 289, 441, 443, 444, 214, 352, 265, 333, 422, 321, + 210, 271, 388, 285, 294, 0, 0, 339, 370, 219, + 425, 389, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 190, 203, 290, 0, 359, 255, 447, 431, + 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, + 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, + 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, + 331, 332, 335, 337, 338, 341, 347, 348, 349, 350, + 351, 353, 360, 364, 372, 373, 374, 375, 376, 377, + 378, 382, 383, 384, 385, 393, 397, 412, 413, 424, + 435, 439, 264, 420, 440, 0, 298, 0, 0, 300, + 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, + 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, + 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, + 312, 238, 330, 0, 0, 0, 0, 0, 0, 0, + 0, 241, 797, 0, 0, 0, 0, 288, 0, 0, + 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, + 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, + 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, + 195, 327, 391, 254, 0, 0, 0, 177, 178, 179, + 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, + 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 262, 0, 316, 0, 0, 796, 436, 0, + 0, 0, 0, 0, 0, 793, 794, 287, 761, 284, + 191, 205, 787, 791, 326, 365, 371, 0, 0, 0, + 228, 0, 369, 340, 423, 213, 252, 362, 345, 367, + 0, 0, 368, 293, 411, 357, 421, 437, 438, 235, + 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, + 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, + 398, 419, 218, 379, 0, 0, 0, 200, 417, 395, + 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, + 414, 415, 229, 448, 208, 433, 202, 209, 432, 322, + 410, 418, 311, 302, 201, 416, 309, 301, 286, 249, + 268, 355, 296, 356, 269, 318, 317, 319, 0, 196, + 0, 392, 427, 449, 215, 0, 0, 405, 442, 445, + 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, + 444, 214, 352, 265, 333, 422, 321, 210, 271, 388, + 285, 294, 0, 0, 339, 370, 219, 425, 389, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, + 203, 290, 0, 359, 255, 447, 431, 428, 0, 0, + 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, + 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, + 305, 306, 307, 323, 324, 325, 328, 331, 332, 335, + 337, 338, 341, 347, 348, 349, 350, 351, 353, 360, + 364, 372, 373, 374, 375, 376, 377, 378, 382, 383, + 384, 385, 393, 397, 412, 413, 424, 435, 439, 264, + 420, 440, 0, 298, 0, 0, 300, 250, 266, 275, + 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, + 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, + 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, + 0, 0, 0, 1067, 0, 0, 0, 0, 241, 0, + 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, + 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, + 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, + 254, 0, 0, 0, 177, 178, 179, 0, 1069, 0, + 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, + 0, 0, 237, 276, 243, 236, 406, 955, 956, 954, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 957, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, + 0, 316, 0, 0, 0, 436, 0, 0, 0, 0, + 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, + 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, + 340, 423, 213, 252, 362, 345, 367, 0, 0, 368, + 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, + 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, + 408, 283, 386, 260, 194, 291, 198, 398, 419, 218, + 379, 0, 0, 0, 200, 417, 395, 310, 280, 281, + 199, 0, 361, 239, 258, 230, 329, 414, 415, 229, + 448, 208, 433, 202, 209, 432, 322, 410, 418, 311, + 302, 201, 416, 309, 301, 286, 249, 268, 355, 296, + 356, 269, 318, 317, 319, 0, 196, 0, 392, 427, + 449, 215, 0, 0, 405, 442, 445, 0, 358, 216, + 259, 248, 354, 257, 289, 441, 443, 444, 214, 352, + 265, 333, 422, 321, 210, 271, 388, 285, 294, 0, + 0, 339, 370, 219, 425, 389, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 203, 290, 0, + 359, 255, 447, 431, 428, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 204, 212, 221, 233, 246, 253, 263, 267, + 270, 273, 274, 277, 282, 299, 304, 305, 306, 307, + 323, 324, 325, 328, 331, 332, 335, 337, 338, 341, + 347, 348, 349, 350, 351, 353, 360, 364, 372, 373, + 374, 375, 376, 377, 378, 382, 383, 384, 385, 393, + 397, 412, 413, 424, 435, 439, 264, 420, 440, 0, + 298, 0, 0, 300, 250, 266, 275, 0, 430, 394, + 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, + 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, + 400, 401, 402, 404, 312, 238, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, + 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, + 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, + 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, + 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, + 254, 69, 0, 584, 177, 178, 179, 0, 0, 0, + 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, + 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, + 0, 316, 0, 0, 0, 436, 0, 0, 0, 0, + 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, + 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, + 340, 423, 213, 252, 362, 345, 367, 0, 0, 368, + 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, + 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, + 408, 283, 386, 260, 194, 291, 198, 398, 419, 218, + 379, 0, 0, 0, 200, 417, 395, 310, 280, 281, + 199, 0, 361, 239, 258, 230, 329, 414, 415, 229, + 448, 208, 433, 202, 209, 432, 322, 410, 418, 311, + 302, 201, 416, 309, 301, 286, 249, 268, 355, 296, + 356, 269, 318, 317, 319, 0, 196, 0, 392, 427, + 449, 215, 0, 0, 405, 442, 445, 0, 358, 216, + 259, 248, 354, 257, 289, 441, 443, 444, 214, 352, + 265, 333, 422, 321, 210, 271, 388, 285, 294, 0, + 0, 339, 370, 219, 425, 389, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 203, 290, 0, + 359, 255, 447, 431, 428, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 204, 212, 221, 233, 246, 253, 263, 267, + 270, 273, 274, 277, 282, 299, 304, 305, 306, 307, + 323, 324, 325, 328, 331, 332, 335, 337, 338, 341, + 347, 348, 349, 350, 351, 353, 360, 364, 372, 373, + 374, 375, 376, 377, 378, 382, 383, 384, 385, 393, + 397, 412, 413, 424, 435, 439, 264, 420, 440, 0, + 298, 0, 0, 300, 250, 266, 275, 0, 430, 394, + 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, + 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, + 400, 401, 402, 404, 312, 238, 330, 0, 0, 0, + 1435, 0, 0, 0, 0, 241, 0, 0, 0, 0, + 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, + 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, + 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 278, 225, 195, 327, 391, 254, 0, 0, + 0, 177, 178, 179, 0, 1437, 0, 0, 0, 0, + 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, + 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 262, 0, 316, 0, + 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, + 0, 287, 0, 284, 191, 205, 0, 0, 326, 365, + 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, + 252, 362, 345, 367, 0, 1433, 368, 293, 411, 357, + 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, + 232, 334, 396, 426, 387, 313, 407, 408, 283, 386, + 260, 194, 291, 198, 398, 419, 218, 379, 0, 0, + 0, 200, 417, 395, 310, 280, 281, 199, 0, 361, + 239, 258, 230, 329, 414, 415, 229, 448, 208, 433, + 202, 209, 432, 322, 410, 418, 311, 302, 201, 416, + 309, 301, 286, 249, 268, 355, 296, 356, 269, 318, + 317, 319, 0, 196, 0, 392, 427, 449, 215, 0, + 0, 405, 442, 445, 0, 358, 216, 259, 248, 354, + 257, 289, 441, 443, 444, 214, 352, 265, 333, 422, + 321, 210, 271, 388, 285, 294, 0, 0, 339, 370, + 219, 425, 389, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 190, 203, 290, 0, 359, 255, 447, + 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, + 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, + 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, + 328, 331, 332, 335, 337, 338, 341, 347, 348, 349, + 350, 351, 353, 360, 364, 372, 373, 374, 375, 376, + 377, 378, 382, 383, 384, 385, 393, 397, 412, 413, + 424, 435, 439, 264, 420, 440, 0, 298, 0, 0, + 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, + 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, + 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, + 404, 312, 238, 330, 0, 0, 0, 0, 0, 0, + 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, + 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, + 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, + 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, + 225, 195, 327, 391, 254, 0, 0, 0, 177, 178, + 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, + 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, + 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 755, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 316, 0, 0, 0, 436, + 0, 0, 0, 0, 0, 0, 0, 0, 287, 761, + 284, 191, 205, 759, 0, 326, 365, 371, 0, 0, + 0, 228, 0, 369, 340, 423, 213, 252, 362, 345, + 367, 0, 0, 368, 293, 411, 357, 421, 437, 438, + 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, + 426, 387, 313, 407, 408, 283, 386, 260, 194, 291, + 198, 398, 419, 218, 379, 0, 0, 0, 200, 417, + 395, 310, 280, 281, 199, 0, 361, 239, 258, 230, + 329, 414, 415, 229, 448, 208, 433, 202, 209, 432, + 322, 410, 418, 311, 302, 201, 416, 309, 301, 286, + 249, 268, 355, 296, 356, 269, 318, 317, 319, 0, + 196, 0, 392, 427, 449, 215, 0, 0, 405, 442, + 445, 0, 358, 216, 259, 248, 354, 257, 289, 441, + 443, 444, 214, 352, 265, 333, 422, 321, 210, 271, + 388, 285, 294, 0, 0, 339, 370, 219, 425, 389, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 190, 203, 290, 0, 359, 255, 447, 431, 428, 0, + 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, + 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, + 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, + 335, 337, 338, 341, 347, 348, 349, 350, 351, 353, + 360, 364, 372, 373, 374, 375, 376, 377, 378, 382, + 383, 384, 385, 393, 397, 412, 413, 424, 435, 439, + 264, 420, 440, 0, 298, 0, 0, 300, 250, 266, + 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, + 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, + 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, + 330, 0, 0, 0, 1435, 0, 0, 0, 0, 241, + 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, + 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, + 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, + 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, + 391, 254, 0, 0, 0, 177, 178, 179, 0, 1437, + 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, + 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 262, 0, 316, 0, 0, 0, 436, 0, 0, 0, + 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, + 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, + 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, + 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, + 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, + 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, + 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, + 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, + 229, 448, 208, 433, 202, 209, 432, 322, 410, 418, + 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, + 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, + 427, 449, 215, 0, 0, 405, 442, 445, 0, 358, + 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, + 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, + 0, 0, 339, 370, 219, 425, 389, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 190, 203, 290, + 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, + 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, + 307, 323, 324, 325, 328, 331, 332, 335, 337, 338, + 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, + 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, + 393, 397, 412, 413, 424, 435, 439, 264, 420, 440, + 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, + 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, + 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, + 380, 400, 401, 402, 404, 312, 238, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 330, 0, 0, 0, 0, 0, 0, 0, 0, 241, + 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, + 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, + 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, + 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, + 391, 254, 69, 0, 0, 177, 178, 179, 0, 0, + 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, + 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 262, 0, 316, 0, 0, 0, 436, 0, 0, 0, + 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, + 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, + 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, + 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, + 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, + 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, + 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, + 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, + 229, 448, 208, 433, 202, 209, 432, 322, 410, 418, + 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, + 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, + 427, 449, 215, 0, 0, 405, 442, 445, 0, 358, + 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, + 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, + 0, 0, 339, 370, 219, 425, 389, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 190, 203, 290, + 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, + 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, + 307, 323, 324, 325, 328, 331, 332, 335, 337, 338, + 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, + 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, + 393, 397, 412, 413, 424, 435, 439, 264, 420, 440, + 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, + 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, + 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, + 380, 400, 401, 402, 404, 312, 238, 330, 0, 0, + 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, + 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, + 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, + 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 278, 225, 195, 327, 391, 254, 0, + 0, 0, 177, 178, 179, 0, 0, 1455, 0, 0, + 1456, 0, 0, 217, 0, 223, 0, 0, 0, 0, + 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, + 0, 0, 0, 436, 0, 0, 0, 0, 0, 0, + 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, + 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, + 213, 252, 362, 345, 367, 0, 0, 368, 293, 411, + 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, + 206, 232, 334, 396, 426, 387, 313, 407, 408, 283, + 386, 260, 194, 291, 198, 398, 419, 218, 379, 0, + 0, 0, 200, 417, 395, 310, 280, 281, 199, 0, + 361, 239, 258, 230, 329, 414, 415, 229, 448, 208, + 433, 202, 209, 432, 322, 410, 418, 311, 302, 201, + 416, 309, 301, 286, 249, 268, 355, 296, 356, 269, + 318, 317, 319, 0, 196, 0, 392, 427, 449, 215, + 0, 0, 405, 442, 445, 0, 358, 216, 259, 248, + 354, 257, 289, 441, 443, 444, 214, 352, 265, 333, + 422, 321, 210, 271, 388, 285, 294, 0, 0, 339, + 370, 219, 425, 389, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 190, 203, 290, 0, 359, 255, + 447, 431, 428, 0, 0, 234, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, + 204, 212, 221, 233, 246, 253, 263, 267, 270, 273, + 274, 277, 282, 299, 304, 305, 306, 307, 323, 324, + 325, 328, 331, 332, 335, 337, 338, 341, 347, 348, + 349, 350, 351, 353, 360, 364, 372, 373, 374, 375, + 376, 377, 378, 382, 383, 384, 385, 393, 397, 412, + 413, 424, 435, 439, 264, 420, 440, 0, 298, 0, + 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, + 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, + 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, + 402, 404, 312, 238, 330, 0, 0, 0, 0, 0, + 0, 0, 0, 241, 0, 1100, 0, 0, 0, 288, + 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, + 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, + 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 278, 225, 195, 327, 391, 254, 0, 0, 0, 177, + 178, 179, 0, 1099, 0, 0, 0, 0, 0, 0, + 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, + 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 262, 0, 316, 0, 0, 0, + 436, 0, 0, 0, 0, 0, 0, 0, 0, 287, + 0, 284, 191, 205, 0, 0, 326, 365, 371, 0, + 0, 0, 228, 0, 369, 340, 423, 213, 252, 362, + 345, 367, 0, 0, 368, 293, 411, 357, 421, 437, + 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, + 396, 426, 387, 313, 407, 408, 283, 386, 260, 194, + 291, 198, 398, 419, 218, 379, 0, 0, 0, 200, + 417, 395, 310, 280, 281, 199, 0, 361, 239, 258, + 230, 329, 414, 415, 229, 448, 208, 433, 202, 209, + 432, 322, 410, 418, 311, 302, 201, 416, 309, 301, + 286, 249, 268, 355, 296, 356, 269, 318, 317, 319, + 0, 196, 0, 392, 427, 449, 215, 0, 0, 405, + 442, 445, 0, 358, 216, 259, 248, 354, 257, 289, + 441, 443, 444, 214, 352, 265, 333, 422, 321, 210, + 271, 388, 285, 294, 0, 0, 339, 370, 219, 425, + 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 290, 0, 359, 255, 447, 431, 428, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 253, 263, 267, 270, 273, 274, 277, 282, + 299, 304, 305, 306, 307, 323, 324, 325, 328, 331, + 332, 335, 337, 338, 341, 347, 348, 349, 350, 351, + 353, 360, 364, 372, 373, 374, 375, 376, 377, 378, + 382, 383, 384, 385, 393, 397, 412, 413, 424, 435, + 439, 264, 420, 440, 0, 298, 0, 0, 300, 250, + 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, + 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, + 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, + 238, 330, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, + 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, + 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, + 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, + 327, 391, 254, 0, 0, 584, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 262, 0, 316, 0, 0, 0, 436, 0, 0, + 0, 0, 0, 0, 0, 0, 287, 0, 284, 191, + 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, + 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, + 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, + 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, + 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, + 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, + 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, + 415, 229, 448, 208, 433, 202, 209, 432, 322, 410, + 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, + 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, + 392, 427, 449, 215, 0, 0, 405, 442, 445, 0, + 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, + 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, + 294, 0, 0, 339, 370, 219, 425, 389, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, + 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, + 306, 307, 323, 324, 325, 328, 331, 332, 335, 337, + 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, + 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, + 385, 393, 397, 412, 413, 424, 435, 439, 264, 420, + 440, 0, 298, 0, 0, 300, 250, 266, 275, 0, + 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, + 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, + 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, + 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, + 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, + 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, + 69, 0, 0, 177, 178, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, + 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, + 316, 0, 0, 0, 436, 0, 0, 0, 0, 0, + 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, + 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, + 423, 213, 252, 362, 345, 367, 0, 0, 368, 293, + 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, + 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, + 283, 386, 260, 194, 291, 198, 398, 419, 218, 379, + 0, 0, 0, 200, 417, 395, 310, 280, 281, 199, + 0, 361, 239, 258, 230, 329, 414, 415, 229, 448, + 208, 433, 202, 209, 432, 322, 410, 418, 311, 302, + 201, 416, 309, 301, 286, 249, 268, 355, 296, 356, + 269, 318, 317, 319, 0, 196, 0, 392, 427, 449, + 215, 0, 0, 405, 442, 445, 0, 358, 216, 259, + 248, 354, 257, 289, 441, 443, 444, 214, 352, 265, + 333, 422, 321, 210, 271, 388, 285, 294, 0, 0, + 339, 370, 219, 425, 389, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 190, 203, 290, 0, 359, + 255, 447, 431, 428, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, + 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, + 324, 325, 328, 331, 332, 335, 337, 338, 341, 347, + 348, 349, 350, 351, 353, 360, 364, 372, 373, 374, + 375, 376, 377, 378, 382, 383, 384, 385, 393, 397, + 412, 413, 424, 435, 439, 264, 420, 440, 0, 298, + 0, 0, 300, 250, 266, 275, 0, 430, 394, 207, + 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, + 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, + 401, 402, 404, 312, 238, 330, 0, 0, 0, 0, + 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, + 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, + 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, + 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 278, 225, 195, 327, 391, 254, 0, 0, 0, + 177, 178, 179, 0, 1437, 0, 0, 0, 0, 0, + 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, + 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 316, 0, 0, + 0, 436, 0, 0, 0, 0, 0, 0, 0, 0, + 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, + 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, + 362, 345, 367, 0, 0, 368, 293, 411, 357, 421, + 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, + 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, + 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, + 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, + 258, 230, 329, 414, 415, 229, 448, 208, 433, 202, + 209, 432, 322, 410, 418, 311, 302, 201, 416, 309, + 301, 286, 249, 268, 355, 296, 356, 269, 318, 317, + 319, 0, 196, 0, 392, 427, 449, 215, 0, 0, + 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, + 289, 441, 443, 444, 214, 352, 265, 333, 422, 321, + 210, 271, 388, 285, 294, 0, 0, 339, 370, 219, + 425, 389, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 190, 203, 290, 0, 359, 255, 447, 431, + 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, + 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, + 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, + 331, 332, 335, 337, 338, 341, 347, 348, 349, 350, + 351, 353, 360, 364, 372, 373, 374, 375, 376, 377, + 378, 382, 383, 384, 385, 393, 397, 412, 413, 424, + 435, 439, 264, 420, 440, 0, 298, 0, 0, 300, + 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, + 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, + 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, + 312, 238, 330, 0, 0, 0, 0, 0, 0, 0, + 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, + 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, + 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, + 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, + 195, 327, 391, 254, 0, 0, 0, 177, 178, 179, + 0, 1069, 0, 0, 0, 0, 0, 0, 217, 0, + 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 262, 0, 316, 0, 0, 0, 436, 0, + 0, 0, 0, 0, 0, 0, 0, 287, 0, 284, + 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, + 228, 0, 369, 340, 423, 213, 252, 362, 345, 367, + 0, 0, 368, 293, 411, 357, 421, 437, 438, 235, + 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, + 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, + 398, 419, 218, 379, 0, 0, 0, 200, 417, 395, + 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, + 414, 415, 229, 448, 208, 433, 202, 209, 432, 322, + 410, 418, 311, 302, 201, 416, 309, 301, 286, 249, + 268, 355, 296, 356, 269, 318, 317, 319, 0, 196, + 0, 392, 427, 449, 215, 0, 0, 405, 442, 445, + 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, + 444, 214, 352, 265, 333, 422, 321, 210, 271, 388, + 285, 294, 0, 0, 339, 370, 219, 425, 389, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, + 203, 290, 0, 359, 255, 447, 431, 428, 0, 0, + 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, + 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, + 305, 306, 307, 323, 324, 325, 328, 331, 332, 335, + 337, 338, 341, 347, 348, 349, 350, 351, 353, 360, + 364, 372, 373, 374, 375, 376, 377, 378, 382, 383, + 384, 385, 393, 397, 412, 413, 424, 435, 439, 264, + 420, 440, 0, 298, 0, 0, 300, 250, 266, 275, + 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, + 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, + 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, + 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, + 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, + 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, + 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, + 254, 0, 0, 0, 177, 178, 179, 0, 0, 0, + 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, + 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, + 0, 316, 0, 0, 0, 436, 0, 0, 0, 0, + 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, + 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, + 340, 423, 213, 252, 362, 345, 367, 0, 0, 368, + 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, + 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, + 408, 283, 386, 260, 194, 291, 198, 398, 419, 218, + 379, 0, 0, 0, 200, 417, 395, 310, 280, 281, + 199, 0, 361, 239, 258, 230, 329, 414, 415, 229, + 448, 208, 433, 202, 209, 432, 322, 410, 418, 311, + 302, 201, 416, 309, 301, 286, 249, 268, 355, 296, + 356, 269, 318, 317, 319, 0, 196, 0, 392, 427, + 449, 215, 0, 0, 405, 442, 445, 0, 358, 216, + 259, 248, 354, 257, 289, 441, 443, 444, 214, 352, + 265, 333, 422, 321, 210, 271, 388, 285, 294, 0, + 0, 339, 370, 219, 425, 389, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 203, 290, 1340, + 359, 255, 447, 431, 428, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 204, 212, 221, 233, 246, 253, 263, 267, + 270, 273, 274, 277, 282, 299, 304, 305, 306, 307, + 323, 324, 325, 328, 331, 332, 335, 337, 338, 341, + 347, 348, 349, 350, 351, 353, 360, 364, 372, 373, + 374, 375, 376, 377, 378, 382, 383, 384, 385, 393, + 397, 412, 413, 424, 435, 439, 264, 420, 440, 0, + 298, 0, 0, 300, 250, 266, 275, 0, 430, 394, + 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, + 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, + 400, 401, 402, 404, 312, 238, 330, 0, 1224, 0, + 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, + 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, + 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, + 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 278, 225, 195, 327, 391, 254, 0, 0, + 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, + 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, + 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 262, 0, 316, 0, + 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, + 0, 287, 0, 284, 191, 205, 0, 0, 326, 365, + 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, + 252, 362, 345, 367, 0, 0, 368, 293, 411, 357, + 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, + 232, 334, 396, 426, 387, 313, 407, 408, 283, 386, + 260, 194, 291, 198, 398, 419, 218, 379, 0, 0, + 0, 200, 417, 395, 310, 280, 281, 199, 0, 361, + 239, 258, 230, 329, 414, 415, 229, 448, 208, 433, + 202, 209, 432, 322, 410, 418, 311, 302, 201, 416, + 309, 301, 286, 249, 268, 355, 296, 356, 269, 318, + 317, 319, 0, 196, 0, 392, 427, 449, 215, 0, + 0, 405, 442, 445, 0, 358, 216, 259, 248, 354, + 257, 289, 441, 443, 444, 214, 352, 265, 333, 422, + 321, 210, 271, 388, 285, 294, 0, 0, 339, 370, + 219, 425, 389, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 190, 203, 290, 0, 359, 255, 447, + 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, + 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, + 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, + 328, 331, 332, 335, 337, 338, 341, 347, 348, 349, + 350, 351, 353, 360, 364, 372, 373, 374, 375, 376, + 377, 378, 382, 383, 384, 385, 393, 397, 412, 413, + 424, 435, 439, 264, 420, 440, 0, 298, 0, 0, + 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, + 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, + 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, + 404, 312, 238, 330, 0, 1222, 0, 0, 0, 0, + 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, + 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, + 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, + 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, + 225, 195, 327, 391, 254, 0, 0, 0, 177, 178, + 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, + 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, + 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 316, 0, 0, 0, 436, + 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, + 284, 191, 205, 0, 0, 326, 365, 371, 0, 0, + 0, 228, 0, 369, 340, 423, 213, 252, 362, 345, + 367, 0, 0, 368, 293, 411, 357, 421, 437, 438, + 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, + 426, 387, 313, 407, 408, 283, 386, 260, 194, 291, + 198, 398, 419, 218, 379, 0, 0, 0, 200, 417, + 395, 310, 280, 281, 199, 0, 361, 239, 258, 230, + 329, 414, 415, 229, 448, 208, 433, 202, 209, 432, + 322, 410, 418, 311, 302, 201, 416, 309, 301, 286, + 249, 268, 355, 296, 356, 269, 318, 317, 319, 0, + 196, 0, 392, 427, 449, 215, 0, 0, 405, 442, + 445, 0, 358, 216, 259, 248, 354, 257, 289, 441, + 443, 444, 214, 352, 265, 333, 422, 321, 210, 271, + 388, 285, 294, 0, 0, 339, 370, 219, 425, 389, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 190, 203, 290, 0, 359, 255, 447, 431, 428, 0, + 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, + 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, + 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, + 335, 337, 338, 341, 347, 348, 349, 350, 351, 353, + 360, 364, 372, 373, 374, 375, 376, 377, 378, 382, + 383, 384, 385, 393, 397, 412, 413, 424, 435, 439, + 264, 420, 440, 0, 298, 0, 0, 300, 250, 266, + 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, + 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, + 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, + 330, 0, 1220, 0, 0, 0, 0, 0, 0, 241, + 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, + 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, + 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, + 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, + 391, 254, 0, 0, 0, 177, 178, 179, 0, 0, + 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, + 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 262, 0, 316, 0, 0, 0, 436, 0, 0, 0, + 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, + 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, + 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, + 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, + 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, + 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, + 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, + 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, + 229, 448, 208, 433, 202, 209, 432, 322, 410, 418, + 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, + 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, + 427, 449, 215, 0, 0, 405, 442, 445, 0, 358, + 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, + 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, + 0, 0, 339, 370, 219, 425, 389, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 190, 203, 290, + 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, + 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, + 307, 323, 324, 325, 328, 331, 332, 335, 337, 338, + 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, + 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, + 393, 397, 412, 413, 424, 435, 439, 264, 420, 440, + 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, + 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, + 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, + 380, 400, 401, 402, 404, 312, 238, 330, 0, 1218, + 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, + 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, + 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, + 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 278, 225, 195, 327, 391, 254, 0, + 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, + 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, + 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, + 0, 0, 0, 436, 0, 0, 0, 0, 0, 0, + 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, + 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, + 213, 252, 362, 345, 367, 0, 0, 368, 293, 411, + 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, + 206, 232, 334, 396, 426, 387, 313, 407, 408, 283, + 386, 260, 194, 291, 198, 398, 419, 218, 379, 0, + 0, 0, 200, 417, 395, 310, 280, 281, 199, 0, + 361, 239, 258, 230, 329, 414, 415, 229, 448, 208, + 433, 202, 209, 432, 322, 410, 418, 311, 302, 201, + 416, 309, 301, 286, 249, 268, 355, 296, 356, 269, + 318, 317, 319, 0, 196, 0, 392, 427, 449, 215, + 0, 0, 405, 442, 445, 0, 358, 216, 259, 248, + 354, 257, 289, 441, 443, 444, 214, 352, 265, 333, + 422, 321, 210, 271, 388, 285, 294, 0, 0, 339, + 370, 219, 425, 389, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 190, 203, 290, 0, 359, 255, + 447, 431, 428, 0, 0, 234, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, + 204, 212, 221, 233, 246, 253, 263, 267, 270, 273, + 274, 277, 282, 299, 304, 305, 306, 307, 323, 324, + 325, 328, 331, 332, 335, 337, 338, 341, 347, 348, + 349, 350, 351, 353, 360, 364, 372, 373, 374, 375, + 376, 377, 378, 382, 383, 384, 385, 393, 397, 412, + 413, 424, 435, 439, 264, 420, 440, 0, 298, 0, + 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, + 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, + 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, + 402, 404, 312, 238, 330, 0, 1216, 0, 0, 0, + 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, + 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, + 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, + 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 278, 225, 195, 327, 391, 254, 0, 0, 0, 177, + 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, + 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, + 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 262, 0, 316, 0, 0, 0, + 436, 0, 0, 0, 0, 0, 0, 0, 0, 287, + 0, 284, 191, 205, 0, 0, 326, 365, 371, 0, + 0, 0, 228, 0, 369, 340, 423, 213, 252, 362, + 345, 367, 0, 0, 368, 293, 411, 357, 421, 437, + 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, + 396, 426, 387, 313, 407, 408, 283, 386, 260, 194, + 291, 198, 398, 419, 218, 379, 0, 0, 0, 200, + 417, 395, 310, 280, 281, 199, 0, 361, 239, 258, + 230, 329, 414, 415, 229, 448, 208, 433, 202, 209, + 432, 322, 410, 418, 311, 302, 201, 416, 309, 301, + 286, 249, 268, 355, 296, 356, 269, 318, 317, 319, + 0, 196, 0, 392, 427, 449, 215, 0, 0, 405, + 442, 445, 0, 358, 216, 259, 248, 354, 257, 289, + 441, 443, 444, 214, 352, 265, 333, 422, 321, 210, + 271, 388, 285, 294, 0, 0, 339, 370, 219, 425, + 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 290, 0, 359, 255, 447, 431, 428, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 253, 263, 267, 270, 273, 274, 277, 282, + 299, 304, 305, 306, 307, 323, 324, 325, 328, 331, + 332, 335, 337, 338, 341, 347, 348, 349, 350, 351, + 353, 360, 364, 372, 373, 374, 375, 376, 377, 378, + 382, 383, 384, 385, 393, 397, 412, 413, 424, 435, + 439, 264, 420, 440, 0, 298, 0, 0, 300, 250, + 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, + 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, + 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, + 238, 330, 0, 1212, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, + 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, + 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, + 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, + 327, 391, 254, 0, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 262, 0, 316, 0, 0, 0, 436, 0, 0, + 0, 0, 0, 0, 0, 0, 287, 0, 284, 191, + 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, + 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, + 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, + 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, + 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, + 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, + 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, + 415, 229, 448, 208, 433, 202, 209, 432, 322, 410, + 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, + 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, + 392, 427, 449, 215, 0, 0, 405, 442, 445, 0, + 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, + 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, + 294, 0, 0, 339, 370, 219, 425, 389, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, + 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, + 306, 307, 323, 324, 325, 328, 331, 332, 335, 337, + 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, + 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, + 385, 393, 397, 412, 413, 424, 435, 439, 264, 420, + 440, 0, 298, 0, 0, 300, 250, 266, 275, 0, + 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, + 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, + 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, + 1210, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, + 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, + 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, + 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, + 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, + 316, 0, 0, 0, 436, 0, 0, 0, 0, 0, + 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, + 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, + 423, 213, 252, 362, 345, 367, 0, 0, 368, 293, + 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, + 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, + 283, 386, 260, 194, 291, 198, 398, 419, 218, 379, + 0, 0, 0, 200, 417, 395, 310, 280, 281, 199, + 0, 361, 239, 258, 230, 329, 414, 415, 229, 448, + 208, 433, 202, 209, 432, 322, 410, 418, 311, 302, + 201, 416, 309, 301, 286, 249, 268, 355, 296, 356, + 269, 318, 317, 319, 0, 196, 0, 392, 427, 449, + 215, 0, 0, 405, 442, 445, 0, 358, 216, 259, + 248, 354, 257, 289, 441, 443, 444, 214, 352, 265, + 333, 422, 321, 210, 271, 388, 285, 294, 0, 0, + 339, 370, 219, 425, 389, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 190, 203, 290, 0, 359, + 255, 447, 431, 428, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, + 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, + 324, 325, 328, 331, 332, 335, 337, 338, 341, 347, + 348, 349, 350, 351, 353, 360, 364, 372, 373, 374, + 375, 376, 377, 378, 382, 383, 384, 385, 393, 397, + 412, 413, 424, 435, 439, 264, 420, 440, 0, 298, + 0, 0, 300, 250, 266, 275, 0, 430, 394, 207, + 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, + 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, + 401, 402, 404, 312, 238, 330, 0, 1208, 0, 0, + 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, + 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, + 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, + 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 278, 225, 195, 327, 391, 254, 0, 0, 0, + 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, + 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, + 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 316, 0, 0, + 0, 436, 0, 0, 0, 0, 0, 0, 0, 0, + 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, + 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, + 362, 345, 367, 0, 0, 368, 293, 411, 357, 421, + 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, + 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, + 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, + 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, + 258, 230, 329, 414, 415, 229, 448, 208, 433, 202, + 209, 432, 322, 410, 418, 311, 302, 201, 416, 309, + 301, 286, 249, 268, 355, 296, 356, 269, 318, 317, + 319, 0, 196, 0, 392, 427, 449, 215, 0, 0, + 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, + 289, 441, 443, 444, 214, 352, 265, 333, 422, 321, + 210, 271, 388, 285, 294, 0, 0, 339, 370, 219, + 425, 389, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 190, 203, 290, 0, 359, 255, 447, 431, + 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, + 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, + 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, + 331, 332, 335, 337, 338, 341, 347, 348, 349, 350, + 351, 353, 360, 364, 372, 373, 374, 375, 376, 377, + 378, 382, 383, 384, 385, 393, 397, 412, 413, 424, + 435, 439, 264, 420, 440, 0, 298, 0, 0, 300, + 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, + 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, + 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, + 312, 238, 330, 0, 0, 0, 0, 0, 0, 0, + 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, + 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, + 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, + 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, + 195, 327, 391, 254, 1183, 0, 0, 177, 178, 179, + 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, + 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 262, 0, 316, 0, 0, 0, 436, 0, + 0, 0, 0, 0, 0, 0, 0, 287, 0, 284, + 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, + 228, 0, 369, 340, 423, 213, 252, 362, 345, 367, + 0, 0, 368, 293, 411, 357, 421, 437, 438, 235, + 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, + 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, + 398, 419, 218, 379, 0, 0, 0, 200, 417, 395, + 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, + 414, 415, 229, 448, 208, 433, 202, 209, 432, 322, + 410, 418, 311, 302, 201, 416, 309, 301, 286, 249, + 268, 355, 296, 356, 269, 318, 317, 319, 0, 196, + 0, 392, 427, 449, 215, 0, 0, 405, 442, 445, + 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, + 444, 214, 352, 265, 333, 422, 321, 210, 271, 388, + 285, 294, 0, 0, 339, 370, 219, 425, 389, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, + 203, 290, 0, 359, 255, 447, 431, 428, 0, 0, + 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, + 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, + 305, 306, 307, 323, 324, 325, 328, 331, 332, 335, + 337, 338, 341, 347, 348, 349, 350, 351, 353, 360, + 364, 372, 373, 374, 375, 376, 377, 378, 382, 383, + 384, 385, 393, 397, 412, 413, 424, 435, 439, 264, + 420, 440, 0, 298, 0, 0, 300, 250, 266, 275, + 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, + 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, + 363, 220, 380, 400, 401, 402, 404, 312, 238, 1082, + 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, + 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, + 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, + 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, + 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 278, 225, 195, 327, 391, 254, 0, 0, + 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, + 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, + 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 262, 0, 316, 0, + 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, + 0, 287, 0, 284, 191, 205, 0, 0, 326, 365, + 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, + 252, 362, 345, 367, 0, 0, 368, 293, 411, 357, + 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, + 232, 334, 396, 426, 387, 313, 407, 408, 283, 386, + 260, 194, 291, 198, 398, 419, 218, 379, 0, 0, + 0, 200, 417, 395, 310, 280, 281, 199, 0, 361, + 239, 258, 230, 329, 414, 415, 229, 448, 208, 433, + 202, 209, 432, 322, 410, 418, 311, 302, 201, 416, + 309, 301, 286, 249, 268, 355, 296, 356, 269, 318, + 317, 319, 0, 196, 0, 392, 427, 449, 215, 0, + 0, 405, 442, 445, 0, 358, 216, 259, 248, 354, + 257, 289, 441, 443, 444, 214, 352, 265, 333, 422, + 321, 210, 271, 388, 285, 294, 0, 0, 339, 370, + 219, 425, 389, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 190, 203, 290, 0, 359, 255, 447, + 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, + 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, + 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, + 328, 331, 332, 335, 337, 338, 341, 347, 348, 349, + 350, 351, 353, 360, 364, 372, 373, 374, 375, 376, + 377, 378, 382, 383, 384, 385, 393, 397, 412, 413, + 424, 435, 439, 264, 420, 440, 0, 298, 0, 0, + 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, + 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, + 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, + 404, 312, 238, 330, 0, 0, 0, 0, 0, 0, + 0, 1073, 241, 0, 0, 0, 0, 0, 288, 0, + 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, + 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, + 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, + 225, 195, 327, 391, 254, 0, 0, 0, 177, 178, + 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, + 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, + 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 316, 0, 0, 0, 436, + 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, + 284, 191, 205, 0, 0, 326, 365, 371, 0, 0, + 0, 228, 0, 369, 340, 423, 213, 252, 362, 345, + 367, 0, 0, 368, 293, 411, 357, 421, 437, 438, + 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, + 426, 387, 313, 407, 408, 283, 386, 260, 194, 291, + 198, 398, 419, 218, 379, 0, 0, 0, 200, 417, + 395, 310, 280, 281, 199, 0, 361, 239, 258, 230, + 329, 414, 415, 229, 448, 208, 433, 202, 209, 432, + 322, 410, 418, 311, 302, 201, 416, 309, 301, 286, + 249, 268, 355, 296, 356, 269, 318, 317, 319, 0, + 196, 0, 392, 427, 449, 215, 0, 0, 405, 442, + 445, 0, 358, 216, 259, 248, 354, 257, 289, 441, + 443, 444, 214, 352, 265, 333, 422, 321, 210, 271, + 388, 285, 294, 0, 0, 339, 370, 219, 425, 389, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 190, 203, 290, 0, 359, 255, 447, 431, 428, 0, + 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, + 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, + 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, + 335, 337, 338, 341, 347, 348, 349, 350, 351, 353, + 360, 364, 372, 373, 374, 375, 376, 377, 378, 382, + 383, 384, 385, 393, 397, 412, 413, 424, 435, 439, + 264, 420, 440, 0, 298, 0, 0, 300, 250, 266, + 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, + 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, + 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, + 330, 0, 0, 0, 0, 0, 0, 0, 0, 241, + 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, + 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, + 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, + 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, + 391, 254, 0, 0, 0, 177, 178, 179, 0, 931, + 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, + 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 262, 0, 316, 0, 0, 0, 436, 0, 0, 0, + 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, + 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, + 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, + 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, + 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, + 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, + 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, + 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, + 229, 448, 208, 433, 202, 209, 432, 322, 410, 418, + 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, + 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, + 427, 449, 215, 0, 0, 405, 442, 445, 0, 358, + 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, + 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, + 0, 0, 339, 370, 219, 425, 389, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 190, 203, 290, + 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, + 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, + 307, 323, 324, 325, 328, 331, 332, 335, 337, 338, + 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, + 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, + 393, 397, 412, 413, 424, 435, 439, 264, 420, 440, + 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, + 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, + 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, + 380, 400, 401, 402, 404, 312, 238, 330, 0, 0, + 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, + 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, + 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, + 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 278, 225, 195, 327, 391, 254, 0, + 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, + 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, + 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 497, 0, 262, 0, 316, + 0, 0, 0, 436, 0, 0, 0, 0, 0, 0, + 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, + 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, + 213, 252, 362, 345, 367, 0, 0, 368, 293, 411, + 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, + 206, 232, 334, 396, 426, 387, 313, 407, 408, 283, + 386, 260, 194, 291, 198, 398, 419, 218, 379, 0, + 0, 0, 200, 417, 395, 310, 280, 281, 199, 0, + 361, 239, 258, 230, 329, 414, 415, 229, 448, 208, + 433, 202, 209, 432, 322, 410, 418, 311, 302, 201, + 416, 309, 301, 286, 249, 268, 355, 296, 356, 269, + 318, 317, 319, 0, 196, 0, 392, 427, 449, 215, + 0, 0, 405, 442, 445, 0, 358, 216, 259, 248, + 354, 257, 289, 441, 443, 444, 214, 352, 265, 333, + 422, 321, 210, 271, 388, 285, 294, 0, 0, 339, + 370, 219, 425, 389, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 190, 203, 290, 0, 359, 255, + 447, 431, 428, 0, 0, 234, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, + 204, 212, 221, 233, 246, 253, 263, 267, 270, 273, + 274, 277, 282, 299, 304, 305, 306, 307, 323, 324, + 325, 328, 331, 332, 335, 337, 338, 341, 347, 348, + 349, 350, 351, 353, 360, 364, 372, 373, 374, 375, + 376, 377, 378, 382, 383, 384, 385, 393, 397, 412, + 413, 424, 435, 439, 496, 420, 440, 0, 298, 0, + 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, + 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, + 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, + 402, 404, 312, 238, 330, 0, 0, 0, 0, 0, + 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, + 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, + 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, + 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 278, 225, 195, 327, 391, 254, 0, 0, 0, 177, + 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, + 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, + 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 262, 0, 316, 0, 185, 0, + 436, 0, 0, 0, 0, 0, 0, 0, 0, 287, + 0, 284, 191, 205, 0, 0, 326, 365, 371, 0, + 0, 0, 228, 0, 369, 340, 423, 213, 252, 362, + 345, 367, 0, 0, 368, 293, 411, 357, 421, 437, + 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, + 396, 426, 387, 313, 407, 408, 283, 386, 260, 194, + 291, 198, 398, 419, 218, 379, 0, 0, 0, 200, + 417, 395, 310, 280, 281, 199, 0, 361, 239, 258, + 230, 329, 414, 415, 229, 448, 208, 433, 202, 209, + 432, 322, 410, 418, 311, 302, 201, 416, 309, 301, + 286, 249, 268, 355, 296, 356, 269, 318, 317, 319, + 0, 196, 0, 392, 427, 449, 215, 0, 0, 405, + 442, 445, 0, 358, 216, 259, 248, 354, 257, 289, + 441, 443, 444, 214, 352, 265, 333, 422, 321, 210, + 271, 388, 285, 294, 0, 0, 339, 370, 219, 425, + 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 290, 0, 359, 255, 447, 431, 428, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 253, 263, 267, 270, 273, 274, 277, 282, + 299, 304, 305, 306, 307, 323, 324, 325, 328, 331, + 332, 335, 337, 338, 341, 347, 348, 349, 350, 351, + 353, 360, 364, 372, 373, 374, 375, 376, 377, 378, + 382, 383, 384, 385, 393, 397, 412, 413, 424, 435, + 439, 264, 420, 440, 0, 298, 0, 0, 300, 250, + 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, + 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, + 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, + 238, 330, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, + 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, + 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, + 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, + 327, 391, 254, 0, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 262, 0, 316, 0, 0, 0, 436, 0, 0, + 0, 0, 0, 0, 0, 0, 287, 0, 284, 191, + 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, + 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, + 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, + 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, + 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, + 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, + 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, + 415, 229, 448, 208, 433, 202, 209, 432, 322, 410, + 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, + 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, + 392, 427, 449, 215, 0, 0, 405, 442, 445, 0, + 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, + 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, + 294, 0, 0, 339, 370, 219, 425, 389, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, + 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, + 306, 307, 323, 324, 325, 328, 331, 332, 335, 337, + 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, + 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, + 385, 393, 397, 412, 413, 424, 435, 439, 264, 420, + 440, 0, 298, 0, 0, 300, 250, 266, 275, 0, + 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, + 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, + 220, 380, 400, 401, 402, 404, 312, 238, } var yyPact = [...]int{ - 2977, -1000, -331, 1606, -1000, -1000, -1000, -1000, -1000, -1000, + 3797, -1000, -337, 1602, -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, 1568, 1212, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 577, 1226, 206, 1481, 249, 146, 965, 342, 130, - 26891, 341, 2348, 27337, -1000, 93, -1000, 71, 27337, 89, - 26445, -1000, -1000, -278, 12586, 1423, 5, -1, 27337, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1238, 1540, 1524, - 1566, 1059, 1461, -1000, 10789, 10789, 293, 293, 293, 9005, - -1000, -1000, 16613, 27337, 27337, 1227, 290, 965, 337, 328, - 327, 290, -116, -1000, -1000, -1000, 1481, -1000, -1000, 144, - -1000, 188, 1175, -1000, 1173, -1000, 406, 367, 213, 285, - 282, 210, 204, 203, 202, 201, 197, 196, 195, 220, - -1000, 509, 509, -171, -175, 270, 261, 261, 261, 315, - 1447, 1445, -1000, 446, -1000, 509, 509, 133, 509, 509, - 509, 509, 157, 154, 509, 509, 509, 509, 509, 509, - 509, 509, 509, 509, 509, 509, 509, 509, 509, 27337, - -1000, 127, 460, 550, 1481, 140, -1000, -1000, -1000, 27337, - 287, 965, 287, 287, 27337, -1000, 423, -1000, -1000, -1000, + -1000, -1000, 1568, 1182, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 552, 1247, 265, 1476, 3769, 220, 914, 412, 148, + 26645, 411, 93, 27092, -1000, 104, -1000, 90, 27092, 100, + 26198, -1000, -1000, -277, 12308, 1423, 21, 14, 27092, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1207, 1519, 1526, + 1558, 956, 1455, -1000, 10507, 10507, 357, 357, 357, 8719, + -1000, -1000, 16344, 27092, 27092, 1255, 410, 914, 394, 391, + 376, 348, -86, -1000, -1000, -1000, -1000, 1476, -1000, -1000, + 179, -1000, 251, 1183, -1000, 1174, -1000, 500, 471, 241, + 300, 299, 238, 237, 230, 227, 226, 225, 223, 222, + 257, -1000, 545, 545, -170, -173, 955, 331, 331, 331, + 365, 1434, 1431, -1000, 489, -1000, 545, 545, 146, 545, + 545, 545, 545, 159, 153, 545, 545, 545, 545, 545, + 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, + 27092, -1000, 130, 581, 594, 1476, 149, -1000, -1000, -1000, + 27092, 406, 914, 337, 337, 27092, -1000, 470, -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, @@ -3997,25 +3978,24 @@ 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, 27337, 580, - 580, 580, 580, 580, 580, 65, -14, -1000, 59, 132, - 128, 134, 617, -24, 617, 18, 54, 386, -1000, 445, - -1000, 135, 75, -1000, 580, 7165, 7165, 7165, -1000, 1473, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 308, -1000, -1000, - -1000, -1000, 27337, 25999, 255, 547, -1000, -1000, -1000, 74, - -1000, -1000, 1103, 821, -1000, 12586, 2097, 1180, 1180, -1000, - -1000, 409, -1000, -1000, 13924, 13924, 13924, 13924, 13924, 13924, - 13924, 13924, 13924, 13924, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1180, 418, - -1000, 12140, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, - 12586, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, - 1180, 1180, 1180, 1180, 1180, 1180, 1180, -1000, -1000, -1000, - 27337, -1000, 1180, 1568, -1000, 1212, -1000, -1000, -1000, 1469, - 12586, 12586, 1568, -1000, 1351, 10789, -1000, -1000, 1405, -1000, - -1000, -1000, -1000, 686, 1589, -1000, 15262, 416, 1588, 25553, - -1000, 19302, 25107, 1170, 8545, -48, -1000, -1000, -1000, 530, - 18410, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 27092, 663, 663, 663, 663, 663, 663, 75, 10, -1000, + 71, 142, 139, 145, 37, 626, 60, 317, -1000, 467, + -1000, 129, 123, -1000, 663, 6875, 6875, 6875, -1000, 1471, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 364, -1000, + -1000, -1000, -1000, 27092, 25751, 239, 582, -1000, -1000, -1000, + 7, -1000, -1000, 1084, 549, -1000, 12308, 2616, 1190, 1190, + -1000, -1000, 426, -1000, -1000, 13649, 13649, 13649, 13649, 13649, + 13649, 13649, 13649, 13649, 13649, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1190, + 468, -1000, 11861, 1190, 1190, 1190, 1190, 1190, 1190, 1190, + 1190, 12308, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, + 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, -1000, -1000, + -1000, 27092, -1000, 1190, 1568, -1000, 1182, -1000, -1000, -1000, + 1450, 12308, 12308, 1568, -1000, 1353, 10507, -1000, -1000, 1424, + -1000, -1000, -1000, -1000, 703, 1587, -1000, 14990, 464, 1582, + 25304, -1000, 19039, 24857, 1166, 8258, -56, -1000, -1000, -1000, + 574, 18145, -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, @@ -4028,305 +4008,284 @@ 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, 1473, 1056, 27337, -1000, -1000, 4163, 965, -1000, - 1225, -1000, 1052, -1000, 1190, 127, 27337, 594, 1243, 965, - 965, 965, 965, -1000, -1000, -1000, 509, 509, 219, 249, - 3854, -1000, -1000, -1000, 24654, 1215, 965, -1000, 1214, -1000, - 1497, 281, 461, 461, 965, -1000, -1000, 27337, 965, 1491, - 1489, 27337, 27337, -1000, 24208, -1000, 23762, 23316, 862, 27337, - 22870, 22424, 21978, 21532, 21086, -1000, 1294, -1000, 1223, -1000, - -1000, -1000, 27337, 27337, 27337, 14, -1000, -1000, 27337, 965, - -1000, -1000, 861, 846, 509, 509, 829, 973, 969, 968, - 509, 509, 828, 967, 934, 142, 825, 793, 788, 940, - 964, 101, 937, 894, 786, 27337, 1207, -1000, 115, 526, - 176, 186, 166, 27337, 116, 1481, 1421, 1168, 299, 27337, - 1509, 1300, 27337, 965, -1000, 7625, -1000, -1000, 959, 12586, - -1000, -1000, -1000, -1000, -1000, 580, 27337, 617, 580, 27337, - 580, 580, 580, 580, 617, 580, 27337, 27337, 617, 580, - 630, 617, -1000, -1000, 7165, 7165, 7165, 27337, 7165, 7165, - 27337, 7165, 7165, 630, -1000, -1000, -1000, 475, -1000, 1299, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 82, -1000, -1000, - -1000, -1000, -1000, 1606, -1000, -1000, -1000, -112, 1166, 20640, - -1000, -283, -284, -285, -286, -1000, -1000, -1000, -287, -288, - -1000, -1000, -1000, 12586, 12586, 12586, 12586, 694, 481, 13924, - 839, 544, 13924, 13924, 13924, 13924, 13924, 13924, 13924, 13924, - 13924, 13924, 13924, 13924, 13924, 13924, 13924, 690, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 965, -1000, 1603, 950, - 950, 439, 439, 439, 439, 439, 439, 439, 439, 439, - 14370, 9451, 7625, 1059, 1048, 1568, 10789, 10789, 12586, 12586, - 11681, 11235, 10789, 1449, 555, 821, 27337, -1000, -1000, 13478, - -1000, -1000, -1000, -1000, -1000, 899, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 27337, 27337, 10789, 10789, 10789, 10789, 10789, - -1000, 1165, -1000, -167, 16167, 12586, 1524, 1059, 1405, 1502, - 1596, 464, 760, 1164, -1000, 818, 1524, 17964, 1157, -1000, - 1405, -1000, -1000, -1000, 27337, -1000, -1000, 20194, -1000, -1000, - 6705, 27337, 194, 27337, -1000, 1155, 1276, -1000, -1000, -1000, - 1518, 17518, 27337, 1117, 1073, -1000, -1000, 412, 8085, -48, - -1000, 8085, 1137, -1000, -45, -54, 9897, 433, -1000, -1000, - -1000, 270, 14816, 1060, 688, 20, -1000, -1000, -1000, 1190, - -1000, 1190, 1190, 1190, 1190, 14, 14, 14, 14, -1000, - -1000, -1000, -1000, -1000, 1205, 1204, -1000, 1190, 1190, 1190, - 1190, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1194, 1194, - 1194, 1191, 1191, 254, -1000, 12586, 99, 27337, 1512, 783, - 115, -1000, 1507, 1298, -1000, 27337, 1243, 1243, 1243, -1000, - 888, 876, -1000, 1163, -1000, -1000, 1565, -1000, -1000, 466, - 620, 619, 453, 27337, 105, 187, -1000, 245, -1000, 27337, - 1193, 1488, 461, 965, -1000, 965, -1000, -1000, -1000, -1000, - 402, -1000, -1000, 965, 1158, -1000, 1105, 718, 605, 695, - 576, 1158, -1000, -1000, -157, 1158, -1000, 1158, -1000, 1158, - -1000, 1158, -1000, 1158, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 485, 27337, 105, 690, -1000, 295, -1000, -1000, - 690, 690, -1000, -1000, -1000, -1000, 956, 948, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 1471, 1056, 27092, -1000, -1000, 2210, 914, + -1000, 1244, -1000, 1053, -1000, 1226, 130, 348, 1267, 914, + 914, 914, 914, 623, -1000, -1000, -1000, 545, 545, 254, + 3769, 3456, -1000, -1000, -1000, 24403, 1243, 914, -1000, 1241, + -1000, 1494, 338, 506, 506, 914, -1000, -1000, 27092, 914, + 1493, 1492, 27092, 27092, -1000, 23956, -1000, 23509, 23062, 857, + 27092, 22615, 22168, 21721, 21274, 20827, -1000, 1301, -1000, 1231, + -1000, -1000, -1000, 27092, 27092, 27092, 29, -1000, -1000, 27092, + 914, -1000, -1000, 832, 827, 545, 545, 812, 945, 943, + 941, 545, 545, 808, 935, 963, 185, 805, 800, 794, + 908, 934, 105, 834, 804, 782, 27092, 1240, -1000, 125, + 565, 173, 205, 187, 27092, 126, 1476, 1404, 1158, 362, + 337, 1298, 27092, 1507, 914, -1000, 7336, -1000, -1000, 933, + 12308, -1000, -1000, -1000, -1000, -1000, 663, 27092, 626, 663, + 27092, 663, 663, 663, 663, 626, 626, 627, 626, -1000, + -1000, 663, 27092, 27092, 6875, 6875, 6875, 27092, 6875, 6875, + 27092, 6875, 6875, 627, -1000, -1000, -1000, 503, -1000, 1296, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 98, -1000, -1000, + -1000, -1000, -1000, 1602, -1000, -1000, -1000, -111, 1156, 20380, + -1000, -281, -283, -284, -285, -1000, -1000, -1000, -286, -291, + -1000, -1000, -1000, 12308, 12308, 12308, 12308, 695, 515, 13649, + 743, 540, 13649, 13649, 13649, 13649, 13649, 13649, 13649, 13649, + 13649, 13649, 13649, 13649, 13649, 13649, 13649, 693, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 914, -1000, 1600, 753, + 753, 482, 482, 482, 482, 482, 482, 482, 482, 482, + 14096, 9166, 7336, 956, 1049, 1568, 10507, 10507, 12308, 12308, + 11401, 10954, 10507, 1444, 600, 549, 27092, -1000, -1000, 13202, + -1000, -1000, -1000, -1000, -1000, 992, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 27092, 27092, 10507, 10507, 10507, 10507, 10507, + -1000, 1155, -1000, -169, 15897, 12308, 1526, 956, 1424, 1503, + 1595, 499, 1005, 1151, -1000, 773, 1526, 17698, 1157, -1000, + 1424, -1000, -1000, -1000, 27092, -1000, -1000, 19933, -1000, -1000, + 6414, 27092, 219, 27092, -1000, 1142, 1355, -1000, -1000, -1000, + 1513, 17251, 27092, 1113, 1052, -1000, -1000, 463, 7797, -56, + -1000, 7797, 1124, -1000, -51, -34, 9613, 450, -1000, -1000, + -1000, 955, 14543, 1076, -1000, 30, -1000, -1000, -1000, 1226, + -1000, 1226, 1226, 1226, 1226, 29, 29, 29, 29, -1000, + -1000, -1000, -1000, -1000, 1239, 1238, -1000, 1226, 1226, 1226, + 1226, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1237, 1237, + 1237, 1227, 1227, 311, -1000, 12308, 140, 27092, 1502, 774, + 125, 27092, 1293, -1000, 27092, 1267, 1267, 1267, -1000, 1505, + 905, 883, -1000, 1148, -1000, -1000, 1557, -1000, -1000, 586, + 668, 632, 425, 27092, 113, 213, -1000, 295, -1000, 27092, + 1236, 1491, 506, 914, -1000, 914, -1000, -1000, -1000, -1000, + 461, -1000, -1000, 914, 1147, -1000, 1116, 719, 631, 685, + 609, 1147, -1000, -1000, -120, 1147, -1000, 1147, -1000, 1147, + -1000, 1147, -1000, 1147, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 561, 27092, 113, 693, -1000, 361, -1000, -1000, + 693, 693, -1000, -1000, -1000, -1000, 930, 929, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -327, 27337, 320, 107, 124, 27337, - 27337, 27337, 27337, 27337, 384, -1000, -1000, -1000, 153, 27337, - 27337, 370, -1000, 27337, 345, -1000, -1000, -1000, -1000, -1000, - -1000, 821, -1000, -1000, 580, -1000, -1000, -1000, -1000, -1000, - -1000, 580, -1000, -1000, -1000, 580, -1000, 27337, -1000, -1000, - 580, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 27337, -1000, 933, 27337, 27337, -1000, -1000, -1000, -1000, -1000, - 217, -56, 175, -1000, -1000, -1000, -1000, 1515, -1000, 821, - 481, 624, 510, -1000, -1000, 739, -1000, -1000, 2431, -1000, - -1000, -1000, -1000, 839, 13924, 13924, 13924, 1260, 2431, 2047, - 857, 2537, 439, 625, 625, 491, 491, 491, 491, 491, - 683, 683, -1000, -1000, -1000, -1000, 899, -1000, -1000, -1000, - 899, 10789, 10789, 1156, 1180, 394, -1000, 1238, -1000, -1000, - 1524, 1027, 1027, 754, 746, 572, 1587, 1027, 515, 1583, - 1027, 1027, 10789, -1000, -1000, 640, -1000, 12586, 899, -1000, - 1279, 1149, 1148, 1027, 899, 899, 1027, 1027, 27337, -1000, - -272, -1000, -99, 392, 1180, -1000, 19748, -1000, -1000, 899, - 1103, 1469, -1000, -1000, 1397, -1000, 1348, 12586, 12586, 12586, - -1000, -1000, -1000, 1469, 1561, -1000, 1371, 1369, 1577, 10789, - 19302, 1405, -1000, -1000, -1000, 393, 1577, 1119, 1180, -1000, - 27337, 19302, 19302, 19302, 19302, 19302, -1000, 1325, 1322, -1000, - 1314, 1312, 1313, 27337, -1000, 1040, 1059, 17518, 194, 1074, - 19302, 27337, -1000, -1000, 19302, 27337, 6245, -1000, 1137, -48, - -97, -1000, -1000, -1000, -1000, 821, -1000, 870, -1000, 292, - -1000, 242, -1000, -1000, -1000, -1000, 1480, -1000, 659, 17, - -1000, -1000, 14, 14, -1000, -1000, 433, 603, 433, 433, - 433, 928, 928, -1000, -1000, -1000, -1000, -1000, 763, -1000, - -1000, -1000, 757, -1000, -1000, 840, 1288, 99, -1000, -1000, - 509, 927, 1432, -1000, -1000, 1041, 319, -1000, 27337, -1000, - 1291, 1283, 1280, -1000, -1000, -1000, -1000, 3830, 27337, 1038, - -1000, 102, 27337, 1014, 27337, -1000, 1035, 27337, -1000, 965, - -1000, -1000, 7625, -1000, 27337, 1180, -1000, -1000, -1000, -1000, - 339, 1479, 1477, 105, 102, 433, 965, -1000, -1000, -1000, - -1000, -1000, -334, 1029, 27337, 111, -1000, 1192, 762, -1000, - 1237, -1000, -1000, -1000, -1000, 98, 173, 143, 288, -1000, - -1000, -1000, -1000, 1288, 27337, -1000, -1000, -1000, -1000, 617, - -1000, 617, -1000, -1000, -1000, -1000, 1471, -74, -305, -1000, - -302, -1000, -1000, -1000, -1000, 1260, 2431, 1739, -1000, 13924, - 13924, -1000, -1000, 1027, 1027, 10789, 7625, 1568, 1469, -1000, - -1000, 286, 690, 286, 13924, 13924, -1000, 13924, 13924, -1000, - -138, 1151, 545, -1000, 12586, 681, -1000, -1000, 13924, 13924, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 325, - 324, 323, 27337, -1000, -1000, -1000, 795, 911, 1346, 821, - 821, -1000, -1000, 27337, -1000, -1000, -1000, -1000, 1575, 12586, - -1000, 1121, -1000, 5785, 1524, 1278, 27337, 1180, 1606, 15721, - 27337, 1133, -1000, 518, 1276, 1236, 1265, 1263, -1000, -1000, - -1000, -1000, 1321, -1000, 1289, -1000, -1000, -1000, -1000, -1000, - 1059, 1577, 19302, 1123, -1000, 1123, -1000, 390, -1000, -1000, - -1000, -80, -93, -1000, -1000, -1000, 270, -1000, -1000, 1252, - 13924, -1000, -1000, -1000, 433, 433, -1000, -1000, -1000, -1000, - -1000, -1000, 1025, -1000, 1023, 1110, 1019, 53, -1000, 1125, - 1468, 509, 509, -1000, 744, -1000, 965, -1000, 27337, -1000, - 27337, 27337, 27337, 1562, 1107, -1000, 27337, -1000, -1000, 27337, - -1000, -1000, 1367, 99, 1017, -1000, -1000, -1000, 187, 27337, - -1000, 950, 102, -1000, -1000, -1000, -1000, -1000, -1000, 1188, - -1000, -1000, -1000, 1010, -1000, -159, 965, 27337, 27337, 27337, - -1000, 27337, -1000, -1000, 580, 580, -1000, 1453, -1000, 965, - -1000, 13924, 2431, 2431, -1000, -1000, 899, -1000, 1524, -1000, - 899, 1190, 1190, -1000, 1190, 1191, -1000, 1190, 80, 1190, - 63, 899, 899, 2383, 2344, 2318, 1758, 1180, -127, -1000, - 821, 12586, 2113, 1320, 1180, 1180, 1180, 1008, 910, 14, - -1000, -1000, -1000, 1571, 1559, 821, -1000, -1000, -1000, 1499, - 1072, 1101, -1000, -1000, 10343, 1013, 1366, 385, 1008, 1568, - 27337, 12586, -1000, -1000, 12586, 1189, -1000, 12586, -1000, -1000, - -1000, 1568, 1568, 1123, -1000, -1000, 448, -1000, -1000, -1000, - -1000, 24, 1594, 2431, -1000, -1000, 14, 898, 14, 738, - -1000, 708, -1000, -1000, -214, -1000, -1000, 1085, 1292, -1000, - -1000, 1188, -1000, -1000, -1000, 27337, 27337, -1000, -1000, 182, - -1000, 234, 997, -1000, -172, -1000, -1000, 1517, 27337, -1000, - -1000, 7625, -1000, -1000, 1187, 1240, -1000, -1000, -1000, -1000, - -1000, -1000, 2431, -1000, 1469, -1000, -1000, 200, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 13924, 13924, 13924, 13924, - 13924, 1524, 897, 821, 13924, 13924, 18856, 27337, 27337, 17059, - 14, -11, -1000, 12586, 12586, 1487, -1000, 1180, -1000, 1120, - 27337, 1180, 27337, -1000, 1524, -1000, 821, 821, 27337, 821, - 1524, -1000, 490, -1000, -117, 433, -1000, 433, 1005, 945, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1516, 1107, - -1000, 180, 27337, -1000, 187, -1000, -177, -178, 1212, 995, - 1106, -1000, 496, 27337, 27337, -1000, -1000, -1000, 1279, 1279, - 1279, 1279, 874, 899, -1000, 1279, 1279, 993, -1000, 993, - 993, 392, -265, -1000, 1398, 1401, 821, 1103, 1593, -1000, - 1180, 1606, 375, 1101, -1000, -1000, 988, -1000, 671, 1486, - -1000, 1485, -1000, -1000, -1000, -1000, -1000, 1212, 1180, 1178, - -1000, -1000, -1000, 179, -1000, 7625, 5325, 984, -1000, -1000, - -1000, -1000, -1000, 899, 123, -162, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -11, 262, -1000, 1378, 1375, 1555, 27337, - 1101, 27337, -1000, -1000, 891, -1000, -1000, 179, 13032, 27337, - -1000, -58, -1000, -1000, -1000, -1000, -1000, 1237, -1000, 1345, - -145, -166, 1382, 1384, 1384, 1401, 1553, 1395, 1389, -1000, - 889, 1062, -1000, -1000, -1000, 1279, 899, 980, 244, -1000, - -1000, -159, -1000, 1342, -1000, 1380, 759, -1000, -1000, -1000, - -1000, 887, -1000, 1531, 1527, -1000, -1000, -1000, 1248, 125, - -1000, -160, -1000, 758, -1000, -1000, -1000, 880, 865, 1239, - -1000, 1581, -1000, -163, -1000, -1000, -1000, -1000, -1000, 1592, - 391, 391, -168, -1000, -1000, -1000, 241, 753, -1000, -1000, - -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -329, 27092, 368, 116, 191, 27092, + 27092, 27092, 27092, 27092, 421, -1000, -1000, -1000, 150, 27092, + 27092, 27092, 27092, 405, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 549, -1000, -1000, 663, -1000, -1000, -1000, -1000, -1000, + -1000, 663, 663, 27092, -1000, -1000, 663, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 27092, + -1000, 927, 27092, 27092, -1000, -1000, -1000, -1000, -1000, 25, + -31, 165, -1000, -1000, -1000, -1000, 1518, -1000, 549, 515, + 643, 556, -1000, -1000, 768, -1000, -1000, 2081, -1000, -1000, + -1000, -1000, 743, 13649, 13649, 13649, 592, 2081, 2357, 1254, + 2271, 482, 605, 605, 504, 504, 504, 504, 504, 815, + 815, -1000, -1000, -1000, -1000, 992, -1000, -1000, -1000, 992, + 10507, 10507, 1146, 1190, 444, -1000, 1207, -1000, -1000, 1526, + 1024, 1024, 710, 867, 624, 1579, 1024, 595, 1577, 1024, + 1024, 10507, -1000, -1000, 669, -1000, 12308, 992, -1000, 873, + 1144, 1139, 1024, 992, 992, 1024, 1024, 27092, -1000, -274, + -1000, -66, 443, 1190, -1000, 19486, -1000, -1000, 992, 1084, + 1450, -1000, -1000, 1396, -1000, 1338, 12308, 12308, 12308, -1000, + -1000, -1000, 1450, 1549, -1000, 1359, 1358, 1575, 10507, 19039, + 1424, -1000, -1000, -1000, 437, 1575, 1096, 1190, -1000, 27092, + 19039, 19039, 19039, 19039, 19039, -1000, 1317, 1309, -1000, 1364, + 1310, 1316, 27092, -1000, 1038, 956, 17251, 219, 1086, 19039, + 27092, -1000, -1000, 19039, 27092, 5953, -1000, 1124, -56, -57, + -1000, -1000, -1000, -1000, 549, -1000, 847, -1000, 2160, -1000, + 278, -1000, -1000, -1000, -1000, 401, 27, -1000, -1000, 29, + 29, -1000, -1000, 450, 678, 450, 450, 450, 926, 926, + -1000, -1000, -1000, -1000, -1000, 759, -1000, -1000, -1000, 758, + -1000, -1000, 856, 1297, 140, -1000, -1000, 545, 907, 1402, + -1000, -1000, 1059, 367, -1000, 27092, -1000, 1292, 1276, 1273, + -1000, -1000, -1000, -1000, -1000, 258, 27092, 1035, -1000, 110, + 27092, 1045, 27092, -1000, 1033, 27092, -1000, 914, -1000, -1000, + 7336, -1000, 27092, 1190, -1000, -1000, -1000, -1000, 404, 1474, + 1473, 113, 110, 450, 914, -1000, -1000, -1000, -1000, -1000, + -332, 1026, 27092, 124, -1000, 1235, 860, -1000, 1263, -1000, + -1000, -1000, -1000, 115, 167, 151, 360, -1000, 403, 1297, + 27092, -1000, -1000, -1000, -1000, -1000, -1000, 626, -1000, 626, + -1000, -1000, -1000, -1000, 1469, -39, -306, -1000, -301, -1000, + -1000, -1000, -1000, 592, 2081, 2212, -1000, 13649, 13649, -1000, + -1000, 1024, 1024, 10507, 7336, 1568, 1450, -1000, -1000, 381, + 693, 381, 13649, 13649, -1000, 13649, 13649, -1000, -110, 1132, + 596, -1000, 12308, 811, -1000, -1000, 13649, 13649, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 375, 374, 372, + 27092, -1000, -1000, -1000, 836, 906, 1336, 549, 549, -1000, + -1000, 27092, -1000, -1000, -1000, -1000, 1572, 12308, -1000, 1123, + -1000, 5492, 1526, 1272, 27092, 1190, 1602, 15450, 27092, 1143, + -1000, 564, 1355, 1262, 1271, 1180, -1000, -1000, -1000, -1000, + 1307, -1000, 1249, -1000, -1000, -1000, -1000, -1000, 956, 1575, + 19039, 1075, -1000, 1075, -1000, 434, -1000, -1000, -1000, -48, + -54, -1000, -1000, -1000, 955, -1000, -1000, -1000, 689, 13649, + 1592, -1000, 898, 1485, -1000, 1482, -1000, -1000, 450, 450, + -1000, -1000, -1000, -1000, -1000, -1000, 1022, -1000, 1018, 1121, + 1016, 50, -1000, 1187, 1466, 545, 545, -1000, 750, -1000, + 914, -1000, 27092, -1000, 27092, 27092, 27092, 1555, 1104, -1000, + 27092, -1000, -1000, 27092, -1000, -1000, 1357, 140, 1014, -1000, + -1000, -1000, 213, 27092, -1000, 753, 110, -1000, -1000, -1000, + -1000, -1000, -1000, 1208, -1000, -1000, -1000, 1041, -1000, -122, + 914, 27092, 27092, 27092, -1000, 27092, -1000, -1000, -1000, 663, + 663, -1000, 1437, -1000, 914, -1000, 13649, 2081, 2081, -1000, + -1000, 992, -1000, 1526, -1000, 992, 1226, 1226, -1000, 1226, + 1227, -1000, 1226, 76, 1226, 72, 992, 992, 2543, 2292, + 2253, 1319, 1190, -94, -1000, 549, 12308, 1724, 1224, 1190, + 1190, 1190, 1002, 891, 29, -1000, -1000, -1000, 1570, 1554, + 549, -1000, -1000, -1000, 1498, 1081, 1082, -1000, -1000, 10060, + 1011, 1356, 430, 1002, 1568, 27092, 12308, -1000, -1000, 12308, + 1223, -1000, 12308, -1000, -1000, -1000, 1568, 1568, 1075, -1000, + -1000, 429, -1000, -1000, -1000, -1000, -1000, 2081, -52, -1000, + -1000, -1000, -1000, -1000, 29, 889, 29, 734, -1000, 713, + -1000, -1000, -211, -1000, -1000, 1131, 1275, -1000, -1000, 1208, + -1000, -1000, -1000, 27092, 27092, -1000, -1000, 196, -1000, 233, + 988, -1000, -167, -1000, -1000, 1512, 27092, -1000, -1000, 7336, + -1000, -1000, 1197, 1264, -1000, -1000, -1000, -1000, -1000, -1000, + 2081, -1000, 1450, -1000, -1000, 217, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 13649, 13649, 13649, 13649, 13649, 1526, + 884, 549, 13649, 13649, 18592, 27092, 27092, 16791, 29, -4, + -1000, 12308, 12308, 1480, -1000, 1190, -1000, 1138, 27092, 1190, + 27092, -1000, 1526, -1000, 549, 549, 27092, 549, 1526, -1000, + -1000, 450, -1000, 450, 1039, 1028, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 1511, 1104, -1000, 169, 27092, -1000, + 213, -1000, -176, -177, 1182, 984, 1100, -1000, 532, 27092, + 27092, -1000, -1000, -1000, 873, 873, 873, 873, 414, 992, + -1000, 873, 873, 980, -1000, 980, 980, 443, -269, -1000, + 1399, 1397, 549, 1084, 1591, -1000, 1190, 1602, 416, 1082, + -1000, -1000, 977, -1000, -1000, -1000, -1000, -1000, 1182, 1190, + 1188, -1000, -1000, -1000, 183, -1000, 7336, 5031, 974, -1000, + -1000, -1000, -1000, -1000, 992, 166, -143, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -4, 260, -1000, 1377, 1370, 1553, + 27092, 1082, 27092, -1000, 183, 12755, 27092, -1000, -49, -1000, + -1000, -1000, -1000, -1000, 1263, -1000, 1324, -115, -157, 1381, + 1385, 1385, 1397, 1551, 1393, 1391, -1000, 878, 964, -1000, + -1000, 873, 992, 971, 306, -1000, -1000, -122, -1000, 1161, + -1000, 1379, 755, -1000, -1000, -1000, -1000, 874, -1000, 1534, + 1533, -1000, -1000, -1000, 1270, 127, -1000, -124, -1000, 709, + -1000, -1000, -1000, 871, 869, 1269, -1000, 1586, -1000, -166, + -1000, -1000, -1000, -1000, -1000, 1588, 438, 438, -159, -1000, + -1000, -1000, 279, 797, -1000, -1000, -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1867, 1866, 31, 84, 79, 1864, 1861, 1860, 1858, - 127, 125, 121, 1855, 1853, 1852, 1850, 1849, 1847, 1846, - 1843, 1841, 1839, 1838, 1835, 60, 122, 36, 38, 124, - 1833, 1831, 62, 1826, 1824, 1823, 118, 115, 433, 1822, - 114, 1820, 1819, 1816, 1815, 1814, 1813, 1812, 1811, 1809, - 1808, 1807, 1806, 1805, 150, 1804, 1803, 4, 1801, 86, - 1800, 1799, 1798, 1795, 1794, 85, 1790, 1788, 1786, 110, - 1785, 1783, 46, 347, 49, 70, 1780, 1779, 72, 784, - 1777, 101, 112, 1776, 598, 1775, 41, 99, 92, 1773, - 43, 1772, 1770, 87, 1769, 1768, 1767, 73, 1765, 1763, - 2766, 1761, 68, 76, 15, 20, 1758, 1757, 1756, 1755, - 33, 705, 1753, 1751, 11, 1750, 1749, 126, 1746, 83, - 35, 1745, 13, 10, 18, 1744, 82, 1738, 42, 52, - 23, 1737, 78, 1736, 1735, 1734, 1733, 25, 1729, 74, - 97, 37, 1727, 14, 7, 1726, 1724, 1722, 1718, 1717, - 1716, 12, 1715, 1713, 1712, 26, 1711, 9, 22, 71, - 81, 21, 6, 1710, 143, 1709, 19, 109, 67, 105, - 1707, 1706, 1702, 944, 1701, 64, 128, 1700, 1699, 45, - 1698, 412, 746, 1691, 1690, 1689, 66, 1254, 2666, 27, - 113, 1688, 1687, 2023, 57, 75, 17, 1667, 1666, 1664, - 120, 304, 56, 791, 44, 1662, 1661, 1660, 1659, 1658, - 1656, 1655, 47, 1654, 1653, 1652, 34, 16, 116, 29, - 1651, 1650, 1648, 1647, 1645, 63, 24, 1643, 104, 103, - 65, 106, 1642, 111, 107, 55, 1641, 80, 1639, 1638, - 1637, 1636, 39, 1634, 1633, 1632, 1630, 102, 88, 50, - 40, 1629, 30, 96, 91, 89, 1627, 28, 123, 8, - 1626, 3, 0, 1624, 5, 132, 1443, 133, 1623, 1622, - 1, 1621, 2, 1620, 1619, 77, 1617, 1616, 1614, 1613, - 3234, 546, 108, 1593, 119, + 0, 1879, 1878, 13, 102, 79, 1877, 1874, 1873, 1869, + 128, 127, 126, 1868, 1866, 1865, 1851, 1850, 1849, 1847, + 1843, 1841, 1839, 1837, 1830, 56, 115, 39, 37, 121, + 1827, 1826, 47, 1825, 1823, 1820, 116, 113, 472, 1819, + 117, 1818, 1817, 1816, 1815, 1813, 1811, 1810, 1809, 1808, + 1807, 1805, 1804, 1803, 191, 1802, 1800, 6, 1798, 50, + 1794, 1792, 1777, 1776, 1775, 86, 1774, 1773, 1772, 106, + 1770, 1768, 49, 287, 41, 73, 1764, 1763, 72, 790, + 1762, 91, 125, 1761, 1757, 1760, 58, 68, 85, 1759, + 40, 1758, 1756, 92, 1755, 1754, 1753, 67, 1752, 1751, + 3127, 1750, 64, 77, 17, 27, 1749, 1748, 1745, 1744, + 36, 1262, 1743, 1742, 20, 1740, 1739, 138, 1738, 84, + 23, 1736, 15, 12, 18, 1735, 81, 1734, 8, 62, + 31, 1732, 82, 1731, 1730, 1729, 1727, 24, 1726, 75, + 96, 33, 1725, 1722, 7, 10, 1720, 1717, 1716, 1715, + 1714, 1713, 4, 1711, 1710, 1709, 26, 1708, 11, 25, + 65, 46, 29, 9, 1707, 143, 1705, 28, 123, 66, + 101, 1701, 1700, 1697, 988, 45, 137, 1696, 1688, 35, + 1686, 111, 119, 1685, 1439, 1682, 1681, 70, 1086, 2601, + 78, 110, 1677, 1676, 1961, 52, 76, 21, 1674, 1672, + 1671, 124, 131, 60, 853, 44, 1670, 1668, 1666, 1665, + 1664, 1663, 1662, 87, 34, 19, 109, 30, 1660, 1656, + 1653, 63, 43, 1650, 105, 104, 71, 120, 1649, 114, + 122, 74, 1648, 42, 1647, 1646, 1640, 1639, 83, 1637, + 1635, 1634, 1632, 100, 89, 55, 32, 1631, 38, 107, + 99, 97, 1630, 22, 118, 16, 1627, 3, 0, 1626, + 5, 112, 1463, 103, 1623, 1618, 1, 1617, 2, 1616, + 1615, 80, 1614, 1612, 1611, 1610, 2772, 218, 108, 1609, + 130, } var yyR1 = [...]int{ - 0, 278, 279, 279, 1, 1, 1, 1, 1, 1, + 0, 274, 275, 275, 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, 262, 262, 262, 265, 265, 21, + 1, 1, 1, 1, 258, 258, 258, 261, 261, 21, 50, 3, 3, 3, 3, 2, 2, 8, 9, 4, 5, 5, 10, 10, 61, 61, 11, 12, 12, 12, - 12, 282, 282, 95, 95, 93, 93, 94, 94, 159, - 159, 13, 14, 14, 169, 169, 168, 168, 168, 170, - 170, 170, 170, 203, 203, 15, 15, 15, 15, 15, - 70, 70, 264, 264, 263, 261, 261, 260, 260, 259, - 23, 24, 33, 33, 33, 33, 34, 35, 266, 266, - 238, 39, 39, 38, 38, 38, 38, 40, 40, 37, - 37, 36, 36, 240, 240, 227, 227, 239, 239, 239, - 239, 239, 239, 239, 226, 205, 205, 205, 205, 208, - 208, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 207, 207, 207, 207, 207, 209, 209, 209, 209, 209, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 211, 211, 211, 211, 211, - 211, 211, 211, 225, 225, 212, 212, 218, 218, 219, - 219, 219, 221, 221, 222, 222, 183, 183, 183, 214, - 214, 215, 215, 220, 220, 216, 216, 216, 217, 217, - 217, 224, 224, 224, 224, 224, 213, 213, 228, 252, - 252, 251, 251, 249, 249, 249, 249, 237, 237, 246, - 246, 246, 246, 246, 236, 236, 232, 232, 232, 233, - 233, 234, 234, 231, 231, 235, 235, 248, 248, 247, - 229, 229, 230, 230, 254, 254, 254, 254, 255, 271, - 272, 270, 270, 270, 270, 270, 59, 59, 59, 184, - 184, 184, 244, 244, 243, 243, 243, 245, 245, 242, - 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, 178, 178, - 178, 269, 269, 269, 269, 269, 269, 268, 268, 268, - 241, 241, 241, 267, 267, 129, 129, 130, 130, 30, - 30, 30, 30, 30, 30, 29, 29, 29, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, + 12, 278, 278, 95, 95, 93, 93, 94, 94, 160, + 160, 13, 14, 14, 170, 170, 169, 169, 169, 171, + 171, 171, 171, 204, 204, 15, 15, 15, 15, 15, + 70, 70, 260, 260, 259, 257, 257, 256, 256, 255, + 23, 24, 33, 33, 33, 33, 34, 35, 262, 262, + 234, 39, 39, 38, 38, 38, 38, 40, 40, 37, + 37, 36, 36, 236, 236, 223, 223, 235, 235, 235, + 235, 235, 235, 235, 222, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 206, 206, 206, 206, + 209, 209, 207, 207, 207, 207, 207, 207, 207, 207, + 207, 208, 208, 208, 208, 208, 210, 210, 210, 210, + 210, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 212, 212, 212, 212, + 212, 212, 212, 212, 221, 221, 213, 213, 216, 216, + 217, 217, 217, 218, 218, 219, 219, 214, 214, 214, + 215, 215, 215, 224, 248, 248, 247, 247, 245, 245, + 245, 245, 233, 233, 242, 242, 242, 242, 242, 232, + 232, 228, 228, 228, 229, 229, 230, 230, 227, 227, + 231, 231, 244, 244, 243, 225, 225, 226, 226, 250, + 250, 250, 250, 251, 267, 268, 266, 266, 266, 266, + 266, 59, 59, 59, 183, 183, 183, 240, 240, 239, + 239, 239, 241, 241, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 178, 178, 178, 265, 265, 265, 265, + 265, 265, 264, 264, 264, 237, 237, 237, 263, 263, + 129, 129, 130, 130, 30, 30, 30, 30, 30, 30, + 29, 29, 29, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 31, 31, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 258, 258, 258, 258, - 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, - 258, 258, 258, 258, 258, 258, 258, 258, 223, 223, - 223, 256, 256, 257, 257, 17, 22, 22, 18, 18, - 18, 18, 19, 19, 41, 42, 42, 42, 42, 42, + 25, 25, 25, 25, 25, 31, 31, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 254, 254, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 220, 220, 220, 252, 252, 253, 253, + 17, 22, 22, 18, 18, 18, 18, 19, 19, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 273, 273, - 177, 177, 174, 174, 176, 176, 175, 175, 175, 179, - 179, 179, 180, 180, 277, 277, 277, 43, 43, 45, - 45, 46, 47, 47, 198, 198, 199, 199, 48, 49, - 60, 60, 60, 60, 60, 60, 62, 62, 62, 7, - 7, 7, 7, 56, 56, 56, 6, 6, 44, 44, - 51, 274, 274, 275, 276, 276, 276, 276, 52, 20, - 20, 20, 20, 20, 20, 77, 77, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 71, - 71, 71, 66, 66, 283, 54, 55, 55, 69, 69, - 69, 63, 63, 63, 68, 68, 68, 74, 74, 76, - 76, 76, 76, 76, 78, 78, 78, 78, 78, 78, - 73, 73, 75, 75, 75, 75, 191, 191, 191, 190, - 190, 85, 85, 86, 86, 87, 87, 88, 88, 88, - 127, 103, 103, 158, 158, 157, 157, 160, 160, 89, - 89, 89, 89, 90, 90, 91, 91, 92, 92, 197, - 197, 196, 196, 196, 195, 195, 96, 96, 96, 98, - 97, 97, 97, 97, 99, 99, 101, 101, 100, 100, - 102, 104, 104, 104, 104, 104, 105, 105, 84, 84, - 84, 84, 84, 84, 84, 84, 172, 172, 107, 107, - 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, - 118, 118, 118, 118, 118, 118, 108, 108, 108, 108, - 108, 108, 108, 72, 72, 119, 119, 119, 126, 120, - 120, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 269, 269, 177, 177, 185, 185, 176, 176, + 175, 175, 175, 179, 179, 179, 180, 180, 273, 273, + 273, 43, 43, 45, 45, 46, 47, 47, 199, 199, + 200, 200, 48, 49, 60, 60, 60, 60, 60, 60, + 62, 62, 62, 7, 7, 7, 7, 56, 56, 56, + 6, 6, 44, 44, 51, 270, 270, 271, 272, 272, + 272, 272, 52, 20, 20, 20, 20, 20, 20, 77, + 77, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 71, 71, 71, 66, 66, 279, 54, + 55, 55, 69, 69, 69, 63, 63, 63, 68, 68, + 68, 74, 74, 76, 76, 76, 76, 76, 78, 78, + 78, 78, 78, 78, 73, 73, 75, 75, 75, 75, + 192, 192, 192, 191, 191, 85, 85, 86, 86, 87, + 87, 88, 88, 88, 127, 103, 103, 159, 159, 158, + 158, 161, 161, 89, 89, 89, 89, 90, 90, 91, + 91, 92, 92, 198, 198, 197, 197, 197, 196, 196, + 96, 96, 96, 98, 97, 97, 97, 97, 99, 99, + 101, 101, 100, 100, 102, 104, 104, 104, 104, 104, + 105, 105, 84, 84, 84, 84, 84, 84, 84, 84, + 173, 173, 107, 107, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 118, 118, 118, 118, 118, 118, + 108, 108, 108, 108, 108, 108, 108, 72, 72, 119, + 119, 119, 126, 120, 120, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 115, 115, 115, 115, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 284, 284, - 117, 116, 116, 116, 116, 116, 116, 116, 67, 67, - 67, 67, 67, 202, 202, 202, 204, 204, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 204, 204, 133, - 133, 64, 64, 131, 131, 132, 134, 134, 128, 128, - 128, 110, 110, 110, 110, 110, 110, 110, 110, 112, - 112, 112, 135, 135, 136, 136, 137, 137, 138, 138, - 139, 140, 140, 140, 141, 141, 141, 141, 32, 32, - 32, 32, 32, 27, 27, 27, 27, 28, 28, 28, - 79, 79, 79, 79, 81, 81, 80, 80, 57, 57, - 58, 58, 58, 82, 82, 83, 83, 83, 83, 155, - 155, 155, 142, 142, 142, 142, 147, 147, 147, 143, - 143, 145, 145, 145, 146, 146, 146, 144, 150, 150, - 152, 152, 151, 151, 149, 149, 154, 154, 153, 153, - 148, 148, 109, 109, 109, 109, 109, 156, 156, 156, - 156, 161, 161, 122, 122, 124, 124, 123, 125, 162, - 162, 166, 163, 163, 167, 167, 167, 167, 167, 164, - 164, 165, 165, 192, 192, 192, 171, 171, 181, 181, - 182, 182, 173, 173, 185, 185, 185, 53, 121, 121, - 253, 253, 250, 188, 188, 189, 189, 193, 193, 194, - 194, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 115, + 115, 115, 115, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 280, 280, 117, 116, 116, 116, 116, 116, + 116, 116, 67, 67, 67, 67, 67, 203, 203, 203, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 133, 133, 64, 64, 131, 131, 132, + 134, 134, 128, 128, 128, 110, 110, 110, 110, 110, + 110, 110, 110, 112, 112, 112, 135, 135, 136, 136, + 137, 137, 138, 138, 139, 140, 140, 140, 141, 141, + 141, 141, 32, 32, 32, 32, 32, 27, 27, 27, + 27, 28, 28, 28, 79, 79, 79, 79, 81, 81, + 80, 80, 57, 57, 58, 58, 58, 82, 82, 83, + 83, 83, 83, 156, 156, 156, 142, 142, 142, 142, + 148, 148, 148, 144, 144, 146, 146, 146, 147, 147, + 147, 145, 151, 151, 153, 153, 152, 152, 150, 150, + 155, 155, 154, 154, 149, 149, 109, 109, 109, 109, + 109, 157, 157, 157, 157, 162, 162, 122, 122, 124, + 124, 123, 125, 163, 163, 167, 164, 164, 168, 168, + 168, 168, 168, 165, 165, 166, 166, 193, 193, 193, + 172, 172, 184, 184, 181, 181, 182, 182, 174, 174, + 186, 186, 186, 53, 121, 121, 249, 249, 246, 189, + 189, 190, 190, 194, 194, 195, 195, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, @@ -4340,13 +4299,33 @@ var yyR1 = [...]int{ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 280, 281, 200, 201, - 201, 201, + 187, 187, 187, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 276, 277, 201, 202, 202, 202, } var yyR2 = [...]int{ @@ -4360,91 +4339,90 @@ var yyR2 = [...]int{ 4, 3, 5, 4, 1, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 6, 11, 2, 0, 2, 0, 2, 1, 0, 2, 1, 3, 3, - 4, 3, 6, 7, 7, 7, 4, 2, 1, 1, + 5, 3, 6, 7, 7, 7, 4, 2, 1, 1, 4, 0, 1, 1, 1, 2, 2, 0, 1, 4, 4, 4, 4, 2, 4, 1, 3, 1, 1, 3, - 4, 3, 3, 3, 8, 3, 1, 1, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, - 4, 4, 2, 2, 3, 3, 3, 3, 1, 1, - 1, 1, 1, 6, 6, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 0, 3, 0, 5, 0, - 3, 5, 0, 1, 0, 1, 0, 1, 2, 0, - 2, 0, 3, 0, 1, 0, 2, 2, 0, 2, - 2, 0, 2, 1, 2, 1, 0, 2, 5, 0, - 1, 1, 2, 1, 3, 2, 3, 0, 1, 3, - 3, 3, 4, 2, 0, 2, 1, 1, 1, 1, - 1, 0, 1, 1, 1, 0, 1, 1, 3, 3, - 3, 1, 3, 1, 10, 11, 11, 12, 5, 3, - 3, 1, 1, 2, 2, 2, 0, 1, 1, 0, - 1, 2, 0, 1, 1, 3, 2, 1, 2, 3, - 3, 4, 4, 3, 3, 3, 3, 4, 4, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 4, 5, 0, 2, + 4, 3, 3, 3, 3, 0, 2, 3, 3, 4, + 2, 3, 3, 2, 3, 2, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 1, 0, 2, 0, 2, 0, - 1, 5, 1, 3, 7, 1, 3, 3, 1, 2, - 2, 2, 5, 5, 5, 6, 6, 5, 5, 2, - 2, 2, 2, 3, 3, 3, 4, 1, 3, 5, - 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, - 2, 2, 4, 4, 2, 10, 3, 6, 7, 5, - 5, 5, 12, 7, 5, 9, 5, 3, 7, 4, - 4, 4, 4, 3, 3, 3, 7, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 2, 0, 2, - 2, 1, 3, 8, 8, 3, 3, 5, 5, 6, - 5, 4, 3, 2, 3, 3, 3, 3, 3, 3, - 3, 4, 5, 2, 4, 4, 4, 4, 4, 5, - 4, 5, 4, 7, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 2, 4, 7, 2, 4, 5, 4, - 3, 3, 5, 2, 3, 3, 3, 3, 1, 1, - 0, 1, 0, 1, 1, 1, 0, 2, 2, 0, - 2, 2, 0, 2, 0, 1, 1, 2, 1, 1, - 2, 1, 1, 5, 0, 1, 0, 1, 2, 3, - 0, 3, 3, 3, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 1, 1, 3, 3, 2, 2, - 3, 1, 3, 2, 1, 2, 1, 2, 2, 3, - 3, 6, 4, 7, 6, 1, 3, 2, 2, 2, - 2, 1, 1, 1, 3, 2, 1, 1, 1, 0, - 1, 1, 0, 3, 0, 2, 0, 2, 1, 2, - 2, 0, 1, 1, 0, 1, 1, 0, 1, 0, - 1, 2, 3, 4, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 2, 3, 5, 0, 1, 2, 1, - 1, 0, 2, 1, 3, 1, 1, 1, 3, 3, - 3, 3, 7, 0, 3, 1, 3, 1, 3, 4, - 4, 4, 3, 2, 4, 0, 1, 0, 2, 0, - 1, 0, 1, 2, 1, 1, 1, 2, 2, 1, - 2, 3, 2, 3, 2, 2, 2, 1, 1, 3, - 3, 0, 5, 4, 5, 5, 0, 2, 1, 3, - 3, 3, 2, 3, 1, 2, 0, 3, 1, 1, - 3, 3, 4, 4, 5, 3, 4, 5, 6, 2, - 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 0, 2, 1, 1, 1, 3, 1, - 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, + 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, + 2, 4, 4, 2, 2, 3, 3, 3, 3, 1, + 1, 1, 1, 1, 6, 6, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 0, 3, 0, 5, + 0, 3, 5, 0, 1, 0, 1, 0, 2, 2, + 0, 2, 2, 5, 0, 1, 1, 2, 1, 3, + 2, 3, 0, 1, 3, 3, 3, 4, 2, 0, + 2, 1, 1, 1, 1, 1, 0, 1, 1, 1, + 0, 1, 1, 3, 3, 3, 1, 3, 1, 10, + 11, 11, 12, 5, 3, 3, 1, 1, 2, 2, + 2, 0, 1, 1, 0, 1, 2, 0, 1, 1, + 3, 2, 1, 2, 3, 3, 4, 4, 3, 3, + 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 4, 5, 0, 2, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, + 0, 2, 0, 2, 0, 1, 5, 1, 3, 7, + 1, 3, 3, 1, 2, 2, 2, 5, 5, 5, + 6, 6, 5, 5, 2, 2, 2, 2, 3, 3, + 3, 4, 1, 3, 5, 1, 3, 3, 3, 3, + 3, 3, 3, 3, 2, 2, 2, 4, 4, 2, + 10, 3, 6, 7, 5, 5, 5, 12, 7, 5, + 9, 5, 3, 7, 4, 4, 4, 4, 3, 3, + 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 2, 0, 2, 2, 1, 3, 8, 8, + 3, 3, 5, 6, 6, 5, 4, 3, 2, 3, + 3, 3, 3, 3, 3, 3, 4, 5, 2, 4, + 4, 4, 4, 4, 5, 5, 4, 7, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 2, 4, 7, + 2, 4, 5, 4, 3, 3, 5, 2, 3, 3, + 3, 3, 1, 1, 0, 1, 0, 1, 1, 1, + 0, 2, 2, 0, 2, 2, 0, 2, 0, 1, + 1, 2, 1, 1, 2, 1, 1, 5, 0, 1, + 0, 1, 2, 3, 0, 3, 3, 3, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, + 3, 3, 2, 2, 3, 1, 3, 2, 1, 2, + 1, 2, 2, 3, 3, 6, 4, 7, 6, 1, + 3, 2, 2, 2, 2, 1, 1, 1, 3, 2, + 1, 1, 1, 0, 1, 1, 0, 3, 0, 2, + 0, 2, 1, 2, 2, 0, 1, 1, 0, 1, + 1, 0, 1, 0, 1, 2, 3, 4, 1, 1, + 1, 1, 1, 1, 1, 3, 1, 2, 3, 5, + 0, 1, 2, 1, 1, 0, 2, 1, 3, 1, + 1, 1, 3, 3, 3, 3, 7, 0, 3, 1, + 3, 1, 3, 4, 4, 4, 3, 2, 4, 0, + 1, 0, 2, 0, 1, 0, 1, 2, 1, 1, + 1, 2, 2, 1, 2, 3, 2, 3, 2, 2, + 2, 1, 1, 3, 3, 0, 5, 4, 5, 5, + 0, 2, 1, 3, 3, 3, 2, 3, 1, 2, + 0, 3, 1, 1, 3, 3, 4, 4, 5, 3, + 4, 5, 6, 2, 1, 2, 1, 2, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, + 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 1, 1, 1, 1, 4, 5, 5, 6, 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, 4, 0, 3, - 4, 7, 3, 1, 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, - 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, - 0, 3, 3, 3, 0, 3, 1, 1, 0, 4, - 0, 1, 1, 0, 3, 1, 3, 2, 1, 0, - 2, 4, 0, 9, 3, 5, 0, 3, 3, 0, - 1, 0, 2, 2, 0, 2, 2, 2, 0, 3, - 0, 3, 0, 3, 0, 4, 0, 3, 0, 4, - 0, 1, 2, 1, 5, 4, 4, 1, 3, 3, - 5, 0, 5, 1, 3, 1, 2, 3, 1, 1, - 3, 3, 1, 3, 3, 3, 3, 3, 2, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 0, 2, - 0, 3, 0, 1, 0, 1, 1, 5, 0, 1, - 0, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 1, 1, 1, 1, 4, + 5, 5, 6, 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, 4, 0, 3, 4, 7, 3, 1, 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, 2, 1, 1, 3, 3, 3, + 3, 3, 3, 3, 0, 3, 3, 3, 0, 3, + 1, 1, 0, 4, 0, 1, 1, 0, 3, 1, + 3, 2, 1, 0, 2, 4, 0, 9, 3, 5, + 0, 3, 3, 0, 1, 0, 2, 2, 0, 2, + 2, 2, 0, 3, 0, 3, 0, 3, 0, 4, + 0, 3, 0, 4, 0, 1, 2, 1, 5, 4, + 4, 1, 3, 3, 5, 0, 5, 1, 3, 1, + 2, 3, 1, 1, 3, 3, 1, 3, 3, 3, + 3, 3, 2, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 0, 1, 0, 2, 0, 3, 0, 1, + 0, 1, 1, 5, 0, 1, 0, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -4484,460 +4462,458 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, - 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 1, 1, } var yyChk = [...]int{ - -1000, -278, -1, -3, -8, -9, -10, -11, -12, -13, + -1000, -274, -1, -3, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -41, -42, -43, -45, -46, -47, -48, -49, -6, -44, -20, -21, -50, -51, - -52, -53, -4, -280, 6, 7, 8, -61, 10, 11, + -52, -53, -4, -276, 6, 7, 8, -61, 10, 11, 31, -23, -33, 153, -34, -24, 154, -35, 156, 155, - 191, 157, 184, 71, 225, 226, 228, 229, 230, 231, + 191, 157, 184, 71, 226, 227, 229, 230, 231, 232, -62, 189, 190, 159, 35, 42, 32, 33, 36, 81, - 9, 325, 186, 185, 26, -279, 465, -69, 5, -137, - 16, -3, -54, -283, -54, -54, -54, -54, -54, -54, - -238, -240, 81, 126, 81, -70, 163, 164, 173, 172, - 169, -266, 107, 316, 162, -39, -38, -37, -36, -40, - 30, -30, -31, -258, -29, -26, 158, 155, 199, 102, - 103, 191, 192, 193, 157, 175, 190, 194, 189, 208, - -25, 77, 32, 338, 341, -245, 154, 160, 161, 326, - 105, 104, 72, 156, -242, 275, 442, -40, 444, 95, - 97, 443, 41, 164, 445, 446, 447, 448, 174, 449, - 450, 451, 452, 458, 459, 460, 461, 106, 5, 163, - -266, -79, 285, 77, -265, -262, 84, 85, 86, 163, - 163, 164, 165, -266, 163, -100, -193, -262, -187, 335, - 177, 369, 370, 223, 77, 275, 442, 225, 239, 233, - 260, 252, 336, 371, 178, 212, 439, 250, 253, 303, - 444, 372, 192, 297, 280, 288, 95, 228, 312, 457, - 373, 455, 97, 443, 76, 48, 41, 187, 248, 244, - 445, 213, 374, 346, 206, 105, 102, 464, 242, 47, - 28, 454, 104, 46, 446, 375, 447, 290, 265, 433, - 45, 193, 376, 80, 340, 441, 292, 243, 289, 222, - 453, 159, 377, 425, 299, 434, 378, 266, 270, 379, - 304, 49, 380, 381, 435, 103, 382, 75, 448, 237, - 238, 383, 220, 176, 306, 264, 174, 34, 293, 337, - 224, 55, 200, 307, 43, 268, 42, 429, 384, 432, - 263, 259, 50, 385, 386, 387, 388, 449, 262, 236, - 258, 463, 218, 450, 59, 161, 272, 271, 273, 207, - 302, 255, 389, 390, 391, 181, 78, 392, 245, 19, - 393, 394, 300, 214, 395, 53, 396, 397, 310, 190, - 398, 51, 451, 38, 195, 452, 399, 400, 401, 402, - 403, 298, 404, 291, 267, 269, 202, 287, 339, 405, - 241, 194, 456, 406, 182, 440, 196, 199, 189, 311, - 183, 407, 408, 409, 410, 411, 412, 413, 229, 458, - 40, 414, 415, 416, 417, 221, 217, 305, 314, 58, - 79, 277, 418, 438, 235, 215, 419, 226, 52, 459, - 460, 461, 209, 462, 283, 106, 219, 44, 256, 201, - 420, 421, 246, 247, 261, 234, 257, 227, 426, 203, - 301, 191, 422, 313, 216, 278, 343, 208, 437, 342, - 254, 251, 210, 423, 165, 204, 205, 424, 427, 294, - 284, 295, 296, 285, 211, 341, 249, 279, 163, -164, - 280, 281, 282, 293, 294, 299, 300, 298, 202, -277, - 304, 163, 283, 286, 301, -174, 144, 153, 290, -177, - 291, 284, 285, 211, -273, -262, 447, 462, 303, 253, - 305, 429, 292, 296, 295, -193, 227, -198, 232, -188, - -262, -187, 230, -100, -60, 425, 157, -200, -200, -71, - 429, 431, -120, -84, -106, 110, -111, 30, 24, -110, - -107, -128, -125, -126, 144, 145, 147, 146, 148, 133, - 134, 141, 111, 149, -115, -113, -114, -116, 88, 87, - 96, 89, 90, 91, 92, 98, 99, 100, -188, -193, - -123, -280, 65, 66, 326, 327, 328, 329, 334, 330, - 113, 54, 315, 324, 323, 322, 319, 320, 317, 318, - 332, 333, 168, 316, 162, 139, 325, -262, -187, 41, - 283, 283, -100, -5, -4, -280, 6, 21, 22, -141, - 18, 17, -281, 83, -63, -76, 60, 61, -78, 22, - 37, 64, 62, -55, -75, 135, -84, -193, -75, -173, - 167, -173, -173, -163, -203, 227, -167, 305, 304, -189, - -165, -188, -186, -164, 302, 158, 344, 109, 23, 25, - 112, 144, 17, 113, 36, 160, 175, 143, 171, 326, - 153, 69, 345, 317, 318, 315, 321, 328, 329, 316, - 281, 30, 11, 347, 26, 185, 22, 37, 137, 155, - 116, 117, 188, 24, 186, 100, 350, 20, 72, 180, - 12, 173, 14, 351, 352, 15, 168, 167, 128, 164, - 67, 9, 149, 27, 125, 63, 353, 29, 354, 355, - 356, 357, 65, 126, 18, 319, 320, 32, 430, 358, - 334, 197, 139, 70, 56, 431, 110, 359, 360, 98, - 361, 101, 73, 436, 107, 16, 68, 39, 362, 198, - 363, 170, 364, 308, 365, 127, 156, 325, 66, 366, - 162, 282, 6, 331, 31, 184, 172, 64, 367, 163, - 115, 332, 333, 166, 99, 5, 169, 33, 10, 71, - 74, 322, 323, 324, 54, 338, 114, 13, 368, 309, - 108, 303, 253, -239, 126, -226, -230, -188, 179, -255, - 175, -100, -248, -247, -188, -79, -182, 168, -262, 164, - 164, 164, -182, 325, -36, -37, -164, 143, 196, 82, - 82, -230, -229, -228, -267, 198, 179, -254, -246, 171, - 180, -236, 172, 173, -231, 164, 29, -267, -231, 170, - 180, 198, 198, 106, 198, 106, 198, 198, 198, 198, - 198, 198, 198, 198, 198, 195, -237, 118, -237, 342, - 342, -242, -267, -267, -267, 166, 34, 34, -185, -231, - 166, 23, -237, -237, -164, 143, -237, -237, -237, -237, - 206, 206, -237, -237, -237, -237, -237, -237, -237, -237, - -237, -237, -237, -237, -237, -237, -237, -100, -82, 213, - 153, 155, 158, 73, 118, -38, 208, -22, -100, -181, - 168, -262, -181, -181, -100, 150, -100, -179, 126, 13, - -179, -179, -179, -179, -179, 209, 297, 283, 209, 297, - 209, 210, 209, 210, 209, -175, 12, 128, 283, -175, - -176, 287, 288, 289, -262, 432, 316, 299, -262, 202, - 163, 203, 165, -232, 164, 34, 176, 210, 283, 205, - -179, -201, -280, -189, -201, -201, 31, 166, -188, -56, - -188, 88, -7, -3, -11, -10, -12, 118, -77, 283, - -65, 144, 447, 433, 434, 435, 432, 298, 440, 438, - 436, 209, 437, 82, 109, 107, 108, 125, -84, -108, + 9, 326, 186, 185, 26, -275, 466, -69, 5, -137, + 16, -3, -54, -279, -54, -54, -54, -54, -54, -54, + -234, -236, 81, 126, 81, -70, -184, 164, 173, 172, + 169, -262, 107, 219, 317, 162, -39, -38, -37, -36, + -40, 30, -30, -31, -254, -29, -26, 158, 155, 199, + 102, 103, 191, 192, 193, 157, 175, 190, 194, 189, + 208, -25, 77, 32, 339, 342, -241, 154, 160, 161, + 327, 105, 104, 72, 156, -238, 276, 443, -40, 445, + 95, 97, 444, 41, 164, 446, 447, 448, 449, 174, + 450, 451, 452, 453, 459, 460, 461, 462, 106, 5, + 163, -262, -79, 286, 77, -261, -258, 84, 85, 86, + 163, -184, 164, 165, -262, 163, -100, -194, -258, -188, + 336, 177, 370, 371, 224, 77, 276, 443, 226, 240, + 234, 261, 253, 337, 372, 178, 212, 440, 251, 254, + 304, 445, 373, 192, 298, 281, 289, 95, 229, 313, + 458, 374, 456, 97, 444, 76, 48, 41, 187, 249, + 245, 446, 213, 375, 347, 206, 105, 102, 465, 243, + 47, 28, 455, 104, 46, 447, 376, 448, 291, 266, + 434, 45, 193, 377, 80, 341, 442, 293, 244, 290, + 223, 454, 159, 378, 426, 300, 435, 379, 267, 271, + 380, 305, 49, 381, 382, 436, 103, 383, 75, 449, + 238, 239, 384, 221, 176, 307, 265, 174, 34, 294, + 338, 225, 55, 200, 308, 43, 269, 42, 430, 385, + 433, 264, 260, 50, 386, 387, 388, 389, 450, 263, + 237, 259, 464, 218, 451, 59, 161, 273, 272, 274, + 207, 303, 256, 390, 391, 392, 181, 78, 393, 246, + 19, 394, 395, 301, 214, 396, 53, 397, 398, 311, + 190, 399, 51, 452, 38, 195, 453, 400, 401, 402, + 403, 404, 299, 405, 292, 268, 270, 202, 288, 340, + 406, 242, 194, 457, 407, 182, 441, 196, 199, 189, + 312, 183, 408, 409, 410, 411, 412, 413, 414, 230, + 459, 40, 415, 416, 417, 418, 222, 217, 306, 315, + 58, 79, 278, 419, 439, 236, 215, 420, 227, 52, + 460, 461, 462, 209, 463, 284, 106, 219, 220, 44, + 257, 201, 421, 422, 247, 248, 262, 235, 258, 228, + 427, 203, 302, 191, 423, 314, 216, 279, 344, 208, + 438, 343, 255, 252, 210, 424, 165, 204, 205, 425, + 428, 295, 285, 296, 297, 286, 211, 342, 250, 280, + 163, -165, 281, 282, 283, 294, 295, 300, 301, 299, + 202, -273, 305, 163, -185, 302, 144, 153, 291, -177, + 292, 285, 286, 211, -269, -258, 448, 463, 304, 254, + 306, 430, 287, 293, 297, 296, -194, 228, -199, 233, + -189, -258, -188, 231, -100, -60, 426, 157, -201, -201, + -71, 430, 432, -120, -84, -106, 110, -111, 30, 24, + -110, -107, -128, -125, -126, 144, 145, 147, 146, 148, + 133, 134, 141, 111, 149, -115, -113, -114, -116, 88, + 87, 96, 89, 90, 91, 92, 98, 99, 100, -189, + -194, -123, -276, 65, 66, 327, 328, 329, 330, 335, + 331, 113, 54, 316, 325, 324, 323, 320, 321, 318, + 319, 333, 334, 168, 317, 162, 139, 326, -258, -188, + 41, 284, 284, -100, -5, -4, -276, 6, 21, 22, + -141, 18, 17, -277, 83, -63, -76, 60, 61, -78, + 22, 37, 64, 62, -55, -75, 135, -84, -194, -75, + -174, 167, -174, -174, -164, -204, 228, -168, 306, 305, + -190, -166, -189, -187, -165, 303, 158, 345, 109, 23, + 25, 112, 144, 17, 113, 36, 160, 175, 143, 171, + 327, 153, 69, 346, 318, 319, 316, 322, 329, 330, + 317, 282, 30, 11, 348, 26, 185, 22, 37, 137, + 155, 116, 117, 188, 24, 186, 100, 351, 20, 72, + 180, 12, 173, 14, 352, 353, 15, 168, 167, 128, + 164, 67, 9, 149, 27, 125, 63, 354, 29, 355, + 356, 357, 358, 65, 126, 18, 320, 321, 32, 431, + 359, 335, 197, 139, 70, 56, 432, 110, 360, 361, + 98, 362, 101, 73, 437, 107, 16, 68, 39, 363, + 198, 364, 170, 365, 309, 366, 127, 156, 326, 66, + 367, 162, 283, 6, 332, 31, 184, 172, 64, 368, + 163, 115, 333, 334, 166, 99, 5, 169, 33, 10, + 71, 74, 323, 324, 325, 54, 339, 114, 13, 369, + 310, 108, 304, 254, -235, 126, -222, -226, -189, 179, + -251, 175, -100, -244, -243, -189, -79, 163, -258, 164, + 164, 164, -182, 168, 326, -36, -37, -165, 143, 196, + 82, 82, -226, -225, -224, -263, 198, 179, -250, -242, + 171, 180, -232, 172, 173, -227, 164, 29, -263, -227, + 170, 180, 198, 198, 106, 198, 106, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 195, -233, 118, -233, + 343, 343, -238, -263, -263, -263, 166, 34, 34, -186, + -227, 166, 23, -233, -233, -165, 143, -233, -233, -233, + -233, 206, 206, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -100, -82, + 213, 153, 155, 158, 73, 118, -38, 208, -22, -100, + 163, -258, -181, 168, -181, -100, 150, -100, -179, 126, + 13, -179, -179, -179, -179, -179, 209, 298, 284, 209, + 298, 209, 210, 209, 210, 209, 284, -176, 288, 289, + 290, -175, 12, 128, -258, 433, 317, 300, -258, 202, + 163, 203, 165, -228, 164, 34, 176, 210, 284, 205, + -179, -202, -276, -190, -202, -202, 31, 166, -189, -56, + -189, 88, -7, -3, -11, -10, -12, 118, -77, 284, + -65, 144, 448, 434, 435, 436, 433, 299, 441, 439, + 437, 209, 438, 82, 109, 107, 108, 125, -84, -108, 128, 110, 126, 127, 112, 130, 129, 140, 133, 134, 135, 136, 137, 138, 139, 131, 132, 143, 118, 119, - 120, 121, 122, 123, 124, -172, -280, -126, -280, 151, + 120, 121, 122, 123, 124, -173, -276, -126, -276, 151, 152, -111, -111, -111, -111, -111, -111, -111, -111, -111, - -111, -280, 150, -2, -120, -4, -280, -280, -280, -280, - -280, -280, -280, -280, -133, -84, -280, -284, -117, -280, - -284, -117, -284, -117, -284, -280, -284, -117, -284, -117, - -284, -284, -117, -280, -280, -280, -280, -280, -280, -280, - -200, -274, -275, -103, -100, -280, -137, -3, -54, -155, + -111, -276, 150, -2, -120, -4, -276, -276, -276, -276, + -276, -276, -276, -276, -133, -84, -276, -280, -117, -276, + -280, -117, -280, -117, -280, -276, -280, -117, -280, -117, + -280, -280, -117, -276, -276, -276, -276, -276, -276, -276, + -201, -270, -271, -103, -100, -276, -137, -3, -54, -156, 20, 32, -84, -138, -139, -84, -137, 56, -73, -75, - -78, 60, 61, 94, 12, -191, -190, 23, -188, 88, + -78, 60, 61, 94, 12, -192, -191, 23, -189, 88, 150, 12, -101, 27, -100, -86, -87, -88, -89, -103, - -127, -280, 12, -93, -94, -100, -102, -193, 82, 227, - -167, -203, -169, -168, 306, 308, 118, -192, -188, 88, - 30, 83, 82, -100, -205, -208, -210, -209, -211, -206, - -207, 250, 251, 144, 254, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 31, 187, 246, 247, 248, - 249, 266, 267, 268, 269, 270, 271, 272, 273, 233, - 252, 336, 234, 235, 236, 237, 238, 239, 241, 242, - 243, 244, 245, -265, -262, 81, 83, 82, -212, 81, - -82, -100, 110, -253, -250, 74, -262, -262, -262, -262, - -237, -237, 195, -29, -26, -258, 16, -25, -26, 158, - 102, 103, 155, 81, -226, 81, -235, -265, -262, 81, - 29, 170, 169, -234, -231, -234, -235, -262, -128, -188, - -193, -262, 29, 29, -160, -188, -160, -160, 21, -160, - 21, -160, 21, 89, -188, -160, 21, -160, 21, -160, - 21, -160, 21, -160, 21, 30, 75, 76, 30, 78, - 79, 80, -128, -128, -226, -164, -100, -262, 89, 89, - -237, -237, 89, 88, 88, 88, -237, -237, 89, 88, - -262, 88, -268, 181, 222, 224, 89, 89, 89, 89, - 30, 88, -269, 30, 454, 453, 455, 456, 457, 89, - 30, 89, 30, 89, -188, 81, -81, 215, 118, 204, - 204, 163, 163, 217, -100, 216, 218, 219, 41, 82, - 166, -93, 24, 73, -95, -100, -262, -194, -193, -186, + -127, -276, 12, -93, -94, -100, -102, -194, 82, 228, + -168, -204, -170, -169, 307, 309, 118, -193, -189, 88, + 30, 83, 82, -100, -206, -209, -211, -210, -212, -207, + -208, 251, 252, 144, 255, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 31, 187, 247, 248, 249, + 250, 267, 268, 269, 270, 271, 272, 273, 274, 234, + 253, 337, 235, 236, 237, 238, 239, 240, 242, 243, + 244, 245, 246, -261, -258, 81, 83, 82, -213, 81, + -82, -182, -249, -246, 74, -258, -258, -258, -258, 110, + -233, -233, 195, -29, -26, -254, 16, -25, -26, 158, + 102, 103, 155, 81, -222, 81, -231, -261, -258, 81, + 29, 170, 169, -230, -227, -230, -231, -258, -128, -189, + -194, -258, 29, 29, -161, -189, -161, -161, 21, -161, + 21, -161, 21, 89, -189, -161, 21, -161, 21, -161, + 21, -161, 21, -161, 21, 30, 75, 76, 30, 78, + 79, 80, -128, -128, -222, -165, -100, -258, 89, 89, + -233, -233, 89, 88, 88, 88, -233, -233, 89, 88, + -258, 88, -264, 181, 223, 225, 89, 89, 89, 89, + 30, 88, -265, 30, 455, 454, 456, 457, 458, 89, + 30, 89, 30, 89, -189, 81, -81, 215, 118, 204, + 204, 163, 163, 217, -100, 216, 218, 220, 41, 82, + 166, -181, 73, -95, -100, 24, -258, -195, -194, -187, 88, -84, -179, -100, -175, -179, -100, -179, -179, -179, - -179, -175, -179, -193, -193, -175, -179, -233, 12, 128, - -175, -201, -201, -201, -100, -201, -201, -100, -201, -201, - -233, -180, 126, 73, -199, 230, 264, 426, 427, 428, - 82, 338, -93, 432, 432, 432, 432, 432, 432, -84, - -84, -84, -84, -118, 98, 110, 99, 100, -111, -119, - -123, -126, 93, 128, 126, 127, 112, -111, -111, -111, + -179, -175, -175, -229, 12, 128, -175, -179, -194, -194, + -202, -202, -202, -100, -202, -202, -100, -202, -202, -229, + -180, 126, 73, -200, 231, 265, 427, 428, 429, 82, + 339, -93, 433, 433, 433, 433, 433, 433, -84, -84, + -84, -84, -118, 98, 110, 99, 100, -111, -119, -123, + -126, 93, 128, 126, 127, 112, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, - -111, -111, -202, -262, 88, 144, -262, -110, -110, -188, - -74, 22, 37, -73, -189, -194, -186, -69, -281, -281, - -137, -73, -73, -84, -84, -128, 88, -73, -128, 88, - -73, -73, -68, 22, 37, -131, -132, 114, -128, -281, - -111, -188, -188, -73, -74, -74, -73, -73, 82, -276, - 308, 309, 430, -196, 198, -195, 23, -193, 88, -121, - -120, -141, -281, -142, 27, 10, 128, 82, 19, 82, - -140, 25, 26, -141, -112, -188, 89, 92, -85, 82, - 12, -78, -100, -190, 135, -194, -100, -159, 198, -100, - 31, 82, -96, -98, -97, -99, 63, 67, 69, 64, - 65, 66, 70, -197, 23, -86, -3, -280, -100, -93, - -282, 82, 12, 74, -282, 82, 150, -167, -169, 82, - 307, 309, 310, 73, 101, -84, -217, 143, -244, -243, - -242, -226, -228, -229, -230, 83, -183, 98, 110, -221, - 278, -212, -212, -212, -212, -212, -216, -164, -216, -216, - -216, 81, 81, -212, -212, -212, -212, -218, 81, -218, - -218, -219, 81, -219, -255, -84, -252, -251, -249, -250, - 174, 95, 338, -247, -140, 89, -81, 24, 73, -188, - -253, -253, -253, -262, 88, -262, 88, 82, 17, -227, - -226, -129, 222, -257, 198, -254, -248, 81, 29, -234, - -235, -235, 150, -262, 82, 27, 106, 106, 106, 106, - 338, 155, 31, -226, -129, -202, 166, -202, -202, 88, - 88, -178, 462, -93, 165, 221, -83, 321, 88, 84, - -100, -100, -100, -100, -100, 158, 155, 206, -100, -100, - -59, 183, 178, -100, 82, -59, -179, -179, -179, -100, - -179, -100, 88, -100, -188, -65, 308, 338, 20, -66, - 20, 98, 99, 100, -119, -111, -111, -111, -72, 188, - 109, -281, -281, -73, -73, -280, 150, -5, -141, -281, - -281, 82, 74, 23, 12, 12, -281, 12, 12, -281, - -281, -73, -134, -132, 116, -84, -281, -281, 82, 82, - -281, -281, -281, -281, -281, -275, 429, 309, -104, 71, - 167, 72, -280, -195, -281, -155, 39, 47, 58, -84, - -84, -139, -155, -171, 20, 12, 54, 54, -105, 13, - -75, -86, -78, 150, -105, -109, 31, 54, -3, -280, - -280, -162, -166, -128, -87, -88, -88, -87, -88, 63, - 63, 63, 68, 63, 68, 63, -97, -193, -281, -281, - -3, -159, 74, -86, -100, -86, -102, -193, 135, -168, - -170, 311, 308, 314, -262, 88, 82, -242, -230, -214, - 30, 98, -222, 279, -216, -216, -217, -262, 144, -217, - -217, -217, -225, 88, -225, 89, 89, 83, -32, -27, - -28, 32, 77, -249, -237, 88, 38, 83, 165, -100, - 73, 73, 73, 16, -157, -188, 82, 83, -130, 223, - -128, 83, -188, 83, -157, -235, -189, -188, -280, 163, - 30, 30, -129, -130, -217, -262, 464, 463, 83, -100, - -80, 213, 220, 81, 85, -264, 74, 204, 275, 204, - 207, 166, -32, -100, -175, -175, 32, 308, 441, 439, - -72, 109, -111, -111, -281, -281, -74, -189, -137, -155, - -204, 144, 250, 187, 248, 244, 264, 255, 277, 246, - 278, -202, -204, -111, -111, -111, -111, 335, -137, 117, - -84, 115, -111, -111, 164, 164, 164, -160, 40, 88, - 88, 59, -100, -135, 14, -84, 135, -141, -161, 73, - -162, -122, -124, -123, -280, -156, -281, -188, -160, -105, - 82, 118, -91, -90, 73, 74, -92, 73, -90, 63, - 63, -281, -105, -86, -105, -105, 150, 308, 312, 313, - -242, -215, 73, -111, -217, -217, 83, 82, 83, 82, - 83, 82, -184, 375, 110, -28, -27, -237, -237, 89, - -262, -100, -100, -100, -100, 17, 82, -226, -128, 54, - -252, 83, -256, -257, -100, -110, -130, -158, 81, 83, - -261, 338, -263, -262, -188, -188, -188, -100, -179, -179, - 32, -262, -111, -281, -141, -281, -212, -212, -212, -219, - -212, 238, -212, 238, -281, -281, 20, 20, 20, 20, - -280, -64, 331, -84, 82, 82, -280, -280, -280, -281, - 88, -216, -136, 15, 17, 28, -161, 82, -281, -281, - 82, 54, 150, -281, -137, -166, -84, -84, 81, -84, - -137, -105, -220, 275, 10, -216, 88, -216, 89, 89, - 375, 30, 78, 79, 80, 30, 75, 76, -158, -157, - -188, 200, 182, -281, 82, -223, 338, 341, 23, -157, - -260, -259, -189, 81, 74, -155, -216, -262, -111, -111, - -111, -111, -111, -141, 88, -111, -111, -157, -281, -157, - -157, -196, -216, -144, -149, -176, -84, -120, 29, -124, - 54, -3, -188, -122, -188, -141, -157, -141, -224, 170, - 29, 169, -114, -217, -217, 83, 83, 23, 201, -100, - -257, 342, 342, -3, 83, 82, 118, -157, -100, -281, - -281, -281, -281, -67, 128, 338, -281, -281, -281, -281, - -281, -281, -104, -147, 425, -150, 43, -151, 44, 10, - -122, 150, 83, -213, 95, 29, 29, -3, -280, 81, - -57, 338, -259, -241, -189, 88, 89, 83, -281, 336, - 70, 339, -144, 48, 256, -152, 52, -153, -148, 53, - 17, -162, -188, 88, -57, -111, 197, -157, -58, 212, - 429, -264, 59, 337, 340, -145, 50, -143, 49, -143, - -151, 17, -154, 45, 46, 88, -281, -281, 83, 175, - -261, 59, -146, 51, 73, 101, 88, 17, 17, -271, - -272, 73, 214, 338, 73, 101, 88, 88, -272, 73, - 11, 10, 339, -270, 183, 178, 181, 31, -270, 340, - 177, 30, 98, + -111, -203, -258, 88, 144, -258, -110, -110, -189, -74, + 22, 37, -73, -190, -195, -187, -69, -277, -277, -137, + -73, -73, -84, -84, -128, 88, -73, -128, 88, -73, + -73, -68, 22, 37, -131, -132, 114, -128, -277, -111, + -189, -189, -73, -74, -74, -73, -73, 82, -272, 309, + 310, 431, -197, 198, -196, 23, -194, 88, -121, -120, + -141, -277, -142, 27, 10, 128, 82, 19, 82, -140, + 25, 26, -141, -112, -189, 89, 92, -85, 82, 12, + -78, -100, -191, 135, -195, -100, -160, 198, -100, 31, + 82, -96, -98, -97, -99, 63, 67, 69, 64, 65, + 66, 70, -198, 23, -86, -3, -276, -100, -93, -278, + 82, 12, 74, -278, 82, 150, -168, -170, 82, 308, + 310, 311, 73, 101, -84, -215, 143, -240, -239, -238, + -222, -224, -225, -226, 83, -143, -218, 279, -213, -213, + -213, -213, -213, -214, -165, -214, -214, -214, 81, 81, + -213, -213, -213, -213, -216, 81, -216, -216, -217, 81, + -217, -251, -84, -248, -247, -245, -246, 174, 95, 339, + -243, -140, 89, -81, -100, 73, -189, -249, -249, -249, + 24, -258, 88, -258, 88, 82, 17, -223, -222, -129, + 223, -253, 198, -250, -244, 81, 29, -230, -231, -231, + 150, -258, 82, 27, 106, 106, 106, 106, 339, 155, + 31, -222, -129, -203, 166, -203, -203, 88, 88, -178, + 463, -93, 165, 222, -83, 322, 88, 84, -100, -100, + -100, -100, -100, 158, 155, 206, -100, -100, -93, -100, + 82, -59, 183, 178, -179, -179, -179, -100, -179, -100, + 88, -100, -189, -65, 309, 339, 20, -66, 20, 98, + 99, 100, -119, -111, -111, -111, -72, 188, 109, -277, + -277, -73, -73, -276, 150, -5, -141, -277, -277, 82, + 74, 23, 12, 12, -277, 12, 12, -277, -277, -73, + -134, -132, 116, -84, -277, -277, 82, 82, -277, -277, + -277, -277, -277, -271, 430, 310, -104, 71, 167, 72, + -276, -196, -277, -156, 39, 47, 58, -84, -84, -139, + -156, -172, 20, 12, 54, 54, -105, 13, -75, -86, + -78, 150, -105, -109, 31, 54, -3, -276, -276, -163, + -167, -128, -87, -88, -88, -87, -88, 63, 63, 63, + 68, 63, 68, 63, -97, -194, -277, -277, -3, -160, + 74, -86, -100, -86, -102, -194, 135, -169, -171, 312, + 309, 315, -258, 88, 82, -238, -226, 98, 110, 30, + 73, 276, 95, 170, 29, 169, -219, 280, -214, -214, + -215, -258, 144, -215, -215, -215, -221, 88, -221, 89, + 89, 83, -32, -27, -28, 32, 77, -245, -233, 88, + 38, 83, 165, -100, 73, 73, 73, 16, -158, -189, + 82, 83, -130, 224, -128, 83, -189, 83, -158, -231, + -190, -189, -276, 163, 30, 30, -129, -130, -215, -258, + 465, 464, 83, -100, -80, 213, 221, 81, 85, -260, + 74, 204, 276, 204, 207, 166, -59, -32, -100, -175, + -175, 32, 309, 442, 440, -72, 109, -111, -111, -277, + -277, -74, -190, -137, -156, -205, 144, 251, 187, 249, + 245, 265, 256, 278, 247, 279, -203, -205, -111, -111, + -111, -111, 336, -137, 117, -84, 115, -111, -111, 164, + 164, 164, -161, 40, 88, 88, 59, -100, -135, 14, + -84, 135, -141, -162, 73, -163, -122, -124, -123, -276, + -157, -277, -189, -161, -105, 82, 118, -91, -90, 73, + 74, -92, 73, -90, 63, 63, -277, -105, -86, -105, + -105, 150, 309, 313, 314, -238, 98, -111, 10, 88, + 29, 29, -215, -215, 83, 82, 83, 82, 83, 82, + -183, 376, 110, -28, -27, -233, -233, 89, -258, -100, + -100, -100, -100, 17, 82, -222, -128, 54, -248, 83, + -252, -253, -100, -110, -130, -159, 81, 83, -257, 339, + -259, -258, -189, -189, -189, -100, -179, -179, 32, -258, + -111, -277, -141, -277, -213, -213, -213, -217, -213, 239, + -213, 239, -277, -277, 20, 20, 20, 20, -276, -64, + 332, -84, 82, 82, -276, -276, -276, -277, 88, -214, + -136, 15, 17, 28, -162, 82, -277, -277, 82, 54, + 150, -277, -137, -167, -84, -84, 81, -84, -137, -105, + -114, -214, 88, -214, 89, 89, 376, 30, 78, 79, + 80, 30, 75, 76, -159, -158, -189, 200, 182, -277, + 82, -220, 339, 342, 23, -158, -256, -255, -190, 81, + 74, -156, -214, -258, -111, -111, -111, -111, -111, -141, + 88, -111, -111, -158, -277, -158, -158, -197, -214, -145, + -150, -176, -84, -120, 29, -124, 54, -3, -189, -122, + -189, -141, -158, -141, -215, -215, 83, 83, 23, 201, + -100, -253, 343, 343, -3, 83, 82, 118, -158, -100, + -277, -277, -277, -277, -67, 128, 339, -277, -277, -277, + -277, -277, -277, -104, -148, 426, -151, 43, -152, 44, + 10, -122, 150, 83, -3, -276, 81, -57, 339, -255, + -237, -190, 88, 89, 83, -277, 337, 70, 340, -145, + 48, 257, -153, 52, -154, -149, 53, 17, -163, -189, + -57, -111, 197, -158, -58, 212, 430, -260, 59, 338, + 341, -146, 50, -144, 49, -144, -152, 17, -155, 45, + 46, 88, -277, -277, 83, 175, -257, 59, -147, 51, + 73, 101, 88, 17, 17, -267, -268, 73, 214, 339, + 73, 101, 88, 88, -268, 73, 11, 10, 340, -266, + 183, 178, 181, 31, -266, 341, 177, 30, 98, } var yyDef = [...]int{ 33, -2, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 816, 0, 554, 554, 554, 554, 554, 554, - 554, 0, 0, 90, -2, -2, 840, 37, 0, 0, - 0, 0, -2, 488, 489, 0, 491, -2, 0, 0, - 500, 1348, 1348, 549, 0, 0, 0, 0, 0, 1346, - 54, 55, 506, 507, 508, 1, 3, 0, 558, 824, - 0, 0, -2, 556, 0, 0, 932, 932, 932, 0, - 85, 86, 0, 0, 0, 840, 930, 0, 0, 0, - 0, 930, 0, 108, 109, 89, -2, 113, 114, 0, - 118, 371, 332, 374, 330, 360, -2, 323, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 335, 227, 227, 0, 0, -2, 323, 323, 323, 0, - 0, 0, 357, 934, 277, 227, 227, 0, 227, 227, - 227, 227, 0, 0, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 0, - 107, 853, 0, 0, 117, 38, 34, 35, 36, 0, - 928, 0, 928, 928, 0, 423, 638, 947, 948, 1087, - 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, - 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, - 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, - 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, - 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, - 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, - 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, - 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, - 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, - 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, - 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, - 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, - 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, - 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, - 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, - 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, - 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, - 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, - 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, - 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, - 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, - 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, - 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, - 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, - 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 0, 479, - 479, 479, 479, 479, 479, 0, 0, 433, 0, 0, - 0, 0, 476, 473, 476, 0, 0, 0, 453, 0, - 456, 0, 0, 463, 479, 1349, 1349, 1349, 919, 0, - 485, 486, 471, 468, 469, 487, 490, 0, 495, 498, - 943, 944, 0, 513, 0, 1161, 505, 518, 519, 0, - 550, 551, 39, 689, 648, 0, 654, 656, 0, 691, - 692, 693, 694, 695, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 721, 722, 723, 724, 801, 802, - 803, 804, 805, 806, 807, 808, 658, 659, 798, 0, - 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 789, 0, 758, 758, 758, 758, 758, 758, 758, 758, - 0, 0, 0, 0, 0, 0, 0, -2, -2, 1348, - 0, 528, 0, 816, 50, 0, 554, 559, 560, 859, - 0, 0, 816, 1347, 0, 0, -2, -2, 570, 576, - 577, 578, 579, 555, 0, 582, 586, 0, 0, 0, - 933, 0, 0, 71, 0, 1315, 912, -2, -2, 0, - 0, 945, 946, 921, -2, 951, 952, 953, 954, 955, - 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, - 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, - 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, - 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, - 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, - 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, - 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, - 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, - 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, - 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, - 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, - 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, - 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, - 1086, -2, 1106, 0, 0, 127, 128, 0, 37, 253, - 0, 123, 0, 247, 185, 853, 0, 0, 940, 0, - 0, 0, 0, 91, 115, 116, 227, 227, 0, 117, - 117, 339, 340, 341, 0, 0, -2, 251, 0, 324, - 0, 0, 241, 241, 245, 243, 244, 0, 0, 0, - 0, 0, 0, 351, 0, 352, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 407, 0, 228, 0, 369, - 370, 278, 0, 0, 0, 0, 349, 350, 0, 0, - 935, 936, 0, 0, 227, 227, 0, 0, 0, 0, - 227, 227, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 101, 844, 0, - 0, 0, 0, 0, 0, -2, 0, 415, 0, 0, - 0, 0, 0, 0, 422, 0, 424, 425, 0, 0, - 426, 427, 428, 429, 430, 479, 0, 476, 479, 0, - 479, 479, 479, 479, 476, 479, 0, 0, 476, 479, - 0, 476, 474, 475, 1349, 1349, 1349, 0, 1349, 1349, - 0, 1349, 1349, 0, 236, 237, 238, 482, 460, 461, - 464, 465, 1350, 1351, 466, 467, 920, 496, 499, 516, - 514, 515, 517, 509, 510, 511, 512, 0, 529, 530, - 535, 0, 0, 0, 0, 541, 542, 543, 0, 0, - 546, 547, 548, 0, 0, 0, 0, 0, 652, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 676, 677, - 678, 679, 680, 681, 682, 655, 0, 669, 0, 0, - 0, 711, 712, 713, 714, 715, 716, 717, 718, 719, - 0, 567, 0, 0, 0, 816, 0, 0, 0, 0, - 0, 0, 0, 564, 0, 790, 0, 742, 750, 0, - 743, 751, 744, 752, 745, 0, 746, 753, 747, 754, - 748, 749, 755, 0, 0, 0, 567, 567, 0, 0, - 40, 520, 521, 0, 621, 938, 824, 0, 569, 862, - 0, 0, 825, 817, 818, 821, 824, 0, 591, 580, - 571, 574, 575, 557, 0, 583, 587, 0, 589, 590, - 0, 0, 69, 0, 637, 0, 593, 595, 596, 597, - 619, 0, 0, 0, 0, 65, 67, 638, 0, 1315, - 918, 0, 73, 74, 0, 0, 0, 208, 923, 924, - 925, -2, 234, 0, 196, 192, 136, 137, 138, 185, - 140, 185, 185, 185, 185, 205, 205, 205, 205, 168, - 169, 170, 171, 172, 0, 0, 155, 185, 185, 185, - 185, 175, 176, 177, 178, 179, 180, 181, 182, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 187, 187, - 187, 189, 189, 0, 38, 0, 219, 0, 821, 0, - 844, 100, 0, 0, 941, 0, 940, 940, 940, 106, - 0, 0, 372, 333, 361, 373, 0, 336, 337, -2, - 0, 0, 323, 0, 325, 0, 235, 0, -2, 0, - 0, 0, 241, 245, 242, 245, 233, 246, 353, 798, - 0, 354, 355, 0, 387, 607, 0, 0, 0, 0, - 0, 393, 394, 395, 0, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 362, 363, 364, 365, 366, - 367, 368, 0, 0, 325, 0, 358, 0, 279, 280, - 0, 0, 283, 284, 285, 286, 0, 0, 289, 290, - 291, 292, 293, 317, 318, 319, 294, 295, 296, 297, - 298, 299, 300, 311, 312, 313, 314, 315, 316, 301, - 302, 303, 304, 305, 308, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 841, 842, 843, 0, 0, - 0, 266, 929, 0, 266, 63, 421, 639, 949, 950, - 480, 481, 431, 454, 479, 434, 457, 435, 437, 436, - 438, 479, 440, 477, 478, 479, 442, 0, 239, 240, - 479, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 0, 459, 0, 0, 0, 497, 501, 502, 503, 504, - 0, 0, 532, 537, 538, 539, 540, 552, 545, 690, - 649, 650, 651, 653, 670, 0, 672, 674, 660, 661, - 685, 686, 687, 0, 0, 0, 0, 683, 665, 0, - 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 710, 773, 774, 775, 0, 708, 709, 720, - 0, 0, 0, 568, 799, 0, -2, 0, 688, 907, - 824, 0, 0, 0, 0, 693, 801, 0, 693, 801, - 0, 0, 0, 565, 566, 796, 793, 0, 0, 759, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 523, - 524, 526, 0, 641, 0, 622, 0, 624, 625, 0, - 939, 859, 51, 41, 0, 860, 0, 0, 0, 0, - 820, 822, 823, 859, 0, 809, 0, 0, 646, 0, - 0, 572, 47, 588, 584, 0, 646, 0, 0, 636, - 0, 0, 0, 0, 0, 0, 626, 0, 0, 629, - 0, 0, 0, 0, 620, 0, 0, 0, -2, 0, - 0, 0, 61, 62, 0, 0, 0, 913, 72, 0, - 0, 77, 78, 914, 915, 916, 917, 0, 110, -2, - 274, 129, 131, 132, 133, 124, 199, 197, 0, 194, - 193, 139, 205, 205, 162, 163, 208, 0, 208, 208, - 208, 0, 0, 156, 157, 158, 159, 150, 0, 151, - 152, 153, 0, 154, 252, 0, 828, 220, 221, 223, - 227, 0, 0, 248, 249, 0, 0, 931, 0, 942, - 0, 0, 0, 119, 120, 121, 122, 117, 0, 0, - 125, 327, 0, 0, 0, 250, 0, 0, 229, 245, - 230, 231, 0, 356, 0, 0, 389, 390, 391, 392, - 0, 0, 0, 325, 327, 208, 0, 281, 282, 287, - 288, 306, 0, 0, 0, 0, 854, 855, 0, 858, - 92, 379, 381, 380, 384, 0, 0, 0, 0, 416, - 418, 267, 268, 828, 0, 420, 432, 439, 441, 476, - 458, 476, 483, 462, 493, 536, 0, 0, 0, 544, - 0, 671, 673, 675, 662, 683, 666, 0, 663, 0, - 0, 657, 725, 0, 0, 567, 0, 816, 859, 729, - 730, 0, 0, 0, 0, 0, 766, 0, 0, 767, - 0, 816, 0, 794, 0, 0, 741, 760, 0, 0, - 761, 762, 763, 764, 765, 522, 525, 527, 601, 0, - 0, 0, 0, 623, 937, 43, 0, 0, 0, 826, - 827, 819, 42, 0, 926, 927, 810, 811, 812, 0, - 581, 592, 573, 0, 824, 901, 0, 0, 893, 0, - 0, 646, 909, 0, 594, 615, 617, 0, 612, 627, - 628, 630, 0, 632, 0, 634, 635, 598, 599, 600, - 0, 646, 0, 646, 66, 646, 68, 0, 640, 75, - 76, 0, 0, 82, 209, 210, 117, 276, 130, 201, - 0, 198, 135, 195, 208, 208, 164, 206, 207, 165, - 166, 167, 0, 183, 0, 0, 0, 269, 87, 832, - 831, 227, 227, 222, 0, 225, 0, 186, 0, 102, - 0, 0, 0, 0, 331, 605, 0, 342, 343, 0, - 326, 386, 0, 219, 0, 232, 799, 608, 0, 0, - 344, 0, 327, 347, 348, 359, 309, 310, 307, 603, - 845, 846, 847, 0, 857, 95, 0, 0, 0, 0, - 377, 0, 419, 64, 479, 479, 531, 0, 534, 0, - 664, 0, 684, 667, 726, 727, 0, 800, 824, 45, - 0, 185, 185, 779, 185, 189, 782, 185, 784, 185, - 787, 0, 0, 0, 0, 0, 0, 0, 791, 740, - 797, 0, 0, 0, 0, 0, 0, 0, 0, 205, - 864, 861, 44, 814, 0, 647, 585, 48, 52, 0, - 901, 892, 903, 905, 0, 0, 0, 897, 0, 816, - 0, 0, 609, 616, 0, 0, 610, 0, 611, 631, - 633, -2, 816, 646, 59, 60, 0, 79, 80, 81, - 275, 203, 0, 200, 160, 161, 205, 0, 205, 0, - 190, 0, 258, 270, 0, 829, 830, 0, 0, 224, - 226, 603, 103, 104, 105, 0, 0, 126, 328, 0, - 218, 0, 0, 411, 408, 345, 346, 0, 0, 856, - 378, 0, 93, 94, 0, 0, 383, 417, 443, 455, - 533, 553, 668, 728, 859, 731, 776, 205, 780, 781, - 783, 785, 786, 788, 733, 732, 0, 0, 0, 0, - 0, 824, 0, 795, 0, 0, 0, 0, 0, 621, - 205, 884, 49, 0, 0, 0, 53, 0, 906, 0, - 0, 0, 0, 70, 824, 910, 911, 613, 0, 618, - 824, 58, 211, 204, 0, 208, 184, 208, 0, 0, - 271, 833, 834, 835, 836, 837, 838, 839, 0, 334, - 606, 0, 0, 388, 0, 396, 0, 0, 0, 0, - 96, 97, 0, 0, 0, 46, 777, 778, 0, 0, - 0, 0, 768, 0, 792, 0, 0, 0, 643, 0, - 0, 641, 866, 865, 878, 882, 815, 813, 0, 904, - 0, 896, 899, 895, 898, 56, 0, 57, 216, 0, - 213, 215, 202, 173, 174, 188, 191, 0, 0, 0, - 412, 409, 410, 848, 604, 0, 0, 0, 385, 734, - 736, 735, 737, 0, 0, 0, 739, 756, 757, 642, - 644, 645, 602, 884, 0, 877, 880, -2, 0, 0, - 894, 0, 614, 134, 0, 212, 214, 848, 0, 0, - 375, 850, 98, 99, 320, 321, 322, 92, 738, 0, - 0, 0, 871, 869, 869, 882, 0, 886, 0, 891, - 0, 902, 900, 217, 88, 0, 0, 0, 0, 851, - 852, 95, 769, 0, 772, 874, 0, 867, 870, 868, - 879, 0, 885, 0, 0, 883, 413, 414, 254, 0, - 382, 770, 863, 0, 872, 873, 881, 0, 0, 255, - 256, 0, 849, 0, 875, 876, 887, 889, 257, 0, - 0, 0, 0, 259, 261, 262, 0, 0, 260, 771, - 263, 264, 265, + 31, 32, 810, 0, 548, 548, 548, 548, 548, 548, + 548, 0, 0, -2, -2, -2, 834, 37, 0, 922, + 0, 0, -2, 482, 483, 0, 485, -2, 0, 0, + 494, 1345, 1345, 543, 0, 0, 0, 0, 0, 1343, + 54, 55, 500, 501, 502, 1, 3, 0, 552, 818, + 0, 0, -2, 550, 0, 0, 928, 928, 928, 0, + 85, 86, 0, 0, 0, 834, 0, 0, 0, 0, + 0, 926, 0, 923, 108, 109, 89, -2, 113, 114, + 0, 118, 366, 327, 369, 325, 355, -2, 318, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 330, 222, 222, 0, 0, -2, 318, 318, 318, + 0, 0, 0, 352, 930, 272, 222, 222, 0, 222, + 222, 222, 222, 0, 0, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 0, 107, 847, 0, 0, 117, 38, 34, 35, 36, + 0, 0, 0, 924, 924, 0, 418, 632, 943, 944, + 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, + 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, + 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, + 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, + 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, + 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, + 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, + 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, + 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, + 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, + 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, + 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, + 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, + 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, + 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, + 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, + 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, + 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, + 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, + 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, + 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, + 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, + 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, + 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, + 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, + 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, + 0, 473, 473, 473, 473, 473, 473, 0, 0, 428, + 0, 0, 0, 0, 0, 470, 0, 0, 447, 0, + 450, 0, 0, 457, 473, 1346, 1346, 1346, 913, 0, + 479, 480, 467, 465, 462, 463, 481, 484, 0, 489, + 492, 939, 940, 0, 507, 0, 1157, 499, 512, 513, + 0, 544, 545, 39, 683, 642, 0, 648, 650, 0, + 685, 686, 687, 688, 689, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 715, 716, 717, 718, 795, + 796, 797, 798, 799, 800, 801, 802, 652, 653, 792, + 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 783, 0, 752, 752, 752, 752, 752, 752, 752, + 752, 0, 0, 0, 0, 0, 0, 0, -2, -2, + 1345, 0, 522, 0, 810, 50, 0, 548, 553, 554, + 853, 0, 0, 810, 1344, 0, 0, -2, -2, 564, + 570, 571, 572, 573, 549, 0, 576, 580, 0, 0, + 0, 929, 0, 0, 71, 0, 1312, 906, -2, -2, + 0, 0, 941, 942, 915, -2, 947, 948, 949, 950, + 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, + 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, + 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, + 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, + 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, + 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, + 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, + 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, + 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, + 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, + 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, + 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, + 1081, 1082, -2, 1102, 0, 0, 127, 128, 0, 37, + 248, 0, 123, 0, 242, 196, 847, 926, 936, 0, + 0, 0, 0, 0, 91, 115, 116, 222, 222, 0, + 117, 117, 334, 335, 336, 0, 0, -2, 246, 0, + 319, 0, 0, 236, 236, 240, 238, 239, 0, 0, + 0, 0, 0, 0, 346, 0, 347, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 402, 0, 223, 0, + 364, 365, 273, 0, 0, 0, 0, 344, 345, 0, + 0, 931, 932, 0, 0, 222, 222, 0, 0, 0, + 0, 222, 222, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 101, 838, + 0, 0, 0, 0, 0, 0, -2, 0, 410, 0, + 924, 0, 0, 0, 0, 417, 0, 419, 420, 0, + 0, 421, 422, 423, 424, 425, 473, 0, 470, 473, + 0, 473, 473, 473, 473, 470, 470, 0, 470, 468, + 469, 473, 0, 0, 1346, 1346, 1346, 0, 1346, 1346, + 0, 1346, 1346, 0, 231, 232, 233, 476, 454, 455, + 458, 459, 1347, 1348, 460, 461, 914, 490, 493, 510, + 508, 509, 511, 503, 504, 505, 506, 0, 523, 524, + 529, 0, 0, 0, 0, 535, 536, 537, 0, 0, + 540, 541, 542, 0, 0, 0, 0, 0, 646, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 670, 671, + 672, 673, 674, 675, 676, 649, 0, 663, 0, 0, + 0, 705, 706, 707, 708, 709, 710, 711, 712, 713, + 0, 561, 0, 0, 0, 810, 0, 0, 0, 0, + 0, 0, 0, 558, 0, 784, 0, 736, 744, 0, + 737, 745, 738, 746, 739, 0, 740, 747, 741, 748, + 742, 743, 749, 0, 0, 0, 561, 561, 0, 0, + 40, 514, 515, 0, 615, 934, 818, 0, 563, 856, + 0, 0, 819, 811, 812, 815, 818, 0, 585, 574, + 565, 568, 569, 551, 0, 577, 581, 0, 583, 584, + 0, 0, 69, 0, 631, 0, 587, 589, 590, 591, + 613, 0, 0, 0, 0, 65, 67, 632, 0, 1312, + 912, 0, 73, 74, 0, 0, 0, 210, 917, 918, + 919, -2, 229, 0, 135, 203, 147, 148, 149, 196, + 151, 196, 196, 196, 196, 207, 207, 207, 207, 179, + 180, 181, 182, 183, 0, 0, 166, 196, 196, 196, + 196, 186, 187, 188, 189, 190, 191, 192, 193, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 198, 198, + 198, 200, 200, 0, 38, 0, 214, 0, 815, 0, + 838, 0, 0, 937, 0, 936, 936, 936, 106, 0, + 0, 0, 367, 328, 356, 368, 0, 331, 332, -2, + 0, 0, 318, 0, 320, 0, 230, 0, -2, 0, + 0, 0, 236, 240, 237, 240, 228, 241, 348, 792, + 0, 349, 350, 0, 382, 601, 0, 0, 0, 0, + 0, 388, 389, 390, 0, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 357, 358, 359, 360, 361, + 362, 363, 0, 0, 320, 0, 353, 0, 274, 275, + 0, 0, 278, 279, 280, 281, 0, 0, 284, 285, + 286, 287, 288, 312, 313, 314, 289, 290, 291, 292, + 293, 294, 295, 306, 307, 308, 309, 310, 311, 296, + 297, 298, 299, 300, 303, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 835, 836, 837, 0, 0, + 0, 0, 0, 261, 63, 925, 416, 633, 945, 946, + 474, 475, 426, 448, 473, 429, 451, 430, 432, 431, + 433, 473, 473, 0, 234, 235, 473, 436, 471, 472, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 0, + 453, 0, 0, 0, 491, 495, 496, 497, 498, 0, + 0, 526, 531, 532, 533, 534, 546, 539, 684, 643, + 644, 645, 647, 664, 0, 666, 668, 654, 655, 679, + 680, 681, 0, 0, 0, 0, 677, 659, 0, 690, + 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, + 701, 704, 767, 768, 769, 0, 702, 703, 714, 0, + 0, 0, 562, 793, 0, -2, 0, 682, 901, 818, + 0, 0, 0, 0, 687, 795, 0, 687, 795, 0, + 0, 0, 559, 560, 790, 787, 0, 0, 753, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 517, 518, + 520, 0, 635, 0, 616, 0, 618, 619, 0, 935, + 853, 51, 41, 0, 854, 0, 0, 0, 0, 814, + 816, 817, 853, 0, 803, 0, 0, 640, 0, 0, + 566, 47, 582, 578, 0, 640, 0, 0, 630, 0, + 0, 0, 0, 0, 0, 620, 0, 0, 623, 0, + 0, 0, 0, 614, 0, 0, 0, -2, 0, 0, + 0, 61, 62, 0, 0, 0, 907, 72, 0, 0, + 77, 78, 908, 909, 910, 911, 0, 110, -2, 269, + 129, 131, 132, 133, 124, 134, 205, 204, 150, 207, + 207, 173, 174, 210, 0, 210, 210, 210, 0, 0, + 167, 168, 169, 170, 161, 0, 162, 163, 164, 0, + 165, 247, 0, 822, 215, 216, 218, 222, 0, 0, + 243, 244, 0, 0, 100, 0, 938, 0, 0, 0, + 927, 119, 120, 121, 122, 117, 0, 0, 125, 322, + 0, 0, 0, 245, 0, 0, 224, 240, 225, 226, + 0, 351, 0, 0, 384, 385, 386, 387, 0, 0, + 0, 320, 322, 210, 0, 276, 277, 282, 283, 301, + 0, 0, 0, 0, 848, 849, 0, 852, 92, 374, + 376, 375, 379, 0, 0, 0, 0, 411, 261, 822, + 0, 415, 262, 263, 427, 434, 435, 470, 452, 470, + 477, 456, 487, 530, 0, 0, 0, 538, 0, 665, + 667, 669, 656, 677, 660, 0, 657, 0, 0, 651, + 719, 0, 0, 561, 0, 810, 853, 723, 724, 0, + 0, 0, 0, 0, 760, 0, 0, 761, 0, 810, + 0, 788, 0, 0, 735, 754, 0, 0, 755, 756, + 757, 758, 759, 516, 519, 521, 595, 0, 0, 0, + 0, 617, 933, 43, 0, 0, 0, 820, 821, 813, + 42, 0, 920, 921, 804, 805, 806, 0, 575, 586, + 567, 0, 818, 895, 0, 0, 887, 0, 0, 640, + 903, 0, 588, 609, 611, 0, 606, 621, 622, 624, + 0, 626, 0, 628, 629, 592, 593, 594, 0, 640, + 0, 640, 66, 640, 68, 0, 634, 75, 76, 0, + 0, 82, 211, 212, 117, 271, 130, 136, 0, 0, + 0, 140, 0, 0, 143, 145, 146, 206, 210, 210, + 175, 208, 209, 176, 177, 178, 0, 194, 0, 0, + 0, 264, 87, 826, 825, 222, 222, 217, 0, 220, + 0, 197, 0, 102, 0, 0, 0, 0, 326, 599, + 0, 337, 338, 0, 321, 381, 0, 214, 0, 227, + 793, 602, 0, 0, 339, 0, 322, 342, 343, 354, + 304, 305, 302, 597, 839, 840, 841, 0, 851, 95, + 0, 0, 0, 0, 372, 0, 413, 414, 64, 473, + 473, 525, 0, 528, 0, 658, 0, 678, 661, 720, + 721, 0, 794, 818, 45, 0, 196, 196, 773, 196, + 200, 776, 196, 778, 196, 781, 0, 0, 0, 0, + 0, 0, 0, 785, 734, 791, 0, 0, 0, 0, + 0, 0, 0, 0, 207, 858, 855, 44, 808, 0, + 641, 579, 48, 52, 0, 895, 886, 897, 899, 0, + 0, 0, 891, 0, 810, 0, 0, 603, 610, 0, + 0, 604, 0, 605, 625, 627, -2, 810, 640, 59, + 60, 0, 79, 80, 81, 270, 137, 138, 0, 141, + 142, 144, 171, 172, 207, 0, 207, 0, 201, 0, + 253, 265, 0, 823, 824, 0, 0, 219, 221, 597, + 103, 104, 105, 0, 0, 126, 323, 0, 213, 0, + 0, 406, 403, 340, 341, 0, 0, 850, 373, 0, + 93, 94, 0, 0, 378, 412, 437, 449, 527, 547, + 662, 722, 853, 725, 770, 207, 774, 775, 777, 779, + 780, 782, 727, 726, 0, 0, 0, 0, 0, 818, + 0, 789, 0, 0, 0, 0, 0, 615, 207, 878, + 49, 0, 0, 0, 53, 0, 900, 0, 0, 0, + 0, 70, 818, 904, 905, 607, 0, 612, 818, 58, + 139, 210, 195, 210, 0, 0, 266, 827, 828, 829, + 830, 831, 832, 833, 0, 329, 600, 0, 0, 383, + 0, 391, 0, 0, 0, 0, 96, 97, 0, 0, + 0, 46, 771, 772, 0, 0, 0, 0, 762, 0, + 786, 0, 0, 0, 637, 0, 0, 635, 860, 859, + 872, 876, 809, 807, 0, 898, 0, 890, 893, 889, + 892, 56, 0, 57, 184, 185, 199, 202, 0, 0, + 0, 407, 404, 405, 842, 598, 0, 0, 0, 380, + 728, 730, 729, 731, 0, 0, 0, 733, 750, 751, + 636, 638, 639, 596, 878, 0, 871, 874, -2, 0, + 0, 888, 0, 608, 842, 0, 0, 370, 844, 98, + 99, 315, 316, 317, 92, 732, 0, 0, 0, 865, + 863, 863, 876, 0, 880, 0, 885, 0, 896, 894, + 88, 0, 0, 0, 0, 845, 846, 95, 763, 0, + 766, 868, 0, 861, 864, 862, 873, 0, 879, 0, + 0, 877, 408, 409, 249, 0, 377, 764, 857, 0, + 866, 867, 875, 0, 0, 250, 251, 0, 843, 0, + 869, 870, 881, 883, 252, 0, 0, 0, 0, 254, + 256, 257, 0, 0, 255, 765, 258, 259, 260, } var yyTok1 = [...]int{ @@ -4946,7 +4922,7 @@ var yyTok1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 111, 3, 3, 3, 138, 130, 3, 81, 83, 135, 133, 82, 134, 150, 136, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 465, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 466, 119, 118, 120, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -5024,7 +5000,7 @@ var yyTok3 = [...]int{ 57775, 450, 57776, 451, 57777, 452, 57778, 453, 57779, 454, 57780, 455, 57781, 456, 57782, 457, 57783, 458, 57784, 459, 57785, 460, 57786, 461, 57787, 462, 57788, 463, 57789, 464, - 0, + 57790, 465, 0, } var yyErrorMessages = [...]struct { @@ -5824,10 +5800,10 @@ yydefault: yyVAL.vindexParam = VindexParam{Key: yyDollar[1].colIdent, Val: yyDollar[3].str} } case 100: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:831 { - yyVAL.createTable = &CreateTable{Table: yyDollar[4].tableName, IfNotExists: yyDollar[3].boolean} + yyVAL.createTable = &CreateTable{Table: yyDollar[5].tableName, IfNotExists: yyDollar[4].boolean, Temp: yyDollar[2].boolean} setDDL(yylex, yyVAL.createTable) } case 101: @@ -6028,1439 +6004,1414 @@ yydefault: yyVAL.TableSpec.AddConstraint(yyDollar[3].constraintDefinition) } case 134: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1002 { - yyDollar[2].columnType.NotNull = yyDollar[3].boolean - yyDollar[2].columnType.Default = yyDollar[4].optVal - yyDollar[2].columnType.OnUpdate = yyDollar[5].optVal - yyDollar[2].columnType.Autoincrement = yyDollar[6].boolean - yyDollar[2].columnType.KeyOpt = yyDollar[7].colKeyOpt - yyDollar[2].columnType.Comment = yyDollar[8].literal + yyDollar[2].columnType.Options = yyDollar[3].columnTypeOptions yyVAL.columnDefinition = &ColumnDefinition{Name: yyDollar[1].colIdent, Type: yyDollar[2].columnType} } case 135: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:1012 + { + yyVAL.columnTypeOptions = &ColumnTypeOptions{NotNull: false, Default: nil, OnUpdate: nil, Autoincrement: false, KeyOpt: colKeyNone, Comment: nil} + } + case 136: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1016 + { + yyDollar[1].columnTypeOptions.NotNull = false + yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + } + case 137: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1021 + { + yyDollar[1].columnTypeOptions.NotNull = true + yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + } + case 138: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1026 + { + yyDollar[1].columnTypeOptions.Default = yyDollar[3].expr + yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + } + case 139: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:1031 + { + yyDollar[1].columnTypeOptions.OnUpdate = yyDollar[4].expr + yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + } + case 140: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1036 + { + yyDollar[1].columnTypeOptions.Autoincrement = true + yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + } + case 141: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1041 + { + yyDollar[1].columnTypeOptions.Comment = NewStrLiteral(yyDollar[3].bytes) + yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + } + case 142: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1046 + { + yyDollar[1].columnTypeOptions.KeyOpt = colKeyPrimary + yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + } + case 143: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1051 + { + yyDollar[1].columnTypeOptions.KeyOpt = colKey + yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + } + case 144: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1056 + { + yyDollar[1].columnTypeOptions.KeyOpt = colKeyUniqueKey + yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + } + case 145: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1061 + { + yyDollar[1].columnTypeOptions.KeyOpt = colKeyUnique + yyVAL.columnTypeOptions = yyDollar[1].columnTypeOptions + } + case 146: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1013 +//line sql.y:1068 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].boolean yyVAL.columnType.Zerofill = yyDollar[3].boolean } - case 139: + case 150: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1024 +//line sql.y:1079 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Length = yyDollar[2].literal } - case 140: + case 151: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1029 +//line sql.y:1084 { yyVAL.columnType = yyDollar[1].columnType } - case 141: + case 152: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1035 +//line sql.y:1090 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 142: + case 153: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1039 +//line sql.y:1094 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 143: + case 154: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1043 +//line sql.y:1098 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 144: + case 155: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1047 +//line sql.y:1102 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 145: + case 156: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1051 +//line sql.y:1106 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 146: + case 157: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1055 +//line sql.y:1110 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 147: + case 158: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1059 +//line sql.y:1114 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 148: + case 159: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1063 +//line sql.y:1118 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 149: + case 160: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1067 +//line sql.y:1122 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 150: + case 161: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1073 +//line sql.y:1128 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 151: + case 162: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1079 +//line sql.y:1134 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 152: + case 163: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1085 +//line sql.y:1140 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 153: + case 164: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1091 +//line sql.y:1146 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 154: + case 165: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1097 +//line sql.y:1152 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 155: + case 166: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1105 +//line sql.y:1160 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 156: + case 167: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1109 +//line sql.y:1164 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 157: + case 168: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1113 +//line sql.y:1168 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 158: + case 169: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1117 +//line sql.y:1172 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 159: + case 170: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1121 +//line sql.y:1176 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 160: + case 171: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1127 +//line sql.y:1182 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } - case 161: + case 172: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1131 +//line sql.y:1186 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } - case 162: + case 173: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1135 +//line sql.y:1190 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 163: + case 174: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1139 +//line sql.y:1194 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 164: + case 175: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1143 +//line sql.y:1198 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 165: + case 176: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1147 +//line sql.y:1202 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 166: + case 177: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1151 +//line sql.y:1206 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 167: + case 178: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1155 +//line sql.y:1210 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 168: + case 179: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1159 +//line sql.y:1214 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 169: + case 180: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1163 +//line sql.y:1218 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 170: + case 181: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1167 +//line sql.y:1222 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 171: + case 182: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1171 +//line sql.y:1226 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 172: + case 183: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1175 +//line sql.y:1230 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 173: + case 184: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1179 +//line sql.y:1234 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } - case 174: + case 185: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1184 +//line sql.y:1239 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } - case 175: + case 186: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1190 +//line sql.y:1245 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 176: + case 187: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1194 +//line sql.y:1249 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 177: + case 188: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1198 +//line sql.y:1253 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 178: + case 189: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1202 +//line sql.y:1257 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 179: + case 190: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1206 +//line sql.y:1261 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 180: + case 191: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1210 +//line sql.y:1265 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 181: + case 192: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1214 +//line sql.y:1269 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 182: + case 193: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1218 +//line sql.y:1273 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 183: + case 194: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1224 +//line sql.y:1279 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'") } - case 184: + case 195: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1229 +//line sql.y:1284 { yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'") } - case 185: + case 196: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1234 +//line sql.y:1289 { yyVAL.literal = nil } - case 186: + case 197: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1238 +//line sql.y:1293 { yyVAL.literal = NewIntLiteral(yyDollar[2].bytes) } - case 187: + case 198: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1243 +//line sql.y:1298 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 188: + case 199: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1247 +//line sql.y:1302 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), Scale: NewIntLiteral(yyDollar[4].bytes), } } - case 189: + case 200: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1255 +//line sql.y:1310 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 190: + case 201: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1259 +//line sql.y:1314 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), } } - case 191: + case 202: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1265 +//line sql.y:1320 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), Scale: NewIntLiteral(yyDollar[4].bytes), } } - case 192: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1273 - { - yyVAL.boolean = false - } - case 193: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1277 - { - yyVAL.boolean = true - } - case 194: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1282 - { - yyVAL.boolean = false - } - case 195: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1286 - { - yyVAL.boolean = true - } - case 196: + case 203: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1292 +//line sql.y:1328 { yyVAL.boolean = false } - case 197: + case 204: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1296 - { - yyVAL.boolean = false - } - case 198: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1300 +//line sql.y:1332 { yyVAL.boolean = true } - case 199: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1305 - { - yyVAL.optVal = nil - } - case 200: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1309 - { - yyVAL.optVal = yyDollar[2].expr - } - case 201: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1314 - { - yyVAL.optVal = nil - } - case 202: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1318 - { - yyVAL.optVal = yyDollar[3].expr - } - case 203: + case 205: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1323 +//line sql.y:1337 { yyVAL.boolean = false } - case 204: + case 206: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1327 +//line sql.y:1341 { yyVAL.boolean = true } - case 205: + case 207: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1332 +//line sql.y:1346 { yyVAL.str = "" } - case 206: + case 208: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1336 +//line sql.y:1350 { yyVAL.str = string(yyDollar[2].colIdent.String()) } - case 207: + case 209: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1340 +//line sql.y:1354 { yyVAL.str = string(yyDollar[2].bytes) } - case 208: + case 210: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1345 +//line sql.y:1359 { yyVAL.str = "" } - case 209: + case 211: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1349 +//line sql.y:1363 { yyVAL.str = string(yyDollar[2].colIdent.String()) } - case 210: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1353 - { - yyVAL.str = string(yyDollar[2].bytes) - } - case 211: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1358 - { - yyVAL.colKeyOpt = colKeyNone - } case 212: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1362 +//line sql.y:1367 { - yyVAL.colKeyOpt = colKeyPrimary + yyVAL.str = string(yyDollar[2].bytes) } case 213: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1366 - { - yyVAL.colKeyOpt = colKey - } - case 214: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1370 - { - yyVAL.colKeyOpt = colKeyUniqueKey - } - case 215: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1374 - { - yyVAL.colKeyOpt = colKeyUnique - } - case 216: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1379 - { - yyVAL.literal = nil - } - case 217: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1383 - { - yyVAL.literal = NewStrLiteral(yyDollar[2].bytes) - } - case 218: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1389 +//line sql.y:1374 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} } - case 219: + case 214: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1394 +//line sql.y:1379 { yyVAL.indexOptions = nil } - case 220: + case 215: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1398 +//line sql.y:1383 { yyVAL.indexOptions = yyDollar[1].indexOptions } - case 221: + case 216: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1404 +//line sql.y:1389 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } - case 222: + case 217: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1408 +//line sql.y:1393 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } - case 223: + case 218: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1414 +//line sql.y:1399 { yyVAL.indexOption = yyDollar[1].indexOption } - case 224: + case 219: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1418 +//line sql.y:1403 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 225: + case 220: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1423 +//line sql.y:1408 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[2].bytes)} } - case 226: + case 221: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1427 +//line sql.y:1412 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), String: yyDollar[3].colIdent.String()} } - case 227: + case 222: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1433 +//line sql.y:1418 { yyVAL.str = "" } - case 228: + case 223: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1437 +//line sql.y:1422 { yyVAL.str = string(yyDollar[1].bytes) } - case 229: + case 224: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1443 +//line sql.y:1428 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), ConstraintName: NewColIdent(yyDollar[1].str), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } - case 230: + case 225: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1447 +//line sql.y:1432 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Spatial: true, Unique: false} } - case 231: + case 226: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1451 +//line sql.y:1436 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Fulltext: true, Unique: false} } - case 232: + case 227: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1455 +//line sql.y:1440 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].str), ConstraintName: NewColIdent(yyDollar[1].str), Name: NewColIdent(yyDollar[4].str), Unique: true} } - case 233: + case 228: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1459 +//line sql.y:1444 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(yyDollar[2].str), Unique: false} } - case 234: + case 229: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1464 +//line sql.y:1449 { yyVAL.str = "" } - case 235: + case 230: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1468 +//line sql.y:1453 { yyVAL.str = yyDollar[2].str } - case 236: + case 231: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1474 +//line sql.y:1459 { yyVAL.str = string(yyDollar[1].bytes) } - case 237: + case 232: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1478 +//line sql.y:1463 { yyVAL.str = string(yyDollar[1].bytes) } - case 238: + case 233: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1482 +//line sql.y:1467 { yyVAL.str = string(yyDollar[1].bytes) } - case 239: + case 234: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1489 +//line sql.y:1474 { yyVAL.str = string(yyDollar[1].bytes) } - case 240: + case 235: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1493 +//line sql.y:1478 { yyVAL.str = string(yyDollar[1].bytes) } - case 241: + case 236: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1498 +//line sql.y:1483 { yyVAL.str = "key" } - case 242: + case 237: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1502 +//line sql.y:1487 { yyVAL.str = yyDollar[1].str } - case 243: + case 238: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1508 +//line sql.y:1493 { yyVAL.str = string(yyDollar[1].bytes) } - case 244: + case 239: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1512 +//line sql.y:1497 { yyVAL.str = string(yyDollar[1].bytes) } - case 245: + case 240: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1517 +//line sql.y:1502 { yyVAL.str = "" } - case 246: + case 241: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1521 +//line sql.y:1506 { yyVAL.str = string(yyDollar[1].colIdent.String()) } - case 247: + case 242: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1527 +//line sql.y:1512 { yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } - case 248: + case 243: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1531 +//line sql.y:1516 { yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) } - case 249: + case 244: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1537 +//line sql.y:1522 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].literal, Direction: yyDollar[3].orderDirection} } - case 250: + case 245: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1543 +//line sql.y:1528 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } - case 251: + case 246: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1547 +//line sql.y:1532 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } - case 252: + case 247: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1553 +//line sql.y:1538 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } - case 253: + case 248: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1557 +//line sql.y:1542 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } - case 254: + case 249: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:1563 +//line sql.y:1548 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns} } - case 255: + case 250: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1567 +//line sql.y:1552 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction} } - case 256: + case 251: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1571 +//line sql.y:1556 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnUpdate: yyDollar[11].ReferenceAction} } - case 257: + case 252: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1575 +//line sql.y:1560 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction, OnUpdate: yyDollar[12].ReferenceAction} } - case 258: + case 253: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1581 +//line sql.y:1566 { yyVAL.constraintInfo = &CheckConstraintDefinition{Expr: yyDollar[3].expr, Enforced: yyDollar[5].boolean} } - case 259: + case 254: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1587 +//line sql.y:1572 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } - case 260: + case 255: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1593 +//line sql.y:1578 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } - case 261: + case 256: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1599 +//line sql.y:1584 { yyVAL.ReferenceAction = Restrict } - case 262: + case 257: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1603 +//line sql.y:1588 { yyVAL.ReferenceAction = Cascade } - case 263: + case 258: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1607 +//line sql.y:1592 { yyVAL.ReferenceAction = NoAction } - case 264: + case 259: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1611 +//line sql.y:1596 { yyVAL.ReferenceAction = SetDefault } - case 265: + case 260: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1615 +//line sql.y:1600 { yyVAL.ReferenceAction = SetNull } - case 266: + case 261: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1620 +//line sql.y:1605 { yyVAL.str = "" } - case 267: + case 262: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1624 +//line sql.y:1609 { yyVAL.str = string(yyDollar[1].bytes) } - case 268: + case 263: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1628 +//line sql.y:1613 { yyVAL.str = string(yyDollar[1].bytes) } - case 269: + case 264: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1633 +//line sql.y:1618 { yyVAL.boolean = true } - case 270: + case 265: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1637 +//line sql.y:1622 { yyVAL.boolean = true } - case 271: + case 266: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1641 +//line sql.y:1626 { yyVAL.boolean = false } - case 272: + case 267: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1646 +//line sql.y:1631 { yyVAL.tableOptions = nil } - case 273: + case 268: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1650 +//line sql.y:1635 { yyVAL.tableOptions = yyDollar[1].tableOptions } - case 274: + case 269: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1656 +//line sql.y:1641 { yyVAL.tableOptions = TableOptions{yyDollar[1].tableOption} } - case 275: + case 270: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1660 +//line sql.y:1645 { yyVAL.tableOptions = append(yyDollar[1].tableOptions, yyDollar[3].tableOption) } - case 276: + case 271: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1664 +//line sql.y:1649 { yyVAL.tableOptions = append(yyDollar[1].tableOptions, yyDollar[2].tableOption) } - case 277: + case 272: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1670 +//line sql.y:1655 { yyVAL.tableOptions = TableOptions{yyDollar[1].tableOption} } - case 278: + case 273: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1674 +//line sql.y:1659 { yyVAL.tableOptions = append(yyDollar[1].tableOptions, yyDollar[2].tableOption) } - case 279: + case 274: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1680 +//line sql.y:1665 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 280: + case 275: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1684 +//line sql.y:1669 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 281: + case 276: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1688 +//line sql.y:1673 { yyVAL.tableOption = &TableOption{Name: (string(yyDollar[2].bytes)), String: yyDollar[4].str} } - case 282: + case 277: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1692 +//line sql.y:1677 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[2].bytes), String: yyDollar[4].str} } - case 283: + case 278: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1696 +//line sql.y:1681 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 284: + case 279: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1700 +//line sql.y:1685 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)} } - case 285: + case 280: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1704 +//line sql.y:1689 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)} } - case 286: + case 281: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1708 +//line sql.y:1693 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)} } - case 287: + case 282: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1712 +//line sql.y:1697 { yyVAL.tableOption = &TableOption{Name: (string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes)), Value: NewStrLiteral(yyDollar[4].bytes)} } - case 288: + case 283: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1716 +//line sql.y:1701 { yyVAL.tableOption = &TableOption{Name: (string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes)), Value: NewStrLiteral(yyDollar[4].bytes)} } - case 289: + case 284: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1720 +//line sql.y:1705 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 290: + case 285: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1724 +//line sql.y:1709 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)} } - case 291: + case 286: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1728 +//line sql.y:1713 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: yyDollar[3].colIdent.String()} } - case 292: + case 287: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1732 +//line sql.y:1717 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)} } - case 293: + case 288: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1736 +//line sql.y:1721 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 294: + case 289: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1740 +//line sql.y:1725 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 295: + case 290: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1744 +//line sql.y:1729 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 296: + case 291: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1748 +//line sql.y:1733 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 297: + case 292: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1752 +//line sql.y:1737 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 298: + case 293: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1756 +//line sql.y:1741 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 299: + case 294: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1760 +//line sql.y:1745 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)} } - case 300: + case 295: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1764 +//line sql.y:1749 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 301: + case 296: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1768 +//line sql.y:1753 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 302: + case 297: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1772 +//line sql.y:1757 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 303: + case 298: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1776 +//line sql.y:1761 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 304: + case 299: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1780 +//line sql.y:1765 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 305: + case 300: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1784 +//line sql.y:1769 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 306: + case 301: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1788 +//line sql.y:1773 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: (yyDollar[3].colIdent.String() + yyDollar[4].str)} } - case 307: + case 302: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1792 +//line sql.y:1777 { yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Tables: yyDollar[4].tableNames} } - case 308: + case 303: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1797 +//line sql.y:1782 { yyVAL.str = "" } - case 309: + case 304: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1801 +//line sql.y:1786 { yyVAL.str = " " + string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } - case 310: + case 305: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1805 +//line sql.y:1790 { yyVAL.str = " " + string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } - case 320: + case 315: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1824 +//line sql.y:1809 { yyVAL.str = yyDollar[1].colIdent.String() } - case 321: + case 316: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1828 +//line sql.y:1813 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'" } - case 322: + case 317: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1832 +//line sql.y:1817 { yyVAL.str = string(yyDollar[1].bytes) } - case 323: + case 318: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1837 +//line sql.y:1822 { yyVAL.bytes = []byte("") } - case 325: + case 320: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1843 +//line sql.y:1828 { yyVAL.colName = nil } - case 326: + case 321: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1847 +//line sql.y:1832 { yyVAL.colName = yyDollar[2].colName } - case 327: + case 322: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1852 +//line sql.y:1837 { yyVAL.colName = nil } - case 328: + case 323: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1856 +//line sql.y:1841 { yyVAL.colName = yyDollar[2].colName } - case 329: + case 324: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1861 +//line sql.y:1846 { yyVAL.alterOptions = nil } - case 330: + case 325: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1865 +//line sql.y:1850 { yyVAL.alterOptions = yyDollar[1].alterOptions } - case 331: + case 326: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1869 +//line sql.y:1854 { yyVAL.alterOptions = append(yyDollar[1].alterOptions, &OrderByOption{Cols: yyDollar[5].columns}) } - case 332: + case 327: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1873 +//line sql.y:1858 { yyVAL.alterOptions = yyDollar[1].alterOptions } - case 333: + case 328: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1877 +//line sql.y:1862 { yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOptions...) } - case 334: + case 329: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1881 +//line sql.y:1866 { yyVAL.alterOptions = append(append(yyDollar[1].alterOptions, yyDollar[3].alterOptions...), &OrderByOption{Cols: yyDollar[7].columns}) } - case 335: + case 330: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1887 +//line sql.y:1872 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } - case 336: + case 331: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1891 +//line sql.y:1876 { yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOption) } - case 337: + case 332: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1895 +//line sql.y:1880 { yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOption) } - case 338: + case 333: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1901 +//line sql.y:1886 { yyVAL.alterOption = yyDollar[1].tableOptions } - case 339: + case 334: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1905 +//line sql.y:1890 { yyVAL.alterOption = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinition} } - case 340: + case 335: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1909 +//line sql.y:1894 { yyVAL.alterOption = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinition} } - case 341: + case 336: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1913 +//line sql.y:1898 { yyVAL.alterOption = &AddIndexDefinition{IndexDefinition: yyDollar[2].indexDefinition} } - case 342: + case 337: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1917 +//line sql.y:1902 { yyVAL.alterOption = &AddColumns{Columns: yyDollar[4].columnDefinitions} } - case 343: + case 338: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1921 +//line sql.y:1906 { yyVAL.alterOption = &AddColumns{Columns: []*ColumnDefinition{yyDollar[3].columnDefinition}, First: yyDollar[4].colName, After: yyDollar[5].colName} } - case 344: + case 339: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1925 +//line sql.y:1910 { yyVAL.alterOption = &AlterColumn{Column: yyDollar[3].colName, DropDefault: true} } - case 345: + case 340: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1929 +//line sql.y:1914 { yyVAL.alterOption = &AlterColumn{Column: yyDollar[3].colName, DropDefault: false, DefaultVal: yyDollar[6].expr} } - case 346: + case 341: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1933 +//line sql.y:1918 { yyVAL.alterOption = &ChangeColumn{OldColumn: yyDollar[3].colName, NewColDefinition: yyDollar[4].columnDefinition, First: yyDollar[5].colName, After: yyDollar[6].colName} } - case 347: + case 342: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1937 +//line sql.y:1922 { yyVAL.alterOption = &ModifyColumn{NewColDefinition: yyDollar[3].columnDefinition, First: yyDollar[4].colName, After: yyDollar[5].colName} } - case 348: + case 343: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1941 +//line sql.y:1926 { yyVAL.alterOption = &AlterCharset{CharacterSet: yyDollar[4].str, Collate: yyDollar[5].str} } - case 349: + case 344: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1945 +//line sql.y:1930 { yyVAL.alterOption = &KeyState{Enable: false} } - case 350: + case 345: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1949 +//line sql.y:1934 { yyVAL.alterOption = &KeyState{Enable: true} } - case 351: + case 346: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1953 +//line sql.y:1938 { yyVAL.alterOption = &TablespaceOperation{Import: false} } - case 352: + case 347: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1957 +//line sql.y:1942 { yyVAL.alterOption = &TablespaceOperation{Import: true} } - case 353: + case 348: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1961 +//line sql.y:1946 { yyVAL.alterOption = &DropColumn{Name: yyDollar[3].colName} } - case 354: + case 349: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1965 +//line sql.y:1950 { yyVAL.alterOption = &DropKey{Type: NormalKeyType, Name: yyDollar[3].colIdent.String()} } - case 355: + case 350: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1969 +//line sql.y:1954 { yyVAL.alterOption = &DropKey{Type: PrimaryKeyType} } - case 356: + case 351: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1973 +//line sql.y:1958 { yyVAL.alterOption = &DropKey{Type: ForeignKeyType, Name: yyDollar[4].colIdent.String()} } - case 357: + case 352: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1977 +//line sql.y:1962 { yyVAL.alterOption = &Force{} } - case 358: + case 353: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1981 +//line sql.y:1966 { yyVAL.alterOption = &RenameTableName{Table: yyDollar[3].tableName} } - case 359: + case 354: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1985 +//line sql.y:1970 { yyVAL.alterOption = &RenameIndex{OldName: yyDollar[3].colIdent.String(), NewName: yyDollar[5].colIdent.String()} } - case 360: + case 355: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1991 +//line sql.y:1976 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } - case 361: + case 356: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1995 +//line sql.y:1980 { yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOption) } - case 362: + case 357: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2001 +//line sql.y:1986 { yyVAL.alterOption = AlgorithmValue(string(yyDollar[3].bytes)) } - case 363: + case 358: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2005 +//line sql.y:1990 { yyVAL.alterOption = AlgorithmValue(string(yyDollar[3].bytes)) } - case 364: + case 359: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2009 +//line sql.y:1994 { yyVAL.alterOption = AlgorithmValue(string(yyDollar[3].bytes)) } - case 365: + case 360: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2013 +//line sql.y:1998 { yyVAL.alterOption = &LockOption{Type: DefaultType} } - case 366: + case 361: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2017 +//line sql.y:2002 { yyVAL.alterOption = &LockOption{Type: NoneType} } - case 367: + case 362: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2021 +//line sql.y:2006 { yyVAL.alterOption = &LockOption{Type: SharedType} } - case 368: + case 363: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2025 +//line sql.y:2010 { yyVAL.alterOption = &LockOption{Type: ExclusiveType} } - case 369: + case 364: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2029 +//line sql.y:2014 { yyVAL.alterOption = &Validation{With: true} } - case 370: + case 365: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2033 +//line sql.y:2018 { yyVAL.alterOption = &Validation{With: false} } - case 371: + case 366: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2039 +//line sql.y:2024 { yyDollar[1].alterTable.FullyParsed = true yyDollar[1].alterTable.AlterOptions = yyDollar[2].alterOptions yyVAL.statement = yyDollar[1].alterTable } - case 372: + case 367: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2045 +//line sql.y:2030 { yyDollar[1].alterTable.FullyParsed = true yyDollar[1].alterTable.AlterOptions = yyDollar[2].alterOptions yyDollar[1].alterTable.PartitionSpec = &PartitionSpec{Action: RemoveAction} yyVAL.statement = yyDollar[1].alterTable } - case 373: + case 368: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2052 +//line sql.y:2037 { yyDollar[1].alterTable.FullyParsed = true yyDollar[1].alterTable.AlterOptions = yyDollar[2].alterOptions yyDollar[1].alterTable.PartitionSpec = yyDollar[4].partSpec yyVAL.statement = yyDollar[1].alterTable } - case 374: + case 369: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2059 +//line sql.y:2044 { yyDollar[1].alterTable.FullyParsed = true yyDollar[1].alterTable.PartitionSpec = yyDollar[2].partSpec yyVAL.statement = yyDollar[1].alterTable } - case 375: + case 370: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:2065 +//line sql.y:2050 { yyVAL.statement = &AlterView{ViewName: yyDollar[6].tableName.ToViewName(), Algorithm: yyDollar[2].str, Definer: yyDollar[3].str, Security: yyDollar[4].str, Columns: yyDollar[7].columns, Select: yyDollar[9].selStmt, CheckOption: yyDollar[10].str} } - case 376: + case 371: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2069 +//line sql.y:2054 { yyDollar[1].alterDatabase.FullyParsed = true yyDollar[1].alterDatabase.DBName = yyDollar[2].colIdent.String() yyDollar[1].alterDatabase.AlterOptions = yyDollar[3].collateAndCharsets yyVAL.statement = yyDollar[1].alterDatabase } - case 377: + case 372: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2076 +//line sql.y:2061 { yyDollar[1].alterDatabase.FullyParsed = true yyDollar[1].alterDatabase.DBName = yyDollar[2].colIdent.String() yyDollar[1].alterDatabase.UpdateDataDirectory = true yyVAL.statement = yyDollar[1].alterDatabase } - case 378: + case 373: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2083 +//line sql.y:2068 { yyVAL.statement = &AlterVschema{ Action: CreateVindexDDLAction, @@ -7472,9 +7423,9 @@ yydefault: }, } } - case 379: + case 374: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2095 +//line sql.y:2080 { yyVAL.statement = &AlterVschema{ Action: DropVindexDDLAction, @@ -7484,21 +7435,21 @@ yydefault: }, } } - case 380: + case 375: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2105 +//line sql.y:2090 { yyVAL.statement = &AlterVschema{Action: AddVschemaTableDDLAction, Table: yyDollar[5].tableName} } - case 381: + case 376: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2109 +//line sql.y:2094 { yyVAL.statement = &AlterVschema{Action: DropVschemaTableDDLAction, Table: yyDollar[5].tableName} } - case 382: + case 377: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:2113 +//line sql.y:2098 { yyVAL.statement = &AlterVschema{ Action: AddColVindexDDLAction, @@ -7511,9 +7462,9 @@ yydefault: VindexCols: yyDollar[9].columns, } } - case 383: + case 378: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2126 +//line sql.y:2111 { yyVAL.statement = &AlterVschema{ Action: DropColVindexDDLAction, @@ -7523,15 +7474,15 @@ yydefault: }, } } - case 384: + case 379: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2136 +//line sql.y:2121 { yyVAL.statement = &AlterVschema{Action: AddSequenceDDLAction, Table: yyDollar[5].tableName} } - case 385: + case 380: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2140 +//line sql.y:2125 { yyVAL.statement = &AlterVschema{ Action: AddAutoIncDDLAction, @@ -7542,207 +7493,207 @@ yydefault: }, } } - case 386: + case 381: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2153 +//line sql.y:2138 { yyVAL.partSpec = &PartitionSpec{Action: AddAction, Definitions: []*PartitionDefinition{yyDollar[4].partDef}} } - case 387: + case 382: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2157 +//line sql.y:2142 { yyVAL.partSpec = &PartitionSpec{Action: DropAction, Names: yyDollar[3].partitions} } - case 388: + case 383: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2161 +//line sql.y:2146 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeAction, Names: yyDollar[3].partitions, Definitions: yyDollar[6].partDefs} } - case 389: + case 384: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2165 +//line sql.y:2150 { yyVAL.partSpec = &PartitionSpec{Action: DiscardAction, Names: yyDollar[3].partitions} } - case 390: + case 385: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2169 +//line sql.y:2154 { yyVAL.partSpec = &PartitionSpec{Action: DiscardAction, IsAll: true} } - case 391: + case 386: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2173 +//line sql.y:2158 { yyVAL.partSpec = &PartitionSpec{Action: ImportAction, Names: yyDollar[3].partitions} } - case 392: + case 387: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2177 +//line sql.y:2162 { yyVAL.partSpec = &PartitionSpec{Action: ImportAction, IsAll: true} } - case 393: + case 388: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2181 +//line sql.y:2166 { yyVAL.partSpec = &PartitionSpec{Action: TruncateAction, Names: yyDollar[3].partitions} } - case 394: + case 389: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2185 +//line sql.y:2170 { yyVAL.partSpec = &PartitionSpec{Action: TruncateAction, IsAll: true} } - case 395: + case 390: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2189 +//line sql.y:2174 { yyVAL.partSpec = &PartitionSpec{Action: CoalesceAction, Number: NewIntLiteral(yyDollar[3].bytes)} } - case 396: + case 391: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2193 +//line sql.y:2178 { yyVAL.partSpec = &PartitionSpec{Action: ExchangeAction, Names: Partitions{yyDollar[3].colIdent}, TableName: yyDollar[6].tableName, WithoutValidation: yyDollar[7].boolean} } - case 397: + case 392: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2197 +//line sql.y:2182 { yyVAL.partSpec = &PartitionSpec{Action: AnalyzeAction, Names: yyDollar[3].partitions} } - case 398: + case 393: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2201 +//line sql.y:2186 { yyVAL.partSpec = &PartitionSpec{Action: AnalyzeAction, IsAll: true} } - case 399: + case 394: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2205 +//line sql.y:2190 { yyVAL.partSpec = &PartitionSpec{Action: CheckAction, Names: yyDollar[3].partitions} } - case 400: + case 395: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2209 +//line sql.y:2194 { yyVAL.partSpec = &PartitionSpec{Action: CheckAction, IsAll: true} } - case 401: + case 396: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2213 +//line sql.y:2198 { yyVAL.partSpec = &PartitionSpec{Action: OptimizeAction, Names: yyDollar[3].partitions} } - case 402: + case 397: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2217 +//line sql.y:2202 { yyVAL.partSpec = &PartitionSpec{Action: OptimizeAction, IsAll: true} } - case 403: + case 398: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2221 +//line sql.y:2206 { yyVAL.partSpec = &PartitionSpec{Action: RebuildAction, Names: yyDollar[3].partitions} } - case 404: + case 399: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2225 +//line sql.y:2210 { yyVAL.partSpec = &PartitionSpec{Action: RebuildAction, IsAll: true} } - case 405: + case 400: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2229 +//line sql.y:2214 { yyVAL.partSpec = &PartitionSpec{Action: RepairAction, Names: yyDollar[3].partitions} } - case 406: + case 401: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2233 +//line sql.y:2218 { yyVAL.partSpec = &PartitionSpec{Action: RepairAction, IsAll: true} } - case 407: + case 402: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2237 +//line sql.y:2222 { yyVAL.partSpec = &PartitionSpec{Action: UpgradeAction} } - case 408: + case 403: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2242 +//line sql.y:2227 { yyVAL.boolean = false } - case 409: + case 404: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2246 +//line sql.y:2231 { yyVAL.boolean = false } - case 410: + case 405: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2250 +//line sql.y:2235 { yyVAL.boolean = true } - case 411: + case 406: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2257 +//line sql.y:2242 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } - case 412: + case 407: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2261 +//line sql.y:2246 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } - case 413: + case 408: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2267 +//line sql.y:2252 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } - case 414: + case 409: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2271 +//line sql.y:2256 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } - case 415: + case 410: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2277 +//line sql.y:2262 { yyVAL.statement = &RenameTable{TablePairs: yyDollar[3].renameTablePairs} } - case 416: + case 411: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2283 +//line sql.y:2268 { yyVAL.renameTablePairs = []*RenameTablePair{{FromTable: yyDollar[1].tableName, ToTable: yyDollar[3].tableName}} } - case 417: + case 412: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2287 +//line sql.y:2272 { yyVAL.renameTablePairs = append(yyDollar[1].renameTablePairs, &RenameTablePair{FromTable: yyDollar[3].tableName, ToTable: yyDollar[5].tableName}) } - case 418: - yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2293 + case 413: + yyDollar = yyS[yypt-6 : yypt+1] +//line sql.y:2278 { - yyVAL.statement = &DropTable{FromTables: yyDollar[4].tableNames, IfExists: yyDollar[3].boolean} + yyVAL.statement = &DropTable{FromTables: yyDollar[5].tableNames, IfExists: yyDollar[4].boolean, Temp: yyDollar[2].boolean} } - case 419: + case 414: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2297 +//line sql.y:2282 { // Change this to an alter statement if yyDollar[3].colIdent.Lowered() == "primary" { @@ -7751,1281 +7702,1275 @@ yydefault: yyVAL.statement = &AlterTable{Table: yyDollar[5].tableName, AlterOptions: append([]AlterOption{&DropKey{Type: NormalKeyType, Name: yyDollar[3].colIdent.String()}}, yyDollar[6].alterOptions...)} } } - case 420: + case 415: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2306 +//line sql.y:2291 { yyVAL.statement = &DropView{FromTables: yyDollar[4].tableNames, IfExists: yyDollar[3].boolean} } - case 421: + case 416: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2310 +//line sql.y:2295 { yyVAL.statement = &DropDatabase{DBName: string(yyDollar[4].colIdent.String()), IfExists: yyDollar[3].boolean} } - case 422: + case 417: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2316 +//line sql.y:2301 { yyVAL.statement = &TruncateTable{Table: yyDollar[3].tableName} } - case 423: + case 418: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2320 +//line sql.y:2305 { yyVAL.statement = &TruncateTable{Table: yyDollar[2].tableName} } - case 424: + case 419: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2325 +//line sql.y:2310 { yyVAL.statement = &OtherRead{} } - case 425: + case 420: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2331 +//line sql.y:2316 { yyVAL.statement = &Show{&ShowBasic{Command: Charset, Filter: yyDollar[3].showFilter}} } - case 426: + case 421: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2335 +//line sql.y:2320 { yyVAL.statement = &Show{&ShowBasic{Command: Collation, Filter: yyDollar[3].showFilter}} } - case 427: + case 422: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2339 +//line sql.y:2324 { yyVAL.statement = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilter}} } - case 428: + case 423: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2343 +//line sql.y:2328 { yyVAL.statement = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilter}} } - case 429: + case 424: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2347 +//line sql.y:2332 { yyVAL.statement = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilter}} } - case 430: + case 425: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2351 +//line sql.y:2336 { yyVAL.statement = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilter}} } - case 431: + case 426: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2355 +//line sql.y:2340 { yyVAL.statement = &Show{&ShowBasic{Command: Function, Filter: yyDollar[4].showFilter}} } - case 432: + case 427: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2359 +//line sql.y:2344 { yyVAL.statement = &Show{&ShowBasic{Command: OpenTable, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} } - case 433: + case 428: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2363 +//line sql.y:2348 { yyVAL.statement = &Show{&ShowBasic{Command: Privilege}} } - case 434: + case 429: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2367 +//line sql.y:2352 { yyVAL.statement = &Show{&ShowBasic{Command: Procedure, Filter: yyDollar[4].showFilter}} } - case 435: + case 430: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2371 +//line sql.y:2356 { yyVAL.statement = &Show{&ShowBasic{Command: StatusSession, Filter: yyDollar[4].showFilter}} } - case 436: + case 431: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2375 +//line sql.y:2360 { yyVAL.statement = &Show{&ShowBasic{Command: StatusGlobal, Filter: yyDollar[4].showFilter}} } - case 437: + case 432: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2379 +//line sql.y:2364 { yyVAL.statement = &Show{&ShowBasic{Command: VariableSession, Filter: yyDollar[4].showFilter}} } - case 438: + case 433: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2383 +//line sql.y:2368 { yyVAL.statement = &Show{&ShowBasic{Command: VariableGlobal, Filter: yyDollar[4].showFilter}} } - case 439: + case 434: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2387 +//line sql.y:2372 { yyVAL.statement = &Show{&ShowBasic{Command: TableStatus, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} } - case 440: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2391 - { - yyVAL.statement = &Show{&ShowBasic{Command: Table, DbName: yyDollar[3].str, Filter: yyDollar[4].showFilter}} - } - case 441: + case 435: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2395 +//line sql.y:2376 { - yyVAL.statement = &Show{&ShowBasic{Command: TableFull, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Table, Full: yyDollar[2].boolean, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} } - case 442: + case 436: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2399 +//line sql.y:2380 { yyVAL.statement = &Show{&ShowBasic{Command: Trigger, DbName: yyDollar[3].str, Filter: yyDollar[4].showFilter}} } - case 443: + case 437: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2403 +//line sql.y:2384 { - yyVAL.statement = &Show{&ShowColumns{Full: yyDollar[2].str, Table: yyDollar[5].tableName, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}} + yyVAL.statement = &Show{&ShowColumns{Full: yyDollar[2].boolean, Table: yyDollar[5].tableName, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}} } - case 444: + case 438: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2407 +//line sql.y:2388 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } - case 445: + case 439: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2411 +//line sql.y:2392 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 446: + case 440: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2415 +//line sql.y:2396 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 447: + case 441: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2419 +//line sql.y:2400 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } - case 448: + case 442: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2424 +//line sql.y:2405 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } - case 449: + case 443: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2428 +//line sql.y:2409 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 450: + case 444: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2432 +//line sql.y:2413 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } - case 451: + case 445: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2436 +//line sql.y:2417 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 452: + case 446: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2440 +//line sql.y:2421 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 453: + case 447: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2444 +//line sql.y:2425 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 454: + case 448: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2448 +//line sql.y:2429 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } - case 455: + case 449: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2452 +//line sql.y:2433 { showTablesOpt := &ShowTablesOpt{DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{&ShowLegacy{Extended: string(yyDollar[2].str), Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName, Scope: ImplicitScope}} } - case 456: + case 450: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2457 +//line sql.y:2438 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 457: + case 451: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2461 +//line sql.y:2442 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } - case 458: + case 452: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2465 +//line sql.y:2446 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 459: + case 453: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2469 +//line sql.y:2450 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{&ShowLegacy{Scope: VitessMetadataScope, Type: string(yyDollar[3].bytes), ShowTablesOpt: showTablesOpt}} } - case 460: + case 454: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2474 +//line sql.y:2455 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 461: + case 455: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2478 +//line sql.y:2459 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 462: + case 456: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2482 +//line sql.y:2463 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), OnTable: yyDollar[5].tableName, Scope: ImplicitScope}} } - case 463: + case 457: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2486 +//line sql.y:2467 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 464: + case 458: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2491 +//line sql.y:2472 { // This should probably be a different type (ShowVitessTopoOpt), but // just getting the thing working for now showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: yyDollar[2].str, ShowTablesOpt: showTablesOpt}} } - case 465: + case 459: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2505 +//line sql.y:2486 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].colIdent.String()), Scope: ImplicitScope}} } - case 466: + case 460: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2509 +//line sql.y:2490 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 467: + case 461: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2513 +//line sql.y:2494 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 468: + case 462: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2519 +//line sql.y:2500 { yyVAL.str = string(yyDollar[1].bytes) } - case 469: + case 463: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2523 +//line sql.y:2504 { yyVAL.str = string(yyDollar[1].bytes) } - case 470: + case 464: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2529 +//line sql.y:2510 { yyVAL.str = "" } - case 471: + case 465: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2533 +//line sql.y:2514 { yyVAL.str = "extended " } - case 472: + case 466: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2539 +//line sql.y:2520 { - yyVAL.str = "" + yyVAL.boolean = false } - case 473: + case 467: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2543 +//line sql.y:2524 { - yyVAL.str = "full " + yyVAL.boolean = true } - case 474: + case 468: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2549 +//line sql.y:2530 { yyVAL.str = string(yyDollar[1].bytes) } - case 475: + case 469: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2553 +//line sql.y:2534 { yyVAL.str = string(yyDollar[1].bytes) } - case 476: + case 470: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2559 +//line sql.y:2540 { yyVAL.str = "" } - case 477: + case 471: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2563 +//line sql.y:2544 { yyVAL.str = yyDollar[2].tableIdent.v } - case 478: + case 472: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2567 +//line sql.y:2548 { yyVAL.str = yyDollar[2].tableIdent.v } - case 479: + case 473: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2573 +//line sql.y:2554 { yyVAL.showFilter = nil } - case 480: + case 474: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2577 +//line sql.y:2558 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 481: + case 475: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2581 +//line sql.y:2562 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } - case 482: + case 476: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2587 +//line sql.y:2568 { yyVAL.showFilter = nil } - case 483: + case 477: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2591 +//line sql.y:2572 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 484: + case 478: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2597 +//line sql.y:2578 { yyVAL.empty = struct{}{} } - case 485: + case 479: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2601 +//line sql.y:2582 { yyVAL.empty = struct{}{} } - case 486: + case 480: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2605 +//line sql.y:2586 { yyVAL.empty = struct{}{} } - case 487: + case 481: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2611 +//line sql.y:2592 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } - case 488: + case 482: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2615 +//line sql.y:2596 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } - case 489: + case 483: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2621 +//line sql.y:2602 { yyVAL.statement = &Begin{} } - case 490: + case 484: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2625 +//line sql.y:2606 { yyVAL.statement = &Begin{} } - case 491: + case 485: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2631 +//line sql.y:2612 { yyVAL.statement = &Commit{} } - case 492: + case 486: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2637 +//line sql.y:2618 { yyVAL.statement = &Rollback{} } - case 493: + case 487: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2641 +//line sql.y:2622 { yyVAL.statement = &SRollback{Name: yyDollar[5].colIdent} } - case 494: + case 488: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2646 +//line sql.y:2627 { yyVAL.empty = struct{}{} } - case 495: + case 489: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2648 +//line sql.y:2629 { yyVAL.empty = struct{}{} } - case 496: + case 490: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2651 +//line sql.y:2632 { yyVAL.empty = struct{}{} } - case 497: + case 491: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2653 +//line sql.y:2634 { yyVAL.empty = struct{}{} } - case 498: + case 492: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2658 +//line sql.y:2639 { yyVAL.statement = &Savepoint{Name: yyDollar[2].colIdent} } - case 499: + case 493: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2664 +//line sql.y:2645 { yyVAL.statement = &Release{Name: yyDollar[3].colIdent} } - case 500: + case 494: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2669 +//line sql.y:2650 { yyVAL.explainType = EmptyType } - case 501: + case 495: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2673 +//line sql.y:2654 { yyVAL.explainType = JSONType } - case 502: + case 496: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2677 +//line sql.y:2658 { yyVAL.explainType = TreeType } - case 503: + case 497: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2681 +//line sql.y:2662 { yyVAL.explainType = VitessType } - case 504: + case 498: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2685 +//line sql.y:2666 { yyVAL.explainType = TraditionalType } - case 505: + case 499: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2689 +//line sql.y:2670 { yyVAL.explainType = AnalyzeType } - case 506: + case 500: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2695 +//line sql.y:2676 { yyVAL.bytes = yyDollar[1].bytes } - case 507: + case 501: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2699 +//line sql.y:2680 { yyVAL.bytes = yyDollar[1].bytes } - case 508: + case 502: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2703 +//line sql.y:2684 { yyVAL.bytes = yyDollar[1].bytes } - case 509: + case 503: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2709 +//line sql.y:2690 { yyVAL.statement = yyDollar[1].selStmt } - case 510: + case 504: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2713 +//line sql.y:2694 { yyVAL.statement = yyDollar[1].statement } - case 511: + case 505: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2717 +//line sql.y:2698 { yyVAL.statement = yyDollar[1].statement } - case 512: + case 506: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2721 +//line sql.y:2702 { yyVAL.statement = yyDollar[1].statement } - case 513: + case 507: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2726 +//line sql.y:2707 { yyVAL.str = "" } - case 514: + case 508: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2730 +//line sql.y:2711 { yyVAL.str = yyDollar[1].colIdent.val } - case 515: + case 509: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2734 +//line sql.y:2715 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'" } - case 516: + case 510: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2740 +//line sql.y:2721 { yyVAL.statement = &ExplainTab{Table: yyDollar[2].tableName, Wild: yyDollar[3].str} } - case 517: + case 511: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2744 +//line sql.y:2725 { yyVAL.statement = &ExplainStmt{Type: yyDollar[2].explainType, Statement: yyDollar[3].statement} } - case 518: + case 512: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2750 +//line sql.y:2731 { yyVAL.statement = &OtherAdmin{} } - case 519: + case 513: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2754 +//line sql.y:2735 { yyVAL.statement = &OtherAdmin{} } - case 520: + case 514: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2760 +//line sql.y:2741 { yyVAL.statement = &LockTables{Tables: yyDollar[3].tableAndLockTypes} } - case 521: + case 515: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2766 +//line sql.y:2747 { yyVAL.tableAndLockTypes = TableAndLockTypes{yyDollar[1].tableAndLockType} } - case 522: + case 516: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2770 +//line sql.y:2751 { yyVAL.tableAndLockTypes = append(yyDollar[1].tableAndLockTypes, yyDollar[3].tableAndLockType) } - case 523: + case 517: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2776 +//line sql.y:2757 { yyVAL.tableAndLockType = &TableAndLockType{Table: yyDollar[1].aliasedTableName, Lock: yyDollar[2].lockType} } - case 524: + case 518: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2782 +//line sql.y:2763 { yyVAL.lockType = Read } - case 525: + case 519: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2786 +//line sql.y:2767 { yyVAL.lockType = ReadLocal } - case 526: + case 520: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2790 +//line sql.y:2771 { yyVAL.lockType = Write } - case 527: + case 521: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2794 +//line sql.y:2775 { yyVAL.lockType = LowPriorityWrite } - case 528: + case 522: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2800 +//line sql.y:2781 { yyVAL.statement = &UnlockTables{} } - case 529: + case 523: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2806 +//line sql.y:2787 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, FlushOptions: yyDollar[3].strs} } - case 530: + case 524: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2810 +//line sql.y:2791 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean} } - case 531: + case 525: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2814 +//line sql.y:2795 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, WithLock: true} } - case 532: + case 526: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2818 +//line sql.y:2799 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, TableNames: yyDollar[4].tableNames} } - case 533: + case 527: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2822 +//line sql.y:2803 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, TableNames: yyDollar[4].tableNames, WithLock: true} } - case 534: + case 528: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2826 +//line sql.y:2807 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, TableNames: yyDollar[4].tableNames, ForExport: true} } - case 535: + case 529: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2832 +//line sql.y:2813 { yyVAL.strs = []string{yyDollar[1].str} } - case 536: + case 530: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2836 +//line sql.y:2817 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[3].str) } - case 537: + case 531: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2842 +//line sql.y:2823 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } - case 538: + case 532: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2846 +//line sql.y:2827 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } - case 539: + case 533: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2850 +//line sql.y:2831 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } - case 540: + case 534: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2854 +//line sql.y:2835 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } - case 541: + case 535: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2858 +//line sql.y:2839 { yyVAL.str = string(yyDollar[1].bytes) } - case 542: + case 536: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2862 +//line sql.y:2843 { yyVAL.str = string(yyDollar[1].bytes) } - case 543: + case 537: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2866 +//line sql.y:2847 { yyVAL.str = string(yyDollar[1].bytes) } - case 544: + case 538: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2870 +//line sql.y:2851 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) + yyDollar[3].str } - case 545: + case 539: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2874 +//line sql.y:2855 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } - case 546: + case 540: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2878 +//line sql.y:2859 { yyVAL.str = string(yyDollar[1].bytes) } - case 547: + case 541: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2882 +//line sql.y:2863 { yyVAL.str = string(yyDollar[1].bytes) } - case 548: + case 542: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2886 +//line sql.y:2867 { yyVAL.str = string(yyDollar[1].bytes) } - case 549: + case 543: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2891 +//line sql.y:2872 { yyVAL.boolean = false } - case 550: + case 544: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2895 +//line sql.y:2876 { yyVAL.boolean = true } - case 551: + case 545: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2899 +//line sql.y:2880 { yyVAL.boolean = true } - case 552: + case 546: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2904 +//line sql.y:2885 { yyVAL.str = "" } - case 553: + case 547: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2908 +//line sql.y:2889 { yyVAL.str = " " + string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) + " " + yyDollar[3].colIdent.String() } - case 554: + case 548: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2913 +//line sql.y:2894 { setAllowComments(yylex, true) } - case 555: + case 549: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2917 +//line sql.y:2898 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 556: + case 550: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2923 +//line sql.y:2904 { yyVAL.bytes2 = nil } - case 557: + case 551: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2927 +//line sql.y:2908 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 558: + case 552: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2933 +//line sql.y:2914 { yyVAL.boolean = true } - case 559: + case 553: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2937 +//line sql.y:2918 { yyVAL.boolean = false } - case 560: + case 554: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2941 +//line sql.y:2922 { yyVAL.boolean = true } - case 561: + case 555: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2946 +//line sql.y:2927 { yyVAL.str = "" } - case 562: + case 556: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2950 +//line sql.y:2931 { yyVAL.str = SQLNoCacheStr } - case 563: + case 557: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2954 +//line sql.y:2935 { yyVAL.str = SQLCacheStr } - case 564: + case 558: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2959 +//line sql.y:2940 { yyVAL.boolean = false } - case 565: + case 559: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2963 +//line sql.y:2944 { yyVAL.boolean = true } - case 566: + case 560: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2967 +//line sql.y:2948 { yyVAL.boolean = true } - case 567: + case 561: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2972 +//line sql.y:2953 { yyVAL.selectExprs = nil } - case 568: + case 562: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2976 +//line sql.y:2957 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 569: + case 563: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2981 +//line sql.y:2962 { yyVAL.strs = nil } - case 570: + case 564: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2985 +//line sql.y:2966 { yyVAL.strs = []string{yyDollar[1].str} } - case 571: + case 565: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2989 +//line sql.y:2970 { // TODO: This is a hack since I couldn't get it to work in a nicer way. I got 'conflicts: 8 shift/reduce' yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str} } - case 572: + case 566: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2993 +//line sql.y:2974 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } - case 573: + case 567: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2997 +//line sql.y:2978 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } - case 574: + case 568: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3003 +//line sql.y:2984 { yyVAL.str = SQLNoCacheStr } - case 575: + case 569: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3007 +//line sql.y:2988 { yyVAL.str = SQLCacheStr } - case 576: + case 570: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3011 +//line sql.y:2992 { yyVAL.str = DistinctStr } - case 577: + case 571: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3015 +//line sql.y:2996 { yyVAL.str = DistinctStr } - case 578: + case 572: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3019 +//line sql.y:3000 { yyVAL.str = StraightJoinHint } - case 579: + case 573: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3023 +//line sql.y:3004 { yyVAL.str = SQLCalcFoundRowsStr } - case 580: + case 574: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3029 +//line sql.y:3010 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 581: + case 575: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3033 +//line sql.y:3014 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 582: + case 576: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3039 +//line sql.y:3020 { yyVAL.selectExpr = &StarExpr{} } - case 583: + case 577: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3043 +//line sql.y:3024 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 584: + case 578: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3047 +//line sql.y:3028 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 585: + case 579: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3051 +//line sql.y:3032 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 586: + case 580: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3056 +//line sql.y:3037 { yyVAL.colIdent = ColIdent{} } - case 587: + case 581: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3060 +//line sql.y:3041 { yyVAL.colIdent = yyDollar[1].colIdent } - case 588: + case 582: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3064 +//line sql.y:3045 { yyVAL.colIdent = yyDollar[2].colIdent } - case 590: + case 584: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3071 +//line sql.y:3052 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 591: + case 585: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3076 +//line sql.y:3057 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 592: + case 586: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3080 +//line sql.y:3061 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 593: + case 587: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3086 +//line sql.y:3067 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 594: + case 588: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3090 +//line sql.y:3071 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 597: + case 591: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3100 +//line sql.y:3081 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 598: + case 592: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3104 +//line sql.y:3085 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].derivedTable, As: yyDollar[3].tableIdent} } - case 599: + case 593: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3108 +//line sql.y:3089 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 600: + case 594: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3114 +//line sql.y:3095 { yyVAL.derivedTable = &DerivedTable{yyDollar[2].selStmt} } - case 601: + case 595: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3120 +//line sql.y:3101 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 602: + case 596: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3124 +//line sql.y:3105 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 603: + case 597: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3129 +//line sql.y:3110 { yyVAL.columns = nil } - case 604: + case 598: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3133 +//line sql.y:3114 { yyVAL.columns = yyDollar[2].columns } - case 605: + case 599: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3139 +//line sql.y:3120 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 606: + case 600: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3143 +//line sql.y:3124 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 607: + case 601: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3149 +//line sql.y:3130 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 608: + case 602: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3153 +//line sql.y:3134 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 609: + case 603: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3166 +//line sql.y:3147 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 610: + case 604: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3170 +//line sql.y:3151 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 611: + case 605: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3174 +//line sql.y:3155 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 612: + case 606: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3178 +//line sql.y:3159 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr} } - case 613: + case 607: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3184 +//line sql.y:3165 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 614: + case 608: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3186 +//line sql.y:3167 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 615: + case 609: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3190 +//line sql.y:3171 { yyVAL.joinCondition = JoinCondition{} } - case 616: + case 610: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3192 +//line sql.y:3173 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 617: + case 611: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3196 +//line sql.y:3177 { yyVAL.joinCondition = JoinCondition{} } - case 618: + case 612: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3198 +//line sql.y:3179 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 619: + case 613: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3201 +//line sql.y:3182 { yyVAL.empty = struct{}{} } - case 620: + case 614: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3203 +//line sql.y:3184 { yyVAL.empty = struct{}{} } - case 621: + case 615: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3206 +//line sql.y:3187 { yyVAL.tableIdent = NewTableIdent("") } - case 622: + case 616: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3210 +//line sql.y:3191 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 623: + case 617: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3214 +//line sql.y:3195 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 625: + case 619: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3221 +//line sql.y:3202 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 626: + case 620: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3227 +//line sql.y:3208 { yyVAL.joinType = NormalJoinType } - case 627: + case 621: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3231 +//line sql.y:3212 { yyVAL.joinType = NormalJoinType } - case 628: + case 622: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3235 +//line sql.y:3216 { yyVAL.joinType = NormalJoinType } - case 629: + case 623: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3241 +//line sql.y:3222 { yyVAL.joinType = StraightJoinType } - case 630: + case 624: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3247 +//line sql.y:3228 { yyVAL.joinType = LeftJoinType } - case 631: + case 625: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3251 +//line sql.y:3232 { yyVAL.joinType = LeftJoinType } - case 632: + case 626: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3255 +//line sql.y:3236 { yyVAL.joinType = RightJoinType } - case 633: + case 627: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3259 +//line sql.y:3240 { yyVAL.joinType = RightJoinType } - case 634: + case 628: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3265 +//line sql.y:3246 { yyVAL.joinType = NaturalJoinType } - case 635: + case 629: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3269 +//line sql.y:3250 { if yyDollar[2].joinType == LeftJoinType { yyVAL.joinType = NaturalLeftJoinType @@ -9033,489 +8978,489 @@ yydefault: yyVAL.joinType = NaturalRightJoinType } } - case 636: + case 630: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3279 +//line sql.y:3260 { yyVAL.tableName = yyDollar[2].tableName } - case 637: + case 631: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3283 +//line sql.y:3264 { yyVAL.tableName = yyDollar[1].tableName } - case 638: + case 632: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3289 +//line sql.y:3270 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 639: + case 633: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3293 +//line sql.y:3274 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 640: + case 634: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3299 +//line sql.y:3280 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 641: + case 635: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3304 +//line sql.y:3285 { yyVAL.indexHints = nil } - case 642: + case 636: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3308 +//line sql.y:3289 { yyVAL.indexHints = &IndexHints{Type: UseOp, Indexes: yyDollar[4].columns} } - case 643: + case 637: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3312 +//line sql.y:3293 { yyVAL.indexHints = &IndexHints{Type: UseOp} } - case 644: + case 638: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3316 +//line sql.y:3297 { yyVAL.indexHints = &IndexHints{Type: IgnoreOp, Indexes: yyDollar[4].columns} } - case 645: + case 639: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3320 +//line sql.y:3301 { yyVAL.indexHints = &IndexHints{Type: ForceOp, Indexes: yyDollar[4].columns} } - case 646: + case 640: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3325 +//line sql.y:3306 { yyVAL.expr = nil } - case 647: + case 641: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3329 +//line sql.y:3310 { yyVAL.expr = yyDollar[2].expr } - case 648: + case 642: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3335 +//line sql.y:3316 { yyVAL.expr = yyDollar[1].expr } - case 649: + case 643: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3339 +//line sql.y:3320 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 650: + case 644: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3343 +//line sql.y:3324 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 651: + case 645: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3347 +//line sql.y:3328 { yyVAL.expr = &XorExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 652: + case 646: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3351 +//line sql.y:3332 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 653: + case 647: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3355 +//line sql.y:3336 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].isExprOperator, Expr: yyDollar[1].expr} } - case 654: + case 648: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3359 +//line sql.y:3340 { yyVAL.expr = yyDollar[1].expr } - case 655: + case 649: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3363 +//line sql.y:3344 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 656: + case 650: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3369 +//line sql.y:3350 { yyVAL.str = "" } - case 657: + case 651: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3373 +//line sql.y:3354 { yyVAL.str = string(yyDollar[2].colIdent.String()) } - case 658: + case 652: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3379 +//line sql.y:3360 { yyVAL.boolVal = BoolVal(true) } - case 659: + case 653: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3383 +//line sql.y:3364 { yyVAL.boolVal = BoolVal(false) } - case 660: + case 654: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3389 +//line sql.y:3370 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].comparisonExprOperator, Right: yyDollar[3].expr} } - case 661: + case 655: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3393 +//line sql.y:3374 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InOp, Right: yyDollar[3].colTuple} } - case 662: + case 656: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3397 +//line sql.y:3378 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInOp, Right: yyDollar[4].colTuple} } - case 663: + case 657: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3401 +//line sql.y:3382 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeOp, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 664: + case 658: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3405 +//line sql.y:3386 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeOp, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 665: + case 659: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3409 +//line sql.y:3390 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpOp, Right: yyDollar[3].expr} } - case 666: + case 660: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3413 +//line sql.y:3394 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpOp, Right: yyDollar[4].expr} } - case 667: + case 661: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3417 +//line sql.y:3398 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenOp, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 668: + case 662: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3421 +//line sql.y:3402 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenOp, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 669: + case 663: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3425 +//line sql.y:3406 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 670: + case 664: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3431 +//line sql.y:3412 { yyVAL.isExprOperator = IsNullOp } - case 671: + case 665: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3435 +//line sql.y:3416 { yyVAL.isExprOperator = IsNotNullOp } - case 672: + case 666: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3439 +//line sql.y:3420 { yyVAL.isExprOperator = IsTrueOp } - case 673: + case 667: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3443 +//line sql.y:3424 { yyVAL.isExprOperator = IsNotTrueOp } - case 674: + case 668: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3447 +//line sql.y:3428 { yyVAL.isExprOperator = IsFalseOp } - case 675: + case 669: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3451 +//line sql.y:3432 { yyVAL.isExprOperator = IsNotFalseOp } - case 676: + case 670: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3457 +//line sql.y:3438 { yyVAL.comparisonExprOperator = EqualOp } - case 677: + case 671: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3461 +//line sql.y:3442 { yyVAL.comparisonExprOperator = LessThanOp } - case 678: + case 672: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3465 +//line sql.y:3446 { yyVAL.comparisonExprOperator = GreaterThanOp } - case 679: + case 673: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3469 +//line sql.y:3450 { yyVAL.comparisonExprOperator = LessEqualOp } - case 680: + case 674: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3473 +//line sql.y:3454 { yyVAL.comparisonExprOperator = GreaterEqualOp } - case 681: + case 675: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3477 +//line sql.y:3458 { yyVAL.comparisonExprOperator = NotEqualOp } - case 682: + case 676: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3481 +//line sql.y:3462 { yyVAL.comparisonExprOperator = NullSafeEqualOp } - case 683: + case 677: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3486 +//line sql.y:3467 { yyVAL.expr = nil } - case 684: + case 678: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3490 +//line sql.y:3471 { yyVAL.expr = yyDollar[2].expr } - case 685: + case 679: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3496 +//line sql.y:3477 { yyVAL.colTuple = yyDollar[1].valTuple } - case 686: + case 680: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3500 +//line sql.y:3481 { yyVAL.colTuple = yyDollar[1].subquery } - case 687: + case 681: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3504 +//line sql.y:3485 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 688: + case 682: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3510 +//line sql.y:3491 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 689: + case 683: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3516 +//line sql.y:3497 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 690: + case 684: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3520 +//line sql.y:3501 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 691: + case 685: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3526 +//line sql.y:3507 { yyVAL.expr = yyDollar[1].expr } - case 692: + case 686: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3530 +//line sql.y:3511 { yyVAL.expr = yyDollar[1].boolVal } - case 693: + case 687: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3534 +//line sql.y:3515 { yyVAL.expr = yyDollar[1].colName } - case 694: + case 688: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3538 +//line sql.y:3519 { yyVAL.expr = yyDollar[1].expr } - case 695: + case 689: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3542 +//line sql.y:3523 { yyVAL.expr = yyDollar[1].subquery } - case 696: + case 690: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3546 +//line sql.y:3527 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndOp, Right: yyDollar[3].expr} } - case 697: + case 691: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3550 +//line sql.y:3531 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrOp, Right: yyDollar[3].expr} } - case 698: + case 692: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3554 +//line sql.y:3535 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorOp, Right: yyDollar[3].expr} } - case 699: + case 693: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3558 +//line sql.y:3539 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusOp, Right: yyDollar[3].expr} } - case 700: + case 694: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3562 +//line sql.y:3543 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusOp, Right: yyDollar[3].expr} } - case 701: + case 695: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3566 +//line sql.y:3547 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultOp, Right: yyDollar[3].expr} } - case 702: + case 696: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3570 +//line sql.y:3551 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivOp, Right: yyDollar[3].expr} } - case 703: + case 697: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3574 +//line sql.y:3555 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivOp, Right: yyDollar[3].expr} } - case 704: + case 698: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3578 +//line sql.y:3559 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } - case 705: + case 699: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3582 +//line sql.y:3563 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } - case 706: + case 700: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3586 +//line sql.y:3567 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftOp, Right: yyDollar[3].expr} } - case 707: + case 701: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3590 +//line sql.y:3571 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightOp, Right: yyDollar[3].expr} } - case 708: + case 702: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3594 +//line sql.y:3575 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } - case 709: + case 703: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3598 +//line sql.y:3579 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } - case 710: + case 704: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3602 +//line sql.y:3583 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } - case 711: + case 705: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3606 +//line sql.y:3587 { yyVAL.expr = &UnaryExpr{Operator: BinaryOp, Expr: yyDollar[2].expr} } - case 712: + case 706: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3610 +//line sql.y:3591 { yyVAL.expr = &UnaryExpr{Operator: UBinaryOp, Expr: yyDollar[2].expr} } - case 713: + case 707: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3614 +//line sql.y:3595 { yyVAL.expr = &UnaryExpr{Operator: Utf8Op, Expr: yyDollar[2].expr} } - case 714: + case 708: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3618 +//line sql.y:3599 { yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Op, Expr: yyDollar[2].expr} } - case 715: + case 709: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3622 +//line sql.y:3603 { yyVAL.expr = &UnaryExpr{Operator: Latin1Op, Expr: yyDollar[2].expr} } - case 716: + case 710: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3626 +//line sql.y:3607 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { yyVAL.expr = num @@ -9523,9 +9468,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusOp, Expr: yyDollar[2].expr} } } - case 717: + case 711: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3634 +//line sql.y:3615 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { // Handle double negative @@ -9539,21 +9484,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].expr} } } - case 718: + case 712: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3648 +//line sql.y:3629 { yyVAL.expr = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].expr} } - case 719: + case 713: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3652 +//line sql.y:3633 { yyVAL.expr = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].expr} } - case 720: + case 714: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3656 +//line sql.y:3637 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -9561,503 +9506,503 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 725: + case 719: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3674 +//line sql.y:3655 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 726: + case 720: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3678 +//line sql.y:3659 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 727: + case 721: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3682 +//line sql.y:3663 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 728: + case 722: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3686 +//line sql.y:3667 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 729: + case 723: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3696 +//line sql.y:3677 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } - case 730: + case 724: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3700 +//line sql.y:3681 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } - case 731: + case 725: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3704 +//line sql.y:3685 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 732: + case 726: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3708 +//line sql.y:3689 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 733: + case 727: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3712 +//line sql.y:3693 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 734: + case 728: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3716 +//line sql.y:3697 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 735: + case 729: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3720 +//line sql.y:3701 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 736: + case 730: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3724 +//line sql.y:3705 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 737: + case 731: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3728 +//line sql.y:3709 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 738: + case 732: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:3732 +//line sql.y:3713 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].matchExprOption} } - case 739: + case 733: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3736 +//line sql.y:3717 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].boolean, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit} } - case 740: + case 734: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3740 +//line sql.y:3721 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 741: + case 735: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3744 +//line sql.y:3725 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } - case 742: + case 736: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3754 +//line sql.y:3735 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } - case 743: + case 737: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3758 +//line sql.y:3739 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } - case 744: + case 738: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3762 +//line sql.y:3743 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } - case 745: + case 739: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3767 +//line sql.y:3748 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } - case 746: + case 740: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3772 +//line sql.y:3753 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } - case 747: + case 741: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3777 +//line sql.y:3758 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } - case 748: + case 742: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3783 +//line sql.y:3764 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } - case 749: + case 743: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3788 +//line sql.y:3769 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 750: + case 744: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3793 +//line sql.y:3774 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} } - case 751: + case 745: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3797 +//line sql.y:3778 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} } - case 752: + case 746: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3801 +//line sql.y:3782 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} } - case 753: + case 747: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3806 +//line sql.y:3787 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} } - case 754: + case 748: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3811 +//line sql.y:3792 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} } - case 755: + case 749: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3816 +//line sql.y:3797 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} } - case 756: + case 750: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3820 +//line sql.y:3801 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 757: + case 751: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3824 +//line sql.y:3805 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 760: + case 754: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3834 +//line sql.y:3815 { yyVAL.expr = yyDollar[2].expr } - case 761: + case 755: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3844 +//line sql.y:3825 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 762: + case 756: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3848 +//line sql.y:3829 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 763: + case 757: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3852 +//line sql.y:3833 { yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} } - case 764: + case 758: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3856 +//line sql.y:3837 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 765: + case 759: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3860 +//line sql.y:3841 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 766: + case 760: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3864 +//line sql.y:3845 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } - case 767: + case 761: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3868 +//line sql.y:3849 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } - case 768: + case 762: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3874 +//line sql.y:3855 { yyVAL.matchExprOption = NoOption } - case 769: + case 763: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3878 +//line sql.y:3859 { yyVAL.matchExprOption = BooleanModeOpt } - case 770: + case 764: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3882 +//line sql.y:3863 { yyVAL.matchExprOption = NaturalLanguageModeOpt } - case 771: + case 765: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3886 +//line sql.y:3867 { yyVAL.matchExprOption = NaturalLanguageModeWithQueryExpansionOpt } - case 772: + case 766: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3890 +//line sql.y:3871 { yyVAL.matchExprOption = QueryExpansionOpt } - case 773: + case 767: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3896 +//line sql.y:3877 { yyVAL.str = string(yyDollar[1].colIdent.String()) } - case 774: + case 768: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3900 +//line sql.y:3881 { yyVAL.str = string(yyDollar[1].bytes) } - case 775: + case 769: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3904 +//line sql.y:3885 { yyVAL.str = string(yyDollar[1].bytes) } - case 776: + case 770: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3910 +//line sql.y:3891 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 777: + case 771: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3914 +//line sql.y:3895 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Operator: CharacterSetOp} } - case 778: + case 772: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3918 +//line sql.y:3899 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: string(yyDollar[3].colIdent.String())} } - case 779: + case 773: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3922 +//line sql.y:3903 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 780: + case 774: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3926 +//line sql.y:3907 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 781: + case 775: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3930 +//line sql.y:3911 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 782: + case 776: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3936 +//line sql.y:3917 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 783: + case 777: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3940 +//line sql.y:3921 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 784: + case 778: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3944 +//line sql.y:3925 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 785: + case 779: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3948 +//line sql.y:3929 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 786: + case 780: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3952 +//line sql.y:3933 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 787: + case 781: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3956 +//line sql.y:3937 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 788: + case 782: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3960 +//line sql.y:3941 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 789: + case 783: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3965 +//line sql.y:3946 { yyVAL.expr = nil } - case 790: + case 784: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3969 +//line sql.y:3950 { yyVAL.expr = yyDollar[1].expr } - case 791: + case 785: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3974 +//line sql.y:3955 { yyVAL.str = string("") } - case 792: + case 786: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3978 +//line sql.y:3959 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 793: + case 787: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3984 +//line sql.y:3965 { yyVAL.whens = []*When{yyDollar[1].when} } - case 794: + case 788: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3988 +//line sql.y:3969 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 795: + case 789: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3994 +//line sql.y:3975 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 796: + case 790: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3999 +//line sql.y:3980 { yyVAL.expr = nil } - case 797: + case 791: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4003 +//line sql.y:3984 { yyVAL.expr = yyDollar[2].expr } - case 798: + case 792: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4009 +//line sql.y:3990 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 799: + case 793: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4013 +//line sql.y:3994 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 800: + case 794: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4017 +//line sql.y:3998 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 801: + case 795: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4023 +//line sql.y:4004 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } - case 802: + case 796: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4027 +//line sql.y:4008 { yyVAL.expr = NewHexLiteral(yyDollar[1].bytes) } - case 803: + case 797: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4031 +//line sql.y:4012 { yyVAL.expr = NewBitLiteral(yyDollar[1].bytes) } - case 804: + case 798: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4035 +//line sql.y:4016 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } - case 805: + case 799: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4039 +//line sql.y:4020 { yyVAL.expr = NewFloatLiteral(yyDollar[1].bytes) } - case 806: + case 800: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4043 +//line sql.y:4024 { yyVAL.expr = NewHexNumLiteral(yyDollar[1].bytes) } - case 807: + case 801: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4047 +//line sql.y:4028 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } - case 808: + case 802: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4051 +//line sql.y:4032 { yyVAL.expr = &NullVal{} } - case 809: + case 803: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4057 +//line sql.y:4038 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -10066,597 +10011,597 @@ yydefault: } yyVAL.expr = NewIntLiteral([]byte("1")) } - case 810: + case 804: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4066 +//line sql.y:4047 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } - case 811: + case 805: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4070 +//line sql.y:4051 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } - case 812: + case 806: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4075 +//line sql.y:4056 { yyVAL.exprs = nil } - case 813: + case 807: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4079 +//line sql.y:4060 { yyVAL.exprs = yyDollar[3].exprs } - case 814: + case 808: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4084 +//line sql.y:4065 { yyVAL.expr = nil } - case 815: + case 809: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4088 +//line sql.y:4069 { yyVAL.expr = yyDollar[2].expr } - case 816: + case 810: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4093 +//line sql.y:4074 { yyVAL.orderBy = nil } - case 817: + case 811: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4097 +//line sql.y:4078 { yyVAL.orderBy = yyDollar[3].orderBy } - case 818: + case 812: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4103 +//line sql.y:4084 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 819: + case 813: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4107 +//line sql.y:4088 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 820: + case 814: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4113 +//line sql.y:4094 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].orderDirection} } - case 821: + case 815: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4118 +//line sql.y:4099 { yyVAL.orderDirection = AscOrder } - case 822: + case 816: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4122 +//line sql.y:4103 { yyVAL.orderDirection = AscOrder } - case 823: + case 817: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4126 +//line sql.y:4107 { yyVAL.orderDirection = DescOrder } - case 824: + case 818: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4131 +//line sql.y:4112 { yyVAL.limit = nil } - case 825: + case 819: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4135 +//line sql.y:4116 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 826: + case 820: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4139 +//line sql.y:4120 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 827: + case 821: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4143 +//line sql.y:4124 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 828: + case 822: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4148 +//line sql.y:4129 { yyVAL.alterOptions = nil } - case 829: + case 823: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4152 +//line sql.y:4133 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption, yyDollar[2].alterOption} } - case 830: + case 824: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4156 +//line sql.y:4137 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption, yyDollar[2].alterOption} } - case 831: + case 825: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4160 +//line sql.y:4141 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } - case 832: + case 826: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4164 +//line sql.y:4145 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } - case 833: + case 827: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4171 +//line sql.y:4152 { yyVAL.alterOption = &LockOption{Type: DefaultType} } - case 834: + case 828: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4175 +//line sql.y:4156 { yyVAL.alterOption = &LockOption{Type: NoneType} } - case 835: + case 829: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4179 +//line sql.y:4160 { yyVAL.alterOption = &LockOption{Type: SharedType} } - case 836: + case 830: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4183 +//line sql.y:4164 { yyVAL.alterOption = &LockOption{Type: ExclusiveType} } - case 837: + case 831: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4189 +//line sql.y:4170 { yyVAL.alterOption = AlgorithmValue(yyDollar[3].bytes) } - case 838: + case 832: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4193 +//line sql.y:4174 { yyVAL.alterOption = AlgorithmValue(yyDollar[3].bytes) } - case 839: + case 833: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4197 +//line sql.y:4178 { yyVAL.alterOption = AlgorithmValue(yyDollar[3].bytes) } - case 840: + case 834: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4202 +//line sql.y:4183 { yyVAL.str = "" } - case 841: + case 835: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4206 +//line sql.y:4187 { yyVAL.str = string(yyDollar[3].bytes) } - case 842: + case 836: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4210 +//line sql.y:4191 { yyVAL.str = string(yyDollar[3].bytes) } - case 843: + case 837: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4214 +//line sql.y:4195 { yyVAL.str = string(yyDollar[3].bytes) } - case 844: + case 838: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4219 +//line sql.y:4200 { yyVAL.str = "" } - case 845: + case 839: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4223 +//line sql.y:4204 { yyVAL.str = yyDollar[3].str } - case 846: + case 840: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4229 +//line sql.y:4210 { yyVAL.str = string(yyDollar[1].bytes) } - case 847: + case 841: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4233 +//line sql.y:4214 { yyVAL.str = string(yyDollar[1].bytes) } - case 848: + case 842: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4238 +//line sql.y:4219 { yyVAL.str = "" } - case 849: + case 843: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4242 +//line sql.y:4223 { yyVAL.str = yyDollar[2].str } - case 850: + case 844: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4247 +//line sql.y:4228 { yyVAL.str = "cascaded" } - case 851: + case 845: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4251 +//line sql.y:4232 { yyVAL.str = string(yyDollar[1].bytes) } - case 852: + case 846: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4255 +//line sql.y:4236 { yyVAL.str = string(yyDollar[1].bytes) } - case 853: + case 847: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4260 +//line sql.y:4241 { yyVAL.str = "" } - case 854: + case 848: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4264 +//line sql.y:4245 { yyVAL.str = yyDollar[3].str } - case 855: + case 849: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4270 +//line sql.y:4251 { yyVAL.str = string(yyDollar[1].bytes) } - case 856: + case 850: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4274 +//line sql.y:4255 { yyVAL.str = string(yyDollar[1].bytes) } - case 857: + case 851: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4278 +//line sql.y:4259 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'@" + string(yyDollar[2].bytes) } - case 858: + case 852: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4282 +//line sql.y:4263 { yyVAL.str = string(yyDollar[1].bytes) } - case 859: + case 853: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4287 +//line sql.y:4268 { yyVAL.lock = NoLock } - case 860: + case 854: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4291 +//line sql.y:4272 { yyVAL.lock = ForUpdateLock } - case 861: + case 855: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4295 +//line sql.y:4276 { yyVAL.lock = ShareModeLock } - case 862: + case 856: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4300 +//line sql.y:4281 { yyVAL.selectInto = nil } - case 863: + case 857: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:4304 +//line sql.y:4285 { yyVAL.selectInto = &SelectInto{Type: IntoOutfileS3, FileName: string(yyDollar[4].bytes), Charset: yyDollar[5].str, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str} } - case 864: + case 858: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4308 +//line sql.y:4289 { yyVAL.selectInto = &SelectInto{Type: IntoDumpfile, FileName: string(yyDollar[3].bytes), Charset: "", FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} } - case 865: + case 859: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4312 +//line sql.y:4293 { yyVAL.selectInto = &SelectInto{Type: IntoOutfile, FileName: string(yyDollar[3].bytes), Charset: yyDollar[4].str, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} } - case 866: + case 860: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4317 +//line sql.y:4298 { yyVAL.str = "" } - case 867: + case 861: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4321 +//line sql.y:4302 { yyVAL.str = " format csv" + yyDollar[3].str } - case 868: + case 862: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4325 +//line sql.y:4306 { yyVAL.str = " format text" + yyDollar[3].str } - case 869: + case 863: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4330 +//line sql.y:4311 { yyVAL.str = "" } - case 870: + case 864: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4334 +//line sql.y:4315 { yyVAL.str = " header" } - case 871: + case 865: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4339 +//line sql.y:4320 { yyVAL.str = "" } - case 872: + case 866: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4343 +//line sql.y:4324 { yyVAL.str = " manifest on" } - case 873: + case 867: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4347 +//line sql.y:4328 { yyVAL.str = " manifest off" } - case 874: + case 868: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4352 +//line sql.y:4333 { yyVAL.str = "" } - case 875: + case 869: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4356 +//line sql.y:4337 { yyVAL.str = " overwrite on" } - case 876: + case 870: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4360 +//line sql.y:4341 { yyVAL.str = " overwrite off" } - case 877: + case 871: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4366 +//line sql.y:4347 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 878: + case 872: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4371 +//line sql.y:4352 { yyVAL.str = "" } - case 879: + case 873: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4375 +//line sql.y:4356 { yyVAL.str = " lines" + yyDollar[2].str + yyDollar[3].str } - case 880: + case 874: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4380 +//line sql.y:4361 { yyVAL.str = "" } - case 881: + case 875: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4384 +//line sql.y:4365 { yyVAL.str = " starting by '" + string(yyDollar[3].bytes) + "'" } - case 882: + case 876: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4389 +//line sql.y:4370 { yyVAL.str = "" } - case 883: + case 877: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4393 +//line sql.y:4374 { yyVAL.str = " terminated by '" + string(yyDollar[3].bytes) + "'" } - case 884: + case 878: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4398 +//line sql.y:4379 { yyVAL.str = "" } - case 885: + case 879: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4402 +//line sql.y:4383 { yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str + yyDollar[3].str + yyDollar[4].str } - case 886: + case 880: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4407 +//line sql.y:4388 { yyVAL.str = "" } - case 887: + case 881: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4411 +//line sql.y:4392 { yyVAL.str = " escaped by '" + string(yyDollar[3].bytes) + "'" } - case 888: + case 882: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4416 +//line sql.y:4397 { yyVAL.str = "" } - case 889: + case 883: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4420 +//line sql.y:4401 { yyVAL.str = yyDollar[1].str + " enclosed by '" + string(yyDollar[4].bytes) + "'" } - case 890: + case 884: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4425 +//line sql.y:4406 { yyVAL.str = "" } - case 891: + case 885: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4429 +//line sql.y:4410 { yyVAL.str = " optionally" } - case 892: + case 886: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4442 +//line sql.y:4423 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 893: + case 887: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4446 +//line sql.y:4427 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 894: + case 888: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4450 +//line sql.y:4431 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 895: + case 889: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4454 +//line sql.y:4435 { yyVAL.ins = &Insert{Rows: yyDollar[4].values} } - case 896: + case 890: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4458 +//line sql.y:4439 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 897: + case 891: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4464 +//line sql.y:4445 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 898: + case 892: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4468 +//line sql.y:4449 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 899: + case 893: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4472 +//line sql.y:4453 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 900: + case 894: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4476 +//line sql.y:4457 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 901: + case 895: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4481 +//line sql.y:4462 { yyVAL.updateExprs = nil } - case 902: + case 896: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4485 +//line sql.y:4466 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 903: + case 897: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4491 +//line sql.y:4472 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 904: + case 898: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4495 +//line sql.y:4476 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 905: + case 899: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4501 +//line sql.y:4482 { yyVAL.valTuple = yyDollar[1].valTuple } - case 906: + case 900: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4505 +//line sql.y:4486 { yyVAL.valTuple = ValTuple{} } - case 907: + case 901: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4511 +//line sql.y:4492 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 908: + case 902: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4517 +//line sql.y:4498 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = yyDollar[1].valTuple[0] @@ -10664,253 +10609,265 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 909: + case 903: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4527 +//line sql.y:4508 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 910: + case 904: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4531 +//line sql.y:4512 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 911: + case 905: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4537 +//line sql.y:4518 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 912: + case 906: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4543 +//line sql.y:4524 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 913: + case 907: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4547 +//line sql.y:4528 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 914: + case 908: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4553 +//line sql.y:4534 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("on"))} } - case 915: + case 909: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4557 +//line sql.y:4538 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("off"))} } - case 916: + case 910: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4561 +//line sql.y:4542 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: yyDollar[3].expr} } - case 917: + case 911: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4565 +//line sql.y:4546 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Scope: ImplicitScope, Expr: yyDollar[2].expr} } - case 918: + case 912: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4569 +//line sql.y:4550 { yyDollar[2].setExpr.Scope = yyDollar[1].scope yyVAL.setExpr = yyDollar[2].setExpr } - case 920: + case 914: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4577 +//line sql.y:4558 { yyVAL.bytes = []byte("charset") } - case 923: + case 917: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4587 +//line sql.y:4568 { yyVAL.expr = NewStrLiteral([]byte(yyDollar[1].colIdent.String())) } - case 924: + case 918: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4591 +//line sql.y:4572 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } - case 925: + case 919: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4595 +//line sql.y:4576 { yyVAL.expr = &Default{} } - case 928: + case 922: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4604 +//line sql.y:4585 { yyVAL.boolean = false } - case 929: + case 923: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4587 + { + yyVAL.boolean = true + } + case 924: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:4590 + { + yyVAL.boolean = false + } + case 925: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4606 +//line sql.y:4592 { yyVAL.boolean = true } - case 930: + case 926: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4609 +//line sql.y:4595 { yyVAL.boolean = false } - case 931: + case 927: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4611 +//line sql.y:4597 { yyVAL.boolean = true } - case 932: + case 928: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4614 +//line sql.y:4600 { yyVAL.ignore = false } - case 933: + case 929: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4616 +//line sql.y:4602 { yyVAL.ignore = true } - case 934: + case 930: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4619 +//line sql.y:4605 { yyVAL.empty = struct{}{} } - case 935: + case 931: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4621 +//line sql.y:4607 { yyVAL.empty = struct{}{} } - case 936: + case 932: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4623 +//line sql.y:4609 { yyVAL.empty = struct{}{} } - case 937: + case 933: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4627 +//line sql.y:4613 { yyVAL.statement = &CallProc{Name: yyDollar[2].tableName, Params: yyDollar[4].exprs} } - case 938: + case 934: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4632 +//line sql.y:4618 { yyVAL.exprs = nil } - case 939: + case 935: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4636 +//line sql.y:4622 { yyVAL.exprs = yyDollar[1].exprs } - case 940: + case 936: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4641 +//line sql.y:4627 { yyVAL.indexOptions = nil } - case 941: + case 937: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4643 +//line sql.y:4629 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } - case 942: + case 938: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4647 +//line sql.y:4633 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[2].colIdent.String())} } - case 943: + case 939: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4653 +//line sql.y:4639 { yyVAL.colIdent = yyDollar[1].colIdent } - case 944: + case 940: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4657 +//line sql.y:4643 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 946: + case 942: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4664 +//line sql.y:4650 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 947: + case 943: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4670 +//line sql.y:4656 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) } - case 948: + case 944: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4674 +//line sql.y:4660 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 950: + case 946: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4681 +//line sql.y:4667 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 1346: + case 1343: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5101 +//line sql.y:5088 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 1347: + case 1344: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5110 +//line sql.y:5097 { decNesting(yylex) } - case 1348: + case 1345: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5115 +//line sql.y:5102 { skipToEnd(yylex) } - case 1349: + case 1346: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5120 +//line sql.y:5107 { skipToEnd(yylex) } - case 1350: + case 1347: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5124 +//line sql.y:5111 { skipToEnd(yylex) } - case 1351: + case 1348: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5128 +//line sql.y:5115 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 2e7aac08f17..2402f3f3c43 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -347,9 +347,9 @@ func skipToEnd(yylex interface{}) { %type for_from %type default_opt %type ignore_opt -%type full_opt from_database_opt columns_or_fields extended_opt storage_opt +%type from_database_opt columns_or_fields extended_opt storage_opt %type like_or_where_opt like_opt -%type exists_opt not_exists_opt enforced_opt temp_opt +%type exists_opt not_exists_opt enforced_opt temp_opt full_opt %type to_opt %type reserved_keyword non_reserved_keyword %type sql_id reserved_sql_id col_alias as_ci_opt @@ -2372,13 +2372,9 @@ show_statement: { $$ = &Show{&ShowBasic{Command: TableStatus, DbName:$4, Filter: $5}} } -| SHOW TABLES from_database_opt like_or_where_opt +| SHOW full_opt TABLES from_database_opt like_or_where_opt { - $$ = &Show{&ShowBasic{Command: Table, DbName:$3, Filter: $4}} - } -| SHOW FULL TABLES from_database_opt like_or_where_opt - { - $$ = &Show{&ShowBasic{Command: TableFull, DbName:$4, Filter: $5}} + $$ = &Show{&ShowBasic{Command: Table, Full: $2, DbName:$4, Filter: $5}} } | SHOW TRIGGERS from_database_opt like_or_where_opt { @@ -2522,11 +2518,11 @@ extended_opt: full_opt: /* empty */ { - $$ = "" + $$ = false } | FULL { - $$ = "full " + $$ = true } columns_or_fields: diff --git a/go/vt/vtgate/planbuilder/show.go b/go/vt/vtgate/planbuilder/show.go index 4aec5e57889..4b41108cf9d 100644 --- a/go/vt/vtgate/planbuilder/show.go +++ b/go/vt/vtgate/planbuilder/show.go @@ -57,7 +57,7 @@ func buildShowBasicPlan(show *sqlparser.ShowBasic, vschema ContextVSchema) (engi return buildSendAnywherePlan(show, vschema) case sqlparser.Database, sqlparser.Keyspace: return buildDBPlan(show, vschema) - case sqlparser.OpenTable, sqlparser.TableStatus, sqlparser.Table, sqlparser.TableFull, sqlparser.Trigger: + case sqlparser.OpenTable, sqlparser.TableStatus, sqlparser.Table, sqlparser.Trigger: return buildPlanWithDB(show, vschema) case sqlparser.StatusGlobal, sqlparser.StatusSession: return engine.NewRowsPrimitive(make([][]sqltypes.Value, 0, 2), buildVarCharFields("Variable_name", "Value")), nil diff --git a/go/vt/vttablet/tabletserver/planbuilder/builder.go b/go/vt/vttablet/tabletserver/planbuilder/builder.go index 5224293bf04..4db5e5dbaed 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/builder.go +++ b/go/vt/vttablet/tabletserver/planbuilder/builder.go @@ -131,7 +131,7 @@ func analyzeShow(show *sqlparser.Show, dbName string) (plan *Plan, err error) { switch showInternal := show.Internal.(type) { case *sqlparser.ShowBasic: switch showInternal.Command { - case sqlparser.Table, sqlparser.TableFull: + case sqlparser.Table: // rewrite WHERE clause if it exists // `where Tables_in_Keyspace` => `where Tables_in_DbName` if showInternal.Filter != nil { From 2fbb74caaf04a43f5f6b202be34ddd1b62404676 Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Fri, 12 Feb 2021 13:59:47 +0530 Subject: [PATCH 05/15] added support for from table in showBasic Signed-off-by: Harshit Gangal --- go/vt/sqlparser/ast.go | 4 + go/vt/sqlparser/ast_funcs.go | 25 +- go/vt/sqlparser/constants.go | 22 + go/vt/sqlparser/parse_test.go | 18 +- go/vt/sqlparser/rewriter.go | 5 + go/vt/sqlparser/sql.go | 3296 +++++++++++++++++---------------- go/vt/sqlparser/sql.y | 17 +- 7 files changed, 1731 insertions(+), 1656 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index d8820c67b6d..674219350fd 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -1229,6 +1229,7 @@ type ( ShowBasic struct { Command ShowCommandType Full bool + Tbl TableName DbName string Filter *ShowFilter } @@ -3168,6 +3169,9 @@ func (node *ShowBasic) Format(buf *TrackedBuffer) { buf.WriteString(" full") } buf.astPrintf(node, "%s", node.Command.ToString()) + if !node.Tbl.IsEmpty() { + buf.astPrintf(node, " from %v", node.Tbl) + } if node.DbName != "" { buf.astPrintf(node, " from %s", node.DbName) } diff --git a/go/vt/sqlparser/ast_funcs.go b/go/vt/sqlparser/ast_funcs.go index a2cb204b517..07fea6767d5 100644 --- a/go/vt/sqlparser/ast_funcs.go +++ b/go/vt/sqlparser/ast_funcs.go @@ -1227,14 +1227,36 @@ func (ty ShowCommandType) ToString() string { return CharsetStr case Collation: return CollationStr + case Column: + return ColumnStr + case CreateDb: + return CreateDbStr + case CreateE: + return CreateEStr + case CreateF: + return CreateFStr + case CreateProc: + return CreateProcStr + case CreateTbl: + return CreateTblStr + case CreateTr: + return CreateTrStr + case CreateV: + return CreateVStr case Database: return DatabaseStr + case FunctionC: + return FunctionCStr case Function: return FunctionStr + case Index: + return IndexStr case OpenTable: return OpenTableStr case Privilege: return PrivilegeStr + case ProcedureC: + return ProcedureCStr case Procedure: return ProcedureStr case StatusGlobal: @@ -1254,7 +1276,8 @@ func (ty ShowCommandType) ToString() string { case Keyspace: return KeyspaceStr default: - return "Unknown ShowCommandType" + return "" + + "Unknown ShowCommandType" } } diff --git a/go/vt/sqlparser/constants.go b/go/vt/sqlparser/constants.go index 11eaf3e71d7..de5c899c8e0 100644 --- a/go/vt/sqlparser/constants.go +++ b/go/vt/sqlparser/constants.go @@ -212,10 +212,21 @@ const ( // ShowCommand Types CharsetStr = " charset" CollationStr = " collation" + ColumnStr = " columns" + CreateDbStr = " create database" + CreateEStr = " create event" + CreateFStr = " create function" + CreateProcStr = " create procedure" + CreateTblStr = " create table" + CreateTrStr = " create trigger" + CreateVStr = " create view" DatabaseStr = " databases" + FunctionCStr = " function code" FunctionStr = " function status" + IndexStr = " indexes" OpenTableStr = " open tables" PrivilegeStr = " privileges" + ProcedureCStr = " procedure code" ProcedureStr = " procedure status" StatusGlobalStr = " global status" StatusSessionStr = " status" @@ -456,10 +467,21 @@ const ( UnknownCommandType ShowCommandType = iota Charset Collation + Column + CreateDb + CreateE + CreateF + CreateProc + CreateTbl + CreateTr + CreateV Database + FunctionC Function + Index OpenTable Privilege + ProcedureC Procedure StatusGlobal StatusSession diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 98221776cd7..3c1697c245e 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1379,11 +1379,13 @@ var ( input: "show grants for 'root@localhost'", output: "show grants", }, { - input: "show index from t", + input: "show index from t", + output: "show indexes from t", }, { input: "show indexes from t", }, { - input: "show keys from t", + input: "show keys from t", + output: "show indexes from t", }, { input: "show master status", output: "show master", @@ -1788,22 +1790,22 @@ var ( output: "show full columns from AO_E8B6CC_ISSUE_MAPPING from jiradb like '%'", }, { input: "SHOW KEYS FROM `AO_E8B6CC_ISSUE_MAPPING` FROM `jiradb`", - output: "show keys from AO_E8B6CC_ISSUE_MAPPING from jiradb", + output: "show indexes from AO_E8B6CC_ISSUE_MAPPING from jiradb", }, { input: "SHOW CREATE TABLE `jiradb`.`AO_E8B6CC_ISSUE_MAPPING`", output: "show create table jiradb.AO_E8B6CC_ISSUE_MAPPING", }, { input: "SHOW INDEX FROM `AO_E8B6CC_ISSUE_MAPPING` FROM `jiradb`", - output: "show index from AO_E8B6CC_ISSUE_MAPPING from jiradb", + output: "show indexes from AO_E8B6CC_ISSUE_MAPPING from jiradb", }, { input: "SHOW FULL TABLES FROM `jiradb` LIKE '%'", output: "show full tables from jiradb like '%'", }, { input: "SHOW EXTENDED INDEX FROM `AO_E8B6CC_PROJECT_MAPPING` FROM `jiradb`", - output: "show extended index from AO_E8B6CC_PROJECT_MAPPING from jiradb", + output: "show indexes from AO_E8B6CC_PROJECT_MAPPING from jiradb", }, { input: "SHOW EXTENDED KEYS FROM `AO_E8B6CC_ISSUE_MAPPING` FROM `jiradb`", - output: "show extended keys from AO_E8B6CC_ISSUE_MAPPING from jiradb", + output: "show indexes from AO_E8B6CC_ISSUE_MAPPING from jiradb", }, { input: "SHOW CREATE TABLE `jiradb`.`AO_E8B6CC_ISSUE_MAPPING`", output: "show create table jiradb.AO_E8B6CC_ISSUE_MAPPING", @@ -1827,10 +1829,10 @@ var ( output: "show full tables from jiradb like '%'", }, { input: "SHOW EXTENDED INDEXES FROM `AO_E8B6CC_PROJECT_MAPPING` FROM `jiradb`", - output: "show extended indexes from AO_E8B6CC_PROJECT_MAPPING from jiradb", + output: "show indexes from AO_E8B6CC_PROJECT_MAPPING from jiradb", }, { input: "SHOW EXTENDED INDEXES IN `AO_E8B6CC_PROJECT_MAPPING` IN `jiradb`", - output: "show extended indexes from AO_E8B6CC_PROJECT_MAPPING from jiradb", + output: "show indexes from AO_E8B6CC_PROJECT_MAPPING from jiradb", }, { input: "do 1", output: "otheradmin", diff --git a/go/vt/sqlparser/rewriter.go b/go/vt/sqlparser/rewriter.go index 94b54f9bacd..630b847af9a 100644 --- a/go/vt/sqlparser/rewriter.go +++ b/go/vt/sqlparser/rewriter.go @@ -745,6 +745,10 @@ func replaceShowBasicFilter(newNode, parent SQLNode) { parent.(*ShowBasic).Filter = newNode.(*ShowFilter) } +func replaceShowBasicTbl(newNode, parent SQLNode) { + parent.(*ShowBasic).Tbl = newNode.(TableName) +} + func replaceShowColumnsFilter(newNode, parent SQLNode) { parent.(*ShowColumns).Filter = newNode.(*ShowFilter) } @@ -1523,6 +1527,7 @@ func (a *application) apply(parent, node SQLNode, replacer replacerFunc) { case *ShowBasic: a.apply(node, n.Filter, replaceShowBasicFilter) + a.apply(node, n.Tbl, replaceShowBasicTbl) case *ShowColumns: a.apply(node, n.Filter, replaceShowColumnsFilter) diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index ba4432713d7..57d0f8d8225 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -1172,560 +1172,535 @@ var yyExca = [...]int{ const yyPrivate = 57344 -const yyLast = 27558 +const yyLast = 27769 var yyAct = [...]int{ - 568, 2209, 2196, 1968, 2128, 1829, 2137, 2173, 512, 1719, - 2079, 1798, 541, 81, 3, 1896, 2057, 1686, 1897, 1505, - 527, 1432, 1571, 1004, 1056, 1965, 1049, 1706, 1720, 1893, - 1538, 1802, 1163, 580, 1523, 878, 510, 1784, 1543, 1783, - 1908, 1389, 817, 756, 1855, 901, 1204, 1782, 176, 1646, - 1621, 188, 1297, 475, 188, 1545, 131, 79, 1484, 491, - 1381, 188, 1569, 1776, 1086, 1466, 1093, 1473, 1076, 188, - 613, 782, 589, 1059, 1186, 1054, 1434, 1079, 923, 574, - 1042, 514, 1415, 145, 1358, 1077, 940, 1158, 503, 763, - 491, 1276, 1083, 491, 188, 491, 1449, 760, 768, 788, - 764, 1092, 32, 785, 783, 784, 77, 1162, 1489, 1534, - 1066, 872, 175, 108, 1313, 1178, 109, 148, 114, 772, - 795, 115, 1193, 1090, 498, 859, 8, 7, 6, 76, - 1017, 921, 1821, 1820, 1600, 1263, 1843, 2081, 1018, 1844, - 1429, 1430, 1347, 1524, 177, 178, 179, 1346, 1345, 1344, - 1343, 941, 1342, 501, 1335, 502, 1684, 2125, 595, 599, - 1942, 116, 110, 2165, 757, 2036, 2103, 2102, 610, 941, - 821, 188, 2052, 820, 2208, 2053, 819, 177, 178, 179, - 575, 188, 2215, 871, 2170, 1636, 188, 499, 78, 833, - 834, 82, 837, 838, 839, 840, 451, 2148, 843, 844, - 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, - 855, 856, 857, 607, 1164, 2199, 951, 1969, 1418, 1588, - 822, 776, 798, 2169, 775, 110, 1872, 84, 85, 86, - 87, 88, 89, 614, 951, 1548, 2147, 466, 2000, 799, - 774, 823, 824, 825, 1685, 34, 467, 1490, 70, 38, - 39, 1094, 1750, 1095, 777, 1749, 463, 1499, 1751, 1923, - 1924, 1922, 1431, 169, 553, 830, 559, 560, 557, 558, - 1842, 556, 555, 554, 1797, 1607, 1500, 1501, 1634, 1606, - 889, 561, 562, 479, 886, 899, 900, 1392, 111, 836, - 133, 939, 835, 110, 888, 460, 874, 174, 572, 153, - 583, 177, 178, 179, 473, 571, 947, 1767, 2150, 1517, - 105, 1991, 182, 183, 1547, 1989, 1336, 1337, 1338, 1831, - 69, 896, 778, 489, 947, 898, 899, 900, 919, 1334, - 143, 493, 487, 478, 1803, 132, 1570, 1825, 1603, 917, - 1277, 2198, 1285, 860, 1286, 1826, 1287, 479, 893, 894, - 1282, 891, 892, 150, 895, 151, 1615, 867, 1834, 842, - 1180, 1181, 142, 141, 168, 841, 1253, 103, 1281, 890, - 2099, 1833, 102, 887, 452, 453, 454, 1279, 471, 472, - 482, 2166, 105, 170, 468, 470, 483, 455, 456, 485, - 484, 1832, 459, 457, 458, 465, 2047, 478, 462, 480, - 479, 177, 178, 179, 1283, 806, 804, 918, 1254, 1280, - 1255, 1572, 137, 1182, 144, 2048, 1179, 1467, 138, 139, - 815, 814, 154, 813, 812, 811, 1941, 105, 810, 97, - 1764, 1759, 159, 479, 100, 809, 808, 99, 98, 803, - 946, 943, 944, 945, 950, 952, 949, 779, 948, 1172, - 478, 188, 816, 761, 797, 942, 2216, 759, 946, 943, - 944, 945, 950, 952, 949, 104, 948, 904, 908, 2213, - 761, 479, 107, 942, 1760, 791, 491, 491, 491, 1549, - 910, 2185, 912, 478, 103, 1490, 761, 1620, 881, 882, - 883, 884, 885, 905, 491, 491, 1762, 807, 805, 1757, - 797, 915, 790, 2146, 1635, 873, 173, 1192, 1191, 933, - 920, 1758, 832, 1605, 1687, 1689, 773, 2151, 797, 909, - 911, 478, 2138, 481, 601, 1856, 1835, 1594, 1290, 797, - 927, 826, 1792, 1602, 146, 797, 1881, 104, 1880, 1879, - 771, 476, 2115, 966, 965, 975, 976, 968, 969, 970, - 971, 972, 973, 974, 967, 770, 477, 977, 769, 1265, - 1264, 1266, 1267, 1268, 1746, 71, 2132, 1813, 1858, 870, - 1765, 1763, 188, 767, 450, 180, 1614, 989, 990, 1613, - 2020, 1623, 104, 1623, 1921, 140, 1622, 1711, 1622, 796, - 1047, 987, 1590, 1506, 1654, 800, 790, 134, 491, 1046, - 135, 188, 897, 188, 188, 801, 491, 1665, 924, 925, - 1688, 1580, 491, 1495, 1070, 797, 2211, 907, 1002, 2212, - 876, 2210, 936, 934, 935, 977, 1860, 1445, 1864, 1331, - 1859, 914, 1857, 92, 906, 796, 1662, 1862, 902, 1314, - 957, 800, 790, 916, 967, 1005, 1861, 977, 866, 1043, - 2107, 801, 1365, 796, 864, 831, 955, 956, 954, 1863, - 1865, 1075, 1060, 818, 796, 954, 1363, 1364, 1362, 802, - 796, 790, 793, 794, 957, 761, 880, 1761, 93, 787, - 791, 957, 1906, 1278, 610, 1020, 1022, 1024, 1026, 1028, - 1030, 1031, 1096, 1021, 1023, 1040, 1027, 1029, 786, 1032, - 937, 147, 152, 149, 155, 156, 157, 158, 160, 161, - 162, 163, 865, 1874, 1416, 1587, 1589, 164, 165, 166, - 167, 966, 965, 975, 976, 968, 969, 970, 971, 972, - 973, 974, 967, 1169, 861, 977, 862, 1585, 806, 863, - 970, 971, 972, 973, 974, 967, 989, 990, 977, 614, - 796, 956, 954, 2116, 903, 1315, 188, 790, 793, 794, - 1154, 761, 177, 178, 179, 787, 791, 1582, 957, 1048, - 1165, 1166, 1167, 1168, 804, 989, 990, 177, 178, 179, - 1647, 1383, 2200, 1416, 1660, 1672, 491, 1926, 1188, 879, - 172, 1586, 1659, 1353, 1355, 1356, 1197, 1063, 1450, 1451, - 1201, 1582, 2035, 491, 491, 1354, 491, 1198, 491, 491, - 2201, 491, 491, 491, 491, 491, 491, 955, 956, 954, - 1170, 1171, 1772, 2034, 69, 1584, 491, 2217, 2190, 1184, - 188, 1237, 1232, 1233, 1272, 957, 1361, 1384, 1177, 1947, - 530, 529, 532, 533, 534, 535, 1250, 1780, 1779, 531, - 1206, 536, 1207, 1091, 1209, 1211, 2191, 491, 1215, 1217, - 1219, 1221, 1223, 1552, 1270, 188, 1639, 1640, 1641, 1234, - 1196, 1273, 1153, 188, 1058, 1296, 1883, 188, 1240, 1241, - 955, 956, 954, 1258, 1246, 1247, 766, 1161, 188, 1257, - 1661, 188, 1160, 1271, 1256, 2218, 1174, 1248, 957, 1175, - 1187, 1242, 1173, 188, 188, 491, 491, 491, 188, 491, - 491, 188, 491, 491, 1194, 1194, 1239, 1195, 955, 956, - 954, 1238, 1302, 1269, 1884, 1305, 1876, 1307, 1308, 1309, - 1310, 177, 178, 179, 1304, 1753, 957, 1317, 1260, 1781, - 188, 1311, 1312, 605, 1316, 1828, 1213, 1299, 968, 969, - 970, 971, 972, 973, 974, 967, 584, 2203, 977, 2202, - 169, 78, 2192, 955, 956, 954, 2181, 177, 178, 179, - 1235, 1564, 2070, 1359, 955, 956, 954, 2032, 1382, 2008, - 776, 957, 1291, 775, 110, 111, 1929, 1385, 600, 177, - 178, 179, 957, 1562, 1885, 1789, 153, 1259, 177, 178, - 179, 491, 966, 965, 975, 976, 968, 969, 970, 971, - 972, 973, 974, 967, 1777, 1630, 977, 1598, 1597, 1404, - 1407, 1300, 1261, 1249, 1447, 1417, 1386, 1387, 1329, 1245, - 1399, 1244, 1341, 1243, 491, 491, 1320, 1321, 1322, 584, - 1324, 1325, 1360, 1327, 1328, 188, 1905, 177, 178, 179, - 150, 1251, 151, 1954, 2184, 1394, 1954, 2144, 491, 1954, - 2133, 168, 1954, 584, 1491, 188, 1954, 2105, 491, 1439, - 2050, 584, 188, 1395, 188, 584, 602, 603, 1423, 1424, - 1440, 1393, 188, 188, 1582, 584, 569, 1446, 1707, 491, - 1452, 1005, 491, 2018, 584, 1485, 1954, 1959, 1939, 1938, - 1935, 1936, 34, 491, 1935, 1934, 1458, 584, 1490, 1822, - 1396, 2097, 955, 956, 954, 1157, 1807, 1800, 1801, 154, - 1470, 584, 2096, 1464, 1967, 1491, 1492, 1714, 1805, 159, - 957, 953, 584, 1460, 1494, 1157, 1156, 189, 1102, 1101, - 189, 1395, 1791, 1583, 34, 492, 1510, 189, 80, 1393, - 1715, 1525, 1526, 1527, 1894, 189, 1707, 1470, 491, 1514, - 1740, 2037, 188, 1905, 2015, 491, 953, 610, 1490, 1459, - 610, 1561, 1563, 1469, 1513, 1488, 492, 69, 1462, 492, - 189, 492, 2106, 1540, 491, 1509, 1954, 1492, 34, 1546, - 491, 1497, 2086, 1493, 1197, 1490, 1197, 1518, 1582, 1519, - 1520, 1521, 1522, 1937, 1581, 1470, 1498, 1512, 1511, 2038, - 2039, 2040, 1496, 577, 1458, 1530, 1531, 1532, 1533, 69, - 2187, 1677, 1397, 1398, 1470, 1905, 1676, 1568, 1458, 1582, - 1565, 146, 614, 1448, 491, 614, 1382, 1427, 1339, 1458, - 1289, 1382, 1382, 1475, 1478, 1479, 1480, 1476, 1088, 1477, - 1481, 1541, 1553, 1909, 1910, 1551, 781, 189, 1550, 1536, - 1537, 1228, 507, 69, 1786, 780, 1441, 189, 1578, 2136, - 1579, 69, 189, 1557, 1558, 1559, 188, 1591, 2059, 1574, - 188, 188, 188, 188, 188, 1541, 798, 1573, 69, 1966, - 188, 188, 188, 188, 1400, 1401, 1593, 1592, 1406, 1409, - 1410, 1595, 1596, 799, 2026, 2041, 2003, 1159, 1539, 1229, - 1230, 1231, 1915, 1194, 188, 1577, 1827, 1575, 1535, 1529, - 1528, 1275, 1189, 1422, 1185, 1155, 1425, 1426, 94, 1785, - 188, 1225, 174, 188, 491, 1909, 1910, 1830, 2060, 1997, - 1624, 1164, 2205, 2197, 1912, 1894, 1796, 1625, 1626, 1795, - 2042, 2043, 1628, 966, 965, 975, 976, 968, 969, 970, - 971, 972, 973, 974, 967, 1794, 1555, 977, 1601, 1332, - 1914, 1292, 1728, 1731, 1786, 1359, 1226, 1227, 1732, 1733, - 1727, 1479, 1480, 2168, 1618, 975, 976, 968, 969, 970, - 971, 972, 973, 974, 967, 1886, 1696, 977, 147, 152, - 149, 155, 156, 157, 158, 160, 161, 162, 163, 1057, - 2019, 1957, 1705, 1704, 164, 165, 166, 167, 1475, 1478, - 1479, 1480, 1476, 2156, 1477, 1481, 1633, 1729, 188, 2153, - 2189, 2172, 1730, 1656, 2174, 1694, 188, 2180, 2179, 96, - 1790, 2129, 2127, 1695, 1360, 1288, 590, 1642, 966, 965, + 568, 2209, 2196, 1968, 2128, 1829, 1798, 2173, 2057, 2137, + 1719, 2079, 1686, 1571, 81, 3, 1896, 1004, 1505, 1897, + 1432, 1965, 527, 923, 541, 1056, 1049, 1720, 1523, 1538, + 1893, 1543, 1163, 878, 1802, 1783, 1908, 1706, 510, 1784, + 1389, 1855, 1484, 512, 1646, 1782, 1204, 613, 176, 1621, + 145, 188, 1186, 475, 188, 1545, 1297, 1776, 79, 491, + 1381, 188, 580, 756, 1569, 131, 1093, 1086, 1473, 188, + 782, 905, 1466, 589, 1059, 1054, 1434, 1079, 1042, 1077, + 32, 574, 503, 1415, 1076, 940, 514, 1158, 1358, 763, + 491, 785, 1083, 491, 188, 491, 1162, 760, 768, 1276, + 788, 1193, 1449, 1534, 783, 817, 784, 764, 1092, 1066, + 1489, 1302, 77, 610, 1090, 872, 148, 114, 175, 859, + 1178, 115, 498, 772, 108, 109, 8, 76, 1392, 1017, + 7, 6, 1821, 1820, 1600, 1524, 1018, 1263, 2081, 1843, + 1844, 1347, 941, 177, 178, 179, 1346, 1345, 1344, 1343, + 1342, 501, 1335, 502, 1429, 1430, 82, 1684, 575, 595, + 599, 110, 2125, 757, 795, 2036, 116, 2103, 177, 178, + 179, 188, 2102, 821, 2165, 1942, 597, 2052, 820, 1164, + 2053, 188, 2215, 871, 2170, 499, 188, 822, 451, 2208, + 78, 921, 84, 85, 86, 87, 88, 89, 1636, 2148, + 1548, 2199, 1969, 1588, 607, 2169, 2147, 951, 1872, 2000, + 798, 2115, 966, 965, 975, 976, 968, 969, 970, 971, + 972, 973, 974, 967, 110, 614, 977, 774, 467, 823, + 824, 825, 776, 775, 1607, 1685, 941, 468, 1606, 819, + 174, 504, 105, 1922, 182, 183, 777, 465, 1750, 1923, + 1924, 1749, 833, 834, 1751, 837, 838, 839, 840, 1842, + 1490, 843, 844, 845, 846, 847, 848, 849, 850, 851, + 852, 853, 854, 855, 856, 857, 1431, 1500, 1501, 1547, + 1634, 1499, 939, 799, 835, 34, 462, 102, 70, 38, + 39, 1094, 110, 1095, 836, 473, 778, 947, 479, 103, + 874, 951, 897, 553, 898, 559, 560, 557, 558, 830, + 556, 555, 554, 891, 1336, 1337, 1338, 177, 178, 179, + 561, 562, 919, 883, 572, 105, 170, 884, 885, 886, + 885, 886, 571, 1767, 177, 178, 179, 169, 479, 1517, + 2150, 1991, 105, 489, 97, 1831, 1334, 1989, 478, 100, + 493, 487, 99, 98, 1253, 1803, 1570, 1603, 1282, 1285, + 69, 1286, 111, 1287, 1277, 452, 454, 455, 2198, 471, + 472, 480, 860, 153, 1825, 469, 470, 481, 456, 457, + 485, 484, 1826, 461, 458, 460, 466, 917, 478, 464, + 482, 947, 2166, 899, 1834, 904, 1254, 104, 1255, 103, + 1856, 918, 892, 902, 903, 479, 867, 479, 900, 901, + 1615, 842, 1283, 914, 1754, 916, 841, 1832, 1281, 1833, + 1279, 2099, 2116, 2047, 806, 1572, 804, 150, 1467, 151, + 815, 946, 943, 944, 945, 950, 952, 949, 168, 948, + 814, 1941, 797, 1858, 1549, 813, 942, 812, 1172, 173, + 811, 188, 913, 915, 816, 478, 810, 478, 809, 1280, + 808, 803, 779, 2213, 2048, 761, 2216, 873, 908, 912, + 791, 761, 1605, 2146, 797, 759, 491, 491, 491, 1490, + 104, 2185, 107, 761, 790, 1620, 881, 479, 887, 888, + 889, 890, 909, 797, 491, 491, 154, 104, 1192, 1191, + 895, 1860, 773, 1864, 601, 1859, 159, 1857, 920, 832, + 933, 797, 1862, 1835, 483, 797, 807, 1635, 805, 1594, + 1290, 1861, 927, 826, 2138, 946, 943, 944, 945, 950, + 952, 949, 476, 948, 1863, 1865, 1792, 478, 1602, 797, + 942, 1687, 1689, 1881, 1880, 1879, 771, 477, 770, 2151, + 911, 769, 1813, 870, 767, 450, 180, 1614, 1590, 2132, + 1613, 1265, 1264, 1266, 1267, 1268, 2020, 910, 989, 990, + 1764, 1759, 188, 1921, 1665, 1623, 1711, 796, 1662, 1654, + 1622, 1623, 1746, 800, 790, 864, 1622, 1580, 1495, 1070, + 1002, 1047, 882, 801, 876, 1506, 987, 977, 491, 967, + 1046, 188, 977, 188, 188, 71, 491, 1445, 146, 796, + 2211, 802, 491, 2212, 1760, 2210, 790, 793, 794, 880, + 761, 92, 936, 1005, 787, 791, 934, 935, 796, 610, + 894, 956, 954, 1331, 800, 790, 1762, 1688, 957, 1757, + 954, 1874, 896, 786, 801, 1075, 796, 2107, 957, 1043, + 796, 1758, 831, 790, 793, 794, 957, 761, 866, 1416, + 818, 787, 791, 1060, 1906, 861, 93, 862, 924, 925, + 863, 906, 1278, 1303, 796, 177, 178, 179, 1096, 1383, + 1169, 937, 1589, 958, 1020, 1022, 1024, 1026, 1028, 1030, + 1031, 1021, 1023, 1040, 1027, 1029, 865, 1032, 966, 965, 975, 976, 968, 969, 970, 971, 972, 973, 974, 967, - 188, 591, 977, 101, 570, 828, 1412, 1693, 827, 1978, - 1050, 188, 188, 188, 188, 188, 1655, 590, 1721, 1700, - 1716, 1413, 1051, 188, 1061, 1062, 593, 188, 592, 181, - 188, 188, 591, 1712, 188, 188, 188, 1671, 1785, 575, - 1738, 1841, 926, 1815, 1814, 1043, 111, 1752, 1683, 2084, - 171, 1931, 1691, 184, 1930, 587, 588, 593, 1709, 592, - 1576, 1203, 1202, 1190, 1699, 1771, 2013, 1450, 1451, 1560, - 1443, 1295, 1708, 1710, 2098, 2054, 1483, 189, 1638, 1722, - 578, 579, 1725, 1770, 581, 1773, 1774, 1775, 1741, 1734, - 2194, 2193, 1743, 1739, 1768, 1769, 188, 1723, 1724, 1744, - 1726, 1703, 492, 492, 492, 1747, 1299, 491, 2177, 1702, - 2157, 2012, 1953, 491, 1566, 582, 491, 1546, 1197, 1804, - 492, 492, 1756, 491, 80, 2011, 1889, 1808, 1707, 1666, - 1788, 1663, 1755, 1778, 1071, 1819, 2207, 2206, 2207, 1064, - 1787, 2130, 1928, 188, 1649, 1444, 577, 78, 1650, 83, - 75, 1, 461, 1818, 1428, 1041, 474, 2195, 1262, 1657, - 1658, 188, 1177, 1252, 1817, 1664, 1970, 2056, 1667, 1668, - 1960, 1544, 789, 1394, 136, 1507, 1674, 1508, 1675, 2140, - 91, 1678, 1679, 1680, 1681, 1682, 754, 90, 792, 913, - 1567, 1395, 1809, 2051, 1816, 491, 1766, 1692, 189, 1810, - 1516, 1382, 1108, 1106, 1107, 1105, 1110, 1837, 1109, 1836, - 1104, 1333, 488, 1839, 1482, 1840, 1097, 1065, 1651, 1652, - 1853, 829, 464, 1854, 492, 1940, 1330, 189, 1599, 189, - 189, 491, 492, 1845, 1873, 1851, 469, 985, 492, 1669, - 1701, 1748, 188, 1736, 1737, 611, 1867, 604, 1900, 2178, - 2154, 2152, 491, 2126, 2080, 2155, 2124, 2188, 491, 491, - 2171, 1866, 1515, 1721, 1895, 1442, 1053, 2010, 1898, 1888, - 1670, 1014, 1414, 1852, 1080, 513, 1438, 1882, 1352, 528, - 525, 188, 526, 1453, 1713, 959, 1892, 1904, 511, 505, - 1072, 1474, 1472, 1471, 1293, 1084, 1911, 597, 1907, 1078, - 1457, 1604, 1824, 938, 586, 1903, 1913, 1917, 500, 1919, - 95, 1920, 1411, 2114, 1637, 1999, 585, 60, 991, 992, - 993, 994, 995, 996, 997, 998, 999, 1000, 1932, 1933, - 1852, 1948, 37, 188, 495, 188, 188, 188, 2164, 1918, - 929, 491, 594, 31, 30, 29, 2002, 28, 23, 22, - 21, 20, 1956, 19, 188, 25, 18, 17, 16, 106, - 47, 1943, 504, 44, 1944, 42, 113, 112, 1945, 1946, - 45, 1971, 491, 491, 491, 1961, 188, 41, 1925, 868, - 1546, 27, 189, 26, 1955, 1979, 1958, 15, 1964, 14, - 13, 12, 1963, 966, 965, 975, 976, 968, 969, 970, - 971, 972, 973, 974, 967, 11, 10, 977, 9, 5, - 1849, 1850, 492, 4, 932, 1976, 1977, 24, 1003, 2, - 0, 0, 0, 0, 0, 0, 0, 1982, 0, 492, - 492, 1987, 492, 0, 492, 492, 0, 492, 492, 492, - 492, 492, 492, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 492, 0, 1721, 0, 189, 0, 0, 2009, - 0, 0, 0, 0, 0, 2014, 0, 0, 0, 2022, - 0, 0, 0, 0, 2023, 0, 1901, 0, 0, 0, - 0, 0, 2028, 492, 1984, 1985, 2029, 1986, 0, 2030, - 1988, 189, 1990, 0, 491, 491, 0, 1916, 0, 189, - 0, 540, 0, 189, 0, 2045, 0, 491, 0, 2031, - 491, 2033, 0, 0, 189, 2044, 0, 189, 2055, 0, - 0, 0, 0, 0, 0, 0, 2063, 0, 0, 189, - 189, 492, 492, 492, 189, 492, 492, 189, 492, 492, - 0, 0, 0, 0, 0, 491, 491, 491, 188, 2061, - 0, 0, 187, 0, 0, 486, 2073, 2075, 2076, 491, - 2062, 491, 187, 0, 0, 0, 189, 491, 1898, 2077, - 187, 2087, 1898, 2069, 2085, 2089, 2083, 0, 2092, 0, - 0, 0, 0, 2078, 0, 0, 598, 598, 2058, 188, - 0, 2094, 0, 2095, 0, 187, 2091, 0, 0, 0, - 491, 188, 2093, 0, 0, 0, 0, 0, 2104, 0, - 1981, 2108, 0, 2101, 1983, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1992, 1993, 492, 0, 0, - 0, 0, 0, 0, 0, 2123, 0, 0, 0, 1898, - 0, 2007, 2131, 0, 0, 0, 0, 491, 491, 0, - 0, 0, 2134, 0, 0, 0, 0, 0, 2016, 2017, - 492, 492, 2021, 2139, 0, 0, 0, 0, 0, 0, - 0, 189, 187, 491, 0, 2149, 0, 491, 0, 1721, - 2158, 2160, 187, 0, 492, 0, 0, 187, 2163, 0, - 2167, 189, 0, 0, 492, 0, 0, 2176, 189, 2175, - 189, 0, 0, 0, 0, 169, 0, 0, 189, 189, - 0, 2186, 0, 0, 0, 492, 0, 0, 492, 2049, - 0, 0, 0, 0, 0, 2058, 2141, 0, 0, 492, - 111, 0, 0, 0, 0, 0, 0, 0, 2204, 0, - 0, 153, 0, 0, 0, 0, 0, 0, 0, 2214, - 966, 965, 975, 976, 968, 969, 970, 971, 972, 973, - 974, 967, 1357, 2074, 977, 1366, 1367, 1368, 1369, 1370, - 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, - 0, 1125, 1754, 0, 492, 0, 0, 0, 189, 0, - 0, 492, 0, 0, 0, 150, 0, 151, 0, 0, - 0, 0, 0, 0, 958, 0, 168, 0, 0, 0, - 492, 0, 0, 1996, 0, 0, 492, 0, 0, 0, - 0, 0, 1419, 2110, 2111, 2112, 2113, 0, 2117, 0, - 2118, 2119, 2120, 0, 2121, 2122, 0, 0, 0, 0, - 504, 0, 0, 0, 0, 0, 0, 0, 0, 1015, - 0, 0, 1995, 0, 0, 0, 0, 0, 0, 0, - 492, 1846, 0, 0, 154, 0, 0, 0, 0, 0, - 0, 0, 0, 2145, 159, 0, 0, 0, 0, 1052, - 1055, 966, 965, 975, 976, 968, 969, 970, 971, 972, - 973, 974, 967, 0, 1113, 977, 0, 0, 0, 0, - 0, 0, 189, 0, 0, 0, 189, 189, 189, 189, + 1765, 1763, 977, 989, 990, 1058, 1582, 989, 990, 504, + 968, 969, 970, 971, 972, 973, 974, 967, 1015, 1416, + 977, 1672, 879, 1587, 1048, 1384, 1585, 177, 178, 179, + 1586, 614, 965, 975, 976, 968, 969, 970, 971, 972, + 973, 974, 967, 806, 804, 977, 188, 1647, 1052, 1055, + 1154, 970, 971, 972, 973, 974, 967, 2200, 1926, 977, + 1165, 1166, 1167, 1168, 2190, 147, 152, 149, 155, 156, + 157, 158, 160, 161, 162, 163, 491, 907, 1188, 1304, + 1660, 164, 165, 166, 167, 2201, 1197, 1772, 1659, 1063, + 1201, 2217, 2191, 491, 491, 1365, 491, 172, 491, 491, + 69, 491, 491, 491, 491, 491, 491, 1761, 1883, 1363, + 1364, 1362, 1361, 955, 956, 954, 491, 955, 956, 954, + 188, 1237, 1353, 1355, 1356, 1876, 569, 2035, 1450, 1451, + 1272, 957, 1198, 2034, 1354, 957, 1250, 1177, 1196, 1184, + 1206, 1947, 1207, 1780, 1209, 1211, 1582, 491, 1215, 1217, + 1219, 1221, 1223, 2203, 1447, 188, 1884, 1232, 1233, 2218, + 955, 956, 954, 188, 1270, 1296, 1091, 188, 1153, 1661, + 1584, 1779, 1552, 1170, 1171, 1273, 1160, 189, 957, 1234, + 189, 1161, 1258, 188, 1257, 492, 1195, 189, 1175, 1271, + 188, 1174, 1173, 766, 1256, 189, 1187, 188, 188, 491, + 491, 491, 188, 491, 491, 188, 491, 491, 1260, 1781, + 955, 956, 954, 1248, 1299, 1307, 492, 1446, 1242, 492, + 189, 492, 1311, 1269, 1313, 1314, 1315, 1316, 957, 1318, + 188, 1240, 1241, 955, 956, 954, 1239, 1246, 1247, 1639, + 1640, 1641, 955, 956, 954, 1305, 1306, 1238, 1194, 1194, + 600, 957, 1235, 955, 956, 954, 605, 1213, 2202, 1310, + 957, 177, 178, 179, 2192, 1753, 1317, 1259, 1382, 2181, + 2070, 957, 2032, 110, 2008, 1359, 1291, 1385, 177, 178, + 179, 776, 775, 530, 529, 532, 533, 534, 535, 1929, + 1885, 491, 531, 1789, 536, 1309, 1777, 189, 177, 178, + 179, 1630, 1564, 1598, 177, 178, 179, 189, 1562, 177, + 178, 179, 189, 1251, 1597, 1300, 1393, 1261, 1386, 1387, + 1249, 1399, 1341, 1245, 491, 491, 1244, 1243, 1828, 1954, + 2184, 1954, 2144, 1954, 2133, 188, 78, 1360, 602, 603, + 1395, 1954, 584, 584, 1404, 1407, 2097, 1301, 491, 1394, + 1417, 1954, 2105, 1439, 2096, 188, 2050, 584, 491, 1005, + 1582, 584, 188, 1967, 188, 2018, 584, 1423, 1424, 1954, + 1959, 34, 188, 188, 1939, 1938, 1935, 1936, 1805, 491, + 1935, 1934, 491, 1491, 1393, 1791, 1485, 1458, 584, 1491, + 1321, 1322, 1323, 491, 1325, 1326, 1714, 1328, 1329, 1440, + 1490, 1822, 610, 1157, 1807, 610, 1396, 80, 1395, 1452, + 1800, 1801, 1470, 584, 584, 953, 584, 1464, 1514, 1715, + 1348, 1349, 1350, 1351, 1460, 1400, 1401, 1157, 1156, 1406, + 1409, 1410, 1102, 1101, 34, 1525, 1526, 1527, 1905, 2015, + 1894, 1583, 1509, 953, 1707, 1492, 69, 1707, 491, 1905, + 1469, 1492, 188, 1494, 1422, 491, 1510, 1425, 1426, 1490, + 1740, 1561, 1563, 1513, 1459, 1488, 2106, 1462, 1490, 1954, + 2037, 1937, 1540, 1458, 491, 1402, 1403, 1470, 1498, 1546, + 491, 34, 2086, 1677, 1197, 1493, 1197, 1518, 1497, 1519, + 1520, 1521, 1522, 1496, 1581, 1676, 1582, 1512, 1228, 1511, + 1458, 1470, 1582, 1565, 1448, 1530, 1531, 1532, 1533, 69, + 577, 1427, 504, 1470, 614, 1339, 1905, 614, 2038, 2039, + 2040, 1289, 2187, 1088, 491, 781, 1382, 780, 2136, 69, + 2059, 1382, 1382, 1786, 1458, 1966, 1578, 1568, 1579, 2026, + 1159, 1541, 1539, 1536, 1537, 1827, 1229, 1230, 1231, 2041, + 1553, 1551, 1557, 1558, 1559, 1550, 69, 1830, 1575, 584, + 1535, 1529, 1528, 1504, 798, 1275, 188, 1189, 1185, 1574, + 188, 188, 188, 188, 188, 1541, 1155, 189, 1573, 1418, + 188, 188, 188, 188, 1577, 69, 1593, 1591, 94, 1592, + 1785, 1595, 1596, 188, 2042, 2043, 2060, 174, 1225, 1164, + 188, 2205, 492, 492, 492, 966, 965, 975, 976, 968, + 969, 970, 971, 972, 973, 974, 967, 1909, 1910, 977, + 492, 492, 1542, 188, 491, 2197, 1912, 1894, 1796, 1625, + 1626, 2168, 1795, 1794, 1628, 1786, 1555, 799, 1332, 1292, + 1731, 1629, 1846, 1226, 1227, 1732, 1915, 1194, 975, 976, + 968, 969, 970, 971, 972, 973, 974, 967, 1601, 1914, + 977, 583, 966, 965, 975, 976, 968, 969, 970, 971, + 972, 973, 974, 967, 1618, 1729, 977, 1359, 1728, 1733, + 1730, 1479, 1480, 961, 1727, 964, 1886, 1696, 1057, 2019, + 1957, 978, 979, 980, 981, 982, 983, 984, 189, 962, + 963, 960, 966, 965, 975, 976, 968, 969, 970, 971, + 972, 973, 974, 967, 1705, 1633, 977, 1704, 188, 2156, + 2153, 2189, 2172, 2174, 492, 2179, 188, 189, 2180, 189, + 189, 2129, 492, 96, 2127, 1288, 590, 570, 492, 1360, + 101, 1642, 1475, 1478, 1479, 1480, 1476, 1694, 1477, 1481, + 188, 591, 1656, 1790, 828, 1695, 827, 1693, 1050, 1978, + 1785, 188, 188, 188, 188, 188, 1841, 575, 1655, 1700, + 1051, 1716, 926, 188, 1061, 1062, 593, 188, 592, 590, + 188, 188, 1815, 181, 188, 188, 188, 171, 1671, 1412, + 184, 1738, 1709, 1712, 591, 1043, 1683, 1752, 1814, 111, + 2084, 1931, 1691, 1721, 1413, 1930, 1576, 1203, 1202, 1651, + 1652, 1190, 2013, 1443, 1699, 1771, 1560, 587, 588, 593, + 1295, 592, 1741, 1708, 1710, 1638, 1743, 1450, 1451, 2098, + 1669, 2054, 1770, 1299, 1773, 1774, 1775, 1483, 1768, 1769, + 1734, 1723, 1724, 1703, 1726, 1722, 188, 581, 1725, 1755, + 1739, 1702, 1744, 578, 579, 1747, 2194, 491, 2193, 2177, + 2157, 2012, 1953, 491, 1566, 582, 491, 1546, 1197, 80, + 2011, 1756, 1808, 491, 1889, 1707, 1666, 1778, 2207, 2206, + 2207, 1663, 189, 1673, 1071, 1819, 1064, 2130, 1928, 1444, + 1787, 577, 78, 188, 1810, 83, 75, 1, 463, 1428, + 1041, 474, 1818, 2195, 1804, 1262, 1252, 1970, 2056, 1960, + 1544, 188, 492, 1697, 1698, 1055, 789, 1817, 1395, 136, + 1809, 1177, 1507, 1508, 2140, 91, 754, 1394, 90, 492, + 492, 792, 492, 893, 492, 492, 1567, 492, 492, 492, + 492, 492, 492, 1788, 2051, 491, 1816, 1766, 1516, 1108, + 1106, 1382, 492, 1107, 1105, 1837, 189, 1110, 1836, 1475, + 1478, 1479, 1480, 1476, 1109, 1477, 1481, 1104, 1852, 1909, + 1910, 1853, 1333, 1854, 488, 1482, 1097, 1065, 1845, 829, + 453, 491, 1940, 492, 1851, 1873, 1839, 1330, 1599, 1840, + 459, 189, 188, 1867, 985, 1701, 1748, 611, 604, 189, + 1900, 2178, 491, 189, 2154, 2152, 2126, 2080, 491, 491, + 2155, 1866, 2124, 2188, 2171, 1895, 1515, 1442, 1053, 189, + 2010, 1888, 1670, 1014, 1414, 1852, 189, 1882, 1080, 513, + 1898, 188, 1438, 189, 189, 492, 492, 492, 189, 492, + 492, 189, 492, 492, 1352, 528, 525, 1904, 1721, 526, + 1453, 1713, 1913, 959, 511, 1903, 505, 1072, 1474, 1472, + 1471, 1293, 1084, 1911, 1907, 1892, 189, 1917, 1078, 1919, + 1457, 1920, 1604, 1918, 1824, 938, 586, 1932, 1933, 500, + 95, 1948, 1411, 188, 2114, 188, 188, 188, 1637, 1999, + 585, 491, 60, 37, 495, 1925, 2164, 929, 594, 31, + 30, 29, 28, 23, 188, 22, 21, 20, 19, 25, + 1944, 18, 17, 1943, 16, 106, 1961, 47, 44, 42, + 113, 1971, 491, 491, 491, 112, 188, 492, 45, 1958, + 1546, 41, 868, 27, 26, 1979, 15, 1956, 14, 1875, + 13, 1964, 12, 11, 1963, 10, 9, 5, 4, 932, + 24, 1003, 2, 0, 1955, 0, 0, 0, 0, 0, + 492, 492, 0, 1976, 1977, 0, 0, 0, 0, 0, + 0, 189, 0, 0, 1890, 0, 0, 0, 0, 0, + 1987, 1945, 1946, 0, 492, 0, 0, 0, 0, 0, + 0, 189, 0, 0, 492, 0, 0, 0, 189, 0, + 189, 0, 0, 2009, 0, 0, 1982, 0, 189, 189, + 0, 0, 0, 0, 0, 492, 2014, 0, 492, 0, + 2022, 0, 0, 2023, 0, 0, 0, 0, 0, 492, + 0, 0, 0, 2028, 1984, 1985, 0, 1986, 0, 1721, + 1988, 2030, 1990, 0, 491, 491, 2029, 0, 0, 0, + 2045, 0, 0, 2031, 0, 2033, 0, 491, 0, 0, + 491, 2044, 0, 2055, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 507, 2063, 540, 0, 0, + 0, 0, 0, 2058, 492, 0, 0, 0, 189, 0, + 0, 492, 0, 0, 0, 491, 491, 491, 188, 2061, + 0, 2073, 2075, 2076, 2062, 0, 0, 0, 0, 491, + 492, 491, 0, 0, 0, 0, 492, 491, 2077, 0, + 2083, 0, 2087, 2092, 0, 2085, 2089, 2078, 187, 0, + 1898, 486, 0, 0, 1898, 0, 0, 0, 187, 188, + 2094, 0, 2095, 2001, 0, 0, 187, 0, 0, 0, + 491, 188, 2069, 0, 2101, 0, 2108, 1997, 0, 2104, + 492, 0, 598, 598, 169, 0, 504, 0, 0, 0, + 0, 187, 0, 2024, 0, 2091, 2025, 0, 0, 2027, + 2123, 2093, 0, 0, 0, 0, 0, 0, 0, 111, + 0, 0, 0, 2131, 0, 0, 0, 491, 491, 0, + 153, 1898, 189, 2134, 0, 2139, 189, 189, 189, 189, 189, 0, 0, 0, 0, 0, 189, 189, 189, 189, - 2182, 2183, 966, 965, 975, 976, 968, 969, 970, 971, - 972, 973, 974, 967, 0, 0, 977, 1126, 0, 0, - 189, 965, 975, 976, 968, 969, 970, 971, 972, 973, - 974, 967, 187, 0, 977, 0, 189, 0, 0, 189, - 492, 966, 965, 975, 976, 968, 969, 970, 971, 972, - 973, 974, 967, 0, 0, 977, 146, 0, 0, 0, - 0, 0, 0, 0, 1139, 1142, 1143, 1144, 1145, 1146, - 1147, 0, 1148, 1149, 1150, 1151, 1152, 1127, 1128, 1129, - 1130, 1111, 1112, 1140, 0, 1114, 1648, 1115, 1116, 1117, - 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1131, 1132, 1133, - 1134, 1135, 1136, 1137, 1138, 0, 966, 965, 975, 976, - 968, 969, 970, 971, 972, 973, 974, 967, 0, 0, - 977, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2058, 2141, 0, 491, 0, 0, 2149, 491, 0, 189, + 0, 2158, 0, 2163, 2160, 0, 189, 0, 0, 0, + 2167, 0, 0, 0, 0, 0, 0, 2176, 187, 2175, + 0, 0, 0, 2003, 150, 1996, 151, 0, 187, 189, + 492, 2186, 0, 187, 1721, 168, 966, 965, 975, 976, + 968, 969, 970, 971, 972, 973, 974, 967, 2082, 504, + 977, 0, 0, 0, 0, 0, 0, 2002, 2204, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2214, + 966, 965, 975, 976, 968, 969, 970, 971, 972, 973, + 974, 967, 0, 0, 977, 0, 0, 0, 0, 0, + 0, 0, 0, 154, 0, 0, 0, 1995, 0, 0, + 0, 0, 0, 159, 966, 965, 975, 976, 968, 969, + 970, 971, 972, 973, 974, 967, 0, 1994, 977, 0, 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, - 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 189, 1141, 598, 0, - 0, 0, 0, 0, 0, 0, 0, 189, 189, 189, - 189, 189, 187, 1994, 187, 1087, 0, 0, 0, 189, + 0, 0, 189, 0, 966, 965, 975, 976, 968, 969, + 970, 971, 972, 973, 974, 967, 0, 0, 977, 0, + 0, 0, 0, 1397, 1398, 0, 189, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 539, 189, 189, 189, + 189, 189, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, 189, 0, 0, 189, 189, 0, 0, - 189, 189, 189, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 539, 0, 147, 152, 149, 155, 156, 157, 158, - 160, 161, 162, 163, 0, 0, 0, 0, 0, 164, - 165, 166, 167, 0, 0, 0, 1643, 1644, 1645, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1301, 0, - 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 492, 0, 0, 0, 0, 0, 492, - 490, 0, 492, 0, 0, 0, 0, 0, 0, 492, - 0, 0, 966, 965, 975, 976, 968, 969, 970, 971, - 972, 973, 974, 967, 0, 0, 977, 0, 0, 189, - 0, 612, 0, 0, 758, 0, 765, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, - 0, 1348, 1349, 1350, 1351, 0, 0, 187, 0, 0, - 0, 0, 0, 0, 0, 0, 961, 0, 964, 0, - 0, 0, 0, 0, 978, 979, 980, 981, 982, 983, - 984, 492, 962, 963, 960, 966, 965, 975, 976, 968, - 969, 970, 971, 972, 973, 974, 967, 0, 0, 977, - 1200, 0, 0, 0, 0, 0, 1402, 1403, 0, 0, - 0, 0, 542, 33, 0, 0, 0, 492, 0, 0, - 0, 0, 0, 0, 0, 1200, 1200, 0, 189, 0, - 0, 187, 0, 0, 0, 0, 0, 0, 492, 0, - 0, 0, 0, 504, 492, 492, 33, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 187, 189, 0, 0, - 0, 0, 0, 0, 187, 0, 0, 0, 1298, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, - 576, 0, 187, 0, 1504, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1318, 1319, 0, 0, 0, 187, - 0, 0, 187, 0, 0, 0, 0, 0, 0, 189, + 189, 189, 189, 0, 0, 0, 0, 1441, 0, 0, + 0, 0, 0, 0, 0, 146, 966, 965, 975, 976, + 968, 969, 970, 971, 972, 973, 974, 967, 0, 0, + 977, 0, 0, 0, 0, 490, 966, 965, 975, 976, + 968, 969, 970, 971, 972, 973, 974, 967, 0, 0, + 977, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 189, 0, 0, 0, 612, 0, 0, 758, + 0, 765, 0, 492, 0, 0, 0, 0, 0, 492, + 0, 0, 492, 0, 0, 0, 0, 0, 0, 492, + 34, 35, 36, 70, 38, 39, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 187, 189, + 74, 1648, 0, 0, 0, 40, 66, 67, 0, 64, + 68, 0, 0, 0, 0, 0, 65, 189, 0, 0, + 0, 966, 965, 975, 976, 968, 969, 970, 971, 972, + 973, 974, 967, 0, 0, 977, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, + 0, 492, 0, 0, 0, 69, 0, 0, 0, 0, + 0, 991, 992, 993, 994, 995, 996, 997, 998, 999, + 1000, 0, 147, 152, 149, 155, 156, 157, 158, 160, + 161, 162, 163, 0, 0, 0, 0, 492, 164, 165, + 166, 167, 0, 0, 0, 0, 0, 0, 189, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 492, 0, + 0, 0, 0, 0, 492, 492, 0, 0, 0, 187, + 0, 0, 0, 0, 0, 0, 0, 43, 46, 49, + 48, 51, 0, 63, 598, 0, 0, 189, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, + 187, 1087, 0, 0, 0, 0, 0, 0, 52, 73, + 72, 0, 0, 61, 62, 50, 966, 965, 975, 976, + 968, 969, 970, 971, 972, 973, 974, 967, 0, 0, + 977, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 189, 189, 189, 0, 0, 0, 492, 0, 0, + 54, 55, 0, 56, 57, 58, 59, 0, 0, 0, + 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 492, 492, + 492, 0, 189, 0, 0, 1649, 0, 0, 0, 1650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 189, 187, 0, 0, 0, 0, 0, 0, 0, 0, - 1847, 1848, 0, 1542, 0, 0, 0, 0, 492, 492, - 492, 0, 189, 0, 0, 1868, 1869, 0, 1870, 1871, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1877, - 1878, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1657, 1658, 0, 0, 0, 0, 1664, 0, 0, 1667, + 1668, 0, 0, 0, 0, 0, 0, 1674, 0, 1675, + 0, 0, 1678, 1679, 1680, 1681, 1682, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1692, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 598, 1298, 0, 0, 0, 598, 598, - 0, 0, 598, 598, 598, 0, 0, 0, 1200, 0, + 71, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 598, 598, 598, - 598, 598, 0, 0, 0, 0, 1436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1927, 0, 0, 0, 187, 0, 0, 0, - 0, 0, 1298, 187, 0, 187, 0, 0, 0, 0, - 492, 492, 0, 187, 187, 0, 0, 0, 0, 0, - 0, 0, 0, 492, 0, 0, 492, 0, 0, 0, + 0, 0, 0, 0, 1736, 1737, 0, 0, 0, 0, + 0, 0, 612, 612, 612, 0, 1200, 0, 0, 0, + 492, 492, 0, 0, 0, 0, 0, 0, 0, 0, + 928, 930, 0, 492, 0, 0, 492, 0, 0, 0, + 0, 1200, 1200, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 612, 612, 612, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 492, 492, 492, 189, 928, 930, 0, 0, 0, - 0, 0, 0, 0, 0, 492, 0, 492, 0, 1980, - 0, 0, 0, 492, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 187, 0, 0, 0, 1044, 0, 0, - 0, 0, 0, 0, 0, 189, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 492, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 492, 492, 492, 189, 0, 0, 0, 0, 0, + 0, 0, 187, 0, 0, 492, 0, 492, 0, 0, + 187, 0, 0, 492, 1298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1673, 0, 0, 0, 186, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 494, 0, - 0, 0, 0, 492, 492, 0, 573, 0, 0, 1068, - 0, 0, 0, 0, 1697, 1698, 1055, 612, 0, 0, - 0, 0, 0, 1098, 0, 0, 0, 0, 0, 492, - 0, 762, 0, 492, 0, 0, 0, 0, 0, 0, + 187, 0, 0, 0, 0, 189, 0, 187, 0, 0, + 0, 0, 0, 0, 1319, 1320, 492, 189, 0, 187, + 0, 0, 187, 0, 1068, 0, 0, 0, 0, 0, + 0, 0, 612, 0, 0, 0, 0, 0, 1098, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, - 0, 187, 187, 187, 187, 187, 0, 0, 922, 922, - 922, 187, 187, 187, 187, 0, 0, 2064, 2065, 2066, - 2067, 2068, 0, 0, 0, 2071, 2072, 0, 33, 0, - 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, - 0, 986, 988, 0, 0, 0, 0, 0, 0, 0, - 0, 187, 0, 0, 187, 0, 0, 0, 858, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 869, 0, - 0, 0, 1001, 875, 0, 0, 1006, 1007, 1008, 1009, - 1010, 1011, 1012, 1013, 0, 1016, 1019, 1019, 1019, 1025, - 1019, 1019, 1025, 1019, 1033, 1034, 1035, 1036, 1037, 1038, - 1039, 0, 0, 0, 0, 0, 1045, 0, 0, 33, - 0, 0, 598, 598, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 598, 0, 1081, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 758, 0, 187, - 0, 0, 0, 0, 0, 0, 0, 1436, 2161, 0, - 1199, 0, 0, 0, 1205, 1205, 0, 1205, 0, 1205, - 1205, 0, 1214, 1205, 1205, 1205, 1205, 1205, 0, 0, - 598, 187, 0, 0, 0, 1199, 1199, 758, 0, 0, - 1875, 1200, 187, 187, 187, 187, 187, 0, 0, 0, - 0, 0, 0, 0, 1735, 0, 0, 0, 187, 0, - 0, 187, 187, 0, 0, 187, 1745, 1298, 1274, 0, - 0, 169, 0, 0, 0, 1890, 0, 0, 0, 0, - 0, 0, 1176, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 111, 0, 133, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1849, 1850, 492, 492, 1357, 0, 0, 1366, 1367, + 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, + 1378, 1379, 1380, 0, 0, 0, 0, 0, 0, 492, + 0, 0, 0, 492, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 598, + 1298, 0, 0, 0, 598, 598, 0, 0, 598, 598, + 598, 0, 0, 0, 1200, 1419, 0, 1901, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 598, 598, 598, 598, 598, 1916, 0, + 0, 0, 1436, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 187, 0, 0, 0, 0, 0, 1298, 187, + 0, 187, 0, 0, 0, 0, 0, 0, 0, 187, + 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 758, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1199, 0, 0, 0, 1205, + 1205, 0, 1205, 0, 1205, 1205, 0, 1214, 1205, 1205, + 1205, 1205, 1205, 0, 0, 0, 0, 0, 0, 0, + 1199, 1199, 758, 0, 0, 1044, 0, 0, 0, 0, + 0, 1981, 0, 0, 0, 1983, 0, 0, 0, 187, + 542, 33, 0, 0, 0, 0, 1992, 1993, 0, 0, + 0, 0, 0, 1274, 0, 0, 0, 0, 0, 0, + 0, 0, 2007, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 0, 186, 0, 0, 2016, + 2017, 0, 0, 2021, 0, 0, 494, 0, 0, 0, + 0, 0, 0, 0, 573, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 612, 612, 612, 0, 612, + 612, 0, 612, 612, 0, 0, 0, 0, 576, 762, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2049, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 187, 0, 0, 0, 187, 187, 187, + 187, 187, 0, 0, 0, 0, 0, 187, 187, 187, + 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 187, 0, 0, 0, 2074, 0, 0, 187, 0, 0, + 0, 0, 0, 0, 0, 0, 858, 1388, 0, 612, + 0, 0, 0, 0, 0, 0, 869, 0, 0, 0, + 187, 875, 0, 1199, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1420, 1421, 0, 0, 0, 0, 0, 0, 0, 1643, + 1644, 1645, 0, 0, 2110, 2111, 2112, 2113, 0, 2117, + 0, 2118, 2119, 2120, 1454, 2121, 2122, 0, 0, 0, + 0, 0, 0, 0, 1068, 0, 0, 612, 598, 598, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 612, 0, 0, 612, 598, + 0, 169, 0, 0, 2145, 0, 0, 0, 0, 758, + 0, 0, 1797, 0, 0, 187, 0, 0, 0, 0, + 0, 0, 0, 1436, 0, 0, 111, 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, - 0, 0, 0, 0, 0, 0, 612, 612, 612, 0, - 612, 612, 0, 612, 612, 0, 0, 187, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, - 0, 0, 1200, 132, 0, 0, 0, 0, 0, 0, - 0, 0, 1298, 0, 0, 0, 0, 0, 0, 0, - 0, 150, 0, 151, 0, 0, 0, 0, 1180, 1181, - 142, 141, 168, 0, 187, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 877, 0, - 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1388, 0, 612, 0, 0, 0, 0, 0, - 137, 1182, 144, 0, 1179, 598, 138, 139, 1199, 0, - 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 159, 0, 0, 0, 2001, 1420, 1421, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 504, 0, 1454, - 0, 0, 0, 187, 2024, 0, 0, 2025, 0, 1068, - 2027, 0, 612, 0, 0, 0, 1200, 922, 922, 922, - 0, 922, 922, 0, 922, 922, 0, 0, 0, 0, - 612, 0, 0, 612, 0, 0, 0, 0, 0, 0, - 0, 0, 187, 0, 758, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1074, 0, - 0, 1085, 146, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 187, 0, 187, 187, 187, 765, - 0, 0, 0, 0, 0, 1200, 1556, 0, 0, 2082, - 504, 0, 0, 0, 169, 187, 0, 0, 0, 0, - 0, 0, 0, 140, 0, 758, 0, 0, 0, 0, - 0, 765, 0, 0, 0, 134, 0, 187, 135, 111, - 0, 133, 0, 34, 35, 36, 70, 38, 39, 0, - 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 74, 0, 0, 0, 0, 40, 66, - 67, 0, 64, 68, 0, 758, 0, 0, 0, 65, - 0, 143, 0, 0, 0, 0, 132, 0, 0, 0, - 0, 0, 0, 0, 1486, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 150, 0, 151, 1200, 53, 0, - 0, 120, 121, 142, 141, 168, 0, 0, 69, 0, - 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, + 0, 0, 0, 0, 0, 0, 598, 187, 0, 0, + 0, 2182, 2183, 0, 0, 0, 0, 1200, 187, 187, + 187, 187, 187, 0, 765, 0, 0, 0, 143, 0, + 1735, 1556, 0, 132, 187, 0, 0, 187, 187, 0, + 0, 187, 1745, 1298, 0, 0, 0, 0, 0, 0, + 758, 150, 0, 151, 0, 0, 765, 0, 1180, 1181, + 142, 141, 168, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 758, 0, 0, 187, 0, 0, 0, 0, 0, 0, + 137, 1182, 144, 0, 1179, 0, 138, 139, 1200, 0, + 154, 0, 0, 0, 0, 0, 0, 0, 1298, 0, + 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 877, 0, 0, 0, + 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 922, 922, 922, 0, + 0, 0, 0, 1847, 1848, 0, 0, 0, 0, 0, + 1632, 598, 0, 0, 0, 0, 33, 0, 1868, 1869, + 0, 1870, 1871, 0, 0, 0, 0, 0, 0, 986, + 988, 0, 1877, 1878, 0, 0, 0, 0, 0, 0, + 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, + 1001, 0, 0, 0, 1006, 1007, 1008, 1009, 1010, 1011, + 1012, 1013, 1200, 1016, 1019, 1019, 1019, 1025, 1019, 1019, + 1025, 1019, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 0, + 0, 0, 0, 140, 1045, 0, 0, 33, 187, 0, + 0, 0, 0, 0, 0, 134, 1074, 0, 135, 1085, + 0, 0, 0, 0, 0, 1927, 0, 0, 0, 0, + 0, 0, 0, 1081, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1199, 0, 0, 0, + 187, 0, 187, 187, 187, 0, 0, 0, 0, 0, + 0, 1200, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, + 0, 0, 1980, 0, 0, 0, 0, 0, 0, 147, 152, 149, 155, 156, 157, 158, 160, 161, 162, 163, 0, 0, 0, 0, 0, 164, 165, 166, 167, 0, - 0, 0, 0, 137, 118, 144, 125, 117, 0, 138, - 139, 0, 0, 154, 0, 1632, 0, 0, 0, 0, - 0, 0, 0, 159, 126, 0, 0, 0, 0, 0, - 43, 46, 49, 48, 51, 0, 63, 1236, 129, 127, - 122, 123, 124, 128, 0, 0, 0, 0, 119, 1436, - 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, - 0, 52, 73, 72, 0, 0, 61, 62, 50, 0, - 0, 0, 1284, 0, 0, 0, 0, 0, 0, 0, - 1294, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 187, 0, 0, 0, 0, 1303, 0, 0, 1306, 0, - 0, 0, 187, 54, 55, 0, 56, 57, 58, 59, - 0, 0, 0, 0, 0, 1323, 0, 0, 1326, 0, - 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1085, 0, 0, - 0, 1199, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1799, 0, 0, 0, 1199, 0, 1806, + 0, 0, 1799, 0, 0, 0, 0, 612, 0, 1811, + 0, 1103, 0, 1200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1200, 0, 0, 0, 140, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, - 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1653, 0, 1799, 576, - 0, 0, 1199, 0, 1806, 0, 0, 1799, 0, 0, - 0, 0, 612, 0, 1811, 0, 0, 0, 0, 0, - 0, 0, 1461, 0, 0, 0, 0, 0, 0, 1465, - 0, 1468, 0, 0, 0, 0, 1690, 0, 0, 0, - 1487, 0, 147, 152, 149, 155, 156, 157, 158, 160, - 161, 162, 163, 0, 0, 0, 0, 0, 164, 165, - 166, 167, 1081, 0, 0, 0, 0, 0, 0, 1717, - 1718, 0, 0, 1081, 1081, 1081, 1081, 1081, 0, 0, - 0, 0, 0, 0, 0, 0, 612, 0, 0, 1486, - 0, 0, 1081, 0, 0, 0, 1081, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1554, - 0, 0, 1205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 612, 0, 0, 1199, 0, 0, 1902, - 1205, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 612, 0, 0, 0, 1236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2064, 2065, 2066, 2067, 2068, 0, 0, 0, 2071, 2072, + 0, 0, 0, 0, 0, 1436, 0, 1205, 0, 0, + 1284, 0, 0, 0, 0, 0, 0, 0, 1294, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 612, 0, + 0, 1199, 0, 0, 1902, 1205, 0, 0, 1308, 0, + 0, 0, 0, 0, 0, 1312, 187, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1324, 187, 0, + 1327, 0, 0, 0, 0, 0, 0, 0, 0, 922, + 922, 922, 0, 922, 922, 0, 922, 922, 0, 0, + 169, 0, 0, 0, 0, 1085, 0, 0, 0, 0, + 0, 1176, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 111, 0, 133, 0, 0, + 0, 0, 0, 0, 0, 0, 153, 758, 0, 0, + 1199, 0, 0, 0, 0, 0, 0, 0, 1200, 0, + 0, 2161, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 143, 1972, 1973, + 1974, 0, 132, 0, 0, 0, 0, 0, 0, 0, + 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 150, 0, 151, 0, 0, 0, 0, 1180, 1181, 142, + 141, 168, 0, 0, 0, 111, 0, 133, 0, 0, + 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1812, 0, 0, 0, + 1461, 0, 0, 0, 0, 0, 0, 1465, 0, 1468, + 0, 0, 1199, 0, 0, 0, 0, 143, 1487, 137, + 1182, 144, 132, 1179, 0, 138, 139, 0, 0, 154, + 0, 0, 1486, 0, 0, 0, 0, 0, 0, 159, + 150, 0, 151, 0, 0, 0, 0, 120, 121, 142, + 141, 168, 0, 0, 0, 0, 0, 0, 0, 0, + 1799, 2046, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1799, 0, 0, 612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1554, 0, 137, + 118, 144, 125, 117, 0, 138, 139, 0, 0, 154, + 0, 1799, 1799, 1799, 0, 0, 0, 0, 0, 159, + 126, 0, 0, 0, 0, 2088, 0, 2090, 0, 0, + 0, 0, 0, 1799, 129, 127, 122, 123, 124, 128, + 0, 146, 0, 0, 119, 0, 0, 0, 0, 0, + 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1799, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 134, 0, 0, 135, 0, 0, + 0, 1085, 0, 612, 612, 1608, 1609, 1610, 1611, 1612, + 0, 146, 0, 0, 0, 1616, 1617, 1085, 1619, 0, + 0, 0, 0, 0, 0, 0, 0, 1199, 1624, 2159, + 0, 0, 0, 1799, 1125, 1627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 758, 1085, 0, 1199, 0, 1608, 1609, 1610, - 1611, 1612, 0, 0, 0, 0, 0, 1616, 1617, 1085, - 1619, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1972, 1973, 1974, 0, 0, 0, 0, - 0, 1627, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1629, 0, 0, - 1631, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1631, 0, + 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 134, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1899, 0, - 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1199, 0, 0, - 0, 0, 0, 1081, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 147, 152, + 149, 155, 156, 157, 158, 160, 161, 162, 163, 0, + 0, 0, 0, 0, 164, 165, 166, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1653, 0, 0, 576, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1799, 2046, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1799, 0, - 0, 612, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1690, 0, 0, 0, 147, 152, + 149, 155, 156, 157, 158, 160, 161, 162, 163, 0, + 1126, 0, 0, 0, 164, 165, 166, 167, 0, 0, + 1081, 0, 0, 0, 0, 0, 0, 1717, 1718, 0, + 0, 1081, 1081, 1081, 1081, 1081, 1742, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1486, 0, 0, + 1081, 0, 0, 0, 1081, 0, 0, 1139, 1142, 1143, + 1144, 1145, 1146, 1147, 0, 1148, 1149, 1150, 1151, 1152, + 1127, 1128, 1129, 1130, 1111, 1112, 1140, 0, 1114, 0, + 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, + 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 0, 0, + 0, 1793, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1799, 1799, 1799, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1742, 0, - 2088, 0, 2090, 0, 0, 0, 0, 0, 1799, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1998, 0, 0, 0, 0, - 0, 0, 2004, 2005, 2006, 0, 0, 0, 0, 0, - 0, 1799, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1812, 0, 0, 0, 1823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1793, 0, 0, 0, 0, 0, 0, + 1141, 0, 0, 0, 0, 0, 1838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 612, 612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1823, 0, 1199, 0, 2159, 0, 0, 0, 1799, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1899, 0, - 33, 0, 1899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 33, 0, 1887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1899, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 33, 2135, 0, 0, 0, 0, 0, 0, 0, + 0, 1081, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1949, 0, + 1950, 1951, 1952, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1949, 0, 1950, 1951, 1952, 0, 0, 0, 0, 0, + 0, 1975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1998, 0, 0, 0, 0, 0, 0, + 2004, 2005, 2006, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 736, 723, 0, 0, - 672, 739, 643, 661, 748, 663, 666, 706, 623, 685, - 330, 658, 0, 647, 619, 654, 620, 645, 674, 241, - 678, 642, 725, 688, 738, 288, 0, 625, 648, 344, - 708, 381, 227, 297, 295, 409, 251, 244, 240, 226, - 272, 303, 342, 399, 336, 745, 292, 695, 0, 390, - 315, 0, 0, 0, 676, 728, 683, 719, 671, 707, - 632, 694, 740, 659, 703, 741, 278, 225, 195, 327, - 391, 254, 0, 0, 0, 177, 178, 179, 0, 2142, - 2143, 0, 0, 0, 0, 0, 217, 0, 223, 700, - 735, 656, 702, 237, 276, 243, 236, 406, 705, 751, - 618, 697, 0, 621, 624, 747, 731, 651, 652, 0, - 0, 0, 0, 0, 0, 0, 675, 684, 716, 669, - 0, 0, 0, 0, 0, 0, 0, 0, 649, 0, - 693, 0, 0, 0, 628, 622, 2100, 0, 0, 0, - 673, 0, 0, 0, 631, 0, 650, 717, 2109, 616, - 262, 626, 316, 721, 730, 670, 436, 734, 668, 667, - 737, 712, 629, 727, 662, 287, 627, 284, 191, 205, - 0, 660, 326, 365, 371, 726, 646, 655, 228, 653, - 369, 340, 423, 213, 252, 362, 345, 367, 692, 710, - 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, - 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, - 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, - 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, - 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, - 229, 448, 208, 433, 202, 209, 432, 322, 410, 418, - 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, - 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, - 427, 449, 215, 641, 722, 405, 442, 445, 0, 358, - 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, - 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, - 714, 750, 339, 370, 219, 425, 389, 636, 640, 634, - 635, 686, 687, 637, 742, 743, 744, 718, 630, 0, - 638, 639, 0, 724, 732, 733, 691, 190, 203, 290, - 746, 359, 255, 447, 431, 428, 617, 633, 234, 644, - 0, 0, 657, 664, 665, 677, 679, 680, 681, 682, - 690, 698, 699, 701, 709, 711, 713, 715, 720, 729, - 749, 192, 193, 204, 212, 221, 233, 246, 253, 263, - 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, - 307, 323, 324, 325, 328, 331, 332, 335, 337, 338, - 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, - 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, - 393, 397, 412, 413, 424, 435, 439, 264, 420, 440, - 0, 298, 689, 696, 300, 250, 266, 275, 704, 430, - 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, - 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, - 380, 400, 401, 402, 404, 312, 238, 736, 723, 0, - 0, 672, 739, 643, 661, 748, 663, 666, 706, 623, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1899, 0, 33, 0, + 1899, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2100, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2109, 0, 0, 0, + 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1899, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 736, 723, 33, + 2135, 672, 739, 643, 661, 748, 663, 666, 706, 623, 685, 330, 658, 0, 647, 619, 654, 620, 645, 674, 241, 678, 642, 725, 688, 738, 288, 0, 625, 648, 344, 708, 381, 227, 297, 295, 409, 251, 244, 240, @@ -1733,11 +1708,11 @@ var yyAct = [...]int{ 390, 315, 0, 0, 0, 676, 728, 683, 719, 671, 707, 632, 694, 740, 659, 703, 741, 278, 225, 195, 327, 391, 254, 0, 0, 0, 177, 178, 179, 0, - 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 2142, 2143, 0, 0, 0, 0, 0, 217, 0, 223, 700, 735, 656, 702, 237, 276, 243, 236, 406, 705, 751, 618, 697, 0, 621, 624, 747, 731, 651, 652, 0, 0, 0, 0, 0, 0, 0, 675, 684, 716, - 669, 0, 0, 0, 0, 0, 0, 1891, 0, 649, + 669, 0, 0, 0, 0, 0, 0, 0, 0, 649, 0, 693, 0, 0, 0, 628, 622, 0, 0, 0, 0, 673, 0, 0, 0, 631, 0, 650, 717, 0, 616, 262, 626, 316, 721, 730, 670, 436, 734, 668, @@ -1783,7 +1758,7 @@ var yyAct = [...]int{ 223, 700, 735, 656, 702, 237, 276, 243, 236, 406, 705, 751, 618, 697, 0, 621, 624, 747, 731, 651, 652, 0, 0, 0, 0, 0, 0, 0, 675, 684, - 716, 669, 0, 0, 0, 0, 0, 0, 1746, 0, + 716, 669, 0, 0, 0, 0, 0, 0, 1891, 0, 649, 0, 693, 0, 0, 0, 628, 622, 0, 0, 0, 0, 673, 0, 0, 0, 631, 0, 650, 717, 0, 616, 262, 626, 316, 721, 730, 670, 436, 734, @@ -1829,7 +1804,7 @@ var yyAct = [...]int{ 0, 223, 700, 735, 656, 702, 237, 276, 243, 236, 406, 705, 751, 618, 697, 0, 621, 624, 747, 731, 651, 652, 0, 0, 0, 0, 0, 0, 0, 675, - 684, 716, 669, 0, 0, 0, 0, 0, 0, 1463, + 684, 716, 669, 0, 0, 0, 0, 0, 0, 1746, 0, 649, 0, 693, 0, 0, 0, 628, 622, 0, 0, 0, 0, 673, 0, 0, 0, 631, 0, 650, 717, 0, 616, 262, 626, 316, 721, 730, 670, 436, @@ -1870,13 +1845,13 @@ var yyAct = [...]int{ 251, 244, 240, 226, 272, 303, 342, 399, 336, 745, 292, 695, 0, 390, 315, 0, 0, 0, 676, 728, 683, 719, 671, 707, 632, 694, 740, 659, 703, 741, - 278, 225, 195, 327, 391, 254, 69, 0, 0, 177, + 278, 225, 195, 327, 391, 254, 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, 700, 735, 656, 702, 237, 276, 243, 236, 406, 705, 751, 618, 697, 0, 621, 624, 747, 731, 651, 652, 0, 0, 0, 0, 0, 0, 0, 675, 684, 716, 669, 0, 0, 0, 0, 0, 0, - 0, 0, 649, 0, 693, 0, 0, 0, 628, 622, + 1463, 0, 649, 0, 693, 0, 0, 0, 628, 622, 0, 0, 0, 0, 673, 0, 0, 0, 631, 0, 650, 717, 0, 616, 262, 626, 316, 721, 730, 670, 436, 734, 668, 667, 737, 712, 629, 727, 662, 287, @@ -1916,7 +1891,7 @@ var yyAct = [...]int{ 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 745, 292, 695, 0, 390, 315, 0, 0, 0, 676, 728, 683, 719, 671, 707, 632, 694, 740, 659, 703, - 741, 278, 225, 195, 327, 391, 254, 0, 0, 0, + 741, 278, 225, 195, 327, 391, 254, 69, 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, 700, 735, 656, 702, 237, 276, 243, 236, 406, 705, 751, 618, 697, 0, 621, 624, @@ -1980,12 +1955,12 @@ var yyAct = [...]int{ 260, 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, 229, 448, 208, 433, - 202, 753, 432, 322, 410, 418, 311, 302, 201, 416, + 202, 209, 432, 322, 410, 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, 427, 449, 215, 641, 722, 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, 352, 265, 333, 422, - 615, 752, 609, 608, 285, 294, 714, 750, 339, 370, + 321, 210, 271, 388, 285, 294, 714, 750, 339, 370, 219, 425, 389, 636, 640, 634, 635, 686, 687, 637, 742, 743, 744, 718, 630, 0, 638, 639, 0, 724, 732, 733, 691, 190, 203, 290, 746, 359, 255, 447, @@ -2023,7 +1998,7 @@ var yyAct = [...]int{ 213, 252, 362, 345, 367, 692, 710, 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, 283, - 386, 260, 194, 291, 198, 398, 1089, 218, 379, 0, + 386, 260, 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, 229, 448, 208, 433, 202, 753, 432, 322, 410, 418, 311, 302, 201, @@ -2069,7 +2044,7 @@ var yyAct = [...]int{ 423, 213, 252, 362, 345, 367, 692, 710, 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, - 283, 386, 260, 194, 291, 198, 398, 606, 218, 379, + 283, 386, 260, 194, 291, 198, 398, 1089, 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, 229, 448, 208, 433, 202, 753, 432, 322, 410, 418, 311, 302, @@ -2093,143 +2068,55 @@ var yyAct = [...]int{ 689, 696, 300, 250, 266, 275, 704, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, - 401, 402, 404, 312, 238, 330, 0, 0, 1390, 0, - 509, 0, 0, 0, 241, 0, 508, 0, 0, 0, - 288, 0, 0, 1391, 344, 0, 381, 227, 297, 295, - 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, - 552, 292, 0, 0, 390, 315, 0, 0, 0, 0, - 0, 543, 544, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 225, 195, 327, 391, 254, 69, 0, 0, - 177, 178, 179, 530, 529, 532, 533, 534, 535, 0, - 0, 217, 531, 223, 536, 537, 538, 0, 237, 276, - 243, 236, 406, 0, 0, 0, 506, 523, 0, 551, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, - 521, 596, 0, 0, 0, 566, 0, 522, 0, 0, - 515, 516, 518, 517, 519, 524, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 262, 0, 316, 565, 0, - 0, 436, 0, 0, 563, 0, 0, 0, 0, 0, - 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, - 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, - 362, 345, 367, 0, 0, 368, 293, 411, 357, 421, - 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, - 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, - 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, - 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, - 258, 230, 329, 414, 415, 229, 448, 208, 433, 202, - 209, 432, 322, 410, 418, 311, 302, 201, 416, 309, - 301, 286, 249, 268, 355, 296, 356, 269, 318, 317, - 319, 0, 196, 0, 392, 427, 449, 215, 0, 0, - 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, - 289, 441, 443, 444, 214, 352, 265, 333, 422, 321, - 210, 271, 388, 285, 294, 0, 0, 339, 370, 219, - 425, 389, 553, 564, 559, 560, 557, 558, 0, 556, - 555, 554, 567, 545, 546, 547, 548, 550, 0, 561, - 562, 549, 190, 203, 290, 0, 359, 255, 447, 431, - 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, - 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, - 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, - 331, 332, 335, 337, 338, 341, 347, 348, 349, 350, - 351, 353, 360, 364, 372, 373, 374, 375, 376, 377, - 378, 382, 383, 384, 385, 393, 397, 412, 413, 424, - 435, 439, 264, 420, 440, 0, 298, 0, 0, 300, - 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, - 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, - 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, - 312, 238, 330, 0, 0, 0, 0, 509, 0, 0, - 0, 241, 0, 508, 0, 0, 0, 288, 0, 0, - 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, - 240, 226, 272, 303, 342, 399, 336, 552, 292, 0, - 0, 390, 315, 0, 0, 0, 0, 0, 543, 544, - 0, 0, 0, 0, 0, 0, 1502, 0, 278, 225, - 195, 327, 391, 254, 69, 0, 0, 177, 178, 179, - 530, 529, 532, 533, 534, 535, 0, 0, 217, 531, - 223, 536, 537, 538, 1503, 237, 276, 243, 236, 406, - 0, 0, 0, 506, 523, 0, 551, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 520, 521, 0, 0, - 0, 0, 566, 0, 522, 0, 0, 515, 516, 518, - 517, 519, 524, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 316, 565, 0, 0, 436, 0, - 0, 563, 0, 0, 0, 0, 0, 287, 0, 284, - 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, - 228, 0, 369, 340, 423, 213, 252, 362, 345, 367, - 0, 0, 368, 293, 411, 357, 421, 437, 438, 235, - 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, - 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, - 398, 419, 218, 379, 0, 0, 0, 200, 417, 395, - 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, - 414, 415, 229, 448, 208, 433, 202, 209, 432, 322, - 410, 418, 311, 302, 201, 416, 309, 301, 286, 249, - 268, 355, 296, 356, 269, 318, 317, 319, 0, 196, - 0, 392, 427, 449, 215, 0, 0, 405, 442, 445, - 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, - 444, 214, 352, 265, 333, 422, 321, 210, 271, 388, - 285, 294, 0, 0, 339, 370, 219, 425, 389, 553, - 564, 559, 560, 557, 558, 0, 556, 555, 554, 567, - 545, 546, 547, 548, 550, 0, 561, 562, 549, 190, - 203, 290, 0, 359, 255, 447, 431, 428, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, - 305, 306, 307, 323, 324, 325, 328, 331, 332, 335, - 337, 338, 341, 347, 348, 349, 350, 351, 353, 360, - 364, 372, 373, 374, 375, 376, 377, 378, 382, 383, - 384, 385, 393, 397, 412, 413, 424, 435, 439, 264, - 420, 440, 0, 298, 0, 0, 300, 250, 266, 275, - 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, - 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, - 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, - 0, 0, 0, 0, 509, 0, 0, 0, 241, 0, - 508, 0, 0, 0, 288, 0, 0, 0, 344, 0, + 401, 402, 404, 312, 238, 736, 723, 0, 0, 672, + 739, 643, 661, 748, 663, 666, 706, 623, 685, 330, + 658, 0, 647, 619, 654, 620, 645, 674, 241, 678, + 642, 725, 688, 738, 288, 0, 625, 648, 344, 708, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, - 303, 342, 399, 336, 552, 292, 0, 0, 390, 315, - 0, 0, 0, 0, 0, 543, 544, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, - 254, 69, 0, 584, 177, 178, 179, 530, 529, 532, - 533, 534, 535, 0, 0, 217, 531, 223, 536, 537, - 538, 0, 237, 276, 243, 236, 406, 0, 0, 0, - 506, 523, 0, 551, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 520, 521, 0, 0, 0, 0, 566, - 0, 522, 0, 0, 515, 516, 518, 517, 519, 524, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, - 0, 316, 565, 0, 0, 436, 0, 0, 563, 0, - 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, - 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, - 340, 423, 213, 252, 362, 345, 367, 0, 0, 368, + 303, 342, 399, 336, 745, 292, 695, 0, 390, 315, + 0, 0, 0, 676, 728, 683, 719, 671, 707, 632, + 694, 740, 659, 703, 741, 278, 225, 195, 327, 391, + 254, 0, 0, 0, 177, 178, 179, 0, 0, 0, + 0, 0, 0, 0, 0, 217, 0, 223, 700, 735, + 656, 702, 237, 276, 243, 236, 406, 705, 751, 618, + 697, 0, 621, 624, 747, 731, 651, 652, 0, 0, + 0, 0, 0, 0, 0, 675, 684, 716, 669, 0, + 0, 0, 0, 0, 0, 0, 0, 649, 0, 693, + 0, 0, 0, 628, 622, 0, 0, 0, 0, 673, + 0, 0, 0, 631, 0, 650, 717, 0, 616, 262, + 626, 316, 721, 730, 670, 436, 734, 668, 667, 737, + 712, 629, 727, 662, 287, 627, 284, 191, 205, 0, + 660, 326, 365, 371, 726, 646, 655, 228, 653, 369, + 340, 423, 213, 252, 362, 345, 367, 692, 710, 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, - 408, 283, 386, 260, 194, 291, 198, 398, 419, 218, + 408, 283, 386, 260, 194, 291, 198, 398, 606, 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, 229, - 448, 208, 433, 202, 209, 432, 322, 410, 418, 311, + 448, 208, 433, 202, 753, 432, 322, 410, 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, 427, - 449, 215, 0, 0, 405, 442, 445, 0, 358, 216, + 449, 215, 641, 722, 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, 352, - 265, 333, 422, 321, 210, 271, 388, 285, 294, 0, - 0, 339, 370, 219, 425, 389, 553, 564, 559, 560, - 557, 558, 0, 556, 555, 554, 567, 545, 546, 547, - 548, 550, 0, 561, 562, 549, 190, 203, 290, 0, - 359, 255, 447, 431, 428, 0, 0, 234, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 265, 333, 422, 615, 752, 609, 608, 285, 294, 714, + 750, 339, 370, 219, 425, 389, 636, 640, 634, 635, + 686, 687, 637, 742, 743, 744, 718, 630, 0, 638, + 639, 0, 724, 732, 733, 691, 190, 203, 290, 746, + 359, 255, 447, 431, 428, 617, 633, 234, 644, 0, + 0, 657, 664, 665, 677, 679, 680, 681, 682, 690, + 698, 699, 701, 709, 711, 713, 715, 720, 729, 749, 192, 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, 335, 337, 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, 393, 397, 412, 413, 424, 435, 439, 264, 420, 440, 0, - 298, 0, 0, 300, 250, 266, 275, 0, 430, 394, + 298, 689, 696, 300, 250, 266, 275, 704, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, - 400, 401, 402, 404, 312, 238, 330, 0, 0, 0, + 400, 401, 402, 404, 312, 238, 330, 0, 0, 1390, 0, 509, 0, 0, 0, 241, 0, 508, 0, 0, - 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, + 0, 288, 0, 0, 1391, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 552, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 543, 544, 0, 0, 0, 0, 0, 0, @@ -2277,13 +2164,13 @@ var yyAct = [...]int{ 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 552, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 543, - 544, 0, 0, 0, 0, 0, 0, 0, 0, 278, + 544, 0, 0, 0, 0, 0, 0, 1502, 0, 278, 225, 195, 327, 391, 254, 69, 0, 0, 177, 178, - 179, 530, 1408, 532, 533, 534, 535, 0, 0, 217, - 531, 223, 536, 537, 538, 0, 237, 276, 243, 236, + 179, 530, 529, 532, 533, 534, 535, 0, 0, 217, + 531, 223, 536, 537, 538, 1503, 237, 276, 243, 236, 406, 0, 0, 0, 506, 523, 0, 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 520, 521, 596, + 0, 0, 0, 0, 0, 0, 0, 520, 521, 0, 0, 0, 0, 566, 0, 522, 0, 0, 515, 516, 518, 517, 519, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, 565, 0, 0, 436, @@ -2323,53 +2210,7 @@ var yyAct = [...]int{ 272, 303, 342, 399, 336, 552, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 543, 544, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, - 391, 254, 69, 0, 0, 177, 178, 179, 530, 1405, - 532, 533, 534, 535, 0, 0, 217, 531, 223, 536, - 537, 538, 0, 237, 276, 243, 236, 406, 0, 0, - 0, 506, 523, 0, 551, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 520, 521, 596, 0, 0, 0, - 566, 0, 522, 0, 0, 515, 516, 518, 517, 519, - 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 316, 565, 0, 0, 436, 0, 0, 563, - 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, - 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, - 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, - 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, - 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, - 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, - 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, - 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, - 229, 448, 208, 433, 202, 209, 432, 322, 410, 418, - 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, - 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, - 427, 449, 215, 0, 0, 405, 442, 445, 0, 358, - 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, - 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, - 0, 0, 339, 370, 219, 425, 389, 553, 564, 559, - 560, 557, 558, 0, 556, 555, 554, 567, 545, 546, - 547, 548, 550, 0, 561, 562, 549, 190, 203, 290, - 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, - 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, - 307, 323, 324, 325, 328, 331, 332, 335, 337, 338, - 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, - 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, - 393, 397, 412, 413, 424, 435, 439, 264, 420, 440, - 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, - 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, - 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, - 380, 400, 401, 402, 404, 312, 238, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 330, 0, 0, 0, 0, 509, 0, 0, 0, 241, - 0, 508, 0, 0, 0, 288, 0, 0, 0, 344, - 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, - 272, 303, 342, 399, 336, 552, 292, 0, 0, 390, - 315, 0, 0, 0, 0, 0, 543, 544, 0, 0, - 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, - 391, 254, 69, 0, 0, 177, 178, 179, 530, 529, + 391, 254, 69, 0, 584, 177, 178, 179, 530, 529, 532, 533, 534, 535, 0, 0, 217, 531, 223, 536, 537, 538, 0, 237, 276, 243, 236, 406, 0, 0, 0, 506, 523, 0, 551, 0, 0, 0, 0, 0, @@ -2419,7 +2260,7 @@ var yyAct = [...]int{ 237, 276, 243, 236, 406, 0, 0, 0, 506, 523, 0, 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 520, 521, 0, 0, 0, 0, 566, 0, 522, + 0, 520, 521, 596, 0, 0, 0, 566, 0, 522, 0, 0, 515, 516, 518, 517, 519, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, 565, 0, 0, 436, 0, 0, 563, 0, 0, 0, @@ -2452,25 +2293,25 @@ var yyAct = [...]int{ 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, - 402, 404, 312, 238, 330, 0, 0, 0, 0, 0, - 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, + 402, 404, 312, 238, 330, 0, 0, 0, 0, 509, + 0, 0, 0, 241, 0, 508, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 552, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 543, 544, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, 69, 0, 0, 177, - 178, 179, 530, 529, 532, 533, 534, 535, 0, 0, + 178, 179, 530, 1408, 532, 533, 534, 535, 0, 0, 217, 531, 223, 536, 537, 538, 0, 237, 276, 243, - 236, 406, 0, 0, 0, 0, 523, 0, 551, 0, + 236, 406, 0, 0, 0, 506, 523, 0, 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, 521, - 0, 0, 0, 0, 566, 0, 522, 0, 0, 515, + 596, 0, 0, 0, 566, 0, 522, 0, 0, 515, 516, 518, 517, 519, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, 565, 0, 0, 436, 0, 0, 563, 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, 362, - 345, 367, 2162, 0, 368, 293, 411, 357, 421, 437, + 345, 367, 0, 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, 200, @@ -2497,16 +2338,62 @@ var yyAct = [...]int{ 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, - 238, 330, 0, 0, 0, 0, 0, 0, 0, 0, - 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, + 238, 330, 0, 0, 0, 0, 509, 0, 0, 0, + 241, 0, 508, 0, 0, 0, 288, 0, 0, 0, + 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, + 226, 272, 303, 342, 399, 336, 552, 292, 0, 0, + 390, 315, 0, 0, 0, 0, 0, 543, 544, 0, + 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, + 327, 391, 254, 69, 0, 0, 177, 178, 179, 530, + 1405, 532, 533, 534, 535, 0, 0, 217, 531, 223, + 536, 537, 538, 0, 237, 276, 243, 236, 406, 0, + 0, 0, 506, 523, 0, 551, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 520, 521, 596, 0, 0, + 0, 566, 0, 522, 0, 0, 515, 516, 518, 517, + 519, 524, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 262, 0, 316, 565, 0, 0, 436, 0, 0, + 563, 0, 0, 0, 0, 0, 287, 0, 284, 191, + 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, + 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, + 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, + 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, + 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, + 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, + 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, + 415, 229, 448, 208, 433, 202, 209, 432, 322, 410, + 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, + 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, + 392, 427, 449, 215, 0, 0, 405, 442, 445, 0, + 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, + 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, + 294, 0, 0, 339, 370, 219, 425, 389, 553, 564, + 559, 560, 557, 558, 0, 556, 555, 554, 567, 545, + 546, 547, 548, 550, 0, 561, 562, 549, 190, 203, + 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, + 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, + 306, 307, 323, 324, 325, 328, 331, 332, 335, 337, + 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, + 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, + 385, 393, 397, 412, 413, 424, 435, 439, 264, 420, + 440, 0, 298, 0, 0, 300, 250, 266, 275, 0, + 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, + 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, + 220, 380, 400, 401, 402, 404, 312, 238, 577, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 330, 0, 0, 0, 0, 509, 0, 0, 0, + 241, 0, 508, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 552, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 543, 544, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, - 327, 391, 254, 69, 0, 584, 177, 178, 179, 530, + 327, 391, 254, 69, 0, 0, 177, 178, 179, 530, 529, 532, 533, 534, 535, 0, 0, 217, 531, 223, 536, 537, 538, 0, 237, 276, 243, 236, 406, 0, - 0, 0, 0, 523, 0, 551, 0, 0, 0, 0, + 0, 0, 506, 523, 0, 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, 521, 0, 0, 0, 0, 566, 0, 522, 0, 0, 515, 516, 518, 517, @@ -2542,7 +2429,7 @@ var yyAct = [...]int{ 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 509, 0, 0, 0, 241, 0, 508, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 552, 292, 0, 0, 390, 315, 0, @@ -2550,7 +2437,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, 69, 0, 0, 177, 178, 179, 530, 529, 532, 533, 534, 535, 0, 0, 217, 531, 223, 536, 537, 538, - 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, + 0, 237, 276, 243, 236, 406, 0, 0, 0, 506, 523, 0, 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, 521, 0, 0, 0, 0, 566, 0, @@ -2590,21 +2477,21 @@ var yyAct = [...]int{ 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, - 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 225, 195, 327, 391, 254, 0, 0, 0, - 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, - 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, - 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 966, 965, 975, 976, 968, - 969, 970, 971, 972, 973, 974, 967, 0, 0, 977, + 552, 292, 0, 0, 390, 315, 0, 0, 0, 0, + 0, 543, 544, 0, 0, 0, 0, 0, 0, 0, + 0, 278, 225, 195, 327, 391, 254, 69, 0, 0, + 177, 178, 179, 530, 529, 532, 533, 534, 535, 0, + 0, 217, 531, 223, 536, 537, 538, 0, 237, 276, + 243, 236, 406, 0, 0, 0, 0, 523, 0, 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 262, 0, 316, 0, 0, - 0, 436, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, + 521, 0, 0, 0, 0, 566, 0, 522, 0, 0, + 515, 516, 518, 517, 519, 524, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 316, 565, 0, + 0, 436, 0, 0, 563, 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, - 362, 345, 367, 0, 0, 368, 293, 411, 357, 421, + 362, 345, 367, 2162, 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, @@ -2616,9 +2503,9 @@ var yyAct = [...]int{ 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, 0, 0, 339, 370, 219, - 425, 389, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 190, 203, 290, 0, 359, 255, 447, 431, + 425, 389, 553, 564, 559, 560, 557, 558, 0, 556, + 555, 554, 567, 545, 546, 547, 548, 550, 0, 561, + 562, 549, 190, 203, 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, @@ -2632,22 +2519,22 @@ var yyAct = [...]int{ 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, 0, 0, 0, 0, 0, 0, - 0, 241, 797, 0, 0, 0, 0, 288, 0, 0, + 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, - 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, - 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, + 240, 226, 272, 303, 342, 399, 336, 552, 292, 0, + 0, 390, 315, 0, 0, 0, 0, 0, 543, 544, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, - 195, 327, 391, 254, 0, 0, 0, 177, 178, 179, - 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, - 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 195, 327, 391, 254, 69, 0, 584, 177, 178, 179, + 530, 529, 532, 533, 534, 535, 0, 0, 217, 531, + 223, 536, 537, 538, 0, 237, 276, 243, 236, 406, + 0, 0, 0, 0, 523, 0, 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 316, 0, 0, 796, 436, 0, - 0, 0, 0, 0, 0, 793, 794, 287, 761, 284, - 191, 205, 787, 791, 326, 365, 371, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 520, 521, 0, 0, + 0, 0, 566, 0, 522, 0, 0, 515, 516, 518, + 517, 519, 524, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 262, 0, 316, 565, 0, 0, 436, 0, + 0, 563, 0, 0, 0, 0, 0, 287, 0, 284, + 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, @@ -2660,9 +2547,9 @@ var yyAct = [...]int{ 0, 392, 427, 449, 215, 0, 0, 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, 352, 265, 333, 422, 321, 210, 271, 388, - 285, 294, 0, 0, 339, 370, 219, 425, 389, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, + 285, 294, 0, 0, 339, 370, 219, 425, 389, 553, + 564, 559, 560, 557, 558, 0, 556, 555, 554, 567, + 545, 546, 547, 548, 550, 0, 561, 562, 549, 190, 203, 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2676,67 +2563,21 @@ var yyAct = [...]int{ 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, - 0, 0, 0, 1067, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, - 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, - 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, - 254, 0, 0, 0, 177, 178, 179, 0, 1069, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 276, 243, 236, 406, 955, 956, 954, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 957, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, - 0, 316, 0, 0, 0, 436, 0, 0, 0, 0, - 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, - 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, - 340, 423, 213, 252, 362, 345, 367, 0, 0, 368, - 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, - 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, - 408, 283, 386, 260, 194, 291, 198, 398, 419, 218, - 379, 0, 0, 0, 200, 417, 395, 310, 280, 281, - 199, 0, 361, 239, 258, 230, 329, 414, 415, 229, - 448, 208, 433, 202, 209, 432, 322, 410, 418, 311, - 302, 201, 416, 309, 301, 286, 249, 268, 355, 296, - 356, 269, 318, 317, 319, 0, 196, 0, 392, 427, - 449, 215, 0, 0, 405, 442, 445, 0, 358, 216, - 259, 248, 354, 257, 289, 441, 443, 444, 214, 352, - 265, 333, 422, 321, 210, 271, 388, 285, 294, 0, - 0, 339, 370, 219, 425, 389, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 290, 0, - 359, 255, 447, 431, 428, 0, 0, 234, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 204, 212, 221, 233, 246, 253, 263, 267, - 270, 273, 274, 277, 282, 299, 304, 305, 306, 307, - 323, 324, 325, 328, 331, 332, 335, 337, 338, 341, - 347, 348, 349, 350, 351, 353, 360, 364, 372, 373, - 374, 375, 376, 377, 378, 382, 383, 384, 385, 393, - 397, 412, 413, 424, 435, 439, 264, 420, 440, 0, - 298, 0, 0, 300, 250, 266, 275, 0, 430, 394, - 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, - 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, - 400, 401, 402, 404, 312, 238, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, - 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 303, 342, 399, 336, 552, 292, 0, 0, 390, 315, + 0, 0, 0, 0, 0, 543, 544, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, - 254, 69, 0, 584, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 254, 69, 0, 0, 177, 178, 179, 530, 529, 532, + 533, 534, 535, 0, 0, 217, 531, 223, 536, 537, + 538, 0, 237, 276, 243, 236, 406, 0, 0, 0, + 0, 523, 0, 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 520, 521, 0, 0, 0, 0, 566, + 0, 522, 0, 0, 515, 516, 518, 517, 519, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, - 0, 316, 0, 0, 0, 436, 0, 0, 0, 0, + 0, 316, 565, 0, 0, 436, 0, 0, 563, 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, 368, @@ -2751,9 +2592,9 @@ var yyAct = [...]int{ 449, 215, 0, 0, 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, 0, - 0, 339, 370, 219, 425, 389, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 290, 0, + 0, 339, 370, 219, 425, 389, 553, 564, 559, 560, + 557, 558, 0, 556, 555, 554, 567, 545, 546, 547, + 548, 550, 0, 561, 562, 549, 190, 203, 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2767,24 +2608,24 @@ var yyAct = [...]int{ 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, 0, 0, - 1435, 0, 0, 0, 0, 241, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, 0, 0, - 0, 177, 178, 179, 0, 1437, 0, 0, 0, 0, + 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 966, 965, 975, 976, + 968, 969, 970, 971, 972, 973, 974, 967, 0, 0, + 977, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, 0, 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, - 252, 362, 345, 367, 0, 1433, 368, 293, 411, 357, + 252, 362, 345, 367, 0, 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, 218, 379, 0, 0, @@ -2812,7 +2653,7 @@ var yyAct = [...]int{ 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, + 0, 0, 241, 797, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, @@ -2822,12 +2663,12 @@ var yyAct = [...]int{ 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 316, 0, 0, 0, 436, - 0, 0, 0, 0, 0, 0, 0, 0, 287, 761, - 284, 191, 205, 759, 0, 326, 365, 371, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 316, 0, 0, 796, 436, + 0, 0, 0, 0, 0, 0, 793, 794, 287, 761, + 284, 191, 205, 787, 791, 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, @@ -2856,17 +2697,17 @@ var yyAct = [...]int{ 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, - 330, 0, 0, 0, 1435, 0, 0, 0, 0, 241, + 330, 0, 0, 0, 1067, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, - 391, 254, 0, 0, 0, 177, 178, 179, 0, 1437, + 391, 254, 0, 0, 0, 177, 178, 179, 0, 1069, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, - 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 237, 276, 243, 236, 406, 955, 956, + 954, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 957, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2908,7 +2749,7 @@ var yyAct = [...]int{ 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, - 391, 254, 69, 0, 0, 177, 178, 179, 0, 0, + 391, 254, 69, 0, 584, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2947,14 +2788,14 @@ var yyAct = [...]int{ 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, 0, - 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, + 0, 1435, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, 0, - 0, 0, 177, 178, 179, 0, 0, 1455, 0, 0, - 1456, 0, 0, 217, 0, 223, 0, 0, 0, 0, + 0, 0, 177, 178, 179, 0, 1437, 0, 0, 0, + 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2964,7 +2805,7 @@ var yyAct = [...]int{ 0, 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, - 213, 252, 362, 345, 367, 0, 0, 368, 293, 411, + 213, 252, 362, 345, 367, 0, 1433, 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, 218, 379, 0, @@ -2992,22 +2833,22 @@ var yyAct = [...]int{ 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, 0, 0, 0, 0, - 0, 0, 0, 241, 0, 1100, 0, 0, 0, 288, + 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, 0, 0, 0, 177, - 178, 179, 0, 1099, 0, 0, 0, 0, 0, 0, + 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, 0, 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, 0, 287, - 0, 284, 191, 205, 0, 0, 326, 365, 371, 0, + 761, 284, 191, 205, 759, 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, @@ -3036,13 +2877,59 @@ var yyAct = [...]int{ 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, - 238, 330, 0, 0, 0, 0, 0, 0, 0, 0, + 238, 330, 0, 0, 0, 1435, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, + 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, + 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, + 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, + 327, 391, 254, 0, 0, 0, 177, 178, 179, 0, + 1437, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 262, 0, 316, 0, 0, 0, 436, 0, 0, + 0, 0, 0, 0, 0, 0, 287, 0, 284, 191, + 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, + 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, + 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, + 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, + 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, + 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, + 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, + 415, 229, 448, 208, 433, 202, 209, 432, 322, 410, + 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, + 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, + 392, 427, 449, 215, 0, 0, 405, 442, 445, 0, + 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, + 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, + 294, 0, 0, 339, 370, 219, 425, 389, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, + 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, + 306, 307, 323, 324, 325, 328, 331, 332, 335, 337, + 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, + 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, + 385, 393, 397, 412, 413, 424, 435, 439, 264, 420, + 440, 0, 298, 0, 0, 300, 250, 266, 275, 0, + 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, + 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, + 220, 380, 400, 401, 402, 404, 312, 238, 34, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, - 327, 391, 254, 0, 0, 584, 177, 178, 179, 0, + 327, 391, 254, 69, 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3087,8 +2974,8 @@ var yyAct = [...]int{ 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, - 69, 0, 0, 177, 178, 179, 0, 0, 0, 0, - 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, + 0, 0, 0, 177, 178, 179, 0, 0, 1455, 0, + 0, 1456, 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3126,13 +3013,13 @@ var yyAct = [...]int{ 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 241, 0, 1100, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, 0, 0, 0, - 177, 178, 179, 0, 1437, 0, 0, 0, 0, 0, + 177, 178, 179, 0, 1099, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3176,8 +3063,8 @@ var yyAct = [...]int{ 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, - 195, 327, 391, 254, 0, 0, 0, 177, 178, 179, - 0, 1069, 0, 0, 0, 0, 0, 0, 217, 0, + 195, 327, 391, 254, 0, 0, 584, 177, 178, 179, + 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3221,7 +3108,7 @@ var yyAct = [...]int{ 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, - 254, 0, 0, 0, 177, 178, 179, 0, 0, 0, + 254, 69, 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3246,7 +3133,7 @@ var yyAct = [...]int{ 265, 333, 422, 321, 210, 271, 388, 285, 294, 0, 0, 339, 370, 219, 425, 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 290, 1340, + 0, 0, 0, 0, 0, 0, 190, 203, 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3259,14 +3146,14 @@ var yyAct = [...]int{ 298, 0, 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, - 400, 401, 402, 404, 312, 238, 330, 0, 1224, 0, + 400, 401, 402, 404, 312, 238, 330, 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, 0, 0, - 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, + 0, 177, 178, 179, 0, 1437, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3304,14 +3191,14 @@ var yyAct = [...]int{ 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, - 404, 312, 238, 330, 0, 1222, 0, 0, 0, 0, + 404, 312, 238, 330, 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, 0, 0, 0, 177, 178, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, + 179, 0, 1069, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3349,7 +3236,7 @@ var yyAct = [...]int{ 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, - 330, 0, 1220, 0, 0, 0, 0, 0, 0, 241, + 330, 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, @@ -3381,7 +3268,7 @@ var yyAct = [...]int{ 0, 0, 339, 370, 219, 425, 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, 290, - 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, + 1340, 359, 255, 447, 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, @@ -3393,7 +3280,7 @@ var yyAct = [...]int{ 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, - 380, 400, 401, 402, 404, 312, 238, 330, 0, 1218, + 380, 400, 401, 402, 404, 312, 238, 330, 0, 1224, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, @@ -3438,7 +3325,7 @@ var yyAct = [...]int{ 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, - 402, 404, 312, 238, 330, 0, 1216, 0, 0, 0, + 402, 404, 312, 238, 330, 0, 1222, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, @@ -3483,7 +3370,7 @@ var yyAct = [...]int{ 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, - 238, 330, 0, 1212, 0, 0, 0, 0, 0, 0, + 238, 330, 0, 1220, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, @@ -3528,7 +3415,7 @@ var yyAct = [...]int{ 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, - 1210, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 1218, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, @@ -3572,7 +3459,7 @@ var yyAct = [...]int{ 0, 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, - 401, 402, 404, 312, 238, 330, 0, 1208, 0, 0, + 401, 402, 404, 312, 238, 330, 0, 1216, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, @@ -3617,13 +3504,13 @@ var yyAct = [...]int{ 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, - 312, 238, 330, 0, 0, 0, 0, 0, 0, 0, + 312, 238, 330, 0, 1212, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, - 195, 327, 391, 254, 1183, 0, 0, 177, 178, 179, + 195, 327, 391, 254, 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3661,8 +3548,52 @@ var yyAct = [...]int{ 420, 440, 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, - 363, 220, 380, 400, 401, 402, 404, 312, 238, 1082, - 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, + 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, + 0, 1210, 0, 0, 0, 0, 0, 0, 241, 0, + 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, + 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, + 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, + 254, 0, 0, 0, 177, 178, 179, 0, 0, 0, + 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, + 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, + 0, 316, 0, 0, 0, 436, 0, 0, 0, 0, + 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, + 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, + 340, 423, 213, 252, 362, 345, 367, 0, 0, 368, + 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, + 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, + 408, 283, 386, 260, 194, 291, 198, 398, 419, 218, + 379, 0, 0, 0, 200, 417, 395, 310, 280, 281, + 199, 0, 361, 239, 258, 230, 329, 414, 415, 229, + 448, 208, 433, 202, 209, 432, 322, 410, 418, 311, + 302, 201, 416, 309, 301, 286, 249, 268, 355, 296, + 356, 269, 318, 317, 319, 0, 196, 0, 392, 427, + 449, 215, 0, 0, 405, 442, 445, 0, 358, 216, + 259, 248, 354, 257, 289, 441, 443, 444, 214, 352, + 265, 333, 422, 321, 210, 271, 388, 285, 294, 0, + 0, 339, 370, 219, 425, 389, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 203, 290, 0, + 359, 255, 447, 431, 428, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 204, 212, 221, 233, 246, 253, 263, 267, + 270, 273, 274, 277, 282, 299, 304, 305, 306, 307, + 323, 324, 325, 328, 331, 332, 335, 337, 338, 341, + 347, 348, 349, 350, 351, 353, 360, 364, 372, 373, + 374, 375, 376, 377, 378, 382, 383, 384, 385, 393, + 397, 412, 413, 424, 435, 439, 264, 420, 440, 0, + 298, 0, 0, 300, 250, 266, 275, 0, 430, 394, + 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, + 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, + 400, 401, 402, 404, 312, 238, 330, 0, 1208, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, @@ -3708,12 +3639,12 @@ var yyAct = [...]int{ 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, 0, 0, 0, 0, 0, - 0, 1073, 241, 0, 0, 0, 0, 0, 288, 0, + 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 225, 195, 327, 391, 254, 0, 0, 0, 177, 178, + 225, 195, 327, 391, 254, 1183, 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3752,51 +3683,7 @@ var yyAct = [...]int{ 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, - 330, 0, 0, 0, 0, 0, 0, 0, 0, 241, - 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, - 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, - 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, - 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, - 391, 254, 0, 0, 0, 177, 178, 179, 0, 931, - 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, - 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 316, 0, 0, 0, 436, 0, 0, 0, - 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, - 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, - 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, - 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, - 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, - 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, - 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, - 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, - 229, 448, 208, 433, 202, 209, 432, 322, 410, 418, - 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, - 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, - 427, 449, 215, 0, 0, 405, 442, 445, 0, 358, - 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, - 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, - 0, 0, 339, 370, 219, 425, 389, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 190, 203, 290, - 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, - 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, - 307, 323, 324, 325, 328, 331, 332, 335, 337, 338, - 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, - 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, - 393, 397, 412, 413, 424, 435, 439, 264, 420, 440, - 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, - 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, - 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, - 380, 400, 401, 402, 404, 312, 238, 330, 0, 0, + 1082, 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, @@ -3810,7 +3697,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 497, 0, 262, 0, 316, + 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, 0, 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, @@ -3837,12 +3724,12 @@ var yyAct = [...]int{ 325, 328, 331, 332, 335, 337, 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, 393, 397, 412, - 413, 424, 435, 439, 496, 420, 440, 0, 298, 0, + 413, 424, 435, 439, 264, 420, 440, 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, 0, 0, 0, 0, - 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, + 0, 0, 1073, 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, @@ -3855,7 +3742,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 316, 0, 185, 0, + 0, 0, 0, 0, 262, 0, 316, 0, 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, 362, @@ -3893,7 +3780,7 @@ var yyAct = [...]int{ 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, 0, 0, 0, 177, 178, 179, 0, - 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 931, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3930,29 +3817,164 @@ var yyAct = [...]int{ 440, 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, - 220, 380, 400, 401, 402, 404, 312, 238, + 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, + 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, + 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, + 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, + 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, + 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 497, 0, 262, 0, + 316, 0, 0, 0, 436, 0, 0, 0, 0, 0, + 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, + 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, + 423, 213, 252, 362, 345, 367, 0, 0, 368, 293, + 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, + 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, + 283, 386, 260, 194, 291, 198, 398, 419, 218, 379, + 0, 0, 0, 200, 417, 395, 310, 280, 281, 199, + 0, 361, 239, 258, 230, 329, 414, 415, 229, 448, + 208, 433, 202, 209, 432, 322, 410, 418, 311, 302, + 201, 416, 309, 301, 286, 249, 268, 355, 296, 356, + 269, 318, 317, 319, 0, 196, 0, 392, 427, 449, + 215, 0, 0, 405, 442, 445, 0, 358, 216, 259, + 248, 354, 257, 289, 441, 443, 444, 214, 352, 265, + 333, 422, 321, 210, 271, 388, 285, 294, 0, 0, + 339, 370, 219, 425, 389, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 190, 203, 290, 0, 359, + 255, 447, 431, 428, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, + 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, + 324, 325, 328, 331, 332, 335, 337, 338, 341, 347, + 348, 349, 350, 351, 353, 360, 364, 372, 373, 374, + 375, 376, 377, 378, 382, 383, 384, 385, 393, 397, + 412, 413, 424, 435, 439, 496, 420, 440, 0, 298, + 0, 0, 300, 250, 266, 275, 0, 430, 394, 207, + 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, + 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, + 401, 402, 404, 312, 238, 330, 0, 0, 0, 0, + 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, + 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, + 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, + 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 278, 225, 195, 327, 391, 254, 0, 0, 0, + 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, + 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, + 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 316, 0, 185, + 0, 436, 0, 0, 0, 0, 0, 0, 0, 0, + 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, + 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, + 362, 345, 367, 0, 0, 368, 293, 411, 357, 421, + 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, + 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, + 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, + 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, + 258, 230, 329, 414, 415, 229, 448, 208, 433, 202, + 209, 432, 322, 410, 418, 311, 302, 201, 416, 309, + 301, 286, 249, 268, 355, 296, 356, 269, 318, 317, + 319, 0, 196, 0, 392, 427, 449, 215, 0, 0, + 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, + 289, 441, 443, 444, 214, 352, 265, 333, 422, 321, + 210, 271, 388, 285, 294, 0, 0, 339, 370, 219, + 425, 389, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 190, 203, 290, 0, 359, 255, 447, 431, + 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, + 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, + 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, + 331, 332, 335, 337, 338, 341, 347, 348, 349, 350, + 351, 353, 360, 364, 372, 373, 374, 375, 376, 377, + 378, 382, 383, 384, 385, 393, 397, 412, 413, 424, + 435, 439, 264, 420, 440, 0, 298, 0, 0, 300, + 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, + 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, + 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, + 312, 238, 330, 0, 0, 0, 0, 0, 0, 0, + 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, + 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, + 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, + 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, + 195, 327, 391, 254, 0, 0, 0, 177, 178, 179, + 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, + 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 262, 0, 316, 0, 0, 0, 436, 0, + 0, 0, 0, 0, 0, 0, 0, 287, 0, 284, + 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, + 228, 0, 369, 340, 423, 213, 252, 362, 345, 367, + 0, 0, 368, 293, 411, 357, 421, 437, 438, 235, + 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, + 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, + 398, 419, 218, 379, 0, 0, 0, 200, 417, 395, + 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, + 414, 415, 229, 448, 208, 433, 202, 209, 432, 322, + 410, 418, 311, 302, 201, 416, 309, 301, 286, 249, + 268, 355, 296, 356, 269, 318, 317, 319, 0, 196, + 0, 392, 427, 449, 215, 0, 0, 405, 442, 445, + 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, + 444, 214, 352, 265, 333, 422, 321, 210, 271, 388, + 285, 294, 0, 0, 339, 370, 219, 425, 389, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, + 203, 290, 0, 359, 255, 447, 431, 428, 0, 0, + 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, + 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, + 305, 306, 307, 323, 324, 325, 328, 331, 332, 335, + 337, 338, 341, 347, 348, 349, 350, 351, 353, 360, + 364, 372, 373, 374, 375, 376, 377, 378, 382, 383, + 384, 385, 393, 397, 412, 413, 424, 435, 439, 264, + 420, 440, 0, 298, 0, 0, 300, 250, 266, 275, + 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, + 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, + 363, 220, 380, 400, 401, 402, 404, 312, 238, } var yyPact = [...]int{ - 3797, -1000, -337, 1602, -1000, -1000, -1000, -1000, -1000, -1000, + 2414, -1000, -339, 1597, -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, 1563, 1185, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 540, 1217, 180, 1479, 4145, 163, 904, 393, 80, + 26856, 392, 84, 27303, -1000, 123, -1000, 110, 27303, 119, + 26409, -1000, -1000, -279, 12519, 1406, 48, 40, 27303, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1214, 1542, 1539, + 1558, 1041, 1467, -1000, 10718, 10718, 337, 337, 337, 8930, + -1000, -1000, 16555, 27303, 27303, 1230, 391, 904, 387, 384, + 382, 334, -99, -1000, -1000, -1000, -1000, 1479, -1000, -1000, + 153, -1000, 266, 1155, -1000, 1153, -1000, 445, 413, 263, + 320, 318, 262, 260, 258, 252, 249, 247, 242, 232, + 259, -1000, 542, 542, -165, -170, 2069, 313, 313, 313, + 357, 1432, 1430, -1000, 486, -1000, 542, 542, 151, 542, + 542, 542, 542, 210, 205, 542, 542, 542, 542, 542, + 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, + 27303, -1000, 159, 512, 578, 1479, 198, -1000, -1000, -1000, + 27303, 390, 904, 299, 299, 27303, -1000, 444, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1568, 1182, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 552, 1247, 265, 1476, 3769, 220, 914, 412, 148, - 26645, 411, 93, 27092, -1000, 104, -1000, 90, 27092, 100, - 26198, -1000, -1000, -277, 12308, 1423, 21, 14, 27092, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1207, 1519, 1526, - 1558, 956, 1455, -1000, 10507, 10507, 357, 357, 357, 8719, - -1000, -1000, 16344, 27092, 27092, 1255, 410, 914, 394, 391, - 376, 348, -86, -1000, -1000, -1000, -1000, 1476, -1000, -1000, - 179, -1000, 251, 1183, -1000, 1174, -1000, 500, 471, 241, - 300, 299, 238, 237, 230, 227, 226, 225, 223, 222, - 257, -1000, 545, 545, -170, -173, 955, 331, 331, 331, - 365, 1434, 1431, -1000, 489, -1000, 545, 545, 146, 545, - 545, 545, 545, 159, 153, 545, 545, 545, 545, 545, - 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, - 27092, -1000, 130, 581, 594, 1476, 149, -1000, -1000, -1000, - 27092, 406, 914, 337, 337, 27092, -1000, 470, -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, @@ -3978,24 +4000,24 @@ 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, + 27303, 606, 606, 39, 606, 606, 606, 606, 104, 466, + 18, -1000, 95, 199, 194, 186, 659, 59, 250, -1000, + -1000, 177, 117, -1000, 606, 7086, 7086, 7086, -1000, 1451, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 356, -1000, + -1000, -1000, -1000, 27303, 25962, 279, 563, -1000, -1000, -1000, + -2, -1000, -1000, 1071, 763, -1000, 12519, 1283, 1158, 1158, + -1000, -1000, 417, -1000, -1000, 13860, 13860, 13860, 13860, 13860, + 13860, 13860, 13860, 13860, 13860, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1158, + 440, -1000, 12072, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 12519, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, -1000, -1000, + -1000, 27303, -1000, 1158, 1563, -1000, 1185, -1000, -1000, -1000, + 1448, 12519, 12519, 1563, -1000, 1342, 10718, -1000, -1000, 1424, + -1000, -1000, -1000, -1000, 705, 1584, -1000, 15201, 439, 1582, + 25515, -1000, 19250, 25068, 1151, 8469, -16, -1000, -1000, -1000, + 560, 18356, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 27092, 663, 663, 663, 663, 663, 663, 75, 10, -1000, - 71, 142, 139, 145, 37, 626, 60, 317, -1000, 467, - -1000, 129, 123, -1000, 663, 6875, 6875, 6875, -1000, 1471, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 364, -1000, - -1000, -1000, -1000, 27092, 25751, 239, 582, -1000, -1000, -1000, - 7, -1000, -1000, 1084, 549, -1000, 12308, 2616, 1190, 1190, - -1000, -1000, 426, -1000, -1000, 13649, 13649, 13649, 13649, 13649, - 13649, 13649, 13649, 13649, 13649, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1190, - 468, -1000, 11861, 1190, 1190, 1190, 1190, 1190, 1190, 1190, - 1190, 12308, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, - 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, -1000, -1000, - -1000, 27092, -1000, 1190, 1568, -1000, 1182, -1000, -1000, -1000, - 1450, 12308, 12308, 1568, -1000, 1353, 10507, -1000, -1000, 1424, - -1000, -1000, -1000, -1000, 703, 1587, -1000, 14990, 464, 1582, - 25304, -1000, 19039, 24857, 1166, 8258, -56, -1000, -1000, -1000, - 574, 18145, -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, @@ -4008,186 +4030,185 @@ 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, 1451, 1060, 27303, -1000, -1000, 4413, 904, + -1000, 1205, -1000, 1055, -1000, 1169, 159, 334, 1235, 904, + 904, 904, 904, 570, -1000, -1000, -1000, 542, 542, 253, + 4145, 4065, -1000, -1000, -1000, 24614, 1197, 904, -1000, 1196, + -1000, 1492, 329, 510, 510, 904, -1000, -1000, 27303, 904, + 1489, 1488, 27303, 27303, -1000, 24167, -1000, 23720, 23273, 878, + 27303, 22826, 22379, 21932, 21485, 21038, -1000, 1278, -1000, 1178, + -1000, -1000, -1000, 27303, 27303, 27303, 44, -1000, -1000, 27303, + 904, -1000, -1000, 868, 857, 542, 542, 839, 949, 948, + 945, 542, 542, 834, 942, 935, 173, 815, 805, 803, + 888, 939, 107, 844, 810, 796, 27303, 1194, -1000, 149, + 554, 216, 255, 195, 27303, 143, 1479, 1404, 1149, 354, + 299, 1276, 27303, 1506, 904, -1000, 7547, -1000, -1000, 937, + 12519, -1000, 661, 659, 659, -1000, -1000, -1000, -1000, -1000, + -1000, 606, 27303, 661, -1000, -1000, -1000, 659, 606, 27303, + 606, 606, 606, 606, 659, 606, 27303, 27303, 7086, 7086, + 7086, 27303, 7086, 7086, 27303, 7086, 7086, 507, -1000, 1275, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 115, -1000, -1000, + -1000, -1000, -1000, 1597, -1000, -1000, -1000, -113, 1143, 20591, + -1000, -283, -284, -285, -286, -1000, -1000, -1000, -287, -292, + -1000, -1000, -1000, 12519, 12519, 12519, 12519, 734, 513, 13860, + 729, 693, 13860, 13860, 13860, 13860, 13860, 13860, 13860, 13860, + 13860, 13860, 13860, 13860, 13860, 13860, 13860, 591, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 904, -1000, 1595, 906, + 906, 454, 454, 454, 454, 454, 454, 454, 454, 454, + 14307, 9377, 7547, 1041, 1043, 1563, 10718, 10718, 12519, 12519, + 11612, 11165, 10718, 1477, 545, 763, 27303, -1000, -1000, 13413, + -1000, -1000, -1000, -1000, -1000, 970, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 27303, 27303, 10718, 10718, 10718, 10718, 10718, + -1000, 1139, -1000, -155, 16108, 12519, 1539, 1041, 1424, 1496, + 1589, 479, 845, 1132, -1000, 813, 1539, 17909, 1162, -1000, + 1424, -1000, -1000, -1000, 27303, -1000, -1000, 20144, -1000, -1000, + 6625, 27303, 230, 27303, -1000, 1129, 1389, -1000, -1000, -1000, + 1524, 17462, 27303, 1087, 1081, -1000, -1000, 438, 8008, -16, + -1000, 8008, 1106, -1000, -27, -33, 9824, 452, -1000, -1000, + -1000, 2069, 14754, 1045, -1000, 60, -1000, -1000, -1000, 1169, + -1000, 1169, 1169, 1169, 1169, 44, 44, 44, 44, -1000, + -1000, -1000, -1000, -1000, 1191, 1190, -1000, 1169, 1169, 1169, + 1169, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1189, 1189, + 1189, 1171, 1171, 308, -1000, 12519, 105, 27303, 1512, 793, + 149, 27303, 1273, -1000, 27303, 1235, 1235, 1235, -1000, 1502, + 930, 924, -1000, 1131, -1000, -1000, 1557, -1000, -1000, 482, + 648, 647, 464, 27303, 133, 227, -1000, 290, -1000, 27303, + 1187, 1487, 510, 904, -1000, 904, -1000, -1000, -1000, -1000, + 437, -1000, -1000, 904, 1130, -1000, 1124, 774, 630, 634, + 627, 1130, -1000, -1000, -136, 1130, -1000, 1130, -1000, 1130, + -1000, 1130, -1000, 1130, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 527, 27303, 133, 591, -1000, 353, -1000, -1000, + 591, 591, -1000, -1000, -1000, -1000, 936, 925, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 1471, 1056, 27092, -1000, -1000, 2210, 914, - -1000, 1244, -1000, 1053, -1000, 1226, 130, 348, 1267, 914, - 914, 914, 914, 623, -1000, -1000, -1000, 545, 545, 254, - 3769, 3456, -1000, -1000, -1000, 24403, 1243, 914, -1000, 1241, - -1000, 1494, 338, 506, 506, 914, -1000, -1000, 27092, 914, - 1493, 1492, 27092, 27092, -1000, 23956, -1000, 23509, 23062, 857, - 27092, 22615, 22168, 21721, 21274, 20827, -1000, 1301, -1000, 1231, - -1000, -1000, -1000, 27092, 27092, 27092, 29, -1000, -1000, 27092, - 914, -1000, -1000, 832, 827, 545, 545, 812, 945, 943, - 941, 545, 545, 808, 935, 963, 185, 805, 800, 794, - 908, 934, 105, 834, 804, 782, 27092, 1240, -1000, 125, - 565, 173, 205, 187, 27092, 126, 1476, 1404, 1158, 362, - 337, 1298, 27092, 1507, 914, -1000, 7336, -1000, -1000, 933, - 12308, -1000, -1000, -1000, -1000, -1000, 663, 27092, 626, 663, - 27092, 663, 663, 663, 663, 626, 626, 627, 626, -1000, - -1000, 663, 27092, 27092, 6875, 6875, 6875, 27092, 6875, 6875, - 27092, 6875, 6875, 627, -1000, -1000, -1000, 503, -1000, 1296, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 98, -1000, -1000, - -1000, -1000, -1000, 1602, -1000, -1000, -1000, -111, 1156, 20380, - -1000, -281, -283, -284, -285, -1000, -1000, -1000, -286, -291, - -1000, -1000, -1000, 12308, 12308, 12308, 12308, 695, 515, 13649, - 743, 540, 13649, 13649, 13649, 13649, 13649, 13649, 13649, 13649, - 13649, 13649, 13649, 13649, 13649, 13649, 13649, 693, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 914, -1000, 1600, 753, - 753, 482, 482, 482, 482, 482, 482, 482, 482, 482, - 14096, 9166, 7336, 956, 1049, 1568, 10507, 10507, 12308, 12308, - 11401, 10954, 10507, 1444, 600, 549, 27092, -1000, -1000, 13202, - -1000, -1000, -1000, -1000, -1000, 992, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 27092, 27092, 10507, 10507, 10507, 10507, 10507, - -1000, 1155, -1000, -169, 15897, 12308, 1526, 956, 1424, 1503, - 1595, 499, 1005, 1151, -1000, 773, 1526, 17698, 1157, -1000, - 1424, -1000, -1000, -1000, 27092, -1000, -1000, 19933, -1000, -1000, - 6414, 27092, 219, 27092, -1000, 1142, 1355, -1000, -1000, -1000, - 1513, 17251, 27092, 1113, 1052, -1000, -1000, 463, 7797, -56, - -1000, 7797, 1124, -1000, -51, -34, 9613, 450, -1000, -1000, - -1000, 955, 14543, 1076, -1000, 30, -1000, -1000, -1000, 1226, - -1000, 1226, 1226, 1226, 1226, 29, 29, 29, 29, -1000, - -1000, -1000, -1000, -1000, 1239, 1238, -1000, 1226, 1226, 1226, - 1226, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1237, 1237, - 1237, 1227, 1227, 311, -1000, 12308, 140, 27092, 1502, 774, - 125, 27092, 1293, -1000, 27092, 1267, 1267, 1267, -1000, 1505, - 905, 883, -1000, 1148, -1000, -1000, 1557, -1000, -1000, 586, - 668, 632, 425, 27092, 113, 213, -1000, 295, -1000, 27092, - 1236, 1491, 506, 914, -1000, 914, -1000, -1000, -1000, -1000, - 461, -1000, -1000, 914, 1147, -1000, 1116, 719, 631, 685, - 609, 1147, -1000, -1000, -120, 1147, -1000, 1147, -1000, 1147, - -1000, 1147, -1000, 1147, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 561, 27092, 113, 693, -1000, 361, -1000, -1000, - 693, 693, -1000, -1000, -1000, -1000, 930, 929, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -329, 27303, 373, 135, 150, 27303, + 27303, 27303, 27303, 27303, 402, -1000, -1000, -1000, 204, 27303, + 27303, 27303, 27303, 403, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 763, 27303, -1000, -1000, 606, 606, -1000, -1000, 27303, + 606, -1000, -1000, -1000, -1000, -1000, -1000, 606, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -329, 27092, 368, 116, 191, 27092, - 27092, 27092, 27092, 27092, 421, -1000, -1000, -1000, 150, 27092, - 27092, 27092, 27092, 405, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 549, -1000, -1000, 663, -1000, -1000, -1000, -1000, -1000, - -1000, 663, 663, 27092, -1000, -1000, 663, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 27092, - -1000, 927, 27092, 27092, -1000, -1000, -1000, -1000, -1000, 25, - -31, 165, -1000, -1000, -1000, -1000, 1518, -1000, 549, 515, - 643, 556, -1000, -1000, 768, -1000, -1000, 2081, -1000, -1000, - -1000, -1000, 743, 13649, 13649, 13649, 592, 2081, 2357, 1254, - 2271, 482, 605, 605, 504, 504, 504, 504, 504, 815, - 815, -1000, -1000, -1000, -1000, 992, -1000, -1000, -1000, 992, - 10507, 10507, 1146, 1190, 444, -1000, 1207, -1000, -1000, 1526, - 1024, 1024, 710, 867, 624, 1579, 1024, 595, 1577, 1024, - 1024, 10507, -1000, -1000, 669, -1000, 12308, 992, -1000, 873, - 1144, 1139, 1024, 992, 992, 1024, 1024, 27092, -1000, -274, - -1000, -66, 443, 1190, -1000, 19486, -1000, -1000, 992, 1084, - 1450, -1000, -1000, 1396, -1000, 1338, 12308, 12308, 12308, -1000, - -1000, -1000, 1450, 1549, -1000, 1359, 1358, 1575, 10507, 19039, - 1424, -1000, -1000, -1000, 437, 1575, 1096, 1190, -1000, 27092, - 19039, 19039, 19039, 19039, 19039, -1000, 1317, 1309, -1000, 1364, - 1310, 1316, 27092, -1000, 1038, 956, 17251, 219, 1086, 19039, - 27092, -1000, -1000, 19039, 27092, 5953, -1000, 1124, -56, -57, - -1000, -1000, -1000, -1000, 549, -1000, 847, -1000, 2160, -1000, - 278, -1000, -1000, -1000, -1000, 401, 27, -1000, -1000, 29, - 29, -1000, -1000, 450, 678, 450, 450, 450, 926, 926, - -1000, -1000, -1000, -1000, -1000, 759, -1000, -1000, -1000, 758, - -1000, -1000, 856, 1297, 140, -1000, -1000, 545, 907, 1402, - -1000, -1000, 1059, 367, -1000, 27092, -1000, 1292, 1276, 1273, - -1000, -1000, -1000, -1000, -1000, 258, 27092, 1035, -1000, 110, - 27092, 1045, 27092, -1000, 1033, 27092, -1000, 914, -1000, -1000, - 7336, -1000, 27092, 1190, -1000, -1000, -1000, -1000, 404, 1474, - 1473, 113, 110, 450, 914, -1000, -1000, -1000, -1000, -1000, - -332, 1026, 27092, 124, -1000, 1235, 860, -1000, 1263, -1000, - -1000, -1000, -1000, 115, 167, 151, 360, -1000, 403, 1297, - 27092, -1000, -1000, -1000, -1000, -1000, -1000, 626, -1000, 626, - -1000, -1000, -1000, -1000, 1469, -39, -306, -1000, -301, -1000, - -1000, -1000, -1000, 592, 2081, 2212, -1000, 13649, 13649, -1000, - -1000, 1024, 1024, 10507, 7336, 1568, 1450, -1000, -1000, 381, - 693, 381, 13649, 13649, -1000, 13649, 13649, -1000, -110, 1132, - 596, -1000, 12308, 811, -1000, -1000, 13649, 13649, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 375, 374, 372, - 27092, -1000, -1000, -1000, 836, 906, 1336, 549, 549, -1000, - -1000, 27092, -1000, -1000, -1000, -1000, 1572, 12308, -1000, 1123, - -1000, 5492, 1526, 1272, 27092, 1190, 1602, 15450, 27092, 1143, - -1000, 564, 1355, 1262, 1271, 1180, -1000, -1000, -1000, -1000, - 1307, -1000, 1249, -1000, -1000, -1000, -1000, -1000, 956, 1575, - 19039, 1075, -1000, 1075, -1000, 434, -1000, -1000, -1000, -48, - -54, -1000, -1000, -1000, 955, -1000, -1000, -1000, 689, 13649, - 1592, -1000, 898, 1485, -1000, 1482, -1000, -1000, 450, 450, - -1000, -1000, -1000, -1000, -1000, -1000, 1022, -1000, 1018, 1121, - 1016, 50, -1000, 1187, 1466, 545, 545, -1000, 750, -1000, - 914, -1000, 27092, -1000, 27092, 27092, 27092, 1555, 1104, -1000, - 27092, -1000, -1000, 27092, -1000, -1000, 1357, 140, 1014, -1000, - -1000, -1000, 213, 27092, -1000, 753, 110, -1000, -1000, -1000, - -1000, -1000, -1000, 1208, -1000, -1000, -1000, 1041, -1000, -122, - 914, 27092, 27092, 27092, -1000, 27092, -1000, -1000, -1000, 663, - 663, -1000, 1437, -1000, 914, -1000, 13649, 2081, 2081, -1000, - -1000, 992, -1000, 1526, -1000, 992, 1226, 1226, -1000, 1226, - 1227, -1000, 1226, 76, 1226, 72, 992, 992, 2543, 2292, - 2253, 1319, 1190, -94, -1000, 549, 12308, 1724, 1224, 1190, - 1190, 1190, 1002, 891, 29, -1000, -1000, -1000, 1570, 1554, - 549, -1000, -1000, -1000, 1498, 1081, 1082, -1000, -1000, 10060, - 1011, 1356, 430, 1002, 1568, 27092, 12308, -1000, -1000, 12308, - 1223, -1000, 12308, -1000, -1000, -1000, 1568, 1568, 1075, -1000, - -1000, 429, -1000, -1000, -1000, -1000, -1000, 2081, -52, -1000, - -1000, -1000, -1000, -1000, 29, 889, 29, 734, -1000, 713, - -1000, -1000, -211, -1000, -1000, 1131, 1275, -1000, -1000, 1208, - -1000, -1000, -1000, 27092, 27092, -1000, -1000, 196, -1000, 233, - 988, -1000, -167, -1000, -1000, 1512, 27092, -1000, -1000, 7336, - -1000, -1000, 1197, 1264, -1000, -1000, -1000, -1000, -1000, -1000, - 2081, -1000, 1450, -1000, -1000, 217, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 13649, 13649, 13649, 13649, 13649, 1526, - 884, 549, 13649, 13649, 18592, 27092, 27092, 16791, 29, -4, - -1000, 12308, 12308, 1480, -1000, 1190, -1000, 1138, 27092, 1190, - 27092, -1000, 1526, -1000, 549, 549, 27092, 549, 1526, -1000, - -1000, 450, -1000, 450, 1039, 1028, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1511, 1104, -1000, 169, 27092, -1000, - 213, -1000, -176, -177, 1182, 984, 1100, -1000, 532, 27092, - 27092, -1000, -1000, -1000, 873, 873, 873, 873, 414, 992, - -1000, 873, 873, 980, -1000, 980, 980, 443, -269, -1000, - 1399, 1397, 549, 1084, 1591, -1000, 1190, 1602, 416, 1082, - -1000, -1000, 977, -1000, -1000, -1000, -1000, -1000, 1182, 1190, - 1188, -1000, -1000, -1000, 183, -1000, 7336, 5031, 974, -1000, - -1000, -1000, -1000, -1000, 992, 166, -143, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -4, 260, -1000, 1377, 1370, 1553, - 27092, 1082, 27092, -1000, 183, 12755, 27092, -1000, -49, -1000, - -1000, -1000, -1000, -1000, 1263, -1000, 1324, -115, -157, 1381, - 1385, 1385, 1397, 1551, 1393, 1391, -1000, 878, 964, -1000, - -1000, 873, 992, 971, 306, -1000, -1000, -122, -1000, 1161, - -1000, 1379, 755, -1000, -1000, -1000, -1000, 874, -1000, 1534, - 1533, -1000, -1000, -1000, 1270, 127, -1000, -124, -1000, 709, - -1000, -1000, -1000, 871, 869, 1269, -1000, 1586, -1000, -166, - -1000, -1000, -1000, -1000, -1000, 1588, 438, 438, -159, -1000, - -1000, -1000, 279, 797, -1000, -1000, -1000, -1000, -1000, + -1000, 923, 27303, 27303, -1000, -1000, -1000, -1000, -1000, 92, + -29, 178, -1000, -1000, -1000, -1000, 1515, -1000, 763, 513, + 523, 531, -1000, -1000, 851, -1000, -1000, 2477, -1000, -1000, + -1000, -1000, 729, 13860, 13860, 13860, 569, 2477, 2332, 1227, + 612, 454, 626, 626, 459, 459, 459, 459, 459, 587, + 587, -1000, -1000, -1000, -1000, 970, -1000, -1000, -1000, 970, + 10718, 10718, 1128, 1158, 429, -1000, 1214, -1000, -1000, 1539, + 1015, 1015, 716, 856, 566, 1579, 1015, 562, 1574, 1015, + 1015, 10718, -1000, -1000, 615, -1000, 12519, 970, -1000, 1186, + 1123, 1111, 1015, 970, 970, 1015, 1015, 27303, -1000, -273, + -1000, -75, 470, 1158, -1000, 19697, -1000, -1000, 970, 1071, + 1448, -1000, -1000, 1418, -1000, 1339, 12519, 12519, 12519, -1000, + -1000, -1000, 1448, 1541, -1000, 1373, 1370, 1572, 10718, 19250, + 1424, -1000, -1000, -1000, 426, 1572, 1075, 1158, -1000, 27303, + 19250, 19250, 19250, 19250, 19250, -1000, 1331, 1325, -1000, 1322, + 1287, 1326, 27303, -1000, 1040, 1041, 17462, 230, 1096, 19250, + 27303, -1000, -1000, 19250, 27303, 6164, -1000, 1106, -16, -61, + -1000, -1000, -1000, -1000, 763, -1000, 887, -1000, 332, -1000, + 296, -1000, -1000, -1000, -1000, 541, 53, -1000, -1000, 44, + 44, -1000, -1000, 452, 653, 452, 452, 452, 918, 918, + -1000, -1000, -1000, -1000, -1000, 792, -1000, -1000, -1000, 764, + -1000, -1000, 836, 1268, 105, -1000, -1000, 542, 915, 1425, + -1000, -1000, 1012, 371, -1000, 27303, -1000, 1270, 1269, 1265, + -1000, -1000, -1000, -1000, -1000, 3396, 27303, 1038, -1000, 131, + 27303, 1005, 27303, -1000, 1031, 27303, -1000, 904, -1000, -1000, + 7547, -1000, 27303, 1158, -1000, -1000, -1000, -1000, 389, 1478, + 1462, 133, 131, 452, 904, -1000, -1000, -1000, -1000, -1000, + -332, 1028, 27303, 161, -1000, 1174, 953, -1000, 1193, -1000, + -1000, -1000, -1000, 141, 215, 187, 347, -1000, 397, 1268, + 27303, -1000, -1000, -1000, 659, -1000, -1000, 659, -1000, -1000, + -1000, -1000, -1000, -1000, 1444, -50, -303, -1000, -300, -1000, + -1000, -1000, -1000, 569, 2477, 1243, -1000, 13860, 13860, -1000, + -1000, 1015, 1015, 10718, 7547, 1563, 1448, -1000, -1000, 256, + 591, 256, 13860, 13860, -1000, 13860, 13860, -1000, -128, 1101, + 524, -1000, 12519, 720, -1000, -1000, 13860, 13860, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 381, 380, 379, + 27303, -1000, -1000, -1000, 778, 912, 1337, 763, 763, -1000, + -1000, 27303, -1000, -1000, -1000, -1000, 1570, 12519, -1000, 1105, + -1000, 5703, 1539, 1264, 27303, 1158, 1597, 15661, 27303, 1144, + -1000, 546, 1389, 1254, 1263, 1606, -1000, -1000, -1000, -1000, + 1306, -1000, 1293, -1000, -1000, -1000, -1000, -1000, 1041, 1572, + 19250, 1141, -1000, 1141, -1000, 423, -1000, -1000, -1000, -66, + -64, -1000, -1000, -1000, 2069, -1000, -1000, -1000, 670, 13860, + 1588, -1000, 911, 1486, -1000, 1482, -1000, -1000, 452, 452, + -1000, -1000, -1000, -1000, -1000, -1000, 1008, -1000, 1004, 1099, + 1002, 65, -1000, 1166, 1438, 542, 542, -1000, 762, -1000, + 904, -1000, 27303, -1000, 27303, 27303, 27303, 1555, 1097, -1000, + 27303, -1000, -1000, 27303, -1000, -1000, 1346, 105, 997, -1000, + -1000, -1000, 227, 27303, -1000, 906, 131, -1000, -1000, -1000, + -1000, -1000, -1000, 1164, -1000, -1000, -1000, 990, -1000, -137, + 904, 27303, 27303, 27303, -1000, 27303, -1000, -1000, -1000, 606, + 606, -1000, 1437, -1000, 904, -1000, 13860, 2477, 2477, -1000, + -1000, 970, -1000, 1539, -1000, 970, 1169, 1169, -1000, 1169, + 1171, -1000, 1169, 108, 1169, 102, 970, 970, 2237, 2217, + 2145, 2047, 1158, -123, -1000, 763, 12519, 2115, 2081, 1158, + 1158, 1158, 988, 896, 44, -1000, -1000, -1000, 1565, 1554, + 763, -1000, -1000, -1000, 1494, 1077, 1067, -1000, -1000, 10271, + 993, 1345, 416, 988, 1563, 27303, 12519, -1000, -1000, 12519, + 1168, -1000, 12519, -1000, -1000, -1000, 1563, 1563, 1141, -1000, + -1000, 447, -1000, -1000, -1000, -1000, -1000, 2477, -13, -1000, + -1000, -1000, -1000, -1000, 44, 894, 44, 754, -1000, 748, + -1000, -1000, -211, -1000, -1000, 1150, 1229, -1000, -1000, 1164, + -1000, -1000, -1000, 27303, 27303, -1000, -1000, 223, -1000, 282, + 984, -1000, -162, -1000, -1000, 1518, 27303, -1000, -1000, 7547, + -1000, -1000, 1159, 1232, -1000, -1000, -1000, -1000, -1000, -1000, + 2477, -1000, 1448, -1000, -1000, 233, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 13860, 13860, 13860, 13860, 13860, 1539, + 892, 763, 13860, 13860, 18803, 27303, 27303, 17002, 44, 41, + -1000, 12519, 12519, 1481, -1000, 1158, -1000, 1138, 27303, 1158, + 27303, -1000, 1539, -1000, 763, 763, 27303, 763, 1539, -1000, + -1000, 452, -1000, 452, 981, 973, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 1516, 1097, -1000, 220, 27303, -1000, + 227, -1000, -171, -176, 1185, 979, 1094, -1000, 529, 27303, + 27303, -1000, -1000, -1000, 1186, 1186, 1186, 1186, 83, 970, + -1000, 1186, 1186, 969, -1000, 969, 969, 470, -264, -1000, + 1401, 1397, 763, 1071, 1587, -1000, 1158, 1597, 409, 1067, + -1000, -1000, 961, -1000, -1000, -1000, -1000, -1000, 1185, 1158, + 1157, -1000, -1000, -1000, 185, -1000, 7547, 5242, 959, -1000, + -1000, -1000, -1000, -1000, 970, 136, -141, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 41, 292, -1000, 1378, 1376, 1553, + 27303, 1067, 27303, -1000, 185, 12966, 27303, -1000, -38, -1000, + -1000, -1000, -1000, -1000, 1193, -1000, 1282, -133, -157, 1382, + 1384, 1384, 1397, 1552, 1390, 1392, -1000, 891, 1066, -1000, + -1000, 1186, 970, 957, 306, -1000, -1000, -137, -1000, 1173, + -1000, 1380, 701, -1000, -1000, -1000, -1000, 886, -1000, 1551, + 1549, -1000, -1000, -1000, 1262, 154, -1000, -138, -1000, 694, + -1000, -1000, -1000, 880, 775, 1238, -1000, 1578, -1000, -151, + -1000, -1000, -1000, -1000, -1000, 1580, 432, 432, -159, -1000, + -1000, -1000, 289, 771, -1000, -1000, -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1879, 1878, 13, 102, 79, 1877, 1874, 1873, 1869, - 128, 127, 126, 1868, 1866, 1865, 1851, 1850, 1849, 1847, - 1843, 1841, 1839, 1837, 1830, 56, 115, 39, 37, 121, - 1827, 1826, 47, 1825, 1823, 1820, 116, 113, 472, 1819, - 117, 1818, 1817, 1816, 1815, 1813, 1811, 1810, 1809, 1808, - 1807, 1805, 1804, 1803, 191, 1802, 1800, 6, 1798, 50, - 1794, 1792, 1777, 1776, 1775, 86, 1774, 1773, 1772, 106, - 1770, 1768, 49, 287, 41, 73, 1764, 1763, 72, 790, - 1762, 91, 125, 1761, 1757, 1760, 58, 68, 85, 1759, - 40, 1758, 1756, 92, 1755, 1754, 1753, 67, 1752, 1751, - 3127, 1750, 64, 77, 17, 27, 1749, 1748, 1745, 1744, - 36, 1262, 1743, 1742, 20, 1740, 1739, 138, 1738, 84, - 23, 1736, 15, 12, 18, 1735, 81, 1734, 8, 62, - 31, 1732, 82, 1731, 1730, 1729, 1727, 24, 1726, 75, - 96, 33, 1725, 1722, 7, 10, 1720, 1717, 1716, 1715, - 1714, 1713, 4, 1711, 1710, 1709, 26, 1708, 11, 25, - 65, 46, 29, 9, 1707, 143, 1705, 28, 123, 66, - 101, 1701, 1700, 1697, 988, 45, 137, 1696, 1688, 35, - 1686, 111, 119, 1685, 1439, 1682, 1681, 70, 1086, 2601, - 78, 110, 1677, 1676, 1961, 52, 76, 21, 1674, 1672, - 1671, 124, 131, 60, 853, 44, 1670, 1668, 1666, 1665, - 1664, 1663, 1662, 87, 34, 19, 109, 30, 1660, 1656, - 1653, 63, 43, 1650, 105, 104, 71, 120, 1649, 114, - 122, 74, 1648, 42, 1647, 1646, 1640, 1639, 83, 1637, - 1635, 1634, 1632, 100, 89, 55, 32, 1631, 38, 107, - 99, 97, 1630, 22, 118, 16, 1627, 3, 0, 1626, - 5, 112, 1463, 103, 1623, 1618, 1, 1617, 2, 1616, - 1615, 80, 1614, 1612, 1611, 1610, 2772, 218, 108, 1609, - 130, + 0, 1862, 1861, 14, 80, 81, 1860, 1859, 1858, 1857, + 131, 130, 126, 1856, 1855, 1853, 1852, 1850, 1848, 1846, + 1844, 1843, 1842, 1841, 1838, 65, 120, 35, 39, 121, + 1835, 1830, 45, 1829, 1828, 1827, 125, 124, 482, 1825, + 116, 1824, 1822, 1821, 1819, 1818, 1817, 1816, 1815, 1813, + 1812, 1811, 1810, 1809, 156, 1808, 1807, 9, 1806, 49, + 1804, 1803, 1802, 1800, 1799, 85, 1798, 1794, 1792, 112, + 1790, 1789, 44, 128, 40, 74, 1786, 1785, 73, 807, + 1784, 99, 119, 1782, 176, 1780, 42, 84, 79, 1778, + 36, 1774, 1773, 92, 1772, 1771, 1770, 68, 1769, 1768, + 3135, 1767, 67, 77, 12, 37, 1766, 1764, 1763, 1761, + 38, 1985, 1760, 1759, 22, 1756, 1755, 136, 1754, 88, + 17, 1742, 16, 24, 19, 1739, 86, 1738, 43, 64, + 34, 1734, 83, 1733, 1732, 1731, 1730, 25, 1728, 75, + 102, 62, 1727, 1726, 7, 11, 1724, 1723, 1722, 1720, + 1717, 1716, 4, 1715, 1714, 1711, 26, 1710, 6, 21, + 72, 46, 30, 10, 1708, 135, 1707, 27, 114, 66, + 108, 1706, 1705, 1704, 960, 71, 138, 1700, 1698, 33, + 1697, 115, 123, 1692, 1443, 1690, 1689, 47, 836, 2306, + 23, 109, 1687, 1686, 1987, 56, 76, 20, 1685, 1684, + 1682, 122, 191, 60, 876, 41, 1677, 1674, 1667, 1664, + 1663, 1660, 1659, 87, 28, 18, 103, 29, 1658, 1657, + 1654, 57, 63, 1646, 106, 104, 70, 164, 1643, 111, + 101, 52, 1641, 105, 1638, 1636, 1635, 1634, 50, 1633, + 1632, 1629, 1626, 107, 89, 55, 32, 1620, 31, 96, + 100, 97, 1619, 13, 117, 8, 1618, 3, 0, 1617, + 5, 118, 1450, 91, 1616, 1615, 1, 1613, 2, 1611, + 1610, 78, 1609, 1608, 1607, 1606, 3150, 1289, 110, 1605, + 129, } var yyR1 = [...]int{ @@ -4371,9 +4392,9 @@ var yyR2 = [...]int{ 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 0, 2, 2, 1, 3, 8, 8, 3, 3, 5, 6, 6, 5, 4, 3, 2, 3, - 3, 3, 3, 3, 3, 3, 4, 5, 2, 4, - 4, 4, 4, 4, 5, 5, 4, 7, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 2, 4, 7, + 3, 3, 7, 3, 3, 3, 3, 4, 7, 5, + 2, 4, 4, 4, 4, 4, 5, 5, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 2, 4, 5, 4, 3, 3, 5, 2, 3, 3, 3, 3, 1, 1, 0, 1, 0, 1, 1, 1, 0, 2, 2, 0, 2, 2, 0, 2, 0, 1, @@ -4512,10 +4533,10 @@ var yyChk = [...]int{ 427, 203, 302, 191, 423, 314, 216, 279, 344, 208, 438, 343, 255, 252, 210, 424, 165, 204, 205, 425, 428, 295, 285, 296, 297, 286, 211, 342, 250, 280, - 163, -165, 281, 282, 283, 294, 295, 300, 301, 299, - 202, -273, 305, 163, -185, 302, 144, 153, 291, -177, + 163, -165, 281, -185, 282, 283, 294, 295, 300, -177, + 301, 299, 202, -273, 305, 163, 302, 144, 153, 291, 292, 285, 286, 211, -269, -258, 448, 463, 304, 254, - 306, 430, 287, 293, 297, 296, -194, 228, -199, 233, + 287, 293, 306, 430, 297, 296, -194, 228, -199, 233, -189, -258, -188, 231, -100, -60, 426, 157, -201, -201, -71, 430, 432, -120, -84, -106, 110, -111, 30, 24, -110, -107, -128, -125, -126, 144, 145, 147, 146, 148, @@ -4555,10 +4576,10 @@ var yyChk = [...]int{ -233, -233, -233, -233, -233, -233, -233, -233, -100, -82, 213, 153, 155, 158, 73, 118, -38, 208, -22, -100, 163, -258, -181, 168, -181, -100, 150, -100, -179, 126, - 13, -179, -179, -179, -179, -179, 209, 298, 284, 209, - 298, 209, 210, 209, 210, 209, 284, -176, 288, 289, - 290, -175, 12, 128, -258, 433, 317, 300, -258, 202, - 163, 203, 165, -228, 164, 34, 176, 210, 284, 205, + 13, -179, -176, 284, 288, 289, 290, -179, -179, -179, + -179, 209, 298, -228, 164, 34, 176, 284, 209, 298, + 209, 210, 209, 210, 209, -175, 12, 128, -258, 433, + 317, 300, -258, 202, 163, 203, 165, 210, 284, 205, -179, -202, -276, -190, -202, -202, 31, 166, -189, -56, -189, 88, -7, -3, -11, -10, -12, 118, -77, 284, -65, 144, 448, 434, 435, 436, 433, 299, 441, 439, @@ -4597,9 +4618,9 @@ var yyChk = [...]int{ 30, 89, 30, 89, -189, 81, -81, 215, 118, 204, 204, 163, 163, 217, -100, 216, 218, 220, 41, 82, 166, -181, 73, -95, -100, 24, -258, -195, -194, -187, - 88, -84, -179, -100, -175, -179, -100, -179, -179, -179, - -179, -175, -175, -229, 12, 128, -175, -179, -194, -194, - -202, -202, -202, -100, -202, -202, -100, -202, -202, -229, + 88, -84, -229, 12, 128, -175, -175, -179, -100, -229, + -175, -179, -100, -179, -179, -179, -179, -175, -179, -194, + -194, -202, -202, -202, -100, -202, -202, -100, -202, -202, -180, 126, 73, -200, 231, 265, 427, 428, 429, 82, 339, -93, 433, 433, 433, 433, 433, 433, -84, -84, -84, -84, -118, 98, 110, 99, 100, -111, -119, -123, @@ -4629,7 +4650,7 @@ var yyChk = [...]int{ 31, -222, -129, -203, 166, -203, -203, 88, 88, -178, 463, -93, 165, 222, -83, 322, 88, 84, -100, -100, -100, -100, -100, 158, 155, 206, -100, -100, -93, -100, - 82, -59, 183, 178, -179, -179, -179, -100, -179, -100, + 82, -59, 183, 178, -100, -179, -179, -100, -179, -179, 88, -100, -189, -65, 309, 339, 20, -66, 20, 98, 99, 100, -119, -111, -111, -111, -72, 188, 109, -277, -277, -73, -73, -276, 150, -5, -141, -277, -277, 82, @@ -4737,10 +4758,10 @@ var yyDef = [...]int{ 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, - 0, 473, 473, 473, 473, 473, 473, 0, 0, 428, - 0, 0, 0, 0, 0, 470, 0, 0, 447, 0, + 0, 473, 473, 0, 473, 473, 473, 473, 0, 0, + 0, 430, 0, 0, 0, 0, 470, 0, 0, 448, 450, 0, 0, 457, 473, 1346, 1346, 1346, 913, 0, - 479, 480, 467, 465, 462, 463, 481, 484, 0, 489, + 467, 465, 479, 480, 462, 463, 481, 484, 0, 489, 492, 939, 940, 0, 507, 0, 1157, 499, 512, 513, 0, 544, 545, 39, 683, 642, 0, 648, 650, 0, 685, 686, 687, 688, 689, 0, 0, 0, 0, 0, @@ -4780,10 +4801,10 @@ var yyDef = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 101, 838, 0, 0, 0, 0, 0, 0, -2, 0, 410, 0, 924, 0, 0, 0, 0, 417, 0, 419, 420, 0, - 0, 421, 422, 423, 424, 425, 473, 0, 470, 473, - 0, 473, 473, 473, 473, 470, 470, 0, 470, 468, - 469, 473, 0, 0, 1346, 1346, 1346, 0, 1346, 1346, - 0, 1346, 1346, 0, 231, 232, 233, 476, 454, 455, + 0, 421, 0, 470, 470, 468, 469, 423, 424, 425, + 426, 473, 0, 0, 231, 232, 233, 470, 473, 0, + 473, 473, 473, 473, 470, 473, 0, 0, 1346, 1346, + 1346, 0, 1346, 1346, 0, 1346, 1346, 476, 454, 455, 458, 459, 1347, 1348, 460, 461, 914, 490, 493, 510, 508, 509, 511, 503, 504, 505, 506, 0, 523, 524, 529, 0, 0, 0, 0, 535, 536, 537, 0, 0, @@ -4822,9 +4843,9 @@ var yyDef = [...]int{ 297, 298, 299, 300, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 835, 836, 837, 0, 0, 0, 0, 0, 261, 63, 925, 416, 633, 945, 946, - 474, 475, 426, 448, 473, 429, 451, 430, 432, 431, - 433, 473, 473, 0, 234, 235, 473, 436, 471, 472, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 0, + 474, 475, 0, 234, 235, 473, 473, 427, 449, 0, + 473, 431, 451, 432, 434, 433, 435, 473, 438, 471, + 472, 439, 440, 441, 442, 443, 444, 445, 446, 447, 453, 0, 0, 0, 491, 495, 496, 497, 498, 0, 0, 526, 531, 532, 533, 534, 546, 539, 684, 643, 644, 645, 647, 664, 0, 666, 668, 654, 655, 679, @@ -4854,7 +4875,7 @@ var yyDef = [...]int{ 0, 320, 322, 210, 0, 276, 277, 282, 283, 301, 0, 0, 0, 0, 848, 849, 0, 852, 92, 374, 376, 375, 379, 0, 0, 0, 0, 411, 261, 822, - 0, 415, 262, 263, 427, 434, 435, 470, 452, 470, + 0, 415, 262, 263, 470, 437, 452, 470, 429, 436, 477, 456, 487, 530, 0, 0, 0, 538, 0, 665, 667, 669, 656, 677, 660, 0, 657, 0, 0, 651, 719, 0, 0, 561, 0, 810, 853, 723, 724, 0, @@ -4889,7 +4910,7 @@ var yyDef = [...]int{ 253, 265, 0, 823, 824, 0, 0, 219, 221, 597, 103, 104, 105, 0, 0, 126, 323, 0, 213, 0, 0, 406, 403, 340, 341, 0, 0, 850, 373, 0, - 93, 94, 0, 0, 378, 412, 437, 449, 527, 547, + 93, 94, 0, 0, 378, 412, 422, 428, 527, 547, 662, 722, 853, 725, 770, 207, 774, 775, 777, 779, 780, 782, 727, 726, 0, 0, 0, 0, 0, 818, 0, 789, 0, 0, 0, 0, 0, 615, 207, 878, @@ -7745,10 +7766,10 @@ yydefault: yyVAL.statement = &Show{&ShowBasic{Command: Collation, Filter: yyDollar[3].showFilter}} } case 422: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:2324 { - yyVAL.statement = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Full: yyDollar[2].boolean, Command: Column, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}} } case 423: yyDollar = yyS[yypt-3 : yypt+1] @@ -7760,7 +7781,7 @@ yydefault: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2332 { - yyVAL.statement = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilter}} } case 425: yyDollar = yyS[yypt-3 : yypt+1] @@ -7769,88 +7790,88 @@ yydefault: yyVAL.statement = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilter}} } case 426: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2340 { - yyVAL.statement = &Show{&ShowBasic{Command: Function, Filter: yyDollar[4].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilter}} } case 427: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2344 { - yyVAL.statement = &Show{&ShowBasic{Command: OpenTable, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Function, Filter: yyDollar[4].showFilter}} } case 428: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:2348 { - yyVAL.statement = &Show{&ShowBasic{Command: Privilege}} + yyVAL.statement = &Show{&ShowBasic{Command: Index, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}} } case 429: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:2352 { - yyVAL.statement = &Show{&ShowBasic{Command: Procedure, Filter: yyDollar[4].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: OpenTable, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} } case 430: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2356 { - yyVAL.statement = &Show{&ShowBasic{Command: StatusSession, Filter: yyDollar[4].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Privilege}} } case 431: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2360 { - yyVAL.statement = &Show{&ShowBasic{Command: StatusGlobal, Filter: yyDollar[4].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Procedure, Filter: yyDollar[4].showFilter}} } case 432: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2364 { - yyVAL.statement = &Show{&ShowBasic{Command: VariableSession, Filter: yyDollar[4].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: StatusSession, Filter: yyDollar[4].showFilter}} } case 433: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2368 { - yyVAL.statement = &Show{&ShowBasic{Command: VariableGlobal, Filter: yyDollar[4].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: StatusGlobal, Filter: yyDollar[4].showFilter}} } case 434: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2372 { - yyVAL.statement = &Show{&ShowBasic{Command: TableStatus, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: VariableSession, Filter: yyDollar[4].showFilter}} } case 435: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2376 { - yyVAL.statement = &Show{&ShowBasic{Command: Table, Full: yyDollar[2].boolean, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: VariableGlobal, Filter: yyDollar[4].showFilter}} } case 436: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:2380 { - yyVAL.statement = &Show{&ShowBasic{Command: Trigger, DbName: yyDollar[3].str, Filter: yyDollar[4].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: TableStatus, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} } case 437: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:2384 { - yyVAL.statement = &Show{&ShowColumns{Full: yyDollar[2].boolean, Table: yyDollar[5].tableName, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Table, Full: yyDollar[2].boolean, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} } case 438: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2388 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowBasic{Command: Trigger, DbName: yyDollar[3].str, Filter: yyDollar[4].showFilter}} } case 439: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2392 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } case 440: yyDollar = yyS[yypt-4 : yypt+1] @@ -7862,31 +7883,31 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2400 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 442: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2405 +//line sql.y:2404 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } case 443: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2409 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } case 444: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2413 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 445: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2417 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } case 446: yyDollar = yyS[yypt-4 : yypt+1] @@ -7895,76 +7916,75 @@ yydefault: yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 447: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2425 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 448: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2429 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 449: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2433 { - showTablesOpt := &ShowTablesOpt{DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} - yyVAL.statement = &Show{&ShowLegacy{Extended: string(yyDollar[2].str), Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName, Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } case 450: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2438 +//line sql.y:2437 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 451: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2442 +//line sql.y:2441 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } case 452: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2446 +//line sql.y:2445 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 453: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2450 +//line sql.y:2449 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{&ShowLegacy{Scope: VitessMetadataScope, Type: string(yyDollar[3].bytes), ShowTablesOpt: showTablesOpt}} } case 454: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2455 +//line sql.y:2454 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 455: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2459 +//line sql.y:2458 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 456: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2463 +//line sql.y:2462 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), OnTable: yyDollar[5].tableName, Scope: ImplicitScope}} } case 457: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2467 +//line sql.y:2466 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 458: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2472 +//line sql.y:2471 { // This should probably be a different type (ShowVitessTopoOpt), but // just getting the thing working for now @@ -7973,1004 +7993,1004 @@ yydefault: } case 459: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2486 +//line sql.y:2485 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].colIdent.String()), Scope: ImplicitScope}} } case 460: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2490 +//line sql.y:2489 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 461: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2494 +//line sql.y:2493 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 462: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2500 +//line sql.y:2499 { yyVAL.str = string(yyDollar[1].bytes) } case 463: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2504 +//line sql.y:2503 { yyVAL.str = string(yyDollar[1].bytes) } case 464: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2510 +//line sql.y:2509 { yyVAL.str = "" } case 465: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2514 +//line sql.y:2513 { yyVAL.str = "extended " } case 466: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2520 +//line sql.y:2519 { yyVAL.boolean = false } case 467: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2524 +//line sql.y:2523 { yyVAL.boolean = true } case 468: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2530 +//line sql.y:2529 { yyVAL.str = string(yyDollar[1].bytes) } case 469: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2534 +//line sql.y:2533 { yyVAL.str = string(yyDollar[1].bytes) } case 470: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2540 +//line sql.y:2539 { yyVAL.str = "" } case 471: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2544 +//line sql.y:2543 { yyVAL.str = yyDollar[2].tableIdent.v } case 472: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2548 +//line sql.y:2547 { yyVAL.str = yyDollar[2].tableIdent.v } case 473: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2554 +//line sql.y:2553 { yyVAL.showFilter = nil } case 474: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2558 +//line sql.y:2557 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 475: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2562 +//line sql.y:2561 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } case 476: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2568 +//line sql.y:2567 { yyVAL.showFilter = nil } case 477: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2572 +//line sql.y:2571 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 478: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2578 +//line sql.y:2577 { yyVAL.empty = struct{}{} } case 479: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2582 +//line sql.y:2581 { yyVAL.empty = struct{}{} } case 480: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2586 +//line sql.y:2585 { yyVAL.empty = struct{}{} } case 481: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2592 +//line sql.y:2591 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } case 482: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2596 +//line sql.y:2595 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } case 483: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2602 +//line sql.y:2601 { yyVAL.statement = &Begin{} } case 484: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2606 +//line sql.y:2605 { yyVAL.statement = &Begin{} } case 485: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2612 +//line sql.y:2611 { yyVAL.statement = &Commit{} } case 486: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2618 +//line sql.y:2617 { yyVAL.statement = &Rollback{} } case 487: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2622 +//line sql.y:2621 { yyVAL.statement = &SRollback{Name: yyDollar[5].colIdent} } case 488: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2627 +//line sql.y:2626 { yyVAL.empty = struct{}{} } case 489: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2629 +//line sql.y:2628 { yyVAL.empty = struct{}{} } case 490: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2632 +//line sql.y:2631 { yyVAL.empty = struct{}{} } case 491: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2634 +//line sql.y:2633 { yyVAL.empty = struct{}{} } case 492: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2639 +//line sql.y:2638 { yyVAL.statement = &Savepoint{Name: yyDollar[2].colIdent} } case 493: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2645 +//line sql.y:2644 { yyVAL.statement = &Release{Name: yyDollar[3].colIdent} } case 494: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2650 +//line sql.y:2649 { yyVAL.explainType = EmptyType } case 495: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2654 +//line sql.y:2653 { yyVAL.explainType = JSONType } case 496: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2658 +//line sql.y:2657 { yyVAL.explainType = TreeType } case 497: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2662 +//line sql.y:2661 { yyVAL.explainType = VitessType } case 498: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2666 +//line sql.y:2665 { yyVAL.explainType = TraditionalType } case 499: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2670 +//line sql.y:2669 { yyVAL.explainType = AnalyzeType } case 500: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2676 +//line sql.y:2675 { yyVAL.bytes = yyDollar[1].bytes } case 501: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2680 +//line sql.y:2679 { yyVAL.bytes = yyDollar[1].bytes } case 502: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2684 +//line sql.y:2683 { yyVAL.bytes = yyDollar[1].bytes } case 503: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2690 +//line sql.y:2689 { yyVAL.statement = yyDollar[1].selStmt } case 504: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2694 +//line sql.y:2693 { yyVAL.statement = yyDollar[1].statement } case 505: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2698 +//line sql.y:2697 { yyVAL.statement = yyDollar[1].statement } case 506: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2702 +//line sql.y:2701 { yyVAL.statement = yyDollar[1].statement } case 507: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2707 +//line sql.y:2706 { yyVAL.str = "" } case 508: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2711 +//line sql.y:2710 { yyVAL.str = yyDollar[1].colIdent.val } case 509: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2715 +//line sql.y:2714 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'" } case 510: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2721 +//line sql.y:2720 { yyVAL.statement = &ExplainTab{Table: yyDollar[2].tableName, Wild: yyDollar[3].str} } case 511: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2725 +//line sql.y:2724 { yyVAL.statement = &ExplainStmt{Type: yyDollar[2].explainType, Statement: yyDollar[3].statement} } case 512: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2731 +//line sql.y:2730 { yyVAL.statement = &OtherAdmin{} } case 513: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2735 +//line sql.y:2734 { yyVAL.statement = &OtherAdmin{} } case 514: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2741 +//line sql.y:2740 { yyVAL.statement = &LockTables{Tables: yyDollar[3].tableAndLockTypes} } case 515: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2747 +//line sql.y:2746 { yyVAL.tableAndLockTypes = TableAndLockTypes{yyDollar[1].tableAndLockType} } case 516: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2751 +//line sql.y:2750 { yyVAL.tableAndLockTypes = append(yyDollar[1].tableAndLockTypes, yyDollar[3].tableAndLockType) } case 517: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2757 +//line sql.y:2756 { yyVAL.tableAndLockType = &TableAndLockType{Table: yyDollar[1].aliasedTableName, Lock: yyDollar[2].lockType} } case 518: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2763 +//line sql.y:2762 { yyVAL.lockType = Read } case 519: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2767 +//line sql.y:2766 { yyVAL.lockType = ReadLocal } case 520: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2771 +//line sql.y:2770 { yyVAL.lockType = Write } case 521: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2775 +//line sql.y:2774 { yyVAL.lockType = LowPriorityWrite } case 522: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2781 +//line sql.y:2780 { yyVAL.statement = &UnlockTables{} } case 523: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2787 +//line sql.y:2786 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, FlushOptions: yyDollar[3].strs} } case 524: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2791 +//line sql.y:2790 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean} } case 525: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2795 +//line sql.y:2794 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, WithLock: true} } case 526: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2799 +//line sql.y:2798 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, TableNames: yyDollar[4].tableNames} } case 527: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2803 +//line sql.y:2802 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, TableNames: yyDollar[4].tableNames, WithLock: true} } case 528: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2807 +//line sql.y:2806 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, TableNames: yyDollar[4].tableNames, ForExport: true} } case 529: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2813 +//line sql.y:2812 { yyVAL.strs = []string{yyDollar[1].str} } case 530: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2817 +//line sql.y:2816 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[3].str) } case 531: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2823 +//line sql.y:2822 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } case 532: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2827 +//line sql.y:2826 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } case 533: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2831 +//line sql.y:2830 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } case 534: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2835 +//line sql.y:2834 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } case 535: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2839 +//line sql.y:2838 { yyVAL.str = string(yyDollar[1].bytes) } case 536: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2843 +//line sql.y:2842 { yyVAL.str = string(yyDollar[1].bytes) } case 537: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2847 +//line sql.y:2846 { yyVAL.str = string(yyDollar[1].bytes) } case 538: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2851 +//line sql.y:2850 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) + yyDollar[3].str } case 539: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2855 +//line sql.y:2854 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } case 540: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2859 +//line sql.y:2858 { yyVAL.str = string(yyDollar[1].bytes) } case 541: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2863 +//line sql.y:2862 { yyVAL.str = string(yyDollar[1].bytes) } case 542: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2867 +//line sql.y:2866 { yyVAL.str = string(yyDollar[1].bytes) } case 543: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2872 +//line sql.y:2871 { yyVAL.boolean = false } case 544: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2876 +//line sql.y:2875 { yyVAL.boolean = true } case 545: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2880 +//line sql.y:2879 { yyVAL.boolean = true } case 546: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2885 +//line sql.y:2884 { yyVAL.str = "" } case 547: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2889 +//line sql.y:2888 { yyVAL.str = " " + string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) + " " + yyDollar[3].colIdent.String() } case 548: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2894 +//line sql.y:2893 { setAllowComments(yylex, true) } case 549: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2898 +//line sql.y:2897 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } case 550: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2904 +//line sql.y:2903 { yyVAL.bytes2 = nil } case 551: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2908 +//line sql.y:2907 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } case 552: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2914 +//line sql.y:2913 { yyVAL.boolean = true } case 553: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2918 +//line sql.y:2917 { yyVAL.boolean = false } case 554: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2922 +//line sql.y:2921 { yyVAL.boolean = true } case 555: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2927 +//line sql.y:2926 { yyVAL.str = "" } case 556: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2931 +//line sql.y:2930 { yyVAL.str = SQLNoCacheStr } case 557: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2935 +//line sql.y:2934 { yyVAL.str = SQLCacheStr } case 558: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2940 +//line sql.y:2939 { yyVAL.boolean = false } case 559: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2944 +//line sql.y:2943 { yyVAL.boolean = true } case 560: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2948 +//line sql.y:2947 { yyVAL.boolean = true } case 561: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2953 +//line sql.y:2952 { yyVAL.selectExprs = nil } case 562: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2957 +//line sql.y:2956 { yyVAL.selectExprs = yyDollar[1].selectExprs } case 563: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2962 +//line sql.y:2961 { yyVAL.strs = nil } case 564: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2966 +//line sql.y:2965 { yyVAL.strs = []string{yyDollar[1].str} } case 565: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2970 +//line sql.y:2969 { // TODO: This is a hack since I couldn't get it to work in a nicer way. I got 'conflicts: 8 shift/reduce' yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str} } case 566: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2974 +//line sql.y:2973 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } case 567: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2978 +//line sql.y:2977 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } case 568: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2984 +//line sql.y:2983 { yyVAL.str = SQLNoCacheStr } case 569: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2988 +//line sql.y:2987 { yyVAL.str = SQLCacheStr } case 570: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2992 +//line sql.y:2991 { yyVAL.str = DistinctStr } case 571: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2996 +//line sql.y:2995 { yyVAL.str = DistinctStr } case 572: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3000 +//line sql.y:2999 { yyVAL.str = StraightJoinHint } case 573: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3004 +//line sql.y:3003 { yyVAL.str = SQLCalcFoundRowsStr } case 574: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3010 +//line sql.y:3009 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } case 575: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3014 +//line sql.y:3013 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } case 576: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3020 +//line sql.y:3019 { yyVAL.selectExpr = &StarExpr{} } case 577: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3024 +//line sql.y:3023 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } case 578: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3028 +//line sql.y:3027 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } case 579: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3032 +//line sql.y:3031 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } case 580: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3037 +//line sql.y:3036 { yyVAL.colIdent = ColIdent{} } case 581: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3041 +//line sql.y:3040 { yyVAL.colIdent = yyDollar[1].colIdent } case 582: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3045 +//line sql.y:3044 { yyVAL.colIdent = yyDollar[2].colIdent } case 584: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3052 +//line sql.y:3051 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 585: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3057 +//line sql.y:3056 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } case 586: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3061 +//line sql.y:3060 { yyVAL.tableExprs = yyDollar[2].tableExprs } case 587: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3067 +//line sql.y:3066 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } case 588: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3071 +//line sql.y:3070 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } case 591: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3081 +//line sql.y:3080 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } case 592: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3085 +//line sql.y:3084 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].derivedTable, As: yyDollar[3].tableIdent} } case 593: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3089 +//line sql.y:3088 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } case 594: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3095 +//line sql.y:3094 { yyVAL.derivedTable = &DerivedTable{yyDollar[2].selStmt} } case 595: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3101 +//line sql.y:3100 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } case 596: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3105 +//line sql.y:3104 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } case 597: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3110 +//line sql.y:3109 { yyVAL.columns = nil } case 598: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3114 +//line sql.y:3113 { yyVAL.columns = yyDollar[2].columns } case 599: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3120 +//line sql.y:3119 { yyVAL.columns = Columns{yyDollar[1].colIdent} } case 600: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3124 +//line sql.y:3123 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } case 601: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3130 +//line sql.y:3129 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } case 602: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3134 +//line sql.y:3133 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } case 603: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3147 +//line sql.y:3146 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 604: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3151 +//line sql.y:3150 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 605: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3155 +//line sql.y:3154 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 606: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3159 +//line sql.y:3158 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr} } case 607: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3165 +//line sql.y:3164 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } case 608: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3167 +//line sql.y:3166 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } case 609: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3171 +//line sql.y:3170 { yyVAL.joinCondition = JoinCondition{} } case 610: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3173 +//line sql.y:3172 { yyVAL.joinCondition = yyDollar[1].joinCondition } case 611: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3177 +//line sql.y:3176 { yyVAL.joinCondition = JoinCondition{} } case 612: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3179 +//line sql.y:3178 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } case 613: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3182 +//line sql.y:3181 { yyVAL.empty = struct{}{} } case 614: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3184 +//line sql.y:3183 { yyVAL.empty = struct{}{} } case 615: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3187 +//line sql.y:3186 { yyVAL.tableIdent = NewTableIdent("") } case 616: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3191 +//line sql.y:3190 { yyVAL.tableIdent = yyDollar[1].tableIdent } case 617: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3195 +//line sql.y:3194 { yyVAL.tableIdent = yyDollar[2].tableIdent } case 619: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3202 +//line sql.y:3201 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } case 620: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3208 +//line sql.y:3207 { yyVAL.joinType = NormalJoinType } case 621: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3212 +//line sql.y:3211 { yyVAL.joinType = NormalJoinType } case 622: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3216 +//line sql.y:3215 { yyVAL.joinType = NormalJoinType } case 623: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3222 +//line sql.y:3221 { yyVAL.joinType = StraightJoinType } case 624: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3228 +//line sql.y:3227 { yyVAL.joinType = LeftJoinType } case 625: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3232 +//line sql.y:3231 { yyVAL.joinType = LeftJoinType } case 626: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3236 +//line sql.y:3235 { yyVAL.joinType = RightJoinType } case 627: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3240 +//line sql.y:3239 { yyVAL.joinType = RightJoinType } case 628: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3246 +//line sql.y:3245 { yyVAL.joinType = NaturalJoinType } case 629: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3250 +//line sql.y:3249 { if yyDollar[2].joinType == LeftJoinType { yyVAL.joinType = NaturalLeftJoinType @@ -8980,487 +9000,487 @@ yydefault: } case 630: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3260 +//line sql.y:3259 { yyVAL.tableName = yyDollar[2].tableName } case 631: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3264 +//line sql.y:3263 { yyVAL.tableName = yyDollar[1].tableName } case 632: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3270 +//line sql.y:3269 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } case 633: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3274 +//line sql.y:3273 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } case 634: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3280 +//line sql.y:3279 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } case 635: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3285 +//line sql.y:3284 { yyVAL.indexHints = nil } case 636: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3289 +//line sql.y:3288 { yyVAL.indexHints = &IndexHints{Type: UseOp, Indexes: yyDollar[4].columns} } case 637: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3293 +//line sql.y:3292 { yyVAL.indexHints = &IndexHints{Type: UseOp} } case 638: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3297 +//line sql.y:3296 { yyVAL.indexHints = &IndexHints{Type: IgnoreOp, Indexes: yyDollar[4].columns} } case 639: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3301 +//line sql.y:3300 { yyVAL.indexHints = &IndexHints{Type: ForceOp, Indexes: yyDollar[4].columns} } case 640: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3306 +//line sql.y:3305 { yyVAL.expr = nil } case 641: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3310 +//line sql.y:3309 { yyVAL.expr = yyDollar[2].expr } case 642: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3316 +//line sql.y:3315 { yyVAL.expr = yyDollar[1].expr } case 643: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3320 +//line sql.y:3319 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 644: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3324 +//line sql.y:3323 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 645: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3328 +//line sql.y:3327 { yyVAL.expr = &XorExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 646: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3332 +//line sql.y:3331 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } case 647: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3336 +//line sql.y:3335 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].isExprOperator, Expr: yyDollar[1].expr} } case 648: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3340 +//line sql.y:3339 { yyVAL.expr = yyDollar[1].expr } case 649: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3344 +//line sql.y:3343 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } case 650: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3350 +//line sql.y:3349 { yyVAL.str = "" } case 651: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3354 +//line sql.y:3353 { yyVAL.str = string(yyDollar[2].colIdent.String()) } case 652: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3360 +//line sql.y:3359 { yyVAL.boolVal = BoolVal(true) } case 653: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3364 +//line sql.y:3363 { yyVAL.boolVal = BoolVal(false) } case 654: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3370 +//line sql.y:3369 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].comparisonExprOperator, Right: yyDollar[3].expr} } case 655: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3374 +//line sql.y:3373 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InOp, Right: yyDollar[3].colTuple} } case 656: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3378 +//line sql.y:3377 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInOp, Right: yyDollar[4].colTuple} } case 657: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3382 +//line sql.y:3381 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeOp, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } case 658: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3386 +//line sql.y:3385 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeOp, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } case 659: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3390 +//line sql.y:3389 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpOp, Right: yyDollar[3].expr} } case 660: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3394 +//line sql.y:3393 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpOp, Right: yyDollar[4].expr} } case 661: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3398 +//line sql.y:3397 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenOp, From: yyDollar[3].expr, To: yyDollar[5].expr} } case 662: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3402 +//line sql.y:3401 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenOp, From: yyDollar[4].expr, To: yyDollar[6].expr} } case 663: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3406 +//line sql.y:3405 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } case 664: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3412 +//line sql.y:3411 { yyVAL.isExprOperator = IsNullOp } case 665: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3416 +//line sql.y:3415 { yyVAL.isExprOperator = IsNotNullOp } case 666: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3420 +//line sql.y:3419 { yyVAL.isExprOperator = IsTrueOp } case 667: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3424 +//line sql.y:3423 { yyVAL.isExprOperator = IsNotTrueOp } case 668: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3428 +//line sql.y:3427 { yyVAL.isExprOperator = IsFalseOp } case 669: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3432 +//line sql.y:3431 { yyVAL.isExprOperator = IsNotFalseOp } case 670: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3438 +//line sql.y:3437 { yyVAL.comparisonExprOperator = EqualOp } case 671: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3442 +//line sql.y:3441 { yyVAL.comparisonExprOperator = LessThanOp } case 672: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3446 +//line sql.y:3445 { yyVAL.comparisonExprOperator = GreaterThanOp } case 673: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3450 +//line sql.y:3449 { yyVAL.comparisonExprOperator = LessEqualOp } case 674: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3454 +//line sql.y:3453 { yyVAL.comparisonExprOperator = GreaterEqualOp } case 675: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3458 +//line sql.y:3457 { yyVAL.comparisonExprOperator = NotEqualOp } case 676: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3462 +//line sql.y:3461 { yyVAL.comparisonExprOperator = NullSafeEqualOp } case 677: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3467 +//line sql.y:3466 { yyVAL.expr = nil } case 678: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3471 +//line sql.y:3470 { yyVAL.expr = yyDollar[2].expr } case 679: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3477 +//line sql.y:3476 { yyVAL.colTuple = yyDollar[1].valTuple } case 680: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3481 +//line sql.y:3480 { yyVAL.colTuple = yyDollar[1].subquery } case 681: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3485 +//line sql.y:3484 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } case 682: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3491 +//line sql.y:3490 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } case 683: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3497 +//line sql.y:3496 { yyVAL.exprs = Exprs{yyDollar[1].expr} } case 684: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3501 +//line sql.y:3500 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } case 685: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3507 +//line sql.y:3506 { yyVAL.expr = yyDollar[1].expr } case 686: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3511 +//line sql.y:3510 { yyVAL.expr = yyDollar[1].boolVal } case 687: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3515 +//line sql.y:3514 { yyVAL.expr = yyDollar[1].colName } case 688: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3519 +//line sql.y:3518 { yyVAL.expr = yyDollar[1].expr } case 689: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3523 +//line sql.y:3522 { yyVAL.expr = yyDollar[1].subquery } case 690: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3527 +//line sql.y:3526 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndOp, Right: yyDollar[3].expr} } case 691: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3531 +//line sql.y:3530 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrOp, Right: yyDollar[3].expr} } case 692: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3535 +//line sql.y:3534 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorOp, Right: yyDollar[3].expr} } case 693: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3539 +//line sql.y:3538 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusOp, Right: yyDollar[3].expr} } case 694: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3543 +//line sql.y:3542 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusOp, Right: yyDollar[3].expr} } case 695: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3547 +//line sql.y:3546 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultOp, Right: yyDollar[3].expr} } case 696: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3551 +//line sql.y:3550 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivOp, Right: yyDollar[3].expr} } case 697: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3555 +//line sql.y:3554 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivOp, Right: yyDollar[3].expr} } case 698: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3559 +//line sql.y:3558 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } case 699: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3563 +//line sql.y:3562 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } case 700: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3567 +//line sql.y:3566 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftOp, Right: yyDollar[3].expr} } case 701: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3571 +//line sql.y:3570 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightOp, Right: yyDollar[3].expr} } case 702: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3575 +//line sql.y:3574 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } case 703: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3579 +//line sql.y:3578 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } case 704: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3583 +//line sql.y:3582 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } case 705: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3587 +//line sql.y:3586 { yyVAL.expr = &UnaryExpr{Operator: BinaryOp, Expr: yyDollar[2].expr} } case 706: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3591 +//line sql.y:3590 { yyVAL.expr = &UnaryExpr{Operator: UBinaryOp, Expr: yyDollar[2].expr} } case 707: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3595 +//line sql.y:3594 { yyVAL.expr = &UnaryExpr{Operator: Utf8Op, Expr: yyDollar[2].expr} } case 708: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3599 +//line sql.y:3598 { yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Op, Expr: yyDollar[2].expr} } case 709: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3603 +//line sql.y:3602 { yyVAL.expr = &UnaryExpr{Operator: Latin1Op, Expr: yyDollar[2].expr} } case 710: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3607 +//line sql.y:3606 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { yyVAL.expr = num @@ -9470,7 +9490,7 @@ yydefault: } case 711: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3615 +//line sql.y:3614 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { // Handle double negative @@ -9486,19 +9506,19 @@ yydefault: } case 712: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3629 +//line sql.y:3628 { yyVAL.expr = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].expr} } case 713: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3633 +//line sql.y:3632 { yyVAL.expr = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].expr} } case 714: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3637 +//line sql.y:3636 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -9508,331 +9528,331 @@ yydefault: } case 719: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3655 +//line sql.y:3654 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } case 720: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3659 +//line sql.y:3658 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 721: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3663 +//line sql.y:3662 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 722: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3667 +//line sql.y:3666 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } case 723: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3677 +//line sql.y:3676 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } case 724: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3681 +//line sql.y:3680 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } case 725: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3685 +//line sql.y:3684 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 726: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3689 +//line sql.y:3688 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 727: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3693 +//line sql.y:3692 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } case 728: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3697 +//line sql.y:3696 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 729: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3701 +//line sql.y:3700 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 730: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3705 +//line sql.y:3704 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 731: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3709 +//line sql.y:3708 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 732: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:3713 +//line sql.y:3712 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].matchExprOption} } case 733: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3717 +//line sql.y:3716 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].boolean, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit} } case 734: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3721 +//line sql.y:3720 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } case 735: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3725 +//line sql.y:3724 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } case 736: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3735 +//line sql.y:3734 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } case 737: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3739 +//line sql.y:3738 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } case 738: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3743 +//line sql.y:3742 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } case 739: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3748 +//line sql.y:3747 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } case 740: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3753 +//line sql.y:3752 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } case 741: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3758 +//line sql.y:3757 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } case 742: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3764 +//line sql.y:3763 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } case 743: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3769 +//line sql.y:3768 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } case 744: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3774 +//line sql.y:3773 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} } case 745: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3778 +//line sql.y:3777 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} } case 746: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3782 +//line sql.y:3781 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} } case 747: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3787 +//line sql.y:3786 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} } case 748: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3792 +//line sql.y:3791 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} } case 749: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3797 +//line sql.y:3796 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} } case 750: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3801 +//line sql.y:3800 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } case 751: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3805 +//line sql.y:3804 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } case 754: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3815 +//line sql.y:3814 { yyVAL.expr = yyDollar[2].expr } case 755: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3825 +//line sql.y:3824 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } case 756: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3829 +//line sql.y:3828 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } case 757: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3833 +//line sql.y:3832 { yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} } case 758: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3837 +//line sql.y:3836 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } case 759: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3841 +//line sql.y:3840 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } case 760: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3845 +//line sql.y:3844 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 761: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3849 +//line sql.y:3848 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 762: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3855 +//line sql.y:3854 { yyVAL.matchExprOption = NoOption } case 763: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3859 +//line sql.y:3858 { yyVAL.matchExprOption = BooleanModeOpt } case 764: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3863 +//line sql.y:3862 { yyVAL.matchExprOption = NaturalLanguageModeOpt } case 765: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3867 +//line sql.y:3866 { yyVAL.matchExprOption = NaturalLanguageModeWithQueryExpansionOpt } case 766: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3871 +//line sql.y:3870 { yyVAL.matchExprOption = QueryExpansionOpt } case 767: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3877 +//line sql.y:3876 { yyVAL.str = string(yyDollar[1].colIdent.String()) } case 768: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3881 +//line sql.y:3880 { yyVAL.str = string(yyDollar[1].bytes) } case 769: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3885 +//line sql.y:3884 { yyVAL.str = string(yyDollar[1].bytes) } case 770: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3891 +//line sql.y:3890 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 771: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3895 +//line sql.y:3894 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Operator: CharacterSetOp} } case 772: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3899 +//line sql.y:3898 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: string(yyDollar[3].colIdent.String())} } case 773: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3903 +//line sql.y:3902 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 774: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3907 +//line sql.y:3906 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 775: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3911 +//line sql.y:3910 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length @@ -9840,169 +9860,169 @@ yydefault: } case 776: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3917 +//line sql.y:3916 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 777: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3921 +//line sql.y:3920 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 778: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3925 +//line sql.y:3924 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 779: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3929 +//line sql.y:3928 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 780: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3933 +//line sql.y:3932 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 781: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3937 +//line sql.y:3936 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 782: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3941 +//line sql.y:3940 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 783: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3946 +//line sql.y:3945 { yyVAL.expr = nil } case 784: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3950 +//line sql.y:3949 { yyVAL.expr = yyDollar[1].expr } case 785: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3955 +//line sql.y:3954 { yyVAL.str = string("") } case 786: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3959 +//line sql.y:3958 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } case 787: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3965 +//line sql.y:3964 { yyVAL.whens = []*When{yyDollar[1].when} } case 788: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3969 +//line sql.y:3968 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } case 789: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3975 +//line sql.y:3974 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } case 790: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3980 +//line sql.y:3979 { yyVAL.expr = nil } case 791: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3984 +//line sql.y:3983 { yyVAL.expr = yyDollar[2].expr } case 792: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3990 +//line sql.y:3989 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } case 793: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3994 +//line sql.y:3993 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } case 794: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3998 +//line sql.y:3997 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } case 795: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4004 +//line sql.y:4003 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } case 796: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4008 +//line sql.y:4007 { yyVAL.expr = NewHexLiteral(yyDollar[1].bytes) } case 797: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4012 +//line sql.y:4011 { yyVAL.expr = NewBitLiteral(yyDollar[1].bytes) } case 798: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4016 +//line sql.y:4015 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } case 799: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4020 +//line sql.y:4019 { yyVAL.expr = NewFloatLiteral(yyDollar[1].bytes) } case 800: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4024 +//line sql.y:4023 { yyVAL.expr = NewHexNumLiteral(yyDollar[1].bytes) } case 801: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4028 +//line sql.y:4027 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } case 802: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4032 +//line sql.y:4031 { yyVAL.expr = &NullVal{} } case 803: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4038 +//line sql.y:4037 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -10013,595 +10033,595 @@ yydefault: } case 804: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4047 +//line sql.y:4046 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } case 805: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4051 +//line sql.y:4050 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } case 806: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4056 +//line sql.y:4055 { yyVAL.exprs = nil } case 807: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4060 +//line sql.y:4059 { yyVAL.exprs = yyDollar[3].exprs } case 808: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4065 +//line sql.y:4064 { yyVAL.expr = nil } case 809: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4069 +//line sql.y:4068 { yyVAL.expr = yyDollar[2].expr } case 810: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4074 +//line sql.y:4073 { yyVAL.orderBy = nil } case 811: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4078 +//line sql.y:4077 { yyVAL.orderBy = yyDollar[3].orderBy } case 812: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4084 +//line sql.y:4083 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } case 813: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4088 +//line sql.y:4087 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } case 814: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4094 +//line sql.y:4093 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].orderDirection} } case 815: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4099 +//line sql.y:4098 { yyVAL.orderDirection = AscOrder } case 816: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4103 +//line sql.y:4102 { yyVAL.orderDirection = AscOrder } case 817: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4107 +//line sql.y:4106 { yyVAL.orderDirection = DescOrder } case 818: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4112 +//line sql.y:4111 { yyVAL.limit = nil } case 819: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4116 +//line sql.y:4115 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } case 820: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4120 +//line sql.y:4119 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } case 821: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4124 +//line sql.y:4123 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } case 822: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4129 +//line sql.y:4128 { yyVAL.alterOptions = nil } case 823: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4133 +//line sql.y:4132 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption, yyDollar[2].alterOption} } case 824: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4137 +//line sql.y:4136 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption, yyDollar[2].alterOption} } case 825: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4141 +//line sql.y:4140 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } case 826: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4145 +//line sql.y:4144 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } case 827: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4152 +//line sql.y:4151 { yyVAL.alterOption = &LockOption{Type: DefaultType} } case 828: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4156 +//line sql.y:4155 { yyVAL.alterOption = &LockOption{Type: NoneType} } case 829: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4160 +//line sql.y:4159 { yyVAL.alterOption = &LockOption{Type: SharedType} } case 830: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4164 +//line sql.y:4163 { yyVAL.alterOption = &LockOption{Type: ExclusiveType} } case 831: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4170 +//line sql.y:4169 { yyVAL.alterOption = AlgorithmValue(yyDollar[3].bytes) } case 832: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4174 +//line sql.y:4173 { yyVAL.alterOption = AlgorithmValue(yyDollar[3].bytes) } case 833: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4178 +//line sql.y:4177 { yyVAL.alterOption = AlgorithmValue(yyDollar[3].bytes) } case 834: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4183 +//line sql.y:4182 { yyVAL.str = "" } case 835: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4187 +//line sql.y:4186 { yyVAL.str = string(yyDollar[3].bytes) } case 836: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4191 +//line sql.y:4190 { yyVAL.str = string(yyDollar[3].bytes) } case 837: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4195 +//line sql.y:4194 { yyVAL.str = string(yyDollar[3].bytes) } case 838: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4200 +//line sql.y:4199 { yyVAL.str = "" } case 839: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4204 +//line sql.y:4203 { yyVAL.str = yyDollar[3].str } case 840: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4210 +//line sql.y:4209 { yyVAL.str = string(yyDollar[1].bytes) } case 841: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4214 +//line sql.y:4213 { yyVAL.str = string(yyDollar[1].bytes) } case 842: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4219 +//line sql.y:4218 { yyVAL.str = "" } case 843: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4223 +//line sql.y:4222 { yyVAL.str = yyDollar[2].str } case 844: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4228 +//line sql.y:4227 { yyVAL.str = "cascaded" } case 845: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4232 +//line sql.y:4231 { yyVAL.str = string(yyDollar[1].bytes) } case 846: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4236 +//line sql.y:4235 { yyVAL.str = string(yyDollar[1].bytes) } case 847: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4241 +//line sql.y:4240 { yyVAL.str = "" } case 848: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4245 +//line sql.y:4244 { yyVAL.str = yyDollar[3].str } case 849: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4251 +//line sql.y:4250 { yyVAL.str = string(yyDollar[1].bytes) } case 850: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4255 +//line sql.y:4254 { yyVAL.str = string(yyDollar[1].bytes) } case 851: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4259 +//line sql.y:4258 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'@" + string(yyDollar[2].bytes) } case 852: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4263 +//line sql.y:4262 { yyVAL.str = string(yyDollar[1].bytes) } case 853: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4268 +//line sql.y:4267 { yyVAL.lock = NoLock } case 854: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4272 +//line sql.y:4271 { yyVAL.lock = ForUpdateLock } case 855: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4276 +//line sql.y:4275 { yyVAL.lock = ShareModeLock } case 856: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4281 +//line sql.y:4280 { yyVAL.selectInto = nil } case 857: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:4285 +//line sql.y:4284 { yyVAL.selectInto = &SelectInto{Type: IntoOutfileS3, FileName: string(yyDollar[4].bytes), Charset: yyDollar[5].str, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str} } case 858: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4289 +//line sql.y:4288 { yyVAL.selectInto = &SelectInto{Type: IntoDumpfile, FileName: string(yyDollar[3].bytes), Charset: "", FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} } case 859: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4293 +//line sql.y:4292 { yyVAL.selectInto = &SelectInto{Type: IntoOutfile, FileName: string(yyDollar[3].bytes), Charset: yyDollar[4].str, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} } case 860: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4298 +//line sql.y:4297 { yyVAL.str = "" } case 861: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4302 +//line sql.y:4301 { yyVAL.str = " format csv" + yyDollar[3].str } case 862: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4306 +//line sql.y:4305 { yyVAL.str = " format text" + yyDollar[3].str } case 863: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4311 +//line sql.y:4310 { yyVAL.str = "" } case 864: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4315 +//line sql.y:4314 { yyVAL.str = " header" } case 865: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4320 +//line sql.y:4319 { yyVAL.str = "" } case 866: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4324 +//line sql.y:4323 { yyVAL.str = " manifest on" } case 867: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4328 +//line sql.y:4327 { yyVAL.str = " manifest off" } case 868: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4333 +//line sql.y:4332 { yyVAL.str = "" } case 869: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4337 +//line sql.y:4336 { yyVAL.str = " overwrite on" } case 870: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4341 +//line sql.y:4340 { yyVAL.str = " overwrite off" } case 871: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4347 +//line sql.y:4346 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } case 872: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4352 +//line sql.y:4351 { yyVAL.str = "" } case 873: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4356 +//line sql.y:4355 { yyVAL.str = " lines" + yyDollar[2].str + yyDollar[3].str } case 874: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4361 +//line sql.y:4360 { yyVAL.str = "" } case 875: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4365 +//line sql.y:4364 { yyVAL.str = " starting by '" + string(yyDollar[3].bytes) + "'" } case 876: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4370 +//line sql.y:4369 { yyVAL.str = "" } case 877: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4374 +//line sql.y:4373 { yyVAL.str = " terminated by '" + string(yyDollar[3].bytes) + "'" } case 878: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4379 +//line sql.y:4378 { yyVAL.str = "" } case 879: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4383 +//line sql.y:4382 { yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str + yyDollar[3].str + yyDollar[4].str } case 880: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4388 +//line sql.y:4387 { yyVAL.str = "" } case 881: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4392 +//line sql.y:4391 { yyVAL.str = " escaped by '" + string(yyDollar[3].bytes) + "'" } case 882: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4397 +//line sql.y:4396 { yyVAL.str = "" } case 883: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4401 +//line sql.y:4400 { yyVAL.str = yyDollar[1].str + " enclosed by '" + string(yyDollar[4].bytes) + "'" } case 884: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4406 +//line sql.y:4405 { yyVAL.str = "" } case 885: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4410 +//line sql.y:4409 { yyVAL.str = " optionally" } case 886: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4423 +//line sql.y:4422 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } case 887: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4427 +//line sql.y:4426 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } case 888: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4431 +//line sql.y:4430 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } case 889: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4435 +//line sql.y:4434 { yyVAL.ins = &Insert{Rows: yyDollar[4].values} } case 890: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4439 +//line sql.y:4438 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } case 891: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4445 +//line sql.y:4444 { yyVAL.columns = Columns{yyDollar[1].colIdent} } case 892: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4449 +//line sql.y:4448 { yyVAL.columns = Columns{yyDollar[3].colIdent} } case 893: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4453 +//line sql.y:4452 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } case 894: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4457 +//line sql.y:4456 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } case 895: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4462 +//line sql.y:4461 { yyVAL.updateExprs = nil } case 896: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4466 +//line sql.y:4465 { yyVAL.updateExprs = yyDollar[5].updateExprs } case 897: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4472 +//line sql.y:4471 { yyVAL.values = Values{yyDollar[1].valTuple} } case 898: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4476 +//line sql.y:4475 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } case 899: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4482 +//line sql.y:4481 { yyVAL.valTuple = yyDollar[1].valTuple } case 900: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4486 +//line sql.y:4485 { yyVAL.valTuple = ValTuple{} } case 901: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4492 +//line sql.y:4491 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } case 902: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4498 +//line sql.y:4497 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = yyDollar[1].valTuple[0] @@ -10611,230 +10631,230 @@ yydefault: } case 903: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4508 +//line sql.y:4507 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } case 904: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4512 +//line sql.y:4511 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } case 905: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4518 +//line sql.y:4517 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } case 906: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4524 +//line sql.y:4523 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } case 907: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4528 +//line sql.y:4527 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } case 908: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4534 +//line sql.y:4533 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("on"))} } case 909: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4538 +//line sql.y:4537 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("off"))} } case 910: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4542 +//line sql.y:4541 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: yyDollar[3].expr} } case 911: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4546 +//line sql.y:4545 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Scope: ImplicitScope, Expr: yyDollar[2].expr} } case 912: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4550 +//line sql.y:4549 { yyDollar[2].setExpr.Scope = yyDollar[1].scope yyVAL.setExpr = yyDollar[2].setExpr } case 914: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4558 +//line sql.y:4557 { yyVAL.bytes = []byte("charset") } case 917: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4568 +//line sql.y:4567 { yyVAL.expr = NewStrLiteral([]byte(yyDollar[1].colIdent.String())) } case 918: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4572 +//line sql.y:4571 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } case 919: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4576 +//line sql.y:4575 { yyVAL.expr = &Default{} } case 922: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4585 +//line sql.y:4584 { yyVAL.boolean = false } case 923: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4587 +//line sql.y:4586 { yyVAL.boolean = true } case 924: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4590 +//line sql.y:4589 { yyVAL.boolean = false } case 925: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4592 +//line sql.y:4591 { yyVAL.boolean = true } case 926: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4595 +//line sql.y:4594 { yyVAL.boolean = false } case 927: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4597 +//line sql.y:4596 { yyVAL.boolean = true } case 928: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4600 +//line sql.y:4599 { yyVAL.ignore = false } case 929: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4602 +//line sql.y:4601 { yyVAL.ignore = true } case 930: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4605 +//line sql.y:4604 { yyVAL.empty = struct{}{} } case 931: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4607 +//line sql.y:4606 { yyVAL.empty = struct{}{} } case 932: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4609 +//line sql.y:4608 { yyVAL.empty = struct{}{} } case 933: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4613 +//line sql.y:4612 { yyVAL.statement = &CallProc{Name: yyDollar[2].tableName, Params: yyDollar[4].exprs} } case 934: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4618 +//line sql.y:4617 { yyVAL.exprs = nil } case 935: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4622 +//line sql.y:4621 { yyVAL.exprs = yyDollar[1].exprs } case 936: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4627 +//line sql.y:4626 { yyVAL.indexOptions = nil } case 937: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4629 +//line sql.y:4628 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } case 938: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4633 +//line sql.y:4632 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[2].colIdent.String())} } case 939: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4639 +//line sql.y:4638 { yyVAL.colIdent = yyDollar[1].colIdent } case 940: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4643 +//line sql.y:4642 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 942: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4650 +//line sql.y:4649 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 943: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4656 +//line sql.y:4655 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) } case 944: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4660 +//line sql.y:4659 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } case 946: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4667 +//line sql.y:4666 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } case 1343: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5088 +//line sql.y:5087 { if incNesting(yylex) { yylex.Error("max nesting level reached") @@ -10843,31 +10863,31 @@ yydefault: } case 1344: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5097 +//line sql.y:5096 { decNesting(yylex) } case 1345: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5102 +//line sql.y:5101 { skipToEnd(yylex) } case 1346: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5107 +//line sql.y:5106 { skipToEnd(yylex) } case 1347: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5111 +//line sql.y:5110 { skipToEnd(yylex) } case 1348: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5115 +//line sql.y:5114 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 2402f3f3c43..3e9b955175d 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -2320,6 +2320,10 @@ show_statement: { $$ = &Show{&ShowBasic{Command: Collation, Filter: $3}} } +| SHOW full_opt columns_or_fields from_or_in table_name from_database_opt like_or_where_opt + { + $$ = &Show{&ShowBasic{Full: $2, Command: Column, Tbl: $5, DbName: $6, Filter: $7}} + } | SHOW DATABASES like_or_where_opt { $$ = &Show{&ShowBasic{Command: Database, Filter: $3}} @@ -2340,6 +2344,10 @@ show_statement: { $$ = &Show{&ShowBasic{Command: Function, Filter: $4}} } +| SHOW extended_opt index_symbols from_or_in table_name from_database_opt like_or_where_opt + { + $$ = &Show{&ShowBasic{Command: Index, Tbl: $5, DbName: $6, Filter: $7}} + } | SHOW OPEN TABLES from_database_opt like_or_where_opt { $$ = &Show{&ShowBasic{Command: OpenTable, DbName:$4, Filter: $5}} @@ -2380,10 +2388,6 @@ show_statement: { $$ = &Show{&ShowBasic{Command: Trigger, DbName:$3, Filter: $4}} } -| SHOW full_opt columns_or_fields from_or_in table_name from_database_opt like_or_where_opt - { - $$ = &Show{&ShowColumns{Full: $2, Table: $5, DbName: $6, Filter: $7}} - } | SHOW BINARY id_or_var ddl_skip_to_end /* SHOW BINARY ... */ { $$ = &Show{&ShowLegacy{Type: string($2) + " " + string($3.String()), Scope: ImplicitScope}} @@ -2429,11 +2433,6 @@ show_statement: { $$ = &Show{&ShowLegacy{Type: string($2) + " " + string($3), Table: $4, Scope: ImplicitScope}} } -| SHOW extended_opt index_symbols from_or_in table_name from_database_opt like_or_where_opt - { - showTablesOpt := &ShowTablesOpt{DbName:$6, Filter:$7} - $$ = &Show{&ShowLegacy{Extended: string($2), Type: string($3), ShowTablesOpt: showTablesOpt, OnTable: $5, Scope: ImplicitScope}} - } | SHOW PLUGINS { $$ = &Show{&ShowLegacy{Type: string($2), Scope: ImplicitScope}} From 34e683f13c77419d593e032abc12a56d06c7a19c Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Fri, 12 Feb 2021 14:05:29 +0530 Subject: [PATCH 06/15] plan indexes and columns in show Signed-off-by: Harshit Gangal --- go/vt/vtgate/executor_test.go | 10 +--------- go/vt/vtgate/planbuilder/show.go | 17 ++++++++--------- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/go/vt/vtgate/executor_test.go b/go/vt/vtgate/executor_test.go index 2878074bef8..b263e25cacc 100644 --- a/go/vt/vtgate/executor_test.go +++ b/go/vt/vtgate/executor_test.go @@ -509,58 +509,50 @@ func TestExecutorShow(t *testing.T) { _, err = executor.Execute(ctx, "TestExecute", session, fmt.Sprintf("show keys from %v.unknown", KsTestUnsharded), nil) require.NoError(t, err) lastQuery = sbclookup.Queries[len(sbclookup.Queries)-1].Sql - wantQuery = "show keys from unknown" + wantQuery = "show indexes from unknown" assert.Equal(t, wantQuery, lastQuery, "Got: %v. Want: %v", lastQuery, wantQuery) _, err = executor.Execute(ctx, "TestExecute", session, fmt.Sprintf("show keys from unknown from %v", KsTestUnsharded), nil) require.NoError(t, err) lastQuery = sbclookup.Queries[len(sbclookup.Queries)-1].Sql - wantQuery = "show keys from unknown" assert.Equal(t, wantQuery, lastQuery, "Got: %v. Want: %v", lastQuery, wantQuery) // SHOW INDEX with two different syntax _, err = executor.Execute(ctx, "TestExecute", session, fmt.Sprintf("show index from %v.unknown", KsTestUnsharded), nil) require.NoError(t, err) lastQuery = sbclookup.Queries[len(sbclookup.Queries)-1].Sql - wantQuery = "show index from unknown" assert.Equal(t, wantQuery, lastQuery, "Got: %v. Want: %v", lastQuery, wantQuery) _, err = executor.Execute(ctx, "TestExecute", session, fmt.Sprintf("show index from unknown from %v", KsTestUnsharded), nil) require.NoError(t, err) lastQuery = sbclookup.Queries[len(sbclookup.Queries)-1].Sql - wantQuery = "show index from unknown" assert.Equal(t, wantQuery, lastQuery, "Got: %v. Want: %v", lastQuery, wantQuery) // SHOW INDEXES with two different syntax _, err = executor.Execute(ctx, "TestExecute", session, fmt.Sprintf("show indexes from %v.unknown", KsTestUnsharded), nil) require.NoError(t, err) lastQuery = sbclookup.Queries[len(sbclookup.Queries)-1].Sql - wantQuery = "show indexes from unknown" assert.Equal(t, wantQuery, lastQuery, "Got: %v. Want: %v", lastQuery, wantQuery) _, err = executor.Execute(ctx, "TestExecute", session, fmt.Sprintf("show indexes from unknown from %v", KsTestUnsharded), nil) require.NoError(t, err) lastQuery = sbclookup.Queries[len(sbclookup.Queries)-1].Sql - wantQuery = "show indexes from unknown" assert.Equal(t, wantQuery, lastQuery, "Got: %v. Want: %v", lastQuery, wantQuery) // SHOW EXTENDED {INDEX | INDEXES | KEYS} _, err = executor.Execute(ctx, "TestExecute", session, fmt.Sprintf("show extended index from unknown from %v", KsTestUnsharded), nil) require.NoError(t, err) lastQuery = sbclookup.Queries[len(sbclookup.Queries)-1].Sql - wantQuery = "show extended index from unknown" assert.Equal(t, wantQuery, lastQuery, "Got: %v. Want: %v", lastQuery, wantQuery) _, err = executor.Execute(ctx, "TestExecute", session, fmt.Sprintf("show extended indexes from unknown from %v", KsTestUnsharded), nil) require.NoError(t, err) lastQuery = sbclookup.Queries[len(sbclookup.Queries)-1].Sql - wantQuery = "show extended indexes from unknown" assert.Equal(t, wantQuery, lastQuery, "Got: %v. Want: %v", lastQuery, wantQuery) _, err = executor.Execute(ctx, "TestExecute", session, fmt.Sprintf("show extended keys from unknown from %v", KsTestUnsharded), nil) require.NoError(t, err) lastQuery = sbclookup.Queries[len(sbclookup.Queries)-1].Sql - wantQuery = "show extended keys from unknown" assert.Equal(t, wantQuery, lastQuery, "Got: %v. Want: %v", lastQuery, wantQuery) // Set desitation keyspace in session diff --git a/go/vt/vtgate/planbuilder/show.go b/go/vt/vtgate/planbuilder/show.go index 4b41108cf9d..039788bbec1 100644 --- a/go/vt/vtgate/planbuilder/show.go +++ b/go/vt/vtgate/planbuilder/show.go @@ -41,8 +41,6 @@ func buildShowPlan(stmt *sqlparser.Show, vschema ContextVSchema) (engine.Primiti switch show := stmt.Internal.(type) { case *sqlparser.ShowBasic: return buildShowBasicPlan(show, vschema) - case *sqlparser.ShowColumns: - return buildShowColumnsPlan(show, vschema) default: return nil, ErrPlanNotSupported } @@ -55,6 +53,8 @@ func buildShowBasicPlan(show *sqlparser.ShowBasic, vschema ContextVSchema) (engi case sqlparser.Collation, sqlparser.Function, sqlparser.Privilege, sqlparser.Procedure, sqlparser.VariableGlobal, sqlparser.VariableSession: return buildSendAnywherePlan(show, vschema) + case sqlparser.Column, sqlparser.Index: + return buildShowTblPlan(show, vschema) case sqlparser.Database, sqlparser.Keyspace: return buildDBPlan(show, vschema) case sqlparser.OpenTable, sqlparser.TableStatus, sqlparser.Table, sqlparser.Trigger: @@ -94,16 +94,16 @@ func buildSendAnywherePlan(show *sqlparser.ShowBasic, vschema ContextVSchema) (e }, nil } -func buildShowColumnsPlan(show *sqlparser.ShowColumns, vschema ContextVSchema) (engine.Primitive, error) { +func buildShowTblPlan(show *sqlparser.ShowBasic, vschema ContextVSchema) (engine.Primitive, error) { if show.DbName != "" { - show.Table.Qualifier = sqlparser.NewTableIdent(show.DbName) + show.Tbl.Qualifier = sqlparser.NewTableIdent(show.DbName) } - table, _, _, _, destination, err := vschema.FindTableOrVindex(show.Table) + table, _, _, _, destination, err := vschema.FindTableOrVindex(show.Tbl) if err != nil { return nil, err } if table == nil { - return nil, vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "table does not exists: %s", show.Table.Name.String()) + return nil, vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "table does not exists: %s", show.Tbl.Name.String()) } if destination == nil { destination = key.DestinationAnyShard{} @@ -111,8 +111,8 @@ func buildShowColumnsPlan(show *sqlparser.ShowColumns, vschema ContextVSchema) ( // Remove Database Name from the query. show.DbName = "" - show.Table.Qualifier = sqlparser.NewTableIdent("") - show.Table.Name = table.Name + show.Tbl.Qualifier = sqlparser.NewTableIdent("") + show.Tbl.Name = table.Name return &engine.Send{ Keyspace: table.Keyspace, @@ -121,7 +121,6 @@ func buildShowColumnsPlan(show *sqlparser.ShowColumns, vschema ContextVSchema) ( IsDML: false, SingleShardOnly: true, }, nil - } func buildDBPlan(show *sqlparser.ShowBasic, vschema ContextVSchema) (engine.Primitive, error) { From f513d35482268911650cc70089f1522f0734b866 Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Fri, 12 Feb 2021 14:40:59 +0530 Subject: [PATCH 07/15] parse show create queries Signed-off-by: Harshit Gangal --- go/vt/sqlparser/ast.go | 56 +- go/vt/sqlparser/parse_test.go | 24 +- go/vt/sqlparser/rewriter.go | 20 +- go/vt/sqlparser/sql.go | 9068 +++++++++++++++++---------------- go/vt/sqlparser/sql.y | 41 +- go/vt/sqlparser/token.go | 2 + 6 files changed, 4604 insertions(+), 4607 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 674219350fd..92c3300ccd1 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -1208,20 +1208,6 @@ type ( ShowCollationFilterOpt Expr } - // ShowColumns is of ShowInternal type, holds the show columns statement. - ShowColumns struct { - Full bool - Table TableName - DbName string - Filter *ShowFilter - } - - // ShowTableStatus is of ShowInternal type, holds SHOW TABLE STATUS queries. - ShowTableStatus struct { - DatabaseName string - Filter *ShowFilter - } - // ShowCommandType represents the show statement type. ShowCommandType int8 @@ -1233,12 +1219,17 @@ type ( DbName string Filter *ShowFilter } + + // ShowCreate is of ShowInternal type, holds SHOW CREATE queries. + ShowCreate struct { + Command ShowCommandType + Op TableName + } ) -func (*ShowLegacy) isShowInternal() {} -func (*ShowColumns) isShowInternal() {} -func (*ShowTableStatus) isShowInternal() {} -func (*ShowBasic) isShowInternal() {} +func (*ShowLegacy) isShowInternal() {} +func (*ShowBasic) isShowInternal() {} +func (*ShowCreate) isShowInternal() {} // InsertRows represents the rows for an INSERT statement. type InsertRows interface { @@ -2445,20 +2436,6 @@ func (node *Show) Format(buf *TrackedBuffer) { buf.astPrintf(node, "%v", node.Internal) } -// Format formats the node. -func (node *ShowColumns) Format(buf *TrackedBuffer) { - buf.WriteString("show ") - if node.Full { - buf.WriteString("full ") - } - buf.astPrintf(node, "columns from %v", node.Table) - - buf.printIf(node.DbName != "", " from "+node.DbName) - if node.Filter != nil { - buf.astPrintf(node, "%v", node.Filter) - } -} - // Format formats the node. func (node *ShowLegacy) Format(buf *TrackedBuffer) { nodeType := strings.ToLower(node.Type) @@ -3152,16 +3129,6 @@ func (node *Load) Format(buf *TrackedBuffer) { buf.WriteString("AST node missing for Load type") } -// Format formats the node. -func (node *ShowTableStatus) Format(buf *TrackedBuffer) { - buf.WriteString("show table status") - if node.DatabaseName != "" { - buf.WriteString(" from ") - buf.WriteString(node.DatabaseName) - } - buf.astPrintf(node, "%v", node.Filter) -} - // Format formats the node. func (node *ShowBasic) Format(buf *TrackedBuffer) { buf.WriteString("show") @@ -3178,6 +3145,11 @@ func (node *ShowBasic) Format(buf *TrackedBuffer) { buf.astPrintf(node, "%v", node.Filter) } +// Format formats the node. +func (node *ShowCreate) Format(buf *TrackedBuffer) { + buf.astPrintf(node, "show%s %v", node.Command.ToString(), node.Op) +} + // Format formats the node. func (node *SelectInto) Format(buf *TrackedBuffer) { if node == nil { diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 3c1697c245e..d4c1553927d 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -732,10 +732,10 @@ var ( }, { input: "insert /* bool expression on duplicate */ into a values (1, 2) on duplicate key update b = func(a), c = a > d", }, { - input: "insert into user(username, `status`) values ('Chuck', default(`status`))", + input: "insert into `user`(username, `status`) values ('Chuck', default(`status`))", }, { input: "insert into user(format, tree, vitess) values ('Chuck', 42, 'Barry')", - output: "insert into user(`format`, `tree`, `vitess`) values ('Chuck', 42, 'Barry')", + output: "insert into `user`(`format`, `tree`, `vitess`) values ('Chuck', 42, 'Barry')", }, { input: "insert into customer () values ()", output: "insert into customer values ()", @@ -1182,7 +1182,7 @@ var ( output: "alter vschema on a add vindex hash (id) using hash", }, { input: "alter vschema on user add vindex name_lookup_vdx (name) using lookup_hash with owner=user, table=name_user_idx, from=name, to=user_id", - output: "alter vschema on user add vindex name_lookup_vdx (`name`) using lookup_hash with owner=user, table=name_user_idx, from=name, to=user_id", + output: "alter vschema on `user` add vindex name_lookup_vdx (`name`) using lookup_hash with owner=user, table=name_user_idx, from=name, to=user_id", }, { input: "alter vschema on user2 add vindex name_lastname_lookup_vdx (name,lastname) using lookup with owner=`user`, table=`name_lastname_keyspace_id_map`, from=`name,lastname`, to=`keyspace_id`", output: "alter vschema on user2 add vindex name_lastname_lookup_vdx (`name`, lastname) using lookup with owner=user, table=name_lastname_keyspace_id_map, from=name,lastname, to=keyspace_id", @@ -1325,28 +1325,22 @@ var ( input: "show collation where `Charset` = 'utf8' and `Collation` = 'utf8_bin'", output: "show collation where `Charset` = 'utf8' and `Collation` = 'utf8_bin'", }, { - input: "show create database d", - output: "show create database", + input: "show create database d", }, { - input: "show create event e", - output: "show create event", + input: "show create event e", }, { input: "show create function f", }, { - input: "show create procedure p", - output: "show create procedure", + input: "show create procedure p", }, { - input: "show create table t", - output: "show create table t", + input: "show create table t", }, { - input: "show create trigger t", - output: "show create trigger", + input: "show create trigger t", }, { input: "show create user u", output: "show create user", }, { - input: "show create view v", - output: "show create view", + input: "show create view v", }, { input: "show databases", output: "show databases", diff --git a/go/vt/sqlparser/rewriter.go b/go/vt/sqlparser/rewriter.go index 630b847af9a..9e407fee6a3 100644 --- a/go/vt/sqlparser/rewriter.go +++ b/go/vt/sqlparser/rewriter.go @@ -749,12 +749,8 @@ func replaceShowBasicTbl(newNode, parent SQLNode) { parent.(*ShowBasic).Tbl = newNode.(TableName) } -func replaceShowColumnsFilter(newNode, parent SQLNode) { - parent.(*ShowColumns).Filter = newNode.(*ShowFilter) -} - -func replaceShowColumnsTable(newNode, parent SQLNode) { - parent.(*ShowColumns).Table = newNode.(TableName) +func replaceShowCreateOp(newNode, parent SQLNode) { + parent.(*ShowCreate).Op = newNode.(TableName) } func replaceShowFilterFilter(newNode, parent SQLNode) { @@ -773,10 +769,6 @@ func replaceShowLegacyTable(newNode, parent SQLNode) { parent.(*ShowLegacy).Table = newNode.(TableName) } -func replaceShowTableStatusFilter(newNode, parent SQLNode) { - parent.(*ShowTableStatus).Filter = newNode.(*ShowFilter) -} - func replaceStarExprTableName(newNode, parent SQLNode) { parent.(*StarExpr).TableName = newNode.(TableName) } @@ -1529,9 +1521,8 @@ func (a *application) apply(parent, node SQLNode, replacer replacerFunc) { a.apply(node, n.Filter, replaceShowBasicFilter) a.apply(node, n.Tbl, replaceShowBasicTbl) - case *ShowColumns: - a.apply(node, n.Filter, replaceShowColumnsFilter) - a.apply(node, n.Table, replaceShowColumnsTable) + case *ShowCreate: + a.apply(node, n.Op, replaceShowCreateOp) case *ShowFilter: a.apply(node, n.Filter, replaceShowFilterFilter) @@ -1541,9 +1532,6 @@ func (a *application) apply(parent, node SQLNode, replacer replacerFunc) { a.apply(node, n.ShowCollationFilterOpt, replaceShowLegacyShowCollationFilterOpt) a.apply(node, n.Table, replaceShowLegacyTable) - case *ShowTableStatus: - a.apply(node, n.Filter, replaceShowTableStatusFilter) - case *StarExpr: a.apply(node, n.TableName, replaceStarExprTableName) diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 57d0f8d8225..84e70012044 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -421,169 +421,171 @@ const PRIVILEGES = 57624 const FUNCTION = 57625 const OPEN = 57626 const TRIGGERS = 57627 -const NAMES = 57628 -const CHARSET = 57629 -const GLOBAL = 57630 -const SESSION = 57631 -const ISOLATION = 57632 -const LEVEL = 57633 -const READ = 57634 -const WRITE = 57635 -const ONLY = 57636 -const REPEATABLE = 57637 -const COMMITTED = 57638 -const UNCOMMITTED = 57639 -const SERIALIZABLE = 57640 -const CURRENT_TIMESTAMP = 57641 -const DATABASE = 57642 -const CURRENT_DATE = 57643 -const CURRENT_TIME = 57644 -const LOCALTIME = 57645 -const LOCALTIMESTAMP = 57646 -const CURRENT_USER = 57647 -const UTC_DATE = 57648 -const UTC_TIME = 57649 -const UTC_TIMESTAMP = 57650 -const REPLACE = 57651 -const CONVERT = 57652 -const CAST = 57653 -const SUBSTR = 57654 -const SUBSTRING = 57655 -const GROUP_CONCAT = 57656 -const SEPARATOR = 57657 -const TIMESTAMPADD = 57658 -const TIMESTAMPDIFF = 57659 -const MATCH = 57660 -const AGAINST = 57661 -const BOOLEAN = 57662 -const LANGUAGE = 57663 -const WITH = 57664 -const QUERY = 57665 -const EXPANSION = 57666 -const WITHOUT = 57667 -const VALIDATION = 57668 -const UNUSED = 57669 -const ARRAY = 57670 -const CUME_DIST = 57671 -const DESCRIPTION = 57672 -const DENSE_RANK = 57673 -const EMPTY = 57674 -const EXCEPT = 57675 -const FIRST_VALUE = 57676 -const GROUPING = 57677 -const GROUPS = 57678 -const JSON_TABLE = 57679 -const LAG = 57680 -const LAST_VALUE = 57681 -const LATERAL = 57682 -const LEAD = 57683 -const MEMBER = 57684 -const NTH_VALUE = 57685 -const NTILE = 57686 -const OF = 57687 -const OVER = 57688 -const PERCENT_RANK = 57689 -const RANK = 57690 -const RECURSIVE = 57691 -const ROW_NUMBER = 57692 -const SYSTEM = 57693 -const WINDOW = 57694 -const ACTIVE = 57695 -const ADMIN = 57696 -const BUCKETS = 57697 -const CLONE = 57698 -const COMPONENT = 57699 -const DEFINITION = 57700 -const ENFORCED = 57701 -const EXCLUDE = 57702 -const FOLLOWING = 57703 -const GEOMCOLLECTION = 57704 -const GET_MASTER_PUBLIC_KEY = 57705 -const HISTOGRAM = 57706 -const HISTORY = 57707 -const INACTIVE = 57708 -const INVISIBLE = 57709 -const LOCKED = 57710 -const MASTER_COMPRESSION_ALGORITHMS = 57711 -const MASTER_PUBLIC_KEY_PATH = 57712 -const MASTER_TLS_CIPHERSUITES = 57713 -const MASTER_ZSTD_COMPRESSION_LEVEL = 57714 -const NESTED = 57715 -const NETWORK_NAMESPACE = 57716 -const NOWAIT = 57717 -const NULLS = 57718 -const OJ = 57719 -const OLD = 57720 -const OPTIONAL = 57721 -const ORDINALITY = 57722 -const ORGANIZATION = 57723 -const OTHERS = 57724 -const PATH = 57725 -const PERSIST = 57726 -const PERSIST_ONLY = 57727 -const PRECEDING = 57728 -const PRIVILEGE_CHECKS_USER = 57729 -const PROCESS = 57730 -const RANDOM = 57731 -const REFERENCE = 57732 -const REQUIRE_ROW_FORMAT = 57733 -const RESOURCE = 57734 -const RESPECT = 57735 -const RESTART = 57736 -const RETAIN = 57737 -const REUSE = 57738 -const ROLE = 57739 -const SECONDARY = 57740 -const SECONDARY_ENGINE = 57741 -const SECONDARY_LOAD = 57742 -const SECONDARY_UNLOAD = 57743 -const SKIP = 57744 -const SRID = 57745 -const THREAD_PRIORITY = 57746 -const TIES = 57747 -const UNBOUNDED = 57748 -const VCPU = 57749 -const VISIBLE = 57750 -const FORMAT = 57751 -const TREE = 57752 -const VITESS = 57753 -const TRADITIONAL = 57754 -const LOCAL = 57755 -const LOW_PRIORITY = 57756 -const NO_WRITE_TO_BINLOG = 57757 -const LOGS = 57758 -const ERROR = 57759 -const GENERAL = 57760 -const HOSTS = 57761 -const OPTIMIZER_COSTS = 57762 -const USER_RESOURCES = 57763 -const SLOW = 57764 -const CHANNEL = 57765 -const RELAY = 57766 -const EXPORT = 57767 -const AVG_ROW_LENGTH = 57768 -const CONNECTION = 57769 -const CHECKSUM = 57770 -const DELAY_KEY_WRITE = 57771 -const ENCRYPTION = 57772 -const ENGINE = 57773 -const INSERT_METHOD = 57774 -const MAX_ROWS = 57775 -const MIN_ROWS = 57776 -const PACK_KEYS = 57777 -const PASSWORD = 57778 -const FIXED = 57779 -const DYNAMIC = 57780 -const COMPRESSED = 57781 -const REDUNDANT = 57782 -const COMPACT = 57783 -const ROW_FORMAT = 57784 -const STATS_AUTO_RECALC = 57785 -const STATS_PERSISTENT = 57786 -const STATS_SAMPLE_PAGES = 57787 -const STORAGE = 57788 -const MEMORY = 57789 -const DISK = 57790 +const EVENT = 57628 +const USER = 57629 +const NAMES = 57630 +const CHARSET = 57631 +const GLOBAL = 57632 +const SESSION = 57633 +const ISOLATION = 57634 +const LEVEL = 57635 +const READ = 57636 +const WRITE = 57637 +const ONLY = 57638 +const REPEATABLE = 57639 +const COMMITTED = 57640 +const UNCOMMITTED = 57641 +const SERIALIZABLE = 57642 +const CURRENT_TIMESTAMP = 57643 +const DATABASE = 57644 +const CURRENT_DATE = 57645 +const CURRENT_TIME = 57646 +const LOCALTIME = 57647 +const LOCALTIMESTAMP = 57648 +const CURRENT_USER = 57649 +const UTC_DATE = 57650 +const UTC_TIME = 57651 +const UTC_TIMESTAMP = 57652 +const REPLACE = 57653 +const CONVERT = 57654 +const CAST = 57655 +const SUBSTR = 57656 +const SUBSTRING = 57657 +const GROUP_CONCAT = 57658 +const SEPARATOR = 57659 +const TIMESTAMPADD = 57660 +const TIMESTAMPDIFF = 57661 +const MATCH = 57662 +const AGAINST = 57663 +const BOOLEAN = 57664 +const LANGUAGE = 57665 +const WITH = 57666 +const QUERY = 57667 +const EXPANSION = 57668 +const WITHOUT = 57669 +const VALIDATION = 57670 +const UNUSED = 57671 +const ARRAY = 57672 +const CUME_DIST = 57673 +const DESCRIPTION = 57674 +const DENSE_RANK = 57675 +const EMPTY = 57676 +const EXCEPT = 57677 +const FIRST_VALUE = 57678 +const GROUPING = 57679 +const GROUPS = 57680 +const JSON_TABLE = 57681 +const LAG = 57682 +const LAST_VALUE = 57683 +const LATERAL = 57684 +const LEAD = 57685 +const MEMBER = 57686 +const NTH_VALUE = 57687 +const NTILE = 57688 +const OF = 57689 +const OVER = 57690 +const PERCENT_RANK = 57691 +const RANK = 57692 +const RECURSIVE = 57693 +const ROW_NUMBER = 57694 +const SYSTEM = 57695 +const WINDOW = 57696 +const ACTIVE = 57697 +const ADMIN = 57698 +const BUCKETS = 57699 +const CLONE = 57700 +const COMPONENT = 57701 +const DEFINITION = 57702 +const ENFORCED = 57703 +const EXCLUDE = 57704 +const FOLLOWING = 57705 +const GEOMCOLLECTION = 57706 +const GET_MASTER_PUBLIC_KEY = 57707 +const HISTOGRAM = 57708 +const HISTORY = 57709 +const INACTIVE = 57710 +const INVISIBLE = 57711 +const LOCKED = 57712 +const MASTER_COMPRESSION_ALGORITHMS = 57713 +const MASTER_PUBLIC_KEY_PATH = 57714 +const MASTER_TLS_CIPHERSUITES = 57715 +const MASTER_ZSTD_COMPRESSION_LEVEL = 57716 +const NESTED = 57717 +const NETWORK_NAMESPACE = 57718 +const NOWAIT = 57719 +const NULLS = 57720 +const OJ = 57721 +const OLD = 57722 +const OPTIONAL = 57723 +const ORDINALITY = 57724 +const ORGANIZATION = 57725 +const OTHERS = 57726 +const PATH = 57727 +const PERSIST = 57728 +const PERSIST_ONLY = 57729 +const PRECEDING = 57730 +const PRIVILEGE_CHECKS_USER = 57731 +const PROCESS = 57732 +const RANDOM = 57733 +const REFERENCE = 57734 +const REQUIRE_ROW_FORMAT = 57735 +const RESOURCE = 57736 +const RESPECT = 57737 +const RESTART = 57738 +const RETAIN = 57739 +const REUSE = 57740 +const ROLE = 57741 +const SECONDARY = 57742 +const SECONDARY_ENGINE = 57743 +const SECONDARY_LOAD = 57744 +const SECONDARY_UNLOAD = 57745 +const SKIP = 57746 +const SRID = 57747 +const THREAD_PRIORITY = 57748 +const TIES = 57749 +const UNBOUNDED = 57750 +const VCPU = 57751 +const VISIBLE = 57752 +const FORMAT = 57753 +const TREE = 57754 +const VITESS = 57755 +const TRADITIONAL = 57756 +const LOCAL = 57757 +const LOW_PRIORITY = 57758 +const NO_WRITE_TO_BINLOG = 57759 +const LOGS = 57760 +const ERROR = 57761 +const GENERAL = 57762 +const HOSTS = 57763 +const OPTIMIZER_COSTS = 57764 +const USER_RESOURCES = 57765 +const SLOW = 57766 +const CHANNEL = 57767 +const RELAY = 57768 +const EXPORT = 57769 +const AVG_ROW_LENGTH = 57770 +const CONNECTION = 57771 +const CHECKSUM = 57772 +const DELAY_KEY_WRITE = 57773 +const ENCRYPTION = 57774 +const ENGINE = 57775 +const INSERT_METHOD = 57776 +const MAX_ROWS = 57777 +const MIN_ROWS = 57778 +const PACK_KEYS = 57779 +const PASSWORD = 57780 +const FIXED = 57781 +const DYNAMIC = 57782 +const COMPRESSED = 57783 +const REDUNDANT = 57784 +const COMPACT = 57785 +const ROW_FORMAT = 57786 +const STATS_AUTO_RECALC = 57787 +const STATS_PERSISTENT = 57788 +const STATS_SAMPLE_PAGES = 57789 +const STORAGE = 57790 +const MEMORY = 57791 +const DISK = 57792 var yyToknames = [...]string{ "$end", @@ -888,6 +890,8 @@ var yyToknames = [...]string{ "FUNCTION", "OPEN", "TRIGGERS", + "EVENT", + "USER", "NAMES", "CHARSET", "GLOBAL", @@ -1066,33 +1070,33 @@ var yyExca = [...]int{ 1, -1, -2, 0, -1, 43, - 163, 922, + 163, 923, -2, 90, -1, 44, 1, 111, - 466, 111, + 468, 111, -2, 117, -1, 45, 143, 117, 254, 117, - 304, 117, + 306, 117, -2, 324, -1, 52, - 34, 464, - 164, 464, - 176, 464, - 209, 478, - 210, 478, - -2, 466, + 34, 465, + 164, 465, + 176, 465, + 209, 479, + 210, 479, + -2, 467, -1, 57, - 166, 488, - -2, 486, + 166, 489, + -2, 487, -1, 82, - 56, 555, - -2, 563, + 56, 556, + -2, 564, -1, 107, 1, 112, - 466, 112, + 468, 112, -2, 117, -1, 117, 169, 229, @@ -1101,584 +1105,585 @@ var yyExca = [...]int{ -1, 136, 143, 117, 254, 117, - 304, 117, + 306, 117, -2, 333, - -1, 568, - 150, 943, - -2, 939, - -1, 569, + -1, 570, 150, 944, -2, 940, - -1, 587, - 56, 556, - -2, 568, - -1, 588, + -1, 571, + 150, 945, + -2, 941, + -1, 589, 56, 557, -2, 569, - -1, 608, - 118, 1281, + -1, 590, + 56, 558, + -2, 570, + -1, 610, + 118, 1283, -2, 83, - -1, 609, - 118, 1164, + -1, 611, + 118, 1166, -2, 84, - -1, 615, - 118, 1214, - -2, 916, - -1, 752, - 118, 1103, - -2, 913, - -1, 787, + -1, 617, + 118, 1216, + -2, 917, + -1, 754, + 118, 1104, + -2, 914, + -1, 789, 175, 37, 180, 37, -2, 240, - -1, 866, + -1, 868, 1, 371, - 466, 371, + 468, 371, -2, 117, - -1, 1101, + -1, 1104, 1, 267, - 466, 267, + 468, 267, -2, 117, - -1, 1179, + -1, 1182, 169, 229, 170, 229, -2, 318, - -1, 1188, + -1, 1191, 175, 38, 180, 38, -2, 241, - -1, 1395, - 150, 946, - -2, 942, - -1, 1487, + -1, 1399, + 150, 947, + -2, 943, + -1, 1491, 74, 65, 82, 65, -2, 69, - -1, 1508, + -1, 1512, 1, 268, - 466, 268, + 468, 268, -2, 117, - -1, 1916, - 5, 810, - 18, 810, - 20, 810, - 32, 810, - 83, 810, - -2, 594, - -1, 2128, - 46, 884, - -2, 882, + -1, 1920, + 5, 811, + 18, 811, + 20, 811, + 32, 811, + 83, 811, + -2, 595, + -1, 2132, + 46, 885, + -2, 883, } const yyPrivate = 57344 -const yyLast = 27769 +const yyLast = 27976 var yyAct = [...]int{ - 568, 2209, 2196, 1968, 2128, 1829, 1798, 2173, 2057, 2137, - 1719, 2079, 1686, 1571, 81, 3, 1896, 1004, 1505, 1897, - 1432, 1965, 527, 923, 541, 1056, 1049, 1720, 1523, 1538, - 1893, 1543, 1163, 878, 1802, 1783, 1908, 1706, 510, 1784, - 1389, 1855, 1484, 512, 1646, 1782, 1204, 613, 176, 1621, - 145, 188, 1186, 475, 188, 1545, 1297, 1776, 79, 491, - 1381, 188, 580, 756, 1569, 131, 1093, 1086, 1473, 188, - 782, 905, 1466, 589, 1059, 1054, 1434, 1079, 1042, 1077, - 32, 574, 503, 1415, 1076, 940, 514, 1158, 1358, 763, - 491, 785, 1083, 491, 188, 491, 1162, 760, 768, 1276, - 788, 1193, 1449, 1534, 783, 817, 784, 764, 1092, 1066, - 1489, 1302, 77, 610, 1090, 872, 148, 114, 175, 859, - 1178, 115, 498, 772, 108, 109, 8, 76, 1392, 1017, - 7, 6, 1821, 1820, 1600, 1524, 1018, 1263, 2081, 1843, - 1844, 1347, 941, 177, 178, 179, 1346, 1345, 1344, 1343, - 1342, 501, 1335, 502, 1429, 1430, 82, 1684, 575, 595, - 599, 110, 2125, 757, 795, 2036, 116, 2103, 177, 178, - 179, 188, 2102, 821, 2165, 1942, 597, 2052, 820, 1164, - 2053, 188, 2215, 871, 2170, 499, 188, 822, 451, 2208, - 78, 921, 84, 85, 86, 87, 88, 89, 1636, 2148, - 1548, 2199, 1969, 1588, 607, 2169, 2147, 951, 1872, 2000, - 798, 2115, 966, 965, 975, 976, 968, 969, 970, 971, - 972, 973, 974, 967, 110, 614, 977, 774, 467, 823, - 824, 825, 776, 775, 1607, 1685, 941, 468, 1606, 819, - 174, 504, 105, 1922, 182, 183, 777, 465, 1750, 1923, - 1924, 1749, 833, 834, 1751, 837, 838, 839, 840, 1842, - 1490, 843, 844, 845, 846, 847, 848, 849, 850, 851, - 852, 853, 854, 855, 856, 857, 1431, 1500, 1501, 1547, - 1634, 1499, 939, 799, 835, 34, 462, 102, 70, 38, - 39, 1094, 110, 1095, 836, 473, 778, 947, 479, 103, - 874, 951, 897, 553, 898, 559, 560, 557, 558, 830, - 556, 555, 554, 891, 1336, 1337, 1338, 177, 178, 179, - 561, 562, 919, 883, 572, 105, 170, 884, 885, 886, - 885, 886, 571, 1767, 177, 178, 179, 169, 479, 1517, - 2150, 1991, 105, 489, 97, 1831, 1334, 1989, 478, 100, - 493, 487, 99, 98, 1253, 1803, 1570, 1603, 1282, 1285, - 69, 1286, 111, 1287, 1277, 452, 454, 455, 2198, 471, - 472, 480, 860, 153, 1825, 469, 470, 481, 456, 457, - 485, 484, 1826, 461, 458, 460, 466, 917, 478, 464, - 482, 947, 2166, 899, 1834, 904, 1254, 104, 1255, 103, - 1856, 918, 892, 902, 903, 479, 867, 479, 900, 901, - 1615, 842, 1283, 914, 1754, 916, 841, 1832, 1281, 1833, - 1279, 2099, 2116, 2047, 806, 1572, 804, 150, 1467, 151, - 815, 946, 943, 944, 945, 950, 952, 949, 168, 948, - 814, 1941, 797, 1858, 1549, 813, 942, 812, 1172, 173, - 811, 188, 913, 915, 816, 478, 810, 478, 809, 1280, - 808, 803, 779, 2213, 2048, 761, 2216, 873, 908, 912, - 791, 761, 1605, 2146, 797, 759, 491, 491, 491, 1490, - 104, 2185, 107, 761, 790, 1620, 881, 479, 887, 888, - 889, 890, 909, 797, 491, 491, 154, 104, 1192, 1191, - 895, 1860, 773, 1864, 601, 1859, 159, 1857, 920, 832, - 933, 797, 1862, 1835, 483, 797, 807, 1635, 805, 1594, - 1290, 1861, 927, 826, 2138, 946, 943, 944, 945, 950, - 952, 949, 476, 948, 1863, 1865, 1792, 478, 1602, 797, - 942, 1687, 1689, 1881, 1880, 1879, 771, 477, 770, 2151, - 911, 769, 1813, 870, 767, 450, 180, 1614, 1590, 2132, - 1613, 1265, 1264, 1266, 1267, 1268, 2020, 910, 989, 990, - 1764, 1759, 188, 1921, 1665, 1623, 1711, 796, 1662, 1654, - 1622, 1623, 1746, 800, 790, 864, 1622, 1580, 1495, 1070, - 1002, 1047, 882, 801, 876, 1506, 987, 977, 491, 967, - 1046, 188, 977, 188, 188, 71, 491, 1445, 146, 796, - 2211, 802, 491, 2212, 1760, 2210, 790, 793, 794, 880, - 761, 92, 936, 1005, 787, 791, 934, 935, 796, 610, - 894, 956, 954, 1331, 800, 790, 1762, 1688, 957, 1757, - 954, 1874, 896, 786, 801, 1075, 796, 2107, 957, 1043, - 796, 1758, 831, 790, 793, 794, 957, 761, 866, 1416, - 818, 787, 791, 1060, 1906, 861, 93, 862, 924, 925, - 863, 906, 1278, 1303, 796, 177, 178, 179, 1096, 1383, - 1169, 937, 1589, 958, 1020, 1022, 1024, 1026, 1028, 1030, - 1031, 1021, 1023, 1040, 1027, 1029, 865, 1032, 966, 965, - 975, 976, 968, 969, 970, 971, 972, 973, 974, 967, - 1765, 1763, 977, 989, 990, 1058, 1582, 989, 990, 504, - 968, 969, 970, 971, 972, 973, 974, 967, 1015, 1416, - 977, 1672, 879, 1587, 1048, 1384, 1585, 177, 178, 179, - 1586, 614, 965, 975, 976, 968, 969, 970, 971, 972, - 973, 974, 967, 806, 804, 977, 188, 1647, 1052, 1055, - 1154, 970, 971, 972, 973, 974, 967, 2200, 1926, 977, - 1165, 1166, 1167, 1168, 2190, 147, 152, 149, 155, 156, - 157, 158, 160, 161, 162, 163, 491, 907, 1188, 1304, - 1660, 164, 165, 166, 167, 2201, 1197, 1772, 1659, 1063, - 1201, 2217, 2191, 491, 491, 1365, 491, 172, 491, 491, - 69, 491, 491, 491, 491, 491, 491, 1761, 1883, 1363, - 1364, 1362, 1361, 955, 956, 954, 491, 955, 956, 954, - 188, 1237, 1353, 1355, 1356, 1876, 569, 2035, 1450, 1451, - 1272, 957, 1198, 2034, 1354, 957, 1250, 1177, 1196, 1184, - 1206, 1947, 1207, 1780, 1209, 1211, 1582, 491, 1215, 1217, - 1219, 1221, 1223, 2203, 1447, 188, 1884, 1232, 1233, 2218, - 955, 956, 954, 188, 1270, 1296, 1091, 188, 1153, 1661, - 1584, 1779, 1552, 1170, 1171, 1273, 1160, 189, 957, 1234, - 189, 1161, 1258, 188, 1257, 492, 1195, 189, 1175, 1271, - 188, 1174, 1173, 766, 1256, 189, 1187, 188, 188, 491, - 491, 491, 188, 491, 491, 188, 491, 491, 1260, 1781, - 955, 956, 954, 1248, 1299, 1307, 492, 1446, 1242, 492, - 189, 492, 1311, 1269, 1313, 1314, 1315, 1316, 957, 1318, - 188, 1240, 1241, 955, 956, 954, 1239, 1246, 1247, 1639, - 1640, 1641, 955, 956, 954, 1305, 1306, 1238, 1194, 1194, - 600, 957, 1235, 955, 956, 954, 605, 1213, 2202, 1310, - 957, 177, 178, 179, 2192, 1753, 1317, 1259, 1382, 2181, - 2070, 957, 2032, 110, 2008, 1359, 1291, 1385, 177, 178, - 179, 776, 775, 530, 529, 532, 533, 534, 535, 1929, - 1885, 491, 531, 1789, 536, 1309, 1777, 189, 177, 178, - 179, 1630, 1564, 1598, 177, 178, 179, 189, 1562, 177, - 178, 179, 189, 1251, 1597, 1300, 1393, 1261, 1386, 1387, - 1249, 1399, 1341, 1245, 491, 491, 1244, 1243, 1828, 1954, - 2184, 1954, 2144, 1954, 2133, 188, 78, 1360, 602, 603, - 1395, 1954, 584, 584, 1404, 1407, 2097, 1301, 491, 1394, - 1417, 1954, 2105, 1439, 2096, 188, 2050, 584, 491, 1005, - 1582, 584, 188, 1967, 188, 2018, 584, 1423, 1424, 1954, - 1959, 34, 188, 188, 1939, 1938, 1935, 1936, 1805, 491, - 1935, 1934, 491, 1491, 1393, 1791, 1485, 1458, 584, 1491, - 1321, 1322, 1323, 491, 1325, 1326, 1714, 1328, 1329, 1440, - 1490, 1822, 610, 1157, 1807, 610, 1396, 80, 1395, 1452, - 1800, 1801, 1470, 584, 584, 953, 584, 1464, 1514, 1715, - 1348, 1349, 1350, 1351, 1460, 1400, 1401, 1157, 1156, 1406, - 1409, 1410, 1102, 1101, 34, 1525, 1526, 1527, 1905, 2015, - 1894, 1583, 1509, 953, 1707, 1492, 69, 1707, 491, 1905, - 1469, 1492, 188, 1494, 1422, 491, 1510, 1425, 1426, 1490, - 1740, 1561, 1563, 1513, 1459, 1488, 2106, 1462, 1490, 1954, - 2037, 1937, 1540, 1458, 491, 1402, 1403, 1470, 1498, 1546, - 491, 34, 2086, 1677, 1197, 1493, 1197, 1518, 1497, 1519, - 1520, 1521, 1522, 1496, 1581, 1676, 1582, 1512, 1228, 1511, - 1458, 1470, 1582, 1565, 1448, 1530, 1531, 1532, 1533, 69, - 577, 1427, 504, 1470, 614, 1339, 1905, 614, 2038, 2039, - 2040, 1289, 2187, 1088, 491, 781, 1382, 780, 2136, 69, - 2059, 1382, 1382, 1786, 1458, 1966, 1578, 1568, 1579, 2026, - 1159, 1541, 1539, 1536, 1537, 1827, 1229, 1230, 1231, 2041, - 1553, 1551, 1557, 1558, 1559, 1550, 69, 1830, 1575, 584, - 1535, 1529, 1528, 1504, 798, 1275, 188, 1189, 1185, 1574, - 188, 188, 188, 188, 188, 1541, 1155, 189, 1573, 1418, - 188, 188, 188, 188, 1577, 69, 1593, 1591, 94, 1592, - 1785, 1595, 1596, 188, 2042, 2043, 2060, 174, 1225, 1164, - 188, 2205, 492, 492, 492, 966, 965, 975, 976, 968, - 969, 970, 971, 972, 973, 974, 967, 1909, 1910, 977, - 492, 492, 1542, 188, 491, 2197, 1912, 1894, 1796, 1625, - 1626, 2168, 1795, 1794, 1628, 1786, 1555, 799, 1332, 1292, - 1731, 1629, 1846, 1226, 1227, 1732, 1915, 1194, 975, 976, - 968, 969, 970, 971, 972, 973, 974, 967, 1601, 1914, - 977, 583, 966, 965, 975, 976, 968, 969, 970, 971, - 972, 973, 974, 967, 1618, 1729, 977, 1359, 1728, 1733, - 1730, 1479, 1480, 961, 1727, 964, 1886, 1696, 1057, 2019, - 1957, 978, 979, 980, 981, 982, 983, 984, 189, 962, - 963, 960, 966, 965, 975, 976, 968, 969, 970, 971, - 972, 973, 974, 967, 1705, 1633, 977, 1704, 188, 2156, - 2153, 2189, 2172, 2174, 492, 2179, 188, 189, 2180, 189, - 189, 2129, 492, 96, 2127, 1288, 590, 570, 492, 1360, - 101, 1642, 1475, 1478, 1479, 1480, 1476, 1694, 1477, 1481, - 188, 591, 1656, 1790, 828, 1695, 827, 1693, 1050, 1978, - 1785, 188, 188, 188, 188, 188, 1841, 575, 1655, 1700, - 1051, 1716, 926, 188, 1061, 1062, 593, 188, 592, 590, - 188, 188, 1815, 181, 188, 188, 188, 171, 1671, 1412, - 184, 1738, 1709, 1712, 591, 1043, 1683, 1752, 1814, 111, - 2084, 1931, 1691, 1721, 1413, 1930, 1576, 1203, 1202, 1651, - 1652, 1190, 2013, 1443, 1699, 1771, 1560, 587, 588, 593, - 1295, 592, 1741, 1708, 1710, 1638, 1743, 1450, 1451, 2098, - 1669, 2054, 1770, 1299, 1773, 1774, 1775, 1483, 1768, 1769, - 1734, 1723, 1724, 1703, 1726, 1722, 188, 581, 1725, 1755, - 1739, 1702, 1744, 578, 579, 1747, 2194, 491, 2193, 2177, - 2157, 2012, 1953, 491, 1566, 582, 491, 1546, 1197, 80, - 2011, 1756, 1808, 491, 1889, 1707, 1666, 1778, 2207, 2206, - 2207, 1663, 189, 1673, 1071, 1819, 1064, 2130, 1928, 1444, - 1787, 577, 78, 188, 1810, 83, 75, 1, 463, 1428, - 1041, 474, 1818, 2195, 1804, 1262, 1252, 1970, 2056, 1960, - 1544, 188, 492, 1697, 1698, 1055, 789, 1817, 1395, 136, - 1809, 1177, 1507, 1508, 2140, 91, 754, 1394, 90, 492, - 492, 792, 492, 893, 492, 492, 1567, 492, 492, 492, - 492, 492, 492, 1788, 2051, 491, 1816, 1766, 1516, 1108, - 1106, 1382, 492, 1107, 1105, 1837, 189, 1110, 1836, 1475, - 1478, 1479, 1480, 1476, 1109, 1477, 1481, 1104, 1852, 1909, - 1910, 1853, 1333, 1854, 488, 1482, 1097, 1065, 1845, 829, - 453, 491, 1940, 492, 1851, 1873, 1839, 1330, 1599, 1840, - 459, 189, 188, 1867, 985, 1701, 1748, 611, 604, 189, - 1900, 2178, 491, 189, 2154, 2152, 2126, 2080, 491, 491, - 2155, 1866, 2124, 2188, 2171, 1895, 1515, 1442, 1053, 189, - 2010, 1888, 1670, 1014, 1414, 1852, 189, 1882, 1080, 513, - 1898, 188, 1438, 189, 189, 492, 492, 492, 189, 492, - 492, 189, 492, 492, 1352, 528, 525, 1904, 1721, 526, - 1453, 1713, 1913, 959, 511, 1903, 505, 1072, 1474, 1472, - 1471, 1293, 1084, 1911, 1907, 1892, 189, 1917, 1078, 1919, - 1457, 1920, 1604, 1918, 1824, 938, 586, 1932, 1933, 500, - 95, 1948, 1411, 188, 2114, 188, 188, 188, 1637, 1999, - 585, 491, 60, 37, 495, 1925, 2164, 929, 594, 31, - 30, 29, 28, 23, 188, 22, 21, 20, 19, 25, - 1944, 18, 17, 1943, 16, 106, 1961, 47, 44, 42, - 113, 1971, 491, 491, 491, 112, 188, 492, 45, 1958, - 1546, 41, 868, 27, 26, 1979, 15, 1956, 14, 1875, - 13, 1964, 12, 11, 1963, 10, 9, 5, 4, 932, - 24, 1003, 2, 0, 1955, 0, 0, 0, 0, 0, - 492, 492, 0, 1976, 1977, 0, 0, 0, 0, 0, - 0, 189, 0, 0, 1890, 0, 0, 0, 0, 0, - 1987, 1945, 1946, 0, 492, 0, 0, 0, 0, 0, - 0, 189, 0, 0, 492, 0, 0, 0, 189, 0, - 189, 0, 0, 2009, 0, 0, 1982, 0, 189, 189, - 0, 0, 0, 0, 0, 492, 2014, 0, 492, 0, - 2022, 0, 0, 2023, 0, 0, 0, 0, 0, 492, - 0, 0, 0, 2028, 1984, 1985, 0, 1986, 0, 1721, - 1988, 2030, 1990, 0, 491, 491, 2029, 0, 0, 0, - 2045, 0, 0, 2031, 0, 2033, 0, 491, 0, 0, - 491, 2044, 0, 2055, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 507, 2063, 540, 0, 0, - 0, 0, 0, 2058, 492, 0, 0, 0, 189, 0, - 0, 492, 0, 0, 0, 491, 491, 491, 188, 2061, - 0, 2073, 2075, 2076, 2062, 0, 0, 0, 0, 491, - 492, 491, 0, 0, 0, 0, 492, 491, 2077, 0, - 2083, 0, 2087, 2092, 0, 2085, 2089, 2078, 187, 0, - 1898, 486, 0, 0, 1898, 0, 0, 0, 187, 188, - 2094, 0, 2095, 2001, 0, 0, 187, 0, 0, 0, - 491, 188, 2069, 0, 2101, 0, 2108, 1997, 0, 2104, - 492, 0, 598, 598, 169, 0, 504, 0, 0, 0, - 0, 187, 0, 2024, 0, 2091, 2025, 0, 0, 2027, - 2123, 2093, 0, 0, 0, 0, 0, 0, 0, 111, - 0, 0, 0, 2131, 0, 0, 0, 491, 491, 0, - 153, 1898, 189, 2134, 0, 2139, 189, 189, 189, 189, - 189, 0, 0, 0, 0, 0, 189, 189, 189, 189, - 2058, 2141, 0, 491, 0, 0, 2149, 491, 0, 189, - 0, 2158, 0, 2163, 2160, 0, 189, 0, 0, 0, - 2167, 0, 0, 0, 0, 0, 0, 2176, 187, 2175, - 0, 0, 0, 2003, 150, 1996, 151, 0, 187, 189, - 492, 2186, 0, 187, 1721, 168, 966, 965, 975, 976, - 968, 969, 970, 971, 972, 973, 974, 967, 2082, 504, - 977, 0, 0, 0, 0, 0, 0, 2002, 2204, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2214, - 966, 965, 975, 976, 968, 969, 970, 971, 972, 973, - 974, 967, 0, 0, 977, 0, 0, 0, 0, 0, - 0, 0, 0, 154, 0, 0, 0, 1995, 0, 0, - 0, 0, 0, 159, 966, 965, 975, 976, 968, 969, - 970, 971, 972, 973, 974, 967, 0, 1994, 977, 0, - 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, - 0, 0, 189, 0, 966, 965, 975, 976, 968, 969, - 970, 971, 972, 973, 974, 967, 0, 0, 977, 0, - 0, 0, 0, 1397, 1398, 0, 189, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 539, 189, 189, 189, - 189, 189, 0, 0, 0, 0, 0, 0, 0, 189, - 0, 0, 0, 189, 0, 0, 189, 189, 0, 0, - 189, 189, 189, 0, 0, 0, 0, 1441, 0, 0, - 0, 0, 0, 0, 0, 146, 966, 965, 975, 976, - 968, 969, 970, 971, 972, 973, 974, 967, 0, 0, - 977, 0, 0, 0, 0, 490, 966, 965, 975, 976, - 968, 969, 970, 971, 972, 973, 974, 967, 0, 0, - 977, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 189, 0, 0, 0, 612, 0, 0, 758, - 0, 765, 0, 492, 0, 0, 0, 0, 0, 492, - 0, 0, 492, 0, 0, 0, 0, 0, 0, 492, - 34, 35, 36, 70, 38, 39, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 187, 189, - 74, 1648, 0, 0, 0, 40, 66, 67, 0, 64, - 68, 0, 0, 0, 0, 0, 65, 189, 0, 0, - 0, 966, 965, 975, 976, 968, 969, 970, 971, 972, - 973, 974, 967, 0, 0, 977, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, - 0, 492, 0, 0, 0, 69, 0, 0, 0, 0, - 0, 991, 992, 993, 994, 995, 996, 997, 998, 999, - 1000, 0, 147, 152, 149, 155, 156, 157, 158, 160, - 161, 162, 163, 0, 0, 0, 0, 492, 164, 165, - 166, 167, 0, 0, 0, 0, 0, 0, 189, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 492, 0, - 0, 0, 0, 0, 492, 492, 0, 0, 0, 187, - 0, 0, 0, 0, 0, 0, 0, 43, 46, 49, - 48, 51, 0, 63, 598, 0, 0, 189, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, - 187, 1087, 0, 0, 0, 0, 0, 0, 52, 73, - 72, 0, 0, 61, 62, 50, 966, 965, 975, 976, - 968, 969, 970, 971, 972, 973, 974, 967, 0, 0, - 977, 0, 0, 0, 0, 0, 0, 0, 0, 189, - 0, 189, 189, 189, 0, 0, 0, 492, 0, 0, - 54, 55, 0, 56, 57, 58, 59, 0, 0, 0, - 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 492, 492, - 492, 0, 189, 0, 0, 1649, 0, 0, 0, 1650, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1657, 1658, 0, 0, 0, 0, 1664, 0, 0, 1667, - 1668, 0, 0, 0, 0, 0, 0, 1674, 0, 1675, - 0, 0, 1678, 1679, 1680, 1681, 1682, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1692, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 0, 0, 187, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1736, 1737, 0, 0, 0, 0, - 0, 0, 612, 612, 612, 0, 1200, 0, 0, 0, - 492, 492, 0, 0, 0, 0, 0, 0, 0, 0, - 928, 930, 0, 492, 0, 0, 492, 0, 0, 0, - 0, 1200, 1200, 0, 0, 0, 0, 187, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 492, 492, 492, 189, 0, 0, 0, 0, 0, - 0, 0, 187, 0, 0, 492, 0, 492, 0, 0, - 187, 0, 0, 492, 1298, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 187, 0, 0, 0, 0, 189, 0, 187, 0, 0, - 0, 0, 0, 0, 1319, 1320, 492, 189, 0, 187, - 0, 0, 187, 0, 1068, 0, 0, 0, 0, 0, - 0, 0, 612, 0, 0, 0, 0, 0, 1098, 0, + 570, 2213, 2200, 1972, 2177, 1833, 1802, 1723, 514, 2141, + 2132, 2083, 2061, 926, 81, 3, 1900, 1575, 543, 1690, + 1509, 1901, 582, 1436, 1969, 1059, 1724, 1007, 529, 1897, + 1542, 1806, 1710, 512, 1527, 1166, 1547, 758, 1787, 1488, + 1788, 1912, 1859, 145, 1650, 1786, 880, 1625, 176, 1393, + 1573, 188, 1300, 477, 188, 907, 1052, 1189, 79, 493, + 819, 188, 131, 1385, 1549, 1096, 1780, 1089, 1477, 188, + 784, 1470, 1062, 1057, 1438, 1082, 1045, 1419, 615, 576, + 591, 1362, 32, 516, 943, 1080, 797, 1161, 765, 762, + 493, 1165, 505, 493, 188, 493, 1196, 1079, 770, 790, + 1279, 1453, 1086, 612, 766, 1538, 785, 786, 1095, 1069, + 1493, 77, 924, 787, 1093, 1305, 1207, 774, 874, 861, + 1181, 500, 8, 114, 115, 7, 108, 109, 148, 76, + 6, 1825, 1824, 1604, 2085, 1847, 1848, 1351, 175, 1020, + 1266, 1433, 1434, 1528, 1350, 1349, 1021, 177, 178, 179, + 1348, 82, 1347, 1346, 503, 1339, 504, 597, 601, 1688, + 577, 2129, 509, 759, 2169, 2040, 116, 2107, 2106, 1946, + 823, 188, 2056, 110, 822, 2057, 2219, 2174, 2212, 1167, + 824, 188, 78, 873, 501, 2152, 188, 84, 85, 86, + 87, 88, 89, 944, 821, 2203, 453, 177, 178, 179, + 1552, 1973, 1592, 1640, 609, 801, 2173, 835, 836, 1876, + 839, 840, 841, 842, 2004, 776, 845, 846, 847, 848, + 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, + 859, 832, 800, 616, 778, 777, 110, 944, 555, 2151, + 561, 562, 559, 560, 102, 558, 557, 556, 1097, 174, + 1098, 825, 826, 827, 779, 563, 564, 470, 954, 1927, + 1928, 1504, 1505, 1435, 34, 1494, 469, 70, 38, 39, + 1611, 1689, 1754, 1926, 1610, 1753, 467, 1846, 1755, 1551, + 169, 105, 1638, 182, 183, 1503, 914, 900, 916, 177, + 178, 179, 837, 481, 893, 887, 888, 899, 574, 105, + 838, 97, 954, 876, 110, 111, 100, 133, 922, 99, + 98, 573, 1771, 780, 1521, 464, 153, 2154, 1835, 1340, + 1341, 1342, 1995, 1993, 475, 913, 915, 491, 1338, 495, + 489, 1256, 1807, 942, 105, 170, 1396, 885, 103, 69, + 1574, 886, 887, 888, 1607, 480, 1829, 143, 950, 1280, + 2202, 1288, 132, 1289, 1830, 1290, 103, 862, 904, 905, + 902, 903, 1285, 920, 906, 1619, 869, 481, 1838, 844, + 150, 843, 151, 1257, 2103, 1258, 901, 120, 121, 142, + 141, 168, 1837, 894, 2170, 1282, 781, 921, 2051, 808, + 1836, 1576, 950, 1284, 454, 456, 457, 1175, 473, 474, + 482, 806, 1471, 818, 471, 472, 483, 458, 459, 487, + 486, 481, 463, 460, 462, 468, 1286, 817, 816, 480, + 466, 484, 815, 912, 481, 814, 911, 917, 2220, 137, + 118, 144, 125, 117, 1283, 138, 139, 1945, 104, 154, + 813, 812, 910, 811, 810, 805, 1553, 2052, 1494, 159, + 126, 1624, 763, 188, 897, 2189, 104, 793, 173, 481, + 763, 1195, 1194, 480, 129, 127, 122, 123, 124, 128, + 107, 918, 1768, 1763, 119, 792, 480, 875, 493, 493, + 493, 809, 775, 130, 949, 946, 947, 948, 953, 955, + 952, 104, 951, 807, 603, 1839, 493, 493, 919, 945, + 2217, 883, 1598, 889, 890, 891, 892, 1293, 2150, 930, + 1609, 480, 936, 799, 828, 763, 1764, 1796, 2142, 761, + 1606, 1691, 1693, 923, 1639, 799, 2155, 1885, 949, 946, + 947, 948, 953, 955, 952, 1884, 951, 1883, 1766, 773, + 772, 1761, 771, 945, 1627, 485, 1817, 1627, 872, 1626, + 769, 146, 1626, 1762, 452, 180, 1860, 1618, 992, 993, + 1617, 2136, 1510, 478, 2024, 1925, 1268, 1267, 1269, 1270, + 1271, 834, 1715, 1658, 188, 1584, 1669, 799, 479, 1499, + 1073, 1594, 1005, 878, 896, 866, 71, 980, 1750, 1449, + 884, 927, 928, 1050, 970, 990, 898, 980, 799, 1862, + 493, 908, 1049, 188, 140, 188, 188, 1666, 493, 177, + 178, 179, 1769, 1767, 493, 799, 134, 1692, 1335, 135, + 939, 612, 882, 937, 960, 2111, 92, 1008, 938, 820, + 2119, 969, 968, 978, 979, 971, 972, 973, 974, 975, + 976, 977, 970, 799, 1078, 980, 868, 2215, 798, 1046, + 2216, 1910, 2214, 1306, 802, 792, 1281, 1864, 1099, 1868, + 798, 1863, 940, 1861, 803, 863, 1878, 864, 1866, 1776, + 865, 93, 1063, 867, 177, 178, 179, 1865, 1387, 1420, + 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, + 1867, 1869, 957, 1591, 1043, 1665, 1023, 1025, 1027, 1029, + 1031, 1033, 1034, 1024, 1026, 1593, 1030, 1032, 960, 1035, + 1172, 1420, 798, 1676, 833, 992, 993, 909, 1589, 1765, + 147, 152, 149, 155, 156, 157, 158, 160, 161, 162, + 163, 1051, 808, 798, 1388, 881, 164, 165, 166, 167, + 792, 795, 796, 806, 763, 1369, 992, 993, 789, 793, + 798, 616, 1586, 1586, 1454, 1455, 802, 792, 188, 1367, + 1368, 1366, 1157, 1451, 2204, 1930, 803, 788, 2039, 1307, + 172, 2221, 1168, 1169, 1170, 1171, 1590, 1588, 798, 958, + 959, 957, 959, 957, 804, 792, 795, 796, 493, 763, + 1191, 69, 2205, 789, 793, 1066, 1664, 960, 1200, 960, + 2038, 1951, 1204, 1365, 1663, 493, 493, 1784, 493, 1201, + 493, 493, 1783, 493, 493, 493, 493, 493, 493, 973, + 974, 975, 976, 977, 970, 1187, 1450, 980, 493, 958, + 959, 957, 188, 1240, 1235, 1236, 958, 959, 957, 2222, + 1173, 1174, 2194, 2120, 1556, 1276, 1180, 960, 1253, 602, + 1261, 958, 959, 957, 960, 1199, 958, 959, 957, 493, + 958, 959, 957, 1094, 1880, 1237, 768, 188, 1260, 960, + 2195, 1643, 1644, 1645, 960, 188, 1259, 1299, 960, 188, + 1275, 1887, 1197, 1197, 1357, 1359, 1360, 1164, 1163, 1251, + 177, 178, 179, 1198, 1757, 188, 1358, 1273, 1243, 1244, + 1156, 1245, 188, 1177, 1249, 1250, 1178, 1176, 599, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 493, 493, + 493, 1263, 1209, 1242, 1210, 1061, 1212, 1214, 1190, 1888, + 1218, 1220, 1222, 1224, 1226, 1785, 1241, 604, 605, 1274, + 1310, 1308, 1309, 188, 177, 178, 179, 1314, 1568, 1316, + 1317, 1318, 1319, 607, 1321, 1313, 1272, 1302, 1216, 958, + 959, 957, 1320, 2207, 971, 972, 973, 974, 975, 976, + 977, 970, 1238, 506, 980, 2206, 2196, 960, 2185, 1832, + 1262, 1386, 1363, 532, 531, 534, 535, 536, 537, 2074, + 1389, 1294, 533, 2036, 538, 778, 777, 110, 177, 178, + 179, 2012, 1566, 1933, 493, 177, 178, 179, 1889, 1254, + 1793, 1312, 177, 178, 179, 1781, 78, 1634, 1602, 1397, + 1601, 1303, 1408, 1411, 1264, 1252, 1390, 1391, 1421, 1248, + 1331, 1332, 1333, 1247, 1403, 1246, 586, 493, 493, 1958, + 2188, 1958, 2148, 1958, 2137, 1345, 2101, 1364, 188, 1958, + 586, 1958, 2109, 2054, 586, 1586, 586, 1495, 1398, 2022, + 586, 493, 1958, 1963, 1943, 1942, 1939, 1940, 188, 1939, + 1938, 493, 1444, 2100, 1008, 188, 1443, 188, 1462, 586, + 1494, 1826, 1456, 1495, 1399, 188, 188, 1397, 1711, 1427, + 1428, 1971, 493, 1711, 586, 493, 1160, 1811, 34, 1489, + 1804, 1805, 1474, 586, 1809, 612, 493, 1898, 612, 956, + 586, 1160, 1159, 1105, 1104, 34, 1909, 80, 1400, 1496, + 1795, 2041, 1587, 1718, 1518, 1361, 1468, 1498, 1370, 1371, + 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, + 1382, 1383, 1384, 1514, 1464, 1496, 1719, 1463, 1513, 1909, + 1744, 2019, 1399, 1494, 1529, 1530, 1531, 1474, 1494, 1473, + 956, 493, 1909, 2090, 2110, 188, 1231, 34, 493, 2042, + 2043, 2044, 1958, 69, 1565, 1567, 1517, 1586, 1941, 1474, + 1466, 1502, 1681, 1462, 1680, 1423, 1544, 493, 1492, 1462, + 69, 579, 1586, 493, 1569, 1550, 1452, 1200, 1497, 1200, + 1522, 1501, 1523, 1524, 1525, 1526, 1500, 1585, 1431, 1343, + 1474, 1292, 1516, 1515, 1232, 1233, 1234, 1462, 1534, 1535, + 1536, 1537, 1091, 783, 1572, 782, 2140, 69, 2063, 1970, + 2030, 1162, 1543, 1831, 1579, 616, 1539, 493, 616, 1386, + 1533, 1532, 69, 1278, 1386, 1386, 1545, 1192, 1188, 1158, + 94, 1790, 2045, 174, 1582, 1789, 1583, 1834, 1540, 1541, + 1561, 1562, 1563, 1555, 1557, 1554, 69, 1913, 1914, 1228, + 2064, 571, 801, 1167, 1595, 2209, 2201, 1916, 1898, 188, + 1545, 1578, 1197, 188, 188, 188, 188, 188, 1596, 1800, + 1577, 1799, 1581, 188, 188, 188, 188, 2046, 2047, 800, + 1790, 1798, 1597, 1559, 1336, 1295, 188, 1599, 1600, 1919, + 1918, 1735, 1732, 188, 1229, 1230, 1736, 1479, 1482, 1483, + 1484, 1480, 189, 1481, 1485, 189, 1733, 1913, 1914, 1731, + 494, 1734, 189, 2191, 2172, 1060, 1890, 188, 493, 1737, + 189, 1483, 1484, 1700, 2023, 1961, 1404, 1405, 1709, 1708, + 1410, 1413, 1414, 2160, 2157, 1629, 1630, 2193, 2176, 2178, + 1632, 494, 96, 2184, 494, 189, 494, 1633, 101, 2183, + 1479, 1482, 1483, 1484, 1480, 1426, 1481, 1485, 1429, 1430, + 2133, 1605, 2131, 1291, 572, 1363, 978, 979, 971, 972, + 973, 974, 975, 976, 977, 970, 592, 1622, 980, 969, + 968, 978, 979, 971, 972, 973, 974, 975, 976, 977, + 970, 593, 181, 980, 1698, 171, 1794, 961, 184, 830, + 829, 1053, 1699, 1982, 1789, 1845, 1660, 929, 1637, 592, + 1416, 2088, 188, 1054, 1064, 1065, 595, 2017, 594, 1422, + 188, 1819, 189, 1818, 593, 1417, 111, 1935, 1646, 1934, + 1364, 1580, 189, 506, 1206, 1205, 1193, 189, 1651, 1454, + 1455, 1564, 1018, 1447, 188, 1298, 2102, 589, 590, 595, + 2058, 594, 1487, 580, 581, 188, 188, 188, 188, 188, + 1659, 1707, 1725, 577, 1642, 1720, 583, 188, 2198, 1706, + 2197, 188, 1055, 1058, 188, 188, 1675, 2181, 188, 188, + 188, 1697, 1716, 1713, 2161, 1742, 2016, 1046, 1687, 1957, + 1570, 1756, 584, 1704, 1695, 80, 2015, 1893, 1711, 2211, + 2210, 585, 1670, 1667, 1074, 1067, 1703, 2211, 579, 1775, + 1647, 1648, 1649, 1745, 2134, 1712, 1932, 1747, 1448, 78, + 83, 75, 1, 465, 1432, 1714, 1044, 476, 1774, 2199, + 1777, 1778, 1779, 1265, 1738, 1255, 1759, 1974, 1772, 1773, + 188, 1727, 1728, 1743, 1730, 2060, 1748, 1964, 1751, 1548, + 791, 493, 1726, 136, 1511, 1729, 1512, 493, 1302, 2144, + 493, 91, 1200, 1808, 1550, 1760, 1812, 493, 756, 90, + 794, 895, 1571, 2055, 1770, 1520, 1111, 1109, 1814, 1823, + 1782, 586, 1110, 1108, 1113, 1112, 1107, 188, 1337, 490, + 1486, 1100, 1792, 1791, 1068, 831, 455, 1944, 1822, 1334, + 1603, 461, 988, 1705, 1752, 188, 613, 542, 1821, 606, + 1904, 2182, 1180, 2158, 2156, 2130, 2084, 1398, 2159, 1813, + 2128, 2192, 2175, 1519, 1446, 1056, 1820, 969, 968, 978, + 979, 971, 972, 973, 974, 975, 976, 977, 970, 493, + 2014, 980, 1892, 1399, 1674, 1386, 1017, 1418, 1083, 1841, + 1840, 515, 1856, 1442, 1356, 530, 527, 528, 187, 1457, + 1717, 488, 962, 513, 1843, 1857, 507, 1844, 187, 1075, + 1478, 1476, 1849, 1475, 1296, 493, 187, 1087, 1915, 1877, + 1911, 1081, 1461, 1608, 1828, 941, 188, 1855, 1871, 588, + 502, 95, 600, 600, 1415, 2118, 493, 1858, 1641, 2003, + 587, 187, 493, 493, 189, 60, 1899, 1725, 1870, 1856, + 37, 1655, 1656, 497, 2168, 932, 596, 31, 1902, 1896, + 30, 29, 28, 23, 22, 188, 21, 20, 19, 494, + 494, 494, 1673, 25, 18, 17, 1908, 16, 106, 47, + 44, 42, 113, 112, 45, 41, 870, 494, 494, 27, + 26, 1917, 15, 14, 13, 12, 1921, 11, 1923, 10, + 1924, 9, 5, 4, 1922, 935, 24, 1006, 2, 0, + 0, 1304, 0, 1936, 1937, 1952, 0, 188, 187, 188, + 188, 188, 1929, 0, 0, 493, 0, 0, 187, 0, + 0, 1886, 0, 187, 1851, 1852, 1960, 0, 188, 0, + 0, 0, 0, 0, 0, 0, 0, 1948, 1947, 1872, + 1873, 0, 1874, 1875, 1965, 1975, 493, 493, 493, 1907, + 188, 0, 1959, 1881, 1882, 189, 0, 1550, 1962, 1983, + 1949, 1950, 1968, 1967, 2007, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1352, 1353, 1354, 1355, 0, + 0, 494, 0, 0, 189, 0, 189, 189, 0, 494, + 1986, 0, 0, 0, 0, 494, 0, 0, 0, 0, + 1980, 1981, 0, 0, 0, 1991, 0, 0, 0, 0, + 0, 969, 968, 978, 979, 971, 972, 973, 974, 975, + 976, 977, 970, 0, 0, 980, 0, 0, 1725, 0, + 1406, 1407, 0, 2013, 0, 0, 1931, 0, 0, 2018, + 0, 0, 0, 0, 2026, 0, 2027, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2032, 1988, 1989, + 0, 1990, 0, 0, 1992, 2033, 1994, 506, 493, 493, + 169, 2034, 0, 0, 2049, 0, 0, 0, 0, 0, + 0, 493, 0, 2035, 493, 2037, 0, 2059, 2048, 0, + 0, 0, 0, 0, 0, 111, 0, 2062, 0, 0, + 2067, 0, 0, 0, 0, 0, 153, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1508, 493, + 493, 493, 188, 1984, 0, 2077, 2079, 2080, 0, 0, + 0, 0, 0, 493, 2066, 493, 2073, 0, 0, 189, + 0, 493, 0, 0, 0, 2081, 2091, 2096, 1902, 0, + 2093, 2089, 1902, 2065, 2087, 0, 0, 2082, 0, 2095, + 150, 0, 151, 188, 0, 2097, 2098, 0, 2099, 494, + 0, 168, 0, 0, 493, 188, 0, 1546, 0, 0, + 2112, 0, 2105, 2108, 0, 0, 494, 494, 0, 494, + 187, 494, 494, 0, 494, 494, 494, 494, 494, 494, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 494, + 0, 2127, 0, 189, 0, 0, 0, 2135, 0, 1902, + 0, 493, 493, 0, 0, 0, 0, 2138, 0, 154, + 0, 0, 0, 2143, 2062, 2145, 0, 0, 0, 159, + 494, 0, 0, 0, 0, 0, 0, 493, 189, 0, + 2153, 493, 2162, 1725, 0, 0, 189, 2167, 2164, 0, + 189, 0, 0, 0, 2171, 0, 0, 0, 0, 0, + 2179, 2068, 2069, 2070, 2071, 2072, 189, 2180, 0, 2075, + 2076, 0, 0, 189, 2001, 2190, 0, 0, 0, 0, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 494, + 494, 494, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 187, 2208, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2218, 189, 2006, 600, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 964, 0, 967, 0, + 187, 146, 187, 1090, 981, 982, 983, 984, 985, 986, + 987, 0, 965, 966, 963, 969, 968, 978, 979, 971, + 972, 973, 974, 975, 976, 977, 970, 0, 0, 980, + 0, 0, 969, 968, 978, 979, 971, 972, 973, 974, + 975, 976, 977, 970, 0, 494, 980, 0, 0, 0, + 0, 169, 0, 969, 968, 978, 979, 971, 972, 973, + 974, 975, 976, 977, 970, 0, 0, 980, 0, 0, + 0, 0, 2165, 0, 0, 0, 111, 0, 494, 494, + 0, 0, 0, 0, 0, 0, 0, 153, 0, 189, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1677, + 0, 0, 494, 0, 0, 0, 0, 0, 0, 189, + 0, 0, 494, 0, 0, 0, 189, 0, 189, 0, + 0, 0, 0, 0, 0, 0, 189, 189, 1758, 1701, + 1702, 1058, 2000, 494, 0, 0, 494, 0, 0, 0, + 0, 150, 0, 151, 0, 0, 0, 494, 0, 0, + 0, 0, 168, 0, 0, 187, 968, 978, 979, 971, + 972, 973, 974, 975, 976, 977, 970, 0, 0, 980, + 147, 152, 149, 155, 156, 157, 158, 160, 161, 162, + 163, 0, 0, 0, 0, 0, 164, 165, 166, 167, + 0, 0, 0, 0, 0, 0, 0, 0, 1203, 0, + 0, 0, 494, 0, 0, 0, 189, 0, 0, 494, + 154, 0, 0, 0, 0, 0, 1401, 1402, 0, 0, + 159, 0, 0, 1203, 1203, 0, 0, 0, 494, 187, + 0, 0, 0, 0, 494, 0, 0, 0, 0, 0, + 0, 969, 968, 978, 979, 971, 972, 973, 974, 975, + 976, 977, 970, 1999, 0, 980, 0, 0, 0, 1850, + 1445, 0, 0, 0, 187, 0, 0, 0, 0, 0, + 0, 0, 187, 0, 0, 0, 1301, 0, 494, 969, + 968, 978, 979, 971, 972, 973, 974, 975, 976, 977, + 970, 0, 187, 980, 0, 0, 0, 0, 0, 187, + 0, 0, 0, 0, 0, 0, 1322, 1323, 187, 187, + 187, 187, 187, 187, 187, 0, 0, 0, 0, 0, + 189, 0, 146, 0, 189, 189, 189, 189, 189, 0, + 541, 0, 0, 0, 189, 189, 189, 189, 1998, 0, + 187, 0, 0, 0, 0, 0, 0, 189, 0, 0, + 0, 0, 0, 0, 189, 1879, 0, 0, 0, 0, + 0, 0, 969, 968, 978, 979, 971, 972, 973, 974, + 975, 976, 977, 970, 0, 0, 980, 0, 189, 494, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 492, + 1894, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 600, 1301, 0, 0, 0, 600, 600, 0, + 0, 600, 600, 600, 0, 0, 0, 1203, 0, 0, + 614, 0, 0, 760, 0, 767, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 600, 600, 600, 600, + 600, 0, 0, 0, 0, 1440, 0, 969, 968, 978, + 979, 971, 972, 973, 974, 975, 976, 977, 970, 0, + 0, 980, 0, 0, 0, 187, 0, 0, 0, 0, + 0, 1301, 187, 189, 187, 0, 0, 0, 0, 0, + 0, 189, 187, 187, 0, 0, 0, 0, 0, 0, + 0, 147, 152, 149, 155, 156, 157, 158, 160, 161, + 162, 163, 0, 0, 0, 189, 0, 164, 165, 166, + 167, 0, 0, 0, 0, 0, 189, 189, 189, 189, + 189, 0, 1652, 0, 0, 0, 0, 0, 189, 0, + 0, 0, 189, 0, 0, 189, 189, 0, 0, 189, + 189, 189, 969, 968, 978, 979, 971, 972, 973, 974, + 975, 976, 977, 970, 0, 0, 980, 0, 0, 2005, + 0, 0, 187, 969, 968, 978, 979, 971, 972, 973, + 974, 975, 976, 977, 970, 0, 0, 980, 0, 0, + 0, 0, 506, 0, 0, 0, 0, 0, 0, 2028, + 0, 0, 2029, 0, 0, 2031, 0, 0, 0, 1653, + 0, 189, 0, 1654, 0, 0, 0, 0, 0, 0, + 0, 0, 494, 0, 1661, 1662, 0, 0, 494, 0, + 1668, 494, 0, 1671, 1672, 0, 0, 0, 494, 0, + 0, 1678, 0, 1679, 0, 0, 1682, 1683, 1684, 1685, + 1686, 0, 0, 0, 0, 0, 0, 0, 189, 0, + 0, 0, 1696, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, + 187, 187, 187, 187, 187, 0, 0, 0, 0, 0, + 187, 187, 187, 187, 2086, 506, 0, 0, 1740, 1741, + 494, 0, 0, 187, 0, 0, 0, 0, 0, 0, + 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 187, 0, 494, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 494, 0, 0, + 0, 0, 0, 494, 494, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, + 0, 0, 600, 600, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 614, 614, + 614, 0, 0, 600, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 931, 933, 0, 187, + 0, 0, 0, 0, 0, 0, 0, 1440, 189, 0, + 189, 189, 189, 0, 0, 0, 494, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, + 600, 187, 0, 0, 0, 1853, 1854, 0, 0, 0, + 0, 1203, 187, 187, 187, 187, 187, 494, 494, 494, + 0, 189, 0, 0, 1739, 0, 0, 0, 187, 0, + 0, 187, 187, 0, 0, 187, 1749, 1301, 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, 0, 0, 0, 0, + 1071, 1905, 0, 0, 0, 0, 0, 0, 614, 0, + 0, 0, 0, 0, 1101, 0, 0, 0, 0, 0, + 0, 0, 1920, 0, 0, 186, 0, 187, 0, 0, + 0, 0, 0, 0, 0, 496, 0, 0, 0, 0, + 0, 0, 1203, 575, 0, 0, 0, 0, 0, 0, + 0, 0, 1301, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 764, 494, + 494, 0, 0, 0, 187, 0, 0, 0, 0, 0, + 0, 0, 494, 0, 0, 494, 0, 0, 0, 0, + 0, 0, 187, 544, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 494, 494, 494, 189, 0, 600, 0, 33, 0, 0, + 0, 0, 0, 0, 494, 1985, 494, 0, 0, 1987, + 0, 0, 494, 0, 0, 860, 0, 0, 0, 0, + 1996, 1997, 0, 0, 0, 871, 0, 0, 0, 0, + 877, 0, 0, 0, 189, 0, 2011, 0, 0, 0, + 0, 578, 0, 187, 0, 494, 189, 0, 0, 0, + 0, 0, 0, 2020, 2021, 0, 1203, 2025, 760, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1202, 0, 0, 0, 1208, 1208, 0, 1208, 0, + 1208, 1208, 187, 1217, 1208, 1208, 1208, 1208, 1208, 0, + 0, 0, 494, 494, 0, 0, 1202, 1202, 760, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2053, 0, 0, 0, 494, 0, + 0, 0, 494, 0, 0, 0, 0, 0, 0, 1277, + 0, 0, 0, 0, 187, 0, 187, 187, 187, 0, + 0, 0, 0, 0, 0, 1203, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 187, 0, 0, 2078, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 614, 614, + 614, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2114, 2115, + 2116, 2117, 0, 2121, 0, 2122, 2123, 2124, 0, 2125, + 2126, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1203, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2149, 0, + 0, 0, 0, 0, 1392, 0, 614, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1202, 0, 0, 0, 0, 0, 0, 879, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1424, 1425, 0, + 0, 0, 0, 0, 0, 2186, 2187, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, + 0, 1458, 0, 0, 0, 0, 0, 0, 1801, 0, + 0, 1071, 0, 0, 614, 1128, 0, 0, 0, 1440, + 0, 0, 111, 0, 133, 0, 0, 0, 0, 0, + 0, 0, 614, 153, 0, 614, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 760, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 187, 0, 0, 0, 143, 0, 0, 0, 0, 132, + 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 150, 0, 151, + 0, 0, 0, 0, 1183, 1184, 142, 141, 168, 0, + 0, 767, 0, 0, 0, 0, 0, 0, 1560, 0, + 0, 925, 925, 925, 0, 0, 0, 1077, 0, 0, + 1088, 0, 0, 0, 0, 0, 0, 760, 1116, 0, + 0, 33, 0, 767, 0, 0, 0, 0, 0, 0, + 0, 0, 1203, 0, 989, 991, 137, 1185, 144, 0, + 1182, 0, 138, 139, 0, 0, 154, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, + 0, 1129, 0, 0, 0, 1004, 0, 760, 0, 1009, + 1010, 1011, 1012, 1013, 1014, 1015, 1016, 0, 1019, 1022, + 1022, 1022, 1028, 1022, 1022, 1028, 1022, 1036, 1037, 1038, + 1039, 1040, 1041, 1042, 0, 0, 0, 0, 0, 1048, + 0, 0, 33, 0, 0, 0, 0, 0, 1142, 1145, + 1146, 1147, 1148, 1149, 1150, 0, 1151, 1152, 1153, 1154, + 1155, 1130, 1131, 1132, 1133, 1114, 1115, 1143, 1084, 1117, + 0, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, + 1127, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, + 0, 0, 1106, 0, 0, 0, 0, 0, 1636, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 140, 0, 1144, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 134, 0, 0, 135, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1239, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1287, 0, 0, 0, 0, 0, 0, 0, 1297, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1311, + 0, 0, 0, 0, 1202, 0, 1315, 0, 0, 0, + 0, 0, 0, 0, 0, 1324, 1325, 1326, 1327, 1328, + 1329, 1330, 0, 0, 0, 0, 0, 147, 152, 149, + 155, 156, 157, 158, 160, 161, 162, 163, 0, 0, + 0, 0, 0, 164, 165, 166, 167, 1088, 0, 0, + 0, 34, 35, 36, 70, 38, 39, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, + 0, 74, 0, 0, 0, 0, 40, 66, 67, 1179, + 64, 68, 0, 0, 0, 0, 0, 65, 0, 0, + 0, 0, 0, 111, 0, 133, 0, 0, 0, 0, + 0, 1803, 0, 0, 153, 1202, 0, 1810, 0, 0, + 1803, 0, 0, 0, 0, 614, 53, 1815, 0, 0, + 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, + 0, 0, 0, 0, 0, 143, 0, 0, 0, 0, + 132, 925, 925, 925, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, + 151, 0, 0, 0, 0, 1183, 1184, 142, 141, 168, + 0, 0, 1465, 0, 0, 0, 0, 0, 0, 1469, + 0, 1472, 0, 0, 0, 0, 0, 0, 0, 614, + 1491, 0, 0, 0, 0, 0, 0, 0, 43, 46, + 49, 48, 51, 0, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 137, 1185, 144, + 0, 1182, 0, 138, 139, 1208, 0, 154, 0, 52, + 73, 72, 0, 0, 61, 62, 50, 159, 0, 0, + 0, 0, 0, 0, 0, 0, 614, 0, 0, 1202, + 0, 0, 1906, 1208, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1558, + 0, 54, 55, 0, 56, 57, 58, 59, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1490, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 760, 0, 0, 1202, 146, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1976, 1977, 1978, 0, + 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1088, 0, 0, 0, 1612, 1613, 1614, + 1615, 1616, 140, 0, 0, 0, 0, 1620, 1621, 1088, + 1623, 0, 0, 0, 134, 0, 0, 135, 0, 0, + 1628, 0, 0, 0, 0, 0, 0, 1631, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1202, 1635, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1803, 2050, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1803, 0, 0, 614, 0, 0, 0, 147, 152, + 149, 155, 156, 157, 158, 160, 161, 162, 163, 0, + 0, 0, 0, 0, 164, 165, 166, 167, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1803, + 1803, 1803, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2092, 0, 2094, 0, 0, 0, 0, + 0, 1803, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1849, 1850, 492, 492, 1357, 0, 0, 1366, 1367, - 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, - 1378, 1379, 1380, 0, 0, 0, 0, 0, 0, 492, - 0, 0, 0, 492, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 598, - 1298, 0, 0, 0, 598, 598, 0, 0, 598, 598, - 598, 0, 0, 0, 1200, 1419, 0, 1901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 598, 598, 598, 598, 598, 1916, 0, - 0, 0, 1436, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1803, 0, 0, 0, 0, 1746, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 187, 0, 0, 0, 0, 0, 1298, 187, - 0, 187, 0, 0, 0, 0, 0, 0, 0, 187, - 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 758, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1199, 0, 0, 0, 1205, - 1205, 0, 1205, 0, 1205, 1205, 0, 1214, 1205, 1205, - 1205, 1205, 1205, 0, 0, 0, 0, 0, 0, 0, - 1199, 1199, 758, 0, 0, 1044, 0, 0, 0, 0, - 0, 1981, 0, 0, 0, 1983, 0, 0, 0, 187, - 542, 33, 0, 0, 0, 0, 1992, 1993, 0, 0, - 0, 0, 0, 1274, 0, 0, 0, 0, 0, 0, - 0, 0, 2007, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 33, 0, 186, 0, 0, 2016, - 2017, 0, 0, 2021, 0, 0, 494, 0, 0, 0, - 0, 0, 0, 0, 573, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 612, 612, 612, 0, 612, - 612, 0, 612, 612, 0, 0, 0, 0, 576, 762, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2049, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 187, 0, 0, 0, 187, 187, 187, - 187, 187, 0, 0, 0, 0, 0, 187, 187, 187, - 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 187, 0, 0, 0, 2074, 0, 0, 187, 0, 0, - 0, 0, 0, 0, 0, 0, 858, 1388, 0, 612, - 0, 0, 0, 0, 0, 0, 869, 0, 0, 0, - 187, 875, 0, 1199, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1420, 1421, 0, 0, 0, 0, 0, 0, 0, 1643, - 1644, 1645, 0, 0, 2110, 2111, 2112, 2113, 0, 2117, - 0, 2118, 2119, 2120, 1454, 2121, 2122, 0, 0, 0, - 0, 0, 0, 0, 1068, 0, 0, 612, 598, 598, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 612, 0, 0, 612, 598, - 0, 169, 0, 0, 2145, 0, 0, 0, 0, 758, - 0, 0, 1797, 0, 0, 187, 0, 0, 0, 0, - 0, 0, 0, 1436, 0, 0, 111, 0, 133, 0, - 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, - 0, 0, 0, 0, 0, 0, 598, 187, 0, 0, - 0, 2182, 2183, 0, 0, 0, 0, 1200, 187, 187, - 187, 187, 187, 0, 765, 0, 0, 0, 143, 0, - 1735, 1556, 0, 132, 187, 0, 0, 187, 187, 0, - 0, 187, 1745, 1298, 0, 0, 0, 0, 0, 0, - 758, 150, 0, 151, 0, 0, 765, 0, 1180, 1181, - 142, 141, 168, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 758, 0, 0, 187, 0, 0, 0, 0, 0, 0, - 137, 1182, 144, 0, 1179, 0, 138, 139, 1200, 0, - 154, 0, 0, 0, 0, 0, 0, 0, 1298, 0, - 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 877, 0, 0, 0, - 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 922, 922, 922, 0, - 0, 0, 0, 1847, 1848, 0, 0, 0, 0, 0, - 1632, 598, 0, 0, 0, 0, 33, 0, 1868, 1869, - 0, 1870, 1871, 0, 0, 0, 0, 0, 0, 986, - 988, 0, 1877, 1878, 0, 0, 0, 0, 0, 0, - 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, - 1001, 0, 0, 0, 1006, 1007, 1008, 1009, 1010, 1011, - 1012, 1013, 1200, 1016, 1019, 1019, 1019, 1025, 1019, 1019, - 1025, 1019, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 0, - 0, 0, 0, 140, 1045, 0, 0, 33, 187, 0, - 0, 0, 0, 0, 0, 134, 1074, 0, 135, 1085, - 0, 0, 0, 0, 0, 1927, 0, 0, 0, 0, - 0, 0, 0, 1081, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1199, 0, 0, 0, - 187, 0, 187, 187, 187, 0, 0, 0, 0, 0, - 0, 1200, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, - 0, 0, 1980, 0, 0, 0, 0, 0, 0, 147, - 152, 149, 155, 156, 157, 158, 160, 161, 162, 163, - 0, 0, 0, 0, 0, 164, 165, 166, 167, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1799, 0, 0, 0, 1199, 0, 1806, - 0, 0, 1799, 0, 0, 0, 0, 612, 0, 1811, - 0, 1103, 0, 1200, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 612, 0, 0, 0, 1236, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2064, 2065, 2066, 2067, 2068, 0, 0, 0, 2071, 2072, - 0, 0, 0, 0, 0, 1436, 0, 1205, 0, 0, - 1284, 0, 0, 0, 0, 0, 0, 0, 1294, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 612, 0, - 0, 1199, 0, 0, 1902, 1205, 0, 0, 1308, 0, - 0, 0, 0, 0, 0, 1312, 187, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1324, 187, 0, - 1327, 0, 0, 0, 0, 0, 0, 0, 0, 922, - 922, 922, 0, 922, 922, 0, 922, 922, 0, 0, - 169, 0, 0, 0, 0, 1085, 0, 0, 0, 0, - 0, 1176, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 111, 0, 133, 0, 0, - 0, 0, 0, 0, 0, 0, 153, 758, 0, 0, - 1199, 0, 0, 0, 0, 0, 0, 0, 1200, 0, - 0, 2161, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 143, 1972, 1973, - 1974, 0, 132, 0, 0, 0, 0, 0, 0, 0, - 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 150, 0, 151, 0, 0, 0, 0, 1180, 1181, 142, - 141, 168, 0, 0, 0, 111, 0, 133, 0, 0, - 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1461, 0, 0, 0, 0, 0, 0, 1465, 0, 1468, - 0, 0, 1199, 0, 0, 0, 0, 143, 1487, 137, - 1182, 144, 132, 1179, 0, 138, 139, 0, 0, 154, - 0, 0, 1486, 0, 0, 0, 0, 0, 0, 159, - 150, 0, 151, 0, 0, 0, 0, 120, 121, 142, - 141, 168, 0, 0, 0, 0, 0, 0, 0, 0, - 1799, 2046, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1799, 0, 0, 612, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1554, 0, 137, - 118, 144, 125, 117, 0, 138, 139, 0, 0, 154, - 0, 1799, 1799, 1799, 0, 0, 0, 0, 0, 159, - 126, 0, 0, 0, 0, 2088, 0, 2090, 0, 0, - 0, 0, 0, 1799, 129, 127, 122, 123, 124, 128, - 0, 146, 0, 0, 119, 0, 0, 0, 0, 0, - 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1799, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 134, 0, 0, 135, 0, 0, - 0, 1085, 0, 612, 612, 1608, 1609, 1610, 1611, 1612, - 0, 146, 0, 0, 0, 1616, 1617, 1085, 1619, 0, - 0, 0, 0, 0, 0, 0, 0, 1199, 1624, 2159, - 0, 0, 0, 1799, 1125, 1627, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1631, 0, - 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 134, 0, 0, 135, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 147, 152, - 149, 155, 156, 157, 158, 160, 161, 162, 163, 0, - 0, 0, 0, 0, 164, 165, 166, 167, 0, 0, + 0, 1657, 0, 0, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1653, 0, 0, 576, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1113, 0, 0, + 0, 614, 614, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1694, 0, 0, 1797, 1202, 0, 2163, 0, 0, + 0, 1803, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1084, 0, 0, + 0, 0, 0, 0, 1721, 1722, 0, 0, 1084, 1084, + 1084, 1084, 1084, 0, 0, 0, 0, 0, 0, 0, + 0, 1827, 0, 0, 1490, 0, 0, 1084, 0, 0, + 0, 1084, 0, 0, 0, 0, 0, 0, 0, 1842, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1690, 0, 0, 0, 147, 152, - 149, 155, 156, 157, 158, 160, 161, 162, 163, 0, - 1126, 0, 0, 0, 164, 165, 166, 167, 0, 0, - 1081, 0, 0, 0, 0, 0, 0, 1717, 1718, 0, - 0, 1081, 1081, 1081, 1081, 1081, 1742, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1486, 0, 0, - 1081, 0, 0, 0, 1081, 0, 0, 1139, 1142, 1143, - 1144, 1145, 1146, 1147, 0, 1148, 1149, 1150, 1151, 1152, - 1127, 1128, 1129, 1130, 1111, 1112, 1140, 0, 1114, 0, - 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, - 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 0, 0, - 0, 1793, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1812, 0, 0, 0, 1823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1141, 0, 0, 0, 0, 0, 1838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1891, 1816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1899, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1081, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1953, 0, 1954, 1955, 1956, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1966, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1949, 0, - 1950, 1951, 1952, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1962, + 0, 0, 0, 1903, 1979, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1084, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1998, 0, 0, 0, 0, 0, 0, - 2004, 2005, 2006, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1687,2293 +1692,2313 @@ 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, + 2002, 0, 0, 0, 0, 0, 0, 2008, 2009, 2010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1899, 0, 33, 0, - 1899, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2100, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2109, 0, 0, 0, - 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2104, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1899, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 736, 723, 33, - 2135, 672, 739, 643, 661, 748, 663, 666, 706, 623, - 685, 330, 658, 0, 647, 619, 654, 620, 645, 674, - 241, 678, 642, 725, 688, 738, 288, 0, 625, 648, - 344, 708, 381, 227, 297, 295, 409, 251, 244, 240, - 226, 272, 303, 342, 399, 336, 745, 292, 695, 0, - 390, 315, 0, 0, 0, 676, 728, 683, 719, 671, - 707, 632, 694, 740, 659, 703, 741, 278, 225, 195, - 327, 391, 254, 0, 0, 0, 177, 178, 179, 0, - 2142, 2143, 0, 0, 0, 0, 0, 217, 0, 223, - 700, 735, 656, 702, 237, 276, 243, 236, 406, 705, - 751, 618, 697, 0, 621, 624, 747, 731, 651, 652, - 0, 0, 0, 0, 0, 0, 0, 675, 684, 716, - 669, 0, 0, 0, 0, 0, 0, 0, 0, 649, - 0, 693, 0, 0, 0, 628, 622, 0, 0, 0, - 0, 673, 0, 0, 0, 631, 0, 650, 717, 0, - 616, 262, 626, 316, 721, 730, 670, 436, 734, 668, - 667, 737, 712, 629, 727, 662, 287, 627, 284, 191, - 205, 0, 660, 326, 365, 371, 726, 646, 655, 228, - 653, 369, 340, 423, 213, 252, 362, 345, 367, 692, - 710, 368, 293, 411, 357, 421, 437, 438, 235, 320, - 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, - 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, - 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, - 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, - 415, 229, 448, 208, 433, 202, 209, 432, 322, 410, - 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, - 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, - 392, 427, 449, 215, 641, 722, 405, 442, 445, 0, - 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, - 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, - 294, 714, 750, 339, 370, 219, 425, 389, 636, 640, - 634, 635, 686, 687, 637, 742, 743, 744, 718, 630, - 0, 638, 639, 0, 724, 732, 733, 691, 190, 203, - 290, 746, 359, 255, 447, 431, 428, 617, 633, 234, - 644, 0, 0, 657, 664, 665, 677, 679, 680, 681, - 682, 690, 698, 699, 701, 709, 711, 713, 715, 720, - 729, 749, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 335, 337, - 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, - 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, - 385, 393, 397, 412, 413, 424, 435, 439, 264, 420, - 440, 0, 298, 689, 696, 300, 250, 266, 275, 704, - 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, - 220, 380, 400, 401, 402, 404, 312, 238, 736, 723, - 0, 0, 672, 739, 643, 661, 748, 663, 666, 706, - 623, 685, 330, 658, 0, 647, 619, 654, 620, 645, - 674, 241, 678, 642, 725, 688, 738, 288, 0, 625, - 648, 344, 708, 381, 227, 297, 295, 409, 251, 244, - 240, 226, 272, 303, 342, 399, 336, 745, 292, 695, - 0, 390, 315, 0, 0, 0, 676, 728, 683, 719, - 671, 707, 632, 694, 740, 659, 703, 741, 278, 225, - 195, 327, 391, 254, 0, 0, 0, 177, 178, 179, - 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, - 223, 700, 735, 656, 702, 237, 276, 243, 236, 406, - 705, 751, 618, 697, 0, 621, 624, 747, 731, 651, - 652, 0, 0, 0, 0, 0, 0, 0, 675, 684, - 716, 669, 0, 0, 0, 0, 0, 0, 1891, 0, - 649, 0, 693, 0, 0, 0, 628, 622, 0, 0, - 0, 0, 673, 0, 0, 0, 631, 0, 650, 717, - 0, 616, 262, 626, 316, 721, 730, 670, 436, 734, - 668, 667, 737, 712, 629, 727, 662, 287, 627, 284, - 191, 205, 0, 660, 326, 365, 371, 726, 646, 655, - 228, 653, 369, 340, 423, 213, 252, 362, 345, 367, - 692, 710, 368, 293, 411, 357, 421, 437, 438, 235, - 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, - 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, - 398, 419, 218, 379, 0, 0, 0, 200, 417, 395, - 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, - 414, 415, 229, 448, 208, 433, 202, 209, 432, 322, - 410, 418, 311, 302, 201, 416, 309, 301, 286, 249, - 268, 355, 296, 356, 269, 318, 317, 319, 0, 196, - 0, 392, 427, 449, 215, 641, 722, 405, 442, 445, - 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, - 444, 214, 352, 265, 333, 422, 321, 210, 271, 388, - 285, 294, 714, 750, 339, 370, 219, 425, 389, 636, - 640, 634, 635, 686, 687, 637, 742, 743, 744, 718, - 630, 0, 638, 639, 0, 724, 732, 733, 691, 190, - 203, 290, 746, 359, 255, 447, 431, 428, 617, 633, - 234, 644, 0, 0, 657, 664, 665, 677, 679, 680, - 681, 682, 690, 698, 699, 701, 709, 711, 713, 715, - 720, 729, 749, 192, 193, 204, 212, 221, 233, 246, - 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, - 305, 306, 307, 323, 324, 325, 328, 331, 332, 335, - 337, 338, 341, 347, 348, 349, 350, 351, 353, 360, - 364, 372, 373, 374, 375, 376, 377, 378, 382, 383, - 384, 385, 393, 397, 412, 413, 424, 435, 439, 264, - 420, 440, 0, 298, 689, 696, 300, 250, 266, 275, - 704, 430, 394, 207, 366, 256, 197, 224, 211, 231, - 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, - 363, 220, 380, 400, 401, 402, 404, 312, 238, 736, - 723, 0, 0, 672, 739, 643, 661, 748, 663, 666, - 706, 623, 685, 330, 658, 0, 647, 619, 654, 620, - 645, 674, 241, 678, 642, 725, 688, 738, 288, 0, - 625, 648, 344, 708, 381, 227, 297, 295, 409, 251, - 244, 240, 226, 272, 303, 342, 399, 336, 745, 292, - 695, 0, 390, 315, 0, 0, 0, 676, 728, 683, - 719, 671, 707, 632, 694, 740, 659, 703, 741, 278, - 225, 195, 327, 391, 254, 0, 0, 0, 177, 178, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 700, 735, 656, 702, 237, 276, 243, 236, - 406, 705, 751, 618, 697, 0, 621, 624, 747, 731, - 651, 652, 0, 0, 0, 0, 0, 0, 0, 675, - 684, 716, 669, 0, 0, 0, 0, 0, 0, 1746, - 0, 649, 0, 693, 0, 0, 0, 628, 622, 0, - 0, 0, 0, 673, 0, 0, 0, 631, 0, 650, - 717, 0, 616, 262, 626, 316, 721, 730, 670, 436, - 734, 668, 667, 737, 712, 629, 727, 662, 287, 627, - 284, 191, 205, 0, 660, 326, 365, 371, 726, 646, - 655, 228, 653, 369, 340, 423, 213, 252, 362, 345, - 367, 692, 710, 368, 293, 411, 357, 421, 437, 438, - 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, - 426, 387, 313, 407, 408, 283, 386, 260, 194, 291, - 198, 398, 419, 218, 379, 0, 0, 0, 200, 417, - 395, 310, 280, 281, 199, 0, 361, 239, 258, 230, - 329, 414, 415, 229, 448, 208, 433, 202, 209, 432, - 322, 410, 418, 311, 302, 201, 416, 309, 301, 286, - 249, 268, 355, 296, 356, 269, 318, 317, 319, 0, - 196, 0, 392, 427, 449, 215, 641, 722, 405, 442, - 445, 0, 358, 216, 259, 248, 354, 257, 289, 441, - 443, 444, 214, 352, 265, 333, 422, 321, 210, 271, - 388, 285, 294, 714, 750, 339, 370, 219, 425, 389, - 636, 640, 634, 635, 686, 687, 637, 742, 743, 744, - 718, 630, 0, 638, 639, 0, 724, 732, 733, 691, - 190, 203, 290, 746, 359, 255, 447, 431, 428, 617, - 633, 234, 644, 0, 0, 657, 664, 665, 677, 679, - 680, 681, 682, 690, 698, 699, 701, 709, 711, 713, - 715, 720, 729, 749, 192, 193, 204, 212, 221, 233, - 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, - 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, - 335, 337, 338, 341, 347, 348, 349, 350, 351, 353, - 360, 364, 372, 373, 374, 375, 376, 377, 378, 382, - 383, 384, 385, 393, 397, 412, 413, 424, 435, 439, - 264, 420, 440, 0, 298, 689, 696, 300, 250, 266, - 275, 704, 430, 394, 207, 366, 256, 197, 224, 211, - 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, - 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, - 736, 723, 0, 0, 672, 739, 643, 661, 748, 663, - 666, 706, 623, 685, 330, 658, 0, 647, 619, 654, - 620, 645, 674, 241, 678, 642, 725, 688, 738, 288, - 0, 625, 648, 344, 708, 381, 227, 297, 295, 409, - 251, 244, 240, 226, 272, 303, 342, 399, 336, 745, - 292, 695, 0, 390, 315, 0, 0, 0, 676, 728, - 683, 719, 671, 707, 632, 694, 740, 659, 703, 741, - 278, 225, 195, 327, 391, 254, 0, 0, 0, 177, - 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, - 217, 0, 223, 700, 735, 656, 702, 237, 276, 243, - 236, 406, 705, 751, 618, 697, 0, 621, 624, 747, - 731, 651, 652, 0, 0, 0, 0, 0, 0, 0, - 675, 684, 716, 669, 0, 0, 0, 0, 0, 0, - 1463, 0, 649, 0, 693, 0, 0, 0, 628, 622, - 0, 0, 0, 0, 673, 0, 0, 0, 631, 0, - 650, 717, 0, 616, 262, 626, 316, 721, 730, 670, - 436, 734, 668, 667, 737, 712, 629, 727, 662, 287, - 627, 284, 191, 205, 0, 660, 326, 365, 371, 726, - 646, 655, 228, 653, 369, 340, 423, 213, 252, 362, - 345, 367, 692, 710, 368, 293, 411, 357, 421, 437, - 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, - 396, 426, 387, 313, 407, 408, 283, 386, 260, 194, - 291, 198, 398, 419, 218, 379, 0, 0, 0, 200, - 417, 395, 310, 280, 281, 199, 0, 361, 239, 258, - 230, 329, 414, 415, 229, 448, 208, 433, 202, 209, - 432, 322, 410, 418, 311, 302, 201, 416, 309, 301, - 286, 249, 268, 355, 296, 356, 269, 318, 317, 319, - 0, 196, 0, 392, 427, 449, 215, 641, 722, 405, - 442, 445, 0, 358, 216, 259, 248, 354, 257, 289, - 441, 443, 444, 214, 352, 265, 333, 422, 321, 210, - 271, 388, 285, 294, 714, 750, 339, 370, 219, 425, - 389, 636, 640, 634, 635, 686, 687, 637, 742, 743, - 744, 718, 630, 0, 638, 639, 0, 724, 732, 733, - 691, 190, 203, 290, 746, 359, 255, 447, 431, 428, - 617, 633, 234, 644, 0, 0, 657, 664, 665, 677, - 679, 680, 681, 682, 690, 698, 699, 701, 709, 711, - 713, 715, 720, 729, 749, 192, 193, 204, 212, 221, - 233, 246, 253, 263, 267, 270, 273, 274, 277, 282, - 299, 304, 305, 306, 307, 323, 324, 325, 328, 331, - 332, 335, 337, 338, 341, 347, 348, 349, 350, 351, - 353, 360, 364, 372, 373, 374, 375, 376, 377, 378, - 382, 383, 384, 385, 393, 397, 412, 413, 424, 435, - 439, 264, 420, 440, 0, 298, 689, 696, 300, 250, - 266, 275, 704, 430, 394, 207, 366, 256, 197, 224, - 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, - 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, - 238, 736, 723, 0, 0, 672, 739, 643, 661, 748, - 663, 666, 706, 623, 685, 330, 658, 0, 647, 619, - 654, 620, 645, 674, 241, 678, 642, 725, 688, 738, - 288, 0, 625, 648, 344, 708, 381, 227, 297, 295, - 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, - 745, 292, 695, 0, 390, 315, 0, 0, 0, 676, - 728, 683, 719, 671, 707, 632, 694, 740, 659, 703, - 741, 278, 225, 195, 327, 391, 254, 69, 0, 0, - 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, - 0, 217, 0, 223, 700, 735, 656, 702, 237, 276, - 243, 236, 406, 705, 751, 618, 697, 0, 621, 624, - 747, 731, 651, 652, 0, 0, 0, 0, 0, 0, - 0, 675, 684, 716, 669, 0, 0, 0, 0, 0, - 0, 0, 0, 649, 0, 693, 0, 0, 0, 628, - 622, 0, 0, 0, 0, 673, 0, 0, 0, 631, - 0, 650, 717, 0, 616, 262, 626, 316, 721, 730, - 670, 436, 734, 668, 667, 737, 712, 629, 727, 662, - 287, 627, 284, 191, 205, 0, 660, 326, 365, 371, - 726, 646, 655, 228, 653, 369, 340, 423, 213, 252, - 362, 345, 367, 692, 710, 368, 293, 411, 357, 421, - 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, - 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, - 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, - 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, - 258, 230, 329, 414, 415, 229, 448, 208, 433, 202, - 209, 432, 322, 410, 418, 311, 302, 201, 416, 309, - 301, 286, 249, 268, 355, 296, 356, 269, 318, 317, - 319, 0, 196, 0, 392, 427, 449, 215, 641, 722, - 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, - 289, 441, 443, 444, 214, 352, 265, 333, 422, 321, - 210, 271, 388, 285, 294, 714, 750, 339, 370, 219, - 425, 389, 636, 640, 634, 635, 686, 687, 637, 742, - 743, 744, 718, 630, 0, 638, 639, 0, 724, 732, - 733, 691, 190, 203, 290, 746, 359, 255, 447, 431, - 428, 617, 633, 234, 644, 0, 0, 657, 664, 665, - 677, 679, 680, 681, 682, 690, 698, 699, 701, 709, - 711, 713, 715, 720, 729, 749, 192, 193, 204, 212, - 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, - 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, - 331, 332, 335, 337, 338, 341, 347, 348, 349, 350, - 351, 353, 360, 364, 372, 373, 374, 375, 376, 377, - 378, 382, 383, 384, 385, 393, 397, 412, 413, 424, - 435, 439, 264, 420, 440, 0, 298, 689, 696, 300, - 250, 266, 275, 704, 430, 394, 207, 366, 256, 197, - 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, - 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, - 312, 238, 736, 723, 0, 0, 672, 739, 643, 661, - 748, 663, 666, 706, 623, 685, 330, 658, 0, 647, - 619, 654, 620, 645, 674, 241, 678, 642, 725, 688, - 738, 288, 0, 625, 648, 344, 708, 381, 227, 297, - 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, - 336, 745, 292, 695, 0, 390, 315, 0, 0, 0, - 676, 728, 683, 719, 671, 707, 632, 694, 740, 659, - 703, 741, 278, 225, 195, 327, 391, 254, 0, 0, - 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 700, 735, 656, 702, 237, - 276, 243, 236, 406, 705, 751, 618, 697, 0, 621, - 624, 747, 731, 651, 652, 0, 0, 0, 0, 0, - 0, 0, 675, 684, 716, 669, 0, 0, 0, 0, - 0, 0, 0, 0, 649, 0, 693, 0, 0, 0, - 628, 622, 0, 0, 0, 0, 673, 0, 0, 0, - 631, 0, 650, 717, 0, 616, 262, 626, 316, 721, - 730, 670, 436, 734, 668, 667, 737, 712, 629, 727, - 662, 287, 627, 284, 191, 205, 0, 660, 326, 365, - 371, 726, 646, 655, 228, 653, 369, 340, 423, 213, - 252, 362, 345, 367, 692, 710, 368, 293, 411, 357, - 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, - 232, 334, 396, 426, 387, 313, 407, 408, 283, 386, - 260, 194, 291, 198, 398, 419, 218, 379, 0, 0, - 0, 200, 417, 395, 310, 280, 281, 199, 0, 361, - 239, 258, 230, 329, 414, 415, 229, 448, 208, 433, - 202, 209, 432, 322, 410, 418, 311, 302, 201, 416, - 309, 301, 286, 249, 268, 355, 296, 356, 269, 318, - 317, 319, 0, 196, 0, 392, 427, 449, 215, 641, - 722, 405, 442, 445, 0, 358, 216, 259, 248, 354, - 257, 289, 441, 443, 444, 214, 352, 265, 333, 422, - 321, 210, 271, 388, 285, 294, 714, 750, 339, 370, - 219, 425, 389, 636, 640, 634, 635, 686, 687, 637, - 742, 743, 744, 718, 630, 0, 638, 639, 0, 724, - 732, 733, 691, 190, 203, 290, 746, 359, 255, 447, - 431, 428, 617, 633, 234, 644, 0, 0, 657, 664, - 665, 677, 679, 680, 681, 682, 690, 698, 699, 701, - 709, 711, 713, 715, 720, 729, 749, 192, 193, 204, - 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, - 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, - 328, 331, 332, 335, 337, 338, 341, 347, 348, 349, - 350, 351, 353, 360, 364, 372, 373, 374, 375, 376, - 377, 378, 382, 383, 384, 385, 393, 397, 412, 413, - 424, 435, 439, 264, 420, 440, 0, 298, 689, 696, - 300, 250, 266, 275, 704, 430, 394, 207, 366, 256, - 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, - 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, - 404, 312, 238, 736, 723, 0, 0, 672, 739, 643, - 661, 748, 663, 666, 706, 623, 685, 330, 658, 0, - 647, 619, 654, 620, 645, 674, 241, 678, 642, 725, - 688, 738, 288, 0, 625, 648, 344, 708, 381, 227, - 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, - 399, 336, 745, 292, 695, 0, 390, 315, 0, 0, - 0, 676, 728, 683, 719, 671, 707, 632, 694, 740, - 659, 703, 741, 278, 225, 195, 327, 391, 254, 0, - 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, - 0, 0, 0, 217, 0, 223, 700, 735, 656, 702, - 237, 276, 243, 236, 406, 705, 751, 618, 697, 0, - 621, 624, 747, 731, 651, 652, 0, 0, 0, 0, - 0, 0, 0, 675, 684, 716, 669, 0, 0, 0, - 0, 0, 0, 0, 0, 649, 0, 693, 0, 0, - 0, 628, 622, 0, 0, 0, 0, 673, 0, 0, - 0, 631, 0, 650, 717, 0, 616, 262, 626, 316, - 721, 730, 670, 436, 734, 668, 667, 737, 712, 629, - 727, 662, 287, 627, 284, 191, 205, 0, 660, 326, - 365, 371, 726, 646, 655, 228, 653, 369, 340, 423, - 213, 252, 362, 345, 367, 692, 710, 368, 293, 411, - 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, - 206, 232, 334, 396, 426, 387, 313, 407, 408, 283, - 386, 260, 194, 291, 198, 398, 419, 218, 379, 0, - 0, 0, 200, 417, 395, 310, 280, 281, 199, 0, - 361, 239, 258, 230, 329, 414, 415, 229, 448, 208, - 433, 202, 753, 432, 322, 410, 418, 311, 302, 201, - 416, 309, 301, 286, 249, 268, 355, 296, 356, 269, - 318, 317, 319, 0, 196, 0, 392, 427, 449, 215, - 641, 722, 405, 442, 445, 0, 358, 216, 259, 248, - 354, 257, 289, 441, 443, 444, 214, 352, 265, 333, - 422, 615, 752, 609, 608, 285, 294, 714, 750, 339, - 370, 219, 425, 389, 636, 640, 634, 635, 686, 687, - 637, 742, 743, 744, 718, 630, 0, 638, 639, 0, - 724, 732, 733, 691, 190, 203, 290, 746, 359, 255, - 447, 431, 428, 617, 633, 234, 644, 0, 0, 657, - 664, 665, 677, 679, 680, 681, 682, 690, 698, 699, - 701, 709, 711, 713, 715, 720, 729, 749, 192, 193, - 204, 212, 221, 233, 246, 253, 263, 267, 270, 273, - 274, 277, 282, 299, 304, 305, 306, 307, 323, 324, - 325, 328, 331, 332, 335, 337, 338, 341, 347, 348, - 349, 350, 351, 353, 360, 364, 372, 373, 374, 375, - 376, 377, 378, 382, 383, 384, 385, 393, 397, 412, - 413, 424, 435, 439, 264, 420, 440, 0, 298, 689, - 696, 300, 250, 266, 275, 704, 430, 394, 207, 366, - 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, - 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, - 402, 404, 312, 238, 736, 723, 0, 0, 672, 739, - 643, 661, 748, 663, 666, 706, 623, 685, 330, 658, - 0, 647, 619, 654, 620, 645, 674, 241, 678, 642, - 725, 688, 738, 288, 0, 625, 648, 344, 708, 381, - 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, - 342, 399, 336, 745, 292, 695, 0, 390, 315, 0, - 0, 0, 676, 728, 683, 719, 671, 707, 632, 694, - 740, 659, 703, 741, 278, 225, 195, 327, 391, 254, - 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, - 0, 0, 0, 0, 217, 0, 223, 700, 735, 656, - 702, 237, 276, 243, 236, 406, 705, 751, 618, 697, - 0, 621, 624, 747, 731, 651, 652, 0, 0, 0, - 0, 0, 0, 0, 675, 684, 716, 669, 0, 0, - 0, 0, 0, 0, 0, 0, 649, 0, 693, 0, - 0, 0, 628, 622, 0, 0, 0, 0, 673, 0, - 0, 0, 631, 0, 650, 717, 0, 616, 262, 626, - 316, 721, 730, 670, 436, 734, 668, 667, 737, 712, - 629, 727, 662, 287, 627, 284, 191, 205, 0, 660, - 326, 365, 371, 726, 646, 655, 228, 653, 369, 340, - 423, 213, 252, 362, 345, 367, 692, 710, 368, 293, - 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, - 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, - 283, 386, 260, 194, 291, 198, 398, 1089, 218, 379, - 0, 0, 0, 200, 417, 395, 310, 280, 281, 199, - 0, 361, 239, 258, 230, 329, 414, 415, 229, 448, - 208, 433, 202, 753, 432, 322, 410, 418, 311, 302, - 201, 416, 309, 301, 286, 249, 268, 355, 296, 356, - 269, 318, 317, 319, 0, 196, 0, 392, 427, 449, - 215, 641, 722, 405, 442, 445, 0, 358, 216, 259, - 248, 354, 257, 289, 441, 443, 444, 214, 352, 265, - 333, 422, 615, 752, 609, 608, 285, 294, 714, 750, - 339, 370, 219, 425, 389, 636, 640, 634, 635, 686, - 687, 637, 742, 743, 744, 718, 630, 0, 638, 639, - 0, 724, 732, 733, 691, 190, 203, 290, 746, 359, - 255, 447, 431, 428, 617, 633, 234, 644, 0, 0, - 657, 664, 665, 677, 679, 680, 681, 682, 690, 698, - 699, 701, 709, 711, 713, 715, 720, 729, 749, 192, - 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, - 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, - 324, 325, 328, 331, 332, 335, 337, 338, 341, 347, - 348, 349, 350, 351, 353, 360, 364, 372, 373, 374, - 375, 376, 377, 378, 382, 383, 384, 385, 393, 397, - 412, 413, 424, 435, 439, 264, 420, 440, 0, 298, - 689, 696, 300, 250, 266, 275, 704, 430, 394, 207, - 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, - 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, - 401, 402, 404, 312, 238, 736, 723, 0, 0, 672, - 739, 643, 661, 748, 663, 666, 706, 623, 685, 330, - 658, 0, 647, 619, 654, 620, 645, 674, 241, 678, - 642, 725, 688, 738, 288, 0, 625, 648, 344, 708, - 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, - 303, 342, 399, 336, 745, 292, 695, 0, 390, 315, - 0, 0, 0, 676, 728, 683, 719, 671, 707, 632, - 694, 740, 659, 703, 741, 278, 225, 195, 327, 391, - 254, 0, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 700, 735, - 656, 702, 237, 276, 243, 236, 406, 705, 751, 618, - 697, 0, 621, 624, 747, 731, 651, 652, 0, 0, - 0, 0, 0, 0, 0, 675, 684, 716, 669, 0, - 0, 0, 0, 0, 0, 0, 0, 649, 0, 693, - 0, 0, 0, 628, 622, 0, 0, 0, 0, 673, - 0, 0, 0, 631, 0, 650, 717, 0, 616, 262, - 626, 316, 721, 730, 670, 436, 734, 668, 667, 737, - 712, 629, 727, 662, 287, 627, 284, 191, 205, 0, - 660, 326, 365, 371, 726, 646, 655, 228, 653, 369, - 340, 423, 213, 252, 362, 345, 367, 692, 710, 368, - 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, - 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, - 408, 283, 386, 260, 194, 291, 198, 398, 606, 218, - 379, 0, 0, 0, 200, 417, 395, 310, 280, 281, - 199, 0, 361, 239, 258, 230, 329, 414, 415, 229, - 448, 208, 433, 202, 753, 432, 322, 410, 418, 311, - 302, 201, 416, 309, 301, 286, 249, 268, 355, 296, - 356, 269, 318, 317, 319, 0, 196, 0, 392, 427, - 449, 215, 641, 722, 405, 442, 445, 0, 358, 216, - 259, 248, 354, 257, 289, 441, 443, 444, 214, 352, - 265, 333, 422, 615, 752, 609, 608, 285, 294, 714, - 750, 339, 370, 219, 425, 389, 636, 640, 634, 635, - 686, 687, 637, 742, 743, 744, 718, 630, 0, 638, - 639, 0, 724, 732, 733, 691, 190, 203, 290, 746, - 359, 255, 447, 431, 428, 617, 633, 234, 644, 0, - 0, 657, 664, 665, 677, 679, 680, 681, 682, 690, - 698, 699, 701, 709, 711, 713, 715, 720, 729, 749, - 192, 193, 204, 212, 221, 233, 246, 253, 263, 267, - 270, 273, 274, 277, 282, 299, 304, 305, 306, 307, - 323, 324, 325, 328, 331, 332, 335, 337, 338, 341, - 347, 348, 349, 350, 351, 353, 360, 364, 372, 373, - 374, 375, 376, 377, 378, 382, 383, 384, 385, 393, - 397, 412, 413, 424, 435, 439, 264, 420, 440, 0, - 298, 689, 696, 300, 250, 266, 275, 704, 430, 394, - 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, - 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, - 400, 401, 402, 404, 312, 238, 330, 0, 0, 1390, - 0, 509, 0, 0, 0, 241, 0, 508, 0, 0, - 0, 288, 0, 0, 1391, 344, 0, 381, 227, 297, - 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, - 336, 552, 292, 0, 0, 390, 315, 0, 0, 0, - 0, 0, 543, 544, 0, 0, 0, 0, 0, 0, - 0, 0, 278, 225, 195, 327, 391, 254, 69, 0, - 0, 177, 178, 179, 530, 529, 532, 533, 534, 535, - 0, 0, 217, 531, 223, 536, 537, 538, 0, 237, - 276, 243, 236, 406, 0, 0, 0, 506, 523, 0, - 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 520, 521, 596, 0, 0, 0, 566, 0, 522, 0, - 0, 515, 516, 518, 517, 519, 524, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 262, 0, 316, 565, - 0, 0, 436, 0, 0, 563, 0, 0, 0, 0, - 0, 287, 0, 284, 191, 205, 0, 0, 326, 365, - 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, - 252, 362, 345, 367, 0, 0, 368, 293, 411, 357, - 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, - 232, 334, 396, 426, 387, 313, 407, 408, 283, 386, - 260, 194, 291, 198, 398, 419, 218, 379, 0, 0, - 0, 200, 417, 395, 310, 280, 281, 199, 0, 361, - 239, 258, 230, 329, 414, 415, 229, 448, 208, 433, - 202, 209, 432, 322, 410, 418, 311, 302, 201, 416, - 309, 301, 286, 249, 268, 355, 296, 356, 269, 318, - 317, 319, 0, 196, 0, 392, 427, 449, 215, 0, - 0, 405, 442, 445, 0, 358, 216, 259, 248, 354, - 257, 289, 441, 443, 444, 214, 352, 265, 333, 422, - 321, 210, 271, 388, 285, 294, 0, 0, 339, 370, - 219, 425, 389, 553, 564, 559, 560, 557, 558, 0, - 556, 555, 554, 567, 545, 546, 547, 548, 550, 0, - 561, 562, 549, 190, 203, 290, 0, 359, 255, 447, - 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, - 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, - 328, 331, 332, 335, 337, 338, 341, 347, 348, 349, - 350, 351, 353, 360, 364, 372, 373, 374, 375, 376, - 377, 378, 382, 383, 384, 385, 393, 397, 412, 413, - 424, 435, 439, 264, 420, 440, 0, 298, 0, 0, - 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, - 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, - 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, - 404, 312, 238, 330, 0, 0, 0, 0, 509, 0, - 0, 0, 241, 0, 508, 0, 0, 0, 288, 0, - 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, - 244, 240, 226, 272, 303, 342, 399, 336, 552, 292, - 0, 0, 390, 315, 0, 0, 0, 0, 0, 543, - 544, 0, 0, 0, 0, 0, 0, 1502, 0, 278, - 225, 195, 327, 391, 254, 69, 0, 0, 177, 178, - 179, 530, 529, 532, 533, 534, 535, 0, 0, 217, - 531, 223, 536, 537, 538, 1503, 237, 276, 243, 236, - 406, 0, 0, 0, 506, 523, 0, 551, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 520, 521, 0, - 0, 0, 0, 566, 0, 522, 0, 0, 515, 516, - 518, 517, 519, 524, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 316, 565, 0, 0, 436, - 0, 0, 563, 0, 0, 0, 0, 0, 287, 0, - 284, 191, 205, 0, 0, 326, 365, 371, 0, 0, - 0, 228, 0, 369, 340, 423, 213, 252, 362, 345, - 367, 0, 0, 368, 293, 411, 357, 421, 437, 438, - 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, - 426, 387, 313, 407, 408, 283, 386, 260, 194, 291, - 198, 398, 419, 218, 379, 0, 0, 0, 200, 417, - 395, 310, 280, 281, 199, 0, 361, 239, 258, 230, - 329, 414, 415, 229, 448, 208, 433, 202, 209, 432, - 322, 410, 418, 311, 302, 201, 416, 309, 301, 286, - 249, 268, 355, 296, 356, 269, 318, 317, 319, 0, - 196, 0, 392, 427, 449, 215, 0, 0, 405, 442, - 445, 0, 358, 216, 259, 248, 354, 257, 289, 441, - 443, 444, 214, 352, 265, 333, 422, 321, 210, 271, - 388, 285, 294, 0, 0, 339, 370, 219, 425, 389, - 553, 564, 559, 560, 557, 558, 0, 556, 555, 554, - 567, 545, 546, 547, 548, 550, 0, 561, 562, 549, - 190, 203, 290, 0, 359, 255, 447, 431, 428, 0, - 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, - 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, - 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, - 335, 337, 338, 341, 347, 348, 349, 350, 351, 353, - 360, 364, 372, 373, 374, 375, 376, 377, 378, 382, - 383, 384, 385, 393, 397, 412, 413, 424, 435, 439, - 264, 420, 440, 0, 298, 0, 0, 300, 250, 266, - 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, - 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, - 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, - 330, 0, 0, 0, 0, 509, 0, 0, 0, 241, - 0, 508, 0, 0, 0, 288, 0, 0, 0, 344, - 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, - 272, 303, 342, 399, 336, 552, 292, 0, 0, 390, - 315, 0, 0, 0, 0, 0, 543, 544, 0, 0, - 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, - 391, 254, 69, 0, 584, 177, 178, 179, 530, 529, - 532, 533, 534, 535, 0, 0, 217, 531, 223, 536, - 537, 538, 0, 237, 276, 243, 236, 406, 0, 0, - 0, 506, 523, 0, 551, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 520, 521, 0, 0, 0, 0, - 566, 0, 522, 0, 0, 515, 516, 518, 517, 519, - 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 316, 565, 0, 0, 436, 0, 0, 563, - 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, - 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, - 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, - 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, - 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, - 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, - 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, - 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, - 229, 448, 208, 433, 202, 209, 432, 322, 410, 418, - 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, - 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, - 427, 449, 215, 0, 0, 405, 442, 445, 0, 358, - 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, - 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, - 0, 0, 339, 370, 219, 425, 389, 553, 564, 559, - 560, 557, 558, 0, 556, 555, 554, 567, 545, 546, - 547, 548, 550, 0, 561, 562, 549, 190, 203, 290, - 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, - 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, - 307, 323, 324, 325, 328, 331, 332, 335, 337, 338, - 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, - 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, - 393, 397, 412, 413, 424, 435, 439, 264, 420, 440, - 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, - 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, - 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, - 380, 400, 401, 402, 404, 312, 238, 330, 0, 0, - 0, 0, 509, 0, 0, 0, 241, 0, 508, 0, - 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, - 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, - 399, 336, 552, 292, 0, 0, 390, 315, 0, 0, - 0, 0, 0, 543, 544, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 225, 195, 327, 391, 254, 69, - 0, 0, 177, 178, 179, 530, 529, 532, 533, 534, - 535, 0, 0, 217, 531, 223, 536, 537, 538, 0, - 237, 276, 243, 236, 406, 0, 0, 0, 506, 523, - 0, 551, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 520, 521, 596, 0, 0, 0, 566, 0, 522, - 0, 0, 515, 516, 518, 517, 519, 524, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, - 565, 0, 0, 436, 0, 0, 563, 0, 0, 0, - 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, - 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, - 213, 252, 362, 345, 367, 0, 0, 368, 293, 411, - 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, - 206, 232, 334, 396, 426, 387, 313, 407, 408, 283, - 386, 260, 194, 291, 198, 398, 419, 218, 379, 0, - 0, 0, 200, 417, 395, 310, 280, 281, 199, 0, - 361, 239, 258, 230, 329, 414, 415, 229, 448, 208, - 433, 202, 209, 432, 322, 410, 418, 311, 302, 201, - 416, 309, 301, 286, 249, 268, 355, 296, 356, 269, - 318, 317, 319, 0, 196, 0, 392, 427, 449, 215, - 0, 0, 405, 442, 445, 0, 358, 216, 259, 248, - 354, 257, 289, 441, 443, 444, 214, 352, 265, 333, - 422, 321, 210, 271, 388, 285, 294, 0, 0, 339, - 370, 219, 425, 389, 553, 564, 559, 560, 557, 558, - 0, 556, 555, 554, 567, 545, 546, 547, 548, 550, - 0, 561, 562, 549, 190, 203, 290, 0, 359, 255, - 447, 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, - 204, 212, 221, 233, 246, 253, 263, 267, 270, 273, - 274, 277, 282, 299, 304, 305, 306, 307, 323, 324, - 325, 328, 331, 332, 335, 337, 338, 341, 347, 348, - 349, 350, 351, 353, 360, 364, 372, 373, 374, 375, - 376, 377, 378, 382, 383, 384, 385, 393, 397, 412, - 413, 424, 435, 439, 264, 420, 440, 0, 298, 0, - 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, - 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, - 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, - 402, 404, 312, 238, 330, 0, 0, 0, 0, 509, - 0, 0, 0, 241, 0, 508, 0, 0, 0, 288, - 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, - 251, 244, 240, 226, 272, 303, 342, 399, 336, 552, - 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, - 543, 544, 0, 0, 0, 0, 0, 0, 0, 0, - 278, 225, 195, 327, 391, 254, 69, 0, 0, 177, - 178, 179, 530, 1408, 532, 533, 534, 535, 0, 0, - 217, 531, 223, 536, 537, 538, 0, 237, 276, 243, - 236, 406, 0, 0, 0, 506, 523, 0, 551, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 520, 521, - 596, 0, 0, 0, 566, 0, 522, 0, 0, 515, - 516, 518, 517, 519, 524, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 316, 565, 0, 0, - 436, 0, 0, 563, 0, 0, 0, 0, 0, 287, - 0, 284, 191, 205, 0, 0, 326, 365, 371, 0, - 0, 0, 228, 0, 369, 340, 423, 213, 252, 362, - 345, 367, 0, 0, 368, 293, 411, 357, 421, 437, - 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, - 396, 426, 387, 313, 407, 408, 283, 386, 260, 194, - 291, 198, 398, 419, 218, 379, 0, 0, 0, 200, - 417, 395, 310, 280, 281, 199, 0, 361, 239, 258, - 230, 329, 414, 415, 229, 448, 208, 433, 202, 209, - 432, 322, 410, 418, 311, 302, 201, 416, 309, 301, - 286, 249, 268, 355, 296, 356, 269, 318, 317, 319, - 0, 196, 0, 392, 427, 449, 215, 0, 0, 405, - 442, 445, 0, 358, 216, 259, 248, 354, 257, 289, - 441, 443, 444, 214, 352, 265, 333, 422, 321, 210, - 271, 388, 285, 294, 0, 0, 339, 370, 219, 425, - 389, 553, 564, 559, 560, 557, 558, 0, 556, 555, - 554, 567, 545, 546, 547, 548, 550, 0, 561, 562, - 549, 190, 203, 290, 0, 359, 255, 447, 431, 428, - 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, - 233, 246, 253, 263, 267, 270, 273, 274, 277, 282, - 299, 304, 305, 306, 307, 323, 324, 325, 328, 331, - 332, 335, 337, 338, 341, 347, 348, 349, 350, 351, - 353, 360, 364, 372, 373, 374, 375, 376, 377, 378, - 382, 383, 384, 385, 393, 397, 412, 413, 424, 435, - 439, 264, 420, 440, 0, 298, 0, 0, 300, 250, - 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, - 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, - 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, - 238, 330, 0, 0, 0, 0, 509, 0, 0, 0, - 241, 0, 508, 0, 0, 0, 288, 0, 0, 0, - 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, - 226, 272, 303, 342, 399, 336, 552, 292, 0, 0, - 390, 315, 0, 0, 0, 0, 0, 543, 544, 0, - 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, - 327, 391, 254, 69, 0, 0, 177, 178, 179, 530, - 1405, 532, 533, 534, 535, 0, 0, 217, 531, 223, - 536, 537, 538, 0, 237, 276, 243, 236, 406, 0, - 0, 0, 506, 523, 0, 551, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 520, 521, 596, 0, 0, - 0, 566, 0, 522, 0, 0, 515, 516, 518, 517, - 519, 524, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 262, 0, 316, 565, 0, 0, 436, 0, 0, - 563, 0, 0, 0, 0, 0, 287, 0, 284, 191, - 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, - 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, - 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, - 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, - 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, - 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, - 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, - 415, 229, 448, 208, 433, 202, 209, 432, 322, 410, - 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, - 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, - 392, 427, 449, 215, 0, 0, 405, 442, 445, 0, - 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, - 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, - 294, 0, 0, 339, 370, 219, 425, 389, 553, 564, - 559, 560, 557, 558, 0, 556, 555, 554, 567, 545, - 546, 547, 548, 550, 0, 561, 562, 549, 190, 203, - 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 335, 337, - 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, - 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, - 385, 393, 397, 412, 413, 424, 435, 439, 264, 420, - 440, 0, 298, 0, 0, 300, 250, 266, 275, 0, - 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, - 220, 380, 400, 401, 402, 404, 312, 238, 577, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 330, 0, 0, 0, 0, 509, 0, 0, 0, - 241, 0, 508, 0, 0, 0, 288, 0, 0, 0, - 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, - 226, 272, 303, 342, 399, 336, 552, 292, 0, 0, - 390, 315, 0, 0, 0, 0, 0, 543, 544, 0, - 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, - 327, 391, 254, 69, 0, 0, 177, 178, 179, 530, - 529, 532, 533, 534, 535, 0, 0, 217, 531, 223, - 536, 537, 538, 0, 237, 276, 243, 236, 406, 0, - 0, 0, 506, 523, 0, 551, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 520, 521, 0, 0, 0, - 0, 566, 0, 522, 0, 0, 515, 516, 518, 517, - 519, 524, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 262, 0, 316, 565, 0, 0, 436, 0, 0, - 563, 0, 0, 0, 0, 0, 287, 0, 284, 191, - 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, - 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, - 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, - 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, - 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, - 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, - 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, - 415, 229, 448, 208, 433, 202, 209, 432, 322, 410, - 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, - 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, - 392, 427, 449, 215, 0, 0, 405, 442, 445, 0, - 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, - 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, - 294, 0, 0, 339, 370, 219, 425, 389, 553, 564, - 559, 560, 557, 558, 0, 556, 555, 554, 567, 545, - 546, 547, 548, 550, 0, 561, 562, 549, 190, 203, - 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 335, 337, - 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, - 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, - 385, 393, 397, 412, 413, 424, 435, 439, 264, 420, - 440, 0, 298, 0, 0, 300, 250, 266, 275, 0, - 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, - 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, - 0, 0, 0, 509, 0, 0, 0, 241, 0, 508, - 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, - 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, - 342, 399, 336, 552, 292, 0, 0, 390, 315, 0, - 0, 0, 0, 0, 543, 544, 0, 0, 0, 0, - 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, - 69, 0, 0, 177, 178, 179, 530, 529, 532, 533, - 534, 535, 0, 0, 217, 531, 223, 536, 537, 538, - 0, 237, 276, 243, 236, 406, 0, 0, 0, 506, - 523, 0, 551, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 520, 521, 0, 0, 0, 0, 566, 0, - 522, 0, 0, 515, 516, 518, 517, 519, 524, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 316, 565, 0, 0, 436, 0, 0, 563, 0, 0, - 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, - 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, - 423, 213, 252, 362, 345, 367, 0, 0, 368, 293, - 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, - 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, - 283, 386, 260, 194, 291, 198, 398, 419, 218, 379, - 0, 0, 0, 200, 417, 395, 310, 280, 281, 199, - 0, 361, 239, 258, 230, 329, 414, 415, 229, 448, - 208, 433, 202, 209, 432, 322, 410, 418, 311, 302, - 201, 416, 309, 301, 286, 249, 268, 355, 296, 356, - 269, 318, 317, 319, 0, 196, 0, 392, 427, 449, - 215, 0, 0, 405, 442, 445, 0, 358, 216, 259, - 248, 354, 257, 289, 441, 443, 444, 214, 352, 265, - 333, 422, 321, 210, 271, 388, 285, 294, 0, 0, - 339, 370, 219, 425, 389, 553, 564, 559, 560, 557, - 558, 0, 556, 555, 554, 567, 545, 546, 547, 548, - 550, 0, 561, 562, 549, 190, 203, 290, 0, 359, - 255, 447, 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, - 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, - 324, 325, 328, 331, 332, 335, 337, 338, 341, 347, - 348, 349, 350, 351, 353, 360, 364, 372, 373, 374, - 375, 376, 377, 378, 382, 383, 384, 385, 393, 397, - 412, 413, 424, 435, 439, 264, 420, 440, 0, 298, - 0, 0, 300, 250, 266, 275, 0, 430, 394, 207, - 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, - 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, - 401, 402, 404, 312, 238, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, - 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, - 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, - 552, 292, 0, 0, 390, 315, 0, 0, 0, 0, - 0, 543, 544, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 225, 195, 327, 391, 254, 69, 0, 0, - 177, 178, 179, 530, 529, 532, 533, 534, 535, 0, - 0, 217, 531, 223, 536, 537, 538, 0, 237, 276, - 243, 236, 406, 0, 0, 0, 0, 523, 0, 551, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, - 521, 0, 0, 0, 0, 566, 0, 522, 0, 0, - 515, 516, 518, 517, 519, 524, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 262, 0, 316, 565, 0, - 0, 436, 0, 0, 563, 0, 0, 0, 0, 0, - 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, - 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, - 362, 345, 367, 2162, 0, 368, 293, 411, 357, 421, - 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, - 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, - 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, - 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, - 258, 230, 329, 414, 415, 229, 448, 208, 433, 202, - 209, 432, 322, 410, 418, 311, 302, 201, 416, 309, - 301, 286, 249, 268, 355, 296, 356, 269, 318, 317, - 319, 0, 196, 0, 392, 427, 449, 215, 0, 0, - 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, - 289, 441, 443, 444, 214, 352, 265, 333, 422, 321, - 210, 271, 388, 285, 294, 0, 0, 339, 370, 219, - 425, 389, 553, 564, 559, 560, 557, 558, 0, 556, - 555, 554, 567, 545, 546, 547, 548, 550, 0, 561, - 562, 549, 190, 203, 290, 0, 359, 255, 447, 431, - 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1903, 0, 33, 0, 1903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, - 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, - 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, - 331, 332, 335, 337, 338, 341, 347, 348, 349, 350, - 351, 353, 360, 364, 372, 373, 374, 375, 376, 377, - 378, 382, 383, 384, 385, 393, 397, 412, 413, 424, - 435, 439, 264, 420, 440, 0, 298, 0, 0, 300, - 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, - 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, - 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, - 312, 238, 330, 0, 0, 0, 0, 0, 0, 0, - 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, - 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, - 240, 226, 272, 303, 342, 399, 336, 552, 292, 0, - 0, 390, 315, 0, 0, 0, 0, 0, 543, 544, - 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, - 195, 327, 391, 254, 69, 0, 584, 177, 178, 179, - 530, 529, 532, 533, 534, 535, 0, 0, 217, 531, - 223, 536, 537, 538, 0, 237, 276, 243, 236, 406, - 0, 0, 0, 0, 523, 0, 551, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 520, 521, 0, 0, - 0, 0, 566, 0, 522, 0, 0, 515, 516, 518, - 517, 519, 524, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 316, 565, 0, 0, 436, 0, - 0, 563, 0, 0, 0, 0, 0, 287, 0, 284, - 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, - 228, 0, 369, 340, 423, 213, 252, 362, 345, 367, - 0, 0, 368, 293, 411, 357, 421, 437, 438, 235, - 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, - 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, - 398, 419, 218, 379, 0, 0, 0, 200, 417, 395, - 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, - 414, 415, 229, 448, 208, 433, 202, 209, 432, 322, - 410, 418, 311, 302, 201, 416, 309, 301, 286, 249, - 268, 355, 296, 356, 269, 318, 317, 319, 0, 196, - 0, 392, 427, 449, 215, 0, 0, 405, 442, 445, - 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, - 444, 214, 352, 265, 333, 422, 321, 210, 271, 388, - 285, 294, 0, 0, 339, 370, 219, 425, 389, 553, - 564, 559, 560, 557, 558, 0, 556, 555, 554, 567, - 545, 546, 547, 548, 550, 0, 561, 562, 549, 190, - 203, 290, 0, 359, 255, 447, 431, 428, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1903, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 738, 725, 33, 2139, 674, 741, + 645, 663, 750, 665, 668, 708, 625, 687, 331, 660, + 0, 649, 621, 656, 622, 647, 676, 241, 680, 644, + 727, 690, 740, 289, 0, 627, 650, 345, 710, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 747, 293, 697, 0, 391, 316, 0, + 0, 0, 678, 730, 685, 721, 673, 709, 634, 696, + 742, 661, 705, 743, 279, 225, 195, 328, 392, 255, + 0, 0, 0, 177, 178, 179, 0, 2146, 2147, 0, + 0, 0, 0, 0, 217, 0, 223, 702, 737, 658, + 704, 237, 277, 243, 236, 407, 707, 753, 620, 699, + 0, 623, 626, 749, 733, 653, 654, 0, 0, 0, + 0, 0, 0, 0, 677, 686, 718, 671, 0, 0, + 0, 0, 0, 0, 0, 0, 651, 0, 695, 0, + 0, 0, 630, 624, 0, 0, 0, 0, 675, 0, + 0, 0, 633, 0, 652, 719, 0, 618, 263, 628, + 317, 723, 732, 672, 438, 736, 670, 669, 739, 714, + 631, 729, 664, 288, 629, 285, 191, 205, 0, 662, + 327, 366, 372, 728, 648, 657, 228, 655, 370, 341, + 424, 213, 253, 363, 346, 368, 694, 712, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 448, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 450, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 451, + 215, 643, 724, 406, 444, 447, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 214, 353, 266, + 334, 423, 252, 431, 322, 210, 272, 389, 286, 295, + 716, 752, 340, 371, 219, 426, 390, 638, 642, 636, + 637, 688, 689, 639, 744, 745, 746, 720, 632, 0, + 640, 641, 0, 726, 734, 735, 693, 190, 203, 291, + 748, 360, 256, 449, 433, 429, 619, 635, 234, 646, + 0, 0, 659, 666, 667, 679, 681, 682, 683, 684, + 692, 700, 701, 703, 711, 713, 715, 717, 722, 731, + 751, 192, 193, 204, 212, 221, 233, 246, 254, 264, + 268, 271, 274, 275, 278, 283, 300, 305, 306, 307, + 308, 324, 325, 326, 329, 332, 333, 336, 338, 339, + 342, 348, 349, 350, 351, 352, 354, 361, 365, 373, + 374, 375, 376, 377, 378, 379, 383, 384, 385, 386, + 394, 398, 413, 414, 425, 437, 441, 265, 421, 442, + 0, 299, 691, 698, 301, 250, 267, 276, 706, 432, + 395, 207, 367, 257, 197, 224, 211, 231, 245, 247, + 280, 309, 315, 344, 347, 262, 242, 222, 364, 220, + 381, 401, 402, 403, 405, 313, 238, 738, 725, 0, + 0, 674, 741, 645, 663, 750, 665, 668, 708, 625, + 687, 331, 660, 0, 649, 621, 656, 622, 647, 676, + 241, 680, 644, 727, 690, 740, 289, 0, 627, 650, + 345, 710, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 747, 293, 697, 0, + 391, 316, 0, 0, 0, 678, 730, 685, 721, 673, + 709, 634, 696, 742, 661, 705, 743, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 702, 737, 658, 704, 237, 277, 243, 236, 407, 707, + 753, 620, 699, 0, 623, 626, 749, 733, 653, 654, + 0, 0, 0, 0, 0, 0, 0, 677, 686, 718, + 671, 0, 0, 0, 0, 0, 0, 1895, 0, 651, + 0, 695, 0, 0, 0, 630, 624, 0, 0, 0, + 0, 675, 0, 0, 0, 633, 0, 652, 719, 0, + 618, 263, 628, 317, 723, 732, 672, 438, 736, 670, + 669, 739, 714, 631, 729, 664, 288, 629, 285, 191, + 205, 0, 662, 327, 366, 372, 728, 648, 657, 228, + 655, 370, 341, 424, 213, 253, 363, 346, 368, 694, + 712, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 448, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 450, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 451, 215, 643, 724, 406, 444, 447, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 214, 353, 266, 334, 423, 252, 431, 322, 210, 272, + 389, 286, 295, 716, 752, 340, 371, 219, 426, 390, + 638, 642, 636, 637, 688, 689, 639, 744, 745, 746, + 720, 632, 0, 640, 641, 0, 726, 734, 735, 693, + 190, 203, 291, 748, 360, 256, 449, 433, 429, 619, + 635, 234, 646, 0, 0, 659, 666, 667, 679, 681, + 682, 683, 684, 692, 700, 701, 703, 711, 713, 715, + 717, 722, 731, 751, 192, 193, 204, 212, 221, 233, + 246, 254, 264, 268, 271, 274, 275, 278, 283, 300, + 305, 306, 307, 308, 324, 325, 326, 329, 332, 333, + 336, 338, 339, 342, 348, 349, 350, 351, 352, 354, + 361, 365, 373, 374, 375, 376, 377, 378, 379, 383, + 384, 385, 386, 394, 398, 413, 414, 425, 437, 441, + 265, 421, 442, 0, 299, 691, 698, 301, 250, 267, + 276, 706, 432, 395, 207, 367, 257, 197, 224, 211, + 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, + 222, 364, 220, 381, 401, 402, 403, 405, 313, 238, + 738, 725, 0, 0, 674, 741, 645, 663, 750, 665, + 668, 708, 625, 687, 331, 660, 0, 649, 621, 656, + 622, 647, 676, 241, 680, 644, 727, 690, 740, 289, + 0, 627, 650, 345, 710, 382, 227, 298, 296, 410, + 251, 244, 240, 226, 273, 304, 343, 400, 337, 747, + 293, 697, 0, 391, 316, 0, 0, 0, 678, 730, + 685, 721, 673, 709, 634, 696, 742, 661, 705, 743, + 279, 225, 195, 328, 392, 255, 0, 0, 0, 177, + 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, + 217, 0, 223, 702, 737, 658, 704, 237, 277, 243, + 236, 407, 707, 753, 620, 699, 0, 623, 626, 749, + 733, 653, 654, 0, 0, 0, 0, 0, 0, 0, + 677, 686, 718, 671, 0, 0, 0, 0, 0, 0, + 1750, 0, 651, 0, 695, 0, 0, 0, 630, 624, + 0, 0, 0, 0, 675, 0, 0, 0, 633, 0, + 652, 719, 0, 618, 263, 628, 317, 723, 732, 672, + 438, 736, 670, 669, 739, 714, 631, 729, 664, 288, + 629, 285, 191, 205, 0, 662, 327, 366, 372, 728, + 648, 657, 228, 655, 370, 341, 424, 213, 253, 363, + 346, 368, 694, 712, 369, 294, 412, 358, 422, 439, + 440, 235, 321, 430, 404, 436, 448, 206, 232, 335, + 397, 427, 388, 314, 408, 409, 284, 387, 261, 194, + 292, 198, 399, 420, 218, 380, 0, 0, 0, 200, + 418, 396, 311, 281, 282, 199, 0, 362, 239, 259, + 230, 330, 415, 416, 229, 450, 208, 435, 202, 209, + 434, 323, 411, 419, 312, 303, 201, 417, 310, 302, + 287, 249, 269, 356, 297, 357, 270, 319, 318, 320, + 0, 196, 0, 393, 428, 451, 215, 643, 724, 406, + 444, 447, 0, 359, 216, 260, 248, 355, 258, 290, + 443, 445, 446, 214, 353, 266, 334, 423, 252, 431, + 322, 210, 272, 389, 286, 295, 716, 752, 340, 371, + 219, 426, 390, 638, 642, 636, 637, 688, 689, 639, + 744, 745, 746, 720, 632, 0, 640, 641, 0, 726, + 734, 735, 693, 190, 203, 291, 748, 360, 256, 449, + 433, 429, 619, 635, 234, 646, 0, 0, 659, 666, + 667, 679, 681, 682, 683, 684, 692, 700, 701, 703, + 711, 713, 715, 717, 722, 731, 751, 192, 193, 204, + 212, 221, 233, 246, 254, 264, 268, 271, 274, 275, + 278, 283, 300, 305, 306, 307, 308, 324, 325, 326, + 329, 332, 333, 336, 338, 339, 342, 348, 349, 350, + 351, 352, 354, 361, 365, 373, 374, 375, 376, 377, + 378, 379, 383, 384, 385, 386, 394, 398, 413, 414, + 425, 437, 441, 265, 421, 442, 0, 299, 691, 698, + 301, 250, 267, 276, 706, 432, 395, 207, 367, 257, + 197, 224, 211, 231, 245, 247, 280, 309, 315, 344, + 347, 262, 242, 222, 364, 220, 381, 401, 402, 403, + 405, 313, 238, 738, 725, 0, 0, 674, 741, 645, + 663, 750, 665, 668, 708, 625, 687, 331, 660, 0, + 649, 621, 656, 622, 647, 676, 241, 680, 644, 727, + 690, 740, 289, 0, 627, 650, 345, 710, 382, 227, + 298, 296, 410, 251, 244, 240, 226, 273, 304, 343, + 400, 337, 747, 293, 697, 0, 391, 316, 0, 0, + 0, 678, 730, 685, 721, 673, 709, 634, 696, 742, + 661, 705, 743, 279, 225, 195, 328, 392, 255, 0, + 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, + 0, 0, 0, 217, 0, 223, 702, 737, 658, 704, + 237, 277, 243, 236, 407, 707, 753, 620, 699, 0, + 623, 626, 749, 733, 653, 654, 0, 0, 0, 0, + 0, 0, 0, 677, 686, 718, 671, 0, 0, 0, + 0, 0, 0, 1467, 0, 651, 0, 695, 0, 0, + 0, 630, 624, 0, 0, 0, 0, 675, 0, 0, + 0, 633, 0, 652, 719, 0, 618, 263, 628, 317, + 723, 732, 672, 438, 736, 670, 669, 739, 714, 631, + 729, 664, 288, 629, 285, 191, 205, 0, 662, 327, + 366, 372, 728, 648, 657, 228, 655, 370, 341, 424, + 213, 253, 363, 346, 368, 694, 712, 369, 294, 412, + 358, 422, 439, 440, 235, 321, 430, 404, 436, 448, + 206, 232, 335, 397, 427, 388, 314, 408, 409, 284, + 387, 261, 194, 292, 198, 399, 420, 218, 380, 0, + 0, 0, 200, 418, 396, 311, 281, 282, 199, 0, + 362, 239, 259, 230, 330, 415, 416, 229, 450, 208, + 435, 202, 209, 434, 323, 411, 419, 312, 303, 201, + 417, 310, 302, 287, 249, 269, 356, 297, 357, 270, + 319, 318, 320, 0, 196, 0, 393, 428, 451, 215, + 643, 724, 406, 444, 447, 0, 359, 216, 260, 248, + 355, 258, 290, 443, 445, 446, 214, 353, 266, 334, + 423, 252, 431, 322, 210, 272, 389, 286, 295, 716, + 752, 340, 371, 219, 426, 390, 638, 642, 636, 637, + 688, 689, 639, 744, 745, 746, 720, 632, 0, 640, + 641, 0, 726, 734, 735, 693, 190, 203, 291, 748, + 360, 256, 449, 433, 429, 619, 635, 234, 646, 0, + 0, 659, 666, 667, 679, 681, 682, 683, 684, 692, + 700, 701, 703, 711, 713, 715, 717, 722, 731, 751, + 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, + 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, + 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, + 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, + 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, + 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, + 299, 691, 698, 301, 250, 267, 276, 706, 432, 395, + 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, + 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, + 401, 402, 403, 405, 313, 238, 738, 725, 0, 0, + 674, 741, 645, 663, 750, 665, 668, 708, 625, 687, + 331, 660, 0, 649, 621, 656, 622, 647, 676, 241, + 680, 644, 727, 690, 740, 289, 0, 627, 650, 345, + 710, 382, 227, 298, 296, 410, 251, 244, 240, 226, + 273, 304, 343, 400, 337, 747, 293, 697, 0, 391, + 316, 0, 0, 0, 678, 730, 685, 721, 673, 709, + 634, 696, 742, 661, 705, 743, 279, 225, 195, 328, + 392, 255, 69, 0, 0, 177, 178, 179, 0, 0, + 0, 0, 0, 0, 0, 0, 217, 0, 223, 702, + 737, 658, 704, 237, 277, 243, 236, 407, 707, 753, + 620, 699, 0, 623, 626, 749, 733, 653, 654, 0, + 0, 0, 0, 0, 0, 0, 677, 686, 718, 671, + 0, 0, 0, 0, 0, 0, 0, 0, 651, 0, + 695, 0, 0, 0, 630, 624, 0, 0, 0, 0, + 675, 0, 0, 0, 633, 0, 652, 719, 0, 618, + 263, 628, 317, 723, 732, 672, 438, 736, 670, 669, + 739, 714, 631, 729, 664, 288, 629, 285, 191, 205, + 0, 662, 327, 366, 372, 728, 648, 657, 228, 655, + 370, 341, 424, 213, 253, 363, 346, 368, 694, 712, + 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, + 404, 436, 448, 206, 232, 335, 397, 427, 388, 314, + 408, 409, 284, 387, 261, 194, 292, 198, 399, 420, + 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, + 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, + 229, 450, 208, 435, 202, 209, 434, 323, 411, 419, + 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, + 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, + 428, 451, 215, 643, 724, 406, 444, 447, 0, 359, + 216, 260, 248, 355, 258, 290, 443, 445, 446, 214, + 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, + 286, 295, 716, 752, 340, 371, 219, 426, 390, 638, + 642, 636, 637, 688, 689, 639, 744, 745, 746, 720, + 632, 0, 640, 641, 0, 726, 734, 735, 693, 190, + 203, 291, 748, 360, 256, 449, 433, 429, 619, 635, + 234, 646, 0, 0, 659, 666, 667, 679, 681, 682, + 683, 684, 692, 700, 701, 703, 711, 713, 715, 717, + 722, 731, 751, 192, 193, 204, 212, 221, 233, 246, + 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, + 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, + 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, + 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, + 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, + 421, 442, 0, 299, 691, 698, 301, 250, 267, 276, + 706, 432, 395, 207, 367, 257, 197, 224, 211, 231, + 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, + 364, 220, 381, 401, 402, 403, 405, 313, 238, 738, + 725, 0, 0, 674, 741, 645, 663, 750, 665, 668, + 708, 625, 687, 331, 660, 0, 649, 621, 656, 622, + 647, 676, 241, 680, 644, 727, 690, 740, 289, 0, + 627, 650, 345, 710, 382, 227, 298, 296, 410, 251, + 244, 240, 226, 273, 304, 343, 400, 337, 747, 293, + 697, 0, 391, 316, 0, 0, 0, 678, 730, 685, + 721, 673, 709, 634, 696, 742, 661, 705, 743, 279, + 225, 195, 328, 392, 255, 0, 0, 0, 177, 178, + 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, + 0, 223, 702, 737, 658, 704, 237, 277, 243, 236, + 407, 707, 753, 620, 699, 0, 623, 626, 749, 733, + 653, 654, 0, 0, 0, 0, 0, 0, 0, 677, + 686, 718, 671, 0, 0, 0, 0, 0, 0, 0, + 0, 651, 0, 695, 0, 0, 0, 630, 624, 0, + 0, 0, 0, 675, 0, 0, 0, 633, 0, 652, + 719, 0, 618, 263, 628, 317, 723, 732, 672, 438, + 736, 670, 669, 739, 714, 631, 729, 664, 288, 629, + 285, 191, 205, 0, 662, 327, 366, 372, 728, 648, + 657, 228, 655, 370, 341, 424, 213, 253, 363, 346, + 368, 694, 712, 369, 294, 412, 358, 422, 439, 440, + 235, 321, 430, 404, 436, 448, 206, 232, 335, 397, + 427, 388, 314, 408, 409, 284, 387, 261, 194, 292, + 198, 399, 420, 218, 380, 0, 0, 0, 200, 418, + 396, 311, 281, 282, 199, 0, 362, 239, 259, 230, + 330, 415, 416, 229, 450, 208, 435, 202, 209, 434, + 323, 411, 419, 312, 303, 201, 417, 310, 302, 287, + 249, 269, 356, 297, 357, 270, 319, 318, 320, 0, + 196, 0, 393, 428, 451, 215, 643, 724, 406, 444, + 447, 0, 359, 216, 260, 248, 355, 258, 290, 443, + 445, 446, 214, 353, 266, 334, 423, 252, 431, 322, + 210, 272, 389, 286, 295, 716, 752, 340, 371, 219, + 426, 390, 638, 642, 636, 637, 688, 689, 639, 744, + 745, 746, 720, 632, 0, 640, 641, 0, 726, 734, + 735, 693, 190, 203, 291, 748, 360, 256, 449, 433, + 429, 619, 635, 234, 646, 0, 0, 659, 666, 667, + 679, 681, 682, 683, 684, 692, 700, 701, 703, 711, + 713, 715, 717, 722, 731, 751, 192, 193, 204, 212, + 221, 233, 246, 254, 264, 268, 271, 274, 275, 278, + 283, 300, 305, 306, 307, 308, 324, 325, 326, 329, + 332, 333, 336, 338, 339, 342, 348, 349, 350, 351, + 352, 354, 361, 365, 373, 374, 375, 376, 377, 378, + 379, 383, 384, 385, 386, 394, 398, 413, 414, 425, + 437, 441, 265, 421, 442, 0, 299, 691, 698, 301, + 250, 267, 276, 706, 432, 395, 207, 367, 257, 197, + 224, 211, 231, 245, 247, 280, 309, 315, 344, 347, + 262, 242, 222, 364, 220, 381, 401, 402, 403, 405, + 313, 238, 738, 725, 0, 0, 674, 741, 645, 663, + 750, 665, 668, 708, 625, 687, 331, 660, 0, 649, + 621, 656, 622, 647, 676, 241, 680, 644, 727, 690, + 740, 289, 0, 627, 650, 345, 710, 382, 227, 298, + 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, + 337, 747, 293, 697, 0, 391, 316, 0, 0, 0, + 678, 730, 685, 721, 673, 709, 634, 696, 742, 661, + 705, 743, 279, 225, 195, 328, 392, 255, 0, 0, + 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, + 0, 0, 217, 0, 223, 702, 737, 658, 704, 237, + 277, 243, 236, 407, 707, 753, 620, 699, 0, 623, + 626, 749, 733, 653, 654, 0, 0, 0, 0, 0, + 0, 0, 677, 686, 718, 671, 0, 0, 0, 0, + 0, 0, 0, 0, 651, 0, 695, 0, 0, 0, + 630, 624, 0, 0, 0, 0, 675, 0, 0, 0, + 633, 0, 652, 719, 0, 618, 263, 628, 317, 723, + 732, 672, 438, 736, 670, 669, 739, 714, 631, 729, + 664, 288, 629, 285, 191, 205, 0, 662, 327, 366, + 372, 728, 648, 657, 228, 655, 370, 341, 424, 213, + 253, 363, 346, 368, 694, 712, 369, 294, 412, 358, + 422, 439, 440, 235, 321, 430, 404, 436, 448, 206, + 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, + 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, + 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, + 239, 259, 230, 330, 415, 416, 229, 450, 208, 435, + 202, 755, 434, 323, 411, 419, 312, 303, 201, 417, + 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, + 318, 320, 0, 196, 0, 393, 428, 451, 215, 643, + 724, 406, 444, 447, 0, 359, 216, 260, 248, 355, + 258, 290, 443, 445, 446, 214, 353, 266, 334, 423, + 252, 431, 617, 754, 611, 610, 286, 295, 716, 752, + 340, 371, 219, 426, 390, 638, 642, 636, 637, 688, + 689, 639, 744, 745, 746, 720, 632, 0, 640, 641, + 0, 726, 734, 735, 693, 190, 203, 291, 748, 360, + 256, 449, 433, 429, 619, 635, 234, 646, 0, 0, + 659, 666, 667, 679, 681, 682, 683, 684, 692, 700, + 701, 703, 711, 713, 715, 717, 722, 731, 751, 192, + 193, 204, 212, 221, 233, 246, 254, 264, 268, 271, + 274, 275, 278, 283, 300, 305, 306, 307, 308, 324, + 325, 326, 329, 332, 333, 336, 338, 339, 342, 348, + 349, 350, 351, 352, 354, 361, 365, 373, 374, 375, + 376, 377, 378, 379, 383, 384, 385, 386, 394, 398, + 413, 414, 425, 437, 441, 265, 421, 442, 0, 299, + 691, 698, 301, 250, 267, 276, 706, 432, 395, 207, + 367, 257, 197, 224, 211, 231, 245, 247, 280, 309, + 315, 344, 347, 262, 242, 222, 364, 220, 381, 401, + 402, 403, 405, 313, 238, 738, 725, 0, 0, 674, + 741, 645, 663, 750, 665, 668, 708, 625, 687, 331, + 660, 0, 649, 621, 656, 622, 647, 676, 241, 680, + 644, 727, 690, 740, 289, 0, 627, 650, 345, 710, + 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, + 304, 343, 400, 337, 747, 293, 697, 0, 391, 316, + 0, 0, 0, 678, 730, 685, 721, 673, 709, 634, + 696, 742, 661, 705, 743, 279, 225, 195, 328, 392, + 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, + 0, 0, 0, 0, 0, 217, 0, 223, 702, 737, + 658, 704, 237, 277, 243, 236, 407, 707, 753, 620, + 699, 0, 623, 626, 749, 733, 653, 654, 0, 0, + 0, 0, 0, 0, 0, 677, 686, 718, 671, 0, + 0, 0, 0, 0, 0, 0, 0, 651, 0, 695, + 0, 0, 0, 630, 624, 0, 0, 0, 0, 675, + 0, 0, 0, 633, 0, 652, 719, 0, 618, 263, + 628, 317, 723, 732, 672, 438, 736, 670, 669, 739, + 714, 631, 729, 664, 288, 629, 285, 191, 205, 0, + 662, 327, 366, 372, 728, 648, 657, 228, 655, 370, + 341, 424, 213, 253, 363, 346, 368, 694, 712, 369, + 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, + 436, 448, 206, 232, 335, 397, 427, 388, 314, 408, + 409, 284, 387, 261, 194, 292, 198, 399, 1092, 218, + 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, + 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, + 450, 208, 435, 202, 755, 434, 323, 411, 419, 312, + 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, + 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, + 451, 215, 643, 724, 406, 444, 447, 0, 359, 216, + 260, 248, 355, 258, 290, 443, 445, 446, 214, 353, + 266, 334, 423, 252, 431, 617, 754, 611, 610, 286, + 295, 716, 752, 340, 371, 219, 426, 390, 638, 642, + 636, 637, 688, 689, 639, 744, 745, 746, 720, 632, + 0, 640, 641, 0, 726, 734, 735, 693, 190, 203, + 291, 748, 360, 256, 449, 433, 429, 619, 635, 234, + 646, 0, 0, 659, 666, 667, 679, 681, 682, 683, + 684, 692, 700, 701, 703, 711, 713, 715, 717, 722, + 731, 751, 192, 193, 204, 212, 221, 233, 246, 254, + 264, 268, 271, 274, 275, 278, 283, 300, 305, 306, + 307, 308, 324, 325, 326, 329, 332, 333, 336, 338, + 339, 342, 348, 349, 350, 351, 352, 354, 361, 365, + 373, 374, 375, 376, 377, 378, 379, 383, 384, 385, + 386, 394, 398, 413, 414, 425, 437, 441, 265, 421, + 442, 0, 299, 691, 698, 301, 250, 267, 276, 706, + 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, + 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, + 220, 381, 401, 402, 403, 405, 313, 238, 738, 725, + 0, 0, 674, 741, 645, 663, 750, 665, 668, 708, + 625, 687, 331, 660, 0, 649, 621, 656, 622, 647, + 676, 241, 680, 644, 727, 690, 740, 289, 0, 627, + 650, 345, 710, 382, 227, 298, 296, 410, 251, 244, + 240, 226, 273, 304, 343, 400, 337, 747, 293, 697, + 0, 391, 316, 0, 0, 0, 678, 730, 685, 721, + 673, 709, 634, 696, 742, 661, 705, 743, 279, 225, + 195, 328, 392, 255, 0, 0, 0, 177, 178, 179, + 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, + 223, 702, 737, 658, 704, 237, 277, 243, 236, 407, + 707, 753, 620, 699, 0, 623, 626, 749, 733, 653, + 654, 0, 0, 0, 0, 0, 0, 0, 677, 686, + 718, 671, 0, 0, 0, 0, 0, 0, 0, 0, + 651, 0, 695, 0, 0, 0, 630, 624, 0, 0, + 0, 0, 675, 0, 0, 0, 633, 0, 652, 719, + 0, 618, 263, 628, 317, 723, 732, 672, 438, 736, + 670, 669, 739, 714, 631, 729, 664, 288, 629, 285, + 191, 205, 0, 662, 327, 366, 372, 728, 648, 657, + 228, 655, 370, 341, 424, 213, 253, 363, 346, 368, + 694, 712, 369, 294, 412, 358, 422, 439, 440, 235, + 321, 430, 404, 436, 448, 206, 232, 335, 397, 427, + 388, 314, 408, 409, 284, 387, 261, 194, 292, 198, + 399, 608, 218, 380, 0, 0, 0, 200, 418, 396, + 311, 281, 282, 199, 0, 362, 239, 259, 230, 330, + 415, 416, 229, 450, 208, 435, 202, 755, 434, 323, + 411, 419, 312, 303, 201, 417, 310, 302, 287, 249, + 269, 356, 297, 357, 270, 319, 318, 320, 0, 196, + 0, 393, 428, 451, 215, 643, 724, 406, 444, 447, + 0, 359, 216, 260, 248, 355, 258, 290, 443, 445, + 446, 214, 353, 266, 334, 423, 252, 431, 617, 754, + 611, 610, 286, 295, 716, 752, 340, 371, 219, 426, + 390, 638, 642, 636, 637, 688, 689, 639, 744, 745, + 746, 720, 632, 0, 640, 641, 0, 726, 734, 735, + 693, 190, 203, 291, 748, 360, 256, 449, 433, 429, + 619, 635, 234, 646, 0, 0, 659, 666, 667, 679, + 681, 682, 683, 684, 692, 700, 701, 703, 711, 713, + 715, 717, 722, 731, 751, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 691, 698, 301, 250, + 267, 276, 706, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 0, 1394, 0, 511, 0, 0, 0, + 241, 0, 510, 0, 0, 0, 289, 0, 0, 1395, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 554, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 545, 546, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 69, 0, 0, 177, 178, 179, 532, + 531, 534, 535, 536, 537, 0, 0, 217, 533, 223, + 538, 539, 540, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 508, 525, 0, 553, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 522, 523, 598, 0, 0, + 0, 568, 0, 524, 0, 0, 517, 518, 520, 519, + 521, 526, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 567, 0, 0, 438, 0, 0, + 565, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 448, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 450, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 451, 215, 0, 0, 406, 444, 447, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 214, 353, 266, 334, 423, 252, 431, 322, 210, 272, + 389, 286, 295, 0, 0, 340, 371, 219, 426, 390, + 555, 566, 561, 562, 559, 560, 0, 558, 557, 556, + 569, 547, 548, 549, 550, 552, 0, 563, 564, 551, + 190, 203, 291, 0, 360, 256, 449, 433, 429, 0, + 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, + 246, 254, 264, 268, 271, 274, 275, 278, 283, 300, + 305, 306, 307, 308, 324, 325, 326, 329, 332, 333, + 336, 338, 339, 342, 348, 349, 350, 351, 352, 354, + 361, 365, 373, 374, 375, 376, 377, 378, 379, 383, + 384, 385, 386, 394, 398, 413, 414, 425, 437, 441, + 265, 421, 442, 0, 299, 0, 0, 301, 250, 267, + 276, 0, 432, 395, 207, 367, 257, 197, 224, 211, + 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, + 222, 364, 220, 381, 401, 402, 403, 405, 313, 238, + 331, 0, 0, 0, 0, 511, 0, 0, 0, 241, + 0, 510, 0, 0, 0, 289, 0, 0, 0, 345, + 0, 382, 227, 298, 296, 410, 251, 244, 240, 226, + 273, 304, 343, 400, 337, 554, 293, 0, 0, 391, + 316, 0, 0, 0, 0, 0, 545, 546, 0, 0, + 0, 0, 0, 0, 1506, 0, 279, 225, 195, 328, + 392, 255, 69, 0, 0, 177, 178, 179, 532, 531, + 534, 535, 536, 537, 0, 0, 217, 533, 223, 538, + 539, 540, 1507, 237, 277, 243, 236, 407, 0, 0, + 0, 508, 525, 0, 553, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 522, 523, 0, 0, 0, 0, + 568, 0, 524, 0, 0, 517, 518, 520, 519, 521, + 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 263, 0, 317, 567, 0, 0, 438, 0, 0, 565, + 0, 0, 0, 0, 0, 288, 0, 285, 191, 205, + 0, 0, 327, 366, 372, 0, 0, 0, 228, 0, + 370, 341, 424, 213, 253, 363, 346, 368, 0, 0, + 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, + 404, 436, 448, 206, 232, 335, 397, 427, 388, 314, + 408, 409, 284, 387, 261, 194, 292, 198, 399, 420, + 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, + 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, + 229, 450, 208, 435, 202, 209, 434, 323, 411, 419, + 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, + 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, + 428, 451, 215, 0, 0, 406, 444, 447, 0, 359, + 216, 260, 248, 355, 258, 290, 443, 445, 446, 214, + 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, + 286, 295, 0, 0, 340, 371, 219, 426, 390, 555, + 566, 561, 562, 559, 560, 0, 558, 557, 556, 569, + 547, 548, 549, 550, 552, 0, 563, 564, 551, 190, + 203, 291, 0, 360, 256, 449, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, - 305, 306, 307, 323, 324, 325, 328, 331, 332, 335, - 337, 338, 341, 347, 348, 349, 350, 351, 353, 360, - 364, 372, 373, 374, 375, 376, 377, 378, 382, 383, - 384, 385, 393, 397, 412, 413, 424, 435, 439, 264, - 420, 440, 0, 298, 0, 0, 300, 250, 266, 275, - 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, - 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, - 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, - 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, - 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, - 303, 342, 399, 336, 552, 292, 0, 0, 390, 315, - 0, 0, 0, 0, 0, 543, 544, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, - 254, 69, 0, 0, 177, 178, 179, 530, 529, 532, - 533, 534, 535, 0, 0, 217, 531, 223, 536, 537, - 538, 0, 237, 276, 243, 236, 406, 0, 0, 0, - 0, 523, 0, 551, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 520, 521, 0, 0, 0, 0, 566, - 0, 522, 0, 0, 515, 516, 518, 517, 519, 524, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, - 0, 316, 565, 0, 0, 436, 0, 0, 563, 0, - 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, - 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, - 340, 423, 213, 252, 362, 345, 367, 0, 0, 368, - 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, - 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, - 408, 283, 386, 260, 194, 291, 198, 398, 419, 218, - 379, 0, 0, 0, 200, 417, 395, 310, 280, 281, - 199, 0, 361, 239, 258, 230, 329, 414, 415, 229, - 448, 208, 433, 202, 209, 432, 322, 410, 418, 311, - 302, 201, 416, 309, 301, 286, 249, 268, 355, 296, - 356, 269, 318, 317, 319, 0, 196, 0, 392, 427, - 449, 215, 0, 0, 405, 442, 445, 0, 358, 216, - 259, 248, 354, 257, 289, 441, 443, 444, 214, 352, - 265, 333, 422, 321, 210, 271, 388, 285, 294, 0, - 0, 339, 370, 219, 425, 389, 553, 564, 559, 560, - 557, 558, 0, 556, 555, 554, 567, 545, 546, 547, - 548, 550, 0, 561, 562, 549, 190, 203, 290, 0, - 359, 255, 447, 431, 428, 0, 0, 234, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 204, 212, 221, 233, 246, 253, 263, 267, - 270, 273, 274, 277, 282, 299, 304, 305, 306, 307, - 323, 324, 325, 328, 331, 332, 335, 337, 338, 341, - 347, 348, 349, 350, 351, 353, 360, 364, 372, 373, - 374, 375, 376, 377, 378, 382, 383, 384, 385, 393, - 397, 412, 413, 424, 435, 439, 264, 420, 440, 0, - 298, 0, 0, 300, 250, 266, 275, 0, 430, 394, - 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, - 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, - 400, 401, 402, 404, 312, 238, 330, 0, 0, 0, + 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, + 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, + 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, + 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, + 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, + 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, + 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, + 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, + 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, + 0, 0, 0, 0, 511, 0, 0, 0, 241, 0, + 510, 0, 0, 0, 289, 0, 0, 0, 345, 0, + 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, + 304, 343, 400, 337, 554, 293, 0, 0, 391, 316, + 0, 0, 0, 0, 0, 545, 546, 0, 0, 0, + 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, + 255, 69, 0, 586, 177, 178, 179, 532, 531, 534, + 535, 536, 537, 0, 0, 217, 533, 223, 538, 539, + 540, 0, 237, 277, 243, 236, 407, 0, 0, 0, + 508, 525, 0, 553, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 522, 523, 0, 0, 0, 0, 568, + 0, 524, 0, 0, 517, 518, 520, 519, 521, 526, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, + 0, 317, 567, 0, 0, 438, 0, 0, 565, 0, + 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, + 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, + 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, + 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, + 436, 448, 206, 232, 335, 397, 427, 388, 314, 408, + 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, + 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, + 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, + 450, 208, 435, 202, 209, 434, 323, 411, 419, 312, + 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, + 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, + 451, 215, 0, 0, 406, 444, 447, 0, 359, 216, + 260, 248, 355, 258, 290, 443, 445, 446, 214, 353, + 266, 334, 423, 252, 431, 322, 210, 272, 389, 286, + 295, 0, 0, 340, 371, 219, 426, 390, 555, 566, + 561, 562, 559, 560, 0, 558, 557, 556, 569, 547, + 548, 549, 550, 552, 0, 563, 564, 551, 190, 203, + 291, 0, 360, 256, 449, 433, 429, 0, 0, 234, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 254, + 264, 268, 271, 274, 275, 278, 283, 300, 305, 306, + 307, 308, 324, 325, 326, 329, 332, 333, 336, 338, + 339, 342, 348, 349, 350, 351, 352, 354, 361, 365, + 373, 374, 375, 376, 377, 378, 379, 383, 384, 385, + 386, 394, 398, 413, 414, 425, 437, 441, 265, 421, + 442, 0, 299, 0, 0, 301, 250, 267, 276, 0, + 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, + 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, + 220, 381, 401, 402, 403, 405, 313, 238, 331, 0, + 0, 0, 0, 511, 0, 0, 0, 241, 0, 510, + 0, 0, 0, 289, 0, 0, 0, 345, 0, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 554, 293, 0, 0, 391, 316, 0, + 0, 0, 0, 0, 545, 546, 0, 0, 0, 0, + 0, 0, 0, 0, 279, 225, 195, 328, 392, 255, + 69, 0, 0, 177, 178, 179, 532, 531, 534, 535, + 536, 537, 0, 0, 217, 533, 223, 538, 539, 540, + 0, 237, 277, 243, 236, 407, 0, 0, 0, 508, + 525, 0, 553, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 522, 523, 598, 0, 0, 0, 568, 0, + 524, 0, 0, 517, 518, 520, 519, 521, 526, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, + 317, 567, 0, 0, 438, 0, 0, 565, 0, 0, + 0, 0, 0, 288, 0, 285, 191, 205, 0, 0, + 327, 366, 372, 0, 0, 0, 228, 0, 370, 341, + 424, 213, 253, 363, 346, 368, 0, 0, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 448, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 450, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 451, + 215, 0, 0, 406, 444, 447, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 214, 353, 266, + 334, 423, 252, 431, 322, 210, 272, 389, 286, 295, + 0, 0, 340, 371, 219, 426, 390, 555, 566, 561, + 562, 559, 560, 0, 558, 557, 556, 569, 547, 548, + 549, 550, 552, 0, 563, 564, 551, 190, 203, 291, + 0, 360, 256, 449, 433, 429, 0, 0, 234, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 193, 204, 212, 221, 233, 246, 254, 264, + 268, 271, 274, 275, 278, 283, 300, 305, 306, 307, + 308, 324, 325, 326, 329, 332, 333, 336, 338, 339, + 342, 348, 349, 350, 351, 352, 354, 361, 365, 373, + 374, 375, 376, 377, 378, 379, 383, 384, 385, 386, + 394, 398, 413, 414, 425, 437, 441, 265, 421, 442, + 0, 299, 0, 0, 301, 250, 267, 276, 0, 432, + 395, 207, 367, 257, 197, 224, 211, 231, 245, 247, + 280, 309, 315, 344, 347, 262, 242, 222, 364, 220, + 381, 401, 402, 403, 405, 313, 238, 331, 0, 0, + 0, 0, 511, 0, 0, 0, 241, 0, 510, 0, + 0, 0, 289, 0, 0, 0, 345, 0, 382, 227, + 298, 296, 410, 251, 244, 240, 226, 273, 304, 343, + 400, 337, 554, 293, 0, 0, 391, 316, 0, 0, + 0, 0, 0, 545, 546, 0, 0, 0, 0, 0, + 0, 0, 0, 279, 225, 195, 328, 392, 255, 69, + 0, 0, 177, 178, 179, 532, 1412, 534, 535, 536, + 537, 0, 0, 217, 533, 223, 538, 539, 540, 0, + 237, 277, 243, 236, 407, 0, 0, 0, 508, 525, + 0, 553, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 522, 523, 598, 0, 0, 0, 568, 0, 524, + 0, 0, 517, 518, 520, 519, 521, 526, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 263, 0, 317, + 567, 0, 0, 438, 0, 0, 565, 0, 0, 0, + 0, 0, 288, 0, 285, 191, 205, 0, 0, 327, + 366, 372, 0, 0, 0, 228, 0, 370, 341, 424, + 213, 253, 363, 346, 368, 0, 0, 369, 294, 412, + 358, 422, 439, 440, 235, 321, 430, 404, 436, 448, + 206, 232, 335, 397, 427, 388, 314, 408, 409, 284, + 387, 261, 194, 292, 198, 399, 420, 218, 380, 0, + 0, 0, 200, 418, 396, 311, 281, 282, 199, 0, + 362, 239, 259, 230, 330, 415, 416, 229, 450, 208, + 435, 202, 209, 434, 323, 411, 419, 312, 303, 201, + 417, 310, 302, 287, 249, 269, 356, 297, 357, 270, + 319, 318, 320, 0, 196, 0, 393, 428, 451, 215, + 0, 0, 406, 444, 447, 0, 359, 216, 260, 248, + 355, 258, 290, 443, 445, 446, 214, 353, 266, 334, + 423, 252, 431, 322, 210, 272, 389, 286, 295, 0, + 0, 340, 371, 219, 426, 390, 555, 566, 561, 562, + 559, 560, 0, 558, 557, 556, 569, 547, 548, 549, + 550, 552, 0, 563, 564, 551, 190, 203, 291, 0, + 360, 256, 449, 433, 429, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, + 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, + 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, + 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, + 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, + 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, + 299, 0, 0, 301, 250, 267, 276, 0, 432, 395, + 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, + 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, + 401, 402, 403, 405, 313, 238, 331, 0, 0, 0, + 0, 511, 0, 0, 0, 241, 0, 510, 0, 0, + 0, 289, 0, 0, 0, 345, 0, 382, 227, 298, + 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, + 337, 554, 293, 0, 0, 391, 316, 0, 0, 0, + 0, 0, 545, 546, 0, 0, 0, 0, 0, 0, + 0, 0, 279, 225, 195, 328, 392, 255, 69, 0, + 0, 177, 178, 179, 532, 1409, 534, 535, 536, 537, + 0, 0, 217, 533, 223, 538, 539, 540, 0, 237, + 277, 243, 236, 407, 0, 0, 0, 508, 525, 0, + 553, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 522, 523, 598, 0, 0, 0, 568, 0, 524, 0, + 0, 517, 518, 520, 519, 521, 526, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 263, 0, 317, 567, + 0, 0, 438, 0, 0, 565, 0, 0, 0, 0, + 0, 288, 0, 285, 191, 205, 0, 0, 327, 366, + 372, 0, 0, 0, 228, 0, 370, 341, 424, 213, + 253, 363, 346, 368, 0, 0, 369, 294, 412, 358, + 422, 439, 440, 235, 321, 430, 404, 436, 448, 206, + 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, + 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, + 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, + 239, 259, 230, 330, 415, 416, 229, 450, 208, 435, + 202, 209, 434, 323, 411, 419, 312, 303, 201, 417, + 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, + 318, 320, 0, 196, 0, 393, 428, 451, 215, 0, + 0, 406, 444, 447, 0, 359, 216, 260, 248, 355, + 258, 290, 443, 445, 446, 214, 353, 266, 334, 423, + 252, 431, 322, 210, 272, 389, 286, 295, 0, 0, + 340, 371, 219, 426, 390, 555, 566, 561, 562, 559, + 560, 0, 558, 557, 556, 569, 547, 548, 549, 550, + 552, 0, 563, 564, 551, 190, 203, 291, 0, 360, + 256, 449, 433, 429, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 204, 212, 221, 233, 246, 254, 264, 268, 271, + 274, 275, 278, 283, 300, 305, 306, 307, 308, 324, + 325, 326, 329, 332, 333, 336, 338, 339, 342, 348, + 349, 350, 351, 352, 354, 361, 365, 373, 374, 375, + 376, 377, 378, 379, 383, 384, 385, 386, 394, 398, + 413, 414, 425, 437, 441, 265, 421, 442, 0, 299, + 0, 0, 301, 250, 267, 276, 0, 432, 395, 207, + 367, 257, 197, 224, 211, 231, 245, 247, 280, 309, + 315, 344, 347, 262, 242, 222, 364, 220, 381, 401, + 402, 403, 405, 313, 238, 579, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 331, 0, + 0, 0, 0, 511, 0, 0, 0, 241, 0, 510, + 0, 0, 0, 289, 0, 0, 0, 345, 0, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 554, 293, 0, 0, 391, 316, 0, + 0, 0, 0, 0, 545, 546, 0, 0, 0, 0, + 0, 0, 0, 0, 279, 225, 195, 328, 392, 255, + 69, 0, 0, 177, 178, 179, 532, 531, 534, 535, + 536, 537, 0, 0, 217, 533, 223, 538, 539, 540, + 0, 237, 277, 243, 236, 407, 0, 0, 0, 508, + 525, 0, 553, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 522, 523, 0, 0, 0, 0, 568, 0, + 524, 0, 0, 517, 518, 520, 519, 521, 526, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, + 317, 567, 0, 0, 438, 0, 0, 565, 0, 0, + 0, 0, 0, 288, 0, 285, 191, 205, 0, 0, + 327, 366, 372, 0, 0, 0, 228, 0, 370, 341, + 424, 213, 253, 363, 346, 368, 0, 0, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 448, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 450, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 451, + 215, 0, 0, 406, 444, 447, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 214, 353, 266, + 334, 423, 252, 431, 322, 210, 272, 389, 286, 295, + 0, 0, 340, 371, 219, 426, 390, 555, 566, 561, + 562, 559, 560, 0, 558, 557, 556, 569, 547, 548, + 549, 550, 552, 0, 563, 564, 551, 190, 203, 291, + 0, 360, 256, 449, 433, 429, 0, 0, 234, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 193, 204, 212, 221, 233, 246, 254, 264, + 268, 271, 274, 275, 278, 283, 300, 305, 306, 307, + 308, 324, 325, 326, 329, 332, 333, 336, 338, 339, + 342, 348, 349, 350, 351, 352, 354, 361, 365, 373, + 374, 375, 376, 377, 378, 379, 383, 384, 385, 386, + 394, 398, 413, 414, 425, 437, 441, 265, 421, 442, + 0, 299, 0, 0, 301, 250, 267, 276, 0, 432, + 395, 207, 367, 257, 197, 224, 211, 231, 245, 247, + 280, 309, 315, 344, 347, 262, 242, 222, 364, 220, + 381, 401, 402, 403, 405, 313, 238, 331, 0, 0, + 0, 0, 511, 0, 0, 0, 241, 0, 510, 0, + 0, 0, 289, 0, 0, 0, 345, 0, 382, 227, + 298, 296, 410, 251, 244, 240, 226, 273, 304, 343, + 400, 337, 554, 293, 0, 0, 391, 316, 0, 0, + 0, 0, 0, 545, 546, 0, 0, 0, 0, 0, + 0, 0, 0, 279, 225, 195, 328, 392, 255, 69, + 0, 0, 177, 178, 179, 532, 531, 534, 535, 536, + 537, 0, 0, 217, 533, 223, 538, 539, 540, 0, + 237, 277, 243, 236, 407, 0, 0, 0, 508, 525, + 0, 553, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 522, 523, 0, 0, 0, 0, 568, 0, 524, + 0, 0, 517, 518, 520, 519, 521, 526, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 263, 0, 317, + 567, 0, 0, 438, 0, 0, 565, 0, 0, 0, + 0, 0, 288, 0, 285, 191, 205, 0, 0, 327, + 366, 372, 0, 0, 0, 228, 0, 370, 341, 424, + 213, 253, 363, 346, 368, 0, 0, 369, 294, 412, + 358, 422, 439, 440, 235, 321, 430, 404, 436, 448, + 206, 232, 335, 397, 427, 388, 314, 408, 409, 284, + 387, 261, 194, 292, 198, 399, 420, 218, 380, 0, + 0, 0, 200, 418, 396, 311, 281, 282, 199, 0, + 362, 239, 259, 230, 330, 415, 416, 229, 450, 208, + 435, 202, 209, 434, 323, 411, 419, 312, 303, 201, + 417, 310, 302, 287, 249, 269, 356, 297, 357, 270, + 319, 318, 320, 0, 196, 0, 393, 428, 451, 215, + 0, 0, 406, 444, 447, 0, 359, 216, 260, 248, + 355, 258, 290, 443, 445, 446, 214, 353, 266, 334, + 423, 252, 431, 322, 210, 272, 389, 286, 295, 0, + 0, 340, 371, 219, 426, 390, 555, 566, 561, 562, + 559, 560, 0, 558, 557, 556, 569, 547, 548, 549, + 550, 552, 0, 563, 564, 551, 190, 203, 291, 0, + 360, 256, 449, 433, 429, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, + 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, + 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, + 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, + 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, + 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, + 299, 0, 0, 301, 250, 267, 276, 0, 432, 395, + 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, + 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, + 401, 402, 403, 405, 313, 238, 331, 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, - 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, - 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, - 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, + 0, 289, 0, 0, 0, 345, 0, 382, 227, 298, + 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, + 337, 554, 293, 0, 0, 391, 316, 0, 0, 0, + 0, 0, 545, 546, 0, 0, 0, 0, 0, 0, + 0, 0, 279, 225, 195, 328, 392, 255, 69, 0, + 0, 177, 178, 179, 532, 531, 534, 535, 536, 537, + 0, 0, 217, 533, 223, 538, 539, 540, 0, 237, + 277, 243, 236, 407, 0, 0, 0, 0, 525, 0, + 553, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 522, 523, 0, 0, 0, 0, 568, 0, 524, 0, + 0, 517, 518, 520, 519, 521, 526, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 263, 0, 317, 567, + 0, 0, 438, 0, 0, 565, 0, 0, 0, 0, + 0, 288, 0, 285, 191, 205, 0, 0, 327, 366, + 372, 0, 0, 0, 228, 0, 370, 341, 424, 213, + 253, 363, 346, 368, 2166, 0, 369, 294, 412, 358, + 422, 439, 440, 235, 321, 430, 404, 436, 448, 206, + 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, + 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, + 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, + 239, 259, 230, 330, 415, 416, 229, 450, 208, 435, + 202, 209, 434, 323, 411, 419, 312, 303, 201, 417, + 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, + 318, 320, 0, 196, 0, 393, 428, 451, 215, 0, + 0, 406, 444, 447, 0, 359, 216, 260, 248, 355, + 258, 290, 443, 445, 446, 214, 353, 266, 334, 423, + 252, 431, 322, 210, 272, 389, 286, 295, 0, 0, + 340, 371, 219, 426, 390, 555, 566, 561, 562, 559, + 560, 0, 558, 557, 556, 569, 547, 548, 549, 550, + 552, 0, 563, 564, 551, 190, 203, 291, 0, 360, + 256, 449, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 278, 225, 195, 327, 391, 254, 0, 0, - 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, - 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 966, 965, 975, 976, - 968, 969, 970, 971, 972, 973, 974, 967, 0, 0, - 977, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 262, 0, 316, 0, - 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, - 0, 287, 0, 284, 191, 205, 0, 0, 326, 365, - 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, - 252, 362, 345, 367, 0, 0, 368, 293, 411, 357, - 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, - 232, 334, 396, 426, 387, 313, 407, 408, 283, 386, - 260, 194, 291, 198, 398, 419, 218, 379, 0, 0, - 0, 200, 417, 395, 310, 280, 281, 199, 0, 361, - 239, 258, 230, 329, 414, 415, 229, 448, 208, 433, - 202, 209, 432, 322, 410, 418, 311, 302, 201, 416, - 309, 301, 286, 249, 268, 355, 296, 356, 269, 318, - 317, 319, 0, 196, 0, 392, 427, 449, 215, 0, - 0, 405, 442, 445, 0, 358, 216, 259, 248, 354, - 257, 289, 441, 443, 444, 214, 352, 265, 333, 422, - 321, 210, 271, 388, 285, 294, 0, 0, 339, 370, - 219, 425, 389, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 203, 290, 0, 359, 255, 447, - 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 204, 212, 221, 233, 246, 254, 264, 268, 271, + 274, 275, 278, 283, 300, 305, 306, 307, 308, 324, + 325, 326, 329, 332, 333, 336, 338, 339, 342, 348, + 349, 350, 351, 352, 354, 361, 365, 373, 374, 375, + 376, 377, 378, 379, 383, 384, 385, 386, 394, 398, + 413, 414, 425, 437, 441, 265, 421, 442, 0, 299, + 0, 0, 301, 250, 267, 276, 0, 432, 395, 207, + 367, 257, 197, 224, 211, 231, 245, 247, 280, 309, + 315, 344, 347, 262, 242, 222, 364, 220, 381, 401, + 402, 403, 405, 313, 238, 331, 0, 0, 0, 0, + 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, + 289, 0, 0, 0, 345, 0, 382, 227, 298, 296, + 410, 251, 244, 240, 226, 273, 304, 343, 400, 337, + 554, 293, 0, 0, 391, 316, 0, 0, 0, 0, + 0, 545, 546, 0, 0, 0, 0, 0, 0, 0, + 0, 279, 225, 195, 328, 392, 255, 69, 0, 586, + 177, 178, 179, 532, 531, 534, 535, 536, 537, 0, + 0, 217, 533, 223, 538, 539, 540, 0, 237, 277, + 243, 236, 407, 0, 0, 0, 0, 525, 0, 553, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 522, + 523, 0, 0, 0, 0, 568, 0, 524, 0, 0, + 517, 518, 520, 519, 521, 526, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 263, 0, 317, 567, 0, + 0, 438, 0, 0, 565, 0, 0, 0, 0, 0, + 288, 0, 285, 191, 205, 0, 0, 327, 366, 372, + 0, 0, 0, 228, 0, 370, 341, 424, 213, 253, + 363, 346, 368, 0, 0, 369, 294, 412, 358, 422, + 439, 440, 235, 321, 430, 404, 436, 448, 206, 232, + 335, 397, 427, 388, 314, 408, 409, 284, 387, 261, + 194, 292, 198, 399, 420, 218, 380, 0, 0, 0, + 200, 418, 396, 311, 281, 282, 199, 0, 362, 239, + 259, 230, 330, 415, 416, 229, 450, 208, 435, 202, + 209, 434, 323, 411, 419, 312, 303, 201, 417, 310, + 302, 287, 249, 269, 356, 297, 357, 270, 319, 318, + 320, 0, 196, 0, 393, 428, 451, 215, 0, 0, + 406, 444, 447, 0, 359, 216, 260, 248, 355, 258, + 290, 443, 445, 446, 214, 353, 266, 334, 423, 252, + 431, 322, 210, 272, 389, 286, 295, 0, 0, 340, + 371, 219, 426, 390, 555, 566, 561, 562, 559, 560, + 0, 558, 557, 556, 569, 547, 548, 549, 550, 552, + 0, 563, 564, 551, 190, 203, 291, 0, 360, 256, + 449, 433, 429, 0, 0, 234, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, + 204, 212, 221, 233, 246, 254, 264, 268, 271, 274, + 275, 278, 283, 300, 305, 306, 307, 308, 324, 325, + 326, 329, 332, 333, 336, 338, 339, 342, 348, 349, + 350, 351, 352, 354, 361, 365, 373, 374, 375, 376, + 377, 378, 379, 383, 384, 385, 386, 394, 398, 413, + 414, 425, 437, 441, 265, 421, 442, 0, 299, 0, + 0, 301, 250, 267, 276, 0, 432, 395, 207, 367, + 257, 197, 224, 211, 231, 245, 247, 280, 309, 315, + 344, 347, 262, 242, 222, 364, 220, 381, 401, 402, + 403, 405, 313, 238, 331, 0, 0, 0, 0, 0, + 0, 0, 0, 241, 0, 0, 0, 0, 0, 289, + 0, 0, 0, 345, 0, 382, 227, 298, 296, 410, + 251, 244, 240, 226, 273, 304, 343, 400, 337, 554, + 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, + 545, 546, 0, 0, 0, 0, 0, 0, 0, 0, + 279, 225, 195, 328, 392, 255, 69, 0, 0, 177, + 178, 179, 532, 531, 534, 535, 536, 537, 0, 0, + 217, 533, 223, 538, 539, 540, 0, 237, 277, 243, + 236, 407, 0, 0, 0, 0, 525, 0, 553, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 522, 523, + 0, 0, 0, 0, 568, 0, 524, 0, 0, 517, + 518, 520, 519, 521, 526, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 263, 0, 317, 567, 0, 0, + 438, 0, 0, 565, 0, 0, 0, 0, 0, 288, + 0, 285, 191, 205, 0, 0, 327, 366, 372, 0, + 0, 0, 228, 0, 370, 341, 424, 213, 253, 363, + 346, 368, 0, 0, 369, 294, 412, 358, 422, 439, + 440, 235, 321, 430, 404, 436, 448, 206, 232, 335, + 397, 427, 388, 314, 408, 409, 284, 387, 261, 194, + 292, 198, 399, 420, 218, 380, 0, 0, 0, 200, + 418, 396, 311, 281, 282, 199, 0, 362, 239, 259, + 230, 330, 415, 416, 229, 450, 208, 435, 202, 209, + 434, 323, 411, 419, 312, 303, 201, 417, 310, 302, + 287, 249, 269, 356, 297, 357, 270, 319, 318, 320, + 0, 196, 0, 393, 428, 451, 215, 0, 0, 406, + 444, 447, 0, 359, 216, 260, 248, 355, 258, 290, + 443, 445, 446, 214, 353, 266, 334, 423, 252, 431, + 322, 210, 272, 389, 286, 295, 0, 0, 340, 371, + 219, 426, 390, 555, 566, 561, 562, 559, 560, 0, + 558, 557, 556, 569, 547, 548, 549, 550, 552, 0, + 563, 564, 551, 190, 203, 291, 0, 360, 256, 449, + 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, - 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, - 328, 331, 332, 335, 337, 338, 341, 347, 348, 349, - 350, 351, 353, 360, 364, 372, 373, 374, 375, 376, - 377, 378, 382, 383, 384, 385, 393, 397, 412, 413, - 424, 435, 439, 264, 420, 440, 0, 298, 0, 0, - 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, - 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, - 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, - 404, 312, 238, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 797, 0, 0, 0, 0, 288, 0, - 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, - 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, - 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 225, 195, 327, 391, 254, 0, 0, 0, 177, 178, + 212, 221, 233, 246, 254, 264, 268, 271, 274, 275, + 278, 283, 300, 305, 306, 307, 308, 324, 325, 326, + 329, 332, 333, 336, 338, 339, 342, 348, 349, 350, + 351, 352, 354, 361, 365, 373, 374, 375, 376, 377, + 378, 379, 383, 384, 385, 386, 394, 398, 413, 414, + 425, 437, 441, 265, 421, 442, 0, 299, 0, 0, + 301, 250, 267, 276, 0, 432, 395, 207, 367, 257, + 197, 224, 211, 231, 245, 247, 280, 309, 315, 344, + 347, 262, 242, 222, 364, 220, 381, 401, 402, 403, + 405, 313, 238, 331, 0, 0, 0, 0, 0, 0, + 0, 0, 241, 0, 0, 0, 0, 0, 289, 0, + 0, 0, 345, 0, 382, 227, 298, 296, 410, 251, + 244, 240, 226, 273, 304, 343, 400, 337, 0, 293, + 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, + 225, 195, 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, - 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 223, 0, 0, 0, 0, 237, 277, 243, 236, + 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 969, 968, 978, 979, 971, 972, 973, + 974, 975, 976, 977, 970, 0, 0, 980, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 263, 0, 317, 0, 0, 0, 438, + 0, 0, 0, 0, 0, 0, 0, 0, 288, 0, + 285, 191, 205, 0, 0, 327, 366, 372, 0, 0, + 0, 228, 0, 370, 341, 424, 213, 253, 363, 346, + 368, 0, 0, 369, 294, 412, 358, 422, 439, 440, + 235, 321, 430, 404, 436, 448, 206, 232, 335, 397, + 427, 388, 314, 408, 409, 284, 387, 261, 194, 292, + 198, 399, 420, 218, 380, 0, 0, 0, 200, 418, + 396, 311, 281, 282, 199, 0, 362, 239, 259, 230, + 330, 415, 416, 229, 450, 208, 435, 202, 209, 434, + 323, 411, 419, 312, 303, 201, 417, 310, 302, 287, + 249, 269, 356, 297, 357, 270, 319, 318, 320, 0, + 196, 0, 393, 428, 451, 215, 0, 0, 406, 444, + 447, 0, 359, 216, 260, 248, 355, 258, 290, 443, + 445, 446, 214, 353, 266, 334, 423, 252, 431, 322, + 210, 272, 389, 286, 295, 0, 0, 340, 371, 219, + 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 190, 203, 291, 0, 360, 256, 449, 433, + 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, + 221, 233, 246, 254, 264, 268, 271, 274, 275, 278, + 283, 300, 305, 306, 307, 308, 324, 325, 326, 329, + 332, 333, 336, 338, 339, 342, 348, 349, 350, 351, + 352, 354, 361, 365, 373, 374, 375, 376, 377, 378, + 379, 383, 384, 385, 386, 394, 398, 413, 414, 425, + 437, 441, 265, 421, 442, 0, 299, 0, 0, 301, + 250, 267, 276, 0, 432, 395, 207, 367, 257, 197, + 224, 211, 231, 245, 247, 280, 309, 315, 344, 347, + 262, 242, 222, 364, 220, 381, 401, 402, 403, 405, + 313, 238, 331, 0, 0, 0, 0, 0, 0, 0, + 0, 241, 799, 0, 0, 0, 0, 289, 0, 0, + 0, 345, 0, 382, 227, 298, 296, 410, 251, 244, + 240, 226, 273, 304, 343, 400, 337, 0, 293, 0, + 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 279, 225, + 195, 328, 392, 255, 0, 0, 0, 177, 178, 179, + 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, + 223, 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 316, 0, 0, 796, 436, - 0, 0, 0, 0, 0, 0, 793, 794, 287, 761, - 284, 191, 205, 787, 791, 326, 365, 371, 0, 0, - 0, 228, 0, 369, 340, 423, 213, 252, 362, 345, - 367, 0, 0, 368, 293, 411, 357, 421, 437, 438, - 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, - 426, 387, 313, 407, 408, 283, 386, 260, 194, 291, - 198, 398, 419, 218, 379, 0, 0, 0, 200, 417, - 395, 310, 280, 281, 199, 0, 361, 239, 258, 230, - 329, 414, 415, 229, 448, 208, 433, 202, 209, 432, - 322, 410, 418, 311, 302, 201, 416, 309, 301, 286, - 249, 268, 355, 296, 356, 269, 318, 317, 319, 0, - 196, 0, 392, 427, 449, 215, 0, 0, 405, 442, - 445, 0, 358, 216, 259, 248, 354, 257, 289, 441, - 443, 444, 214, 352, 265, 333, 422, 321, 210, 271, - 388, 285, 294, 0, 0, 339, 370, 219, 425, 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 263, 0, 317, 0, 0, 798, 438, 0, + 0, 0, 0, 0, 0, 795, 796, 288, 763, 285, + 191, 205, 789, 793, 327, 366, 372, 0, 0, 0, + 228, 0, 370, 341, 424, 213, 253, 363, 346, 368, + 0, 0, 369, 294, 412, 358, 422, 439, 440, 235, + 321, 430, 404, 436, 448, 206, 232, 335, 397, 427, + 388, 314, 408, 409, 284, 387, 261, 194, 292, 198, + 399, 420, 218, 380, 0, 0, 0, 200, 418, 396, + 311, 281, 282, 199, 0, 362, 239, 259, 230, 330, + 415, 416, 229, 450, 208, 435, 202, 209, 434, 323, + 411, 419, 312, 303, 201, 417, 310, 302, 287, 249, + 269, 356, 297, 357, 270, 319, 318, 320, 0, 196, + 0, 393, 428, 451, 215, 0, 0, 406, 444, 447, + 0, 359, 216, 260, 248, 355, 258, 290, 443, 445, + 446, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 449, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 190, 203, 290, 0, 359, 255, 447, 431, 428, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 0, 0, 1070, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 1072, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 958, + 959, 957, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 960, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 448, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 450, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 451, 215, 0, 0, 406, 444, 447, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 214, 353, 266, 334, 423, 252, 431, 322, 210, 272, + 389, 286, 295, 0, 0, 340, 371, 219, 426, 390, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 190, 203, 291, 0, 360, 256, 449, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, - 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, - 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, - 335, 337, 338, 341, 347, 348, 349, 350, 351, 353, - 360, 364, 372, 373, 374, 375, 376, 377, 378, 382, - 383, 384, 385, 393, 397, 412, 413, 424, 435, 439, - 264, 420, 440, 0, 298, 0, 0, 300, 250, 266, - 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, - 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, - 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, - 330, 0, 0, 0, 1067, 0, 0, 0, 0, 241, - 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, - 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, - 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, - 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, - 391, 254, 0, 0, 0, 177, 178, 179, 0, 1069, - 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, - 0, 0, 0, 237, 276, 243, 236, 406, 955, 956, - 954, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 957, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 316, 0, 0, 0, 436, 0, 0, 0, - 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, - 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, - 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, - 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, - 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, - 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, - 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, - 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, - 229, 448, 208, 433, 202, 209, 432, 322, 410, 418, - 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, - 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, - 427, 449, 215, 0, 0, 405, 442, 445, 0, 358, - 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, - 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, - 0, 0, 339, 370, 219, 425, 389, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 190, 203, 290, - 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, - 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, - 307, 323, 324, 325, 328, 331, 332, 335, 337, 338, - 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, - 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, - 393, 397, 412, 413, 424, 435, 439, 264, 420, 440, - 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, - 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, - 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, - 380, 400, 401, 402, 404, 312, 238, 34, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 330, 0, 0, 0, 0, 0, 0, 0, 0, 241, - 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, - 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, - 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, - 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, - 391, 254, 69, 0, 584, 177, 178, 179, 0, 0, - 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, - 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 316, 0, 0, 0, 436, 0, 0, 0, - 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, - 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, - 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, - 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, - 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, - 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, - 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, - 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, - 229, 448, 208, 433, 202, 209, 432, 322, 410, 418, - 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, - 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, - 427, 449, 215, 0, 0, 405, 442, 445, 0, 358, - 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, - 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, - 0, 0, 339, 370, 219, 425, 389, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 190, 203, 290, - 0, 359, 255, 447, 431, 428, 0, 0, 234, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, - 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, - 307, 323, 324, 325, 328, 331, 332, 335, 337, 338, - 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, - 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, - 393, 397, 412, 413, 424, 435, 439, 264, 420, 440, - 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, - 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, - 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, - 380, 400, 401, 402, 404, 312, 238, 330, 0, 0, - 0, 1435, 0, 0, 0, 0, 241, 0, 0, 0, - 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, - 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, - 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 225, 195, 327, 391, 254, 0, - 0, 0, 177, 178, 179, 0, 1437, 0, 0, 0, - 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, - 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, + 246, 254, 264, 268, 271, 274, 275, 278, 283, 300, + 305, 306, 307, 308, 324, 325, 326, 329, 332, 333, + 336, 338, 339, 342, 348, 349, 350, 351, 352, 354, + 361, 365, 373, 374, 375, 376, 377, 378, 379, 383, + 384, 385, 386, 394, 398, 413, 414, 425, 437, 441, + 265, 421, 442, 0, 299, 0, 0, 301, 250, 267, + 276, 0, 432, 395, 207, 367, 257, 197, 224, 211, + 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, + 222, 364, 220, 381, 401, 402, 403, 405, 313, 238, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, + 0, 0, 241, 0, 0, 0, 0, 0, 289, 0, + 0, 0, 345, 0, 382, 227, 298, 296, 410, 251, + 244, 240, 226, 273, 304, 343, 400, 337, 0, 293, + 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, + 225, 195, 328, 392, 255, 69, 0, 586, 177, 178, + 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, + 0, 223, 0, 0, 0, 0, 237, 277, 243, 236, + 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, - 0, 0, 0, 436, 0, 0, 0, 0, 0, 0, - 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, - 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, - 213, 252, 362, 345, 367, 0, 1433, 368, 293, 411, - 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, - 206, 232, 334, 396, 426, 387, 313, 407, 408, 283, - 386, 260, 194, 291, 198, 398, 419, 218, 379, 0, - 0, 0, 200, 417, 395, 310, 280, 281, 199, 0, - 361, 239, 258, 230, 329, 414, 415, 229, 448, 208, - 433, 202, 209, 432, 322, 410, 418, 311, 302, 201, - 416, 309, 301, 286, 249, 268, 355, 296, 356, 269, - 318, 317, 319, 0, 196, 0, 392, 427, 449, 215, - 0, 0, 405, 442, 445, 0, 358, 216, 259, 248, - 354, 257, 289, 441, 443, 444, 214, 352, 265, 333, - 422, 321, 210, 271, 388, 285, 294, 0, 0, 339, - 370, 219, 425, 389, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 263, 0, 317, 0, 0, 0, 438, + 0, 0, 0, 0, 0, 0, 0, 0, 288, 0, + 285, 191, 205, 0, 0, 327, 366, 372, 0, 0, + 0, 228, 0, 370, 341, 424, 213, 253, 363, 346, + 368, 0, 0, 369, 294, 412, 358, 422, 439, 440, + 235, 321, 430, 404, 436, 448, 206, 232, 335, 397, + 427, 388, 314, 408, 409, 284, 387, 261, 194, 292, + 198, 399, 420, 218, 380, 0, 0, 0, 200, 418, + 396, 311, 281, 282, 199, 0, 362, 239, 259, 230, + 330, 415, 416, 229, 450, 208, 435, 202, 209, 434, + 323, 411, 419, 312, 303, 201, 417, 310, 302, 287, + 249, 269, 356, 297, 357, 270, 319, 318, 320, 0, + 196, 0, 393, 428, 451, 215, 0, 0, 406, 444, + 447, 0, 359, 216, 260, 248, 355, 258, 290, 443, + 445, 446, 214, 353, 266, 334, 423, 252, 431, 322, + 210, 272, 389, 286, 295, 0, 0, 340, 371, 219, + 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 190, 203, 290, 0, 359, 255, - 447, 431, 428, 0, 0, 234, 0, 0, 0, 0, + 0, 0, 190, 203, 291, 0, 360, 256, 449, 433, + 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, - 204, 212, 221, 233, 246, 253, 263, 267, 270, 273, - 274, 277, 282, 299, 304, 305, 306, 307, 323, 324, - 325, 328, 331, 332, 335, 337, 338, 341, 347, 348, - 349, 350, 351, 353, 360, 364, 372, 373, 374, 375, - 376, 377, 378, 382, 383, 384, 385, 393, 397, 412, - 413, 424, 435, 439, 264, 420, 440, 0, 298, 0, - 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, - 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, - 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, - 402, 404, 312, 238, 330, 0, 0, 0, 0, 0, - 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, - 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, - 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, - 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 278, 225, 195, 327, 391, 254, 0, 0, 0, 177, - 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, - 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, - 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 755, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 316, 0, 0, 0, - 436, 0, 0, 0, 0, 0, 0, 0, 0, 287, - 761, 284, 191, 205, 759, 0, 326, 365, 371, 0, - 0, 0, 228, 0, 369, 340, 423, 213, 252, 362, - 345, 367, 0, 0, 368, 293, 411, 357, 421, 437, - 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, - 396, 426, 387, 313, 407, 408, 283, 386, 260, 194, - 291, 198, 398, 419, 218, 379, 0, 0, 0, 200, - 417, 395, 310, 280, 281, 199, 0, 361, 239, 258, - 230, 329, 414, 415, 229, 448, 208, 433, 202, 209, - 432, 322, 410, 418, 311, 302, 201, 416, 309, 301, - 286, 249, 268, 355, 296, 356, 269, 318, 317, 319, - 0, 196, 0, 392, 427, 449, 215, 0, 0, 405, - 442, 445, 0, 358, 216, 259, 248, 354, 257, 289, - 441, 443, 444, 214, 352, 265, 333, 422, 321, 210, - 271, 388, 285, 294, 0, 0, 339, 370, 219, 425, - 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 190, 203, 290, 0, 359, 255, 447, 431, 428, + 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, + 221, 233, 246, 254, 264, 268, 271, 274, 275, 278, + 283, 300, 305, 306, 307, 308, 324, 325, 326, 329, + 332, 333, 336, 338, 339, 342, 348, 349, 350, 351, + 352, 354, 361, 365, 373, 374, 375, 376, 377, 378, + 379, 383, 384, 385, 386, 394, 398, 413, 414, 425, + 437, 441, 265, 421, 442, 0, 299, 0, 0, 301, + 250, 267, 276, 0, 432, 395, 207, 367, 257, 197, + 224, 211, 231, 245, 247, 280, 309, 315, 344, 347, + 262, 242, 222, 364, 220, 381, 401, 402, 403, 405, + 313, 238, 331, 0, 0, 0, 1439, 0, 0, 0, + 0, 241, 0, 0, 0, 0, 0, 289, 0, 0, + 0, 345, 0, 382, 227, 298, 296, 410, 251, 244, + 240, 226, 273, 304, 343, 400, 337, 0, 293, 0, + 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 279, 225, + 195, 328, 392, 255, 0, 0, 0, 177, 178, 179, + 0, 1441, 0, 0, 0, 0, 0, 0, 217, 0, + 223, 0, 0, 0, 0, 237, 277, 243, 236, 407, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 263, 0, 317, 0, 0, 0, 438, 0, + 0, 0, 0, 0, 0, 0, 0, 288, 0, 285, + 191, 205, 0, 0, 327, 366, 372, 0, 0, 0, + 228, 0, 370, 341, 424, 213, 253, 363, 346, 368, + 0, 1437, 369, 294, 412, 358, 422, 439, 440, 235, + 321, 430, 404, 436, 448, 206, 232, 335, 397, 427, + 388, 314, 408, 409, 284, 387, 261, 194, 292, 198, + 399, 420, 218, 380, 0, 0, 0, 200, 418, 396, + 311, 281, 282, 199, 0, 362, 239, 259, 230, 330, + 415, 416, 229, 450, 208, 435, 202, 209, 434, 323, + 411, 419, 312, 303, 201, 417, 310, 302, 287, 249, + 269, 356, 297, 357, 270, 319, 318, 320, 0, 196, + 0, 393, 428, 451, 215, 0, 0, 406, 444, 447, + 0, 359, 216, 260, 248, 355, 258, 290, 443, 445, + 446, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 449, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, - 233, 246, 253, 263, 267, 270, 273, 274, 277, 282, - 299, 304, 305, 306, 307, 323, 324, 325, 328, 331, - 332, 335, 337, 338, 341, 347, 348, 349, 350, 351, - 353, 360, 364, 372, 373, 374, 375, 376, 377, 378, - 382, 383, 384, 385, 393, 397, 412, 413, 424, 435, - 439, 264, 420, 440, 0, 298, 0, 0, 300, 250, - 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, - 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, - 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, - 238, 330, 0, 0, 0, 1435, 0, 0, 0, 0, - 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, - 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, - 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, - 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, - 327, 391, 254, 0, 0, 0, 177, 178, 179, 0, - 1437, 0, 0, 0, 0, 0, 0, 217, 0, 223, - 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 262, 0, 316, 0, 0, 0, 436, 0, 0, - 0, 0, 0, 0, 0, 0, 287, 0, 284, 191, - 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, - 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, - 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, - 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, - 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, - 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, - 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, - 415, 229, 448, 208, 433, 202, 209, 432, 322, 410, - 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, - 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, - 392, 427, 449, 215, 0, 0, 405, 442, 445, 0, - 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, - 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, - 294, 0, 0, 339, 370, 219, 425, 389, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, - 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 335, 337, - 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, - 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, - 385, 393, 397, 412, 413, 424, 435, 439, 264, 420, - 440, 0, 298, 0, 0, 300, 250, 266, 275, 0, - 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, - 220, 380, 400, 401, 402, 404, 312, 238, 34, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, - 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, - 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, - 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, - 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, - 327, 391, 254, 69, 0, 0, 177, 178, 179, 0, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, - 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 763, 285, 191, + 205, 761, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 448, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 450, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 451, 215, 0, 0, 406, 444, 447, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 214, 353, 266, 334, 423, 252, 431, 322, 210, 272, + 389, 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 262, 0, 316, 0, 0, 0, 436, 0, 0, - 0, 0, 0, 0, 0, 0, 287, 0, 284, 191, - 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, - 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, - 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, - 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, - 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, - 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, - 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, - 415, 229, 448, 208, 433, 202, 209, 432, 322, 410, - 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, - 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, - 392, 427, 449, 215, 0, 0, 405, 442, 445, 0, - 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, - 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, - 294, 0, 0, 339, 370, 219, 425, 389, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, - 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 335, 337, - 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, - 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, - 385, 393, 397, 412, 413, 424, 435, 439, 264, 420, - 440, 0, 298, 0, 0, 300, 250, 266, 275, 0, - 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, - 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, - 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, - 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, - 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, - 0, 0, 0, 177, 178, 179, 0, 0, 1455, 0, - 0, 1456, 0, 0, 217, 0, 223, 0, 0, 0, - 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 316, 0, 0, 0, 436, 0, 0, 0, 0, 0, - 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, - 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, - 423, 213, 252, 362, 345, 367, 0, 0, 368, 293, - 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, - 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, - 283, 386, 260, 194, 291, 198, 398, 419, 218, 379, - 0, 0, 0, 200, 417, 395, 310, 280, 281, 199, - 0, 361, 239, 258, 230, 329, 414, 415, 229, 448, - 208, 433, 202, 209, 432, 322, 410, 418, 311, 302, - 201, 416, 309, 301, 286, 249, 268, 355, 296, 356, - 269, 318, 317, 319, 0, 196, 0, 392, 427, 449, - 215, 0, 0, 405, 442, 445, 0, 358, 216, 259, - 248, 354, 257, 289, 441, 443, 444, 214, 352, 265, - 333, 422, 321, 210, 271, 388, 285, 294, 0, 0, - 339, 370, 219, 425, 389, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 190, 203, 290, 0, 359, - 255, 447, 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, - 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, - 324, 325, 328, 331, 332, 335, 337, 338, 341, 347, - 348, 349, 350, 351, 353, 360, 364, 372, 373, 374, - 375, 376, 377, 378, 382, 383, 384, 385, 393, 397, - 412, 413, 424, 435, 439, 264, 420, 440, 0, 298, - 0, 0, 300, 250, 266, 275, 0, 430, 394, 207, - 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, - 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, - 401, 402, 404, 312, 238, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 241, 0, 1100, 0, 0, 0, - 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, - 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, - 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 225, 195, 327, 391, 254, 0, 0, 0, - 177, 178, 179, 0, 1099, 0, 0, 0, 0, 0, - 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, - 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 262, 0, 316, 0, 0, - 0, 436, 0, 0, 0, 0, 0, 0, 0, 0, - 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, - 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, - 362, 345, 367, 0, 0, 368, 293, 411, 357, 421, - 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, - 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, - 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, - 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, - 258, 230, 329, 414, 415, 229, 448, 208, 433, 202, - 209, 432, 322, 410, 418, 311, 302, 201, 416, 309, - 301, 286, 249, 268, 355, 296, 356, 269, 318, 317, - 319, 0, 196, 0, 392, 427, 449, 215, 0, 0, - 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, - 289, 441, 443, 444, 214, 352, 265, 333, 422, 321, - 210, 271, 388, 285, 294, 0, 0, 339, 370, 219, - 425, 389, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 190, 203, 290, 0, 359, 255, 447, 431, - 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, + 190, 203, 291, 0, 360, 256, 449, 433, 429, 0, + 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, - 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, - 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, - 331, 332, 335, 337, 338, 341, 347, 348, 349, 350, - 351, 353, 360, 364, 372, 373, 374, 375, 376, 377, - 378, 382, 383, 384, 385, 393, 397, 412, 413, 424, - 435, 439, 264, 420, 440, 0, 298, 0, 0, 300, - 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, - 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, - 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, - 312, 238, 330, 0, 0, 0, 0, 0, 0, 0, - 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, - 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, - 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, - 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, - 195, 327, 391, 254, 0, 0, 584, 177, 178, 179, - 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, - 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, + 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, + 246, 254, 264, 268, 271, 274, 275, 278, 283, 300, + 305, 306, 307, 308, 324, 325, 326, 329, 332, 333, + 336, 338, 339, 342, 348, 349, 350, 351, 352, 354, + 361, 365, 373, 374, 375, 376, 377, 378, 379, 383, + 384, 385, 386, 394, 398, 413, 414, 425, 437, 441, + 265, 421, 442, 0, 299, 0, 0, 301, 250, 267, + 276, 0, 432, 395, 207, 367, 257, 197, 224, 211, + 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, + 222, 364, 220, 381, 401, 402, 403, 405, 313, 238, + 331, 0, 0, 0, 1439, 0, 0, 0, 0, 241, + 0, 0, 0, 0, 0, 289, 0, 0, 0, 345, + 0, 382, 227, 298, 296, 410, 251, 244, 240, 226, + 273, 304, 343, 400, 337, 0, 293, 0, 0, 391, + 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 279, 225, 195, 328, + 392, 255, 0, 0, 0, 177, 178, 179, 0, 1441, + 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, + 0, 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 316, 0, 0, 0, 436, 0, - 0, 0, 0, 0, 0, 0, 0, 287, 0, 284, - 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, - 228, 0, 369, 340, 423, 213, 252, 362, 345, 367, - 0, 0, 368, 293, 411, 357, 421, 437, 438, 235, - 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, - 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, - 398, 419, 218, 379, 0, 0, 0, 200, 417, 395, - 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, - 414, 415, 229, 448, 208, 433, 202, 209, 432, 322, - 410, 418, 311, 302, 201, 416, 309, 301, 286, 249, - 268, 355, 296, 356, 269, 318, 317, 319, 0, 196, - 0, 392, 427, 449, 215, 0, 0, 405, 442, 445, - 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, - 444, 214, 352, 265, 333, 422, 321, 210, 271, 388, - 285, 294, 0, 0, 339, 370, 219, 425, 389, 0, + 263, 0, 317, 0, 0, 0, 438, 0, 0, 0, + 0, 0, 0, 0, 0, 288, 0, 285, 191, 205, + 0, 0, 327, 366, 372, 0, 0, 0, 228, 0, + 370, 341, 424, 213, 253, 363, 346, 368, 0, 0, + 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, + 404, 436, 448, 206, 232, 335, 397, 427, 388, 314, + 408, 409, 284, 387, 261, 194, 292, 198, 399, 420, + 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, + 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, + 229, 450, 208, 435, 202, 209, 434, 323, 411, 419, + 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, + 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, + 428, 451, 215, 0, 0, 406, 444, 447, 0, 359, + 216, 260, 248, 355, 258, 290, 443, 445, 446, 214, + 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, + 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 290, 0, 359, 255, 447, 431, 428, 0, 0, + 203, 291, 0, 360, 256, 449, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, - 305, 306, 307, 323, 324, 325, 328, 331, 332, 335, - 337, 338, 341, 347, 348, 349, 350, 351, 353, 360, - 364, 372, 373, 374, 375, 376, 377, 378, 382, 383, - 384, 385, 393, 397, 412, 413, 424, 435, 439, 264, - 420, 440, 0, 298, 0, 0, 300, 250, 266, 275, - 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, - 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, - 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, - 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, - 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, - 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, - 254, 69, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, - 0, 316, 0, 0, 0, 436, 0, 0, 0, 0, - 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, - 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, - 340, 423, 213, 252, 362, 345, 367, 0, 0, 368, - 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, - 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, - 408, 283, 386, 260, 194, 291, 198, 398, 419, 218, - 379, 0, 0, 0, 200, 417, 395, 310, 280, 281, - 199, 0, 361, 239, 258, 230, 329, 414, 415, 229, - 448, 208, 433, 202, 209, 432, 322, 410, 418, 311, - 302, 201, 416, 309, 301, 286, 249, 268, 355, 296, - 356, 269, 318, 317, 319, 0, 196, 0, 392, 427, - 449, 215, 0, 0, 405, 442, 445, 0, 358, 216, - 259, 248, 354, 257, 289, 441, 443, 444, 214, 352, - 265, 333, 422, 321, 210, 271, 388, 285, 294, 0, - 0, 339, 370, 219, 425, 389, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 290, 0, - 359, 255, 447, 431, 428, 0, 0, 234, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 204, 212, 221, 233, 246, 253, 263, 267, - 270, 273, 274, 277, 282, 299, 304, 305, 306, 307, - 323, 324, 325, 328, 331, 332, 335, 337, 338, 341, - 347, 348, 349, 350, 351, 353, 360, 364, 372, 373, - 374, 375, 376, 377, 378, 382, 383, 384, 385, 393, - 397, 412, 413, 424, 435, 439, 264, 420, 440, 0, - 298, 0, 0, 300, 250, 266, 275, 0, 430, 394, - 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, - 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, - 400, 401, 402, 404, 312, 238, 330, 0, 0, 0, - 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, - 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, - 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, - 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, + 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, + 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, + 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, + 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, + 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, + 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, + 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, + 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, + 364, 220, 381, 401, 402, 403, 405, 313, 238, 34, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, + 0, 241, 0, 0, 0, 0, 0, 289, 0, 0, + 0, 345, 0, 382, 227, 298, 296, 410, 251, 244, + 240, 226, 273, 304, 343, 400, 337, 0, 293, 0, + 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 279, 225, + 195, 328, 392, 255, 69, 0, 0, 177, 178, 179, + 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, + 223, 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 278, 225, 195, 327, 391, 254, 0, 0, - 0, 177, 178, 179, 0, 1437, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, - 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 262, 0, 316, 0, - 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, - 0, 287, 0, 284, 191, 205, 0, 0, 326, 365, - 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, - 252, 362, 345, 367, 0, 0, 368, 293, 411, 357, - 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, - 232, 334, 396, 426, 387, 313, 407, 408, 283, 386, - 260, 194, 291, 198, 398, 419, 218, 379, 0, 0, - 0, 200, 417, 395, 310, 280, 281, 199, 0, 361, - 239, 258, 230, 329, 414, 415, 229, 448, 208, 433, - 202, 209, 432, 322, 410, 418, 311, 302, 201, 416, - 309, 301, 286, 249, 268, 355, 296, 356, 269, 318, - 317, 319, 0, 196, 0, 392, 427, 449, 215, 0, - 0, 405, 442, 445, 0, 358, 216, 259, 248, 354, - 257, 289, 441, 443, 444, 214, 352, 265, 333, 422, - 321, 210, 271, 388, 285, 294, 0, 0, 339, 370, - 219, 425, 389, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 263, 0, 317, 0, 0, 0, 438, 0, + 0, 0, 0, 0, 0, 0, 0, 288, 0, 285, + 191, 205, 0, 0, 327, 366, 372, 0, 0, 0, + 228, 0, 370, 341, 424, 213, 253, 363, 346, 368, + 0, 0, 369, 294, 412, 358, 422, 439, 440, 235, + 321, 430, 404, 436, 448, 206, 232, 335, 397, 427, + 388, 314, 408, 409, 284, 387, 261, 194, 292, 198, + 399, 420, 218, 380, 0, 0, 0, 200, 418, 396, + 311, 281, 282, 199, 0, 362, 239, 259, 230, 330, + 415, 416, 229, 450, 208, 435, 202, 209, 434, 323, + 411, 419, 312, 303, 201, 417, 310, 302, 287, 249, + 269, 356, 297, 357, 270, 319, 318, 320, 0, 196, + 0, 393, 428, 451, 215, 0, 0, 406, 444, 447, + 0, 359, 216, 260, 248, 355, 258, 290, 443, 445, + 446, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 203, 290, 0, 359, 255, 447, - 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 449, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, - 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, - 328, 331, 332, 335, 337, 338, 341, 347, 348, 349, - 350, 351, 353, 360, 364, 372, 373, 374, 375, 376, - 377, 378, 382, 383, 384, 385, 393, 397, 412, 413, - 424, 435, 439, 264, 420, 440, 0, 298, 0, 0, - 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, - 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, - 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, - 404, 312, 238, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, - 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, - 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, - 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 225, 195, 327, 391, 254, 0, 0, 0, 177, 178, - 179, 0, 1069, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, - 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 316, 0, 0, 0, 436, - 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, - 284, 191, 205, 0, 0, 326, 365, 371, 0, 0, - 0, 228, 0, 369, 340, 423, 213, 252, 362, 345, - 367, 0, 0, 368, 293, 411, 357, 421, 437, 438, - 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, - 426, 387, 313, 407, 408, 283, 386, 260, 194, 291, - 198, 398, 419, 218, 379, 0, 0, 0, 200, 417, - 395, 310, 280, 281, 199, 0, 361, 239, 258, 230, - 329, 414, 415, 229, 448, 208, 433, 202, 209, 432, - 322, 410, 418, 311, 302, 201, 416, 309, 301, 286, - 249, 268, 355, 296, 356, 269, 318, 317, 319, 0, - 196, 0, 392, 427, 449, 215, 0, 0, 405, 442, - 445, 0, 358, 216, 259, 248, 354, 257, 289, 441, - 443, 444, 214, 352, 265, 333, 422, 321, 210, 271, - 388, 285, 294, 0, 0, 339, 370, 219, 425, 389, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 190, 203, 290, 0, 359, 255, 447, 431, 428, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 0, 1459, 0, 0, 1460, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 448, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 450, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 451, 215, 0, 0, 406, 444, 447, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 214, 353, 266, 334, 423, 252, 431, 322, 210, 272, + 389, 286, 295, 0, 0, 340, 371, 219, 426, 390, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 190, 203, 291, 0, 360, 256, 449, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, - 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, - 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, - 335, 337, 338, 341, 347, 348, 349, 350, 351, 353, - 360, 364, 372, 373, 374, 375, 376, 377, 378, 382, - 383, 384, 385, 393, 397, 412, 413, 424, 435, 439, - 264, 420, 440, 0, 298, 0, 0, 300, 250, 266, - 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, - 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, - 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, - 330, 0, 0, 0, 0, 0, 0, 0, 0, 241, - 0, 0, 0, 0, 0, 288, 0, 0, 0, 344, - 0, 381, 227, 297, 295, 409, 251, 244, 240, 226, - 272, 303, 342, 399, 336, 0, 292, 0, 0, 390, - 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 278, 225, 195, 327, - 391, 254, 0, 0, 0, 177, 178, 179, 0, 0, + 246, 254, 264, 268, 271, 274, 275, 278, 283, 300, + 305, 306, 307, 308, 324, 325, 326, 329, 332, 333, + 336, 338, 339, 342, 348, 349, 350, 351, 352, 354, + 361, 365, 373, 374, 375, 376, 377, 378, 379, 383, + 384, 385, 386, 394, 398, 413, 414, 425, 437, 441, + 265, 421, 442, 0, 299, 0, 0, 301, 250, 267, + 276, 0, 432, 395, 207, 367, 257, 197, 224, 211, + 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, + 222, 364, 220, 381, 401, 402, 403, 405, 313, 238, + 331, 0, 0, 0, 0, 0, 0, 0, 0, 241, + 0, 1103, 0, 0, 0, 289, 0, 0, 0, 345, + 0, 382, 227, 298, 296, 410, 251, 244, 240, 226, + 273, 304, 343, 400, 337, 0, 293, 0, 0, 391, + 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 279, 225, 195, 328, + 392, 255, 0, 0, 0, 177, 178, 179, 0, 1102, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, - 0, 0, 0, 237, 276, 243, 236, 406, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 0, 316, 0, 0, 0, 436, 0, 0, 0, - 0, 0, 0, 0, 0, 287, 0, 284, 191, 205, - 0, 0, 326, 365, 371, 0, 0, 0, 228, 0, - 369, 340, 423, 213, 252, 362, 345, 367, 0, 0, - 368, 293, 411, 357, 421, 437, 438, 235, 320, 429, - 403, 434, 446, 206, 232, 334, 396, 426, 387, 313, - 407, 408, 283, 386, 260, 194, 291, 198, 398, 419, - 218, 379, 0, 0, 0, 200, 417, 395, 310, 280, - 281, 199, 0, 361, 239, 258, 230, 329, 414, 415, - 229, 448, 208, 433, 202, 209, 432, 322, 410, 418, - 311, 302, 201, 416, 309, 301, 286, 249, 268, 355, - 296, 356, 269, 318, 317, 319, 0, 196, 0, 392, - 427, 449, 215, 0, 0, 405, 442, 445, 0, 358, - 216, 259, 248, 354, 257, 289, 441, 443, 444, 214, - 352, 265, 333, 422, 321, 210, 271, 388, 285, 294, - 0, 0, 339, 370, 219, 425, 389, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 190, 203, 290, - 1340, 359, 255, 447, 431, 428, 0, 0, 234, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 193, 204, 212, 221, 233, 246, 253, 263, - 267, 270, 273, 274, 277, 282, 299, 304, 305, 306, - 307, 323, 324, 325, 328, 331, 332, 335, 337, 338, - 341, 347, 348, 349, 350, 351, 353, 360, 364, 372, - 373, 374, 375, 376, 377, 378, 382, 383, 384, 385, - 393, 397, 412, 413, 424, 435, 439, 264, 420, 440, - 0, 298, 0, 0, 300, 250, 266, 275, 0, 430, - 394, 207, 366, 256, 197, 224, 211, 231, 245, 247, - 279, 308, 314, 343, 346, 261, 242, 222, 363, 220, - 380, 400, 401, 402, 404, 312, 238, 330, 0, 1224, - 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, - 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, - 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, - 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 225, 195, 327, 391, 254, 0, - 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, - 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, - 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, + 0, 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, - 0, 0, 0, 436, 0, 0, 0, 0, 0, 0, - 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, - 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, - 213, 252, 362, 345, 367, 0, 0, 368, 293, 411, - 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, - 206, 232, 334, 396, 426, 387, 313, 407, 408, 283, - 386, 260, 194, 291, 198, 398, 419, 218, 379, 0, - 0, 0, 200, 417, 395, 310, 280, 281, 199, 0, - 361, 239, 258, 230, 329, 414, 415, 229, 448, 208, - 433, 202, 209, 432, 322, 410, 418, 311, 302, 201, - 416, 309, 301, 286, 249, 268, 355, 296, 356, 269, - 318, 317, 319, 0, 196, 0, 392, 427, 449, 215, - 0, 0, 405, 442, 445, 0, 358, 216, 259, 248, - 354, 257, 289, 441, 443, 444, 214, 352, 265, 333, - 422, 321, 210, 271, 388, 285, 294, 0, 0, 339, - 370, 219, 425, 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 190, 203, 290, 0, 359, 255, - 447, 431, 428, 0, 0, 234, 0, 0, 0, 0, + 263, 0, 317, 0, 0, 0, 438, 0, 0, 0, + 0, 0, 0, 0, 0, 288, 0, 285, 191, 205, + 0, 0, 327, 366, 372, 0, 0, 0, 228, 0, + 370, 341, 424, 213, 253, 363, 346, 368, 0, 0, + 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, + 404, 436, 448, 206, 232, 335, 397, 427, 388, 314, + 408, 409, 284, 387, 261, 194, 292, 198, 399, 420, + 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, + 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, + 229, 450, 208, 435, 202, 209, 434, 323, 411, 419, + 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, + 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, + 428, 451, 215, 0, 0, 406, 444, 447, 0, 359, + 216, 260, 248, 355, 258, 290, 443, 445, 446, 214, + 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, + 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, - 204, 212, 221, 233, 246, 253, 263, 267, 270, 273, - 274, 277, 282, 299, 304, 305, 306, 307, 323, 324, - 325, 328, 331, 332, 335, 337, 338, 341, 347, 348, - 349, 350, 351, 353, 360, 364, 372, 373, 374, 375, - 376, 377, 378, 382, 383, 384, 385, 393, 397, 412, - 413, 424, 435, 439, 264, 420, 440, 0, 298, 0, - 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, - 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, - 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, - 402, 404, 312, 238, 330, 0, 1222, 0, 0, 0, - 0, 0, 0, 241, 0, 0, 0, 0, 0, 288, - 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, - 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, - 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 278, 225, 195, 327, 391, 254, 0, 0, 0, 177, - 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, - 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, - 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 316, 0, 0, 0, - 436, 0, 0, 0, 0, 0, 0, 0, 0, 287, - 0, 284, 191, 205, 0, 0, 326, 365, 371, 0, - 0, 0, 228, 0, 369, 340, 423, 213, 252, 362, - 345, 367, 0, 0, 368, 293, 411, 357, 421, 437, - 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, - 396, 426, 387, 313, 407, 408, 283, 386, 260, 194, - 291, 198, 398, 419, 218, 379, 0, 0, 0, 200, - 417, 395, 310, 280, 281, 199, 0, 361, 239, 258, - 230, 329, 414, 415, 229, 448, 208, 433, 202, 209, - 432, 322, 410, 418, 311, 302, 201, 416, 309, 301, - 286, 249, 268, 355, 296, 356, 269, 318, 317, 319, - 0, 196, 0, 392, 427, 449, 215, 0, 0, 405, - 442, 445, 0, 358, 216, 259, 248, 354, 257, 289, - 441, 443, 444, 214, 352, 265, 333, 422, 321, 210, - 271, 388, 285, 294, 0, 0, 339, 370, 219, 425, - 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 190, 203, 290, 0, 359, 255, 447, 431, 428, - 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, + 203, 291, 0, 360, 256, 449, 433, 429, 0, 0, + 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, - 233, 246, 253, 263, 267, 270, 273, 274, 277, 282, - 299, 304, 305, 306, 307, 323, 324, 325, 328, 331, - 332, 335, 337, 338, 341, 347, 348, 349, 350, 351, - 353, 360, 364, 372, 373, 374, 375, 376, 377, 378, - 382, 383, 384, 385, 393, 397, 412, 413, 424, 435, - 439, 264, 420, 440, 0, 298, 0, 0, 300, 250, - 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, - 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, - 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, - 238, 330, 0, 1220, 0, 0, 0, 0, 0, 0, - 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, - 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, - 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, - 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, - 327, 391, 254, 0, 0, 0, 177, 178, 179, 0, - 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, - 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, + 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, + 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, + 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, + 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, + 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, + 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, + 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, + 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, + 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, + 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, + 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, + 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, + 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, + 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, + 255, 0, 0, 586, 177, 178, 179, 0, 0, 0, + 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, + 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 262, 0, 316, 0, 0, 0, 436, 0, 0, - 0, 0, 0, 0, 0, 0, 287, 0, 284, 191, - 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, - 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, - 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, - 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, - 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, - 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, - 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, - 415, 229, 448, 208, 433, 202, 209, 432, 322, 410, - 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, - 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, - 392, 427, 449, 215, 0, 0, 405, 442, 445, 0, - 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, - 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, - 294, 0, 0, 339, 370, 219, 425, 389, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, + 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, + 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, + 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, + 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, + 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, + 436, 448, 206, 232, 335, 397, 427, 388, 314, 408, + 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, + 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, + 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, + 450, 208, 435, 202, 209, 434, 323, 411, 419, 312, + 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, + 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, + 451, 215, 0, 0, 406, 444, 447, 0, 359, 216, + 260, 248, 355, 258, 290, 443, 445, 446, 214, 353, + 266, 334, 423, 252, 431, 322, 210, 272, 389, 286, + 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, - 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 335, 337, - 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, - 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, - 385, 393, 397, 412, 413, 424, 435, 439, 264, 420, - 440, 0, 298, 0, 0, 300, 250, 266, 275, 0, - 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, - 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, - 1218, 0, 0, 0, 0, 0, 0, 241, 0, 0, - 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, - 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, - 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, - 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, + 291, 0, 360, 256, 449, 433, 429, 0, 0, 234, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 254, + 264, 268, 271, 274, 275, 278, 283, 300, 305, 306, + 307, 308, 324, 325, 326, 329, 332, 333, 336, 338, + 339, 342, 348, 349, 350, 351, 352, 354, 361, 365, + 373, 374, 375, 376, 377, 378, 379, 383, 384, 385, + 386, 394, 398, 413, 414, 425, 437, 441, 265, 421, + 442, 0, 299, 0, 0, 301, 250, 267, 276, 0, + 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, + 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, + 220, 381, 401, 402, 403, 405, 313, 238, 331, 0, + 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 345, 0, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 0, 293, 0, 0, 391, 316, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 279, 225, 195, 328, 392, 255, + 69, 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, - 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, + 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, + 317, 0, 0, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 288, 0, 285, 191, 205, 0, 0, + 327, 366, 372, 0, 0, 0, 228, 0, 370, 341, + 424, 213, 253, 363, 346, 368, 0, 0, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 448, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 450, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 451, + 215, 0, 0, 406, 444, 447, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 214, 353, 266, + 334, 423, 252, 431, 322, 210, 272, 389, 286, 295, + 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 190, 203, 291, + 0, 360, 256, 449, 433, 429, 0, 0, 234, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 193, 204, 212, 221, 233, 246, 254, 264, + 268, 271, 274, 275, 278, 283, 300, 305, 306, 307, + 308, 324, 325, 326, 329, 332, 333, 336, 338, 339, + 342, 348, 349, 350, 351, 352, 354, 361, 365, 373, + 374, 375, 376, 377, 378, 379, 383, 384, 385, 386, + 394, 398, 413, 414, 425, 437, 441, 265, 421, 442, + 0, 299, 0, 0, 301, 250, 267, 276, 0, 432, + 395, 207, 367, 257, 197, 224, 211, 231, 245, 247, + 280, 309, 315, 344, 347, 262, 242, 222, 364, 220, + 381, 401, 402, 403, 405, 313, 238, 331, 0, 0, + 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, + 0, 0, 289, 0, 0, 0, 345, 0, 382, 227, + 298, 296, 410, 251, 244, 240, 226, 273, 304, 343, + 400, 337, 0, 293, 0, 0, 391, 316, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 279, 225, 195, 328, 392, 255, 0, + 0, 0, 177, 178, 179, 0, 1441, 0, 0, 0, + 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, + 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 263, 0, 317, + 0, 0, 0, 438, 0, 0, 0, 0, 0, 0, + 0, 0, 288, 0, 285, 191, 205, 0, 0, 327, + 366, 372, 0, 0, 0, 228, 0, 370, 341, 424, + 213, 253, 363, 346, 368, 0, 0, 369, 294, 412, + 358, 422, 439, 440, 235, 321, 430, 404, 436, 448, + 206, 232, 335, 397, 427, 388, 314, 408, 409, 284, + 387, 261, 194, 292, 198, 399, 420, 218, 380, 0, + 0, 0, 200, 418, 396, 311, 281, 282, 199, 0, + 362, 239, 259, 230, 330, 415, 416, 229, 450, 208, + 435, 202, 209, 434, 323, 411, 419, 312, 303, 201, + 417, 310, 302, 287, 249, 269, 356, 297, 357, 270, + 319, 318, 320, 0, 196, 0, 393, 428, 451, 215, + 0, 0, 406, 444, 447, 0, 359, 216, 260, 248, + 355, 258, 290, 443, 445, 446, 214, 353, 266, 334, + 423, 252, 431, 322, 210, 272, 389, 286, 295, 0, + 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 203, 291, 0, + 360, 256, 449, 433, 429, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, + 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, + 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, + 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, + 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, + 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, + 299, 0, 0, 301, 250, 267, 276, 0, 432, 395, + 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, + 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, + 401, 402, 403, 405, 313, 238, 331, 0, 0, 0, + 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, + 0, 289, 0, 0, 0, 345, 0, 382, 227, 298, + 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, + 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 279, 225, 195, 328, 392, 255, 0, 0, + 0, 177, 178, 179, 0, 1072, 0, 0, 0, 0, + 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, + 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, - 316, 0, 0, 0, 436, 0, 0, 0, 0, 0, - 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, - 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, - 423, 213, 252, 362, 345, 367, 0, 0, 368, 293, - 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, - 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, - 283, 386, 260, 194, 291, 198, 398, 419, 218, 379, - 0, 0, 0, 200, 417, 395, 310, 280, 281, 199, - 0, 361, 239, 258, 230, 329, 414, 415, 229, 448, - 208, 433, 202, 209, 432, 322, 410, 418, 311, 302, - 201, 416, 309, 301, 286, 249, 268, 355, 296, 356, - 269, 318, 317, 319, 0, 196, 0, 392, 427, 449, - 215, 0, 0, 405, 442, 445, 0, 358, 216, 259, - 248, 354, 257, 289, 441, 443, 444, 214, 352, 265, - 333, 422, 321, 210, 271, 388, 285, 294, 0, 0, - 339, 370, 219, 425, 389, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 263, 0, 317, 0, + 0, 0, 438, 0, 0, 0, 0, 0, 0, 0, + 0, 288, 0, 285, 191, 205, 0, 0, 327, 366, + 372, 0, 0, 0, 228, 0, 370, 341, 424, 213, + 253, 363, 346, 368, 0, 0, 369, 294, 412, 358, + 422, 439, 440, 235, 321, 430, 404, 436, 448, 206, + 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, + 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, + 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, + 239, 259, 230, 330, 415, 416, 229, 450, 208, 435, + 202, 209, 434, 323, 411, 419, 312, 303, 201, 417, + 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, + 318, 320, 0, 196, 0, 393, 428, 451, 215, 0, + 0, 406, 444, 447, 0, 359, 216, 260, 248, 355, + 258, 290, 443, 445, 446, 214, 353, 266, 334, 423, + 252, 431, 322, 210, 272, 389, 286, 295, 0, 0, + 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 190, 203, 290, 0, 359, - 255, 447, 431, 428, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 190, 203, 291, 0, 360, + 256, 449, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, - 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, - 324, 325, 328, 331, 332, 335, 337, 338, 341, 347, - 348, 349, 350, 351, 353, 360, 364, 372, 373, 374, - 375, 376, 377, 378, 382, 383, 384, 385, 393, 397, - 412, 413, 424, 435, 439, 264, 420, 440, 0, 298, - 0, 0, 300, 250, 266, 275, 0, 430, 394, 207, - 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, - 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, - 401, 402, 404, 312, 238, 330, 0, 1216, 0, 0, + 193, 204, 212, 221, 233, 246, 254, 264, 268, 271, + 274, 275, 278, 283, 300, 305, 306, 307, 308, 324, + 325, 326, 329, 332, 333, 336, 338, 339, 342, 348, + 349, 350, 351, 352, 354, 361, 365, 373, 374, 375, + 376, 377, 378, 379, 383, 384, 385, 386, 394, 398, + 413, 414, 425, 437, 441, 265, 421, 442, 0, 299, + 0, 0, 301, 250, 267, 276, 0, 432, 395, 207, + 367, 257, 197, 224, 211, 231, 245, 247, 280, 309, + 315, 344, 347, 262, 242, 222, 364, 220, 381, 401, + 402, 403, 405, 313, 238, 331, 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, - 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, - 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, - 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, + 289, 0, 0, 0, 345, 0, 382, 227, 298, 296, + 410, 251, 244, 240, 226, 273, 304, 343, 400, 337, + 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 225, 195, 327, 391, 254, 0, 0, 0, + 0, 279, 225, 195, 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, - 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, - 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, + 0, 217, 0, 223, 0, 0, 0, 0, 237, 277, + 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 262, 0, 316, 0, 0, - 0, 436, 0, 0, 0, 0, 0, 0, 0, 0, - 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, - 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, - 362, 345, 367, 0, 0, 368, 293, 411, 357, 421, - 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, - 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, - 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, - 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, - 258, 230, 329, 414, 415, 229, 448, 208, 433, 202, - 209, 432, 322, 410, 418, 311, 302, 201, 416, 309, - 301, 286, 249, 268, 355, 296, 356, 269, 318, 317, - 319, 0, 196, 0, 392, 427, 449, 215, 0, 0, - 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, - 289, 441, 443, 444, 214, 352, 265, 333, 422, 321, - 210, 271, 388, 285, 294, 0, 0, 339, 370, 219, - 425, 389, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 263, 0, 317, 0, 0, + 0, 438, 0, 0, 0, 0, 0, 0, 0, 0, + 288, 0, 285, 191, 205, 0, 0, 327, 366, 372, + 0, 0, 0, 228, 0, 370, 341, 424, 213, 253, + 363, 346, 368, 0, 0, 369, 294, 412, 358, 422, + 439, 440, 235, 321, 430, 404, 436, 448, 206, 232, + 335, 397, 427, 388, 314, 408, 409, 284, 387, 261, + 194, 292, 198, 399, 420, 218, 380, 0, 0, 0, + 200, 418, 396, 311, 281, 282, 199, 0, 362, 239, + 259, 230, 330, 415, 416, 229, 450, 208, 435, 202, + 209, 434, 323, 411, 419, 312, 303, 201, 417, 310, + 302, 287, 249, 269, 356, 297, 357, 270, 319, 318, + 320, 0, 196, 0, 393, 428, 451, 215, 0, 0, + 406, 444, 447, 0, 359, 216, 260, 248, 355, 258, + 290, 443, 445, 446, 214, 353, 266, 334, 423, 252, + 431, 322, 210, 272, 389, 286, 295, 0, 0, 340, + 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 190, 203, 290, 0, 359, 255, 447, 431, - 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 190, 203, 291, 1344, 360, 256, + 449, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, - 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, - 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, - 331, 332, 335, 337, 338, 341, 347, 348, 349, 350, - 351, 353, 360, 364, 372, 373, 374, 375, 376, 377, - 378, 382, 383, 384, 385, 393, 397, 412, 413, 424, - 435, 439, 264, 420, 440, 0, 298, 0, 0, 300, - 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, - 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, - 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, - 312, 238, 330, 0, 1212, 0, 0, 0, 0, 0, - 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, - 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, - 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, - 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, - 195, 327, 391, 254, 0, 0, 0, 177, 178, 179, - 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, - 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, + 204, 212, 221, 233, 246, 254, 264, 268, 271, 274, + 275, 278, 283, 300, 305, 306, 307, 308, 324, 325, + 326, 329, 332, 333, 336, 338, 339, 342, 348, 349, + 350, 351, 352, 354, 361, 365, 373, 374, 375, 376, + 377, 378, 379, 383, 384, 385, 386, 394, 398, 413, + 414, 425, 437, 441, 265, 421, 442, 0, 299, 0, + 0, 301, 250, 267, 276, 0, 432, 395, 207, 367, + 257, 197, 224, 211, 231, 245, 247, 280, 309, 315, + 344, 347, 262, 242, 222, 364, 220, 381, 401, 402, + 403, 405, 313, 238, 331, 0, 1227, 0, 0, 0, + 0, 0, 0, 241, 0, 0, 0, 0, 0, 289, + 0, 0, 0, 345, 0, 382, 227, 298, 296, 410, + 251, 244, 240, 226, 273, 304, 343, 400, 337, 0, + 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 279, 225, 195, 328, 392, 255, 0, 0, 0, 177, + 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, + 217, 0, 223, 0, 0, 0, 0, 237, 277, 243, + 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 263, 0, 317, 0, 0, 0, + 438, 0, 0, 0, 0, 0, 0, 0, 0, 288, + 0, 285, 191, 205, 0, 0, 327, 366, 372, 0, + 0, 0, 228, 0, 370, 341, 424, 213, 253, 363, + 346, 368, 0, 0, 369, 294, 412, 358, 422, 439, + 440, 235, 321, 430, 404, 436, 448, 206, 232, 335, + 397, 427, 388, 314, 408, 409, 284, 387, 261, 194, + 292, 198, 399, 420, 218, 380, 0, 0, 0, 200, + 418, 396, 311, 281, 282, 199, 0, 362, 239, 259, + 230, 330, 415, 416, 229, 450, 208, 435, 202, 209, + 434, 323, 411, 419, 312, 303, 201, 417, 310, 302, + 287, 249, 269, 356, 297, 357, 270, 319, 318, 320, + 0, 196, 0, 393, 428, 451, 215, 0, 0, 406, + 444, 447, 0, 359, 216, 260, 248, 355, 258, 290, + 443, 445, 446, 214, 353, 266, 334, 423, 252, 431, + 322, 210, 272, 389, 286, 295, 0, 0, 340, 371, + 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 316, 0, 0, 0, 436, 0, - 0, 0, 0, 0, 0, 0, 0, 287, 0, 284, - 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, - 228, 0, 369, 340, 423, 213, 252, 362, 345, 367, - 0, 0, 368, 293, 411, 357, 421, 437, 438, 235, - 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, - 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, - 398, 419, 218, 379, 0, 0, 0, 200, 417, 395, - 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, - 414, 415, 229, 448, 208, 433, 202, 209, 432, 322, - 410, 418, 311, 302, 201, 416, 309, 301, 286, 249, - 268, 355, 296, 356, 269, 318, 317, 319, 0, 196, - 0, 392, 427, 449, 215, 0, 0, 405, 442, 445, - 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, - 444, 214, 352, 265, 333, 422, 321, 210, 271, 388, - 285, 294, 0, 0, 339, 370, 219, 425, 389, 0, + 0, 0, 0, 190, 203, 291, 0, 360, 256, 449, + 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 290, 0, 359, 255, 447, 431, 428, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, + 212, 221, 233, 246, 254, 264, 268, 271, 274, 275, + 278, 283, 300, 305, 306, 307, 308, 324, 325, 326, + 329, 332, 333, 336, 338, 339, 342, 348, 349, 350, + 351, 352, 354, 361, 365, 373, 374, 375, 376, 377, + 378, 379, 383, 384, 385, 386, 394, 398, 413, 414, + 425, 437, 441, 265, 421, 442, 0, 299, 0, 0, + 301, 250, 267, 276, 0, 432, 395, 207, 367, 257, + 197, 224, 211, 231, 245, 247, 280, 309, 315, 344, + 347, 262, 242, 222, 364, 220, 381, 401, 402, 403, + 405, 313, 238, 331, 0, 1225, 0, 0, 0, 0, + 0, 0, 241, 0, 0, 0, 0, 0, 289, 0, + 0, 0, 345, 0, 382, 227, 298, 296, 410, 251, + 244, 240, 226, 273, 304, 343, 400, 337, 0, 293, + 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, + 225, 195, 328, 392, 255, 0, 0, 0, 177, 178, + 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, + 0, 223, 0, 0, 0, 0, 237, 277, 243, 236, + 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, - 305, 306, 307, 323, 324, 325, 328, 331, 332, 335, - 337, 338, 341, 347, 348, 349, 350, 351, 353, 360, - 364, 372, 373, 374, 375, 376, 377, 378, 382, 383, - 384, 385, 393, 397, 412, 413, 424, 435, 439, 264, - 420, 440, 0, 298, 0, 0, 300, 250, 266, 275, - 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, - 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, - 363, 220, 380, 400, 401, 402, 404, 312, 238, 330, - 0, 1210, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 288, 0, 0, 0, 344, 0, - 381, 227, 297, 295, 409, 251, 244, 240, 226, 272, - 303, 342, 399, 336, 0, 292, 0, 0, 390, 315, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 225, 195, 327, 391, - 254, 0, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 276, 243, 236, 406, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, - 0, 316, 0, 0, 0, 436, 0, 0, 0, 0, - 0, 0, 0, 0, 287, 0, 284, 191, 205, 0, - 0, 326, 365, 371, 0, 0, 0, 228, 0, 369, - 340, 423, 213, 252, 362, 345, 367, 0, 0, 368, - 293, 411, 357, 421, 437, 438, 235, 320, 429, 403, - 434, 446, 206, 232, 334, 396, 426, 387, 313, 407, - 408, 283, 386, 260, 194, 291, 198, 398, 419, 218, - 379, 0, 0, 0, 200, 417, 395, 310, 280, 281, - 199, 0, 361, 239, 258, 230, 329, 414, 415, 229, - 448, 208, 433, 202, 209, 432, 322, 410, 418, 311, - 302, 201, 416, 309, 301, 286, 249, 268, 355, 296, - 356, 269, 318, 317, 319, 0, 196, 0, 392, 427, - 449, 215, 0, 0, 405, 442, 445, 0, 358, 216, - 259, 248, 354, 257, 289, 441, 443, 444, 214, 352, - 265, 333, 422, 321, 210, 271, 388, 285, 294, 0, - 0, 339, 370, 219, 425, 389, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 290, 0, - 359, 255, 447, 431, 428, 0, 0, 234, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 204, 212, 221, 233, 246, 253, 263, 267, - 270, 273, 274, 277, 282, 299, 304, 305, 306, 307, - 323, 324, 325, 328, 331, 332, 335, 337, 338, 341, - 347, 348, 349, 350, 351, 353, 360, 364, 372, 373, - 374, 375, 376, 377, 378, 382, 383, 384, 385, 393, - 397, 412, 413, 424, 435, 439, 264, 420, 440, 0, - 298, 0, 0, 300, 250, 266, 275, 0, 430, 394, - 207, 366, 256, 197, 224, 211, 231, 245, 247, 279, - 308, 314, 343, 346, 261, 242, 222, 363, 220, 380, - 400, 401, 402, 404, 312, 238, 330, 0, 1208, 0, - 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, - 0, 288, 0, 0, 0, 344, 0, 381, 227, 297, - 295, 409, 251, 244, 240, 226, 272, 303, 342, 399, - 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 278, 225, 195, 327, 391, 254, 0, 0, - 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, - 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 263, 0, 317, 0, 0, 0, 438, + 0, 0, 0, 0, 0, 0, 0, 0, 288, 0, + 285, 191, 205, 0, 0, 327, 366, 372, 0, 0, + 0, 228, 0, 370, 341, 424, 213, 253, 363, 346, + 368, 0, 0, 369, 294, 412, 358, 422, 439, 440, + 235, 321, 430, 404, 436, 448, 206, 232, 335, 397, + 427, 388, 314, 408, 409, 284, 387, 261, 194, 292, + 198, 399, 420, 218, 380, 0, 0, 0, 200, 418, + 396, 311, 281, 282, 199, 0, 362, 239, 259, 230, + 330, 415, 416, 229, 450, 208, 435, 202, 209, 434, + 323, 411, 419, 312, 303, 201, 417, 310, 302, 287, + 249, 269, 356, 297, 357, 270, 319, 318, 320, 0, + 196, 0, 393, 428, 451, 215, 0, 0, 406, 444, + 447, 0, 359, 216, 260, 248, 355, 258, 290, 443, + 445, 446, 214, 353, 266, 334, 423, 252, 431, 322, + 210, 272, 389, 286, 295, 0, 0, 340, 371, 219, + 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 190, 203, 291, 0, 360, 256, 449, 433, + 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 262, 0, 316, 0, - 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, - 0, 287, 0, 284, 191, 205, 0, 0, 326, 365, - 371, 0, 0, 0, 228, 0, 369, 340, 423, 213, - 252, 362, 345, 367, 0, 0, 368, 293, 411, 357, - 421, 437, 438, 235, 320, 429, 403, 434, 446, 206, - 232, 334, 396, 426, 387, 313, 407, 408, 283, 386, - 260, 194, 291, 198, 398, 419, 218, 379, 0, 0, - 0, 200, 417, 395, 310, 280, 281, 199, 0, 361, - 239, 258, 230, 329, 414, 415, 229, 448, 208, 433, - 202, 209, 432, 322, 410, 418, 311, 302, 201, 416, - 309, 301, 286, 249, 268, 355, 296, 356, 269, 318, - 317, 319, 0, 196, 0, 392, 427, 449, 215, 0, - 0, 405, 442, 445, 0, 358, 216, 259, 248, 354, - 257, 289, 441, 443, 444, 214, 352, 265, 333, 422, - 321, 210, 271, 388, 285, 294, 0, 0, 339, 370, - 219, 425, 389, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, + 221, 233, 246, 254, 264, 268, 271, 274, 275, 278, + 283, 300, 305, 306, 307, 308, 324, 325, 326, 329, + 332, 333, 336, 338, 339, 342, 348, 349, 350, 351, + 352, 354, 361, 365, 373, 374, 375, 376, 377, 378, + 379, 383, 384, 385, 386, 394, 398, 413, 414, 425, + 437, 441, 265, 421, 442, 0, 299, 0, 0, 301, + 250, 267, 276, 0, 432, 395, 207, 367, 257, 197, + 224, 211, 231, 245, 247, 280, 309, 315, 344, 347, + 262, 242, 222, 364, 220, 381, 401, 402, 403, 405, + 313, 238, 331, 0, 1223, 0, 0, 0, 0, 0, + 0, 241, 0, 0, 0, 0, 0, 289, 0, 0, + 0, 345, 0, 382, 227, 298, 296, 410, 251, 244, + 240, 226, 273, 304, 343, 400, 337, 0, 293, 0, + 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 279, 225, + 195, 328, 392, 255, 0, 0, 0, 177, 178, 179, + 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, + 223, 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 203, 290, 0, 359, 255, 447, - 431, 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 253, 263, 267, 270, 273, 274, - 277, 282, 299, 304, 305, 306, 307, 323, 324, 325, - 328, 331, 332, 335, 337, 338, 341, 347, 348, 349, - 350, 351, 353, 360, 364, 372, 373, 374, 375, 376, - 377, 378, 382, 383, 384, 385, 393, 397, 412, 413, - 424, 435, 439, 264, 420, 440, 0, 298, 0, 0, - 300, 250, 266, 275, 0, 430, 394, 207, 366, 256, - 197, 224, 211, 231, 245, 247, 279, 308, 314, 343, - 346, 261, 242, 222, 363, 220, 380, 400, 401, 402, - 404, 312, 238, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 288, 0, - 0, 0, 344, 0, 381, 227, 297, 295, 409, 251, - 244, 240, 226, 272, 303, 342, 399, 336, 0, 292, - 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 225, 195, 327, 391, 254, 1183, 0, 0, 177, 178, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 0, 0, 0, 0, 237, 276, 243, 236, - 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 263, 0, 317, 0, 0, 0, 438, 0, + 0, 0, 0, 0, 0, 0, 0, 288, 0, 285, + 191, 205, 0, 0, 327, 366, 372, 0, 0, 0, + 228, 0, 370, 341, 424, 213, 253, 363, 346, 368, + 0, 0, 369, 294, 412, 358, 422, 439, 440, 235, + 321, 430, 404, 436, 448, 206, 232, 335, 397, 427, + 388, 314, 408, 409, 284, 387, 261, 194, 292, 198, + 399, 420, 218, 380, 0, 0, 0, 200, 418, 396, + 311, 281, 282, 199, 0, 362, 239, 259, 230, 330, + 415, 416, 229, 450, 208, 435, 202, 209, 434, 323, + 411, 419, 312, 303, 201, 417, 310, 302, 287, 249, + 269, 356, 297, 357, 270, 319, 318, 320, 0, 196, + 0, 393, 428, 451, 215, 0, 0, 406, 444, 447, + 0, 359, 216, 260, 248, 355, 258, 290, 443, 445, + 446, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 449, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 1221, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 0, 316, 0, 0, 0, 436, - 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, - 284, 191, 205, 0, 0, 326, 365, 371, 0, 0, - 0, 228, 0, 369, 340, 423, 213, 252, 362, 345, - 367, 0, 0, 368, 293, 411, 357, 421, 437, 438, - 235, 320, 429, 403, 434, 446, 206, 232, 334, 396, - 426, 387, 313, 407, 408, 283, 386, 260, 194, 291, - 198, 398, 419, 218, 379, 0, 0, 0, 200, 417, - 395, 310, 280, 281, 199, 0, 361, 239, 258, 230, - 329, 414, 415, 229, 448, 208, 433, 202, 209, 432, - 322, 410, 418, 311, 302, 201, 416, 309, 301, 286, - 249, 268, 355, 296, 356, 269, 318, 317, 319, 0, - 196, 0, 392, 427, 449, 215, 0, 0, 405, 442, - 445, 0, 358, 216, 259, 248, 354, 257, 289, 441, - 443, 444, 214, 352, 265, 333, 422, 321, 210, 271, - 388, 285, 294, 0, 0, 339, 370, 219, 425, 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 448, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 450, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 451, 215, 0, 0, 406, 444, 447, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 214, 353, 266, 334, 423, 252, 431, 322, 210, 272, + 389, 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 190, 203, 290, 0, 359, 255, 447, 431, 428, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 190, 203, 291, 0, 360, 256, 449, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, - 246, 253, 263, 267, 270, 273, 274, 277, 282, 299, - 304, 305, 306, 307, 323, 324, 325, 328, 331, 332, - 335, 337, 338, 341, 347, 348, 349, 350, 351, 353, - 360, 364, 372, 373, 374, 375, 376, 377, 378, 382, - 383, 384, 385, 393, 397, 412, 413, 424, 435, 439, - 264, 420, 440, 0, 298, 0, 0, 300, 250, 266, - 275, 0, 430, 394, 207, 366, 256, 197, 224, 211, - 231, 245, 247, 279, 308, 314, 343, 346, 261, 242, - 222, 363, 220, 380, 400, 401, 402, 404, 312, 238, - 1082, 0, 0, 0, 0, 0, 0, 330, 0, 0, - 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, - 0, 0, 288, 0, 0, 0, 344, 0, 381, 227, - 297, 295, 409, 251, 244, 240, 226, 272, 303, 342, - 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, + 246, 254, 264, 268, 271, 274, 275, 278, 283, 300, + 305, 306, 307, 308, 324, 325, 326, 329, 332, 333, + 336, 338, 339, 342, 348, 349, 350, 351, 352, 354, + 361, 365, 373, 374, 375, 376, 377, 378, 379, 383, + 384, 385, 386, 394, 398, 413, 414, 425, 437, 441, + 265, 421, 442, 0, 299, 0, 0, 301, 250, 267, + 276, 0, 432, 395, 207, 367, 257, 197, 224, 211, + 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, + 222, 364, 220, 381, 401, 402, 403, 405, 313, 238, + 331, 0, 1219, 0, 0, 0, 0, 0, 0, 241, + 0, 0, 0, 0, 0, 289, 0, 0, 0, 345, + 0, 382, 227, 298, 296, 410, 251, 244, 240, 226, + 273, 304, 343, 400, 337, 0, 293, 0, 0, 391, + 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 279, 225, 195, 328, + 392, 255, 0, 0, 0, 177, 178, 179, 0, 0, + 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, + 0, 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 225, 195, 327, 391, 254, 0, - 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, - 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, - 237, 276, 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 262, 0, 316, - 0, 0, 0, 436, 0, 0, 0, 0, 0, 0, - 0, 0, 287, 0, 284, 191, 205, 0, 0, 326, - 365, 371, 0, 0, 0, 228, 0, 369, 340, 423, - 213, 252, 362, 345, 367, 0, 0, 368, 293, 411, - 357, 421, 437, 438, 235, 320, 429, 403, 434, 446, - 206, 232, 334, 396, 426, 387, 313, 407, 408, 283, - 386, 260, 194, 291, 198, 398, 419, 218, 379, 0, - 0, 0, 200, 417, 395, 310, 280, 281, 199, 0, - 361, 239, 258, 230, 329, 414, 415, 229, 448, 208, - 433, 202, 209, 432, 322, 410, 418, 311, 302, 201, - 416, 309, 301, 286, 249, 268, 355, 296, 356, 269, - 318, 317, 319, 0, 196, 0, 392, 427, 449, 215, - 0, 0, 405, 442, 445, 0, 358, 216, 259, 248, - 354, 257, 289, 441, 443, 444, 214, 352, 265, 333, - 422, 321, 210, 271, 388, 285, 294, 0, 0, 339, - 370, 219, 425, 389, 0, 0, 0, 0, 0, 0, + 263, 0, 317, 0, 0, 0, 438, 0, 0, 0, + 0, 0, 0, 0, 0, 288, 0, 285, 191, 205, + 0, 0, 327, 366, 372, 0, 0, 0, 228, 0, + 370, 341, 424, 213, 253, 363, 346, 368, 0, 0, + 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, + 404, 436, 448, 206, 232, 335, 397, 427, 388, 314, + 408, 409, 284, 387, 261, 194, 292, 198, 399, 420, + 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, + 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, + 229, 450, 208, 435, 202, 209, 434, 323, 411, 419, + 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, + 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, + 428, 451, 215, 0, 0, 406, 444, 447, 0, 359, + 216, 260, 248, 355, 258, 290, 443, 445, 446, 214, + 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, + 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 190, 203, 290, 0, 359, 255, - 447, 431, 428, 0, 0, 234, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, + 203, 291, 0, 360, 256, 449, 433, 429, 0, 0, + 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, + 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, + 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, + 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, + 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, + 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, + 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, + 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, + 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, + 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, + 0, 1215, 0, 0, 0, 0, 0, 0, 241, 0, + 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, + 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, + 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, + 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, + 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, + 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, - 204, 212, 221, 233, 246, 253, 263, 267, 270, 273, - 274, 277, 282, 299, 304, 305, 306, 307, 323, 324, - 325, 328, 331, 332, 335, 337, 338, 341, 347, 348, - 349, 350, 351, 353, 360, 364, 372, 373, 374, 375, - 376, 377, 378, 382, 383, 384, 385, 393, 397, 412, - 413, 424, 435, 439, 264, 420, 440, 0, 298, 0, - 0, 300, 250, 266, 275, 0, 430, 394, 207, 366, - 256, 197, 224, 211, 231, 245, 247, 279, 308, 314, - 343, 346, 261, 242, 222, 363, 220, 380, 400, 401, - 402, 404, 312, 238, 330, 0, 0, 0, 0, 0, - 0, 0, 1073, 241, 0, 0, 0, 0, 0, 288, - 0, 0, 0, 344, 0, 381, 227, 297, 295, 409, - 251, 244, 240, 226, 272, 303, 342, 399, 336, 0, - 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 278, 225, 195, 327, 391, 254, 0, 0, 0, 177, - 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, - 217, 0, 223, 0, 0, 0, 0, 237, 276, 243, - 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 0, 316, 0, 0, 0, - 436, 0, 0, 0, 0, 0, 0, 0, 0, 287, - 0, 284, 191, 205, 0, 0, 326, 365, 371, 0, - 0, 0, 228, 0, 369, 340, 423, 213, 252, 362, - 345, 367, 0, 0, 368, 293, 411, 357, 421, 437, - 438, 235, 320, 429, 403, 434, 446, 206, 232, 334, - 396, 426, 387, 313, 407, 408, 283, 386, 260, 194, - 291, 198, 398, 419, 218, 379, 0, 0, 0, 200, - 417, 395, 310, 280, 281, 199, 0, 361, 239, 258, - 230, 329, 414, 415, 229, 448, 208, 433, 202, 209, - 432, 322, 410, 418, 311, 302, 201, 416, 309, 301, - 286, 249, 268, 355, 296, 356, 269, 318, 317, 319, - 0, 196, 0, 392, 427, 449, 215, 0, 0, 405, - 442, 445, 0, 358, 216, 259, 248, 354, 257, 289, - 441, 443, 444, 214, 352, 265, 333, 422, 321, 210, - 271, 388, 285, 294, 0, 0, 339, 370, 219, 425, - 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 190, 203, 290, 0, 359, 255, 447, 431, 428, - 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, - 233, 246, 253, 263, 267, 270, 273, 274, 277, 282, - 299, 304, 305, 306, 307, 323, 324, 325, 328, 331, - 332, 335, 337, 338, 341, 347, 348, 349, 350, 351, - 353, 360, 364, 372, 373, 374, 375, 376, 377, 378, - 382, 383, 384, 385, 393, 397, 412, 413, 424, 435, - 439, 264, 420, 440, 0, 298, 0, 0, 300, 250, - 266, 275, 0, 430, 394, 207, 366, 256, 197, 224, - 211, 231, 245, 247, 279, 308, 314, 343, 346, 261, - 242, 222, 363, 220, 380, 400, 401, 402, 404, 312, - 238, 330, 0, 0, 0, 0, 0, 0, 0, 0, - 241, 0, 0, 0, 0, 0, 288, 0, 0, 0, - 344, 0, 381, 227, 297, 295, 409, 251, 244, 240, - 226, 272, 303, 342, 399, 336, 0, 292, 0, 0, - 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 278, 225, 195, - 327, 391, 254, 0, 0, 0, 177, 178, 179, 0, - 931, 0, 0, 0, 0, 0, 0, 217, 0, 223, - 0, 0, 0, 0, 237, 276, 243, 236, 406, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 262, 0, 316, 0, 0, 0, 436, 0, 0, - 0, 0, 0, 0, 0, 0, 287, 0, 284, 191, - 205, 0, 0, 326, 365, 371, 0, 0, 0, 228, - 0, 369, 340, 423, 213, 252, 362, 345, 367, 0, - 0, 368, 293, 411, 357, 421, 437, 438, 235, 320, - 429, 403, 434, 446, 206, 232, 334, 396, 426, 387, - 313, 407, 408, 283, 386, 260, 194, 291, 198, 398, - 419, 218, 379, 0, 0, 0, 200, 417, 395, 310, - 280, 281, 199, 0, 361, 239, 258, 230, 329, 414, - 415, 229, 448, 208, 433, 202, 209, 432, 322, 410, - 418, 311, 302, 201, 416, 309, 301, 286, 249, 268, - 355, 296, 356, 269, 318, 317, 319, 0, 196, 0, - 392, 427, 449, 215, 0, 0, 405, 442, 445, 0, - 358, 216, 259, 248, 354, 257, 289, 441, 443, 444, - 214, 352, 265, 333, 422, 321, 210, 271, 388, 285, - 294, 0, 0, 339, 370, 219, 425, 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, - 290, 0, 359, 255, 447, 431, 428, 0, 0, 234, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 193, 204, 212, 221, 233, 246, 253, - 263, 267, 270, 273, 274, 277, 282, 299, 304, 305, - 306, 307, 323, 324, 325, 328, 331, 332, 335, 337, - 338, 341, 347, 348, 349, 350, 351, 353, 360, 364, - 372, 373, 374, 375, 376, 377, 378, 382, 383, 384, - 385, 393, 397, 412, 413, 424, 435, 439, 264, 420, - 440, 0, 298, 0, 0, 300, 250, 266, 275, 0, - 430, 394, 207, 366, 256, 197, 224, 211, 231, 245, - 247, 279, 308, 314, 343, 346, 261, 242, 222, 363, - 220, 380, 400, 401, 402, 404, 312, 238, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, - 0, 0, 0, 288, 0, 0, 0, 344, 0, 381, - 227, 297, 295, 409, 251, 244, 240, 226, 272, 303, - 342, 399, 336, 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 278, 225, 195, 327, 391, 254, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, + 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, + 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, + 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, + 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, + 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, + 436, 448, 206, 232, 335, 397, 427, 388, 314, 408, + 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, + 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, + 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, + 450, 208, 435, 202, 209, 434, 323, 411, 419, 312, + 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, + 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, + 451, 215, 0, 0, 406, 444, 447, 0, 359, 216, + 260, 248, 355, 258, 290, 443, 445, 446, 214, 353, + 266, 334, 423, 252, 431, 322, 210, 272, 389, 286, + 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 291, 0, 360, 256, 449, 433, 429, 0, 0, 234, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 254, + 264, 268, 271, 274, 275, 278, 283, 300, 305, 306, + 307, 308, 324, 325, 326, 329, 332, 333, 336, 338, + 339, 342, 348, 349, 350, 351, 352, 354, 361, 365, + 373, 374, 375, 376, 377, 378, 379, 383, 384, 385, + 386, 394, 398, 413, 414, 425, 437, 441, 265, 421, + 442, 0, 299, 0, 0, 301, 250, 267, 276, 0, + 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, + 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, + 220, 381, 401, 402, 403, 405, 313, 238, 331, 0, + 1213, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 345, 0, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 0, 293, 0, 0, 391, 316, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 279, 225, 195, 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, - 0, 237, 276, 243, 236, 406, 0, 0, 0, 0, + 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, + 317, 0, 0, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 288, 0, 285, 191, 205, 0, 0, + 327, 366, 372, 0, 0, 0, 228, 0, 370, 341, + 424, 213, 253, 363, 346, 368, 0, 0, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 448, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 450, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 451, + 215, 0, 0, 406, 444, 447, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 214, 353, 266, + 334, 423, 252, 431, 322, 210, 272, 389, 286, 295, + 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 190, 203, 291, + 0, 360, 256, 449, 433, 429, 0, 0, 234, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 193, 204, 212, 221, 233, 246, 254, 264, + 268, 271, 274, 275, 278, 283, 300, 305, 306, 307, + 308, 324, 325, 326, 329, 332, 333, 336, 338, 339, + 342, 348, 349, 350, 351, 352, 354, 361, 365, 373, + 374, 375, 376, 377, 378, 379, 383, 384, 385, 386, + 394, 398, 413, 414, 425, 437, 441, 265, 421, 442, + 0, 299, 0, 0, 301, 250, 267, 276, 0, 432, + 395, 207, 367, 257, 197, 224, 211, 231, 245, 247, + 280, 309, 315, 344, 347, 262, 242, 222, 364, 220, + 381, 401, 402, 403, 405, 313, 238, 331, 0, 1211, + 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, + 0, 0, 289, 0, 0, 0, 345, 0, 382, 227, + 298, 296, 410, 251, 244, 240, 226, 273, 304, 343, + 400, 337, 0, 293, 0, 0, 391, 316, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 279, 225, 195, 328, 392, 255, 0, + 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, + 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, + 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 263, 0, 317, + 0, 0, 0, 438, 0, 0, 0, 0, 0, 0, + 0, 0, 288, 0, 285, 191, 205, 0, 0, 327, + 366, 372, 0, 0, 0, 228, 0, 370, 341, 424, + 213, 253, 363, 346, 368, 0, 0, 369, 294, 412, + 358, 422, 439, 440, 235, 321, 430, 404, 436, 448, + 206, 232, 335, 397, 427, 388, 314, 408, 409, 284, + 387, 261, 194, 292, 198, 399, 420, 218, 380, 0, + 0, 0, 200, 418, 396, 311, 281, 282, 199, 0, + 362, 239, 259, 230, 330, 415, 416, 229, 450, 208, + 435, 202, 209, 434, 323, 411, 419, 312, 303, 201, + 417, 310, 302, 287, 249, 269, 356, 297, 357, 270, + 319, 318, 320, 0, 196, 0, 393, 428, 451, 215, + 0, 0, 406, 444, 447, 0, 359, 216, 260, 248, + 355, 258, 290, 443, 445, 446, 214, 353, 266, 334, + 423, 252, 431, 322, 210, 272, 389, 286, 295, 0, + 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 203, 291, 0, + 360, 256, 449, 433, 429, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, + 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, + 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, + 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, + 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, + 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, + 299, 0, 0, 301, 250, 267, 276, 0, 432, 395, + 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, + 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, + 401, 402, 403, 405, 313, 238, 331, 0, 0, 0, + 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, + 0, 289, 0, 0, 0, 345, 0, 382, 227, 298, + 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, + 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 279, 225, 195, 328, 392, 255, 1186, 0, + 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, + 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, + 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 497, 0, 262, 0, - 316, 0, 0, 0, 436, 0, 0, 0, 0, 0, - 0, 0, 0, 287, 0, 284, 191, 205, 0, 0, - 326, 365, 371, 0, 0, 0, 228, 0, 369, 340, - 423, 213, 252, 362, 345, 367, 0, 0, 368, 293, - 411, 357, 421, 437, 438, 235, 320, 429, 403, 434, - 446, 206, 232, 334, 396, 426, 387, 313, 407, 408, - 283, 386, 260, 194, 291, 198, 398, 419, 218, 379, - 0, 0, 0, 200, 417, 395, 310, 280, 281, 199, - 0, 361, 239, 258, 230, 329, 414, 415, 229, 448, - 208, 433, 202, 209, 432, 322, 410, 418, 311, 302, - 201, 416, 309, 301, 286, 249, 268, 355, 296, 356, - 269, 318, 317, 319, 0, 196, 0, 392, 427, 449, - 215, 0, 0, 405, 442, 445, 0, 358, 216, 259, - 248, 354, 257, 289, 441, 443, 444, 214, 352, 265, - 333, 422, 321, 210, 271, 388, 285, 294, 0, 0, - 339, 370, 219, 425, 389, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 263, 0, 317, 0, + 0, 0, 438, 0, 0, 0, 0, 0, 0, 0, + 0, 288, 0, 285, 191, 205, 0, 0, 327, 366, + 372, 0, 0, 0, 228, 0, 370, 341, 424, 213, + 253, 363, 346, 368, 0, 0, 369, 294, 412, 358, + 422, 439, 440, 235, 321, 430, 404, 436, 448, 206, + 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, + 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, + 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, + 239, 259, 230, 330, 415, 416, 229, 450, 208, 435, + 202, 209, 434, 323, 411, 419, 312, 303, 201, 417, + 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, + 318, 320, 0, 196, 0, 393, 428, 451, 215, 0, + 0, 406, 444, 447, 0, 359, 216, 260, 248, 355, + 258, 290, 443, 445, 446, 214, 353, 266, 334, 423, + 252, 431, 322, 210, 272, 389, 286, 295, 0, 0, + 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 190, 203, 290, 0, 359, - 255, 447, 431, 428, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 190, 203, 291, 0, 360, + 256, 449, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, - 193, 204, 212, 221, 233, 246, 253, 263, 267, 270, - 273, 274, 277, 282, 299, 304, 305, 306, 307, 323, - 324, 325, 328, 331, 332, 335, 337, 338, 341, 347, - 348, 349, 350, 351, 353, 360, 364, 372, 373, 374, - 375, 376, 377, 378, 382, 383, 384, 385, 393, 397, - 412, 413, 424, 435, 439, 496, 420, 440, 0, 298, - 0, 0, 300, 250, 266, 275, 0, 430, 394, 207, - 366, 256, 197, 224, 211, 231, 245, 247, 279, 308, - 314, 343, 346, 261, 242, 222, 363, 220, 380, 400, - 401, 402, 404, 312, 238, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, - 288, 0, 0, 0, 344, 0, 381, 227, 297, 295, - 409, 251, 244, 240, 226, 272, 303, 342, 399, 336, - 0, 292, 0, 0, 390, 315, 0, 0, 0, 0, + 193, 204, 212, 221, 233, 246, 254, 264, 268, 271, + 274, 275, 278, 283, 300, 305, 306, 307, 308, 324, + 325, 326, 329, 332, 333, 336, 338, 339, 342, 348, + 349, 350, 351, 352, 354, 361, 365, 373, 374, 375, + 376, 377, 378, 379, 383, 384, 385, 386, 394, 398, + 413, 414, 425, 437, 441, 265, 421, 442, 0, 299, + 0, 0, 301, 250, 267, 276, 0, 432, 395, 207, + 367, 257, 197, 224, 211, 231, 245, 247, 280, 309, + 315, 344, 347, 262, 242, 222, 364, 220, 381, 401, + 402, 403, 405, 313, 238, 1085, 0, 0, 0, 0, + 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, + 0, 241, 0, 0, 0, 0, 0, 289, 0, 0, + 0, 345, 0, 382, 227, 298, 296, 410, 251, 244, + 240, 226, 273, 304, 343, 400, 337, 0, 293, 0, + 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 279, 225, + 195, 328, 392, 255, 0, 0, 0, 177, 178, 179, + 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, + 223, 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 225, 195, 327, 391, 254, 0, 0, 0, - 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, - 0, 217, 0, 223, 0, 0, 0, 0, 237, 276, - 243, 236, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 262, 0, 316, 0, 185, - 0, 436, 0, 0, 0, 0, 0, 0, 0, 0, - 287, 0, 284, 191, 205, 0, 0, 326, 365, 371, - 0, 0, 0, 228, 0, 369, 340, 423, 213, 252, - 362, 345, 367, 0, 0, 368, 293, 411, 357, 421, - 437, 438, 235, 320, 429, 403, 434, 446, 206, 232, - 334, 396, 426, 387, 313, 407, 408, 283, 386, 260, - 194, 291, 198, 398, 419, 218, 379, 0, 0, 0, - 200, 417, 395, 310, 280, 281, 199, 0, 361, 239, - 258, 230, 329, 414, 415, 229, 448, 208, 433, 202, - 209, 432, 322, 410, 418, 311, 302, 201, 416, 309, - 301, 286, 249, 268, 355, 296, 356, 269, 318, 317, - 319, 0, 196, 0, 392, 427, 449, 215, 0, 0, - 405, 442, 445, 0, 358, 216, 259, 248, 354, 257, - 289, 441, 443, 444, 214, 352, 265, 333, 422, 321, - 210, 271, 388, 285, 294, 0, 0, 339, 370, 219, - 425, 389, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 263, 0, 317, 0, 0, 0, 438, 0, + 0, 0, 0, 0, 0, 0, 0, 288, 0, 285, + 191, 205, 0, 0, 327, 366, 372, 0, 0, 0, + 228, 0, 370, 341, 424, 213, 253, 363, 346, 368, + 0, 0, 369, 294, 412, 358, 422, 439, 440, 235, + 321, 430, 404, 436, 448, 206, 232, 335, 397, 427, + 388, 314, 408, 409, 284, 387, 261, 194, 292, 198, + 399, 420, 218, 380, 0, 0, 0, 200, 418, 396, + 311, 281, 282, 199, 0, 362, 239, 259, 230, 330, + 415, 416, 229, 450, 208, 435, 202, 209, 434, 323, + 411, 419, 312, 303, 201, 417, 310, 302, 287, 249, + 269, 356, 297, 357, 270, 319, 318, 320, 0, 196, + 0, 393, 428, 451, 215, 0, 0, 406, 444, 447, + 0, 359, 216, 260, 248, 355, 258, 290, 443, 445, + 446, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 190, 203, 290, 0, 359, 255, 447, 431, - 428, 0, 0, 234, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 449, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, - 221, 233, 246, 253, 263, 267, 270, 273, 274, 277, - 282, 299, 304, 305, 306, 307, 323, 324, 325, 328, - 331, 332, 335, 337, 338, 341, 347, 348, 349, 350, - 351, 353, 360, 364, 372, 373, 374, 375, 376, 377, - 378, 382, 383, 384, 385, 393, 397, 412, 413, 424, - 435, 439, 264, 420, 440, 0, 298, 0, 0, 300, - 250, 266, 275, 0, 430, 394, 207, 366, 256, 197, - 224, 211, 231, 245, 247, 279, 308, 314, 343, 346, - 261, 242, 222, 363, 220, 380, 400, 401, 402, 404, - 312, 238, 330, 0, 0, 0, 0, 0, 0, 0, - 0, 241, 0, 0, 0, 0, 0, 288, 0, 0, - 0, 344, 0, 381, 227, 297, 295, 409, 251, 244, - 240, 226, 272, 303, 342, 399, 336, 0, 292, 0, - 0, 390, 315, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 278, 225, - 195, 327, 391, 254, 0, 0, 0, 177, 178, 179, - 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, - 223, 0, 0, 0, 0, 237, 276, 243, 236, 406, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 0, 0, 0, 0, 0, 0, 1076, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 448, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 450, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 451, 215, 0, 0, 406, 444, 447, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 214, 353, 266, 334, 423, 252, 431, 322, 210, 272, + 389, 286, 295, 0, 0, 340, 371, 219, 426, 390, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 190, 203, 291, 0, 360, 256, 449, 433, 429, 0, + 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, + 246, 254, 264, 268, 271, 274, 275, 278, 283, 300, + 305, 306, 307, 308, 324, 325, 326, 329, 332, 333, + 336, 338, 339, 342, 348, 349, 350, 351, 352, 354, + 361, 365, 373, 374, 375, 376, 377, 378, 379, 383, + 384, 385, 386, 394, 398, 413, 414, 425, 437, 441, + 265, 421, 442, 0, 299, 0, 0, 301, 250, 267, + 276, 0, 432, 395, 207, 367, 257, 197, 224, 211, + 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, + 222, 364, 220, 381, 401, 402, 403, 405, 313, 238, + 331, 0, 0, 0, 0, 0, 0, 0, 0, 241, + 0, 0, 0, 0, 0, 289, 0, 0, 0, 345, + 0, 382, 227, 298, 296, 410, 251, 244, 240, 226, + 273, 304, 343, 400, 337, 0, 293, 0, 0, 391, + 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 279, 225, 195, 328, + 392, 255, 0, 0, 0, 177, 178, 179, 0, 934, + 0, 0, 0, 0, 0, 0, 217, 0, 223, 0, + 0, 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 0, 316, 0, 0, 0, 436, 0, - 0, 0, 0, 0, 0, 0, 0, 287, 0, 284, - 191, 205, 0, 0, 326, 365, 371, 0, 0, 0, - 228, 0, 369, 340, 423, 213, 252, 362, 345, 367, - 0, 0, 368, 293, 411, 357, 421, 437, 438, 235, - 320, 429, 403, 434, 446, 206, 232, 334, 396, 426, - 387, 313, 407, 408, 283, 386, 260, 194, 291, 198, - 398, 419, 218, 379, 0, 0, 0, 200, 417, 395, - 310, 280, 281, 199, 0, 361, 239, 258, 230, 329, - 414, 415, 229, 448, 208, 433, 202, 209, 432, 322, - 410, 418, 311, 302, 201, 416, 309, 301, 286, 249, - 268, 355, 296, 356, 269, 318, 317, 319, 0, 196, - 0, 392, 427, 449, 215, 0, 0, 405, 442, 445, - 0, 358, 216, 259, 248, 354, 257, 289, 441, 443, - 444, 214, 352, 265, 333, 422, 321, 210, 271, 388, - 285, 294, 0, 0, 339, 370, 219, 425, 389, 0, + 263, 0, 317, 0, 0, 0, 438, 0, 0, 0, + 0, 0, 0, 0, 0, 288, 0, 285, 191, 205, + 0, 0, 327, 366, 372, 0, 0, 0, 228, 0, + 370, 341, 424, 213, 253, 363, 346, 368, 0, 0, + 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, + 404, 436, 448, 206, 232, 335, 397, 427, 388, 314, + 408, 409, 284, 387, 261, 194, 292, 198, 399, 420, + 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, + 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, + 229, 450, 208, 435, 202, 209, 434, 323, 411, 419, + 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, + 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, + 428, 451, 215, 0, 0, 406, 444, 447, 0, 359, + 216, 260, 248, 355, 258, 290, 443, 445, 446, 214, + 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, + 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 290, 0, 359, 255, 447, 431, 428, 0, 0, + 203, 291, 0, 360, 256, 449, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 253, 263, 267, 270, 273, 274, 277, 282, 299, 304, - 305, 306, 307, 323, 324, 325, 328, 331, 332, 335, - 337, 338, 341, 347, 348, 349, 350, 351, 353, 360, - 364, 372, 373, 374, 375, 376, 377, 378, 382, 383, - 384, 385, 393, 397, 412, 413, 424, 435, 439, 264, - 420, 440, 0, 298, 0, 0, 300, 250, 266, 275, - 0, 430, 394, 207, 366, 256, 197, 224, 211, 231, - 245, 247, 279, 308, 314, 343, 346, 261, 242, 222, - 363, 220, 380, 400, 401, 402, 404, 312, 238, + 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, + 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, + 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, + 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, + 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, + 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, + 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, + 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, + 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, + 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, + 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, + 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, + 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, + 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, + 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, + 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 499, 0, 263, + 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, + 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, + 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, + 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, + 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, + 436, 448, 206, 232, 335, 397, 427, 388, 314, 408, + 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, + 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, + 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, + 450, 208, 435, 202, 209, 434, 323, 411, 419, 312, + 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, + 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, + 451, 215, 0, 0, 406, 444, 447, 0, 359, 216, + 260, 248, 355, 258, 290, 443, 445, 446, 214, 353, + 266, 334, 423, 252, 431, 322, 210, 272, 389, 286, + 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 291, 0, 360, 256, 449, 433, 429, 0, 0, 234, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 254, + 264, 268, 271, 274, 275, 278, 283, 300, 305, 306, + 307, 308, 324, 325, 326, 329, 332, 333, 336, 338, + 339, 342, 348, 349, 350, 351, 352, 354, 361, 365, + 373, 374, 375, 376, 377, 378, 379, 383, 384, 385, + 386, 394, 398, 413, 414, 425, 437, 441, 498, 421, + 442, 0, 299, 0, 0, 301, 250, 267, 276, 0, + 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, + 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, + 220, 381, 401, 402, 403, 405, 313, 238, 331, 0, + 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 345, 0, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 0, 293, 0, 0, 391, 316, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 279, 225, 195, 328, 392, 255, + 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, + 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, + 317, 0, 185, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 288, 0, 285, 191, 205, 0, 0, + 327, 366, 372, 0, 0, 0, 228, 0, 370, 341, + 424, 213, 253, 363, 346, 368, 0, 0, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 448, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 450, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 451, + 215, 0, 0, 406, 444, 447, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 214, 353, 266, + 334, 423, 252, 431, 322, 210, 272, 389, 286, 295, + 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 190, 203, 291, + 0, 360, 256, 449, 433, 429, 0, 0, 234, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 193, 204, 212, 221, 233, 246, 254, 264, + 268, 271, 274, 275, 278, 283, 300, 305, 306, 307, + 308, 324, 325, 326, 329, 332, 333, 336, 338, 339, + 342, 348, 349, 350, 351, 352, 354, 361, 365, 373, + 374, 375, 376, 377, 378, 379, 383, 384, 385, 386, + 394, 398, 413, 414, 425, 437, 441, 265, 421, 442, + 0, 299, 0, 0, 301, 250, 267, 276, 0, 432, + 395, 207, 367, 257, 197, 224, 211, 231, 245, 247, + 280, 309, 315, 344, 347, 262, 242, 222, 364, 220, + 381, 401, 402, 403, 405, 313, 238, 331, 0, 0, + 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, + 0, 0, 289, 0, 0, 0, 345, 0, 382, 227, + 298, 296, 410, 251, 244, 240, 226, 273, 304, 343, + 400, 337, 0, 293, 0, 0, 391, 316, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 279, 225, 195, 328, 392, 255, 0, + 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, + 0, 0, 0, 217, 0, 223, 0, 0, 0, 0, + 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 263, 0, 317, + 0, 0, 0, 438, 0, 0, 0, 0, 0, 0, + 0, 0, 288, 0, 285, 191, 205, 0, 0, 327, + 366, 372, 0, 0, 0, 228, 0, 370, 341, 424, + 213, 253, 363, 346, 368, 0, 0, 369, 294, 412, + 358, 422, 439, 440, 235, 321, 430, 404, 436, 448, + 206, 232, 335, 397, 427, 388, 314, 408, 409, 284, + 387, 261, 194, 292, 198, 399, 420, 218, 380, 0, + 0, 0, 200, 418, 396, 311, 281, 282, 199, 0, + 362, 239, 259, 230, 330, 415, 416, 229, 450, 208, + 435, 202, 209, 434, 323, 411, 419, 312, 303, 201, + 417, 310, 302, 287, 249, 269, 356, 297, 357, 270, + 319, 318, 320, 0, 196, 0, 393, 428, 451, 215, + 0, 0, 406, 444, 447, 0, 359, 216, 260, 248, + 355, 258, 290, 443, 445, 446, 214, 353, 266, 334, + 423, 252, 431, 322, 210, 272, 389, 286, 295, 0, + 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 203, 291, 0, + 360, 256, 449, 433, 429, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, + 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, + 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, + 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, + 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, + 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, + 299, 0, 0, 301, 250, 267, 276, 0, 432, 395, + 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, + 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, + 401, 402, 403, 405, 313, 238, } var yyPact = [...]int{ - 2414, -1000, -339, 1597, -1000, -1000, -1000, -1000, -1000, -1000, + 4075, -1000, -339, 1534, -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, 1563, 1185, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 540, 1217, 180, 1479, 4145, 163, 904, 393, 80, - 26856, 392, 84, 27303, -1000, 123, -1000, 110, 27303, 119, - 26409, -1000, -1000, -279, 12519, 1406, 48, 40, 27303, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1214, 1542, 1539, - 1558, 1041, 1467, -1000, 10718, 10718, 337, 337, 337, 8930, - -1000, -1000, 16555, 27303, 27303, 1230, 391, 904, 387, 384, - 382, 334, -99, -1000, -1000, -1000, -1000, 1479, -1000, -1000, - 153, -1000, 266, 1155, -1000, 1153, -1000, 445, 413, 263, - 320, 318, 262, 260, 258, 252, 249, 247, 242, 232, - 259, -1000, 542, 542, -165, -170, 2069, 313, 313, 313, - 357, 1432, 1430, -1000, 486, -1000, 542, 542, 151, 542, - 542, 542, 542, 210, 205, 542, 542, 542, 542, 542, - 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, - 27303, -1000, 159, 512, 578, 1479, 198, -1000, -1000, -1000, - 27303, 390, 904, 299, 299, 27303, -1000, 444, -1000, -1000, + -1000, -1000, 1499, 1161, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 545, 1169, 137, 1416, 275, 172, 928, 392, 119, + 27059, 391, 113, 27508, -1000, 102, -1000, 94, 27508, 98, + 26610, -1000, -1000, -278, 12658, 1343, 27, 14, 27508, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1185, 1452, 1468, + 1495, 1011, 1407, -1000, 10849, 10849, 327, 327, 327, 9053, + -1000, -1000, 16712, 27508, 27508, 1176, 387, 928, 378, 376, + 375, 314, -113, -1000, -1000, -1000, -1000, 1416, -1000, -1000, + 170, -1000, 190, 1143, -1000, 1141, -1000, 569, 586, 247, + 295, 283, 246, 245, 243, 242, 227, 224, 220, 219, + 208, -1000, 511, 511, -171, -175, 1955, 304, 304, 304, + 348, 1386, 1385, -1000, 548, -1000, 511, 511, 157, 511, + 511, 511, 511, 165, 163, 511, 511, 511, 511, 511, + 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, + 27508, -1000, 144, 512, 555, 1416, 158, -1000, -1000, -1000, + 27508, 385, 928, 309, 309, 27508, -1000, 433, -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, @@ -4000,24 +4025,23 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 27303, 606, 606, 39, 606, 606, 606, 606, 104, 466, - 18, -1000, 95, 199, 194, 186, 659, 59, 250, -1000, - -1000, 177, 117, -1000, 606, 7086, 7086, 7086, -1000, 1451, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 356, -1000, - -1000, -1000, -1000, 27303, 25962, 279, 563, -1000, -1000, -1000, - -2, -1000, -1000, 1071, 763, -1000, 12519, 1283, 1158, 1158, - -1000, -1000, 417, -1000, -1000, 13860, 13860, 13860, 13860, 13860, - 13860, 13860, 13860, 13860, 13860, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1158, - 440, -1000, 12072, 1158, 1158, 1158, 1158, 1158, 1158, 1158, - 1158, 12519, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, - 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, -1000, -1000, - -1000, 27303, -1000, 1158, 1563, -1000, 1185, -1000, -1000, -1000, - 1448, 12519, 12519, 1563, -1000, 1342, 10718, -1000, -1000, 1424, - -1000, -1000, -1000, -1000, 705, 1584, -1000, 15201, 439, 1582, - 25515, -1000, 19250, 25068, 1151, 8469, -16, -1000, -1000, -1000, - 560, 18356, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 27508, 609, 609, 53, 609, 609, 609, 609, + 85, 420, 13, -1000, 78, 151, 149, 155, 589, 123, + 63, -1000, -1000, 153, 103, -1000, 609, 7201, 7201, 7201, + -1000, 1396, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 343, -1000, -1000, -1000, -1000, 27508, 26161, 258, 544, -1000, + -1000, -1000, 49, -1000, -1000, 1078, 753, -1000, 12658, 2116, + 1146, 1146, -1000, -1000, 407, -1000, -1000, 14005, 14005, 14005, + 14005, 14005, 14005, 14005, 14005, 14005, 14005, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 1146, 432, -1000, 12209, 1146, 1146, 1146, 1146, 1146, + 1146, 1146, 1146, 12658, 1146, 1146, 1146, 1146, 1146, 1146, + 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, + -1000, -1000, -1000, 27508, -1000, 1146, 1499, -1000, 1161, -1000, + -1000, -1000, 1401, 12658, 12658, 1499, -1000, 1279, 10849, -1000, + -1000, 1374, -1000, -1000, -1000, -1000, 701, 1513, -1000, 15352, + 430, 1512, 25712, -1000, 19419, 25263, 1140, 8590, -61, -1000, + -1000, -1000, 540, 18521, -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, @@ -4030,185 +4054,187 @@ 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, 1451, 1060, 27303, -1000, -1000, 4413, 904, - -1000, 1205, -1000, 1055, -1000, 1169, 159, 334, 1235, 904, - 904, 904, 904, 570, -1000, -1000, -1000, 542, 542, 253, - 4145, 4065, -1000, -1000, -1000, 24614, 1197, 904, -1000, 1196, - -1000, 1492, 329, 510, 510, 904, -1000, -1000, 27303, 904, - 1489, 1488, 27303, 27303, -1000, 24167, -1000, 23720, 23273, 878, - 27303, 22826, 22379, 21932, 21485, 21038, -1000, 1278, -1000, 1178, - -1000, -1000, -1000, 27303, 27303, 27303, 44, -1000, -1000, 27303, - 904, -1000, -1000, 868, 857, 542, 542, 839, 949, 948, - 945, 542, 542, 834, 942, 935, 173, 815, 805, 803, - 888, 939, 107, 844, 810, 796, 27303, 1194, -1000, 149, - 554, 216, 255, 195, 27303, 143, 1479, 1404, 1149, 354, - 299, 1276, 27303, 1506, 904, -1000, 7547, -1000, -1000, 937, - 12519, -1000, 661, 659, 659, -1000, -1000, -1000, -1000, -1000, - -1000, 606, 27303, 661, -1000, -1000, -1000, 659, 606, 27303, - 606, 606, 606, 606, 659, 606, 27303, 27303, 7086, 7086, - 7086, 27303, 7086, 7086, 27303, 7086, 7086, 507, -1000, 1275, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 115, -1000, -1000, - -1000, -1000, -1000, 1597, -1000, -1000, -1000, -113, 1143, 20591, - -1000, -283, -284, -285, -286, -1000, -1000, -1000, -287, -292, - -1000, -1000, -1000, 12519, 12519, 12519, 12519, 734, 513, 13860, - 729, 693, 13860, 13860, 13860, 13860, 13860, 13860, 13860, 13860, - 13860, 13860, 13860, 13860, 13860, 13860, 13860, 591, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 904, -1000, 1595, 906, - 906, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 14307, 9377, 7547, 1041, 1043, 1563, 10718, 10718, 12519, 12519, - 11612, 11165, 10718, 1477, 545, 763, 27303, -1000, -1000, 13413, - -1000, -1000, -1000, -1000, -1000, 970, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 27303, 27303, 10718, 10718, 10718, 10718, 10718, - -1000, 1139, -1000, -155, 16108, 12519, 1539, 1041, 1424, 1496, - 1589, 479, 845, 1132, -1000, 813, 1539, 17909, 1162, -1000, - 1424, -1000, -1000, -1000, 27303, -1000, -1000, 20144, -1000, -1000, - 6625, 27303, 230, 27303, -1000, 1129, 1389, -1000, -1000, -1000, - 1524, 17462, 27303, 1087, 1081, -1000, -1000, 438, 8008, -16, - -1000, 8008, 1106, -1000, -27, -33, 9824, 452, -1000, -1000, - -1000, 2069, 14754, 1045, -1000, 60, -1000, -1000, -1000, 1169, - -1000, 1169, 1169, 1169, 1169, 44, 44, 44, 44, -1000, - -1000, -1000, -1000, -1000, 1191, 1190, -1000, 1169, 1169, 1169, - 1169, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1189, 1189, - 1189, 1171, 1171, 308, -1000, 12519, 105, 27303, 1512, 793, - 149, 27303, 1273, -1000, 27303, 1235, 1235, 1235, -1000, 1502, - 930, 924, -1000, 1131, -1000, -1000, 1557, -1000, -1000, 482, - 648, 647, 464, 27303, 133, 227, -1000, 290, -1000, 27303, - 1187, 1487, 510, 904, -1000, 904, -1000, -1000, -1000, -1000, - 437, -1000, -1000, 904, 1130, -1000, 1124, 774, 630, 634, - 627, 1130, -1000, -1000, -136, 1130, -1000, 1130, -1000, 1130, - -1000, 1130, -1000, 1130, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 527, 27303, 133, 591, -1000, 353, -1000, -1000, - 591, 591, -1000, -1000, -1000, -1000, 936, 925, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1396, 1031, 27508, -1000, -1000, + 3604, 928, -1000, 1168, -1000, 1029, -1000, 1150, 144, 314, + 1199, 928, 928, 928, 928, 600, -1000, -1000, -1000, 511, + 511, 202, 275, 4093, -1000, -1000, -1000, 24807, 1167, 928, + -1000, 1166, -1000, 1427, 292, 496, 496, 928, -1000, -1000, + 27508, 928, 1426, 1425, 27508, 27508, -1000, 24358, -1000, 23909, + 23460, 869, 27508, 23011, 22562, 22113, 21664, 21215, -1000, 1239, + -1000, 1136, -1000, -1000, -1000, 27508, 27508, 27508, 39, -1000, + -1000, 27508, 928, -1000, -1000, 847, 834, 511, 511, 812, + 947, 945, 941, 511, 511, 800, 937, 921, 150, 787, + 779, 761, 891, 936, 110, 867, 850, 756, 27508, 1162, + -1000, 134, 538, 181, 230, 199, 27508, 135, 1416, 1342, + 1129, 341, 309, 1232, 27508, 1441, 928, -1000, 7664, -1000, + -1000, 933, 12658, -1000, 641, 589, 589, -1000, -1000, -1000, + -1000, -1000, -1000, 609, 27508, 641, -1000, -1000, -1000, 589, + 609, 27508, 609, 609, 609, 609, 589, 609, 27508, 27508, + 27508, 27508, 27508, 27508, 27508, 27508, 27508, 7201, 7201, 7201, + 492, -1000, 1231, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 97, -1000, -1000, -1000, -1000, -1000, 1534, -1000, -1000, -1000, + -110, 1127, 20766, -1000, -282, -283, -285, -290, -1000, -1000, + -1000, -291, -298, -1000, -1000, -1000, 12658, 12658, 12658, 12658, + 786, 499, 14005, 710, 633, 14005, 14005, 14005, 14005, 14005, + 14005, 14005, 14005, 14005, 14005, 14005, 14005, 14005, 14005, 14005, + 590, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 928, + -1000, 1522, 896, 896, 444, 444, 444, 444, 444, 444, + 444, 444, 444, 14454, 9502, 7664, 1011, 1027, 1499, 10849, + 10849, 12658, 12658, 11747, 11298, 10849, 1408, 565, 753, 27508, + -1000, -1000, 13556, -1000, -1000, -1000, -1000, -1000, 953, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 27508, 27508, 10849, 10849, + 10849, 10849, 10849, -1000, 1126, -1000, -170, 16263, 12658, 1468, + 1011, 1374, 1436, 1528, 461, 744, 1114, -1000, 729, 1468, + 18072, 1135, -1000, 1374, -1000, -1000, -1000, 27508, -1000, -1000, + 20317, -1000, -1000, 6738, 27508, 204, 27508, -1000, 1128, 1307, + -1000, -1000, -1000, 1449, 17623, 27508, 1071, 1045, -1000, -1000, + 429, 8127, -61, -1000, 8127, 1099, -1000, -25, -51, 9951, + 419, -1000, -1000, -1000, 1955, 14903, 1041, -1000, 35, -1000, + -1000, -1000, 1150, -1000, 1150, 1150, 1150, 1150, 39, 39, + 39, 39, -1000, -1000, -1000, -1000, -1000, 1160, 1159, -1000, + 1150, 1150, 1150, 1150, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -329, 27303, 373, 135, 150, 27303, - 27303, 27303, 27303, 27303, 402, -1000, -1000, -1000, 204, 27303, - 27303, 27303, 27303, 403, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 763, 27303, -1000, -1000, 606, 606, -1000, -1000, 27303, - 606, -1000, -1000, -1000, -1000, -1000, -1000, 606, -1000, -1000, + -1000, 1155, 1155, 1155, 1151, 1151, 285, -1000, 12658, 105, + 27508, 1434, 755, 134, 27508, 1230, -1000, 27508, 1199, 1199, + 1199, -1000, 1437, 914, 860, -1000, 1112, -1000, -1000, 1493, + -1000, -1000, 614, 637, 626, 484, 27508, 117, 193, -1000, + 277, -1000, 27508, 1153, 1422, 496, 928, -1000, 928, -1000, + -1000, -1000, -1000, 425, -1000, -1000, 928, 1110, -1000, 1095, + 671, 612, 670, 587, 1110, -1000, -1000, -139, 1110, -1000, + 1110, -1000, 1110, -1000, 1110, -1000, 1110, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 550, 27508, 117, 590, -1000, + 336, -1000, -1000, 590, 590, -1000, -1000, -1000, -1000, 932, + 930, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 923, 27303, 27303, -1000, -1000, -1000, -1000, -1000, 92, - -29, 178, -1000, -1000, -1000, -1000, 1515, -1000, 763, 513, - 523, 531, -1000, -1000, 851, -1000, -1000, 2477, -1000, -1000, - -1000, -1000, 729, 13860, 13860, 13860, 569, 2477, 2332, 1227, - 612, 454, 626, 626, 459, 459, 459, 459, 459, 587, - 587, -1000, -1000, -1000, -1000, 970, -1000, -1000, -1000, 970, - 10718, 10718, 1128, 1158, 429, -1000, 1214, -1000, -1000, 1539, - 1015, 1015, 716, 856, 566, 1579, 1015, 562, 1574, 1015, - 1015, 10718, -1000, -1000, 615, -1000, 12519, 970, -1000, 1186, - 1123, 1111, 1015, 970, 970, 1015, 1015, 27303, -1000, -273, - -1000, -75, 470, 1158, -1000, 19697, -1000, -1000, 970, 1071, - 1448, -1000, -1000, 1418, -1000, 1339, 12519, 12519, 12519, -1000, - -1000, -1000, 1448, 1541, -1000, 1373, 1370, 1572, 10718, 19250, - 1424, -1000, -1000, -1000, 426, 1572, 1075, 1158, -1000, 27303, - 19250, 19250, 19250, 19250, 19250, -1000, 1331, 1325, -1000, 1322, - 1287, 1326, 27303, -1000, 1040, 1041, 17462, 230, 1096, 19250, - 27303, -1000, -1000, 19250, 27303, 6164, -1000, 1106, -16, -61, - -1000, -1000, -1000, -1000, 763, -1000, 887, -1000, 332, -1000, - 296, -1000, -1000, -1000, -1000, 541, 53, -1000, -1000, 44, - 44, -1000, -1000, 452, 653, 452, 452, 452, 918, 918, - -1000, -1000, -1000, -1000, -1000, 792, -1000, -1000, -1000, 764, - -1000, -1000, 836, 1268, 105, -1000, -1000, 542, 915, 1425, - -1000, -1000, 1012, 371, -1000, 27303, -1000, 1270, 1269, 1265, - -1000, -1000, -1000, -1000, -1000, 3396, 27303, 1038, -1000, 131, - 27303, 1005, 27303, -1000, 1031, 27303, -1000, 904, -1000, -1000, - 7547, -1000, 27303, 1158, -1000, -1000, -1000, -1000, 389, 1478, - 1462, 133, 131, 452, 904, -1000, -1000, -1000, -1000, -1000, - -332, 1028, 27303, 161, -1000, 1174, 953, -1000, 1193, -1000, - -1000, -1000, -1000, 141, 215, 187, 347, -1000, 397, 1268, - 27303, -1000, -1000, -1000, 659, -1000, -1000, 659, -1000, -1000, - -1000, -1000, -1000, -1000, 1444, -50, -303, -1000, -300, -1000, - -1000, -1000, -1000, 569, 2477, 1243, -1000, 13860, 13860, -1000, - -1000, 1015, 1015, 10718, 7547, 1563, 1448, -1000, -1000, 256, - 591, 256, 13860, 13860, -1000, 13860, 13860, -1000, -128, 1101, - 524, -1000, 12519, 720, -1000, -1000, 13860, 13860, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 381, 380, 379, - 27303, -1000, -1000, -1000, 778, 912, 1337, 763, 763, -1000, - -1000, 27303, -1000, -1000, -1000, -1000, 1570, 12519, -1000, 1105, - -1000, 5703, 1539, 1264, 27303, 1158, 1597, 15661, 27303, 1144, - -1000, 546, 1389, 1254, 1263, 1606, -1000, -1000, -1000, -1000, - 1306, -1000, 1293, -1000, -1000, -1000, -1000, -1000, 1041, 1572, - 19250, 1141, -1000, 1141, -1000, 423, -1000, -1000, -1000, -66, - -64, -1000, -1000, -1000, 2069, -1000, -1000, -1000, 670, 13860, - 1588, -1000, 911, 1486, -1000, 1482, -1000, -1000, 452, 452, - -1000, -1000, -1000, -1000, -1000, -1000, 1008, -1000, 1004, 1099, - 1002, 65, -1000, 1166, 1438, 542, 542, -1000, 762, -1000, - 904, -1000, 27303, -1000, 27303, 27303, 27303, 1555, 1097, -1000, - 27303, -1000, -1000, 27303, -1000, -1000, 1346, 105, 997, -1000, - -1000, -1000, 227, 27303, -1000, 906, 131, -1000, -1000, -1000, - -1000, -1000, -1000, 1164, -1000, -1000, -1000, 990, -1000, -137, - 904, 27303, 27303, 27303, -1000, 27303, -1000, -1000, -1000, 606, - 606, -1000, 1437, -1000, 904, -1000, 13860, 2477, 2477, -1000, - -1000, 970, -1000, 1539, -1000, 970, 1169, 1169, -1000, 1169, - 1171, -1000, 1169, 108, 1169, 102, 970, 970, 2237, 2217, - 2145, 2047, 1158, -123, -1000, 763, 12519, 2115, 2081, 1158, - 1158, 1158, 988, 896, 44, -1000, -1000, -1000, 1565, 1554, - 763, -1000, -1000, -1000, 1494, 1077, 1067, -1000, -1000, 10271, - 993, 1345, 416, 988, 1563, 27303, 12519, -1000, -1000, 12519, - 1168, -1000, 12519, -1000, -1000, -1000, 1563, 1563, 1141, -1000, - -1000, 447, -1000, -1000, -1000, -1000, -1000, 2477, -13, -1000, - -1000, -1000, -1000, -1000, 44, 894, 44, 754, -1000, 748, - -1000, -1000, -211, -1000, -1000, 1150, 1229, -1000, -1000, 1164, - -1000, -1000, -1000, 27303, 27303, -1000, -1000, 223, -1000, 282, - 984, -1000, -162, -1000, -1000, 1518, 27303, -1000, -1000, 7547, - -1000, -1000, 1159, 1232, -1000, -1000, -1000, -1000, -1000, -1000, - 2477, -1000, 1448, -1000, -1000, 233, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 13860, 13860, 13860, 13860, 13860, 1539, - 892, 763, 13860, 13860, 18803, 27303, 27303, 17002, 44, 41, - -1000, 12519, 12519, 1481, -1000, 1158, -1000, 1138, 27303, 1158, - 27303, -1000, 1539, -1000, 763, 763, 27303, 763, 1539, -1000, - -1000, 452, -1000, 452, 981, 973, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1516, 1097, -1000, 220, 27303, -1000, - 227, -1000, -171, -176, 1185, 979, 1094, -1000, 529, 27303, - 27303, -1000, -1000, -1000, 1186, 1186, 1186, 1186, 83, 970, - -1000, 1186, 1186, 969, -1000, 969, 969, 470, -264, -1000, - 1401, 1397, 763, 1071, 1587, -1000, 1158, 1597, 409, 1067, - -1000, -1000, 961, -1000, -1000, -1000, -1000, -1000, 1185, 1158, - 1157, -1000, -1000, -1000, 185, -1000, 7547, 5242, 959, -1000, - -1000, -1000, -1000, -1000, 970, 136, -141, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 41, 292, -1000, 1378, 1376, 1553, - 27303, 1067, 27303, -1000, 185, 12966, 27303, -1000, -38, -1000, - -1000, -1000, -1000, -1000, 1193, -1000, 1282, -133, -157, 1382, - 1384, 1384, 1397, 1552, 1390, 1392, -1000, 891, 1066, -1000, - -1000, 1186, 970, 957, 306, -1000, -1000, -137, -1000, 1173, - -1000, 1380, 701, -1000, -1000, -1000, -1000, 886, -1000, 1551, - 1549, -1000, -1000, -1000, 1262, 154, -1000, -138, -1000, 694, - -1000, -1000, -1000, 880, 775, 1238, -1000, 1578, -1000, -151, - -1000, -1000, -1000, -1000, -1000, 1580, 432, 432, -159, -1000, - -1000, -1000, 289, 771, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -332, 27508, 355, + 122, 186, 27508, 27508, 27508, 27508, 27508, 402, -1000, -1000, + -1000, 159, 27508, 27508, 27508, 27508, 369, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 753, 27508, -1000, -1000, 609, 609, + -1000, -1000, 27508, 609, -1000, -1000, -1000, -1000, -1000, -1000, + 609, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 929, 27508, 27508, -1000, -1000, + -1000, -1000, -1000, 93, -29, 183, -1000, -1000, -1000, -1000, + 1464, -1000, 753, 499, 674, 583, -1000, -1000, 773, -1000, + -1000, 2664, -1000, -1000, -1000, -1000, 710, 14005, 14005, 14005, + 1270, 2664, 2643, 1255, 2256, 444, 684, 684, 454, 454, + 454, 454, 454, 831, 831, -1000, -1000, -1000, -1000, 953, + -1000, -1000, -1000, 953, 10849, 10849, 1107, 1146, 423, -1000, + 1185, -1000, -1000, 1468, 996, 996, 722, 672, 595, 1511, + 996, 564, 1510, 996, 996, 10849, -1000, -1000, 597, -1000, + 12658, 953, -1000, 1518, 1102, 1100, 996, 953, 953, 996, + 996, 27508, -1000, -273, -1000, -41, 450, 1146, -1000, 19868, + -1000, -1000, 953, 1078, 1401, -1000, -1000, 1375, -1000, 1285, + 12658, 12658, 12658, -1000, -1000, -1000, 1401, 1469, -1000, 1295, + 1294, 1505, 10849, 19419, 1374, -1000, -1000, -1000, 422, 1505, + 1092, 1146, -1000, 27508, 19419, 19419, 19419, 19419, 19419, -1000, + 1266, 1249, -1000, 1263, 1248, 1276, 27508, -1000, 1020, 1011, + 17623, 204, 1076, 19419, 27508, -1000, -1000, 19419, 27508, 6275, + -1000, 1099, -61, -39, -1000, -1000, -1000, -1000, 753, -1000, + 806, -1000, 2276, -1000, 340, -1000, -1000, -1000, -1000, 443, + 32, -1000, -1000, 39, 39, -1000, -1000, 419, 525, 419, + 419, 419, 927, 927, -1000, -1000, -1000, -1000, -1000, 723, + -1000, -1000, -1000, 718, -1000, -1000, 852, 1223, 105, -1000, + -1000, 511, 922, 1378, -1000, -1000, 1037, 352, -1000, 27508, + -1000, 1228, 1218, 1216, -1000, -1000, -1000, -1000, -1000, 3612, + 27508, 1018, -1000, 108, 27508, 1021, 27508, -1000, 1014, 27508, + -1000, 928, -1000, -1000, 7664, -1000, 27508, 1146, -1000, -1000, + -1000, -1000, 383, 1413, 1411, 117, 108, 419, 928, -1000, + -1000, -1000, -1000, -1000, -335, 998, 27508, 133, -1000, 1152, + 894, -1000, 1183, -1000, -1000, -1000, -1000, 114, 178, 161, + 329, -1000, 366, 1223, 27508, -1000, -1000, -1000, 589, -1000, + -1000, 589, -1000, -1000, -1000, -1000, -1000, -1000, 1393, -34, + -309, -1000, -306, -1000, -1000, -1000, -1000, 1270, 2664, 2380, + -1000, 14005, 14005, -1000, -1000, 996, 996, 10849, 7664, 1499, + 1401, -1000, -1000, 412, 590, 412, 14005, 14005, -1000, 14005, + 14005, -1000, -129, 1101, 549, -1000, 12658, 749, -1000, -1000, + 14005, 14005, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 373, 371, 363, 27508, -1000, -1000, -1000, 841, 920, + 1277, 753, 753, -1000, -1000, 27508, -1000, -1000, -1000, -1000, + 1503, 12658, -1000, 1097, -1000, 5812, 1468, 1205, 27508, 1146, + 1534, 15814, 27508, 1080, -1000, 533, 1307, 1194, 1204, 1254, + -1000, -1000, -1000, -1000, 1247, -1000, 1246, -1000, -1000, -1000, + -1000, -1000, 1011, 1505, 19419, 1075, -1000, 1075, -1000, 415, + -1000, -1000, -1000, -38, -56, -1000, -1000, -1000, 1955, -1000, + -1000, -1000, 667, 14005, 1526, -1000, 915, 1420, -1000, 1418, + -1000, -1000, 419, 419, -1000, -1000, -1000, -1000, -1000, -1000, + 987, -1000, 984, 1096, 982, 59, -1000, 1174, 1392, 511, + 511, -1000, 712, -1000, 928, -1000, 27508, -1000, 27508, 27508, + 27508, 1492, 1090, -1000, 27508, -1000, -1000, 27508, -1000, -1000, + 1291, 105, 980, -1000, -1000, -1000, 193, 27508, -1000, 896, + 108, -1000, -1000, -1000, -1000, -1000, -1000, 1148, -1000, -1000, + -1000, 1008, -1000, -140, 928, 27508, 27508, 27508, -1000, 27508, + -1000, -1000, -1000, 609, 609, -1000, 1391, -1000, 928, -1000, + 14005, 2664, 2664, -1000, -1000, 953, -1000, 1468, -1000, 953, + 1150, 1150, -1000, 1150, 1151, -1000, 1150, 84, 1150, 83, + 953, 953, 2548, 2463, 2342, 2154, 1146, -120, -1000, 753, + 12658, 2133, 1772, 1146, 1146, 1146, 973, 913, 39, -1000, + -1000, -1000, 1501, 1489, 753, -1000, -1000, -1000, 1409, 1034, + 1069, -1000, -1000, 10400, 977, 1290, 414, 973, 1499, 27508, + 12658, -1000, -1000, 12658, 1149, -1000, 12658, -1000, -1000, -1000, + 1499, 1499, 1075, -1000, -1000, 453, -1000, -1000, -1000, -1000, + -1000, 2664, -80, -1000, -1000, -1000, -1000, -1000, 39, 905, + 39, 711, -1000, 679, -1000, -1000, -213, -1000, -1000, 1091, + 1222, -1000, -1000, 1148, -1000, -1000, -1000, 27508, 27508, -1000, + -1000, 188, -1000, 265, 971, -1000, -169, -1000, -1000, 1447, + 27508, -1000, -1000, 7664, -1000, -1000, 1147, 1196, -1000, -1000, + -1000, -1000, -1000, -1000, 2664, -1000, 1401, -1000, -1000, 205, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 14005, 14005, + 14005, 14005, 14005, 1468, 901, 753, 14005, 14005, 18970, 27508, + 27508, 17161, 39, 6, -1000, 12658, 12658, 1402, -1000, 1146, + -1000, 1109, 27508, 1146, 27508, -1000, 1468, -1000, 753, 753, + 27508, 753, 1468, -1000, -1000, 419, -1000, 419, 990, 963, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1443, 1090, + -1000, 173, 27508, -1000, 193, -1000, -177, -178, 1161, 969, + 1082, -1000, 507, 27508, 27508, -1000, -1000, -1000, 1518, 1518, + 1518, 1518, 502, 953, -1000, 1518, 1518, 967, -1000, 967, + 967, 450, -267, -1000, 1339, 1336, 753, 1078, 1524, -1000, + 1146, 1534, 411, 1069, -1000, -1000, 961, -1000, -1000, -1000, + -1000, -1000, 1161, 1146, 1145, -1000, -1000, -1000, 177, -1000, + 7664, 5349, 959, -1000, -1000, -1000, -1000, -1000, 953, 169, + -157, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 6, 269, + -1000, 1302, 1300, 1487, 27508, 1069, 27508, -1000, 177, 13107, + 27508, -1000, -48, -1000, -1000, -1000, -1000, -1000, 1183, -1000, + 1275, -134, -166, 1308, 1310, 1310, 1336, 1480, 1324, 1317, + -1000, 890, 1067, -1000, -1000, 1518, 953, 957, 280, -1000, + -1000, -140, -1000, 1274, -1000, 1306, 769, -1000, -1000, -1000, + -1000, 888, -1000, 1473, 1471, -1000, -1000, -1000, 1203, 136, + -1000, -146, -1000, 691, -1000, -1000, -1000, 887, 875, 1202, + -1000, 1509, -1000, -164, -1000, -1000, -1000, -1000, -1000, 1517, + 469, 469, -167, -1000, -1000, -1000, 251, 741, -1000, -1000, + -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1862, 1861, 14, 80, 81, 1860, 1859, 1858, 1857, - 131, 130, 126, 1856, 1855, 1853, 1852, 1850, 1848, 1846, - 1844, 1843, 1842, 1841, 1838, 65, 120, 35, 39, 121, - 1835, 1830, 45, 1829, 1828, 1827, 125, 124, 482, 1825, - 116, 1824, 1822, 1821, 1819, 1818, 1817, 1816, 1815, 1813, - 1812, 1811, 1810, 1809, 156, 1808, 1807, 9, 1806, 49, - 1804, 1803, 1802, 1800, 1799, 85, 1798, 1794, 1792, 112, - 1790, 1789, 44, 128, 40, 74, 1786, 1785, 73, 807, - 1784, 99, 119, 1782, 176, 1780, 42, 84, 79, 1778, - 36, 1774, 1773, 92, 1772, 1771, 1770, 68, 1769, 1768, - 3135, 1767, 67, 77, 12, 37, 1766, 1764, 1763, 1761, - 38, 1985, 1760, 1759, 22, 1756, 1755, 136, 1754, 88, - 17, 1742, 16, 24, 19, 1739, 86, 1738, 43, 64, - 34, 1734, 83, 1733, 1732, 1731, 1730, 25, 1728, 75, - 102, 62, 1727, 1726, 7, 11, 1724, 1723, 1722, 1720, - 1717, 1716, 4, 1715, 1714, 1711, 26, 1710, 6, 21, - 72, 46, 30, 10, 1708, 135, 1707, 27, 114, 66, - 108, 1706, 1705, 1704, 960, 71, 138, 1700, 1698, 33, - 1697, 115, 123, 1692, 1443, 1690, 1689, 47, 836, 2306, - 23, 109, 1687, 1686, 1987, 56, 76, 20, 1685, 1684, - 1682, 122, 191, 60, 876, 41, 1677, 1674, 1667, 1664, - 1663, 1660, 1659, 87, 28, 18, 103, 29, 1658, 1657, - 1654, 57, 63, 1646, 106, 104, 70, 164, 1643, 111, - 101, 52, 1641, 105, 1638, 1636, 1635, 1634, 50, 1633, - 1632, 1629, 1626, 107, 89, 55, 32, 1620, 31, 96, - 100, 97, 1619, 13, 117, 8, 1618, 3, 0, 1617, - 5, 118, 1450, 91, 1616, 1615, 1, 1613, 2, 1611, - 1610, 78, 1609, 1608, 1607, 1606, 3150, 1289, 110, 1605, - 129, + 0, 1788, 1787, 14, 82, 79, 1786, 1785, 1783, 1782, + 130, 125, 122, 1781, 1779, 1777, 1775, 1774, 1773, 1772, + 1770, 1769, 1766, 1765, 1764, 62, 120, 38, 40, 124, + 1763, 1762, 45, 1761, 1760, 1759, 127, 126, 470, 1758, + 128, 1757, 1755, 1754, 1753, 1748, 1747, 1746, 1744, 1743, + 1742, 1741, 1740, 1737, 151, 1736, 1735, 9, 1734, 47, + 1733, 1730, 1725, 1720, 1719, 84, 1718, 1715, 1714, 111, + 1711, 1710, 44, 336, 49, 72, 1709, 1705, 80, 770, + 1704, 100, 119, 1703, 908, 1702, 39, 97, 85, 1701, + 41, 1700, 1698, 102, 1697, 1694, 1693, 68, 1691, 1690, + 3134, 1689, 67, 75, 19, 32, 1686, 1683, 1682, 1680, + 33, 162, 1679, 1677, 28, 1676, 1675, 146, 1674, 81, + 27, 1673, 16, 18, 21, 1671, 83, 1668, 8, 50, + 31, 1667, 77, 1666, 1664, 1662, 1660, 25, 1645, 73, + 101, 22, 1644, 1643, 4, 11, 1642, 1641, 1640, 1638, + 1636, 1635, 10, 1634, 1633, 1631, 56, 1630, 6, 24, + 71, 116, 29, 7, 1629, 143, 1626, 26, 114, 65, + 108, 1624, 1623, 1622, 849, 55, 134, 1621, 1620, 46, + 1619, 118, 117, 1617, 1362, 1616, 1615, 78, 1271, 2560, + 13, 109, 1614, 1611, 1627, 52, 74, 23, 1610, 1609, + 1608, 121, 112, 63, 863, 42, 1606, 1605, 1604, 1603, + 1602, 1597, 1596, 87, 34, 20, 105, 30, 1595, 1594, + 1593, 66, 37, 1592, 107, 106, 70, 86, 1591, 115, + 96, 57, 1590, 60, 1589, 1588, 1581, 1579, 43, 1576, + 1574, 1573, 1570, 104, 88, 64, 35, 1569, 36, 91, + 99, 89, 1567, 17, 123, 12, 1565, 3, 0, 1557, + 5, 138, 1368, 113, 1555, 1553, 1, 1549, 2, 1547, + 1546, 76, 1544, 1543, 1542, 1541, 3253, 1439, 110, 1540, + 139, } var yyR1 = [...]int{ @@ -4258,55 +4284,55 @@ var yyR1 = [...]int{ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 269, 269, 177, 177, 185, 185, 176, 176, - 175, 175, 175, 179, 179, 179, 180, 180, 273, 273, - 273, 43, 43, 45, 45, 46, 47, 47, 199, 199, - 200, 200, 48, 49, 60, 60, 60, 60, 60, 60, - 62, 62, 62, 7, 7, 7, 7, 56, 56, 56, - 6, 6, 44, 44, 51, 270, 270, 271, 272, 272, - 272, 272, 52, 20, 20, 20, 20, 20, 20, 77, - 77, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 71, 71, 71, 66, 66, 279, 54, - 55, 55, 69, 69, 69, 63, 63, 63, 68, 68, - 68, 74, 74, 76, 76, 76, 76, 76, 78, 78, - 78, 78, 78, 78, 73, 73, 75, 75, 75, 75, - 192, 192, 192, 191, 191, 85, 85, 86, 86, 87, - 87, 88, 88, 88, 127, 103, 103, 159, 159, 158, - 158, 161, 161, 89, 89, 89, 89, 90, 90, 91, - 91, 92, 92, 198, 198, 197, 197, 197, 196, 196, - 96, 96, 96, 98, 97, 97, 97, 97, 99, 99, - 101, 101, 100, 100, 102, 104, 104, 104, 104, 104, - 105, 105, 84, 84, 84, 84, 84, 84, 84, 84, - 173, 173, 107, 107, 106, 106, 106, 106, 106, 106, - 106, 106, 106, 106, 118, 118, 118, 118, 118, 118, - 108, 108, 108, 108, 108, 108, 108, 72, 72, 119, - 119, 119, 126, 120, 120, 111, 111, 111, 111, 111, + 42, 42, 42, 269, 269, 177, 177, 185, 185, 176, + 176, 175, 175, 175, 179, 179, 179, 180, 180, 273, + 273, 273, 43, 43, 45, 45, 46, 47, 47, 199, + 199, 200, 200, 48, 49, 60, 60, 60, 60, 60, + 60, 62, 62, 62, 7, 7, 7, 7, 56, 56, + 56, 6, 6, 44, 44, 51, 270, 270, 271, 272, + 272, 272, 272, 52, 20, 20, 20, 20, 20, 20, + 77, 77, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 71, 71, 71, 66, 66, 279, + 54, 55, 55, 69, 69, 69, 63, 63, 63, 68, + 68, 68, 74, 74, 76, 76, 76, 76, 76, 78, + 78, 78, 78, 78, 78, 73, 73, 75, 75, 75, + 75, 192, 192, 192, 191, 191, 85, 85, 86, 86, + 87, 87, 88, 88, 88, 127, 103, 103, 159, 159, + 158, 158, 161, 161, 89, 89, 89, 89, 90, 90, + 91, 91, 92, 92, 198, 198, 197, 197, 197, 196, + 196, 96, 96, 96, 98, 97, 97, 97, 97, 99, + 99, 101, 101, 100, 100, 102, 104, 104, 104, 104, + 104, 105, 105, 84, 84, 84, 84, 84, 84, 84, + 84, 173, 173, 107, 107, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 118, 118, 118, 118, 118, + 118, 108, 108, 108, 108, 108, 108, 108, 72, 72, + 119, 119, 119, 126, 120, 120, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 115, - 115, 115, 115, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 114, 114, 114, 114, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 115, 115, 115, 115, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 280, 280, 117, 116, 116, 116, 116, 116, - 116, 116, 67, 67, 67, 67, 67, 203, 203, 203, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 133, 133, 64, 64, 131, 131, 132, - 134, 134, 128, 128, 128, 110, 110, 110, 110, 110, - 110, 110, 110, 112, 112, 112, 135, 135, 136, 136, - 137, 137, 138, 138, 139, 140, 140, 140, 141, 141, - 141, 141, 32, 32, 32, 32, 32, 27, 27, 27, - 27, 28, 28, 28, 79, 79, 79, 79, 81, 81, - 80, 80, 57, 57, 58, 58, 58, 82, 82, 83, - 83, 83, 83, 156, 156, 156, 142, 142, 142, 142, - 148, 148, 148, 144, 144, 146, 146, 146, 147, 147, - 147, 145, 151, 151, 153, 153, 152, 152, 150, 150, - 155, 155, 154, 154, 149, 149, 109, 109, 109, 109, - 109, 157, 157, 157, 157, 162, 162, 122, 122, 124, - 124, 123, 125, 163, 163, 167, 164, 164, 168, 168, - 168, 168, 168, 165, 165, 166, 166, 193, 193, 193, - 172, 172, 184, 184, 181, 181, 182, 182, 174, 174, - 186, 186, 186, 53, 121, 121, 249, 249, 246, 189, - 189, 190, 190, 194, 194, 195, 195, 187, 187, 187, + 114, 114, 114, 280, 280, 117, 116, 116, 116, 116, + 116, 116, 116, 67, 67, 67, 67, 67, 203, 203, + 203, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 133, 133, 64, 64, 131, 131, + 132, 134, 134, 128, 128, 128, 110, 110, 110, 110, + 110, 110, 110, 110, 112, 112, 112, 135, 135, 136, + 136, 137, 137, 138, 138, 139, 140, 140, 140, 141, + 141, 141, 141, 32, 32, 32, 32, 32, 27, 27, + 27, 27, 28, 28, 28, 79, 79, 79, 79, 81, + 81, 80, 80, 57, 57, 58, 58, 58, 82, 82, + 83, 83, 83, 83, 156, 156, 156, 142, 142, 142, + 142, 148, 148, 148, 144, 144, 146, 146, 146, 147, + 147, 147, 145, 151, 151, 153, 153, 152, 152, 150, + 150, 155, 155, 154, 154, 149, 149, 109, 109, 109, + 109, 109, 157, 157, 157, 157, 162, 162, 122, 122, + 124, 124, 123, 125, 163, 163, 167, 164, 164, 168, + 168, 168, 168, 168, 165, 165, 166, 166, 193, 193, + 193, 172, 172, 184, 184, 181, 181, 182, 182, 174, + 174, 186, 186, 186, 53, 121, 121, 249, 249, 246, + 189, 189, 190, 190, 194, 194, 195, 195, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, @@ -4320,7 +4346,7 @@ var yyR1 = [...]int{ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 188, 188, 188, 188, 188, 188, 188, + 187, 187, 187, 187, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, @@ -4346,7 +4372,8 @@ var yyR1 = [...]int{ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 276, 277, 201, 202, 202, 202, + 188, 188, 188, 188, 188, 188, 276, 277, 201, 202, + 202, 202, } var yyR2 = [...]int{ @@ -4394,56 +4421,56 @@ var yyR2 = [...]int{ 3, 3, 5, 6, 6, 5, 4, 3, 2, 3, 3, 3, 7, 3, 3, 3, 3, 4, 7, 5, 2, 4, 4, 4, 4, 4, 5, 5, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, - 2, 4, 5, 4, 3, 3, 5, 2, 3, 3, - 3, 3, 1, 1, 0, 1, 0, 1, 1, 1, - 0, 2, 2, 0, 2, 2, 0, 2, 0, 1, - 1, 2, 1, 1, 2, 1, 1, 5, 0, 1, - 0, 1, 2, 3, 0, 3, 3, 3, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, - 3, 3, 2, 2, 3, 1, 3, 2, 1, 2, - 1, 2, 2, 3, 3, 6, 4, 7, 6, 1, - 3, 2, 2, 2, 2, 1, 1, 1, 3, 2, - 1, 1, 1, 0, 1, 1, 0, 3, 0, 2, - 0, 2, 1, 2, 2, 0, 1, 1, 0, 1, - 1, 0, 1, 0, 1, 2, 3, 4, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 2, 3, 5, - 0, 1, 2, 1, 1, 0, 2, 1, 3, 1, - 1, 1, 3, 3, 3, 3, 7, 0, 3, 1, - 3, 1, 3, 4, 4, 4, 3, 2, 4, 0, - 1, 0, 2, 0, 1, 0, 1, 2, 1, 1, - 1, 2, 2, 1, 2, 3, 2, 3, 2, 2, - 2, 1, 1, 3, 3, 0, 5, 4, 5, 5, - 0, 2, 1, 3, 3, 3, 2, 3, 1, 2, - 0, 3, 1, 1, 3, 3, 4, 4, 5, 3, - 4, 5, 6, 2, 1, 2, 1, 2, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, - 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 3, 1, 1, 1, 1, 4, - 5, 5, 6, 4, 4, 6, 6, 6, 8, 8, - 8, 8, 9, 8, 5, 4, 2, 2, 2, 2, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, + 4, 2, 4, 5, 4, 3, 3, 5, 2, 3, + 3, 3, 3, 1, 1, 0, 1, 0, 1, 1, + 1, 0, 2, 2, 0, 2, 2, 0, 2, 0, + 1, 1, 2, 1, 1, 2, 1, 1, 5, 0, + 1, 0, 1, 2, 3, 0, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, + 1, 3, 3, 2, 2, 3, 1, 3, 2, 1, + 2, 1, 2, 2, 3, 3, 6, 4, 7, 6, + 1, 3, 2, 2, 2, 2, 1, 1, 1, 3, + 2, 1, 1, 1, 0, 1, 1, 0, 3, 0, + 2, 0, 2, 1, 2, 2, 0, 1, 1, 0, + 1, 1, 0, 1, 0, 1, 2, 3, 4, 1, + 1, 1, 1, 1, 1, 1, 3, 1, 2, 3, + 5, 0, 1, 2, 1, 1, 0, 2, 1, 3, + 1, 1, 1, 3, 3, 3, 3, 7, 0, 3, + 1, 3, 1, 3, 4, 4, 4, 3, 2, 4, + 0, 1, 0, 2, 0, 1, 0, 1, 2, 1, + 1, 1, 2, 2, 1, 2, 3, 2, 3, 2, + 2, 2, 1, 1, 3, 3, 0, 5, 4, 5, + 5, 0, 2, 1, 3, 3, 3, 2, 3, 1, + 2, 0, 3, 1, 1, 3, 3, 4, 4, 5, + 3, 4, 5, 6, 2, 1, 2, 1, 2, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 0, 2, + 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, + 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 3, 1, 1, 1, 1, + 4, 5, 5, 6, 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, - 8, 8, 0, 2, 3, 4, 4, 4, 4, 4, - 4, 4, 0, 3, 4, 7, 3, 1, 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, 2, 1, 1, 3, 3, 3, - 3, 3, 3, 3, 0, 3, 3, 3, 0, 3, - 1, 1, 0, 4, 0, 1, 1, 0, 3, 1, - 3, 2, 1, 0, 2, 4, 0, 9, 3, 5, - 0, 3, 3, 0, 1, 0, 2, 2, 0, 2, - 2, 2, 0, 3, 0, 3, 0, 3, 0, 4, - 0, 3, 0, 4, 0, 1, 2, 1, 5, 4, - 4, 1, 3, 3, 5, 0, 5, 1, 3, 1, - 2, 3, 1, 1, 3, 3, 1, 3, 3, 3, - 3, 3, 2, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 0, 1, 0, 2, 0, 3, 0, 1, - 0, 1, 1, 5, 0, 1, 0, 1, 2, 1, + 2, 8, 8, 0, 2, 3, 4, 4, 4, 4, + 4, 4, 4, 0, 3, 4, 7, 3, 1, 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, 2, 1, 1, 3, 3, + 3, 3, 3, 3, 3, 0, 3, 3, 3, 0, + 3, 1, 1, 0, 4, 0, 1, 1, 0, 3, + 1, 3, 2, 1, 0, 2, 4, 0, 9, 3, + 5, 0, 3, 3, 0, 1, 0, 2, 2, 0, + 2, 2, 2, 0, 3, 0, 3, 0, 3, 0, + 4, 0, 3, 0, 4, 0, 1, 2, 1, 5, + 4, 4, 1, 3, 3, 5, 0, 5, 1, 3, + 1, 2, 3, 1, 1, 3, 3, 1, 3, 3, + 3, 3, 3, 2, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 0, 1, 0, 2, 0, 3, 0, + 1, 0, 1, 1, 5, 0, 1, 0, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -4484,7 +4511,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, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, + 1, 1, } var yyChk = [...]int{ @@ -4495,446 +4523,448 @@ var yyChk = [...]int{ 31, -23, -33, 153, -34, -24, 154, -35, 156, 155, 191, 157, 184, 71, 226, 227, 229, 230, 231, 232, -62, 189, 190, 159, 35, 42, 32, 33, 36, 81, - 9, 326, 186, 185, 26, -275, 466, -69, 5, -137, + 9, 328, 186, 185, 26, -275, 468, -69, 5, -137, 16, -3, -54, -279, -54, -54, -54, -54, -54, -54, -234, -236, 81, 126, 81, -70, -184, 164, 173, 172, - 169, -262, 107, 219, 317, 162, -39, -38, -37, -36, + 169, -262, 107, 219, 319, 162, -39, -38, -37, -36, -40, 30, -30, -31, -254, -29, -26, 158, 155, 199, 102, 103, 191, 192, 193, 157, 175, 190, 194, 189, - 208, -25, 77, 32, 339, 342, -241, 154, 160, 161, - 327, 105, 104, 72, 156, -238, 276, 443, -40, 445, - 95, 97, 444, 41, 164, 446, 447, 448, 449, 174, - 450, 451, 452, 453, 459, 460, 461, 462, 106, 5, + 208, -25, 77, 32, 341, 344, -241, 154, 160, 161, + 329, 105, 104, 72, 156, -238, 276, 445, -40, 447, + 95, 97, 446, 41, 164, 448, 449, 450, 451, 174, + 452, 453, 454, 455, 461, 462, 463, 464, 106, 5, 163, -262, -79, 286, 77, -261, -258, 84, 85, 86, 163, -184, 164, 165, -262, 163, -100, -194, -258, -188, - 336, 177, 370, 371, 224, 77, 276, 443, 226, 240, - 234, 261, 253, 337, 372, 178, 212, 440, 251, 254, - 304, 445, 373, 192, 298, 281, 289, 95, 229, 313, - 458, 374, 456, 97, 444, 76, 48, 41, 187, 249, - 245, 446, 213, 375, 347, 206, 105, 102, 465, 243, - 47, 28, 455, 104, 46, 447, 376, 448, 291, 266, - 434, 45, 193, 377, 80, 341, 442, 293, 244, 290, - 223, 454, 159, 378, 426, 300, 435, 379, 267, 271, - 380, 305, 49, 381, 382, 436, 103, 383, 75, 449, - 238, 239, 384, 221, 176, 307, 265, 174, 34, 294, - 338, 225, 55, 200, 308, 43, 269, 42, 430, 385, - 433, 264, 260, 50, 386, 387, 388, 389, 450, 263, - 237, 259, 464, 218, 451, 59, 161, 273, 272, 274, - 207, 303, 256, 390, 391, 392, 181, 78, 393, 246, - 19, 394, 395, 301, 214, 396, 53, 397, 398, 311, - 190, 399, 51, 452, 38, 195, 453, 400, 401, 402, - 403, 404, 299, 405, 292, 268, 270, 202, 288, 340, - 406, 242, 194, 457, 407, 182, 441, 196, 199, 189, - 312, 183, 408, 409, 410, 411, 412, 413, 414, 230, - 459, 40, 415, 416, 417, 418, 222, 217, 306, 315, - 58, 79, 278, 419, 439, 236, 215, 420, 227, 52, - 460, 461, 462, 209, 463, 284, 106, 219, 220, 44, - 257, 201, 421, 422, 247, 248, 262, 235, 258, 228, - 427, 203, 302, 191, 423, 314, 216, 279, 344, 208, - 438, 343, 255, 252, 210, 424, 165, 204, 205, 425, - 428, 295, 285, 296, 297, 286, 211, 342, 250, 280, - 163, -165, 281, -185, 282, 283, 294, 295, 300, -177, - 301, 299, 202, -273, 305, 163, 302, 144, 153, 291, - 292, 285, 286, 211, -269, -258, 448, 463, 304, 254, - 287, 293, 306, 430, 297, 296, -194, 228, -199, 233, - -189, -258, -188, 231, -100, -60, 426, 157, -201, -201, - -71, 430, 432, -120, -84, -106, 110, -111, 30, 24, - -110, -107, -128, -125, -126, 144, 145, 147, 146, 148, - 133, 134, 141, 111, 149, -115, -113, -114, -116, 88, - 87, 96, 89, 90, 91, 92, 98, 99, 100, -189, - -194, -123, -276, 65, 66, 327, 328, 329, 330, 335, - 331, 113, 54, 316, 325, 324, 323, 320, 321, 318, - 319, 333, 334, 168, 317, 162, 139, 326, -258, -188, - 41, 284, 284, -100, -5, -4, -276, 6, 21, 22, - -141, 18, 17, -277, 83, -63, -76, 60, 61, -78, - 22, 37, 64, 62, -55, -75, 135, -84, -194, -75, - -174, 167, -174, -174, -164, -204, 228, -168, 306, 305, - -190, -166, -189, -187, -165, 303, 158, 345, 109, 23, - 25, 112, 144, 17, 113, 36, 160, 175, 143, 171, - 327, 153, 69, 346, 318, 319, 316, 322, 329, 330, - 317, 282, 30, 11, 348, 26, 185, 22, 37, 137, - 155, 116, 117, 188, 24, 186, 100, 351, 20, 72, - 180, 12, 173, 14, 352, 353, 15, 168, 167, 128, - 164, 67, 9, 149, 27, 125, 63, 354, 29, 355, - 356, 357, 358, 65, 126, 18, 320, 321, 32, 431, - 359, 335, 197, 139, 70, 56, 432, 110, 360, 361, - 98, 362, 101, 73, 437, 107, 16, 68, 39, 363, - 198, 364, 170, 365, 309, 366, 127, 156, 326, 66, - 367, 162, 283, 6, 332, 31, 184, 172, 64, 368, - 163, 115, 333, 334, 166, 99, 5, 169, 33, 10, - 71, 74, 323, 324, 325, 54, 339, 114, 13, 369, - 310, 108, 304, 254, -235, 126, -222, -226, -189, 179, - -251, 175, -100, -244, -243, -189, -79, 163, -258, 164, - 164, 164, -182, 168, 326, -36, -37, -165, 143, 196, - 82, 82, -226, -225, -224, -263, 198, 179, -250, -242, - 171, 180, -232, 172, 173, -227, 164, 29, -263, -227, - 170, 180, 198, 198, 106, 198, 106, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 195, -233, 118, -233, - 343, 343, -238, -263, -263, -263, 166, 34, 34, -186, - -227, 166, 23, -233, -233, -165, 143, -233, -233, -233, - -233, 206, 206, -233, -233, -233, -233, -233, -233, -233, - -233, -233, -233, -233, -233, -233, -233, -233, -100, -82, - 213, 153, 155, 158, 73, 118, -38, 208, -22, -100, - 163, -258, -181, 168, -181, -100, 150, -100, -179, 126, - 13, -179, -176, 284, 288, 289, 290, -179, -179, -179, - -179, 209, 298, -228, 164, 34, 176, 284, 209, 298, - 209, 210, 209, 210, 209, -175, 12, 128, -258, 433, - 317, 300, -258, 202, 163, 203, 165, 210, 284, 205, - -179, -202, -276, -190, -202, -202, 31, 166, -189, -56, - -189, 88, -7, -3, -11, -10, -12, 118, -77, 284, - -65, 144, 448, 434, 435, 436, 433, 299, 441, 439, - 437, 209, 438, 82, 109, 107, 108, 125, -84, -108, - 128, 110, 126, 127, 112, 130, 129, 140, 133, 134, - 135, 136, 137, 138, 139, 131, 132, 143, 118, 119, - 120, 121, 122, 123, 124, -173, -276, -126, -276, 151, - 152, -111, -111, -111, -111, -111, -111, -111, -111, -111, - -111, -276, 150, -2, -120, -4, -276, -276, -276, -276, - -276, -276, -276, -276, -133, -84, -276, -280, -117, -276, - -280, -117, -280, -117, -280, -276, -280, -117, -280, -117, - -280, -280, -117, -276, -276, -276, -276, -276, -276, -276, - -201, -270, -271, -103, -100, -276, -137, -3, -54, -156, - 20, 32, -84, -138, -139, -84, -137, 56, -73, -75, - -78, 60, 61, 94, 12, -192, -191, 23, -189, 88, - 150, 12, -101, 27, -100, -86, -87, -88, -89, -103, - -127, -276, 12, -93, -94, -100, -102, -194, 82, 228, - -168, -204, -170, -169, 307, 309, 118, -193, -189, 88, - 30, 83, 82, -100, -206, -209, -211, -210, -212, -207, - -208, 251, 252, 144, 255, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 31, 187, 247, 248, 249, - 250, 267, 268, 269, 270, 271, 272, 273, 274, 234, - 253, 337, 235, 236, 237, 238, 239, 240, 242, 243, - 244, 245, 246, -261, -258, 81, 83, 82, -213, 81, - -82, -182, -249, -246, 74, -258, -258, -258, -258, 110, - -233, -233, 195, -29, -26, -254, 16, -25, -26, 158, - 102, 103, 155, 81, -222, 81, -231, -261, -258, 81, - 29, 170, 169, -230, -227, -230, -231, -258, -128, -189, - -194, -258, 29, 29, -161, -189, -161, -161, 21, -161, - 21, -161, 21, 89, -189, -161, 21, -161, 21, -161, - 21, -161, 21, -161, 21, 30, 75, 76, 30, 78, - 79, 80, -128, -128, -222, -165, -100, -258, 89, 89, - -233, -233, 89, 88, 88, 88, -233, -233, 89, 88, - -258, 88, -264, 181, 223, 225, 89, 89, 89, 89, - 30, 88, -265, 30, 455, 454, 456, 457, 458, 89, - 30, 89, 30, 89, -189, 81, -81, 215, 118, 204, - 204, 163, 163, 217, -100, 216, 218, 220, 41, 82, - 166, -181, 73, -95, -100, 24, -258, -195, -194, -187, - 88, -84, -229, 12, 128, -175, -175, -179, -100, -229, - -175, -179, -100, -179, -179, -179, -179, -175, -179, -194, - -194, -202, -202, -202, -100, -202, -202, -100, -202, -202, - -180, 126, 73, -200, 231, 265, 427, 428, 429, 82, - 339, -93, 433, 433, 433, 433, 433, 433, -84, -84, - -84, -84, -118, 98, 110, 99, 100, -111, -119, -123, - -126, 93, 128, 126, 127, 112, -111, -111, -111, -111, + 338, 177, 372, 373, 224, 77, 276, 445, 226, 240, + 234, 261, 253, 339, 374, 178, 212, 442, 251, 254, + 306, 447, 375, 192, 298, 281, 289, 95, 229, 315, + 460, 376, 458, 97, 446, 76, 48, 41, 187, 249, + 245, 448, 213, 377, 349, 206, 105, 102, 467, 243, + 47, 28, 457, 104, 46, 449, 378, 450, 291, 266, + 436, 45, 303, 193, 379, 80, 343, 444, 293, 244, + 290, 223, 456, 159, 380, 428, 300, 437, 381, 267, + 271, 382, 307, 49, 383, 384, 438, 103, 385, 75, + 451, 238, 239, 386, 221, 176, 309, 265, 174, 34, + 294, 340, 225, 55, 200, 310, 43, 269, 42, 432, + 387, 435, 264, 260, 50, 388, 389, 390, 391, 452, + 263, 237, 259, 466, 218, 453, 59, 161, 273, 272, + 274, 207, 305, 256, 392, 393, 394, 181, 78, 395, + 246, 19, 396, 397, 301, 214, 398, 53, 399, 400, + 313, 190, 401, 51, 454, 38, 195, 455, 402, 403, + 404, 405, 406, 299, 407, 292, 268, 270, 202, 288, + 342, 408, 242, 194, 459, 409, 182, 443, 196, 199, + 189, 314, 183, 410, 411, 412, 413, 414, 415, 416, + 230, 461, 40, 417, 418, 419, 420, 222, 217, 308, + 317, 58, 79, 278, 421, 441, 236, 215, 422, 227, + 52, 462, 463, 464, 209, 465, 284, 106, 219, 220, + 44, 257, 201, 423, 424, 247, 248, 262, 235, 258, + 228, 429, 203, 302, 191, 425, 316, 216, 279, 346, + 208, 304, 440, 345, 255, 252, 210, 426, 165, 204, + 205, 427, 430, 295, 285, 296, 297, 286, 211, 344, + 250, 280, 163, -165, 281, -185, 282, 283, 294, 295, + 300, -177, 301, 299, 202, -273, 307, 163, 302, 153, + 144, 291, 292, 285, 286, 211, -269, -258, 450, 465, + 306, 254, 287, 293, 308, 432, 297, 296, -194, 228, + -199, 233, -189, -258, -188, 231, -100, -60, 428, 157, + -201, -201, -71, 432, 434, -120, -84, -106, 110, -111, + 30, 24, -110, -107, -128, -125, -126, 144, 145, 147, + 146, 148, 133, 134, 141, 111, 149, -115, -113, -114, + -116, 88, 87, 96, 89, 90, 91, 92, 98, 99, + 100, -189, -194, -123, -276, 65, 66, 329, 330, 331, + 332, 337, 333, 113, 54, 318, 327, 326, 325, 322, + 323, 320, 321, 335, 336, 168, 319, 162, 139, 328, + -258, -188, 41, 284, 284, -100, -5, -4, -276, 6, + 21, 22, -141, 18, 17, -277, 83, -63, -76, 60, + 61, -78, 22, 37, 64, 62, -55, -75, 135, -84, + -194, -75, -174, 167, -174, -174, -164, -204, 228, -168, + 308, 307, -190, -166, -189, -187, -165, 305, 158, 347, + 109, 23, 25, 112, 144, 17, 113, 36, 160, 175, + 143, 171, 329, 153, 69, 348, 320, 321, 318, 324, + 331, 332, 319, 282, 30, 11, 350, 26, 185, 22, + 37, 137, 155, 116, 117, 188, 24, 186, 100, 353, + 20, 72, 180, 12, 173, 14, 354, 355, 15, 168, + 167, 128, 164, 67, 9, 149, 27, 125, 63, 356, + 29, 357, 358, 359, 360, 65, 126, 18, 322, 323, + 32, 433, 361, 337, 197, 139, 70, 56, 434, 110, + 362, 363, 98, 364, 101, 73, 439, 107, 16, 68, + 39, 365, 198, 366, 170, 367, 311, 368, 127, 156, + 328, 66, 369, 162, 283, 6, 334, 31, 184, 172, + 64, 370, 163, 115, 335, 336, 166, 99, 5, 169, + 33, 10, 71, 74, 325, 326, 327, 54, 341, 114, + 13, 371, 312, 108, 306, 254, -235, 126, -222, -226, + -189, 179, -251, 175, -100, -244, -243, -189, -79, 163, + -258, 164, 164, 164, -182, 168, 328, -36, -37, -165, + 143, 196, 82, 82, -226, -225, -224, -263, 198, 179, + -250, -242, 171, 180, -232, 172, 173, -227, 164, 29, + -263, -227, 170, 180, 198, 198, 106, 198, 106, 198, + 198, 198, 198, 198, 198, 198, 198, 198, 195, -233, + 118, -233, 345, 345, -238, -263, -263, -263, 166, 34, + 34, -186, -227, 166, 23, -233, -233, -165, 143, -233, + -233, -233, -233, 206, 206, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -100, -82, 213, 153, 155, 158, 73, 118, -38, 208, + -22, -100, 163, -258, -181, 168, -181, -100, 150, -100, + -179, 126, 13, -179, -176, 284, 288, 289, 290, -179, + -179, -179, -179, 209, 298, -228, 164, 34, 176, 284, + 209, 298, 209, 210, 209, 210, 209, -175, 12, 128, + 319, 303, 300, 202, 163, 203, 165, 304, -258, 435, + 210, 284, 205, -179, -202, -276, -190, -202, -202, 31, + 166, -189, -56, -189, 88, -7, -3, -11, -10, -12, + 118, -77, 284, -65, 144, 450, 436, 437, 438, 435, + 299, 443, 441, 439, 209, 440, 82, 109, 107, 108, + 125, -84, -108, 128, 110, 126, 127, 112, 130, 129, + 140, 133, 134, 135, 136, 137, 138, 139, 131, 132, + 143, 118, 119, 120, 121, 122, 123, 124, -173, -276, + -126, -276, 151, 152, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -276, 150, -2, -120, -4, -276, + -276, -276, -276, -276, -276, -276, -276, -133, -84, -276, + -280, -117, -276, -280, -117, -280, -117, -280, -276, -280, + -117, -280, -117, -280, -280, -117, -276, -276, -276, -276, + -276, -276, -276, -201, -270, -271, -103, -100, -276, -137, + -3, -54, -156, 20, 32, -84, -138, -139, -84, -137, + 56, -73, -75, -78, 60, 61, 94, 12, -192, -191, + 23, -189, 88, 150, 12, -101, 27, -100, -86, -87, + -88, -89, -103, -127, -276, 12, -93, -94, -100, -102, + -194, 82, 228, -168, -204, -170, -169, 309, 311, 118, + -193, -189, 88, 30, 83, 82, -100, -206, -209, -211, + -210, -212, -207, -208, 251, 252, 144, 255, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 31, 187, + 247, 248, 249, 250, 267, 268, 269, 270, 271, 272, + 273, 274, 234, 253, 339, 235, 236, 237, 238, 239, + 240, 242, 243, 244, 245, 246, -261, -258, 81, 83, + 82, -213, 81, -82, -182, -249, -246, 74, -258, -258, + -258, -258, 110, -233, -233, 195, -29, -26, -254, 16, + -25, -26, 158, 102, 103, 155, 81, -222, 81, -231, + -261, -258, 81, 29, 170, 169, -230, -227, -230, -231, + -258, -128, -189, -194, -258, 29, 29, -161, -189, -161, + -161, 21, -161, 21, -161, 21, 89, -189, -161, 21, + -161, 21, -161, 21, -161, 21, -161, 21, 30, 75, + 76, 30, 78, 79, 80, -128, -128, -222, -165, -100, + -258, 89, 89, -233, -233, 89, 88, 88, 88, -233, + -233, 89, 88, -258, 88, -264, 181, 223, 225, 89, + 89, 89, 89, 30, 88, -265, 30, 457, 456, 458, + 459, 460, 89, 30, 89, 30, 89, -189, 81, -81, + 215, 118, 204, 204, 163, 163, 217, -100, 216, 218, + 220, 41, 82, 166, -181, 73, -95, -100, 24, -258, + -195, -194, -187, 88, -84, -229, 12, 128, -175, -175, + -179, -100, -229, -175, -179, -100, -179, -179, -179, -179, + -175, -179, -194, -194, -100, -100, -100, -100, -100, -100, + -100, -202, -202, -202, -180, 126, 73, -200, 231, 265, + 429, 430, 431, 82, 341, -93, 435, 435, 435, 435, + 435, 435, -84, -84, -84, -84, -118, 98, 110, 99, + 100, -111, -119, -123, -126, 93, 128, 126, 127, 112, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, - -111, -203, -258, 88, 144, -258, -110, -110, -189, -74, - 22, 37, -73, -190, -195, -187, -69, -277, -277, -137, - -73, -73, -84, -84, -128, 88, -73, -128, 88, -73, - -73, -68, 22, 37, -131, -132, 114, -128, -277, -111, - -189, -189, -73, -74, -74, -73, -73, 82, -272, 309, - 310, 431, -197, 198, -196, 23, -194, 88, -121, -120, - -141, -277, -142, 27, 10, 128, 82, 19, 82, -140, - 25, 26, -141, -112, -189, 89, 92, -85, 82, 12, - -78, -100, -191, 135, -195, -100, -160, 198, -100, 31, - 82, -96, -98, -97, -99, 63, 67, 69, 64, 65, - 66, 70, -198, 23, -86, -3, -276, -100, -93, -278, - 82, 12, 74, -278, 82, 150, -168, -170, 82, 308, - 310, 311, 73, 101, -84, -215, 143, -240, -239, -238, - -222, -224, -225, -226, 83, -143, -218, 279, -213, -213, - -213, -213, -213, -214, -165, -214, -214, -214, 81, 81, - -213, -213, -213, -213, -216, 81, -216, -216, -217, 81, - -217, -251, -84, -248, -247, -245, -246, 174, 95, 339, - -243, -140, 89, -81, -100, 73, -189, -249, -249, -249, - 24, -258, 88, -258, 88, 82, 17, -223, -222, -129, - 223, -253, 198, -250, -244, 81, 29, -230, -231, -231, - 150, -258, 82, 27, 106, 106, 106, 106, 339, 155, - 31, -222, -129, -203, 166, -203, -203, 88, 88, -178, - 463, -93, 165, 222, -83, 322, 88, 84, -100, -100, - -100, -100, -100, 158, 155, 206, -100, -100, -93, -100, - 82, -59, 183, 178, -100, -179, -179, -100, -179, -179, - 88, -100, -189, -65, 309, 339, 20, -66, 20, 98, - 99, 100, -119, -111, -111, -111, -72, 188, 109, -277, - -277, -73, -73, -276, 150, -5, -141, -277, -277, 82, - 74, 23, 12, 12, -277, 12, 12, -277, -277, -73, - -134, -132, 116, -84, -277, -277, 82, 82, -277, -277, - -277, -277, -277, -271, 430, 310, -104, 71, 167, 72, - -276, -196, -277, -156, 39, 47, 58, -84, -84, -139, - -156, -172, 20, 12, 54, 54, -105, 13, -75, -86, - -78, 150, -105, -109, 31, 54, -3, -276, -276, -163, - -167, -128, -87, -88, -88, -87, -88, 63, 63, 63, - 68, 63, 68, 63, -97, -194, -277, -277, -3, -160, - 74, -86, -100, -86, -102, -194, 135, -169, -171, 312, - 309, 315, -258, 88, 82, -238, -226, 98, 110, 30, - 73, 276, 95, 170, 29, 169, -219, 280, -214, -214, - -215, -258, 144, -215, -215, -215, -221, 88, -221, 89, - 89, 83, -32, -27, -28, 32, 77, -245, -233, 88, - 38, 83, 165, -100, 73, 73, 73, 16, -158, -189, - 82, 83, -130, 224, -128, 83, -189, 83, -158, -231, - -190, -189, -276, 163, 30, 30, -129, -130, -215, -258, - 465, 464, 83, -100, -80, 213, 221, 81, 85, -260, - 74, 204, 276, 204, 207, 166, -59, -32, -100, -175, - -175, 32, 309, 442, 440, -72, 109, -111, -111, -277, - -277, -74, -190, -137, -156, -205, 144, 251, 187, 249, - 245, 265, 256, 278, 247, 279, -203, -205, -111, -111, - -111, -111, 336, -137, 117, -84, 115, -111, -111, 164, - 164, 164, -161, 40, 88, 88, 59, -100, -135, 14, - -84, 135, -141, -162, 73, -163, -122, -124, -123, -276, - -157, -277, -189, -161, -105, 82, 118, -91, -90, 73, - 74, -92, 73, -90, 63, 63, -277, -105, -86, -105, - -105, 150, 309, 313, 314, -238, 98, -111, 10, 88, - 29, 29, -215, -215, 83, 82, 83, 82, 83, 82, - -183, 376, 110, -28, -27, -233, -233, 89, -258, -100, - -100, -100, -100, 17, 82, -222, -128, 54, -248, 83, - -252, -253, -100, -110, -130, -159, 81, 83, -257, 339, - -259, -258, -189, -189, -189, -100, -179, -179, 32, -258, - -111, -277, -141, -277, -213, -213, -213, -217, -213, 239, - -213, 239, -277, -277, 20, 20, 20, 20, -276, -64, - 332, -84, 82, 82, -276, -276, -276, -277, 88, -214, - -136, 15, 17, 28, -162, 82, -277, -277, 82, 54, - 150, -277, -137, -167, -84, -84, 81, -84, -137, -105, - -114, -214, 88, -214, 89, 89, 376, 30, 78, 79, - 80, 30, 75, 76, -159, -158, -189, 200, 182, -277, - 82, -220, 339, 342, 23, -158, -256, -255, -190, 81, - 74, -156, -214, -258, -111, -111, -111, -111, -111, -141, - 88, -111, -111, -158, -277, -158, -158, -197, -214, -145, - -150, -176, -84, -120, 29, -124, 54, -3, -189, -122, - -189, -141, -158, -141, -215, -215, 83, 83, 23, 201, - -100, -253, 343, 343, -3, 83, 82, 118, -158, -100, - -277, -277, -277, -277, -67, 128, 339, -277, -277, -277, - -277, -277, -277, -104, -148, 426, -151, 43, -152, 44, - 10, -122, 150, 83, -3, -276, 81, -57, 339, -255, - -237, -190, 88, 89, 83, -277, 337, 70, 340, -145, - 48, 257, -153, 52, -154, -149, 53, 17, -163, -189, - -57, -111, 197, -158, -58, 212, 430, -260, 59, 338, - 341, -146, 50, -144, 49, -144, -152, 17, -155, 45, - 46, 88, -277, -277, 83, 175, -257, 59, -147, 51, - 73, 101, 88, 17, 17, -267, -268, 73, 214, 339, - 73, 101, 88, 88, -268, 73, 11, 10, 340, -266, - 183, 178, 181, 31, -266, 341, 177, 30, 98, + -111, -111, -111, -111, -111, -203, -258, 88, 144, -258, + -110, -110, -189, -74, 22, 37, -73, -190, -195, -187, + -69, -277, -277, -137, -73, -73, -84, -84, -128, 88, + -73, -128, 88, -73, -73, -68, 22, 37, -131, -132, + 114, -128, -277, -111, -189, -189, -73, -74, -74, -73, + -73, 82, -272, 311, 312, 433, -197, 198, -196, 23, + -194, 88, -121, -120, -141, -277, -142, 27, 10, 128, + 82, 19, 82, -140, 25, 26, -141, -112, -189, 89, + 92, -85, 82, 12, -78, -100, -191, 135, -195, -100, + -160, 198, -100, 31, 82, -96, -98, -97, -99, 63, + 67, 69, 64, 65, 66, 70, -198, 23, -86, -3, + -276, -100, -93, -278, 82, 12, 74, -278, 82, 150, + -168, -170, 82, 310, 312, 313, 73, 101, -84, -215, + 143, -240, -239, -238, -222, -224, -225, -226, 83, -143, + -218, 279, -213, -213, -213, -213, -213, -214, -165, -214, + -214, -214, 81, 81, -213, -213, -213, -213, -216, 81, + -216, -216, -217, 81, -217, -251, -84, -248, -247, -245, + -246, 174, 95, 341, -243, -140, 89, -81, -100, 73, + -189, -249, -249, -249, 24, -258, 88, -258, 88, 82, + 17, -223, -222, -129, 223, -253, 198, -250, -244, 81, + 29, -230, -231, -231, 150, -258, 82, 27, 106, 106, + 106, 106, 341, 155, 31, -222, -129, -203, 166, -203, + -203, 88, 88, -178, 465, -93, 165, 222, -83, 324, + 88, 84, -100, -100, -100, -100, -100, 158, 155, 206, + -100, -100, -93, -100, 82, -59, 183, 178, -100, -179, + -179, -100, -179, -179, 88, -100, -189, -65, 311, 341, + 20, -66, 20, 98, 99, 100, -119, -111, -111, -111, + -72, 188, 109, -277, -277, -73, -73, -276, 150, -5, + -141, -277, -277, 82, 74, 23, 12, 12, -277, 12, + 12, -277, -277, -73, -134, -132, 116, -84, -277, -277, + 82, 82, -277, -277, -277, -277, -277, -271, 432, 312, + -104, 71, 167, 72, -276, -196, -277, -156, 39, 47, + 58, -84, -84, -139, -156, -172, 20, 12, 54, 54, + -105, 13, -75, -86, -78, 150, -105, -109, 31, 54, + -3, -276, -276, -163, -167, -128, -87, -88, -88, -87, + -88, 63, 63, 63, 68, 63, 68, 63, -97, -194, + -277, -277, -3, -160, 74, -86, -100, -86, -102, -194, + 135, -169, -171, 314, 311, 317, -258, 88, 82, -238, + -226, 98, 110, 30, 73, 276, 95, 170, 29, 169, + -219, 280, -214, -214, -215, -258, 144, -215, -215, -215, + -221, 88, -221, 89, 89, 83, -32, -27, -28, 32, + 77, -245, -233, 88, 38, 83, 165, -100, 73, 73, + 73, 16, -158, -189, 82, 83, -130, 224, -128, 83, + -189, 83, -158, -231, -190, -189, -276, 163, 30, 30, + -129, -130, -215, -258, 467, 466, 83, -100, -80, 213, + 221, 81, 85, -260, 74, 204, 276, 204, 207, 166, + -59, -32, -100, -175, -175, 32, 311, 444, 442, -72, + 109, -111, -111, -277, -277, -74, -190, -137, -156, -205, + 144, 251, 187, 249, 245, 265, 256, 278, 247, 279, + -203, -205, -111, -111, -111, -111, 338, -137, 117, -84, + 115, -111, -111, 164, 164, 164, -161, 40, 88, 88, + 59, -100, -135, 14, -84, 135, -141, -162, 73, -163, + -122, -124, -123, -276, -157, -277, -189, -161, -105, 82, + 118, -91, -90, 73, 74, -92, 73, -90, 63, 63, + -277, -105, -86, -105, -105, 150, 311, 315, 316, -238, + 98, -111, 10, 88, 29, 29, -215, -215, 83, 82, + 83, 82, 83, 82, -183, 378, 110, -28, -27, -233, + -233, 89, -258, -100, -100, -100, -100, 17, 82, -222, + -128, 54, -248, 83, -252, -253, -100, -110, -130, -159, + 81, 83, -257, 341, -259, -258, -189, -189, -189, -100, + -179, -179, 32, -258, -111, -277, -141, -277, -213, -213, + -213, -217, -213, 239, -213, 239, -277, -277, 20, 20, + 20, 20, -276, -64, 334, -84, 82, 82, -276, -276, + -276, -277, 88, -214, -136, 15, 17, 28, -162, 82, + -277, -277, 82, 54, 150, -277, -137, -167, -84, -84, + 81, -84, -137, -105, -114, -214, 88, -214, 89, 89, + 378, 30, 78, 79, 80, 30, 75, 76, -159, -158, + -189, 200, 182, -277, 82, -220, 341, 344, 23, -158, + -256, -255, -190, 81, 74, -156, -214, -258, -111, -111, + -111, -111, -111, -141, 88, -111, -111, -158, -277, -158, + -158, -197, -214, -145, -150, -176, -84, -120, 29, -124, + 54, -3, -189, -122, -189, -141, -158, -141, -215, -215, + 83, 83, 23, 201, -100, -253, 345, 345, -3, 83, + 82, 118, -158, -100, -277, -277, -277, -277, -67, 128, + 341, -277, -277, -277, -277, -277, -277, -104, -148, 428, + -151, 43, -152, 44, 10, -122, 150, 83, -3, -276, + 81, -57, 341, -255, -237, -190, 88, 89, 83, -277, + 339, 70, 342, -145, 48, 257, -153, 52, -154, -149, + 53, 17, -163, -189, -57, -111, 197, -158, -58, 212, + 432, -260, 59, 340, 343, -146, 50, -144, 49, -144, + -152, 17, -155, 45, 46, 88, -277, -277, 83, 175, + -257, 59, -147, 51, 73, 101, 88, 17, 17, -267, + -268, 73, 214, 341, 73, 101, 88, 88, -268, 73, + 11, 10, 342, -266, 183, 178, 181, 31, -266, 343, + 177, 30, 98, } var yyDef = [...]int{ 33, -2, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 810, 0, 548, 548, 548, 548, 548, 548, - 548, 0, 0, -2, -2, -2, 834, 37, 0, 922, - 0, 0, -2, 482, 483, 0, 485, -2, 0, 0, - 494, 1345, 1345, 543, 0, 0, 0, 0, 0, 1343, - 54, 55, 500, 501, 502, 1, 3, 0, 552, 818, - 0, 0, -2, 550, 0, 0, 928, 928, 928, 0, - 85, 86, 0, 0, 0, 834, 0, 0, 0, 0, - 0, 926, 0, 923, 108, 109, 89, -2, 113, 114, + 31, 32, 811, 0, 549, 549, 549, 549, 549, 549, + 549, 0, 0, -2, -2, -2, 835, 37, 0, 923, + 0, 0, -2, 483, 484, 0, 486, -2, 0, 0, + 495, 1348, 1348, 544, 0, 0, 0, 0, 0, 1346, + 54, 55, 501, 502, 503, 1, 3, 0, 553, 819, + 0, 0, -2, 551, 0, 0, 929, 929, 929, 0, + 85, 86, 0, 0, 0, 835, 0, 0, 0, 0, + 0, 927, 0, 924, 108, 109, 89, -2, 113, 114, 0, 118, 366, 327, 369, 325, 355, -2, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 222, 222, 0, 0, -2, 318, 318, 318, - 0, 0, 0, 352, 930, 272, 222, 222, 0, 222, + 0, 0, 0, 352, 931, 272, 222, 222, 0, 222, 222, 222, 222, 0, 0, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, - 0, 107, 847, 0, 0, 117, 38, 34, 35, 36, - 0, 0, 0, 924, 924, 0, 418, 632, 943, 944, - 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, - 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, - 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, - 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, - 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, - 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, - 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, - 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, - 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, - 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, - 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, - 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, - 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, - 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, - 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, - 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, - 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, - 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, - 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, - 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, - 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, - 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, - 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, - 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, - 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, - 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, - 0, 473, 473, 0, 473, 473, 473, 473, 0, 0, - 0, 430, 0, 0, 0, 0, 470, 0, 0, 448, - 450, 0, 0, 457, 473, 1346, 1346, 1346, 913, 0, - 467, 465, 479, 480, 462, 463, 481, 484, 0, 489, - 492, 939, 940, 0, 507, 0, 1157, 499, 512, 513, - 0, 544, 545, 39, 683, 642, 0, 648, 650, 0, - 685, 686, 687, 688, 689, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 715, 716, 717, 718, 795, - 796, 797, 798, 799, 800, 801, 802, 652, 653, 792, - 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 783, 0, 752, 752, 752, 752, 752, 752, 752, - 752, 0, 0, 0, 0, 0, 0, 0, -2, -2, - 1345, 0, 522, 0, 810, 50, 0, 548, 553, 554, - 853, 0, 0, 810, 1344, 0, 0, -2, -2, 564, - 570, 571, 572, 573, 549, 0, 576, 580, 0, 0, - 0, 929, 0, 0, 71, 0, 1312, 906, -2, -2, - 0, 0, 941, 942, 915, -2, 947, 948, 949, 950, - 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, - 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, - 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, - 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, - 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, - 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, - 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, - 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, - 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, - 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, - 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, - 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, - 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, - 1081, 1082, -2, 1102, 0, 0, 127, 128, 0, 37, - 248, 0, 123, 0, 242, 196, 847, 926, 936, 0, - 0, 0, 0, 0, 91, 115, 116, 222, 222, 0, - 117, 117, 334, 335, 336, 0, 0, -2, 246, 0, - 319, 0, 0, 236, 236, 240, 238, 239, 0, 0, - 0, 0, 0, 0, 346, 0, 347, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 402, 0, 223, 0, - 364, 365, 273, 0, 0, 0, 0, 344, 345, 0, - 0, 931, 932, 0, 0, 222, 222, 0, 0, 0, - 0, 222, 222, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 101, 838, - 0, 0, 0, 0, 0, 0, -2, 0, 410, 0, - 924, 0, 0, 0, 0, 417, 0, 419, 420, 0, - 0, 421, 0, 470, 470, 468, 469, 423, 424, 425, - 426, 473, 0, 0, 231, 232, 233, 470, 473, 0, - 473, 473, 473, 473, 470, 473, 0, 0, 1346, 1346, - 1346, 0, 1346, 1346, 0, 1346, 1346, 476, 454, 455, - 458, 459, 1347, 1348, 460, 461, 914, 490, 493, 510, - 508, 509, 511, 503, 504, 505, 506, 0, 523, 524, - 529, 0, 0, 0, 0, 535, 536, 537, 0, 0, - 540, 541, 542, 0, 0, 0, 0, 0, 646, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 670, 671, - 672, 673, 674, 675, 676, 649, 0, 663, 0, 0, - 0, 705, 706, 707, 708, 709, 710, 711, 712, 713, - 0, 561, 0, 0, 0, 810, 0, 0, 0, 0, - 0, 0, 0, 558, 0, 784, 0, 736, 744, 0, - 737, 745, 738, 746, 739, 0, 740, 747, 741, 748, - 742, 743, 749, 0, 0, 0, 561, 561, 0, 0, - 40, 514, 515, 0, 615, 934, 818, 0, 563, 856, - 0, 0, 819, 811, 812, 815, 818, 0, 585, 574, - 565, 568, 569, 551, 0, 577, 581, 0, 583, 584, - 0, 0, 69, 0, 631, 0, 587, 589, 590, 591, - 613, 0, 0, 0, 0, 65, 67, 632, 0, 1312, - 912, 0, 73, 74, 0, 0, 0, 210, 917, 918, - 919, -2, 229, 0, 135, 203, 147, 148, 149, 196, - 151, 196, 196, 196, 196, 207, 207, 207, 207, 179, - 180, 181, 182, 183, 0, 0, 166, 196, 196, 196, - 196, 186, 187, 188, 189, 190, 191, 192, 193, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 198, 198, - 198, 200, 200, 0, 38, 0, 214, 0, 815, 0, - 838, 0, 0, 937, 0, 936, 936, 936, 106, 0, - 0, 0, 367, 328, 356, 368, 0, 331, 332, -2, - 0, 0, 318, 0, 320, 0, 230, 0, -2, 0, - 0, 0, 236, 240, 237, 240, 228, 241, 348, 792, - 0, 349, 350, 0, 382, 601, 0, 0, 0, 0, - 0, 388, 389, 390, 0, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 357, 358, 359, 360, 361, - 362, 363, 0, 0, 320, 0, 353, 0, 274, 275, - 0, 0, 278, 279, 280, 281, 0, 0, 284, 285, - 286, 287, 288, 312, 313, 314, 289, 290, 291, 292, - 293, 294, 295, 306, 307, 308, 309, 310, 311, 296, - 297, 298, 299, 300, 303, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 835, 836, 837, 0, 0, - 0, 0, 0, 261, 63, 925, 416, 633, 945, 946, - 474, 475, 0, 234, 235, 473, 473, 427, 449, 0, - 473, 431, 451, 432, 434, 433, 435, 473, 438, 471, - 472, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 453, 0, 0, 0, 491, 495, 496, 497, 498, 0, - 0, 526, 531, 532, 533, 534, 546, 539, 684, 643, - 644, 645, 647, 664, 0, 666, 668, 654, 655, 679, - 680, 681, 0, 0, 0, 0, 677, 659, 0, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, - 701, 704, 767, 768, 769, 0, 702, 703, 714, 0, - 0, 0, 562, 793, 0, -2, 0, 682, 901, 818, - 0, 0, 0, 0, 687, 795, 0, 687, 795, 0, - 0, 0, 559, 560, 790, 787, 0, 0, 753, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 517, 518, - 520, 0, 635, 0, 616, 0, 618, 619, 0, 935, - 853, 51, 41, 0, 854, 0, 0, 0, 0, 814, - 816, 817, 853, 0, 803, 0, 0, 640, 0, 0, - 566, 47, 582, 578, 0, 640, 0, 0, 630, 0, - 0, 0, 0, 0, 0, 620, 0, 0, 623, 0, - 0, 0, 0, 614, 0, 0, 0, -2, 0, 0, - 0, 61, 62, 0, 0, 0, 907, 72, 0, 0, - 77, 78, 908, 909, 910, 911, 0, 110, -2, 269, - 129, 131, 132, 133, 124, 134, 205, 204, 150, 207, - 207, 173, 174, 210, 0, 210, 210, 210, 0, 0, - 167, 168, 169, 170, 161, 0, 162, 163, 164, 0, - 165, 247, 0, 822, 215, 216, 218, 222, 0, 0, - 243, 244, 0, 0, 100, 0, 938, 0, 0, 0, - 927, 119, 120, 121, 122, 117, 0, 0, 125, 322, - 0, 0, 0, 245, 0, 0, 224, 240, 225, 226, - 0, 351, 0, 0, 384, 385, 386, 387, 0, 0, - 0, 320, 322, 210, 0, 276, 277, 282, 283, 301, - 0, 0, 0, 0, 848, 849, 0, 852, 92, 374, - 376, 375, 379, 0, 0, 0, 0, 411, 261, 822, - 0, 415, 262, 263, 470, 437, 452, 470, 429, 436, - 477, 456, 487, 530, 0, 0, 0, 538, 0, 665, - 667, 669, 656, 677, 660, 0, 657, 0, 0, 651, - 719, 0, 0, 561, 0, 810, 853, 723, 724, 0, - 0, 0, 0, 0, 760, 0, 0, 761, 0, 810, - 0, 788, 0, 0, 735, 754, 0, 0, 755, 756, - 757, 758, 759, 516, 519, 521, 595, 0, 0, 0, - 0, 617, 933, 43, 0, 0, 0, 820, 821, 813, - 42, 0, 920, 921, 804, 805, 806, 0, 575, 586, - 567, 0, 818, 895, 0, 0, 887, 0, 0, 640, - 903, 0, 588, 609, 611, 0, 606, 621, 622, 624, - 0, 626, 0, 628, 629, 592, 593, 594, 0, 640, - 0, 640, 66, 640, 68, 0, 634, 75, 76, 0, - 0, 82, 211, 212, 117, 271, 130, 136, 0, 0, - 0, 140, 0, 0, 143, 145, 146, 206, 210, 210, - 175, 208, 209, 176, 177, 178, 0, 194, 0, 0, - 0, 264, 87, 826, 825, 222, 222, 217, 0, 220, - 0, 197, 0, 102, 0, 0, 0, 0, 326, 599, - 0, 337, 338, 0, 321, 381, 0, 214, 0, 227, - 793, 602, 0, 0, 339, 0, 322, 342, 343, 354, - 304, 305, 302, 597, 839, 840, 841, 0, 851, 95, - 0, 0, 0, 0, 372, 0, 413, 414, 64, 473, - 473, 525, 0, 528, 0, 658, 0, 678, 661, 720, - 721, 0, 794, 818, 45, 0, 196, 196, 773, 196, - 200, 776, 196, 778, 196, 781, 0, 0, 0, 0, - 0, 0, 0, 785, 734, 791, 0, 0, 0, 0, - 0, 0, 0, 0, 207, 858, 855, 44, 808, 0, - 641, 579, 48, 52, 0, 895, 886, 897, 899, 0, - 0, 0, 891, 0, 810, 0, 0, 603, 610, 0, - 0, 604, 0, 605, 625, 627, -2, 810, 640, 59, - 60, 0, 79, 80, 81, 270, 137, 138, 0, 141, - 142, 144, 171, 172, 207, 0, 207, 0, 201, 0, - 253, 265, 0, 823, 824, 0, 0, 219, 221, 597, - 103, 104, 105, 0, 0, 126, 323, 0, 213, 0, - 0, 406, 403, 340, 341, 0, 0, 850, 373, 0, - 93, 94, 0, 0, 378, 412, 422, 428, 527, 547, - 662, 722, 853, 725, 770, 207, 774, 775, 777, 779, - 780, 782, 727, 726, 0, 0, 0, 0, 0, 818, - 0, 789, 0, 0, 0, 0, 0, 615, 207, 878, - 49, 0, 0, 0, 53, 0, 900, 0, 0, 0, - 0, 70, 818, 904, 905, 607, 0, 612, 818, 58, - 139, 210, 195, 210, 0, 0, 266, 827, 828, 829, - 830, 831, 832, 833, 0, 329, 600, 0, 0, 383, - 0, 391, 0, 0, 0, 0, 96, 97, 0, 0, - 0, 46, 771, 772, 0, 0, 0, 0, 762, 0, - 786, 0, 0, 0, 637, 0, 0, 635, 860, 859, - 872, 876, 809, 807, 0, 898, 0, 890, 893, 889, - 892, 56, 0, 57, 184, 185, 199, 202, 0, 0, - 0, 407, 404, 405, 842, 598, 0, 0, 0, 380, - 728, 730, 729, 731, 0, 0, 0, 733, 750, 751, - 636, 638, 639, 596, 878, 0, 871, 874, -2, 0, - 0, 888, 0, 608, 842, 0, 0, 370, 844, 98, - 99, 315, 316, 317, 92, 732, 0, 0, 0, 865, - 863, 863, 876, 0, 880, 0, 885, 0, 896, 894, - 88, 0, 0, 0, 0, 845, 846, 95, 763, 0, - 766, 868, 0, 861, 864, 862, 873, 0, 879, 0, - 0, 877, 408, 409, 249, 0, 377, 764, 857, 0, - 866, 867, 875, 0, 0, 250, 251, 0, 843, 0, - 869, 870, 881, 883, 252, 0, 0, 0, 0, 254, - 256, 257, 0, 0, 255, 765, 258, 259, 260, + 0, 107, 848, 0, 0, 117, 38, 34, 35, 36, + 0, 0, 0, 925, 925, 0, 418, 633, 944, 945, + 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, + 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, + 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, + 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, + 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, + 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, + 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, + 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, + 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, + 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, + 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, + 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, + 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, + 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, + 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, + 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, + 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, + 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, + 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, + 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, + 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, + 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, + 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, + 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, + 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, + 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, + 1344, 1345, 0, 474, 474, 0, 474, 474, 474, 474, + 0, 0, 0, 430, 0, 0, 0, 0, 471, 0, + 0, 449, 451, 0, 0, 458, 474, 1349, 1349, 1349, + 914, 0, 468, 466, 480, 481, 463, 464, 482, 485, + 0, 490, 493, 940, 941, 0, 508, 0, 1159, 500, + 513, 514, 0, 545, 546, 39, 684, 643, 0, 649, + 651, 0, 686, 687, 688, 689, 690, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 716, 717, 718, + 719, 796, 797, 798, 799, 800, 801, 802, 803, 653, + 654, 793, 0, 903, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 784, 0, 753, 753, 753, 753, 753, + 753, 753, 753, 0, 0, 0, 0, 0, 0, 0, + -2, -2, 1348, 0, 523, 0, 811, 50, 0, 549, + 554, 555, 854, 0, 0, 811, 1347, 0, 0, -2, + -2, 565, 571, 572, 573, 574, 550, 0, 577, 581, + 0, 0, 0, 930, 0, 0, 71, 0, 1314, 907, + -2, -2, 0, 0, 942, 943, 916, -2, 948, 949, + 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, + 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, + 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, + 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, + 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, + 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, + 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, + 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, + 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, + 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, + 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, + 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, + 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, + 1080, 1081, 1082, 1083, -2, 1103, 0, 0, 127, 128, + 0, 37, 248, 0, 123, 0, 242, 196, 848, 927, + 937, 0, 0, 0, 0, 0, 91, 115, 116, 222, + 222, 0, 117, 117, 334, 335, 336, 0, 0, -2, + 246, 0, 319, 0, 0, 236, 236, 240, 238, 239, + 0, 0, 0, 0, 0, 0, 346, 0, 347, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 402, 0, + 223, 0, 364, 365, 273, 0, 0, 0, 0, 344, + 345, 0, 0, 932, 933, 0, 0, 222, 222, 0, + 0, 0, 0, 222, 222, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 101, 839, 0, 0, 0, 0, 0, 0, -2, 0, + 410, 0, 925, 0, 0, 0, 0, 417, 0, 419, + 420, 0, 0, 421, 0, 471, 471, 469, 470, 423, + 424, 425, 426, 474, 0, 0, 231, 232, 233, 471, + 474, 0, 474, 474, 474, 474, 471, 474, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1349, 1349, 1349, + 477, 455, 456, 459, 460, 1350, 1351, 461, 462, 915, + 491, 494, 511, 509, 510, 512, 504, 505, 506, 507, + 0, 524, 525, 530, 0, 0, 0, 0, 536, 537, + 538, 0, 0, 541, 542, 543, 0, 0, 0, 0, + 0, 647, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 671, 672, 673, 674, 675, 676, 677, 650, 0, + 664, 0, 0, 0, 706, 707, 708, 709, 710, 711, + 712, 713, 714, 0, 562, 0, 0, 0, 811, 0, + 0, 0, 0, 0, 0, 0, 559, 0, 785, 0, + 737, 745, 0, 738, 746, 739, 747, 740, 0, 741, + 748, 742, 749, 743, 744, 750, 0, 0, 0, 562, + 562, 0, 0, 40, 515, 516, 0, 616, 935, 819, + 0, 564, 857, 0, 0, 820, 812, 813, 816, 819, + 0, 586, 575, 566, 569, 570, 552, 0, 578, 582, + 0, 584, 585, 0, 0, 69, 0, 632, 0, 588, + 590, 591, 592, 614, 0, 0, 0, 0, 65, 67, + 633, 0, 1314, 913, 0, 73, 74, 0, 0, 0, + 210, 918, 919, 920, -2, 229, 0, 135, 203, 147, + 148, 149, 196, 151, 196, 196, 196, 196, 207, 207, + 207, 207, 179, 180, 181, 182, 183, 0, 0, 166, + 196, 196, 196, 196, 186, 187, 188, 189, 190, 191, + 192, 193, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 198, 198, 198, 200, 200, 0, 38, 0, 214, + 0, 816, 0, 839, 0, 0, 938, 0, 937, 937, + 937, 106, 0, 0, 0, 367, 328, 356, 368, 0, + 331, 332, -2, 0, 0, 318, 0, 320, 0, 230, + 0, -2, 0, 0, 0, 236, 240, 237, 240, 228, + 241, 348, 793, 0, 349, 350, 0, 382, 602, 0, + 0, 0, 0, 0, 388, 389, 390, 0, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 357, 358, + 359, 360, 361, 362, 363, 0, 0, 320, 0, 353, + 0, 274, 275, 0, 0, 278, 279, 280, 281, 0, + 0, 284, 285, 286, 287, 288, 312, 313, 314, 289, + 290, 291, 292, 293, 294, 295, 306, 307, 308, 309, + 310, 311, 296, 297, 298, 299, 300, 303, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 836, 837, + 838, 0, 0, 0, 0, 0, 261, 63, 926, 416, + 634, 946, 947, 475, 476, 0, 234, 235, 474, 474, + 427, 450, 0, 474, 431, 452, 432, 434, 433, 435, + 474, 438, 472, 473, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 454, 0, 0, 0, 492, 496, + 497, 498, 499, 0, 0, 527, 532, 533, 534, 535, + 547, 540, 685, 644, 645, 646, 648, 665, 0, 667, + 669, 655, 656, 680, 681, 682, 0, 0, 0, 0, + 678, 660, 0, 691, 692, 693, 694, 695, 696, 697, + 698, 699, 700, 701, 702, 705, 768, 769, 770, 0, + 703, 704, 715, 0, 0, 0, 563, 794, 0, -2, + 0, 683, 902, 819, 0, 0, 0, 0, 688, 796, + 0, 688, 796, 0, 0, 0, 560, 561, 791, 788, + 0, 0, 754, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 518, 519, 521, 0, 636, 0, 617, 0, + 619, 620, 0, 936, 854, 51, 41, 0, 855, 0, + 0, 0, 0, 815, 817, 818, 854, 0, 804, 0, + 0, 641, 0, 0, 567, 47, 583, 579, 0, 641, + 0, 0, 631, 0, 0, 0, 0, 0, 0, 621, + 0, 0, 624, 0, 0, 0, 0, 615, 0, 0, + 0, -2, 0, 0, 0, 61, 62, 0, 0, 0, + 908, 72, 0, 0, 77, 78, 909, 910, 911, 912, + 0, 110, -2, 269, 129, 131, 132, 133, 124, 134, + 205, 204, 150, 207, 207, 173, 174, 210, 0, 210, + 210, 210, 0, 0, 167, 168, 169, 170, 161, 0, + 162, 163, 164, 0, 165, 247, 0, 823, 215, 216, + 218, 222, 0, 0, 243, 244, 0, 0, 100, 0, + 939, 0, 0, 0, 928, 119, 120, 121, 122, 117, + 0, 0, 125, 322, 0, 0, 0, 245, 0, 0, + 224, 240, 225, 226, 0, 351, 0, 0, 384, 385, + 386, 387, 0, 0, 0, 320, 322, 210, 0, 276, + 277, 282, 283, 301, 0, 0, 0, 0, 849, 850, + 0, 853, 92, 374, 376, 375, 379, 0, 0, 0, + 0, 411, 261, 823, 0, 415, 262, 263, 471, 437, + 453, 471, 429, 436, 478, 457, 488, 531, 0, 0, + 0, 539, 0, 666, 668, 670, 657, 678, 661, 0, + 658, 0, 0, 652, 720, 0, 0, 562, 0, 811, + 854, 724, 725, 0, 0, 0, 0, 0, 761, 0, + 0, 762, 0, 811, 0, 789, 0, 0, 736, 755, + 0, 0, 756, 757, 758, 759, 760, 517, 520, 522, + 596, 0, 0, 0, 0, 618, 934, 43, 0, 0, + 0, 821, 822, 814, 42, 0, 921, 922, 805, 806, + 807, 0, 576, 587, 568, 0, 819, 896, 0, 0, + 888, 0, 0, 641, 904, 0, 589, 610, 612, 0, + 607, 622, 623, 625, 0, 627, 0, 629, 630, 593, + 594, 595, 0, 641, 0, 641, 66, 641, 68, 0, + 635, 75, 76, 0, 0, 82, 211, 212, 117, 271, + 130, 136, 0, 0, 0, 140, 0, 0, 143, 145, + 146, 206, 210, 210, 175, 208, 209, 176, 177, 178, + 0, 194, 0, 0, 0, 264, 87, 827, 826, 222, + 222, 217, 0, 220, 0, 197, 0, 102, 0, 0, + 0, 0, 326, 600, 0, 337, 338, 0, 321, 381, + 0, 214, 0, 227, 794, 603, 0, 0, 339, 0, + 322, 342, 343, 354, 304, 305, 302, 598, 840, 841, + 842, 0, 852, 95, 0, 0, 0, 0, 372, 0, + 413, 414, 64, 474, 474, 526, 0, 529, 0, 659, + 0, 679, 662, 721, 722, 0, 795, 819, 45, 0, + 196, 196, 774, 196, 200, 777, 196, 779, 196, 782, + 0, 0, 0, 0, 0, 0, 0, 786, 735, 792, + 0, 0, 0, 0, 0, 0, 0, 0, 207, 859, + 856, 44, 809, 0, 642, 580, 48, 52, 0, 896, + 887, 898, 900, 0, 0, 0, 892, 0, 811, 0, + 0, 604, 611, 0, 0, 605, 0, 606, 626, 628, + -2, 811, 641, 59, 60, 0, 79, 80, 81, 270, + 137, 138, 0, 141, 142, 144, 171, 172, 207, 0, + 207, 0, 201, 0, 253, 265, 0, 824, 825, 0, + 0, 219, 221, 598, 103, 104, 105, 0, 0, 126, + 323, 0, 213, 0, 0, 406, 403, 340, 341, 0, + 0, 851, 373, 0, 93, 94, 0, 0, 378, 412, + 422, 428, 528, 548, 663, 723, 854, 726, 771, 207, + 775, 776, 778, 780, 781, 783, 728, 727, 0, 0, + 0, 0, 0, 819, 0, 790, 0, 0, 0, 0, + 0, 616, 207, 879, 49, 0, 0, 0, 53, 0, + 901, 0, 0, 0, 0, 70, 819, 905, 906, 608, + 0, 613, 819, 58, 139, 210, 195, 210, 0, 0, + 266, 828, 829, 830, 831, 832, 833, 834, 0, 329, + 601, 0, 0, 383, 0, 391, 0, 0, 0, 0, + 96, 97, 0, 0, 0, 46, 772, 773, 0, 0, + 0, 0, 763, 0, 787, 0, 0, 0, 638, 0, + 0, 636, 861, 860, 873, 877, 810, 808, 0, 899, + 0, 891, 894, 890, 893, 56, 0, 57, 184, 185, + 199, 202, 0, 0, 0, 407, 404, 405, 843, 599, + 0, 0, 0, 380, 729, 731, 730, 732, 0, 0, + 0, 734, 751, 752, 637, 639, 640, 597, 879, 0, + 872, 875, -2, 0, 0, 889, 0, 609, 843, 0, + 0, 370, 845, 98, 99, 315, 316, 317, 92, 733, + 0, 0, 0, 866, 864, 864, 877, 0, 881, 0, + 886, 0, 897, 895, 88, 0, 0, 0, 0, 846, + 847, 95, 764, 0, 767, 869, 0, 862, 865, 863, + 874, 0, 880, 0, 0, 878, 408, 409, 249, 0, + 377, 765, 858, 0, 867, 868, 876, 0, 0, 250, + 251, 0, 844, 0, 870, 871, 882, 884, 252, 0, + 0, 0, 0, 254, 256, 257, 0, 0, 255, 766, + 258, 259, 260, } var yyTok1 = [...]int{ @@ -4943,7 +4973,7 @@ var yyTok1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 111, 3, 3, 3, 138, 130, 3, 81, 83, 135, 133, 82, 134, 150, 136, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 466, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 468, 119, 118, 120, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -5021,7 +5051,7 @@ var yyTok3 = [...]int{ 57775, 450, 57776, 451, 57777, 452, 57778, 453, 57779, 454, 57780, 455, 57781, 456, 57782, 457, 57783, 458, 57784, 459, 57785, 460, 57786, 461, 57787, 462, 57788, 463, 57789, 464, - 57790, 465, 0, + 57790, 465, 57791, 466, 57792, 467, 0, } var yyErrorMessages = [...]struct { @@ -7871,1126 +7901,1132 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2392 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowCreate{Command: CreateDb, Op: yyDollar[4].tableName}} } case 440: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2396 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowCreate{Command: CreateE, Op: yyDollar[4].tableName}} } case 441: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2400 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowCreate{Command: CreateF, Op: yyDollar[4].tableName}} } case 442: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2404 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowCreate{Command: CreateProc, Op: yyDollar[4].tableName}} } case 443: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2409 +//line sql.y:2408 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowCreate{Command: CreateTbl, Op: yyDollar[4].tableName}} } case 444: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2413 +//line sql.y:2412 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowCreate{Command: CreateTr, Op: yyDollar[4].tableName}} } case 445: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2417 +//line sql.y:2416 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowCreate{Command: CreateV, Op: yyDollar[4].tableName}} } case 446: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2421 +//line sql.y:2420 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 447: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2425 +//line sql.y:2424 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } case 448: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:2428 + { + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} + } + case 449: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2429 +//line sql.y:2432 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 449: + case 450: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2433 +//line sql.y:2436 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } - case 450: + case 451: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2437 +//line sql.y:2440 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 451: + case 452: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2441 +//line sql.y:2444 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } - case 452: + case 453: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2445 +//line sql.y:2448 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 453: + case 454: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2449 +//line sql.y:2452 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{&ShowLegacy{Scope: VitessMetadataScope, Type: string(yyDollar[3].bytes), ShowTablesOpt: showTablesOpt}} } - case 454: + case 455: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2454 +//line sql.y:2457 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 455: + case 456: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2458 +//line sql.y:2461 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 456: + case 457: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2462 +//line sql.y:2465 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), OnTable: yyDollar[5].tableName, Scope: ImplicitScope}} } - case 457: + case 458: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2466 +//line sql.y:2469 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 458: + case 459: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2471 +//line sql.y:2474 { // This should probably be a different type (ShowVitessTopoOpt), but // just getting the thing working for now showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: yyDollar[2].str, ShowTablesOpt: showTablesOpt}} } - case 459: + case 460: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2485 +//line sql.y:2488 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].colIdent.String()), Scope: ImplicitScope}} } - case 460: + case 461: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2489 +//line sql.y:2492 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 461: + case 462: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2493 +//line sql.y:2496 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 462: + case 463: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2499 +//line sql.y:2502 { yyVAL.str = string(yyDollar[1].bytes) } - case 463: + case 464: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2503 +//line sql.y:2506 { yyVAL.str = string(yyDollar[1].bytes) } - case 464: + case 465: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2509 +//line sql.y:2512 { yyVAL.str = "" } - case 465: + case 466: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2513 +//line sql.y:2516 { yyVAL.str = "extended " } - case 466: + case 467: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2519 +//line sql.y:2522 { yyVAL.boolean = false } - case 467: + case 468: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2523 +//line sql.y:2526 { yyVAL.boolean = true } - case 468: + case 469: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2529 +//line sql.y:2532 { yyVAL.str = string(yyDollar[1].bytes) } - case 469: + case 470: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2533 +//line sql.y:2536 { yyVAL.str = string(yyDollar[1].bytes) } - case 470: + case 471: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2539 +//line sql.y:2542 { yyVAL.str = "" } - case 471: + case 472: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2543 +//line sql.y:2546 { yyVAL.str = yyDollar[2].tableIdent.v } - case 472: + case 473: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2547 +//line sql.y:2550 { yyVAL.str = yyDollar[2].tableIdent.v } - case 473: + case 474: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2553 +//line sql.y:2556 { yyVAL.showFilter = nil } - case 474: + case 475: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2557 +//line sql.y:2560 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 475: + case 476: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2561 +//line sql.y:2564 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } - case 476: + case 477: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2567 +//line sql.y:2570 { yyVAL.showFilter = nil } - case 477: + case 478: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2571 +//line sql.y:2574 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 478: + case 479: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2577 +//line sql.y:2580 { yyVAL.empty = struct{}{} } - case 479: + case 480: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2581 +//line sql.y:2584 { yyVAL.empty = struct{}{} } - case 480: + case 481: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2585 +//line sql.y:2588 { yyVAL.empty = struct{}{} } - case 481: + case 482: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2591 +//line sql.y:2594 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } - case 482: + case 483: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2595 +//line sql.y:2598 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } - case 483: + case 484: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2601 +//line sql.y:2604 { yyVAL.statement = &Begin{} } - case 484: + case 485: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2605 +//line sql.y:2608 { yyVAL.statement = &Begin{} } - case 485: + case 486: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2611 +//line sql.y:2614 { yyVAL.statement = &Commit{} } - case 486: + case 487: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2617 +//line sql.y:2620 { yyVAL.statement = &Rollback{} } - case 487: + case 488: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2621 +//line sql.y:2624 { yyVAL.statement = &SRollback{Name: yyDollar[5].colIdent} } - case 488: + case 489: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2626 +//line sql.y:2629 { yyVAL.empty = struct{}{} } - case 489: + case 490: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2628 +//line sql.y:2631 { yyVAL.empty = struct{}{} } - case 490: + case 491: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2631 +//line sql.y:2634 { yyVAL.empty = struct{}{} } - case 491: + case 492: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2633 +//line sql.y:2636 { yyVAL.empty = struct{}{} } - case 492: + case 493: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2638 +//line sql.y:2641 { yyVAL.statement = &Savepoint{Name: yyDollar[2].colIdent} } - case 493: + case 494: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2644 +//line sql.y:2647 { yyVAL.statement = &Release{Name: yyDollar[3].colIdent} } - case 494: + case 495: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2649 +//line sql.y:2652 { yyVAL.explainType = EmptyType } - case 495: + case 496: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2653 +//line sql.y:2656 { yyVAL.explainType = JSONType } - case 496: + case 497: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2657 +//line sql.y:2660 { yyVAL.explainType = TreeType } - case 497: + case 498: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2661 +//line sql.y:2664 { yyVAL.explainType = VitessType } - case 498: + case 499: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2665 +//line sql.y:2668 { yyVAL.explainType = TraditionalType } - case 499: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2669 - { - yyVAL.explainType = AnalyzeType - } case 500: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2675 +//line sql.y:2672 { - yyVAL.bytes = yyDollar[1].bytes + yyVAL.explainType = AnalyzeType } case 501: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2679 +//line sql.y:2678 { yyVAL.bytes = yyDollar[1].bytes } case 502: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2683 +//line sql.y:2682 { yyVAL.bytes = yyDollar[1].bytes } case 503: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2689 +//line sql.y:2686 { - yyVAL.statement = yyDollar[1].selStmt + yyVAL.bytes = yyDollar[1].bytes } case 504: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2693 +//line sql.y:2692 { - yyVAL.statement = yyDollar[1].statement + yyVAL.statement = yyDollar[1].selStmt } case 505: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2697 +//line sql.y:2696 { yyVAL.statement = yyDollar[1].statement } case 506: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2701 +//line sql.y:2700 { yyVAL.statement = yyDollar[1].statement } case 507: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2704 + { + yyVAL.statement = yyDollar[1].statement + } + case 508: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2706 +//line sql.y:2709 { yyVAL.str = "" } - case 508: + case 509: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2710 +//line sql.y:2713 { yyVAL.str = yyDollar[1].colIdent.val } - case 509: + case 510: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2714 +//line sql.y:2717 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'" } - case 510: + case 511: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2720 +//line sql.y:2723 { yyVAL.statement = &ExplainTab{Table: yyDollar[2].tableName, Wild: yyDollar[3].str} } - case 511: + case 512: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2724 +//line sql.y:2727 { yyVAL.statement = &ExplainStmt{Type: yyDollar[2].explainType, Statement: yyDollar[3].statement} } - case 512: + case 513: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2730 +//line sql.y:2733 { yyVAL.statement = &OtherAdmin{} } - case 513: + case 514: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2734 +//line sql.y:2737 { yyVAL.statement = &OtherAdmin{} } - case 514: + case 515: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2740 +//line sql.y:2743 { yyVAL.statement = &LockTables{Tables: yyDollar[3].tableAndLockTypes} } - case 515: + case 516: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2746 +//line sql.y:2749 { yyVAL.tableAndLockTypes = TableAndLockTypes{yyDollar[1].tableAndLockType} } - case 516: + case 517: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2750 +//line sql.y:2753 { yyVAL.tableAndLockTypes = append(yyDollar[1].tableAndLockTypes, yyDollar[3].tableAndLockType) } - case 517: + case 518: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2756 +//line sql.y:2759 { yyVAL.tableAndLockType = &TableAndLockType{Table: yyDollar[1].aliasedTableName, Lock: yyDollar[2].lockType} } - case 518: + case 519: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2762 +//line sql.y:2765 { yyVAL.lockType = Read } - case 519: + case 520: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2766 +//line sql.y:2769 { yyVAL.lockType = ReadLocal } - case 520: + case 521: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2770 +//line sql.y:2773 { yyVAL.lockType = Write } - case 521: + case 522: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2774 +//line sql.y:2777 { yyVAL.lockType = LowPriorityWrite } - case 522: + case 523: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2780 +//line sql.y:2783 { yyVAL.statement = &UnlockTables{} } - case 523: + case 524: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2786 +//line sql.y:2789 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, FlushOptions: yyDollar[3].strs} } - case 524: + case 525: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2790 +//line sql.y:2793 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean} } - case 525: + case 526: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2794 +//line sql.y:2797 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, WithLock: true} } - case 526: + case 527: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2798 +//line sql.y:2801 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, TableNames: yyDollar[4].tableNames} } - case 527: + case 528: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2802 +//line sql.y:2805 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, TableNames: yyDollar[4].tableNames, WithLock: true} } - case 528: + case 529: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2806 +//line sql.y:2809 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, TableNames: yyDollar[4].tableNames, ForExport: true} } - case 529: + case 530: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2812 +//line sql.y:2815 { yyVAL.strs = []string{yyDollar[1].str} } - case 530: + case 531: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2816 +//line sql.y:2819 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[3].str) } - case 531: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2822 - { - yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) - } case 532: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2826 +//line sql.y:2825 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } case 533: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2830 +//line sql.y:2829 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } case 534: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2834 +//line sql.y:2833 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } case 535: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2838 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2837 { - yyVAL.str = string(yyDollar[1].bytes) + yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } case 536: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2842 +//line sql.y:2841 { yyVAL.str = string(yyDollar[1].bytes) } case 537: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2846 +//line sql.y:2845 { yyVAL.str = string(yyDollar[1].bytes) } case 538: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2849 + { + yyVAL.str = string(yyDollar[1].bytes) + } + case 539: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2850 +//line sql.y:2853 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) + yyDollar[3].str } - case 539: + case 540: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2854 +//line sql.y:2857 { yyVAL.str = string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) } - case 540: + case 541: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2858 +//line sql.y:2861 { yyVAL.str = string(yyDollar[1].bytes) } - case 541: + case 542: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2862 +//line sql.y:2865 { yyVAL.str = string(yyDollar[1].bytes) } - case 542: + case 543: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2866 +//line sql.y:2869 { yyVAL.str = string(yyDollar[1].bytes) } - case 543: + case 544: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2871 +//line sql.y:2874 { yyVAL.boolean = false } - case 544: + case 545: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2875 +//line sql.y:2878 { yyVAL.boolean = true } - case 545: + case 546: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2879 +//line sql.y:2882 { yyVAL.boolean = true } - case 546: + case 547: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2884 +//line sql.y:2887 { yyVAL.str = "" } - case 547: + case 548: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2888 +//line sql.y:2891 { yyVAL.str = " " + string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) + " " + yyDollar[3].colIdent.String() } - case 548: + case 549: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2893 +//line sql.y:2896 { setAllowComments(yylex, true) } - case 549: + case 550: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2897 +//line sql.y:2900 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 550: + case 551: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2903 +//line sql.y:2906 { yyVAL.bytes2 = nil } - case 551: + case 552: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2907 +//line sql.y:2910 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 552: + case 553: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2913 +//line sql.y:2916 { yyVAL.boolean = true } - case 553: + case 554: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2917 +//line sql.y:2920 { yyVAL.boolean = false } - case 554: + case 555: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2921 +//line sql.y:2924 { yyVAL.boolean = true } - case 555: + case 556: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2926 +//line sql.y:2929 { yyVAL.str = "" } - case 556: + case 557: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2930 +//line sql.y:2933 { yyVAL.str = SQLNoCacheStr } - case 557: + case 558: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2934 +//line sql.y:2937 { yyVAL.str = SQLCacheStr } - case 558: + case 559: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2939 +//line sql.y:2942 { yyVAL.boolean = false } - case 559: + case 560: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2943 +//line sql.y:2946 { yyVAL.boolean = true } - case 560: + case 561: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2947 +//line sql.y:2950 { yyVAL.boolean = true } - case 561: + case 562: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2952 +//line sql.y:2955 { yyVAL.selectExprs = nil } - case 562: + case 563: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2956 +//line sql.y:2959 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 563: + case 564: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2961 +//line sql.y:2964 { yyVAL.strs = nil } - case 564: + case 565: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2965 +//line sql.y:2968 { yyVAL.strs = []string{yyDollar[1].str} } - case 565: + case 566: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2969 +//line sql.y:2972 { // TODO: This is a hack since I couldn't get it to work in a nicer way. I got 'conflicts: 8 shift/reduce' yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str} } - case 566: + case 567: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2973 +//line sql.y:2976 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } - case 567: + case 568: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2977 +//line sql.y:2980 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } - case 568: + case 569: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2983 +//line sql.y:2986 { yyVAL.str = SQLNoCacheStr } - case 569: + case 570: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2987 +//line sql.y:2990 { yyVAL.str = SQLCacheStr } - case 570: + case 571: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2991 +//line sql.y:2994 { yyVAL.str = DistinctStr } - case 571: + case 572: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2995 +//line sql.y:2998 { yyVAL.str = DistinctStr } - case 572: + case 573: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2999 +//line sql.y:3002 { yyVAL.str = StraightJoinHint } - case 573: + case 574: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3003 +//line sql.y:3006 { yyVAL.str = SQLCalcFoundRowsStr } - case 574: + case 575: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3009 +//line sql.y:3012 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 575: + case 576: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3013 +//line sql.y:3016 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 576: + case 577: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3019 +//line sql.y:3022 { yyVAL.selectExpr = &StarExpr{} } - case 577: + case 578: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3023 +//line sql.y:3026 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 578: + case 579: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3027 +//line sql.y:3030 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 579: + case 580: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3031 +//line sql.y:3034 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 580: + case 581: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3036 +//line sql.y:3039 { yyVAL.colIdent = ColIdent{} } - case 581: + case 582: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3040 +//line sql.y:3043 { yyVAL.colIdent = yyDollar[1].colIdent } - case 582: + case 583: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3044 +//line sql.y:3047 { yyVAL.colIdent = yyDollar[2].colIdent } - case 584: + case 585: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3051 +//line sql.y:3054 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 585: + case 586: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3056 +//line sql.y:3059 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 586: + case 587: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3060 +//line sql.y:3063 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 587: + case 588: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3066 +//line sql.y:3069 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 588: + case 589: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3070 +//line sql.y:3073 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 591: + case 592: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3080 +//line sql.y:3083 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 592: + case 593: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3084 +//line sql.y:3087 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].derivedTable, As: yyDollar[3].tableIdent} } - case 593: + case 594: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3088 +//line sql.y:3091 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 594: + case 595: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3094 +//line sql.y:3097 { yyVAL.derivedTable = &DerivedTable{yyDollar[2].selStmt} } - case 595: + case 596: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3100 +//line sql.y:3103 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 596: + case 597: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3104 +//line sql.y:3107 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 597: + case 598: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3109 +//line sql.y:3112 { yyVAL.columns = nil } - case 598: + case 599: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3113 +//line sql.y:3116 { yyVAL.columns = yyDollar[2].columns } - case 599: + case 600: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3119 +//line sql.y:3122 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 600: + case 601: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3123 +//line sql.y:3126 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 601: + case 602: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3129 +//line sql.y:3132 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 602: + case 603: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3133 +//line sql.y:3136 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 603: + case 604: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3146 +//line sql.y:3149 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 604: + case 605: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3150 +//line sql.y:3153 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 605: + case 606: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3154 +//line sql.y:3157 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 606: + case 607: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3158 +//line sql.y:3161 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr} } - case 607: + case 608: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3164 +//line sql.y:3167 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 608: + case 609: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3166 +//line sql.y:3169 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 609: + case 610: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3170 +//line sql.y:3173 { yyVAL.joinCondition = JoinCondition{} } - case 610: + case 611: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3172 +//line sql.y:3175 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 611: + case 612: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3176 +//line sql.y:3179 { yyVAL.joinCondition = JoinCondition{} } - case 612: + case 613: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3178 +//line sql.y:3181 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 613: + case 614: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3181 +//line sql.y:3184 { yyVAL.empty = struct{}{} } - case 614: + case 615: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3183 +//line sql.y:3186 { yyVAL.empty = struct{}{} } - case 615: + case 616: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3186 +//line sql.y:3189 { yyVAL.tableIdent = NewTableIdent("") } - case 616: + case 617: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3190 +//line sql.y:3193 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 617: + case 618: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3194 +//line sql.y:3197 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 619: + case 620: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3201 +//line sql.y:3204 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 620: + case 621: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3207 +//line sql.y:3210 { yyVAL.joinType = NormalJoinType } - case 621: + case 622: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3211 +//line sql.y:3214 { yyVAL.joinType = NormalJoinType } - case 622: + case 623: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3215 +//line sql.y:3218 { yyVAL.joinType = NormalJoinType } - case 623: + case 624: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3221 +//line sql.y:3224 { yyVAL.joinType = StraightJoinType } - case 624: + case 625: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3227 +//line sql.y:3230 { yyVAL.joinType = LeftJoinType } - case 625: + case 626: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3231 +//line sql.y:3234 { yyVAL.joinType = LeftJoinType } - case 626: + case 627: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3235 +//line sql.y:3238 { yyVAL.joinType = RightJoinType } - case 627: + case 628: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3239 +//line sql.y:3242 { yyVAL.joinType = RightJoinType } - case 628: + case 629: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3245 +//line sql.y:3248 { yyVAL.joinType = NaturalJoinType } - case 629: + case 630: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3249 +//line sql.y:3252 { if yyDollar[2].joinType == LeftJoinType { yyVAL.joinType = NaturalLeftJoinType @@ -8998,489 +9034,489 @@ yydefault: yyVAL.joinType = NaturalRightJoinType } } - case 630: + case 631: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3259 +//line sql.y:3262 { yyVAL.tableName = yyDollar[2].tableName } - case 631: + case 632: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3263 +//line sql.y:3266 { yyVAL.tableName = yyDollar[1].tableName } - case 632: + case 633: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3269 +//line sql.y:3272 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 633: + case 634: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3273 +//line sql.y:3276 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 634: + case 635: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3279 +//line sql.y:3282 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 635: + case 636: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3284 +//line sql.y:3287 { yyVAL.indexHints = nil } - case 636: + case 637: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3288 +//line sql.y:3291 { yyVAL.indexHints = &IndexHints{Type: UseOp, Indexes: yyDollar[4].columns} } - case 637: + case 638: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3292 +//line sql.y:3295 { yyVAL.indexHints = &IndexHints{Type: UseOp} } - case 638: + case 639: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3296 +//line sql.y:3299 { yyVAL.indexHints = &IndexHints{Type: IgnoreOp, Indexes: yyDollar[4].columns} } - case 639: + case 640: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3300 +//line sql.y:3303 { yyVAL.indexHints = &IndexHints{Type: ForceOp, Indexes: yyDollar[4].columns} } - case 640: + case 641: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3305 +//line sql.y:3308 { yyVAL.expr = nil } - case 641: + case 642: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3309 +//line sql.y:3312 { yyVAL.expr = yyDollar[2].expr } - case 642: + case 643: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3315 +//line sql.y:3318 { yyVAL.expr = yyDollar[1].expr } - case 643: + case 644: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3319 +//line sql.y:3322 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 644: + case 645: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3323 +//line sql.y:3326 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 645: + case 646: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3327 +//line sql.y:3330 { yyVAL.expr = &XorExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 646: + case 647: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3331 +//line sql.y:3334 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 647: + case 648: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3335 +//line sql.y:3338 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].isExprOperator, Expr: yyDollar[1].expr} } - case 648: + case 649: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3339 +//line sql.y:3342 { yyVAL.expr = yyDollar[1].expr } - case 649: + case 650: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3343 +//line sql.y:3346 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 650: + case 651: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3349 +//line sql.y:3352 { yyVAL.str = "" } - case 651: + case 652: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3353 +//line sql.y:3356 { yyVAL.str = string(yyDollar[2].colIdent.String()) } - case 652: + case 653: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3359 +//line sql.y:3362 { yyVAL.boolVal = BoolVal(true) } - case 653: + case 654: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3363 +//line sql.y:3366 { yyVAL.boolVal = BoolVal(false) } - case 654: + case 655: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3369 +//line sql.y:3372 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].comparisonExprOperator, Right: yyDollar[3].expr} } - case 655: + case 656: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3373 +//line sql.y:3376 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InOp, Right: yyDollar[3].colTuple} } - case 656: + case 657: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3377 +//line sql.y:3380 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInOp, Right: yyDollar[4].colTuple} } - case 657: + case 658: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3381 +//line sql.y:3384 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeOp, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 658: + case 659: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3385 +//line sql.y:3388 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeOp, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 659: + case 660: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3389 +//line sql.y:3392 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpOp, Right: yyDollar[3].expr} } - case 660: + case 661: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3393 +//line sql.y:3396 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpOp, Right: yyDollar[4].expr} } - case 661: + case 662: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3397 +//line sql.y:3400 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenOp, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 662: + case 663: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3401 +//line sql.y:3404 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenOp, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 663: + case 664: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3405 +//line sql.y:3408 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 664: + case 665: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3411 +//line sql.y:3414 { yyVAL.isExprOperator = IsNullOp } - case 665: + case 666: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3415 +//line sql.y:3418 { yyVAL.isExprOperator = IsNotNullOp } - case 666: + case 667: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3419 +//line sql.y:3422 { yyVAL.isExprOperator = IsTrueOp } - case 667: + case 668: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3423 +//line sql.y:3426 { yyVAL.isExprOperator = IsNotTrueOp } - case 668: + case 669: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3427 +//line sql.y:3430 { yyVAL.isExprOperator = IsFalseOp } - case 669: + case 670: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3431 +//line sql.y:3434 { yyVAL.isExprOperator = IsNotFalseOp } - case 670: + case 671: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3437 +//line sql.y:3440 { yyVAL.comparisonExprOperator = EqualOp } - case 671: + case 672: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3441 +//line sql.y:3444 { yyVAL.comparisonExprOperator = LessThanOp } - case 672: + case 673: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3445 +//line sql.y:3448 { yyVAL.comparisonExprOperator = GreaterThanOp } - case 673: + case 674: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3449 +//line sql.y:3452 { yyVAL.comparisonExprOperator = LessEqualOp } - case 674: + case 675: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3453 +//line sql.y:3456 { yyVAL.comparisonExprOperator = GreaterEqualOp } - case 675: + case 676: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3457 +//line sql.y:3460 { yyVAL.comparisonExprOperator = NotEqualOp } - case 676: + case 677: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3461 +//line sql.y:3464 { yyVAL.comparisonExprOperator = NullSafeEqualOp } - case 677: + case 678: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3466 +//line sql.y:3469 { yyVAL.expr = nil } - case 678: + case 679: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3470 +//line sql.y:3473 { yyVAL.expr = yyDollar[2].expr } - case 679: + case 680: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3476 +//line sql.y:3479 { yyVAL.colTuple = yyDollar[1].valTuple } - case 680: + case 681: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3480 +//line sql.y:3483 { yyVAL.colTuple = yyDollar[1].subquery } - case 681: + case 682: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3484 +//line sql.y:3487 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 682: + case 683: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3490 +//line sql.y:3493 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 683: + case 684: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3496 +//line sql.y:3499 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 684: + case 685: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3500 +//line sql.y:3503 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 685: + case 686: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3506 +//line sql.y:3509 { yyVAL.expr = yyDollar[1].expr } - case 686: + case 687: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3510 +//line sql.y:3513 { yyVAL.expr = yyDollar[1].boolVal } - case 687: + case 688: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3514 +//line sql.y:3517 { yyVAL.expr = yyDollar[1].colName } - case 688: + case 689: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3518 +//line sql.y:3521 { yyVAL.expr = yyDollar[1].expr } - case 689: + case 690: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3522 +//line sql.y:3525 { yyVAL.expr = yyDollar[1].subquery } - case 690: + case 691: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3526 +//line sql.y:3529 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndOp, Right: yyDollar[3].expr} } - case 691: + case 692: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3530 +//line sql.y:3533 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrOp, Right: yyDollar[3].expr} } - case 692: + case 693: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3534 +//line sql.y:3537 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorOp, Right: yyDollar[3].expr} } - case 693: + case 694: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3538 +//line sql.y:3541 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusOp, Right: yyDollar[3].expr} } - case 694: + case 695: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3542 +//line sql.y:3545 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusOp, Right: yyDollar[3].expr} } - case 695: + case 696: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3546 +//line sql.y:3549 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultOp, Right: yyDollar[3].expr} } - case 696: + case 697: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3550 +//line sql.y:3553 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivOp, Right: yyDollar[3].expr} } - case 697: + case 698: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3554 +//line sql.y:3557 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivOp, Right: yyDollar[3].expr} } - case 698: + case 699: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3558 +//line sql.y:3561 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } - case 699: + case 700: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3562 +//line sql.y:3565 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } - case 700: + case 701: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3566 +//line sql.y:3569 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftOp, Right: yyDollar[3].expr} } - case 701: + case 702: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3570 +//line sql.y:3573 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightOp, Right: yyDollar[3].expr} } - case 702: + case 703: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3574 +//line sql.y:3577 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } - case 703: + case 704: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3578 +//line sql.y:3581 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } - case 704: + case 705: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3582 +//line sql.y:3585 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } - case 705: + case 706: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3586 +//line sql.y:3589 { yyVAL.expr = &UnaryExpr{Operator: BinaryOp, Expr: yyDollar[2].expr} } - case 706: + case 707: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3590 +//line sql.y:3593 { yyVAL.expr = &UnaryExpr{Operator: UBinaryOp, Expr: yyDollar[2].expr} } - case 707: + case 708: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3594 +//line sql.y:3597 { yyVAL.expr = &UnaryExpr{Operator: Utf8Op, Expr: yyDollar[2].expr} } - case 708: + case 709: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3598 +//line sql.y:3601 { yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Op, Expr: yyDollar[2].expr} } - case 709: + case 710: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3602 +//line sql.y:3605 { yyVAL.expr = &UnaryExpr{Operator: Latin1Op, Expr: yyDollar[2].expr} } - case 710: + case 711: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3606 +//line sql.y:3609 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { yyVAL.expr = num @@ -9488,9 +9524,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusOp, Expr: yyDollar[2].expr} } } - case 711: + case 712: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3614 +//line sql.y:3617 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { // Handle double negative @@ -9504,21 +9540,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].expr} } } - case 712: + case 713: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3628 +//line sql.y:3631 { yyVAL.expr = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].expr} } - case 713: + case 714: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3632 +//line sql.y:3635 { yyVAL.expr = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].expr} } - case 714: + case 715: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3636 +//line sql.y:3639 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -9526,503 +9562,503 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 719: + case 720: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3654 +//line sql.y:3657 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 720: + case 721: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3658 +//line sql.y:3661 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 721: + case 722: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3662 +//line sql.y:3665 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 722: + case 723: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3666 +//line sql.y:3669 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 723: + case 724: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3676 +//line sql.y:3679 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } - case 724: + case 725: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3680 +//line sql.y:3683 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } - case 725: + case 726: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3684 +//line sql.y:3687 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 726: + case 727: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3688 +//line sql.y:3691 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 727: + case 728: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3692 +//line sql.y:3695 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 728: + case 729: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3696 +//line sql.y:3699 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 729: + case 730: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3700 +//line sql.y:3703 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 730: + case 731: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3704 +//line sql.y:3707 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 731: + case 732: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3708 +//line sql.y:3711 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 732: + case 733: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:3712 +//line sql.y:3715 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].matchExprOption} } - case 733: + case 734: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3716 +//line sql.y:3719 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].boolean, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit} } - case 734: + case 735: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3720 +//line sql.y:3723 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 735: + case 736: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3724 +//line sql.y:3727 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } - case 736: + case 737: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3734 +//line sql.y:3737 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } - case 737: + case 738: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3738 +//line sql.y:3741 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } - case 738: + case 739: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3742 +//line sql.y:3745 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } - case 739: + case 740: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3747 +//line sql.y:3750 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } - case 740: + case 741: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3752 +//line sql.y:3755 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } - case 741: + case 742: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3757 +//line sql.y:3760 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } - case 742: + case 743: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3763 +//line sql.y:3766 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } - case 743: + case 744: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3768 +//line sql.y:3771 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 744: + case 745: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3773 +//line sql.y:3776 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} } - case 745: + case 746: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3777 +//line sql.y:3780 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} } - case 746: + case 747: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3781 +//line sql.y:3784 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} } - case 747: + case 748: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3786 +//line sql.y:3789 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} } - case 748: + case 749: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3791 +//line sql.y:3794 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} } - case 749: + case 750: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3796 +//line sql.y:3799 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} } - case 750: + case 751: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3800 +//line sql.y:3803 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 751: + case 752: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3804 +//line sql.y:3807 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 754: + case 755: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3814 +//line sql.y:3817 { yyVAL.expr = yyDollar[2].expr } - case 755: + case 756: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3824 +//line sql.y:3827 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 756: + case 757: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3828 +//line sql.y:3831 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 757: + case 758: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3832 +//line sql.y:3835 { yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} } - case 758: + case 759: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3836 +//line sql.y:3839 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 759: + case 760: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3840 +//line sql.y:3843 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 760: + case 761: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3844 +//line sql.y:3847 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } - case 761: + case 762: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3848 +//line sql.y:3851 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } - case 762: + case 763: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3854 +//line sql.y:3857 { yyVAL.matchExprOption = NoOption } - case 763: + case 764: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3858 +//line sql.y:3861 { yyVAL.matchExprOption = BooleanModeOpt } - case 764: + case 765: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3862 +//line sql.y:3865 { yyVAL.matchExprOption = NaturalLanguageModeOpt } - case 765: + case 766: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3866 +//line sql.y:3869 { yyVAL.matchExprOption = NaturalLanguageModeWithQueryExpansionOpt } - case 766: + case 767: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3870 +//line sql.y:3873 { yyVAL.matchExprOption = QueryExpansionOpt } - case 767: + case 768: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3876 +//line sql.y:3879 { yyVAL.str = string(yyDollar[1].colIdent.String()) } - case 768: + case 769: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3880 +//line sql.y:3883 { yyVAL.str = string(yyDollar[1].bytes) } - case 769: + case 770: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3884 +//line sql.y:3887 { yyVAL.str = string(yyDollar[1].bytes) } - case 770: + case 771: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3890 +//line sql.y:3893 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 771: + case 772: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3894 +//line sql.y:3897 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Operator: CharacterSetOp} } - case 772: + case 773: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3898 +//line sql.y:3901 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: string(yyDollar[3].colIdent.String())} } - case 773: + case 774: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3902 +//line sql.y:3905 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 774: + case 775: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3906 +//line sql.y:3909 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 775: + case 776: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3910 +//line sql.y:3913 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 776: + case 777: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3916 +//line sql.y:3919 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 777: + case 778: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3920 +//line sql.y:3923 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 778: + case 779: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3924 +//line sql.y:3927 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 779: + case 780: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3928 +//line sql.y:3931 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 780: + case 781: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3932 +//line sql.y:3935 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 781: + case 782: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3936 +//line sql.y:3939 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 782: + case 783: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3940 +//line sql.y:3943 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 783: + case 784: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3945 +//line sql.y:3948 { yyVAL.expr = nil } - case 784: + case 785: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3949 +//line sql.y:3952 { yyVAL.expr = yyDollar[1].expr } - case 785: + case 786: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3954 +//line sql.y:3957 { yyVAL.str = string("") } - case 786: + case 787: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3958 +//line sql.y:3961 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 787: + case 788: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3964 +//line sql.y:3967 { yyVAL.whens = []*When{yyDollar[1].when} } - case 788: + case 789: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3968 +//line sql.y:3971 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 789: + case 790: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3974 +//line sql.y:3977 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 790: + case 791: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3979 +//line sql.y:3982 { yyVAL.expr = nil } - case 791: + case 792: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3983 +//line sql.y:3986 { yyVAL.expr = yyDollar[2].expr } - case 792: + case 793: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3989 +//line sql.y:3992 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 793: + case 794: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3993 +//line sql.y:3996 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 794: + case 795: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3997 +//line sql.y:4000 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 795: + case 796: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4003 +//line sql.y:4006 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } - case 796: + case 797: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4007 +//line sql.y:4010 { yyVAL.expr = NewHexLiteral(yyDollar[1].bytes) } - case 797: + case 798: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4011 +//line sql.y:4014 { yyVAL.expr = NewBitLiteral(yyDollar[1].bytes) } - case 798: + case 799: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4015 +//line sql.y:4018 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } - case 799: + case 800: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4019 +//line sql.y:4022 { yyVAL.expr = NewFloatLiteral(yyDollar[1].bytes) } - case 800: + case 801: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4023 +//line sql.y:4026 { yyVAL.expr = NewHexNumLiteral(yyDollar[1].bytes) } - case 801: + case 802: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4027 +//line sql.y:4030 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } - case 802: + case 803: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4031 +//line sql.y:4034 { yyVAL.expr = &NullVal{} } - case 803: + case 804: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4037 +//line sql.y:4040 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -10031,597 +10067,597 @@ yydefault: } yyVAL.expr = NewIntLiteral([]byte("1")) } - case 804: + case 805: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4046 +//line sql.y:4049 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } - case 805: + case 806: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4050 +//line sql.y:4053 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } - case 806: + case 807: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4055 +//line sql.y:4058 { yyVAL.exprs = nil } - case 807: + case 808: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4059 +//line sql.y:4062 { yyVAL.exprs = yyDollar[3].exprs } - case 808: + case 809: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4064 +//line sql.y:4067 { yyVAL.expr = nil } - case 809: + case 810: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4068 +//line sql.y:4071 { yyVAL.expr = yyDollar[2].expr } - case 810: + case 811: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4073 +//line sql.y:4076 { yyVAL.orderBy = nil } - case 811: + case 812: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4077 +//line sql.y:4080 { yyVAL.orderBy = yyDollar[3].orderBy } - case 812: + case 813: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4083 +//line sql.y:4086 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 813: + case 814: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4087 +//line sql.y:4090 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 814: + case 815: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4093 +//line sql.y:4096 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].orderDirection} } - case 815: + case 816: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4098 +//line sql.y:4101 { yyVAL.orderDirection = AscOrder } - case 816: + case 817: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4102 +//line sql.y:4105 { yyVAL.orderDirection = AscOrder } - case 817: + case 818: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4106 +//line sql.y:4109 { yyVAL.orderDirection = DescOrder } - case 818: + case 819: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4111 +//line sql.y:4114 { yyVAL.limit = nil } - case 819: + case 820: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4115 +//line sql.y:4118 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 820: + case 821: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4119 +//line sql.y:4122 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 821: + case 822: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4123 +//line sql.y:4126 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 822: + case 823: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4128 +//line sql.y:4131 { yyVAL.alterOptions = nil } - case 823: + case 824: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4132 +//line sql.y:4135 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption, yyDollar[2].alterOption} } - case 824: + case 825: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4136 +//line sql.y:4139 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption, yyDollar[2].alterOption} } - case 825: + case 826: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4140 +//line sql.y:4143 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } - case 826: + case 827: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4144 +//line sql.y:4147 { yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } - case 827: + case 828: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4151 +//line sql.y:4154 { yyVAL.alterOption = &LockOption{Type: DefaultType} } - case 828: + case 829: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4155 +//line sql.y:4158 { yyVAL.alterOption = &LockOption{Type: NoneType} } - case 829: + case 830: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4159 +//line sql.y:4162 { yyVAL.alterOption = &LockOption{Type: SharedType} } - case 830: + case 831: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4163 +//line sql.y:4166 { yyVAL.alterOption = &LockOption{Type: ExclusiveType} } - case 831: + case 832: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4169 +//line sql.y:4172 { yyVAL.alterOption = AlgorithmValue(yyDollar[3].bytes) } - case 832: + case 833: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4173 +//line sql.y:4176 { yyVAL.alterOption = AlgorithmValue(yyDollar[3].bytes) } - case 833: + case 834: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4177 +//line sql.y:4180 { yyVAL.alterOption = AlgorithmValue(yyDollar[3].bytes) } - case 834: + case 835: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4182 +//line sql.y:4185 { yyVAL.str = "" } - case 835: + case 836: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4186 +//line sql.y:4189 { yyVAL.str = string(yyDollar[3].bytes) } - case 836: + case 837: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4190 +//line sql.y:4193 { yyVAL.str = string(yyDollar[3].bytes) } - case 837: + case 838: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4194 +//line sql.y:4197 { yyVAL.str = string(yyDollar[3].bytes) } - case 838: + case 839: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4199 +//line sql.y:4202 { yyVAL.str = "" } - case 839: + case 840: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4203 +//line sql.y:4206 { yyVAL.str = yyDollar[3].str } - case 840: + case 841: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4209 +//line sql.y:4212 { yyVAL.str = string(yyDollar[1].bytes) } - case 841: + case 842: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4213 +//line sql.y:4216 { yyVAL.str = string(yyDollar[1].bytes) } - case 842: + case 843: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4218 +//line sql.y:4221 { yyVAL.str = "" } - case 843: + case 844: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4222 +//line sql.y:4225 { yyVAL.str = yyDollar[2].str } - case 844: + case 845: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4227 +//line sql.y:4230 { yyVAL.str = "cascaded" } - case 845: + case 846: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4231 +//line sql.y:4234 { yyVAL.str = string(yyDollar[1].bytes) } - case 846: + case 847: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4235 +//line sql.y:4238 { yyVAL.str = string(yyDollar[1].bytes) } - case 847: + case 848: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4240 +//line sql.y:4243 { yyVAL.str = "" } - case 848: + case 849: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4244 +//line sql.y:4247 { yyVAL.str = yyDollar[3].str } - case 849: + case 850: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4250 +//line sql.y:4253 { yyVAL.str = string(yyDollar[1].bytes) } - case 850: + case 851: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4254 +//line sql.y:4257 { yyVAL.str = string(yyDollar[1].bytes) } - case 851: + case 852: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4258 +//line sql.y:4261 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'@" + string(yyDollar[2].bytes) } - case 852: + case 853: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4262 +//line sql.y:4265 { yyVAL.str = string(yyDollar[1].bytes) } - case 853: + case 854: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4267 +//line sql.y:4270 { yyVAL.lock = NoLock } - case 854: + case 855: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4271 +//line sql.y:4274 { yyVAL.lock = ForUpdateLock } - case 855: + case 856: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4275 +//line sql.y:4278 { yyVAL.lock = ShareModeLock } - case 856: + case 857: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4280 +//line sql.y:4283 { yyVAL.selectInto = nil } - case 857: + case 858: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:4284 +//line sql.y:4287 { yyVAL.selectInto = &SelectInto{Type: IntoOutfileS3, FileName: string(yyDollar[4].bytes), Charset: yyDollar[5].str, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str} } - case 858: + case 859: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4288 +//line sql.y:4291 { yyVAL.selectInto = &SelectInto{Type: IntoDumpfile, FileName: string(yyDollar[3].bytes), Charset: "", FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} } - case 859: + case 860: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4292 +//line sql.y:4295 { yyVAL.selectInto = &SelectInto{Type: IntoOutfile, FileName: string(yyDollar[3].bytes), Charset: yyDollar[4].str, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} } - case 860: + case 861: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4297 +//line sql.y:4300 { yyVAL.str = "" } - case 861: + case 862: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4301 +//line sql.y:4304 { yyVAL.str = " format csv" + yyDollar[3].str } - case 862: + case 863: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4305 +//line sql.y:4308 { yyVAL.str = " format text" + yyDollar[3].str } - case 863: + case 864: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4310 +//line sql.y:4313 { yyVAL.str = "" } - case 864: + case 865: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4314 +//line sql.y:4317 { yyVAL.str = " header" } - case 865: + case 866: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4319 +//line sql.y:4322 { yyVAL.str = "" } - case 866: + case 867: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4323 +//line sql.y:4326 { yyVAL.str = " manifest on" } - case 867: + case 868: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4327 +//line sql.y:4330 { yyVAL.str = " manifest off" } - case 868: + case 869: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4332 +//line sql.y:4335 { yyVAL.str = "" } - case 869: + case 870: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4336 +//line sql.y:4339 { yyVAL.str = " overwrite on" } - case 870: + case 871: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4340 +//line sql.y:4343 { yyVAL.str = " overwrite off" } - case 871: + case 872: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4346 +//line sql.y:4349 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 872: + case 873: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4351 +//line sql.y:4354 { yyVAL.str = "" } - case 873: + case 874: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4355 +//line sql.y:4358 { yyVAL.str = " lines" + yyDollar[2].str + yyDollar[3].str } - case 874: + case 875: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4360 +//line sql.y:4363 { yyVAL.str = "" } - case 875: + case 876: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4364 +//line sql.y:4367 { yyVAL.str = " starting by '" + string(yyDollar[3].bytes) + "'" } - case 876: + case 877: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4369 +//line sql.y:4372 { yyVAL.str = "" } - case 877: + case 878: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4373 +//line sql.y:4376 { yyVAL.str = " terminated by '" + string(yyDollar[3].bytes) + "'" } - case 878: + case 879: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4378 +//line sql.y:4381 { yyVAL.str = "" } - case 879: + case 880: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4382 +//line sql.y:4385 { yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str + yyDollar[3].str + yyDollar[4].str } - case 880: + case 881: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4387 +//line sql.y:4390 { yyVAL.str = "" } - case 881: + case 882: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4391 +//line sql.y:4394 { yyVAL.str = " escaped by '" + string(yyDollar[3].bytes) + "'" } - case 882: + case 883: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4396 +//line sql.y:4399 { yyVAL.str = "" } - case 883: + case 884: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4400 +//line sql.y:4403 { yyVAL.str = yyDollar[1].str + " enclosed by '" + string(yyDollar[4].bytes) + "'" } - case 884: + case 885: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4405 +//line sql.y:4408 { yyVAL.str = "" } - case 885: + case 886: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4409 +//line sql.y:4412 { yyVAL.str = " optionally" } - case 886: + case 887: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4422 +//line sql.y:4425 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 887: + case 888: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4426 +//line sql.y:4429 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 888: + case 889: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4430 +//line sql.y:4433 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 889: + case 890: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4434 +//line sql.y:4437 { yyVAL.ins = &Insert{Rows: yyDollar[4].values} } - case 890: + case 891: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4438 +//line sql.y:4441 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 891: + case 892: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4444 +//line sql.y:4447 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 892: + case 893: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4448 +//line sql.y:4451 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 893: + case 894: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4452 +//line sql.y:4455 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 894: + case 895: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4456 +//line sql.y:4459 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 895: + case 896: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4461 +//line sql.y:4464 { yyVAL.updateExprs = nil } - case 896: + case 897: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4465 +//line sql.y:4468 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 897: + case 898: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4471 +//line sql.y:4474 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 898: + case 899: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4475 +//line sql.y:4478 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 899: + case 900: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4481 +//line sql.y:4484 { yyVAL.valTuple = yyDollar[1].valTuple } - case 900: + case 901: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4485 +//line sql.y:4488 { yyVAL.valTuple = ValTuple{} } - case 901: + case 902: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4491 +//line sql.y:4494 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 902: + case 903: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4497 +//line sql.y:4500 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = yyDollar[1].valTuple[0] @@ -10629,265 +10665,265 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 903: + case 904: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4507 +//line sql.y:4510 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 904: + case 905: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4511 +//line sql.y:4514 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 905: + case 906: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4517 +//line sql.y:4520 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 906: + case 907: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4523 +//line sql.y:4526 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 907: + case 908: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4527 +//line sql.y:4530 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 908: + case 909: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4533 +//line sql.y:4536 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("on"))} } - case 909: + case 910: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4537 +//line sql.y:4540 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("off"))} } - case 910: + case 911: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4541 +//line sql.y:4544 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: yyDollar[3].expr} } - case 911: + case 912: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4545 +//line sql.y:4548 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Scope: ImplicitScope, Expr: yyDollar[2].expr} } - case 912: + case 913: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4549 +//line sql.y:4552 { yyDollar[2].setExpr.Scope = yyDollar[1].scope yyVAL.setExpr = yyDollar[2].setExpr } - case 914: + case 915: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4557 +//line sql.y:4560 { yyVAL.bytes = []byte("charset") } - case 917: + case 918: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4567 +//line sql.y:4570 { yyVAL.expr = NewStrLiteral([]byte(yyDollar[1].colIdent.String())) } - case 918: + case 919: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4571 +//line sql.y:4574 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } - case 919: + case 920: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4575 +//line sql.y:4578 { yyVAL.expr = &Default{} } - case 922: + case 923: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4584 +//line sql.y:4587 { yyVAL.boolean = false } - case 923: + case 924: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4586 +//line sql.y:4589 { yyVAL.boolean = true } - case 924: + case 925: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4589 +//line sql.y:4592 { yyVAL.boolean = false } - case 925: + case 926: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4591 +//line sql.y:4594 { yyVAL.boolean = true } - case 926: + case 927: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4594 +//line sql.y:4597 { yyVAL.boolean = false } - case 927: + case 928: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4596 +//line sql.y:4599 { yyVAL.boolean = true } - case 928: + case 929: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4599 +//line sql.y:4602 { yyVAL.ignore = false } - case 929: + case 930: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4601 +//line sql.y:4604 { yyVAL.ignore = true } - case 930: + case 931: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4604 +//line sql.y:4607 { yyVAL.empty = struct{}{} } - case 931: + case 932: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4606 +//line sql.y:4609 { yyVAL.empty = struct{}{} } - case 932: + case 933: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4608 +//line sql.y:4611 { yyVAL.empty = struct{}{} } - case 933: + case 934: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4612 +//line sql.y:4615 { yyVAL.statement = &CallProc{Name: yyDollar[2].tableName, Params: yyDollar[4].exprs} } - case 934: + case 935: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4617 +//line sql.y:4620 { yyVAL.exprs = nil } - case 935: + case 936: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4621 +//line sql.y:4624 { yyVAL.exprs = yyDollar[1].exprs } - case 936: + case 937: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4626 +//line sql.y:4629 { yyVAL.indexOptions = nil } - case 937: + case 938: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4628 +//line sql.y:4631 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } - case 938: + case 939: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4632 +//line sql.y:4635 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[2].colIdent.String())} } - case 939: + case 940: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4638 +//line sql.y:4641 { yyVAL.colIdent = yyDollar[1].colIdent } - case 940: + case 941: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4642 +//line sql.y:4645 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 942: + case 943: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4649 +//line sql.y:4652 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 943: + case 944: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4655 +//line sql.y:4658 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) } - case 944: + case 945: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4659 +//line sql.y:4662 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 946: + case 947: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4666 +//line sql.y:4669 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 1343: + case 1346: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5087 +//line sql.y:5092 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 1344: + case 1347: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5096 +//line sql.y:5101 { decNesting(yylex) } - case 1345: + case 1348: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5101 +//line sql.y:5106 { skipToEnd(yylex) } - case 1346: + case 1349: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5106 +//line sql.y:5111 { skipToEnd(yylex) } - case 1347: + case 1350: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5110 +//line sql.y:5115 { skipToEnd(yylex) } - case 1348: + case 1351: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5114 +//line sql.y:5119 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 3e9b955175d..c06168310fb 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -221,7 +221,7 @@ func skipToEnd(yylex interface{}) { // SHOW tokens %token COLLATION DATABASES SCHEMAS TABLES VITESS_METADATA VSCHEMA FULL PROCESSLIST COLUMNS FIELDS ENGINES PLUGINS EXTENDED -%token KEYSPACES VITESS_KEYSPACES VITESS_SHARDS VITESS_TABLETS CODE PRIVILEGES FUNCTION OPEN TRIGGERS +%token KEYSPACES VITESS_KEYSPACES VITESS_SHARDS VITESS_TABLETS CODE PRIVILEGES FUNCTION OPEN TRIGGERS EVENT USER // SET tokens %token NAMES CHARSET GLOBAL SESSION ISOLATION LEVEL READ WRITE ONLY REPEATABLE COMMITTED UNCOMMITTED SERIALIZABLE @@ -2388,40 +2388,43 @@ show_statement: { $$ = &Show{&ShowBasic{Command: Trigger, DbName:$3, Filter: $4}} } -| SHOW BINARY id_or_var ddl_skip_to_end /* SHOW BINARY ... */ +| SHOW CREATE DATABASE table_name { - $$ = &Show{&ShowLegacy{Type: string($2) + " " + string($3.String()), Scope: ImplicitScope}} + $$ = &Show{&ShowCreate{Command: CreateDb, Op: $4}} } -| SHOW BINARY LOGS ddl_skip_to_end /* SHOW BINARY LOGS */ +| SHOW CREATE EVENT table_name { - $$ = &Show{&ShowLegacy{Type: string($2) + " " + string($3), Scope: ImplicitScope}} + $$ = &Show{&ShowCreate{Command: CreateE, Op: $4}} } -| SHOW CREATE DATABASE ddl_skip_to_end +| SHOW CREATE FUNCTION table_name { - $$ = &Show{&ShowLegacy{Type: string($2) + " " + string($3), Scope: ImplicitScope}} + $$ = &Show{&ShowCreate{Command: CreateF, Op: $4}} } -| SHOW CREATE FUNCTION table_name +| SHOW CREATE PROCEDURE table_name { - $$ = &Show{&ShowLegacy{Type: string($2) + " " + string($3), Table: $4, Scope: ImplicitScope}} + $$ = &Show{&ShowCreate{Command: CreateProc, Op: $4}} } -/* Rule to handle SHOW CREATE EVENT, SHOW CREATE FUNCTION, etc. */ -| SHOW CREATE id_or_var ddl_skip_to_end +| SHOW CREATE TABLE table_name { - $$ = &Show{&ShowLegacy{Type: string($2) + " " + string($3.String()), Scope: ImplicitScope}} + $$ = &Show{&ShowCreate{Command: CreateTbl, Op: $4}} } -| SHOW CREATE PROCEDURE ddl_skip_to_end +| SHOW CREATE TRIGGER table_name { - $$ = &Show{&ShowLegacy{Type: string($2) + " " + string($3), Scope: ImplicitScope}} + $$ = &Show{&ShowCreate{Command: CreateTr, Op: $4}} } -| SHOW CREATE TABLE table_name +| SHOW CREATE VIEW table_name { - $$ = &Show{&ShowLegacy{Type: string($2) + " " + string($3), Table: $4, Scope: ImplicitScope}} + $$ = &Show{&ShowCreate{Command: CreateV, Op: $4}} } -| SHOW CREATE TRIGGER ddl_skip_to_end +| SHOW CREATE USER ddl_skip_to_end { $$ = &Show{&ShowLegacy{Type: string($2) + " " + string($3), Scope: ImplicitScope}} + } +| SHOW BINARY id_or_var ddl_skip_to_end /* SHOW BINARY ... */ + { + $$ = &Show{&ShowLegacy{Type: string($2) + " " + string($3.String()), Scope: ImplicitScope}} } -| SHOW CREATE VIEW ddl_skip_to_end +| SHOW BINARY LOGS ddl_skip_to_end /* SHOW BINARY LOGS */ { $$ = &Show{&ShowLegacy{Type: string($2) + " " + string($3), Scope: ImplicitScope}} } @@ -4883,6 +4886,7 @@ non_reserved_keyword: | ENUM | ERROR | ESCAPED +| EVENT | EXCHANGE | EXCLUDE | EXCLUSIVE @@ -5061,6 +5065,7 @@ non_reserved_keyword: | UNSIGNED | UNUSED | UPGRADE +| USER | USER_RESOURCES | VALIDATION | VARBINARY diff --git a/go/vt/sqlparser/token.go b/go/vt/sqlparser/token.go index b067d7aaaea..6b24dacd78e 100644 --- a/go/vt/sqlparser/token.go +++ b/go/vt/sqlparser/token.go @@ -201,6 +201,7 @@ var keywords = map[string]int{ "error": ERROR, "escape": ESCAPE, "escaped": ESCAPED, + "event": EVENT, "exchange": EXCHANGE, "exclusive": EXCLUSIVE, "exists": EXISTS, @@ -467,6 +468,7 @@ var keywords = map[string]int{ "upgrade": UPGRADE, "usage": UNUSED, "use": USE, + "user": USER, "user_resources": USER_RESOURCES, "using": USING, "utc_date": UTC_DATE, From d1fb707398cbae93e3ff0e93d68080f85c377e1f Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Mon, 15 Feb 2021 22:53:23 +0530 Subject: [PATCH 08/15] fix table parsing for VSchema generation to include reserved and non reserved keywords Signed-off-by: Harshit Gangal --- go/vt/sqlparser/parse_table.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/go/vt/sqlparser/parse_table.go b/go/vt/sqlparser/parse_table.go index a8431aacc01..8766994ecfd 100644 --- a/go/vt/sqlparser/parse_table.go +++ b/go/vt/sqlparser/parse_table.go @@ -32,7 +32,10 @@ func ParseTable(input string) (keyspace, table string, err error) { case ID: table = string(value) default: - return "", "", vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "invalid table name: %s", input) + table = KeywordString(token) + if table == "" { + return "", "", vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "invalid table name: %s", input) + } } // Seen first ID, want '.' or 0 @@ -52,7 +55,10 @@ func ParseTable(input string) (keyspace, table string, err error) { case ID: table = string(value) default: - return "", "", vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "invalid table name: %s", input) + table = KeywordString(token) + if table == "" { + return "", "", vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "invalid table name: %s", input) + } } // Seen second ID, want 0 From c23bf6a7f42b31f9773b38de4ea5efae02bf326e Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Mon, 15 Feb 2021 22:54:52 +0530 Subject: [PATCH 09/15] fix user keyword test in executor test Signed-off-by: Harshit Gangal --- go/vt/vtgate/autocommit_test.go | 6 +- go/vt/vtgate/executor_dml_test.go | 44 +++++----- go/vt/vtgate/executor_select_test.go | 121 ++++++++++++++------------- go/vt/vtgate/executor_test.go | 12 +-- 4 files changed, 92 insertions(+), 91 deletions(-) diff --git a/go/vt/vtgate/autocommit_test.go b/go/vt/vtgate/autocommit_test.go index 87b0c3d3512..519607e800e 100644 --- a/go/vt/vtgate/autocommit_test.go +++ b/go/vt/vtgate/autocommit_test.go @@ -42,7 +42,7 @@ func TestAutocommitUpdateSharded(t *testing.T) { require.NoError(t, err) testQueries(t, "sbc1", sbc1, []*querypb.BoundQuery{{ - Sql: "update user set a = 2 where id = 1", + Sql: "update `user` set a = 2 where id = 1", BindVariables: map[string]*querypb.BindVariable{}, }}) testCommitCount(t, "sbc1", sbc1, 0) @@ -271,7 +271,7 @@ func TestAutocommitInsertLookup(t *testing.T) { testCommitCount(t, "sbclookup", sbclookup, 1) testQueries(t, "sbc1", sbc1, []*querypb.BoundQuery{{ - Sql: "insert into user(id, v, `name`) values (:_Id_0, 2, :_name_0)", + Sql: "insert into `user`(id, v, `name`) values (:_Id_0, 2, :_name_0)", BindVariables: map[string]*querypb.BindVariable{ "_Id_0": sqltypes.Int64BindVariable(1), "_name_0": sqltypes.BytesBindVariable([]byte("myname")), @@ -386,7 +386,7 @@ func TestAutocommitTransactionStarted(t *testing.T) { require.NoError(t, err) testQueries(t, "sbc1", sbc1, []*querypb.BoundQuery{{ - Sql: "update user set a = 2 where id = 1", + Sql: "update `user` set a = 2 where id = 1", BindVariables: map[string]*querypb.BindVariable{}, }}) testCommitCount(t, "sbc1", sbc1, 0) diff --git a/go/vt/vtgate/executor_dml_test.go b/go/vt/vtgate/executor_dml_test.go index 90ebf28825b..e4de9524700 100644 --- a/go/vt/vtgate/executor_dml_test.go +++ b/go/vt/vtgate/executor_dml_test.go @@ -48,7 +48,7 @@ func TestUpdateEqual(t *testing.T) { _, err := executorExec(executor, "update user set a=2 where id = 1", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "update user set a = 2 where id = 1", + Sql: "update `user` set a = 2 where id = 1", BindVariables: map[string]*querypb.BindVariable{}, }} if !reflect.DeepEqual(sbc1.Queries, wantQueries) { @@ -63,7 +63,7 @@ func TestUpdateEqual(t *testing.T) { _, err = executorExec(executor, "update user set a=2 where id = 3", nil) require.NoError(t, err) wantQueries = []*querypb.BoundQuery{{ - Sql: "update user set a = 2 where id = 3", + Sql: "update `user` set a = 2 where id = 3", BindVariables: map[string]*querypb.BindVariable{}, }} if !reflect.DeepEqual(sbc2.Queries, wantQueries) { @@ -223,10 +223,10 @@ func TestUpdateMultiOwned(t *testing.T) { t.Fatal(err) } wantQueries := []*querypb.BoundQuery{{ - Sql: "select id, a, b, c, d, e, f, a = 1 and b = 2, e = 3 and f = 4 from user where id = 1 for update", + Sql: "select id, a, b, c, d, e, f, a = 1 and b = 2, e = 3 and f = 4 from `user` where id = 1 for update", BindVariables: map[string]*querypb.BindVariable{}, }, { - Sql: "update user set a = 1, b = 2, f = 4, e = 3 where id = 1", + Sql: "update `user` set a = 1, b = 2, f = 4, e = 3 where id = 1", BindVariables: map[string]*querypb.BindVariable{}, }} if !reflect.DeepEqual(sbc1.Queries, wantQueries) { @@ -275,7 +275,7 @@ func TestUpdateComments(t *testing.T) { _, err := executorExec(executor, "update user set a=2 where id = 1 /* trailing */", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "update user set a = 2 where id = 1 /* trailing */", + Sql: "update `user` set a = 2 where id = 1 /* trailing */", BindVariables: map[string]*querypb.BindVariable{}, }} if !reflect.DeepEqual(sbc1.Queries, wantQueries) { @@ -293,7 +293,7 @@ func TestUpdateNormalize(t *testing.T) { _, err := executorExec(executor, "/* leading */ update user set a=2 where id = 1 /* trailing */", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "/* leading */ update user set a = :vtg1 where id = :vtg2 /* trailing */", + Sql: "/* leading */ update `user` set a = :vtg1 where id = :vtg2 /* trailing */", BindVariables: map[string]*querypb.BindVariable{ "vtg1": sqltypes.TestBindVariable(int64(2)), "vtg2": sqltypes.TestBindVariable(int64(1)), @@ -312,7 +312,7 @@ func TestUpdateNormalize(t *testing.T) { _, err = executorExec(executor, "/* leading */ update user set a=2 where id = 1 /* trailing */", nil) require.NoError(t, err) wantQueries = []*querypb.BoundQuery{{ - Sql: "/* leading */ update user set a = :vtg1 where id = :vtg2 /* trailing */", + Sql: "/* leading */ update `user` set a = :vtg1 where id = :vtg2 /* trailing */", BindVariables: map[string]*querypb.BindVariable{ "vtg1": sqltypes.TestBindVariable(int64(2)), "vtg2": sqltypes.TestBindVariable(int64(1)), @@ -342,10 +342,10 @@ func TestDeleteEqual(t *testing.T) { _, err := executorExec(executor, "delete from user where id = 1", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select Id, `name` from user where id = 1 for update", + Sql: "select Id, `name` from `user` where id = 1 for update", BindVariables: map[string]*querypb.BindVariable{}, }, { - Sql: "delete from user where id = 1", + Sql: "delete from `user` where id = 1", BindVariables: map[string]*querypb.BindVariable{}, }} if !reflect.DeepEqual(sbc.Queries, wantQueries) { @@ -369,10 +369,10 @@ func TestDeleteEqual(t *testing.T) { _, err = executorExec(executor, "delete from user where id = 1", nil) require.NoError(t, err) wantQueries = []*querypb.BoundQuery{{ - Sql: "select Id, `name` from user where id = 1 for update", + Sql: "select Id, `name` from `user` where id = 1 for update", BindVariables: map[string]*querypb.BindVariable{}, }, { - Sql: "delete from user where id = 1", + Sql: "delete from `user` where id = 1", BindVariables: map[string]*querypb.BindVariable{}, }} if !reflect.DeepEqual(sbc.Queries, wantQueries) { @@ -527,10 +527,10 @@ func TestDeleteComments(t *testing.T) { _, err := executorExec(executor, "delete from user where id = 1 /* trailing */", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select Id, `name` from user where id = 1 for update /* trailing */", + Sql: "select Id, `name` from `user` where id = 1 for update /* trailing */", BindVariables: map[string]*querypb.BindVariable{}, }, { - Sql: "delete from user where id = 1 /* trailing */", + Sql: "delete from `user` where id = 1 /* trailing */", BindVariables: map[string]*querypb.BindVariable{}, }} if !reflect.DeepEqual(sbc.Queries, wantQueries) { @@ -558,7 +558,7 @@ func TestInsertSharded(t *testing.T) { _, err := executorExec(executor, "insert into user(id, v, name) values (1, 2, 'myname')", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "insert into user(id, v, `name`) values (:_Id_0, 2, :_name_0)", + Sql: "insert into `user`(id, v, `name`) values (:_Id_0, 2, :_name_0)", BindVariables: map[string]*querypb.BindVariable{ "_Id_0": sqltypes.Int64BindVariable(1), "_name_0": sqltypes.BytesBindVariable([]byte("myname")), @@ -590,7 +590,7 @@ func TestInsertSharded(t *testing.T) { _, err = executorExec(executor, "insert into user(id, v, name) values (3, 2, 'myname2')", nil) require.NoError(t, err) wantQueries = []*querypb.BoundQuery{{ - Sql: "insert into user(id, v, `name`) values (:_Id_0, 2, :_name_0)", + Sql: "insert into `user`(id, v, `name`) values (:_Id_0, 2, :_name_0)", BindVariables: map[string]*querypb.BindVariable{ "_Id_0": sqltypes.Int64BindVariable(3), "__seq0": sqltypes.Int64BindVariable(3), @@ -692,7 +692,7 @@ func TestInsertShardedAutocommitLookup(t *testing.T) { _, err := executorExec(executor, "insert into user(id, v, name) values (1, 2, 'myname')", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "insert into user(id, v, `name`) values (:_Id_0, 2, :_name_0)", + Sql: "insert into `user`(id, v, `name`) values (:_Id_0, 2, :_name_0)", BindVariables: map[string]*querypb.BindVariable{ "_Id_0": sqltypes.Int64BindVariable(1), "_name_0": sqltypes.BytesBindVariable([]byte("myname")), @@ -953,7 +953,7 @@ func TestInsertComments(t *testing.T) { _, err := executorExec(executor, "insert into user(id, v, name) values (1, 2, 'myname') /* trailing */", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "insert into user(id, v, `name`) values (:_Id_0, 2, :_name_0) /* trailing */", + Sql: "insert into `user`(id, v, `name`) values (:_Id_0, 2, :_name_0) /* trailing */", BindVariables: map[string]*querypb.BindVariable{ "_Id_0": sqltypes.Int64BindVariable(1), "_name_0": sqltypes.BytesBindVariable([]byte("myname")), @@ -991,7 +991,7 @@ func TestInsertGeneratorSharded(t *testing.T) { result, err := executorExec(executor, "insert into user(v, `name`) values (2, 'myname')", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "insert into user(v, `name`, id) values (2, :_name_0, :_Id_0)", + Sql: "insert into `user`(v, `name`, id) values (2, :_name_0, :_Id_0)", BindVariables: map[string]*querypb.BindVariable{ "_Id_0": sqltypes.Int64BindVariable(1), "__seq0": sqltypes.Int64BindVariable(1), @@ -1275,7 +1275,7 @@ func TestMultiInsertSharded(t *testing.T) { _, err := executorExec(executor, "insert into user(id, v, name) values (1, 1, 'myname1'),(3, 3, 'myname3')", nil) require.NoError(t, err) wantQueries1 := []*querypb.BoundQuery{{ - Sql: "insert into user(id, v, `name`) values (:_Id_0, 1, :_name_0)", + Sql: "insert into `user`(id, v, `name`) values (:_Id_0, 1, :_name_0)", BindVariables: map[string]*querypb.BindVariable{ "_Id_0": sqltypes.Int64BindVariable(1), "_name_0": sqltypes.BytesBindVariable([]byte("myname1")), @@ -1287,7 +1287,7 @@ func TestMultiInsertSharded(t *testing.T) { }} wantQueries2 := []*querypb.BoundQuery{{ - Sql: "insert into user(id, v, `name`) values (:_Id_1, 3, :_name_1)", + Sql: "insert into `user`(id, v, `name`) values (:_Id_1, 3, :_name_1)", BindVariables: map[string]*querypb.BindVariable{ "_Id_0": sqltypes.Int64BindVariable(1), "_name_0": sqltypes.BytesBindVariable([]byte("myname1")), @@ -1324,7 +1324,7 @@ func TestMultiInsertSharded(t *testing.T) { _, err = executorExec(executor, "insert into user(id, v, name) values (1, 1, 'myname1'),(2, 2, 'myname2')", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "insert into user(id, v, `name`) values (:_Id_0, 1, :_name_0),(:_Id_1, 2, :_name_1)", + Sql: "insert into `user`(id, v, `name`) values (:_Id_0, 1, :_name_0),(:_Id_1, 2, :_name_1)", BindVariables: map[string]*querypb.BindVariable{ "_Id_0": sqltypes.Int64BindVariable(1), "__seq0": sqltypes.Int64BindVariable(1), @@ -1702,7 +1702,7 @@ func TestUpdateLastInsertID(t *testing.T) { _, err := executorExec(executor, sql, map[string]*querypb.BindVariable{}) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "update user set a = :__lastInsertId where id = :vtg1", + Sql: "update `user` set a = :__lastInsertId where id = :vtg1", BindVariables: map[string]*querypb.BindVariable{ "__lastInsertId": sqltypes.Uint64BindVariable(43), "vtg1": sqltypes.Int64BindVariable(1)}, diff --git a/go/vt/vtgate/executor_select_test.go b/go/vt/vtgate/executor_select_test.go index 75a9ef5bcce..d4eb3015c82 100644 --- a/go/vt/vtgate/executor_select_test.go +++ b/go/vt/vtgate/executor_select_test.go @@ -594,7 +594,7 @@ func TestSelectBindvars(t *testing.T) { }) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select id from user where id = :id", + Sql: "select id from `user` where id = :id", BindVariables: map[string]*querypb.BindVariable{"id": sqltypes.Int64BindVariable(1)}, }} utils.MustMatch(t, sbc1.Queries, wantQueries) @@ -610,7 +610,7 @@ func TestSelectBindvars(t *testing.T) { }) require.NoError(t, err) wantQueries = []*querypb.BoundQuery{{ - Sql: "select id from user where `name` in ::__vals", + Sql: "select id from `user` where `name` in ::__vals", BindVariables: map[string]*querypb.BindVariable{ "name1": sqltypes.BytesBindVariable([]byte("foo1")), "name2": sqltypes.BytesBindVariable([]byte("foo2")), @@ -631,7 +631,7 @@ func TestSelectBindvars(t *testing.T) { }) require.NoError(t, err) wantQueries = []*querypb.BoundQuery{{ - Sql: "select id from user where 1 != 1", + Sql: "select id from `user` where 1 != 1", BindVariables: map[string]*querypb.BindVariable{ "name1": sqltypes.BytesBindVariable([]byte("foo1")), "name2": sqltypes.BytesBindVariable([]byte("foo2")), @@ -662,7 +662,7 @@ func TestSelectBindvars(t *testing.T) { // When there are no matching rows in the vindex, vtgate still needs the field info wantQueries = []*querypb.BoundQuery{{ - Sql: "select id from user where 1 != 1", + Sql: "select id from `user` where 1 != 1", BindVariables: map[string]*querypb.BindVariable{ "name": sqltypes.StringBindVariable("nonexistent"), }, @@ -691,7 +691,7 @@ func TestSelectEqual(t *testing.T) { _, err := executorExec(executor, "select id from user where id = 1", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select id from user where id = 1", + Sql: "select id from `user` where id = 1", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc1.Queries) @@ -703,7 +703,7 @@ func TestSelectEqual(t *testing.T) { _, err = executorExec(executor, "select id from user where id = 3", nil) require.NoError(t, err) wantQueries = []*querypb.BoundQuery{{ - Sql: "select id from user where id = 3", + Sql: "select id from `user` where id = 3", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc2.Queries) @@ -718,7 +718,7 @@ func TestSelectEqual(t *testing.T) { _, err = executorExec(executor, "select id from user where id = '3'", nil) require.NoError(t, err) wantQueries = []*querypb.BoundQuery{{ - Sql: "select id from user where id = '3'", + Sql: "select id from `user` where id = '3'", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc2.Queries) @@ -737,7 +737,7 @@ func TestSelectEqual(t *testing.T) { _, err = executorExec(executor, "select id from user where name = 'foo'", nil) require.NoError(t, err) wantQueries = []*querypb.BoundQuery{{ - Sql: "select id from user where `name` = 'foo'", + Sql: "select id from `user` where `name` = 'foo'", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc1.Queries) @@ -774,7 +774,7 @@ func TestSelectComments(t *testing.T) { _, err := executorExec(executor, "/* leading */ select id from user where id = 1 /* trailing */", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "/* leading */ select id from user where id = 1 /* trailing */", + Sql: "/* leading */ select id from `user` where id = 1 /* trailing */", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc1.Queries) @@ -791,7 +791,7 @@ func TestSelectNormalize(t *testing.T) { _, err := executorExec(executor, "/* leading */ select id from user where id = 1 /* trailing */", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "/* leading */ select id from user where id = :vtg1 /* trailing */", + Sql: "/* leading */ select id from `user` where id = :vtg1 /* trailing */", BindVariables: map[string]*querypb.BindVariable{ "vtg1": sqltypes.TestBindVariable(int64(1)), }, @@ -807,7 +807,7 @@ func TestSelectNormalize(t *testing.T) { _, err = executorExec(executor, "/* leading */ select id from user where id = 1 /* trailing */", nil) require.NoError(t, err) wantQueries = []*querypb.BoundQuery{{ - Sql: "/* leading */ select id from user where id = :vtg1 /* trailing */", + Sql: "/* leading */ select id from `user` where id = :vtg1 /* trailing */", BindVariables: map[string]*querypb.BindVariable{ "vtg1": sqltypes.TestBindVariable(int64(1)), }, @@ -824,7 +824,7 @@ func TestSelectCaseSensitivity(t *testing.T) { _, err := executorExec(executor, "select Id from user where iD = 1", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select Id from user where iD = 1", + Sql: "select Id from `user` where iD = 1", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc1.Queries) @@ -885,7 +885,7 @@ func TestSelectIN(t *testing.T) { _, err := executorExec(executor, "select id from user where id in (1)", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select id from user where id in ::__vals", + Sql: "select id from `user` where id in ::__vals", BindVariables: map[string]*querypb.BindVariable{ "__vals": sqltypes.TestBindVariable([]interface{}{int64(1)}), }, @@ -902,14 +902,14 @@ func TestSelectIN(t *testing.T) { _, err = executorExec(executor, "select id from user where id in (1, 3)", nil) require.NoError(t, err) wantQueries = []*querypb.BoundQuery{{ - Sql: "select id from user where id in ::__vals", + Sql: "select id from `user` where id in ::__vals", BindVariables: map[string]*querypb.BindVariable{ "__vals": sqltypes.TestBindVariable([]interface{}{int64(1)}), }, }} utils.MustMatch(t, wantQueries, sbc1.Queries) wantQueries = []*querypb.BoundQuery{{ - Sql: "select id from user where id in ::__vals", + Sql: "select id from `user` where id in ::__vals", BindVariables: map[string]*querypb.BindVariable{ "__vals": sqltypes.TestBindVariable([]interface{}{int64(3)}), }, @@ -925,7 +925,7 @@ func TestSelectIN(t *testing.T) { }) require.NoError(t, err) wantQueries = []*querypb.BoundQuery{{ - Sql: "select id from user where id in ::__vals", + Sql: "select id from `user` where id in ::__vals", BindVariables: map[string]*querypb.BindVariable{ "__vals": sqltypes.TestBindVariable([]interface{}{int64(1)}), "vals": sqltypes.TestBindVariable([]interface{}{int64(1), int64(3)}), @@ -933,7 +933,7 @@ func TestSelectIN(t *testing.T) { }} utils.MustMatch(t, wantQueries, sbc1.Queries) wantQueries = []*querypb.BoundQuery{{ - Sql: "select id from user where id in ::__vals", + Sql: "select id from `user` where id in ::__vals", BindVariables: map[string]*querypb.BindVariable{ "__vals": sqltypes.TestBindVariable([]interface{}{int64(3)}), "vals": sqltypes.TestBindVariable([]interface{}{int64(1), int64(3)}), @@ -951,7 +951,7 @@ func TestSelectIN(t *testing.T) { _, err = executorExec(executor, "select id from user where name = 'foo'", nil) require.NoError(t, err) wantQueries = []*querypb.BoundQuery{{ - Sql: "select id from user where `name` = 'foo'", + Sql: "select id from `user` where `name` = 'foo'", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc1.Queries) @@ -1030,16 +1030,17 @@ func TestSelectScatter(t *testing.T) { logChan := QueryLogger.Subscribe("Test") defer QueryLogger.Unsubscribe(logChan) - _, err := executorExec(executor, "select id from user", nil) + sql := "select id from user" + _, err := executorExec(executor, sql, nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select id from user", + Sql: "select id from `user`", BindVariables: map[string]*querypb.BindVariable{}, }} for _, conn := range conns { utils.MustMatch(t, wantQueries, conn.Queries) } - testQueryLog(t, logChan, "TestExecute", "SELECT", wantQueries[0].Sql, 8) + testQueryLog(t, logChan, "TestExecute", "SELECT", sql, 8) } func TestSelectScatterPartial(t *testing.T) { @@ -1175,7 +1176,7 @@ func TestSelectScatterOrderBy(t *testing.T) { require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: query, + Sql: "select col1, col2 from `user` order by col2 desc", BindVariables: map[string]*querypb.BindVariable{}, }} for _, conn := range conns { @@ -1240,7 +1241,7 @@ func TestSelectScatterOrderByVarChar(t *testing.T) { require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select col1, textcol, weight_string(textcol) from user order by textcol desc", + Sql: "select col1, textcol, weight_string(textcol) from `user` order by textcol desc", BindVariables: map[string]*querypb.BindVariable{}, }} for _, conn := range conns { @@ -1300,7 +1301,7 @@ func TestStreamSelectScatterOrderBy(t *testing.T) { require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: query, + Sql: "select id, col from `user` order by col desc", BindVariables: map[string]*querypb.BindVariable{}, }} for _, conn := range conns { @@ -1357,7 +1358,7 @@ func TestStreamSelectScatterOrderByVarChar(t *testing.T) { require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select id, textcol, weight_string(textcol) from user order by textcol desc", + Sql: "select id, textcol, weight_string(textcol) from `user` order by textcol desc", BindVariables: map[string]*querypb.BindVariable{}, }} for _, conn := range conns { @@ -1414,7 +1415,7 @@ func TestSelectScatterAggregate(t *testing.T) { require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: query + " order by col asc", + Sql: "select col, sum(foo) from `user` group by col order by col asc", BindVariables: map[string]*querypb.BindVariable{}, }} for _, conn := range conns { @@ -1471,7 +1472,7 @@ func TestStreamSelectScatterAggregate(t *testing.T) { require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: query + " order by col asc", + Sql: "select col, sum(foo) from `user` group by col order by col asc", BindVariables: map[string]*querypb.BindVariable{}, }} for _, conn := range conns { @@ -1529,7 +1530,7 @@ func TestSelectScatterLimit(t *testing.T) { require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select col1, col2 from user order by col2 desc limit :__upper_limit", + Sql: "select col1, col2 from `user` order by col2 desc limit :__upper_limit", BindVariables: map[string]*querypb.BindVariable{"__upper_limit": sqltypes.Int64BindVariable(3)}, }} for _, conn := range conns { @@ -1595,7 +1596,7 @@ func TestStreamSelectScatterLimit(t *testing.T) { require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select col1, col2 from user order by col2 desc limit :__upper_limit", + Sql: "select col1, col2 from `user` order by col2 desc limit :__upper_limit", BindVariables: map[string]*querypb.BindVariable{"__upper_limit": sqltypes.Int64BindVariable(3)}, }} for _, conn := range conns { @@ -1636,12 +1637,12 @@ func TestSimpleJoin(t *testing.T) { result, err := executorExec(executor, sql, nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select u1.id from user as u1 where u1.id = 1", + Sql: "select u1.id from `user` as u1 where u1.id = 1", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc1.Queries) wantQueries = []*querypb.BoundQuery{{ - Sql: "select u2.id from user as u2 where u2.id = 3", + Sql: "select u2.id from `user` as u2 where u2.id = 3", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc2.Queries) @@ -1673,12 +1674,12 @@ func TestJoinComments(t *testing.T) { _, err := executorExec(executor, sql, nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select u1.id from user as u1 where u1.id = 1 /* trailing */", + Sql: "select u1.id from `user` as u1 where u1.id = 1 /* trailing */", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc1.Queries) wantQueries = []*querypb.BoundQuery{{ - Sql: "select u2.id from user as u2 where u2.id = 3 /* trailing */", + Sql: "select u2.id from `user` as u2 where u2.id = 3 /* trailing */", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc2.Queries) @@ -1695,12 +1696,12 @@ func TestSimpleJoinStream(t *testing.T) { result, err := executorStream(executor, sql) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select u1.id from user as u1 where u1.id = 1", + Sql: "select u1.id from `user` as u1 where u1.id = 1", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc1.Queries) wantQueries = []*querypb.BoundQuery{{ - Sql: "select u2.id from user as u2 where u2.id = 3", + Sql: "select u2.id from `user` as u2 where u2.id = 3", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc2.Queries) @@ -1745,13 +1746,13 @@ func TestVarJoin(t *testing.T) { _, err := executorExec(executor, sql, nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select u1.id, u1.col from user as u1 where u1.id = 1", + Sql: "select u1.id, u1.col from `user` as u1 where u1.id = 1", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc1.Queries) // We have to use string representation because bindvars type is too complex. got := fmt.Sprintf("%+v", sbc2.Queries) - want := `[sql:"select u2.id from user as u2 where u2.id = :u1_col" bind_variables: > ]` + want := `[sql:"select u2.id from ` + "`user`" + ` as u2 where u2.id = :u1_col" bind_variables: > ]` if got != want { t.Errorf("sbc2.Queries: %s, want %s\n", got, want) } @@ -1780,13 +1781,13 @@ func TestVarJoinStream(t *testing.T) { _, err := executorStream(executor, sql) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select u1.id, u1.col from user as u1 where u1.id = 1", + Sql: "select u1.id, u1.col from `user` as u1 where u1.id = 1", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc1.Queries) // We have to use string representation because bindvars type is too complex. got := fmt.Sprintf("%+v", sbc2.Queries) - want := `[sql:"select u2.id from user as u2 where u2.id = :u1_col" bind_variables: > ]` + want := `[sql:"select u2.id from ` + "`user`" + ` as u2 where u2.id = :u1_col" bind_variables: > ]` if got != want { t.Errorf("sbc2.Queries: %s, want %s\n", got, want) } @@ -1893,10 +1894,10 @@ func TestEmptyJoin(t *testing.T) { result, err := executorExec(executor, "select u1.id, u2.id from user u1 join user u2 on u2.id = u1.col where u1.id = 1", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select u1.id, u1.col from user as u1 where u1.id = 1", + Sql: "select u1.id, u1.col from `user` as u1 where u1.id = 1", BindVariables: map[string]*querypb.BindVariable{}, }, { - Sql: "select u2.id from user as u2 where 1 != 1", + Sql: "select u2.id from `user` as u2 where 1 != 1", BindVariables: map[string]*querypb.BindVariable{ "u1_col": sqltypes.NullBindVariable, }, @@ -1929,10 +1930,10 @@ func TestEmptyJoinStream(t *testing.T) { result, err := executorStream(executor, "select u1.id, u2.id from user u1 join user u2 on u2.id = u1.col where u1.id = 1") require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select u1.id, u1.col from user as u1 where u1.id = 1", + Sql: "select u1.id, u1.col from `user` as u1 where u1.id = 1", BindVariables: map[string]*querypb.BindVariable{}, }, { - Sql: "select u2.id from user as u2 where 1 != 1", + Sql: "select u2.id from `user` as u2 where 1 != 1", BindVariables: map[string]*querypb.BindVariable{ "u1_col": sqltypes.NullBindVariable, }, @@ -1969,13 +1970,13 @@ func TestEmptyJoinRecursive(t *testing.T) { result, err := executorExec(executor, "select u1.id, u2.id, u3.id from user u1 join (user u2 join user u3 on u3.id = u2.col) where u1.id = 1", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select u1.id from user as u1 where u1.id = 1", + Sql: "select u1.id from `user` as u1 where u1.id = 1", BindVariables: map[string]*querypb.BindVariable{}, }, { - Sql: "select u2.id, u2.col from user as u2 where 1 != 1", + Sql: "select u2.id, u2.col from `user` as u2 where 1 != 1", BindVariables: map[string]*querypb.BindVariable{}, }, { - Sql: "select u3.id from user as u3 where 1 != 1", + Sql: "select u3.id from `user` as u3 where 1 != 1", BindVariables: map[string]*querypb.BindVariable{ "u2_col": sqltypes.NullBindVariable, }, @@ -2013,13 +2014,13 @@ func TestEmptyJoinRecursiveStream(t *testing.T) { result, err := executorStream(executor, "select u1.id, u2.id, u3.id from user u1 join (user u2 join user u3 on u3.id = u2.col) where u1.id = 1") require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select u1.id from user as u1 where u1.id = 1", + Sql: "select u1.id from `user` as u1 where u1.id = 1", BindVariables: map[string]*querypb.BindVariable{}, }, { - Sql: "select u2.id, u2.col from user as u2 where 1 != 1", + Sql: "select u2.id, u2.col from `user` as u2 where 1 != 1", BindVariables: map[string]*querypb.BindVariable{}, }, { - Sql: "select u3.id from user as u3 where 1 != 1", + Sql: "select u3.id from `user` as u3 where 1 != 1", BindVariables: map[string]*querypb.BindVariable{ "u2_col": sqltypes.NullBindVariable, }, @@ -2054,13 +2055,13 @@ func TestCrossShardSubquery(t *testing.T) { result, err := executorExec(executor, "select id1 from (select u1.id id1, u2.id from user u1 join user u2 on u2.id = u1.col where u1.id = 1) as t", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select u1.id as id1, u1.col from user as u1 where u1.id = 1", + Sql: "select u1.id as id1, u1.col from `user` as u1 where u1.id = 1", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc1.Queries) // We have to use string representation because bindvars type is too complex. got := fmt.Sprintf("%+v", sbc2.Queries) - want := `[sql:"select u2.id from user as u2 where u2.id = :u1_col" bind_variables: > ]` + want := `[sql:"select u2.id from ` + "`user`" + ` as u2 where u2.id = :u1_col" bind_variables: > ]` if got != want { t.Errorf("sbc2.Queries: %s, want %s\n", got, want) } @@ -2095,13 +2096,13 @@ func TestCrossShardSubqueryStream(t *testing.T) { result, err := executorStream(executor, "select id1 from (select u1.id id1, u2.id from user u1 join user u2 on u2.id = u1.col where u1.id = 1) as t") require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select u1.id as id1, u1.col from user as u1 where u1.id = 1", + Sql: "select u1.id as id1, u1.col from `user` as u1 where u1.id = 1", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, wantQueries, sbc1.Queries) // We have to use string representation because bindvars type is too complex. got := fmt.Sprintf("%+v", sbc2.Queries) - want := `[sql:"select u2.id from user as u2 where u2.id = :u1_col" bind_variables: > ]` + want := `[sql:"select u2.id from ` + "`user`" + ` as u2 where u2.id = :u1_col" bind_variables: > ]` if got != want { t.Errorf("sbc2.Queries:\n%s, want\n%s\n", got, want) } @@ -2136,10 +2137,10 @@ func TestCrossShardSubqueryGetFields(t *testing.T) { result, err := executorExec(executor, "select main1.col, t.id1 from main1 join (select u1.id id1, u2.id from user u1 join user u2 on u2.id = u1.col where u1.id = 1) as t", nil) require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select u1.id as id1, u1.col from user as u1 where 1 != 1", + Sql: "select u1.id as id1, u1.col from `user` as u1 where 1 != 1", BindVariables: map[string]*querypb.BindVariable{}, }, { - Sql: "select u2.id from user as u2 where 1 != 1", + Sql: "select u2.id from `user` as u2 where 1 != 1", BindVariables: map[string]*querypb.BindVariable{ "u1_col": sqltypes.NullBindVariable, }, @@ -2169,7 +2170,7 @@ func TestSelectBindvarswithPrepare(t *testing.T) { require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "select id from user where 1 != 1", + Sql: "select id from `user` where 1 != 1", BindVariables: map[string]*querypb.BindVariable{"id": sqltypes.Int64BindVariable(1)}, }} utils.MustMatch(t, wantQueries, sbc1.Queries) @@ -2186,14 +2187,14 @@ func TestSelectWithUnionAll(t *testing.T) { bv1, _ := sqltypes.BuildBindVariable([]int64{1, 2}) bv2, _ := sqltypes.BuildBindVariable([]int64{3}) sbc1WantQueries := []*querypb.BoundQuery{{ - Sql: "select id from user where id in ::__vals", + Sql: "select id from `user` where id in ::__vals", BindVariables: map[string]*querypb.BindVariable{ "__vals": bv1, "vtg1": bv, "vtg2": bv, }, }, { - Sql: "select id from user where id in ::__vals", + Sql: "select id from `user` where id in ::__vals", BindVariables: map[string]*querypb.BindVariable{ "__vals": bv1, "vtg1": bv, @@ -2201,14 +2202,14 @@ func TestSelectWithUnionAll(t *testing.T) { }, }} sbc2WantQueries := []*querypb.BoundQuery{{ - Sql: "select id from user where id in ::__vals", + Sql: "select id from `user` where id in ::__vals", BindVariables: map[string]*querypb.BindVariable{ "__vals": bv2, "vtg1": bv, "vtg2": bv, }, }, { - Sql: "select id from user where id in ::__vals", + Sql: "select id from `user` where id in ::__vals", BindVariables: map[string]*querypb.BindVariable{ "__vals": bv2, "vtg1": bv, diff --git a/go/vt/vtgate/executor_test.go b/go/vt/vtgate/executor_test.go index b263e25cacc..c14b2bc4256 100644 --- a/go/vt/vtgate/executor_test.go +++ b/go/vt/vtgate/executor_test.go @@ -413,7 +413,7 @@ func TestExecutorShowColumns(t *testing.T) { require.NoError(t, err) wantQueries := []*querypb.BoundQuery{{ - Sql: "show columns from user", + Sql: "show columns from `user`", BindVariables: map[string]*querypb.BindVariable{}, }} @@ -1992,7 +1992,7 @@ func TestExecutorExplain(t *testing.T) { require.NoError(t, err) require.Equal(t, - `[[VARCHAR("Route") VARCHAR("SelectScatter") VARCHAR("TestExecutor") VARCHAR("") VARCHAR("UNKNOWN") VARCHAR("select * from user")]]`, + `[[VARCHAR("Route") VARCHAR("SelectScatter") VARCHAR("TestExecutor") VARCHAR("") VARCHAR("UNKNOWN") VARCHAR("select * from `+"`user`"+`")]]`, fmt.Sprintf("%v", result.Rows)) result, err = executorExec(executor, "explain format = vitess select 42", bindVars) @@ -2115,7 +2115,7 @@ func TestExecutorSavepointInTx(t *testing.T) { Sql: "release savepoint a", BindVariables: map[string]*querypb.BindVariable{}, }, { - Sql: "select id from user where id = 1", + Sql: "select id from `user` where id = 1", BindVariables: map[string]*querypb.BindVariable{}, }, { Sql: "savepoint b", @@ -2147,7 +2147,7 @@ func TestExecutorSavepointInTx(t *testing.T) { Sql: "release savepoint b", BindVariables: map[string]*querypb.BindVariable{}, }, { - Sql: "select id from user where id = 3", + Sql: "select id from `user` where id = 3", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, sbc1WantQueries, sbc1.Queries, "") @@ -2186,12 +2186,12 @@ func TestExecutorSavepointWithoutTx(t *testing.T) { _, err = exec(executor, session, "select id from user where id = 3") require.NoError(t, err) sbc1WantQueries := []*querypb.BoundQuery{{ - Sql: "select id from user where id = 1", + Sql: "select id from `user` where id = 1", BindVariables: map[string]*querypb.BindVariable{}, }} sbc2WantQueries := []*querypb.BoundQuery{{ - Sql: "select id from user where id = 3", + Sql: "select id from `user` where id = 3", BindVariables: map[string]*querypb.BindVariable{}, }} utils.MustMatch(t, sbc1WantQueries, sbc1.Queries, "") From cf9a8b63dba52e18f4232c1ba66a8a98110bdd8b Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Mon, 15 Feb 2021 22:55:26 +0530 Subject: [PATCH 10/15] fix user keyword test in vtexplain test Signed-off-by: Harshit Gangal --- .../testdata/multi-output/comments-output.txt | 40 +++---- .../multi-output/deletesharded-output.txt | 8 +- .../multi-output/insertsharded-output.txt | 12 +-- .../testdata/multi-output/options-output.txt | 16 +-- .../multi-output/select-sharded-8-output.txt | 18 ++-- .../multi-output/selectsharded-output.txt | 100 +++++++++--------- .../testdata/multi-output/target-output.txt | 6 +- .../multi-output/uneven-keyspace-output.txt | 14 +-- .../multi-output/updatesharded-output.txt | 24 ++--- go/vt/vtexplain/vtexplain_flaky_test.go | 4 +- 10 files changed, 121 insertions(+), 121 deletions(-) diff --git a/go/vt/vtexplain/testdata/multi-output/comments-output.txt b/go/vt/vtexplain/testdata/multi-output/comments-output.txt index 922dec1543a..db6c63b250a 100644 --- a/go/vt/vtexplain/testdata/multi-output/comments-output.txt +++ b/go/vt/vtexplain/testdata/multi-output/comments-output.txt @@ -1,41 +1,41 @@ ---------------------------------------------------------------------- SELECT * from user -1 ks_sharded/-40: select * from user limit 10001 -1 ks_sharded/40-80: select * from user limit 10001 -1 ks_sharded/80-c0: select * from user limit 10001 -1 ks_sharded/c0-: select * from user limit 10001 +1 ks_sharded/-40: select * from `user` limit 10001 +1 ks_sharded/40-80: select * from `user` limit 10001 +1 ks_sharded/80-c0: select * from `user` limit 10001 +1 ks_sharded/c0-: select * from `user` limit 10001 ---------------------------------------------------------------------- select /* ; */ 1 from user -1 ks_sharded/-40: select /* ; */ 1 from user limit 10001 -1 ks_sharded/40-80: select /* ; */ 1 from user limit 10001 -1 ks_sharded/80-c0: select /* ; */ 1 from user limit 10001 -1 ks_sharded/c0-: select /* ; */ 1 from user limit 10001 +1 ks_sharded/-40: select /* ; */ 1 from `user` limit 10001 +1 ks_sharded/40-80: select /* ; */ 1 from `user` limit 10001 +1 ks_sharded/80-c0: select /* ; */ 1 from `user` limit 10001 +1 ks_sharded/c0-: select /* ; */ 1 from `user` limit 10001 ---------------------------------------------------------------------- select 1 from user where x=';' -1 ks_sharded/-40: select 1 from user where x = ';' limit 10001 -1 ks_sharded/40-80: select 1 from user where x = ';' limit 10001 -1 ks_sharded/80-c0: select 1 from user where x = ';' limit 10001 -1 ks_sharded/c0-: select 1 from user where x = ';' limit 10001 +1 ks_sharded/-40: select 1 from `user` where x = ';' limit 10001 +1 ks_sharded/40-80: select 1 from `user` where x = ';' limit 10001 +1 ks_sharded/80-c0: select 1 from `user` where x = ';' limit 10001 +1 ks_sharded/c0-: select 1 from `user` where x = ';' limit 10001 ---------------------------------------------------------------------- select 1 from user where x='/* hello */' -1 ks_sharded/-40: select 1 from user where x = '/* hello */' limit 10001 -1 ks_sharded/40-80: select 1 from user where x = '/* hello */' limit 10001 -1 ks_sharded/80-c0: select 1 from user where x = '/* hello */' limit 10001 -1 ks_sharded/c0-: select 1 from user where x = '/* hello */' limit 10001 +1 ks_sharded/-40: select 1 from `user` where x = '/* hello */' limit 10001 +1 ks_sharded/40-80: select 1 from `user` where x = '/* hello */' limit 10001 +1 ks_sharded/80-c0: select 1 from `user` where x = '/* hello */' limit 10001 +1 ks_sharded/c0-: select 1 from `user` where x = '/* hello */' limit 10001 ---------------------------------------------------------------------- select 1 from user where x='/* ; */' -1 ks_sharded/-40: select 1 from user where x = '/* ; */' limit 10001 -1 ks_sharded/40-80: select 1 from user where x = '/* ; */' limit 10001 -1 ks_sharded/80-c0: select 1 from user where x = '/* ; */' limit 10001 -1 ks_sharded/c0-: select 1 from user where x = '/* ; */' limit 10001 +1 ks_sharded/-40: select 1 from `user` where x = '/* ; */' limit 10001 +1 ks_sharded/40-80: select 1 from `user` where x = '/* ; */' limit 10001 +1 ks_sharded/80-c0: select 1 from `user` where x = '/* ; */' limit 10001 +1 ks_sharded/c0-: select 1 from `user` where x = '/* ; */' limit 10001 ---------------------------------------------------------------------- diff --git a/go/vt/vtexplain/testdata/multi-output/deletesharded-output.txt b/go/vt/vtexplain/testdata/multi-output/deletesharded-output.txt index c3b32309a6e..e6edbcdb0d1 100644 --- a/go/vt/vtexplain/testdata/multi-output/deletesharded-output.txt +++ b/go/vt/vtexplain/testdata/multi-output/deletesharded-output.txt @@ -16,10 +16,10 @@ delete from music_extra where id=1 and extra='abc' delete from user where id=1 1 ks_sharded/-40: begin -1 ks_sharded/-40: select id, `name` from user where id = 1 limit 10001 for update +1 ks_sharded/-40: select id, `name` from `user` where id = 1 limit 10001 for update 2 ks_sharded/40-80: begin 2 ks_sharded/40-80: delete from name_user_map where `name` = 'name_val_2' and user_id = 1 limit 10001 -3 ks_sharded/-40: delete from user where id = 1 limit 10001 +3 ks_sharded/-40: delete from `user` where id = 1 limit 10001 4 ks_sharded/-40: commit 5 ks_sharded/40-80: commit @@ -29,10 +29,10 @@ delete from user where name='billy' 1 ks_sharded/c0-: begin 1 ks_sharded/c0-: select `name`, user_id from name_user_map where `name` in ('billy') limit 10001 for update 2 ks_sharded/-40: begin -2 ks_sharded/-40: select id, `name` from user where `name` = 'billy' limit 10001 for update +2 ks_sharded/-40: select id, `name` from `user` where `name` = 'billy' limit 10001 for update 3 ks_sharded/40-80: begin 3 ks_sharded/40-80: delete from name_user_map where `name` = 'name_val_2' and user_id = 1 limit 10001 -4 ks_sharded/-40: delete from user where `name` = 'billy' limit 10001 +4 ks_sharded/-40: delete from `user` where `name` = 'billy' limit 10001 5 ks_sharded/c0-: commit 6 ks_sharded/-40: commit 7 ks_sharded/40-80: commit diff --git a/go/vt/vtexplain/testdata/multi-output/insertsharded-output.txt b/go/vt/vtexplain/testdata/multi-output/insertsharded-output.txt index c43ebac4000..16abe1fd424 100644 --- a/go/vt/vtexplain/testdata/multi-output/insertsharded-output.txt +++ b/go/vt/vtexplain/testdata/multi-output/insertsharded-output.txt @@ -4,7 +4,7 @@ insert into user (id, name) values(1, 'alice') 1 ks_sharded/40-80: begin 1 ks_sharded/40-80: insert into name_user_map(`name`, user_id) values ('alice', 1) 2 ks_sharded/-40: begin -2 ks_sharded/-40: insert into user(id, `name`) values (1, 'alice') +2 ks_sharded/-40: insert into `user`(id, `name`) values (1, 'alice') 3 ks_sharded/40-80: commit 4 ks_sharded/-40: commit @@ -14,7 +14,7 @@ insert into user (id, name) values(2, 'bob') 1 ks_sharded/c0-: begin 1 ks_sharded/c0-: insert into name_user_map(`name`, user_id) values ('bob', 2) 2 ks_sharded/-40: begin -2 ks_sharded/-40: insert into user(id, `name`) values (2, 'bob') +2 ks_sharded/-40: insert into `user`(id, `name`) values (2, 'bob') 3 ks_sharded/c0-: commit 4 ks_sharded/-40: commit @@ -25,7 +25,7 @@ insert ignore into user (id, name) values(2, 'bob') 1 ks_sharded/c0-: insert ignore into name_user_map(`name`, user_id) values ('bob', 2) 2 ks_sharded/c0-: select `name` from name_user_map where `name` = 'bob' and user_id = 2 limit 10001 3 ks_sharded/-40: begin -3 ks_sharded/-40: insert ignore into user(id, `name`) values (2, 'bob') +3 ks_sharded/-40: insert ignore into `user`(id, `name`) values (2, 'bob') 4 ks_sharded/c0-: commit 5 ks_sharded/-40: commit @@ -36,7 +36,7 @@ insert ignore into user (id, name, nickname) values(2, 'bob', 'bob') 1 ks_sharded/c0-: insert ignore into name_user_map(`name`, user_id) values ('bob', 2) 2 ks_sharded/c0-: select `name` from name_user_map where `name` = 'bob' and user_id = 2 limit 10001 3 ks_sharded/-40: begin -3 ks_sharded/-40: insert ignore into user(id, `name`, nickname) values (2, 'bob', 'bob') +3 ks_sharded/-40: insert ignore into `user`(id, `name`, nickname) values (2, 'bob', 'bob') 4 ks_sharded/c0-: commit 5 ks_sharded/-40: commit @@ -47,7 +47,7 @@ insert into user (id, name, nickname) values(2, 'bob', 'bobby') on duplicate key 1 ks_sharded/c0-: insert ignore into name_user_map(`name`, user_id) values ('bob', 2) 2 ks_sharded/c0-: select `name` from name_user_map where `name` = 'bob' and user_id = 2 limit 10001 3 ks_sharded/-40: begin -3 ks_sharded/-40: insert into user(id, `name`, nickname) values (2, 'bob', 'bobby') on duplicate key update nickname = 'bobby' +3 ks_sharded/-40: insert into `user`(id, `name`, nickname) values (2, 'bob', 'bobby') on duplicate key update nickname = 'bobby' 4 ks_sharded/c0-: commit 5 ks_sharded/-40: commit @@ -58,7 +58,7 @@ insert into user (id, name, nickname, address) values(2, 'bob', 'bobby', '123 ma 1 ks_sharded/c0-: insert ignore into name_user_map(`name`, user_id) values ('bob', 2) 2 ks_sharded/c0-: select `name` from name_user_map where `name` = 'bob' and user_id = 2 limit 10001 3 ks_sharded/-40: begin -3 ks_sharded/-40: insert into user(id, `name`, nickname, address) values (2, 'bob', 'bobby', '123 main st') on duplicate key update nickname = values(nickname), address = values(address) +3 ks_sharded/-40: insert into `user`(id, `name`, nickname, address) values (2, 'bob', 'bobby', '123 main st') on duplicate key update nickname = values(nickname), address = values(address) 4 ks_sharded/c0-: commit 5 ks_sharded/-40: commit diff --git a/go/vt/vtexplain/testdata/multi-output/options-output.txt b/go/vt/vtexplain/testdata/multi-output/options-output.txt index 21db05ab44d..a617e654499 100644 --- a/go/vt/vtexplain/testdata/multi-output/options-output.txt +++ b/go/vt/vtexplain/testdata/multi-output/options-output.txt @@ -1,17 +1,17 @@ ---------------------------------------------------------------------- select * from user where email='null@void.com' -1 ks_sharded/-40: select * from user where email = 'null@void.com' limit 10001 -1 ks_sharded/40-80: select * from user where email = 'null@void.com' limit 10001 -1 ks_sharded/80-c0: select * from user where email = 'null@void.com' limit 10001 -1 ks_sharded/c0-: select * from user where email = 'null@void.com' limit 10001 +1 ks_sharded/-40: select * from `user` where email = 'null@void.com' limit 10001 +1 ks_sharded/40-80: select * from `user` where email = 'null@void.com' limit 10001 +1 ks_sharded/80-c0: select * from `user` where email = 'null@void.com' limit 10001 +1 ks_sharded/c0-: select * from `user` where email = 'null@void.com' limit 10001 ---------------------------------------------------------------------- select * from user where id in (1,2,3,4,5,6,7,8) -1 ks_sharded/-40: select * from user where id in (1, 2) limit 10001 -1 ks_sharded/40-80: select * from user where id in (3, 5) limit 10001 -1 ks_sharded/c0-: select * from user where id in (4, 6, 7, 8) limit 10001 +1 ks_sharded/-40: select * from `user` where id in (1, 2) limit 10001 +1 ks_sharded/40-80: select * from `user` where id in (3, 5) limit 10001 +1 ks_sharded/c0-: select * from `user` where id in (4, 6, 7, 8) limit 10001 ---------------------------------------------------------------------- insert into user (id, name) values (2, 'bob') @@ -19,7 +19,7 @@ insert into user (id, name) values (2, 'bob') 1 ks_sharded/c0-: begin 1 ks_sharded/c0-: insert into name_user_map(`name`, user_id) values ('bob', 2) 2 ks_sharded/-40: begin -2 ks_sharded/-40: insert into user(id, `name`) values (2, 'bob') +2 ks_sharded/-40: insert into `user`(id, `name`) values (2, 'bob') 3 ks_sharded/c0-: commit 4 ks_sharded/-40: commit diff --git a/go/vt/vtexplain/testdata/multi-output/select-sharded-8-output.txt b/go/vt/vtexplain/testdata/multi-output/select-sharded-8-output.txt index a50c6fcb067..baf8152ce7a 100644 --- a/go/vt/vtexplain/testdata/multi-output/select-sharded-8-output.txt +++ b/go/vt/vtexplain/testdata/multi-output/select-sharded-8-output.txt @@ -1,18 +1,18 @@ ---------------------------------------------------------------------- select * from user -1 ks_sharded/-20: select * from user limit 10001 -1 ks_sharded/20-40: select * from user limit 10001 -1 ks_sharded/40-60: select * from user limit 10001 -1 ks_sharded/60-80: select * from user limit 10001 -1 ks_sharded/80-a0: select * from user limit 10001 -1 ks_sharded/a0-c0: select * from user limit 10001 -1 ks_sharded/c0-e0: select * from user limit 10001 -1 ks_sharded/e0-: select * from user limit 10001 +1 ks_sharded/-20: select * from `user` limit 10001 +1 ks_sharded/20-40: select * from `user` limit 10001 +1 ks_sharded/40-60: select * from `user` limit 10001 +1 ks_sharded/60-80: select * from `user` limit 10001 +1 ks_sharded/80-a0: select * from `user` limit 10001 +1 ks_sharded/a0-c0: select * from `user` limit 10001 +1 ks_sharded/c0-e0: select * from `user` limit 10001 +1 ks_sharded/e0-: select * from `user` limit 10001 ---------------------------------------------------------------------- select * from user where id in (1, 2) -1 ks_sharded/-20: select * from user where id in (1, 2) limit 10001 +1 ks_sharded/-20: select * from `user` where id in (1, 2) limit 10001 ---------------------------------------------------------------------- diff --git a/go/vt/vtexplain/testdata/multi-output/selectsharded-output.txt b/go/vt/vtexplain/testdata/multi-output/selectsharded-output.txt index ccad1126651..0ee841517cc 100644 --- a/go/vt/vtexplain/testdata/multi-output/selectsharded-output.txt +++ b/go/vt/vtexplain/testdata/multi-output/selectsharded-output.txt @@ -1,45 +1,45 @@ ---------------------------------------------------------------------- select * from user /* scatter */ -1 ks_sharded/-40: select * from user limit 10001 /* scatter */ -1 ks_sharded/40-80: select * from user limit 10001 /* scatter */ -1 ks_sharded/80-c0: select * from user limit 10001 /* scatter */ -1 ks_sharded/c0-: select * from user limit 10001 /* scatter */ +1 ks_sharded/-40: select * from `user` limit 10001 /* scatter */ +1 ks_sharded/40-80: select * from `user` limit 10001 /* scatter */ +1 ks_sharded/80-c0: select * from `user` limit 10001 /* scatter */ +1 ks_sharded/c0-: select * from `user` limit 10001 /* scatter */ ---------------------------------------------------------------------- select * from user where id = 1 /* equal unique */ -1 ks_sharded/-40: select * from user where id = 1 limit 10001 /* equal unique */ +1 ks_sharded/-40: select * from `user` where id = 1 limit 10001 /* equal unique */ ---------------------------------------------------------------------- select * from user where id > 100 /* scatter range */ -1 ks_sharded/-40: select * from user where id > 100 limit 10001 /* scatter range */ -1 ks_sharded/40-80: select * from user where id > 100 limit 10001 /* scatter range */ -1 ks_sharded/80-c0: select * from user where id > 100 limit 10001 /* scatter range */ -1 ks_sharded/c0-: select * from user where id > 100 limit 10001 /* scatter range */ +1 ks_sharded/-40: select * from `user` where id > 100 limit 10001 /* scatter range */ +1 ks_sharded/40-80: select * from `user` where id > 100 limit 10001 /* scatter range */ +1 ks_sharded/80-c0: select * from `user` where id > 100 limit 10001 /* scatter range */ +1 ks_sharded/c0-: select * from `user` where id > 100 limit 10001 /* scatter range */ ---------------------------------------------------------------------- select * from user where name = 'bob' /* vindex lookup */ 1 ks_sharded/c0-: select `name`, user_id from name_user_map where `name` in ('bob') limit 10001 /* vindex lookup */ -2 ks_sharded/-40: select * from user where `name` = 'bob' limit 10001 /* vindex lookup */ +2 ks_sharded/-40: select * from `user` where `name` = 'bob' limit 10001 /* vindex lookup */ ---------------------------------------------------------------------- select * from user where name = 'bob' or nickname = 'bob' /* vindex lookup */ -1 ks_sharded/-40: select * from user where `name` = 'bob' or nickname = 'bob' limit 10001 /* vindex lookup */ -1 ks_sharded/40-80: select * from user where `name` = 'bob' or nickname = 'bob' limit 10001 /* vindex lookup */ -1 ks_sharded/80-c0: select * from user where `name` = 'bob' or nickname = 'bob' limit 10001 /* vindex lookup */ -1 ks_sharded/c0-: select * from user where `name` = 'bob' or nickname = 'bob' limit 10001 /* vindex lookup */ +1 ks_sharded/-40: select * from `user` where `name` = 'bob' or nickname = 'bob' limit 10001 /* vindex lookup */ +1 ks_sharded/40-80: select * from `user` where `name` = 'bob' or nickname = 'bob' limit 10001 /* vindex lookup */ +1 ks_sharded/80-c0: select * from `user` where `name` = 'bob' or nickname = 'bob' limit 10001 /* vindex lookup */ +1 ks_sharded/c0-: select * from `user` where `name` = 'bob' or nickname = 'bob' limit 10001 /* vindex lookup */ ---------------------------------------------------------------------- select u.id, u.name, u.nickname, n.info from user u join name_info n on u.name = n.name /* join on varchar */ -1 ks_sharded/-40: select u.id, u.`name`, u.nickname from user as u limit 10001 /* join on varchar */ -1 ks_sharded/40-80: select u.id, u.`name`, u.nickname from user as u limit 10001 /* join on varchar */ -1 ks_sharded/80-c0: select u.id, u.`name`, u.nickname from user as u limit 10001 /* join on varchar */ -1 ks_sharded/c0-: select u.id, u.`name`, u.nickname from user as u limit 10001 /* join on varchar */ +1 ks_sharded/-40: select u.id, u.`name`, u.nickname from `user` as u limit 10001 /* join on varchar */ +1 ks_sharded/40-80: select u.id, u.`name`, u.nickname from `user` as u limit 10001 /* join on varchar */ +1 ks_sharded/80-c0: select u.id, u.`name`, u.nickname from `user` as u limit 10001 /* join on varchar */ +1 ks_sharded/c0-: select u.id, u.`name`, u.nickname from `user` as u limit 10001 /* join on varchar */ 2 ks_sharded/40-80: select n.info from name_info as n where n.`name` = 'name_val_2' limit 10001 /* join on varchar */ 3 ks_sharded/40-80: select n.info from name_info as n where n.`name` = 'name_val_2' limit 10001 /* join on varchar */ 4 ks_sharded/40-80: select n.info from name_info as n where n.`name` = 'name_val_2' limit 10001 /* join on varchar */ @@ -54,68 +54,68 @@ select m.id, m.song, e.extra from music m join music_extra e on m.id = e.id wher ---------------------------------------------------------------------- select count(*) from user where id = 1 /* point aggregate */ -1 ks_sharded/-40: select count(*) from user where id = 1 limit 10001 /* point aggregate */ +1 ks_sharded/-40: select count(*) from `user` where id = 1 limit 10001 /* point aggregate */ ---------------------------------------------------------------------- select count(*) from user where name in ('alice','bob') /* scatter aggregate */ 1 ks_sharded/40-80: select `name`, user_id from name_user_map where `name` in ('alice') limit 10001 /* scatter aggregate */ 2 ks_sharded/c0-: select `name`, user_id from name_user_map where `name` in ('bob') limit 10001 /* scatter aggregate */ -3 ks_sharded/-40: select count(*) from user where `name` in ('alice', 'bob') limit 10001 /* scatter aggregate */ +3 ks_sharded/-40: select count(*) from `user` where `name` in ('alice', 'bob') limit 10001 /* scatter aggregate */ ---------------------------------------------------------------------- select name, count(*) from user group by name /* scatter aggregate */ -1 ks_sharded/-40: select `name`, count(*) from user group by `name` limit 10001 /* scatter aggregate */ -1 ks_sharded/40-80: select `name`, count(*) from user group by `name` limit 10001 /* scatter aggregate */ -1 ks_sharded/80-c0: select `name`, count(*) from user group by `name` limit 10001 /* scatter aggregate */ -1 ks_sharded/c0-: select `name`, count(*) from user group by `name` limit 10001 /* scatter aggregate */ +1 ks_sharded/-40: select `name`, count(*) from `user` group by `name` limit 10001 /* scatter aggregate */ +1 ks_sharded/40-80: select `name`, count(*) from `user` group by `name` limit 10001 /* scatter aggregate */ +1 ks_sharded/80-c0: select `name`, count(*) from `user` group by `name` limit 10001 /* scatter aggregate */ +1 ks_sharded/c0-: select `name`, count(*) from `user` group by `name` limit 10001 /* scatter aggregate */ ---------------------------------------------------------------------- select 1, "hello", 3.14, null from user limit 10 /* select constant sql values */ -1 ks_sharded/-40: select 1, 'hello', 3.14, null from user limit 10 /* select constant sql values */ -1 ks_sharded/40-80: select 1, 'hello', 3.14, null from user limit 10 /* select constant sql values */ -1 ks_sharded/80-c0: select 1, 'hello', 3.14, null from user limit 10 /* select constant sql values */ -1 ks_sharded/c0-: select 1, 'hello', 3.14, null from user limit 10 /* select constant sql values */ +1 ks_sharded/-40: select 1, 'hello', 3.14, null from `user` limit 10 /* select constant sql values */ +1 ks_sharded/40-80: select 1, 'hello', 3.14, null from `user` limit 10 /* select constant sql values */ +1 ks_sharded/80-c0: select 1, 'hello', 3.14, null from `user` limit 10 /* select constant sql values */ +1 ks_sharded/c0-: select 1, 'hello', 3.14, null from `user` limit 10 /* select constant sql values */ ---------------------------------------------------------------------- select * from (select id from user) s /* scatter paren select */ -1 ks_sharded/-40: select * from (select id from user) as s limit 10001 /* scatter paren select */ -1 ks_sharded/40-80: select * from (select id from user) as s limit 10001 /* scatter paren select */ -1 ks_sharded/80-c0: select * from (select id from user) as s limit 10001 /* scatter paren select */ -1 ks_sharded/c0-: select * from (select id from user) as s limit 10001 /* scatter paren select */ +1 ks_sharded/-40: select * from (select id from `user`) as s limit 10001 /* scatter paren select */ +1 ks_sharded/40-80: select * from (select id from `user`) as s limit 10001 /* scatter paren select */ +1 ks_sharded/80-c0: select * from (select id from `user`) as s limit 10001 /* scatter paren select */ +1 ks_sharded/c0-: select * from (select id from `user`) as s limit 10001 /* scatter paren select */ ---------------------------------------------------------------------- select name from user where id = (select id from t1) /* non-correlated subquery as value */ 1 ks_unsharded/-: select id from t1 limit 10001 /* non-correlated subquery as value */ -2 ks_sharded/-40: select `name` from user where id = 1 limit 10001 /* non-correlated subquery as value */ +2 ks_sharded/-40: select `name` from `user` where id = 1 limit 10001 /* non-correlated subquery as value */ ---------------------------------------------------------------------- select name from user where id in (select id from t1) /* non-correlated subquery in IN clause */ 1 ks_unsharded/-: select id from t1 limit 10001 /* non-correlated subquery in IN clause */ -2 ks_sharded/-40: select `name` from user where 1 = 1 and id in (1) limit 10001 /* non-correlated subquery in IN clause */ +2 ks_sharded/-40: select `name` from `user` where 1 = 1 and id in (1) limit 10001 /* non-correlated subquery in IN clause */ ---------------------------------------------------------------------- select name from user where id not in (select id from t1) /* non-correlated subquery in NOT IN clause */ 1 ks_unsharded/-: select id from t1 limit 10001 /* non-correlated subquery in NOT IN clause */ -2 ks_sharded/-40: select `name` from user where 1 = 0 or id not in (1) limit 10001 /* non-correlated subquery in NOT IN clause */ -2 ks_sharded/40-80: select `name` from user where 1 = 0 or id not in (1) limit 10001 /* non-correlated subquery in NOT IN clause */ -2 ks_sharded/80-c0: select `name` from user where 1 = 0 or id not in (1) limit 10001 /* non-correlated subquery in NOT IN clause */ -2 ks_sharded/c0-: select `name` from user where 1 = 0 or id not in (1) limit 10001 /* non-correlated subquery in NOT IN clause */ +2 ks_sharded/-40: select `name` from `user` where 1 = 0 or id not in (1) limit 10001 /* non-correlated subquery in NOT IN clause */ +2 ks_sharded/40-80: select `name` from `user` where 1 = 0 or id not in (1) limit 10001 /* non-correlated subquery in NOT IN clause */ +2 ks_sharded/80-c0: select `name` from `user` where 1 = 0 or id not in (1) limit 10001 /* non-correlated subquery in NOT IN clause */ +2 ks_sharded/c0-: select `name` from `user` where 1 = 0 or id not in (1) limit 10001 /* non-correlated subquery in NOT IN clause */ ---------------------------------------------------------------------- select name from user where exists (select id from t1) /* non-correlated subquery as EXISTS */ 1 ks_unsharded/-: select id from t1 limit 10001 /* non-correlated subquery as EXISTS */ -2 ks_sharded/-40: select `name` from user where 1 limit 10001 /* non-correlated subquery as EXISTS */ -2 ks_sharded/40-80: select `name` from user where 1 limit 10001 /* non-correlated subquery as EXISTS */ -2 ks_sharded/80-c0: select `name` from user where 1 limit 10001 /* non-correlated subquery as EXISTS */ -2 ks_sharded/c0-: select `name` from user where 1 limit 10001 /* non-correlated subquery as EXISTS */ +2 ks_sharded/-40: select `name` from `user` where 1 limit 10001 /* non-correlated subquery as EXISTS */ +2 ks_sharded/40-80: select `name` from `user` where 1 limit 10001 /* non-correlated subquery as EXISTS */ +2 ks_sharded/80-c0: select `name` from `user` where 1 limit 10001 /* non-correlated subquery as EXISTS */ +2 ks_sharded/c0-: select `name` from `user` where 1 limit 10001 /* non-correlated subquery as EXISTS */ ---------------------------------------------------------------------- select * from name_info order by info /* select * and order by varchar column */ @@ -128,41 +128,41 @@ select * from name_info order by info /* select * and order by varchar column */ ---------------------------------------------------------------------- select distinct(name) from user where id = 1 /* select distinct */ -1 ks_sharded/-40: select distinct `name` from user where id = 1 limit 10001 /* select distinct */ +1 ks_sharded/-40: select distinct `name` from `user` where id = 1 limit 10001 /* select distinct */ ---------------------------------------------------------------------- select distinct name from user where id = 1 /* select distinct */ -1 ks_sharded/-40: select distinct `name` from user where id = 1 limit 10001 /* select distinct */ +1 ks_sharded/-40: select distinct `name` from `user` where id = 1 limit 10001 /* select distinct */ ---------------------------------------------------------------------- select id, substring(name, 1, -1) from user where id = 123 /* select substring */ -1 ks_sharded/-40: select id, substr(`name`, 1, -1) from user where id = 123 limit 10001 /* select substring */ +1 ks_sharded/-40: select id, substr(`name`, 1, -1) from `user` where id = 123 limit 10001 /* select substring */ ---------------------------------------------------------------------- select id, substring_index(name, '123456', -1) from user where id = 123 /* select substring_index */ -1 ks_sharded/-40: select id, substring_index(`name`, '123456', -1) from user where id = 123 limit 10001 /* select substring_index */ +1 ks_sharded/-40: select id, substring_index(`name`, '123456', -1) from `user` where id = 123 limit 10001 /* select substring_index */ ---------------------------------------------------------------------- select id, case when name = 'alice' then 'ALICE' when name = 'bob' then 'BOB' end as name from user where id = 1 /* select case */ -1 ks_sharded/-40: select id, case when `name` = 'alice' then 'ALICE' when `name` = 'bob' then 'BOB' end as `name` from user where id = 1 limit 10001 /* select case */ +1 ks_sharded/-40: select id, case when `name` = 'alice' then 'ALICE' when `name` = 'bob' then 'BOB' end as `name` from `user` where id = 1 limit 10001 /* select case */ ---------------------------------------------------------------------- select id, case when name = 'alice' then 'ALICE' when name = 'bob' then 'BOB' else 'OTHER' end as name from user where id = 1 /* select case */ -1 ks_sharded/-40: select id, case when `name` = 'alice' then 'ALICE' when `name` = 'bob' then 'BOB' else 'OTHER' end as `name` from user where id = 1 limit 10001 /* select case */ +1 ks_sharded/-40: select id, case when `name` = 'alice' then 'ALICE' when `name` = 'bob' then 'BOB' else 'OTHER' end as `name` from `user` where id = 1 limit 10001 /* select case */ ---------------------------------------------------------------------- select id, case when substr(name, 1, 5) = 'alice' then 'ALICE' when name = 'bob' then 'BOB' else 'OTHER' end as name from user where id = 1 /* select case */ -1 ks_sharded/-40: select id, case when substr(`name`, 1, 5) = 'alice' then 'ALICE' when `name` = 'bob' then 'BOB' else 'OTHER' end as `name` from user where id = 1 limit 10001 /* select case */ +1 ks_sharded/-40: select id, case when substr(`name`, 1, 5) = 'alice' then 'ALICE' when `name` = 'bob' then 'BOB' else 'OTHER' end as `name` from `user` where id = 1 limit 10001 /* select case */ ---------------------------------------------------------------------- select id, 'abc' as test from user where id = 1 union all select id, 'def' as test from user where id = 1 union all select id, 'ghi' as test from user where id = 1 /* union all */ -1 ks_sharded/-40: select id, 'abc' as test from user where id = 1 union all select id, 'def' as test from user where id = 1 union all select id, 'ghi' as test from user where id = 1 limit 10001 /* union all */ +1 ks_sharded/-40: select id, 'abc' as test from `user` where id = 1 union all select id, 'def' as test from `user` where id = 1 union all select id, 'ghi' as test from `user` where id = 1 limit 10001 /* union all */ ---------------------------------------------------------------------- diff --git a/go/vt/vtexplain/testdata/multi-output/target-output.txt b/go/vt/vtexplain/testdata/multi-output/target-output.txt index 4a99a3485e4..3686b86d055 100644 --- a/go/vt/vtexplain/testdata/multi-output/target-output.txt +++ b/go/vt/vtexplain/testdata/multi-output/target-output.txt @@ -1,16 +1,16 @@ ---------------------------------------------------------------------- select * from user where email='null@void.com' -1 ks_sharded/40-80: select * from user where email = 'null@void.com' limit 10001 +1 ks_sharded/40-80: select * from `user` where email = 'null@void.com' limit 10001 ---------------------------------------------------------------------- select * from user where id in (1,2,3,4,5,6,7,8) -1 ks_sharded/40-80: select * from user where id in (1, 2, 3, 4, 5, 6, 7, 8) limit 10001 +1 ks_sharded/40-80: select * from `user` where id in (1, 2, 3, 4, 5, 6, 7, 8) limit 10001 ---------------------------------------------------------------------- insert into user (id, name) values (2, 'bob') -1 ks_sharded/40-80: insert into user(id, `name`) values (2, 'bob') +1 ks_sharded/40-80: insert into `user`(id, `name`) values (2, 'bob') ---------------------------------------------------------------------- diff --git a/go/vt/vtexplain/testdata/multi-output/uneven-keyspace-output.txt b/go/vt/vtexplain/testdata/multi-output/uneven-keyspace-output.txt index 8ed6a239e98..dc74755801e 100644 --- a/go/vt/vtexplain/testdata/multi-output/uneven-keyspace-output.txt +++ b/go/vt/vtexplain/testdata/multi-output/uneven-keyspace-output.txt @@ -1,16 +1,16 @@ ---------------------------------------------------------------------- select * from user -1 ks_sharded/-80: select * from user limit 10001 -1 ks_sharded/80-90: select * from user limit 10001 -1 ks_sharded/90-a0: select * from user limit 10001 -1 ks_sharded/a0-e8: select * from user limit 10001 -1 ks_sharded/e8-: select * from user limit 10001 +1 ks_sharded/-80: select * from `user` limit 10001 +1 ks_sharded/80-90: select * from `user` limit 10001 +1 ks_sharded/90-a0: select * from `user` limit 10001 +1 ks_sharded/a0-e8: select * from `user` limit 10001 +1 ks_sharded/e8-: select * from `user` limit 10001 ---------------------------------------------------------------------- select * from user where id in (10, 17, 42, 100000) -1 ks_sharded/-80: select * from user where id in (10, 17, 42) limit 10001 -1 ks_sharded/80-90: select * from user where id in (100000) limit 10001 +1 ks_sharded/-80: select * from `user` where id in (10, 17, 42) limit 10001 +1 ks_sharded/80-90: select * from `user` where id in (100000) limit 10001 ---------------------------------------------------------------------- diff --git a/go/vt/vtexplain/testdata/multi-output/updatesharded-output.txt b/go/vt/vtexplain/testdata/multi-output/updatesharded-output.txt index 4d952c6ba3e..75a06f0388b 100644 --- a/go/vt/vtexplain/testdata/multi-output/updatesharded-output.txt +++ b/go/vt/vtexplain/testdata/multi-output/updatesharded-output.txt @@ -2,7 +2,7 @@ update user set nickname='alice' where id=1 1 ks_sharded/-40: begin -1 ks_sharded/-40: update user set nickname = 'alice' where id = 1 limit 10001 +1 ks_sharded/-40: update `user` set nickname = 'alice' where id = 1 limit 10001 1 ks_sharded/-40: commit ---------------------------------------------------------------------- @@ -11,7 +11,7 @@ update user set nickname='alice' where name='alice' 1 ks_sharded/40-80: begin 1 ks_sharded/40-80: select `name`, user_id from name_user_map where `name` in ('alice') limit 10001 for update 2 ks_sharded/-40: begin -2 ks_sharded/-40: update user set nickname = 'alice' where `name` = 'alice' limit 10001 +2 ks_sharded/-40: update `user` set nickname = 'alice' where `name` = 'alice' limit 10001 3 ks_sharded/40-80: commit 4 ks_sharded/-40: commit @@ -19,19 +19,19 @@ update user set nickname='alice' where name='alice' update user set pet='fido' where id=1 1 ks_sharded/-40: begin -1 ks_sharded/-40: update user set pet = 'fido' where id = 1 limit 10001 +1 ks_sharded/-40: update `user` set pet = 'fido' where id = 1 limit 10001 1 ks_sharded/-40: commit ---------------------------------------------------------------------- update user set name='alicia' where id=1 1 ks_sharded/-40: begin -1 ks_sharded/-40: select id, `name`, `name` = 'alicia' from user where id = 1 limit 10001 for update +1 ks_sharded/-40: select id, `name`, `name` = 'alicia' from `user` where id = 1 limit 10001 for update 2 ks_sharded/40-80: begin 2 ks_sharded/40-80: delete from name_user_map where `name` = 'name_val_2' and user_id = 1 limit 10001 3 ks_sharded/c0-: begin 3 ks_sharded/c0-: insert into name_user_map(`name`, user_id) values ('alicia', 1) -4 ks_sharded/-40: update user set `name` = 'alicia' where id = 1 limit 10001 +4 ks_sharded/-40: update `user` set `name` = 'alicia' where id = 1 limit 10001 5 ks_sharded/-40: commit 6 ks_sharded/40-80: commit 7 ks_sharded/c0-: commit @@ -42,11 +42,11 @@ update user set name='alicia' where name='alice' 1 ks_sharded/40-80: begin 1 ks_sharded/40-80: select `name`, user_id from name_user_map where `name` in ('alice') limit 10001 for update 2 ks_sharded/-40: begin -2 ks_sharded/-40: select id, `name`, `name` = 'alicia' from user where `name` = 'alice' limit 10001 for update +2 ks_sharded/-40: select id, `name`, `name` = 'alicia' from `user` where `name` = 'alice' limit 10001 for update 3 ks_sharded/40-80: delete from name_user_map where `name` = 'name_val_2' and user_id = 1 limit 10001 4 ks_sharded/c0-: begin 4 ks_sharded/c0-: insert into name_user_map(`name`, user_id) values ('alicia', 1) -5 ks_sharded/-40: update user set `name` = 'alicia' where `name` = 'alice' limit 10001 +5 ks_sharded/-40: update `user` set `name` = 'alicia' where `name` = 'alice' limit 10001 6 ks_sharded/40-80: commit 7 ks_sharded/-40: commit 8 ks_sharded/c0-: commit @@ -73,7 +73,7 @@ update user set pet='rover' where name='alice' 1 ks_sharded/40-80: begin 1 ks_sharded/40-80: select `name`, user_id from name_user_map where `name` in ('alice') limit 10001 for update 2 ks_sharded/-40: begin -2 ks_sharded/-40: update user set pet = 'rover' where `name` = 'alice' limit 10001 +2 ks_sharded/-40: update `user` set pet = 'rover' where `name` = 'alice' limit 10001 3 ks_sharded/40-80: commit 4 ks_sharded/-40: commit @@ -85,12 +85,12 @@ begin update user set nickname='alice' where id=1 1 ks_sharded/-40: begin -1 ks_sharded/-40: update user set nickname = 'alice' where id = 1 limit 10001 +1 ks_sharded/-40: update `user` set nickname = 'alice' where id = 1 limit 10001 ---------------------------------------------------------------------- update user set nickname='bob' where id=1 -2 ks_sharded/-40: update user set nickname = 'bob' where id = 1 limit 10001 +2 ks_sharded/-40: update `user` set nickname = 'bob' where id = 1 limit 10001 ---------------------------------------------------------------------- commit @@ -105,13 +105,13 @@ begin update user set nickname='alice' where id=1 1 ks_sharded/-40: begin -1 ks_sharded/-40: update user set nickname = 'alice' where id = 1 limit 10001 +1 ks_sharded/-40: update `user` set nickname = 'alice' where id = 1 limit 10001 ---------------------------------------------------------------------- update user set nickname='bob' where id=3 2 ks_sharded/40-80: begin -2 ks_sharded/40-80: update user set nickname = 'bob' where id = 3 limit 10001 +2 ks_sharded/40-80: update `user` set nickname = 'bob' where id = 3 limit 10001 ---------------------------------------------------------------------- commit diff --git a/go/vt/vtexplain/vtexplain_flaky_test.go b/go/vt/vtexplain/vtexplain_flaky_test.go index d2d9262dd1d..f75b49ae924 100644 --- a/go/vt/vtexplain/vtexplain_flaky_test.go +++ b/go/vt/vtexplain/vtexplain_flaky_test.go @@ -224,7 +224,7 @@ func TestJSONOutput(t *testing.T) { "ks_sharded/-40": { "MysqlQueries": [ { - "SQL": "select 1 from user where id = 1 limit 10001", + "SQL": "select 1 from ` + "`user`" + ` where id = 1 limit 10001", "Time": 1 } ], @@ -234,7 +234,7 @@ func TestJSONOutput(t *testing.T) { "#maxLimit": "10001", "vtg1": "1" }, - "SQL": "select :vtg1 from user where id = :vtg1", + "SQL": "select :vtg1 from ` + "`user`" + ` where id = :vtg1", "Time": 1 } ] From 0b4a905c75cf0aaca52b279fd7d5d182d9d2a9ac Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Tue, 16 Feb 2021 12:03:09 +0530 Subject: [PATCH 11/15] fix user keyword in planbuilder tests Signed-off-by: Harshit Gangal --- go/vt/vtgate/planbuilder/from.go | 2 +- go/vt/vtgate/planbuilder/plan_test.go | 2 +- .../planbuilder/testdata/aggr_cases.txt | 284 +++---- .../testdata/alterVschema_cases.txt | 4 +- .../planbuilder/testdata/bypass_cases.txt | 11 +- .../vtgate/planbuilder/testdata/ddl_cases.txt | 6 +- .../ddl_cases_no_default_keyspace.txt | 56 +- .../vtgate/planbuilder/testdata/dml_cases.txt | 126 +-- .../planbuilder/testdata/filter_cases.txt | 761 +++++++++++------ .../flush_cases_no_default_keyspace.txt | 6 +- .../planbuilder/testdata/from_cases.txt | 470 +++++------ .../planbuilder/testdata/large_cases.txt | 18 +- .../testdata/memory_sort_cases.txt | 90 +- .../planbuilder/testdata/other_read_cases.txt | 2 +- .../testdata/postprocess_cases.txt | 256 +++--- .../planbuilder/testdata/select_cases.txt | 248 +++--- .../planbuilder/testdata/show_cases.txt | 17 + .../show_cases_no_default_keyspace.txt | 2 +- .../planbuilder/testdata/symtab_cases.txt | 8 +- .../planbuilder/testdata/union_cases.txt | 795 ++++++++++++++++-- .../testdata/unsupported_cases.txt | 5 - .../planbuilder/testdata/wireup_cases.txt | 178 ++-- 22 files changed, 2117 insertions(+), 1230 deletions(-) diff --git a/go/vt/vtgate/planbuilder/from.go b/go/vt/vtgate/planbuilder/from.go index 245186a5c59..58080b26a76 100644 --- a/go/vt/vtgate/planbuilder/from.go +++ b/go/vt/vtgate/planbuilder/from.go @@ -259,7 +259,7 @@ func (pb *primitiveBuilder) buildTablePrimitive(tableExpr *sqlparser.AliasedTabl eroute.Vindex, _ = vindex.(vindexes.SingleColumn) eroute.Values = []sqltypes.PlanValue{{Value: sqltypes.MakeTrusted(sqltypes.VarBinary, vschemaTable.Pinned)}} } - eroute.TableName = vschemaTable.Name.String() + eroute.TableName = sqlparser.String(vschemaTable.Name) rb.eroute = eroute return nil diff --git a/go/vt/vtgate/planbuilder/plan_test.go b/go/vt/vtgate/planbuilder/plan_test.go index da769cf8231..100bf6c1959 100644 --- a/go/vt/vtgate/planbuilder/plan_test.go +++ b/go/vt/vtgate/planbuilder/plan_test.go @@ -447,7 +447,7 @@ func testFile(t *testing.T, filename, tempDir string, vschema *vschemaWrapper, c if tcase.output == out { expected.WriteString(samePlanMarker) } else { - expected.WriteString(out) + expected.WriteString(fmt.Sprintf("%s\n", out)) } }) } else { diff --git a/go/vt/vtgate/planbuilder/testdata/aggr_cases.txt b/go/vt/vtgate/planbuilder/testdata/aggr_cases.txt index 71980f73254..83b1ae979ea 100644 --- a/go/vt/vtgate/planbuilder/testdata/aggr_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/aggr_cases.txt @@ -31,9 +31,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select count(*), col from user where 1 != 1", - "Query": "select count(*), col from user where id = 1", - "Table": "user", + "FieldQuery": "select count(*), col from `user` where 1 != 1", + "Query": "select count(*), col from `user` where id = 1", + "Table": "`user`", "Values": [ 1 ], @@ -54,9 +54,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select fun(1), col from user where 1 != 1", - "Query": "select fun(1), col from user", - "Table": "user" + "FieldQuery": "select fun(1), col from `user` where 1 != 1", + "Query": "select fun(1), col from `user`", + "Table": "`user`" } } Gen4 plan same as above @@ -73,9 +73,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col1, id from user where 1 != 1", - "Query": "select distinct col1, id from user", - "Table": "user" + "FieldQuery": "select col1, id from `user` where 1 != 1", + "Query": "select distinct col1, id from `user`", + "Table": "`user`" } } Gen4 plan same as above @@ -92,9 +92,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col1, id from user where 1 != 1 group by col1", - "Query": "select distinct col1, id from user group by col1", - "Table": "user" + "FieldQuery": "select col1, id from `user` where 1 != 1 group by col1", + "Query": "select distinct col1, id from `user` group by col1", + "Table": "`user`" } } Gen4 plan same as above @@ -118,10 +118,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select count(*), a, textcol1, b, weight_string(textcol1) from user where 1 != 1 group by a, textcol1, b", + "FieldQuery": "select count(*), a, textcol1, b, weight_string(textcol1) from `user` where 1 != 1 group by a, textcol1, b", "OrderBy": "1 ASC, 4 ASC, 3 ASC", - "Query": "select count(*), a, textcol1, b, weight_string(textcol1) from user group by a, textcol1, b order by a asc, textcol1 asc, b asc", - "Table": "user" + "Query": "select count(*), a, textcol1, b, weight_string(textcol1) from `user` group by a, textcol1, b order by a asc, textcol1 asc, b asc", + "Table": "`user`" } ] } @@ -151,10 +151,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select count(*) as k, a, textcol1, b, weight_string(textcol1) from user where 1 != 1 group by a, textcol1, b", + "FieldQuery": "select count(*) as k, a, textcol1, b, weight_string(textcol1) from `user` where 1 != 1 group by a, textcol1, b", "OrderBy": "4 ASC, 1 ASC, 3 ASC", - "Query": "select count(*) as k, a, textcol1, b, weight_string(textcol1) from user group by a, textcol1, b order by textcol1 asc, a asc, b asc", - "Table": "user" + "Query": "select count(*) as k, a, textcol1, b, weight_string(textcol1) from `user` group by a, textcol1, b order by textcol1 asc, a asc, b asc", + "Table": "`user`" } ] } @@ -180,9 +180,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select count(*) from user where 1 != 1", - "Query": "select count(*) from user", - "Table": "user" + "FieldQuery": "select count(*) from `user` where 1 != 1", + "Query": "select count(*) from `user`", + "Table": "`user`" } ] } @@ -206,9 +206,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select sum(col) from user where 1 != 1", - "Query": "select sum(col) from user", - "Table": "user" + "FieldQuery": "select sum(col) from `user` where 1 != 1", + "Query": "select sum(col) from `user`", + "Table": "`user`" } ] } @@ -232,9 +232,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select min(col) from user where 1 != 1", - "Query": "select min(col) from user", - "Table": "user" + "FieldQuery": "select min(col) from `user` where 1 != 1", + "Query": "select min(col) from `user`", + "Table": "`user`" } ] } @@ -258,9 +258,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select max(col) from user where 1 != 1", - "Query": "select max(col) from user", - "Table": "user" + "FieldQuery": "select max(col) from `user` where 1 != 1", + "Query": "select max(col) from `user`", + "Table": "`user`" } ] } @@ -284,10 +284,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col1, col2 from user where 1 != 1 group by col1", + "FieldQuery": "select col1, col2 from `user` where 1 != 1 group by col1", "OrderBy": "0 ASC, 1 ASC, 0 ASC", - "Query": "select distinct col1, col2 from user group by col1 order by col1 asc, col2 asc, col1 asc", - "Table": "user" + "Query": "select distinct col1, col2 from `user` group by col1 order by col1 asc, col2 asc, col1 asc", + "Table": "`user`" } ] } @@ -302,7 +302,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1", - "TableName": "user_unsharded", + "TableName": "`user`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -311,9 +311,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.a from user where 1 != 1", - "Query": "select user.a from user", - "Table": "user" + "FieldQuery": "select `user`.a from `user` where 1 != 1", + "Query": "select `user`.a from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -342,9 +342,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id, count(*) from user where 1 != 1 group by id", - "Query": "select id, count(*) from user group by id", - "Table": "user" + "FieldQuery": "select id, count(*) from `user` where 1 != 1 group by id", + "Query": "select id, count(*) from `user` group by id", + "Table": "`user`" } } Gen4 plan same as above @@ -361,9 +361,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id, col, count(*) from user where 1 != 1 group by id, col", - "Query": "select id, col, count(*) from user group by id, col", - "Table": "user" + "FieldQuery": "select id, col, count(*) from `user` where 1 != 1 group by id, col", + "Query": "select id, col, count(*) from `user` group by id, col", + "Table": "`user`" } } Gen4 plan same as above @@ -387,10 +387,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col, count(*) from user where 1 != 1 group by col", + "FieldQuery": "select col, count(*) from `user` where 1 != 1 group by col", "OrderBy": "0 ASC", - "Query": "select col, count(*) from user group by col order by col asc", - "Table": "user" + "Query": "select col, count(*) from `user` group by col order by col asc", + "Table": "`user`" } ] } @@ -419,10 +419,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select `name`, count(*) from user where 1 != 1 group by `name`", + "FieldQuery": "select `name`, count(*) from `user` where 1 != 1 group by `name`", "OrderBy": "0 ASC", - "Query": "select `name`, count(*) from user group by `name` order by `name` asc", - "Table": "user" + "Query": "select `name`, count(*) from `user` group by `name` order by `name` asc", + "Table": "`user`" } ] } @@ -440,9 +440,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id, 1 + count(*) from user where 1 != 1 group by id", - "Query": "select id, 1 + count(*) from user group by id", - "Table": "user" + "FieldQuery": "select id, 1 + count(*) from `user` where 1 != 1 group by id", + "Query": "select id, 1 + count(*) from `user` group by id", + "Table": "`user`" } } Gen4 plan same as above @@ -459,9 +459,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id as val, 1 + count(*) from user where 1 != 1 group by val", - "Query": "select id as val, 1 + count(*) from user group by val", - "Table": "user" + "FieldQuery": "select id as val, 1 + count(*) from `user` where 1 != 1 group by val", + "Query": "select id as val, 1 + count(*) from `user` group by val", + "Table": "`user`" } } Gen4 plan same as above @@ -478,9 +478,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select val as id, 1 + count(*) from user where 1 != 1 group by user.id", - "Query": "select val as id, 1 + count(*) from user group by user.id", - "Table": "user" + "FieldQuery": "select val as id, 1 + count(*) from `user` where 1 != 1 group by `user`.id", + "Query": "select val as id, 1 + count(*) from `user` group by `user`.id", + "Table": "`user`" } } Gen4 plan same as above @@ -497,9 +497,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select *, id, 1 + count(*) from user where 1 != 1 group by id", - "Query": "select *, id, 1 + count(*) from user group by id", - "Table": "user" + "FieldQuery": "select *, id, 1 + count(*) from `user` where 1 != 1 group by id", + "Query": "select *, id, 1 + count(*) from `user` group by id", + "Table": "`user`" } } Gen4 plan same as above @@ -516,9 +516,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id, count(*) as c from user where 1 != 1 group by id", - "Query": "select id, count(*) as c from user group by id having id = 1 and c = 10", - "Table": "user", + "FieldQuery": "select id, count(*) as c from `user` where 1 != 1 group by id", + "Query": "select id, count(*) as c from `user` group by id having id = 1 and c = 10", + "Table": "`user`", "Values": [ 1 ], @@ -550,9 +550,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select count(*) as a from user where 1 != 1", - "Query": "select count(*) as a from user", - "Table": "user" + "FieldQuery": "select count(*) as a from `user` where 1 != 1", + "Query": "select count(*) as a from `user`", + "Table": "`user`" } ] } @@ -578,9 +578,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id, count(*) from user where 1 != 1", - "Query": "select id, count(*) from user", - "Table": "user" + "FieldQuery": "select id, count(*) from `user` where 1 != 1", + "Query": "select id, count(*) from `user`", + "Table": "`user`" } ] } @@ -604,10 +604,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", + "FieldQuery": "select col from `user` where 1 != 1", "OrderBy": "0 ASC", - "Query": "select distinct col from user order by col asc", - "Table": "user" + "Query": "select distinct col from `user` order by col asc", + "Table": "`user`" } ] } @@ -631,10 +631,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1 group by col", + "FieldQuery": "select col from `user` where 1 != 1 group by col", "OrderBy": "0 ASC", - "Query": "select col from user group by col order by col asc", - "Table": "user" + "Query": "select col from `user` group by col order by col asc", + "Table": "`user`" } ] } @@ -652,9 +652,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id, count(distinct col) from user where 1 != 1 group by id", - "Query": "select id, count(distinct col) from user group by id", - "Table": "user" + "FieldQuery": "select id, count(distinct col) from `user` where 1 != 1 group by id", + "Query": "select id, count(distinct col) from `user` group by id", + "Table": "`user`" } } Gen4 plan same as above @@ -678,10 +678,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col, count(distinct id) from user where 1 != 1 group by col", + "FieldQuery": "select col, count(distinct id) from `user` where 1 != 1 group by col", "OrderBy": "0 ASC", - "Query": "select col, count(distinct id) from user group by col order by col asc", - "Table": "user" + "Query": "select col, count(distinct id) from `user` group by col order by col asc", + "Table": "`user`" } ] } @@ -706,10 +706,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col1, col2 from user where 1 != 1 group by col1, col2", + "FieldQuery": "select col1, col2 from `user` where 1 != 1 group by col1, col2", "OrderBy": "0 ASC, 1 ASC", - "Query": "select col1, col2 from user group by col1, col2 order by col1 asc, col2 asc", - "Table": "user" + "Query": "select col1, col2 from `user` group by col1, col2 order by col1 asc, col2 asc", + "Table": "`user`" } ] } @@ -733,10 +733,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col2 from user where 1 != 1 group by col2", + "FieldQuery": "select col2 from `user` where 1 != 1 group by col2", "OrderBy": "0 ASC", - "Query": "select col2 from user group by col2 order by col2 asc", - "Table": "user" + "Query": "select col2 from `user` group by col2 order by col2 asc", + "Table": "`user`" } ] } @@ -761,10 +761,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col1, col2 from user where 1 != 1 group by col1, col2", + "FieldQuery": "select col1, col2 from `user` where 1 != 1 group by col1, col2", "OrderBy": "0 ASC, 1 ASC", - "Query": "select col1, col2 from user group by col1, col2 order by col1 asc, col2 asc", - "Table": "user" + "Query": "select col1, col2 from `user` group by col1, col2 order by col1 asc, col2 asc", + "Table": "`user`" } ] } @@ -789,10 +789,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col1, col2 from user where 1 != 1 group by col1, col2", + "FieldQuery": "select col1, col2 from `user` where 1 != 1 group by col1, col2", "OrderBy": "0 ASC, 1 ASC", - "Query": "select col1, col2 from user group by col1, col2 order by col1 asc, col2 asc", - "Table": "user" + "Query": "select col1, col2 from `user` group by col1, col2 order by col1 asc, col2 asc", + "Table": "`user`" } ] } @@ -817,10 +817,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col1, min(distinct col2) from user where 1 != 1 group by col1", + "FieldQuery": "select col1, min(distinct col2) from `user` where 1 != 1 group by col1", "OrderBy": "0 ASC", - "Query": "select col1, min(distinct col2) from user group by col1 order by col1 asc", - "Table": "user" + "Query": "select col1, min(distinct col2) from `user` group by col1 order by col1 asc", + "Table": "`user`" } ] } @@ -850,10 +850,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col1, col2 from user where 1 != 1 group by col1, col2", + "FieldQuery": "select col1, col2 from `user` where 1 != 1 group by col1, col2", "OrderBy": "0 ASC, 1 ASC", - "Query": "select col1, col2 from user group by col1, col2 order by col1 asc, col2 asc", - "Table": "user" + "Query": "select col1, col2 from `user` group by col1, col2 order by col1 asc, col2 asc", + "Table": "`user`" } ] } @@ -884,10 +884,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select a, b, count(*) from user where 1 != 1 group by b, a", + "FieldQuery": "select a, b, count(*) from `user` where 1 != 1 group by b, a", "OrderBy": "1 ASC, 0 ASC", - "Query": "select a, b, count(*) from user group by b, a order by b asc, a asc", - "Table": "user" + "Query": "select a, b, count(*) from `user` group by b, a order by b asc, a asc", + "Table": "`user`" } ] } @@ -912,10 +912,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select a, b, count(*) from user where 1 != 1 group by 2, 1", + "FieldQuery": "select a, b, count(*) from `user` where 1 != 1 group by 2, 1", "OrderBy": "1 ASC, 0 ASC", - "Query": "select a, b, count(*) from user group by 2, 1 order by b asc, a asc", - "Table": "user" + "Query": "select a, b, count(*) from `user` group by 2, 1 order by b asc, a asc", + "Table": "`user`" } ] } @@ -940,10 +940,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select a, b, count(*) from user where 1 != 1 group by b, a", + "FieldQuery": "select a, b, count(*) from `user` where 1 != 1 group by b, a", "OrderBy": "1 ASC, 0 ASC", - "Query": "select a, b, count(*) from user group by b, a order by b asc, a asc", - "Table": "user" + "Query": "select a, b, count(*) from `user` group by b, a order by b asc, a asc", + "Table": "`user`" } ] } @@ -967,10 +967,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1 group by 1", + "FieldQuery": "select col from `user` where 1 != 1 group by 1", "OrderBy": "0 ASC", - "Query": "select col from user group by 1 order by col asc", - "Table": "user" + "Query": "select col from `user` group by 1 order by col asc", + "Table": "`user`" } ] } @@ -998,9 +998,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select count(*) from user where 1 != 1", - "Query": "select count(*) from user", - "Table": "user" + "FieldQuery": "select count(*) from `user` where 1 != 1", + "Query": "select count(*) from `user`", + "Table": "`user`" } ] } @@ -1029,10 +1029,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select a, b, c, d, count(*) from user where 1 != 1 group by 1, 2, 3", + "FieldQuery": "select a, b, c, d, count(*) from `user` where 1 != 1 group by 1, 2, 3", "OrderBy": "0 ASC, 1 ASC, 2 ASC", - "Query": "select a, b, c, d, count(*) from user group by 1, 2, 3 order by 1 asc, 2 asc, 3 asc", - "Table": "user" + "Query": "select a, b, c, d, count(*) from `user` group by 1, 2, 3 order by 1 asc, 2 asc, 3 asc", + "Table": "`user`" } ] } @@ -1057,10 +1057,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select a, b, c, d, count(*) from user where 1 != 1 group by 1, 2, 3", + "FieldQuery": "select a, b, c, d, count(*) from `user` where 1 != 1 group by 1, 2, 3", "OrderBy": "0 ASC, 1 ASC, 2 ASC", - "Query": "select a, b, c, d, count(*) from user group by 1, 2, 3 order by a asc, b asc, c asc", - "Table": "user" + "Query": "select a, b, c, d, count(*) from `user` group by 1, 2, 3 order by a asc, b asc, c asc", + "Table": "`user`" } ] } @@ -1085,10 +1085,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select a, b, c, d, count(*) from user where 1 != 1 group by 1, 2, 3, 4", + "FieldQuery": "select a, b, c, d, count(*) from `user` where 1 != 1 group by 1, 2, 3, 4", "OrderBy": "3 ASC, 1 ASC, 0 ASC, 2 ASC", - "Query": "select a, b, c, d, count(*) from user group by 1, 2, 3, 4 order by d asc, b asc, a asc, c asc", - "Table": "user" + "Query": "select a, b, c, d, count(*) from `user` group by 1, 2, 3, 4 order by d asc, b asc, a asc, c asc", + "Table": "`user`" } ] } @@ -1113,10 +1113,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select a, b, c, d, count(*) from user where 1 != 1 group by 3, 2, 1, 4", + "FieldQuery": "select a, b, c, d, count(*) from `user` where 1 != 1 group by 3, 2, 1, 4", "OrderBy": "3 ASC, 1 ASC, 0 ASC, 2 ASC", - "Query": "select a, b, c, d, count(*) from user group by 3, 2, 1, 4 order by d asc, b asc, a asc, c asc", - "Table": "user" + "Query": "select a, b, c, d, count(*) from `user` group by 3, 2, 1, 4 order by d asc, b asc, a asc, c asc", + "Table": "`user`" } ] } @@ -1141,10 +1141,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select a, b, c, count(*) from user where 1 != 1 group by 3, 2, 1", + "FieldQuery": "select a, b, c, count(*) from `user` where 1 != 1 group by 3, 2, 1", "OrderBy": "0 DESC, 2 DESC, 1 ASC", - "Query": "select a, b, c, count(*) from user group by 3, 2, 1 order by 1 desc, 3 desc, b asc", - "Table": "user" + "Query": "select a, b, c, count(*) from `user` group by 3, 2, 1 order by 1 desc, 3 desc, b asc", + "Table": "`user`" } ] } @@ -1177,10 +1177,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col, count(*) from user where 1 != 1 group by col", + "FieldQuery": "select col, count(*) from `user` where 1 != 1 group by col", "OrderBy": "0 ASC", - "Query": "select col, count(*) from user group by col order by col asc limit :__upper_limit", - "Table": "user" + "Query": "select col, count(*) from `user` group by col order by col asc limit :__upper_limit", + "Table": "`user`" } ] } @@ -1200,9 +1200,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col1 as a from user where 1 != 1 group by a collate utf8_general_ci", - "Query": "select user.col1 as a from user where user.id = 5 group by a collate utf8_general_ci", - "Table": "user", + "FieldQuery": "select `user`.col1 as a from `user` where 1 != 1 group by a collate utf8_general_ci", + "Query": "select `user`.col1 as a from `user` where `user`.id = 5 group by a collate utf8_general_ci", + "Table": "`user`", "Values": [ 5 ], @@ -1270,10 +1270,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select a, count(*) from user where 1 != 1", + "FieldQuery": "select a, count(*) from `user` where 1 != 1", "OrderBy": "0 ASC", - "Query": "select a, count(*) from user order by a asc", - "Table": "user" + "Query": "select a, count(*) from `user` order by a asc", + "Table": "`user`" } ] } @@ -1303,10 +1303,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select a, count(*) from user where 1 != 1 group by a", + "FieldQuery": "select a, count(*) from `user` where 1 != 1 group by a", "OrderBy": "0 ASC, 0 ASC", - "Query": "select a, count(*) from user group by a order by a asc, a asc", - "Table": "user" + "Query": "select a, count(*) from `user` group by a order by a asc, a asc", + "Table": "`user`" } ] } diff --git a/go/vt/vtgate/planbuilder/testdata/alterVschema_cases.txt b/go/vt/vtgate/planbuilder/testdata/alterVschema_cases.txt index 91e071130d9..7fe1469ddfd 100644 --- a/go/vt/vtgate/planbuilder/testdata/alterVschema_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/alterVschema_cases.txt @@ -24,7 +24,7 @@ "Name": "user", "Sharded": true }, - "query": "alter vschema create vindex user.hash_vdx using hash" + "query": "alter vschema create vindex `user`.hash_vdx using hash" } } @@ -84,7 +84,7 @@ "Name": "user", "Sharded": true }, - "query": "alter vschema on user.a add auto_increment id using a_seq" + "query": "alter vschema on `user`.a add auto_increment id using a_seq" } } diff --git a/go/vt/vtgate/planbuilder/testdata/bypass_cases.txt b/go/vt/vtgate/planbuilder/testdata/bypass_cases.txt index c324053b9e8..2ddb626bb6b 100644 --- a/go/vt/vtgate/planbuilder/testdata/bypass_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/bypass_cases.txt @@ -30,7 +30,7 @@ Gen4 plan same as above }, "TargetDestination": "Shard(-80)", "IsDML": true, - "Query": "update user set val = 1 where id = 18446744073709551616 and id = 1", + "Query": "update `user` set val = 1 where id = 18446744073709551616 and id = 1", "SingleShardOnly": false } } @@ -49,7 +49,7 @@ Gen4 plan same as above }, "TargetDestination": "Shard(-80)", "IsDML": true, - "Query": "delete from USER where ID = 42", + "Query": "delete from `USER` where ID = 42", "SingleShardOnly": false } } @@ -68,7 +68,7 @@ Gen4 plan same as above }, "TargetDestination": "Shard(-80)", "IsDML": true, - "Query": "insert into USER(ID, `NAME`) values (42, 'ms X')", + "Query": "insert into `USER`(ID, `NAME`) values (42, 'ms X')", "SingleShardOnly": false } } @@ -87,7 +87,7 @@ Gen4 plan same as above }, "TargetDestination": "Shard(-80)", "IsDML": true, - "Query": "insert into user(nonid) values (2)", + "Query": "insert into `user`(nonid) values (2)", "SingleShardOnly": false } } @@ -112,6 +112,7 @@ Gen4 plan same as above } Gen4 plan same as above +# Select outfile "select * from user into outfile S3 'x.txt'" { "QueryType": "SELECT", @@ -124,7 +125,7 @@ Gen4 plan same as above }, "TargetDestination": "Shard(-80)", "IsDML": false, - "Query": "select * from user into outfile s3 'x.txt'", + "Query": "select * from `user` into outfile s3 'x.txt'", "SingleShardOnly": false } } diff --git a/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt b/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt index f3e0ed41f80..2f7530fb9ea 100644 --- a/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt @@ -73,7 +73,7 @@ "Name": "user", "Sharded": true }, - "Query": "alter table user add column id int" + "Query": "alter table `user` add column id int" } } @@ -155,7 +155,7 @@ "Name": "user", "Sharded": true }, - "Query": "alter table user add index a (id)" + "Query": "alter table `user` add index a (id)" } } @@ -260,7 +260,7 @@ "Name": "user", "Sharded": true }, - "Query": "alter view user_extra as select * from user" + "Query": "alter view user_extra as select * from `user`" } } diff --git a/go/vt/vtgate/planbuilder/testdata/ddl_cases_no_default_keyspace.txt b/go/vt/vtgate/planbuilder/testdata/ddl_cases_no_default_keyspace.txt index ecbb82bd37c..4a95edf3fdb 100644 --- a/go/vt/vtgate/planbuilder/testdata/ddl_cases_no_default_keyspace.txt +++ b/go/vt/vtgate/planbuilder/testdata/ddl_cases_no_default_keyspace.txt @@ -9,7 +9,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view a as select * from user" + "Query": "create view a as select * from `user`" } } @@ -24,7 +24,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view a as select * from user" + "Query": "create view a as select * from `user`" } } @@ -39,7 +39,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select 1 from user" + "Query": "create view view_a as select 1 from `user`" } } @@ -54,7 +54,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select user.* from user" + "Query": "create view view_a as select `user`.* from `user`" } } @@ -69,7 +69,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select * from user" + "Query": "create view view_a as select * from `user`" } } @@ -84,7 +84,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select user.* from user" + "Query": "create view view_a as select `user`.* from `user`" } } @@ -144,7 +144,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select * from authoritative join user on authoritative.user_id = user.id" + "Query": "create view view_a as select * from authoritative join `user` on authoritative.user_id = `user`.id" } } @@ -159,7 +159,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select user.id, a.*, user.col1 from authoritative as a join user on a.user_id = user.id" + "Query": "create view view_a as select `user`.id, a.*, `user`.col1 from authoritative as a join `user` on a.user_id = `user`.id" } } @@ -174,7 +174,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select col from user join user_extra on user.id = user_extra.user_id" + "Query": "create view view_a as select col from `user` join user_extra on `user`.id = user_extra.user_id" } } @@ -189,7 +189,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select user.id from user join user_extra on user.id = user_extra.user_id" + "Query": "create view view_a as select `user`.id from `user` join user_extra on `user`.id = user_extra.user_id" } } @@ -234,7 +234,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select user.col, user_extra.id + user_extra.col from user join user_extra on user.id = user_extra.user_id" + "Query": "create view view_a as select `user`.col, user_extra.id + user_extra.col from `user` join user_extra on `user`.id = user_extra.user_id" } } @@ -249,7 +249,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select /* comment */ user.col from user join user_extra on user.id = user_extra.user_id" + "Query": "create view view_a as select /* comment */ `user`.col from `user` join user_extra on `user`.id = user_extra.user_id" } } @@ -264,7 +264,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select user.col from user join user_extra on user.id = user_extra.user_id for update" + "Query": "create view view_a as select `user`.col from `user` join user_extra on `user`.id = user_extra.user_id for update" } } @@ -279,7 +279,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select user.Col, user_extra.Id from user join user_extra on user.id = user_extra.user_id" + "Query": "create view view_a as select `user`.Col, user_extra.Id from `user` join user_extra on `user`.id = user_extra.user_id" } } @@ -298,7 +298,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select * from user where id = 0x04" + "Query": "create view view_a as select * from `user` where id = 0x04" } } @@ -313,7 +313,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select * from user where `name` = 'abc' and id = 4 limit 5" + "Query": "create view view_a as select * from `user` where `name` = 'abc' and id = 4 limit 5" } } @@ -328,7 +328,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select * from user where id = 4 and `name` = 'abc' limit 5" + "Query": "create view view_a as select * from `user` where id = 4 and `name` = 'abc' limit 5" } } @@ -343,7 +343,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select * from user where id = 4 and `name` = 'abc' limit 5" + "Query": "create view view_a as select * from `user` where id = 4 and `name` = 'abc' limit 5" } } @@ -358,7 +358,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select user0_.col as col0_ from user as user0_ where id = 1 order by user0_.col asc" + "Query": "create view view_a as select user0_.col as col0_ from `user` as user0_ where id = 1 order by user0_.col asc" } } @@ -373,7 +373,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select user0_.col as col0_ from user as user0_ where id = 1 order by col0_ desc" + "Query": "create view view_a as select user0_.col as col0_ from `user` as user0_ where id = 1 order by col0_ desc" } } @@ -388,7 +388,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select * from user where id = 1 and `name` = true" + "Query": "create view view_a as select * from `user` where id = 1 and `name` = true" } } @@ -403,7 +403,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select * from music where user_id = 1 union select * from user where id = 1" + "Query": "create view view_a as select * from music where user_id = 1 union select * from `user` where id = 1" } } @@ -418,7 +418,7 @@ "Name": "user", "Sharded": true }, - "Query": "create view view_a as select 42 from user" + "Query": "create view view_a as select 42 from `user`" } } @@ -448,7 +448,7 @@ "Name": "user", "Sharded": true }, - "Query": "alter table user add index a (id)" + "Query": "alter table `user` add index a (id)" } } @@ -463,7 +463,7 @@ "Name": "user", "Sharded": true }, - "Query": "alter table user add column id int" + "Query": "alter table `user` add column id int" } } @@ -478,7 +478,7 @@ "Name": "user", "Sharded": true }, - "Query": "alter view user_extra as select * from user" + "Query": "alter view user_extra as select * from `user`" } } @@ -497,7 +497,7 @@ "Name": "user", "Sharded": true }, - "Query": "drop table user, user_extra" + "Query": "drop table `user`, user_extra" } } @@ -520,7 +520,7 @@ "Name": "user", "Sharded": true }, - "Query": "drop view user, user_extra" + "Query": "drop view `user`, user_extra" } } diff --git a/go/vt/vtgate/planbuilder/testdata/dml_cases.txt b/go/vt/vtgate/planbuilder/testdata/dml_cases.txt index e8bd2706743..20c91c6c0f8 100644 --- a/go/vt/vtgate/planbuilder/testdata/dml_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/dml_cases.txt @@ -136,7 +136,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "update user as route1 set a = 1 where id = 1", + "Query": "update `user` as route1 set a = 1 where id = 1", "Table": "user", "Values": [ 1 @@ -198,7 +198,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "update user set val = 1 where id = 1", + "Query": "update `user` set val = 1 where id = 1", "Table": "user", "Values": [ 1 @@ -222,7 +222,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "update user as user_alias set val = 1 where user_alias.id = 1", + "Query": "update `user` as user_alias set val = 1 where user_alias.id = 1", "Table": "user", "Values": [ 1 @@ -246,7 +246,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "update user set val = 1 where id = 1", + "Query": "update `user` set val = 1 where id = 1", "Table": "user", "Values": [ 1 @@ -270,7 +270,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "update user set val = 1 where `name` = 'foo' and id = 1", + "Query": "update `user` set val = 1 where `name` = 'foo' and id = 1", "Table": "user", "Values": [ 1 @@ -387,7 +387,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "update user set val = 1 where id = id2 and id = 1", + "Query": "update `user` set val = 1 where id = id2 and id = 1", "Table": "user", "Values": [ 1 @@ -411,7 +411,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "update user set val = 1 where id = 18446744073709551616 and id = 1", + "Query": "update `user` set val = 1 where id = 18446744073709551616 and id = 1", "Table": "user", "Values": [ 1 @@ -436,8 +436,8 @@ Gen4 plan same as above "TargetTabletType": "MASTER", "KsidVindex": "user_index", "MultiShardAutocommit": false, - "OwnedVindexQuery": "select Id, `Name`, Costly from user where id = 1 for update", - "Query": "delete from user where id = 1", + "OwnedVindexQuery": "select Id, `Name`, Costly from `user` where id = 1 for update", + "Query": "delete from `user` where id = 1", "Table": "user", "Values": [ 1 @@ -519,8 +519,8 @@ Gen4 plan same as above "TargetTabletType": "MASTER", "KsidVindex": "user_index", "MultiShardAutocommit": false, - "OwnedVindexQuery": "select Id, `Name`, Costly from user where id = 1 for update", - "Query": "delete from user as route1 where id = 1", + "OwnedVindexQuery": "select Id, `Name`, Costly from `user` where id = 1 for update", + "Query": "delete from `user` as route1 where id = 1", "Table": "user", "Values": [ 1 @@ -940,7 +940,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "insert into user(id, val, `Name`, Costly) values (:_Id_0, 1, :_Name_0, :_Costly_0)", + "Query": "insert into `user`(id, val, `Name`, Costly) values (:_Id_0, 1, :_Name_0, :_Costly_0)", "TableName": "user" } } @@ -960,7 +960,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "insert into user(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0)", + "Query": "insert into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0)", "TableName": "user" } } @@ -1005,7 +1005,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "insert into user(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0)", + "Query": "insert into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0)", "TableName": "user" } } @@ -1025,7 +1025,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "insert into user(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0)", + "Query": "insert into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0)", "TableName": "user" } } @@ -1045,7 +1045,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "insert ignore into user(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0)", + "Query": "insert ignore into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0)", "TableName": "user" } } @@ -1065,7 +1065,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "insert into user(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0) on duplicate key update col = 2", + "Query": "insert into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0) on duplicate key update col = 2", "TableName": "user" } } @@ -1085,7 +1085,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "insert into user(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0)", + "Query": "insert into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0)", "TableName": "user" } } @@ -1105,7 +1105,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "insert into user(nonid, id, `Name`, Costly) values (2, :_Id_0, :_Name_0, :_Costly_0)", + "Query": "insert into `user`(nonid, id, `Name`, Costly) values (2, :_Id_0, :_Name_0, :_Costly_0)", "TableName": "user" } } @@ -1125,7 +1125,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "insert into user(id, nonid, `Name`, Costly) values (:_Id_0, 2, :_Name_0, :_Costly_0)", + "Query": "insert into `user`(id, nonid, `Name`, Costly) values (:_Id_0, 2, :_Name_0, :_Costly_0)", "TableName": "user" } } @@ -1145,7 +1145,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "insert into user(nonid, id, `Name`, Costly) values (true, :_Id_0, :_Name_0, :_Costly_0)", + "Query": "insert into `user`(nonid, id, `Name`, Costly) values (true, :_Id_0, :_Name_0, :_Costly_0)", "TableName": "user" } } @@ -1165,7 +1165,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "insert into user(nonid, `name`, id, Costly) values (2, :_Name_0, :_Id_0, :_Costly_0)", + "Query": "insert into `user`(nonid, `name`, id, Costly) values (2, :_Name_0, :_Id_0, :_Costly_0)", "TableName": "user" } } @@ -1265,7 +1265,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "insert into user(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0), (:_Id_1, :_Name_1, :_Costly_1)", + "Query": "insert into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0), (:_Id_1, :_Name_1, :_Costly_1)", "TableName": "user" } } @@ -1285,7 +1285,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "insert /*vt+ QUERY_TIMEOUT_MS=1 */ into user(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0), (:_Id_1, :_Name_1, :_Costly_1)", + "Query": "insert /*vt+ QUERY_TIMEOUT_MS=1 */ into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0), (:_Id_1, :_Name_1, :_Costly_1)", "QueryTimeout": 1, "TableName": "user" } @@ -1306,7 +1306,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": true, - "Query": "insert /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ into user(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0), (:_Id_1, :_Name_1, :_Costly_1)", + "Query": "insert /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0), (:_Id_1, :_Name_1, :_Costly_1)", "TableName": "user" } } @@ -1964,8 +1964,8 @@ Gen4 plan same as above ], "KsidVindex": "user_index", "MultiShardAutocommit": false, - "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = null from user where id = 1 for update", - "Query": "update user set `name` = null where id = 1", + "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = null from `user` where id = 1 for update", + "Query": "update `user` set `name` = null where id = 1", "Table": "user", "Values": [ 1 @@ -2013,8 +2013,8 @@ Gen4 plan same as above ], "KsidVindex": "user_index", "MultiShardAutocommit": false, - "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = null from user where id in (1, 2, 3) for update", - "Query": "update user set `name` = null where id in (1, 2, 3)", + "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = null from `user` where id in (1, 2, 3) for update", + "Query": "update `user` set `name` = null where id in (1, 2, 3)", "Table": "user", "Values": [ [ @@ -2046,8 +2046,8 @@ Gen4 plan same as above ], "KsidVindex": "user_index", "MultiShardAutocommit": false, - "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = null from user for update", - "Query": "update user set `name` = null", + "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = null from `user` for update", + "Query": "update `user` set `name` = null", "Table": "user" } } @@ -2071,8 +2071,8 @@ Gen4 plan same as above ], "KsidVindex": "user_index", "MultiShardAutocommit": false, - "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = null from user where id + 1 = 2 for update", - "Query": "update user set `name` = null where id + 1 = 2", + "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = null from `user` where id + 1 = 2 for update", + "Query": "update `user` set `name` = null where id + 1 = 2", "Table": "user" } } @@ -2093,8 +2093,8 @@ Gen4 plan same as above "TargetTabletType": "MASTER", "KsidVindex": "user_index", "MultiShardAutocommit": false, - "OwnedVindexQuery": "select Id, `Name`, Costly from user where id in (1, 2, 3) for update", - "Query": "delete from user where id in (1, 2, 3)", + "OwnedVindexQuery": "select Id, `Name`, Costly from `user` where id in (1, 2, 3) for update", + "Query": "delete from `user` where id in (1, 2, 3)", "Table": "user", "Values": [ [ @@ -2123,8 +2123,8 @@ Gen4 plan same as above "TargetTabletType": "MASTER", "KsidVindex": "user_index", "MultiShardAutocommit": false, - "OwnedVindexQuery": "select Id, `Name`, Costly from user where id + 1 = 2 for update", - "Query": "delete from user where id + 1 = 2", + "OwnedVindexQuery": "select Id, `Name`, Costly from `user` where id + 1 = 2 for update", + "Query": "delete from `user` where id + 1 = 2", "Table": "user" } } @@ -2145,8 +2145,8 @@ Gen4 plan same as above "TargetTabletType": "MASTER", "KsidVindex": "user_index", "MultiShardAutocommit": false, - "OwnedVindexQuery": "select Id, `Name`, Costly from user for update", - "Query": "delete from user", + "OwnedVindexQuery": "select Id, `Name`, Costly from `user` for update", + "Query": "delete from `user`", "Table": "user" } } @@ -2192,7 +2192,7 @@ Gen4 plan same as above }, "TargetTabletType": "MASTER", "MultiShardAutocommit": false, - "Query": "update user set val = 1", + "Query": "update `user` set val = 1", "Table": "user" } } @@ -2213,8 +2213,8 @@ Gen4 plan same as above "TargetTabletType": "MASTER", "KsidVindex": "user_index", "MultiShardAutocommit": false, - "OwnedVindexQuery": "select Id, `Name`, Costly from user for update", - "Query": "delete from user", + "OwnedVindexQuery": "select Id, `Name`, Costly from `user` for update", + "Query": "delete from `user`", "Table": "user" } } @@ -2267,8 +2267,33 @@ Gen4 plan same as above ], "KsidVindex": "user_index", "MultiShardAutocommit": false, - "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = _binary 'abc' from user where id = 1 for update", - "Query": "update user set `name` = _binary 'abc' where id = 1", + "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = _binary 'abc' from `user` where id = 1 for update", + "Query": "update `user` set `name` = _binary 'abc' where id = 1", + "Table": "user", + "Values": [ + 1 + ], + "Vindex": "user_index" + } +} +{ + "QueryType": "UPDATE", + "Original": "update user set name = _binary 'abc' where id = 1", + "Instructions": { + "OperatorType": "Update", + "Variant": "Equal", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "TargetTabletType": "MASTER", + "ChangedVindexValues": [ + "name_user_map:3" + ], + "KsidVindex": "user_index", + "MultiShardAutocommit": false, + "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = _binary 'abc' from `user` where id = 1 for update", + "Query": "update `user` set `name` = _binary 'abc' where id = 1", "Table": "user", "Values": [ 1 @@ -2276,7 +2301,6 @@ Gen4 plan same as above "Vindex": "user_index" } } -Gen4 plan same as above # delete with binary value "delete from user where name = _binary 'abc'" @@ -2293,8 +2317,8 @@ Gen4 plan same as above "TargetTabletType": "MASTER", "KsidVindex": "user_index", "MultiShardAutocommit": false, - "OwnedVindexQuery": "select Id, `Name`, Costly from user where `name` = _binary 'abc' for update", - "Query": "delete from user where `name` = _binary 'abc'", + "OwnedVindexQuery": "select Id, `Name`, Costly from `user` where `name` = _binary 'abc' for update", + "Query": "delete from `user` where `name` = _binary 'abc'", "Table": "user" } } @@ -2315,8 +2339,8 @@ Gen4 plan same as above "TargetTabletType": "MASTER", "KsidVindex": "user_index", "MultiShardAutocommit": false, - "OwnedVindexQuery": "select Id, `Name`, Costly from user for update", - "Query": "delete from user", + "OwnedVindexQuery": "select Id, `Name`, Costly from `user` for update", + "Query": "delete from `user`", "Table": "user" } } @@ -2340,8 +2364,8 @@ Gen4 plan same as above ], "KsidVindex": "user_index", "MultiShardAutocommit": false, - "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = 'myname' from user for update", - "Query": "update user set `name` = 'myname'", + "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = 'myname' from `user` for update", + "Query": "update `user` set `name` = 'myname'", "Table": "user" } } diff --git a/go/vt/vtgate/planbuilder/testdata/filter_cases.txt b/go/vt/vtgate/planbuilder/testdata/filter_cases.txt index 9625327dd41..9e1f069f2b5 100644 --- a/go/vt/vtgate/planbuilder/testdata/filter_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/filter_cases.txt @@ -10,12 +10,26 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user`", + "Table": "`user`" + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user`", + "Table": "`user`" } } -Gen4 plan same as above # Query that always return empty "select id from user where someColumn = null" @@ -29,9 +43,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where someColumn = null", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where someColumn = null", + "Table": "`user`" } } { @@ -44,9 +58,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where someColumn = null", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where someColumn = null", + "Table": "`user`" } } @@ -62,16 +76,34 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where user.id = 5", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `user`.id = 5", + "Table": "`user`", + "Values": [ + 5 + ], + "Vindex": "user_index" + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user where user.id = 5", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectEqualUnique", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `user`.id = 5", + "Table": "`user`", "Values": [ 5 ], "Vindex": "user_index" } } -Gen4 plan same as above # Single table unique vindex route, but complex expr "select id from user where user.id = 5+5" @@ -85,12 +117,26 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where user.id = 5 + 5", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `user`.id = 5 + 5", + "Table": "`user`" + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user where user.id = 5+5", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `user`.id = 5 + 5", + "Table": "`user`" } } -Gen4 plan same as above # Single table multiple unique vindex match "select id from music where id = 5 and user_id = 4" @@ -127,16 +173,34 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where costly = 'aa' and `name` = 'bb'", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where costly = 'aa' and `name` = 'bb'", + "Table": "`user`", + "Values": [ + "bb" + ], + "Vindex": "name_user_map" + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user where costly = 'aa' and name = 'bb'", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectEqual", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where costly = 'aa' and `name` = 'bb'", + "Table": "`user`", "Values": [ "bb" ], "Vindex": "name_user_map" } } -Gen4 plan same as above # Single table multiple non-unique vindex match for IN clause "select id from user where costly in ('aa', 'bb') and name in ('aa', 'bb')" @@ -150,9 +214,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where costly in ('aa', 'bb') and `name` in ::__vals", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where costly in ('aa', 'bb') and `name` in ::__vals", + "Table": "`user`", "Values": [ [ "aa", @@ -175,9 +239,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where (`name`, col) in (('aa', 'bb'), ('cc', 'dd'))", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where (`name`, col) in (('aa', 'bb'), ('cc', 'dd'))", + "Table": "`user`", "Values": [ [ "aa", @@ -200,9 +264,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where (col, `name`) in (('aa', 'bb'), ('cc', 'dd'))", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where (col, `name`) in (('aa', 'bb'), ('cc', 'dd'))", + "Table": "`user`", "Values": [ [ "bb", @@ -225,9 +289,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where (costly, `name`) in (('aa', 'bb'), ('cc', 'dd'))", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where (costly, `name`) in (('aa', 'bb'), ('cc', 'dd'))", + "Table": "`user`", "Values": [ [ "bb", @@ -250,9 +314,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where (`name`, costly) in (('aa', 'bb'), ('cc', 'dd'))", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where (`name`, costly) in (('aa', 'bb'), ('cc', 'dd'))", + "Table": "`user`", "Values": [ [ "aa", @@ -275,9 +339,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where (col, costly) in (('aa', 'bb')) and (col, `name`) in (('cc', 'dd'))", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where (col, costly) in (('aa', 'bb')) and (col, `name`) in (('cc', 'dd'))", + "Table": "`user`", "Values": [ [ "dd" @@ -299,16 +363,34 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where (col, `name`) in (('aa', 'bb')) and id = 5", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where (col, `name`) in (('aa', 'bb')) and id = 5", + "Table": "`user`", + "Values": [ + 5 + ], + "Vindex": "user_index" + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user where (col, name) in (('aa', 'bb')) and id = 5", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectEqualUnique", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where (col, `name`) in (('aa', 'bb')) and id = 5", + "Table": "`user`", "Values": [ 5 ], "Vindex": "user_index" } } -Gen4 plan same as above # Composite IN: multiple vindex matches "select id from user where (costly, name) in (('aa', 'bb'), ('cc', 'dd'))" @@ -322,9 +404,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where (costly, `name`) in (('aa', 'bb'), ('cc', 'dd'))", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where (costly, `name`) in (('aa', 'bb'), ('cc', 'dd'))", + "Table": "`user`", "Values": [ [ "bb", @@ -347,9 +429,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where ((col1, `name`), col2) in ((('aa', 'bb'), 'cc'), (('dd', 'ee'), 'ff'))", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where ((col1, `name`), col2) in ((('aa', 'bb'), 'cc'), (('dd', 'ee'), 'ff'))", + "Table": "`user`", "Values": [ [ "bb", @@ -372,9 +454,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where (`name`, (col1, col2)) in (('aa', ('bb', 'cc')), ('dd', ('ee', 'ff')))", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where (`name`, (col1, col2)) in (('aa', ('bb', 'cc')), ('dd', ('ee', 'ff')))", + "Table": "`user`", "Values": [ [ "aa", @@ -397,12 +479,26 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where ((col1, `name`), col2) in (('aa', 'bb', 'cc'), (('dd', 'ee'), 'ff'))", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where ((col1, `name`), col2) in (('aa', 'bb', 'cc'), (('dd', 'ee'), 'ff'))", + "Table": "`user`" + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user where ((col1, name), col2) in (('aa', 'bb', 'cc'), (('dd', 'ee'), 'ff'))", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where ((col1, `name`), col2) in (('aa', 'bb', 'cc'), (('dd', 'ee'), 'ff'))", + "Table": "`user`" } } -Gen4 plan same as above # Composite IN: RHS not tuple "select id from user where (col1, name) in (select * from music where music.user_id=user.id)" @@ -416,9 +512,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where (col1, `name`) in (select * from music where music.user_id = user.id)", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where (col1, `name`) in (select * from music where music.user_id = `user`.id)", + "Table": "`user`" } } @@ -434,12 +530,26 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where (col1, `name`) in (('aa', 1 + 1))", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where (col1, `name`) in (('aa', 1 + 1))", + "Table": "`user`" + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user where (col1, name) in (('aa', 1+1))", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where (col1, `name`) in (('aa', 1 + 1))", + "Table": "`user`" } } -Gen4 plan same as above # IN clause: LHS is neither column nor composite tuple "select Id from user where 1 in ('aa', 'bb')" @@ -453,9 +563,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select Id from user where 1 != 1", - "Query": "select Id from user where 1 in ('aa', 'bb')", - "Table": "user" + "FieldQuery": "select Id from `user` where 1 != 1", + "Query": "select Id from `user` where 1 in ('aa', 'bb')", + "Table": "`user`" } } @@ -471,12 +581,26 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where `name` in (col, 'bb')", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `name` in (col, 'bb')", + "Table": "`user`" + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user where name in (col, 'bb')", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `name` in (col, 'bb')", + "Table": "`user`" } } -Gen4 plan same as above # Single table equality route with val arg "select id from user where name = :a" @@ -490,16 +614,34 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where `name` = :a", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `name` = :a", + "Table": "`user`", + "Values": [ + ":a" + ], + "Vindex": "name_user_map" + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user where name = :a", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectEqual", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `name` = :a", + "Table": "`user`", "Values": [ ":a" ], "Vindex": "name_user_map" } } -Gen4 plan same as above # Single table equality route with unsigned value "select id from user where name = 18446744073709551615" @@ -513,16 +655,34 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where `name` = 18446744073709551615", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `name` = 18446744073709551615", + "Table": "`user`", + "Values": [ + 18446744073709551615 + ], + "Vindex": "name_user_map" + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user where name = 18446744073709551615", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectEqual", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `name` = 18446744073709551615", + "Table": "`user`", "Values": [ 18446744073709551615 ], "Vindex": "name_user_map" } } -Gen4 plan same as above # Single table in clause list arg "select id from user where name in ::list" @@ -536,9 +696,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where `name` in ::__vals", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `name` in ::__vals", + "Table": "`user`", "Values": [ "::list" ], @@ -558,9 +718,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user_extra.id from user join user_extra on user.id = user_extra.user_id where 1 != 1", - "Query": "select user_extra.id from user join user_extra on user.id = user_extra.user_id where user.id = 5", - "Table": "user", + "FieldQuery": "select user_extra.id from `user` join user_extra on `user`.id = user_extra.user_id where 1 != 1", + "Query": "select user_extra.id from `user` join user_extra on `user`.id = user_extra.user_id where `user`.id = 5", + "Table": "`user`", "Values": [ 5 ], @@ -580,9 +740,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user_extra.id from user join user_extra on user.id = user_extra.user_id where 1 != 1", - "Query": "select user_extra.id from user join user_extra on user.id = user_extra.user_id where user_extra.user_id = 5", - "Table": "user", + "FieldQuery": "select user_extra.id from `user` join user_extra on `user`.id = user_extra.user_id where 1 != 1", + "Query": "select user_extra.id from `user` join user_extra on `user`.id = user_extra.user_id where user_extra.user_id = 5", + "Table": "`user`", "Values": [ 5 ], @@ -602,9 +762,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user_extra.id from user left join user_extra on user.id = user_extra.user_id where 1 != 1", - "Query": "select user_extra.id from user left join user_extra on user.id = user_extra.user_id where user.id = 5", - "Table": "user", + "FieldQuery": "select user_extra.id from `user` left join user_extra on `user`.id = user_extra.user_id where 1 != 1", + "Query": "select user_extra.id from `user` left join user_extra on `user`.id = user_extra.user_id where `user`.id = 5", + "Table": "`user`", "Values": [ 5 ], @@ -624,9 +784,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user_extra.id from user left join user_extra on user.id = user_extra.user_id where 1 != 1", - "Query": "select user_extra.id from user left join user_extra on user.id = user_extra.user_id where user_extra.user_id = 5", - "Table": "user", + "FieldQuery": "select user_extra.id from `user` left join user_extra on `user`.id = user_extra.user_id where 1 != 1", + "Query": "select user_extra.id from `user` left join user_extra on `user`.id = user_extra.user_id where user_extra.user_id = 5", + "Table": "`user`", "Values": [ 5 ], @@ -643,7 +803,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -652,9 +812,47 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user where user.id = 5", - "Table": "user", + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user` where `user`.id = 5", + "Table": "`user`", + "Values": [ + 5 + ], + "Vindex": "user_index" + }, + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select user_extra.id from user_extra where 1 != 1", + "Query": "select user_extra.id from user_extra where user_extra.col = :user_col", + "Table": "user_extra" + } + ] + } +} +{ + "QueryType": "SELECT", + "Original": "select user_extra.id from user join user_extra on user.col = user_extra.col where user.id = 5", + "Instructions": { + "OperatorType": "Join", + "Variant": "Join", + "JoinColumnIndexes": "1", + "TableName": "`user`_user_extra", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectEqualUnique", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user` where `user`.id = 5", + "Table": "`user`", "Values": [ 5 ], @@ -674,7 +872,6 @@ Gen4 plan same as above ] } } -Gen4 plan same as above # Multi-route unique vindex route on both routes "select user_extra.id from user join user_extra on user.col = user_extra.col where user.id = 5 and user_extra.user_id = 5" @@ -685,7 +882,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -694,9 +891,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user where user.id = 5", - "Table": "user", + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user` where `user`.id = 5", + "Table": "`user`", "Values": [ 5 ], @@ -730,7 +927,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -739,9 +936,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user", - "Table": "user" + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -771,7 +968,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -780,9 +977,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user where 1 = 1", - "Table": "user" + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user` where 1 = 1", + "Table": "`user`" }, { "OperatorType": "Route", @@ -811,9 +1008,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where user.col = 5 and user.id in ::__vals", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `user`.col = 5 and `user`.id in ::__vals", + "Table": "`user`", "Values": [ [ 1, @@ -836,9 +1033,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where user.col = case user.col when 'foo' then true else false end and user.id in ::__vals", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `user`.col = case `user`.col when 'foo' then true else false end and `user`.id in ::__vals", + "Table": "`user`", "Values": [ [ 1, @@ -861,16 +1058,34 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id or col as val from user where 1 != 1", - "Query": "select id or col as val from user where user.col = 5 and user.id in (1, 2) and user.`name` = 'aa'", - "Table": "user", + "FieldQuery": "select id or col as val from `user` where 1 != 1", + "Query": "select id or col as val from `user` where `user`.col = 5 and `user`.id in (1, 2) and `user`.`name` = 'aa'", + "Table": "`user`", + "Values": [ + "aa" + ], + "Vindex": "name_user_map" + } +} +{ + "QueryType": "SELECT", + "Original": "select (id or col) as val from user where user.col = 5 and user.id in (1, 2) and user.name = 'aa'", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectEqual", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id or col as val from `user` where 1 != 1", + "Query": "select id or col as val from `user` where `user`.col = 5 and `user`.id in (1, 2) and `user`.`name` = 'aa'", + "Table": "`user`", "Values": [ "aa" ], "Vindex": "name_user_map" } } -Gen4 plan same as above # Route with multiple route constraints, SelectEqual is the best constraint. "select id from user where user.col = false and user.id in (1, 2) and user.name = 'aa'" @@ -884,16 +1099,34 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where user.col = false and user.id in (1, 2) and user.`name` = 'aa'", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `user`.col = false and `user`.id in (1, 2) and `user`.`name` = 'aa'", + "Table": "`user`", + "Values": [ + "aa" + ], + "Vindex": "name_user_map" + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user where user.col = false and user.id in (1, 2) and user.name = 'aa'", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectEqual", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `user`.col = false and `user`.id in (1, 2) and `user`.`name` = 'aa'", + "Table": "`user`", "Values": [ "aa" ], "Vindex": "name_user_map" } } -Gen4 plan same as above # Route with multiple route constraints, SelectEqualUnique is the best constraint. "select id from user where user.col = 5 and user.id in (1, 2) and user.name = 'aa' and user.id = 1" @@ -907,16 +1140,34 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where user.col = 5 and user.id in (1, 2) and user.`name` = 'aa' and user.id = 1", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `user`.col = 5 and `user`.id in (1, 2) and `user`.`name` = 'aa' and `user`.id = 1", + "Table": "`user`", + "Values": [ + 1 + ], + "Vindex": "user_index" + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user where user.col = 5 and user.id in (1, 2) and user.name = 'aa' and user.id = 1", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectEqualUnique", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `user`.col = 5 and `user`.id in (1, 2) and `user`.`name` = 'aa' and `user`.id = 1", + "Table": "`user`", "Values": [ 1 ], "Vindex": "user_index" } } -Gen4 plan same as above # Route with multiple route constraints, SelectEqualUnique is the best constraint, order reversed. "select id from user where user.id = 1 and user.name = 'aa' and user.id in (1, 2) and user.col = 5" @@ -930,16 +1181,34 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where user.id = 1 and user.`name` = 'aa' and user.id in (1, 2) and user.col = 5", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `user`.id = 1 and `user`.`name` = 'aa' and `user`.id in (1, 2) and `user`.col = 5", + "Table": "`user`", + "Values": [ + 1 + ], + "Vindex": "user_index" + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user where user.id = 1 and user.name = 'aa' and user.id in (1, 2) and user.col = 5", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectEqualUnique", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `user`.id = 1 and `user`.`name` = 'aa' and `user`.id in (1, 2) and `user`.col = 5", + "Table": "`user`", "Values": [ 1 ], "Vindex": "user_index" } } -Gen4 plan same as above # Route with OR and AND clause, must parenthesize correctly. "select id from user where user.id = 1 or user.name = 'aa' and user.id in (1, 2)" @@ -953,12 +1222,26 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where user.id = 1 or user.`name` = 'aa' and user.id in (1, 2)", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `user`.id = 1 or `user`.`name` = 'aa' and `user`.id in (1, 2)", + "Table": "`user`" + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user where user.id = 1 or user.name = 'aa' and user.id in (1, 2)", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `user`.id = 1 or `user`.`name` = 'aa' and `user`.id in (1, 2)", + "Table": "`user`" } } -Gen4 plan same as above # Unsharded route "select unsharded.id from user join unsharded where unsharded.id = user.id" @@ -969,7 +1252,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "user_unsharded", + "TableName": "`user`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -978,9 +1261,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id from user where 1 != 1", - "Query": "select user.id from user", - "Table": "user" + "FieldQuery": "select `user`.id from `user` where 1 != 1", + "Query": "select `user`.id from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1003,7 +1286,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-2", - "TableName": "unsharded_user", + "TableName": "unsharded_`user`", "Inputs": [ { "OperatorType": "Route", @@ -1023,9 +1306,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user where 1 != 1", - "Query": "select 1 from user where user.id = :unsharded_id", - "Table": "user", + "FieldQuery": "select 1 from `user` where 1 != 1", + "Query": "select 1 from `user` where `user`.id = :unsharded_id", + "Table": "`user`", "Values": [ ":unsharded_id" ], @@ -1047,9 +1330,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user as route1 where 1 != 1", - "Query": "select col from user as route1 where id = 1", - "Table": "user", + "FieldQuery": "select col from `user` as route1 where 1 != 1", + "Query": "select col from `user` as route1 where id = 1", + "Table": "`user`", "Values": [ 1 ], @@ -1083,7 +1366,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "user_extra_user", + "TableName": "user_extra_`user`", "Inputs": [ { "OperatorType": "Route", @@ -1103,9 +1386,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select u.m from user as u where 1 != 1", - "Query": "select u.m from user as u where u.id in ::__vals and u.id in (select m2 from user where user.id = u.id and user.col = :user_extra_col)", - "Table": "user", + "FieldQuery": "select u.m from `user` as u where 1 != 1", + "Query": "select u.m from `user` as u where u.id in ::__vals and u.id in (select m2 from `user` where `user`.id = u.id and `user`.col = :user_extra_col)", + "Table": "`user`", "Values": [ [ ":user_extra_col", @@ -1127,7 +1410,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "user_extra_user", + "TableName": "user_extra_`user`", "Inputs": [ { "OperatorType": "Route", @@ -1147,9 +1430,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select u.m from user as u where 1 != 1", - "Query": "select u.m from user as u where u.id = 5 and u.id in (select m2 from user where user.id = 5)", - "Table": "user", + "FieldQuery": "select u.m from `user` as u where 1 != 1", + "Query": "select u.m from `user` as u where u.id = 5 and u.id in (select m2 from `user` where `user`.id = 5)", + "Table": "`user`", "Values": [ 5 ], @@ -1168,7 +1451,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "user_extra_user", + "TableName": "user_extra_`user`", "Inputs": [ { "OperatorType": "Route", @@ -1188,9 +1471,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select u.m from user as u where 1 != 1", - "Query": "select u.m from user as u where u.id in ::__vals and u.id in (select m2 from user where user.id = u.id and user.col = :user_extra_col and user.id in (select m3 from user_extra where user_extra.user_id = user.id))", - "Table": "user", + "FieldQuery": "select u.m from `user` as u where 1 != 1", + "Query": "select u.m from `user` as u where u.id in ::__vals and u.id in (select m2 from `user` where `user`.id = u.id and `user`.col = :user_extra_col and `user`.id in (select m3 from user_extra where user_extra.user_id = `user`.id))", + "Table": "`user`", "Values": [ [ ":user_extra_col", @@ -1215,9 +1498,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where user.col in (select user_extra.col from user_extra where user_extra.user_id = user.id)", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where `user`.col in (select user_extra.col from user_extra where user_extra.user_id = `user`.id)", + "Table": "`user`" } } @@ -1233,9 +1516,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where id = 5 and user.col in (select user_extra.col from user_extra where user_extra.user_id = 5)", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where id = 5 and `user`.col in (select user_extra.col from user_extra where user_extra.user_id = 5)", + "Table": "`user`", "Values": [ 5 ], @@ -1255,9 +1538,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where id = 'aa' and user.col in (select user_extra.col from user_extra where user_extra.user_id = 'aa')", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where id = 'aa' and `user`.col in (select user_extra.col from user_extra where user_extra.user_id = 'aa')", + "Table": "`user`", "Values": [ "aa" ], @@ -1277,9 +1560,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where id = :a and user.col in (select user_extra.col from user_extra where user_extra.user_id = :a)", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where id = :a and `user`.col in (select user_extra.col from user_extra where user_extra.user_id = :a)", + "Table": "`user`", "Values": [ ":a" ], @@ -1303,9 +1586,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id2 from user as uu where 1 != 1", - "Query": "select id2 from user as uu where id in (select id from user where id = uu.id and user.col in (select user_extra.col from user_extra where user_extra.user_id = uu.id))", - "Table": "user" + "FieldQuery": "select id2 from `user` as uu where 1 != 1", + "Query": "select id2 from `user` as uu where id in (select id from `user` where id = uu.id and `user`.col in (select user_extra.col from user_extra where user_extra.user_id = uu.id))", + "Table": "`user`" } } @@ -1326,9 +1609,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1337,9 +1620,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where :__sq_has_values1 = 1 and id in ::__vals", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where :__sq_has_values1 = 1 and id in ::__vals", + "Table": "`user`", "Values": [ "::__sq1" ], @@ -1365,9 +1648,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1376,9 +1659,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where :__sq_has_values1 = 0 or id not in ::__sq1", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where :__sq_has_values1 = 0 or id not in ::__sq1", + "Table": "`user`" } ] } @@ -1400,9 +1683,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1411,9 +1694,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where :__sq_has_values1", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where :__sq_has_values1", + "Table": "`user`" } ] } @@ -1435,9 +1718,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1446,9 +1729,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where id = :__sq1", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where id = :__sq1", + "Table": "`user`", "Values": [ ":__sq1" ], @@ -1478,9 +1761,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id3 from user where 1 != 1", - "Query": "select id3 from user", - "Table": "user" + "FieldQuery": "select id3 from `user` where 1 != 1", + "Query": "select id3 from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1489,9 +1772,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id2 from user where 1 != 1", - "Query": "select id2 from user where :__sq_has_values1 = 1 and id2 in ::__sq1", - "Table": "user" + "FieldQuery": "select id2 from `user` where 1 != 1", + "Query": "select id2 from `user` where :__sq_has_values1 = 1 and id2 in ::__sq1", + "Table": "`user`" } ] }, @@ -1502,9 +1785,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id1 from user where 1 != 1", - "Query": "select id1 from user where id = :__sq2", - "Table": "user", + "FieldQuery": "select id1 from `user` where 1 != 1", + "Query": "select id1 from `user` where id = :__sq2", + "Table": "`user`", "Values": [ ":__sq2" ], @@ -1526,9 +1809,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user where id = (select id from user as route1 where route1.id = user.id)", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user` where id = (select id from `user` as route1 where route1.id = `user`.id)", + "Table": "`user`" } } @@ -1559,9 +1842,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user where id = :__sq1", - "Table": "user", + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user` where id = :__sq1", + "Table": "`user`", "Values": [ ":__sq1" ], @@ -1583,9 +1866,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user_extra.Id from user join user_extra on user.iD = user_extra.User_Id where 1 != 1", - "Query": "select user_extra.Id from user join user_extra on user.iD = user_extra.User_Id where user.Id = 5", - "Table": "user", + "FieldQuery": "select user_extra.Id from `user` join user_extra on `user`.iD = user_extra.User_Id where 1 != 1", + "Query": "select user_extra.Id from `user` join user_extra on `user`.iD = user_extra.User_Id where `user`.Id = 5", + "Table": "`user`", "Values": [ 5 ], @@ -1602,9 +1885,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user_extra.Id from user, user_extra where 1 != 1", - "Query": "select user_extra.Id from user, user_extra where user.Id = 5 and user.iD = user_extra.User_Id", - "Table": "user, user_extra", + "FieldQuery": "select user_extra.Id from `user`, user_extra where 1 != 1", + "Query": "select user_extra.Id from `user`, user_extra where `user`.Id = 5 and `user`.iD = user_extra.User_Id", + "Table": "`user`, user_extra", "Values": [ 5 ], @@ -1624,9 +1907,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where database()", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where database()", + "Table": "`user`" } } @@ -1653,21 +1936,7 @@ Gen4 plan same as above "Table": "music" } } -{ - "QueryType": "SELECT", - "Original": "select id from music where id = null", - "Instructions": { - "OperatorType": "Route", - "Variant": "SelectNone", - "Keyspace": { - "Name": "user", - "Sharded": true - }, - "FieldQuery": "select id from music where 1 != 1", - "Query": "select id from music where id = null", - "Table": "music" - } -} +Gen4 plan same as above # SELECT with IS NULL "select id from music where id is null" @@ -1727,21 +1996,7 @@ Gen4 plan same as above "Table": "music" } } -{ - "QueryType": "SELECT", - "Original": "select id from music where user_id = 4 and id = null", - "Instructions": { - "OperatorType": "Route", - "Variant": "SelectNone", - "Keyspace": { - "Name": "user", - "Sharded": true - }, - "FieldQuery": "select id from music where 1 != 1", - "Query": "select id from music where user_id = 4 and id = null", - "Table": "music" - } -} +Gen4 plan same as above # Single table with unique vindex match and IN (null) "select id from music where user_id = 4 and id IN (null)" diff --git a/go/vt/vtgate/planbuilder/testdata/flush_cases_no_default_keyspace.txt b/go/vt/vtgate/planbuilder/testdata/flush_cases_no_default_keyspace.txt index 2b7605ad436..991b495c36e 100644 --- a/go/vt/vtgate/planbuilder/testdata/flush_cases_no_default_keyspace.txt +++ b/go/vt/vtgate/planbuilder/testdata/flush_cases_no_default_keyspace.txt @@ -25,7 +25,7 @@ }, "TargetDestination": "AllShards()", "IsDML": false, - "Query": "flush local tables user, user_extra with read lock", + "Query": "flush local tables `user`, user_extra with read lock", "SingleShardOnly": false } ] @@ -63,7 +63,7 @@ }, "TargetDestination": "AllShards()", "IsDML": false, - "Query": "flush local tables user", + "Query": "flush local tables `user`", "SingleShardOnly": false } ] @@ -130,7 +130,7 @@ }, "TargetDestination": "AllShards()", "IsDML": false, - "Query": "flush local tables user, user_extra with read lock", + "Query": "flush local tables `user`, user_extra with read lock", "SingleShardOnly": false } ] diff --git a/go/vt/vtgate/planbuilder/testdata/from_cases.txt b/go/vt/vtgate/planbuilder/testdata/from_cases.txt index 4be60942a61..b27a6708761 100644 --- a/go/vt/vtgate/planbuilder/testdata/from_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/from_cases.txt @@ -10,9 +10,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user`", + "Table": "`user`" } } Gen4 plan same as above @@ -133,7 +133,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "user_music", + "TableName": "`user`_music", "Inputs": [ { "OperatorType": "Route", @@ -142,9 +142,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user where 1 != 1", - "Query": "select 1 from user", - "Table": "user" + "FieldQuery": "select 1 from `user` where 1 != 1", + "Query": "select 1 from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -174,9 +174,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user", - "Table": "user" + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user`", + "Table": "`user`" } } Gen4 plan same as above @@ -193,9 +193,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user as a where 1 != 1", - "Query": "select * from user as a", - "Table": "user" + "FieldQuery": "select * from `user` as a where 1 != 1", + "Query": "select * from `user` as a", + "Table": "`user`" } } Gen4 plan same as above @@ -212,9 +212,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user as route1 where 1 != 1", - "Query": "select * from user as route1", - "Table": "user" + "FieldQuery": "select * from `user` as route1 where 1 != 1", + "Query": "select * from `user` as route1", + "Table": "`user`" } } @@ -230,9 +230,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user as a where 1 != 1", - "Query": "select * from user as a", - "Table": "user" + "FieldQuery": "select * from `user` as a where 1 != 1", + "Query": "select * from `user` as a", + "Table": "`user`" } } @@ -248,9 +248,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user as master_redirect where 1 != 1", - "Query": "select * from user as master_redirect", - "Table": "user" + "FieldQuery": "select * from `user` as master_redirect where 1 != 1", + "Query": "select * from `user` as master_redirect", + "Table": "`user`" } } @@ -273,7 +273,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "user_music", + "TableName": "`user`_music", "Inputs": [ { "OperatorType": "Route", @@ -282,9 +282,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user where 1 != 1", - "Query": "select 1 from user", - "Table": "user" + "FieldQuery": "select 1 from `user` where 1 != 1", + "Query": "select 1 from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -355,21 +355,7 @@ Gen4 plan same as above "Table": "unsharded" } } -{ - "QueryType": "SELECT", - "Original": "select u1.a, u2.a from unsharded u1, unsharded u2, unsharded u3", - "Instructions": { - "OperatorType": "Route", - "Variant": "SelectUnsharded", - "Keyspace": { - "Name": "main", - "Sharded": false - }, - "FieldQuery": "select u1.a, u2.a from unsharded as u1, unsharded as u2, unsharded as u3 where 1 != 1", - "Query": "select u1.a, u2.a from unsharded as u1, unsharded as u2, unsharded as u3", - "Table": "unsharded" - } -} +Gen4 plan same as above # Left join, single chunk "select m1.col from unsharded as m1 left join unsharded as m2 on m1.a=m2.b" @@ -398,7 +384,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "LeftJoin", "JoinColumnIndexes": "-1", - "TableName": "user_unsharded", + "TableName": "`user`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -407,9 +393,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select u.col, u.a from user as u where 1 != 1", - "Query": "select u.col, u.a from user as u", - "Table": "user" + "FieldQuery": "select u.col, u.a from `user` as u where 1 != 1", + "Query": "select u.col, u.a from `user` as u", + "Table": "`user`" }, { "OperatorType": "Route", @@ -435,13 +421,13 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "LeftJoin", "JoinColumnIndexes": "-1", - "TableName": "user_unsharded_unsharded", + "TableName": "`user`_unsharded_unsharded", "Inputs": [ { "OperatorType": "Join", "Variant": "LeftJoin", "JoinColumnIndexes": "-1,1", - "TableName": "user_unsharded", + "TableName": "`user`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -450,9 +436,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user", - "Table": "user" + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -491,7 +477,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "LeftJoin", "JoinColumnIndexes": "-1", - "TableName": "user_user_extra_unsharded", + "TableName": "`user`_user_extra_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -500,9 +486,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user", - "Table": "user" + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user`", + "Table": "`user`" }, { "OperatorType": "Join", @@ -600,13 +586,13 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_unsharded_unsharded", + "TableName": "`user`_unsharded_unsharded", "Inputs": [ { "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_unsharded", + "TableName": "`user`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -615,9 +601,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user", - "Table": "user" + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -653,7 +639,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_unsharded", + "TableName": "`user`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -662,9 +648,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user", - "Table": "user" + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -690,7 +676,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_unsharded", + "TableName": "`user`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -699,9 +685,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user", - "Table": "user" + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -724,7 +710,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_unsharded", + "TableName": "`user`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -733,9 +719,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user", - "Table": "user" + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -761,7 +747,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_unsharded", + "TableName": "`user`_`user`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -770,14 +756,14 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user", - "Table": "user" + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user`", + "Table": "`user`" }, { "OperatorType": "Join", "Variant": "Join", - "TableName": "user_unsharded", + "TableName": "`user`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -786,9 +772,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user as u1 where 1 != 1", - "Query": "select 1 from user as u1", - "Table": "user" + "FieldQuery": "select 1 from `user` as u1 where 1 != 1", + "Query": "select 1 from `user` as u1", + "Table": "`user`" }, { "OperatorType": "Route", @@ -819,9 +805,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user use index (a) where 1 != 1", - "Query": "select user.col from user use index (a)", - "Table": "user" + "FieldQuery": "select `user`.col from `user` use index (a) where 1 != 1", + "Query": "select `user`.col from `user` use index (a)", + "Table": "`user`" } } @@ -837,9 +823,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user join user_extra on user.id = user_extra.user_id where 1 != 1", - "Query": "select user.col from user join user_extra on user.id = user_extra.user_id", - "Table": "user" + "FieldQuery": "select `user`.col from `user` join user_extra on `user`.id = user_extra.user_id where 1 != 1", + "Query": "select `user`.col from `user` join user_extra on `user`.id = user_extra.user_id", + "Table": "`user`" } } { @@ -852,9 +838,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user, user_extra where 1 != 1", - "Query": "select user.col from user, user_extra where user.id = user_extra.user_id", - "Table": "user, user_extra" + "FieldQuery": "select `user`.col from `user`, user_extra where 1 != 1", + "Query": "select `user`.col from `user`, user_extra where `user`.id = user_extra.user_id", + "Table": "`user`, user_extra" } } @@ -870,9 +856,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user join user_extra on user.id = user_extra.user_id where 1 != 1", - "Query": "select user.col from user join user_extra on user.id = user_extra.user_id", - "Table": "user" + "FieldQuery": "select `user`.col from `user` join user_extra on `user`.id = user_extra.user_id where 1 != 1", + "Query": "select `user`.col from `user` join user_extra on `user`.id = user_extra.user_id", + "Table": "`user`" } } { @@ -885,9 +871,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user, user_extra where 1 != 1", - "Query": "select user.col from user, user_extra where user.id = user_extra.user_id", - "Table": "user, user_extra" + "FieldQuery": "select `user`.col from `user`, user_extra where 1 != 1", + "Query": "select `user`.col from `user`, user_extra where `user`.id = user_extra.user_id", + "Table": "`user`, user_extra" } } @@ -903,9 +889,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user join user_extra on user.col between 1 and 2 and user.id = user_extra.user_id where 1 != 1", - "Query": "select user.col from user join user_extra on user.col between 1 and 2 and user.id = user_extra.user_id", - "Table": "user" + "FieldQuery": "select `user`.col from `user` join user_extra on `user`.col between 1 and 2 and `user`.id = user_extra.user_id where 1 != 1", + "Query": "select `user`.col from `user` join user_extra on `user`.col between 1 and 2 and `user`.id = user_extra.user_id", + "Table": "`user`" } } { @@ -918,9 +904,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user, user_extra where 1 != 1", - "Query": "select user.col from user, user_extra where user.col between 1 and 2 and user.id = user_extra.user_id", - "Table": "user, user_extra" + "FieldQuery": "select `user`.col from `user`, user_extra where 1 != 1", + "Query": "select `user`.col from `user`, user_extra where `user`.col between 1 and 2 and `user`.id = user_extra.user_id", + "Table": "`user`, user_extra" } } @@ -936,9 +922,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user join user_extra on user_extra.user_id = user.id where 1 != 1", - "Query": "select user.col from user join user_extra on user_extra.user_id = user.id", - "Table": "user" + "FieldQuery": "select `user`.col from `user` join user_extra on user_extra.user_id = `user`.id where 1 != 1", + "Query": "select `user`.col from `user` join user_extra on user_extra.user_id = `user`.id", + "Table": "`user`" } } { @@ -951,9 +937,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user, user_extra where 1 != 1", - "Query": "select user.col from user, user_extra where user_extra.user_id = user.id", - "Table": "user, user_extra" + "FieldQuery": "select `user`.col from `user`, user_extra where 1 != 1", + "Query": "select `user`.col from `user`, user_extra where user_extra.user_id = `user`.id", + "Table": "`user`, user_extra" } } @@ -969,9 +955,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user join user_extra on user.id = 5 and user.id = user_extra.user_id where 1 != 1", - "Query": "select user.col from user join user_extra on user.id = 5 and user.id = user_extra.user_id", - "Table": "user", + "FieldQuery": "select `user`.col from `user` join user_extra on `user`.id = 5 and `user`.id = user_extra.user_id where 1 != 1", + "Query": "select `user`.col from `user` join user_extra on `user`.id = 5 and `user`.id = user_extra.user_id", + "Table": "`user`", "Values": [ 5 ], @@ -988,9 +974,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user, user_extra where 1 != 1", - "Query": "select user.col from user, user_extra where user.id = 5 and user.id = user_extra.user_id", - "Table": "user, user_extra", + "FieldQuery": "select `user`.col from `user`, user_extra where 1 != 1", + "Query": "select `user`.col from `user`, user_extra where `user`.id = 5 and `user`.id = user_extra.user_id", + "Table": "`user`, user_extra", "Values": [ 5 ], @@ -1007,7 +993,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -1016,9 +1002,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col, user.id from user where 1 != 1", - "Query": "select user.col, user.id from user", - "Table": "user" + "FieldQuery": "select `user`.col, `user`.id from `user` where 1 != 1", + "Query": "select `user`.col, `user`.id from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1041,7 +1027,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-2", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -1050,9 +1036,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id, user.col from user where 1 != 1", - "Query": "select user.id, user.col from user", - "Table": "user" + "FieldQuery": "select `user`.id, `user`.col from `user` where 1 != 1", + "Query": "select `user`.id, `user`.col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1078,7 +1064,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -1087,9 +1073,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user where user.id = 5", - "Table": "user", + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user` where `user`.id = 5", + "Table": "`user`", "Values": [ 5 ], @@ -1120,7 +1106,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -1129,9 +1115,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user where user.id = 5", - "Table": "user", + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user` where `user`.id = 5", + "Table": "`user`", "Values": [ 5 ], @@ -1162,7 +1148,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -1171,9 +1157,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col, user.id from user where 1 != 1", - "Query": "select user.col, user.id from user", - "Table": "user" + "FieldQuery": "select `user`.col, `user`.id from `user` where 1 != 1", + "Query": "select `user`.col, `user`.id from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1196,7 +1182,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "user_extra_user", + "TableName": "user_extra_`user`", "Inputs": [ { "OperatorType": "Route", @@ -1216,9 +1202,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user where user.id = :user_extra_col", - "Table": "user", + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user` where `user`.id = :user_extra_col", + "Table": "`user`", "Values": [ ":user_extra_col" ], @@ -1237,7 +1223,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "user_extra_user", + "TableName": "user_extra_`user`", "Inputs": [ { "OperatorType": "Route", @@ -1257,9 +1243,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user where user.`name` = :user_extra_user_id", - "Table": "user", + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user` where `user`.`name` = :user_extra_user_id", + "Table": "`user`", "Values": [ ":user_extra_user_id" ], @@ -1281,9 +1267,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user join ref where 1 != 1", - "Query": "select user.col from user join ref", - "Table": "user" + "FieldQuery": "select `user`.col from `user` join ref where 1 != 1", + "Query": "select `user`.col from `user` join ref", + "Table": "`user`" } } @@ -1332,9 +1318,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select ref.col from ref join user where 1 != 1", - "Query": "select ref.col from ref join user", - "Table": "user" + "FieldQuery": "select ref.col from ref join `user` where 1 != 1", + "Query": "select ref.col from ref join `user`", + "Table": "`user`" } } @@ -1351,9 +1337,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select ref.col from ref join (select aa from user where 1 != 1) as user where 1 != 1", - "Query": "select ref.col from ref join (select aa from user where user.id = 1) as user", - "Table": "user", + "FieldQuery": "select ref.col from ref join (select aa from `user` where 1 != 1) as `user` where 1 != 1", + "Query": "select ref.col from ref join (select aa from `user` where `user`.id = 1) as `user`", + "Table": "`user`", "Values": [ 1 ], @@ -1410,9 +1396,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from (select id, col from user where 1 != 1) as t where 1 != 1", - "Query": "select id from (select id, col from user where id = 5) as t", - "Table": "user", + "FieldQuery": "select id from (select id, col from `user` where 1 != 1) as t where 1 != 1", + "Query": "select id from (select id, col from `user` where id = 5) as t", + "Table": "`user`", "Values": [ 5 ], @@ -1432,9 +1418,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select t.id from (select id from user where 1 != 1) as t join user_extra on t.id = user_extra.user_id where 1 != 1", - "Query": "select t.id from (select id from user where id = 5) as t join user_extra on t.id = user_extra.user_id", - "Table": "user", + "FieldQuery": "select t.id from (select id from `user` where 1 != 1) as t join user_extra on t.id = user_extra.user_id where 1 != 1", + "Query": "select t.id from (select id from `user` where id = 5) as t join user_extra on t.id = user_extra.user_id", + "Table": "`user`", "Values": [ 5 ], @@ -1454,9 +1440,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select t.id from (select user.id from user where 1 != 1) as t join user_extra on t.id = user_extra.user_id where 1 != 1", - "Query": "select t.id from (select user.id from user where user.id = 5) as t join user_extra on t.id = user_extra.user_id", - "Table": "user", + "FieldQuery": "select t.id from (select `user`.id from `user` where 1 != 1) as t join user_extra on t.id = user_extra.user_id where 1 != 1", + "Query": "select t.id from (select `user`.id from `user` where `user`.id = 5) as t join user_extra on t.id = user_extra.user_id", + "Table": "`user`", "Values": [ 5 ], @@ -1480,8 +1466,8 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select t.id from user_extra join (select id from user where 1 != 1) as t on t.id = user_extra.user_id where 1 != 1", - "Query": "select t.id from user_extra join (select id from user where id = 5) as t on t.id = user_extra.user_id", + "FieldQuery": "select t.id from user_extra join (select id from `user` where 1 != 1) as t on t.id = user_extra.user_id where 1 != 1", + "Query": "select t.id from user_extra join (select id from `user` where id = 5) as t on t.id = user_extra.user_id", "Table": "user_extra" } } @@ -1495,7 +1481,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -1504,9 +1490,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select t.id from (select id from user where 1 != 1) as t where 1 != 1", - "Query": "select t.id from (select id from user where id = 5) as t", - "Table": "user", + "FieldQuery": "select t.id from (select id from `user` where 1 != 1) as t where 1 != 1", + "Query": "select t.id from (select id from `user` where id = 5) as t", + "Table": "`user`", "Values": [ 5 ], @@ -1539,9 +1525,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from (select id, col from user as route1 where 1 != 1) as t where 1 != 1", - "Query": "select id from (select id, col from user as route1 where id = 5) as t", - "Table": "user", + "FieldQuery": "select id from (select id, col from `user` as route1 where 1 != 1) as t where 1 != 1", + "Query": "select id from (select id, col from `user` as route1 where id = 5) as t", + "Table": "`user`", "Values": [ 5 ], @@ -1561,9 +1547,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from (select id, col from user as route1 where 1 != 1) as t where 1 != 1", - "Query": "select id from (select id, col from user as route1) as t where id = 5", - "Table": "user", + "FieldQuery": "select id from (select id, col from `user` as route1 where 1 != 1) as t where 1 != 1", + "Query": "select id from (select id, col from `user` as route1) as t where id = 5", + "Table": "`user`", "Values": [ 5 ], @@ -1583,9 +1569,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select u.col, e.col from (select col from user where 1 != 1) as u join (select col from user_extra where 1 != 1) as e where 1 != 1", - "Query": "select u.col, e.col from (select col from user where id = 5) as u join (select col from user_extra where user_id = 5) as e", - "Table": "user", + "FieldQuery": "select u.col, e.col from (select col from `user` where 1 != 1) as u join (select col from user_extra where 1 != 1) as e where 1 != 1", + "Query": "select u.col, e.col from (select col from `user` where id = 5) as u join (select col from user_extra where user_id = 5) as e", + "Table": "`user`", "Values": [ 5 ], @@ -1708,7 +1694,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_extra_unsharded", + "TableName": "`user`_user_extra_unsharded", "Inputs": [ { "OperatorType": "Subquery", @@ -1721,7 +1707,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -1730,9 +1716,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id, user.col1 from user where 1 != 1", - "Query": "select user.id, user.col1 from user", - "Table": "user" + "FieldQuery": "select `user`.id, `user`.col1 from `user` where 1 != 1", + "Query": "select `user`.id, `user`.col1 from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1779,7 +1765,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -1788,9 +1774,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id, user.col1, user.col from user where 1 != 1", - "Query": "select user.id, user.col1, user.col from user", - "Table": "user" + "FieldQuery": "select `user`.id, `user`.col1, `user`.col from `user` where 1 != 1", + "Query": "select `user`.id, `user`.col1, `user`.col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1818,7 +1804,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "unsharded_a_user_user_extra", + "TableName": "unsharded_a_`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -1841,7 +1827,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -1850,9 +1836,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id, user.col1 from user where 1 != 1", - "Query": "select user.id, user.col1 from user", - "Table": "user" + "FieldQuery": "select `user`.id, `user`.col1 from `user` where 1 != 1", + "Query": "select `user`.id, `user`.col1 from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1889,9 +1875,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1924,9 +1910,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1959,9 +1945,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1994,15 +1980,15 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user`", + "Table": "`user`" }, { "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "unsharded_user", + "TableName": "unsharded_`user`", "Inputs": [ { "OperatorType": "Route", @@ -2022,9 +2008,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user where 1 != 1", - "Query": "select 1 from user where :__sq_has_values1 = 1 and user.col in ::__sq1", - "Table": "user" + "FieldQuery": "select 1 from `user` where 1 != 1", + "Query": "select 1 from `user` where :__sq_has_values1 = 1 and `user`.col in ::__sq1", + "Table": "`user`" } ] } @@ -2042,7 +2028,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "LeftJoin", "JoinColumnIndexes": "-1", - "TableName": "unsharded_user", + "TableName": "unsharded_`user`", "Inputs": [ { "OperatorType": "Route", @@ -2066,9 +2052,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -2077,9 +2063,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user where 1 != 1", - "Query": "select 1 from user where :__sq_has_values1 = 1 and user.col in ::__sq1", - "Table": "user" + "FieldQuery": "select 1 from `user` where 1 != 1", + "Query": "select 1 from `user` where :__sq_has_values1 = 1 and `user`.col in ::__sq1", + "Table": "`user`" } ] } @@ -2097,7 +2083,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "unsharded_user_unsharded_a", + "TableName": "unsharded_`user`_unsharded_a", "Inputs": [ { "OperatorType": "Subquery", @@ -2110,15 +2096,15 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user`", + "Table": "`user`" }, { "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "unsharded_user", + "TableName": "unsharded_`user`", "Inputs": [ { "OperatorType": "Route", @@ -2138,9 +2124,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user where 1 != 1", - "Query": "select 1 from user where :__sq_has_values1 = 1 and user.col in ::__sq1", - "Table": "user" + "FieldQuery": "select 1 from `user` where 1 != 1", + "Query": "select 1 from `user` where :__sq_has_values1 = 1 and `user`.col in ::__sq1", + "Table": "`user`" } ] } @@ -2170,7 +2156,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1", - "TableName": "user_unsharded", + "TableName": "`user`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -2179,9 +2165,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col1, user.col2 from user where 1 != 1", - "Query": "select user.col1, user.col2 from user", - "Table": "user" + "FieldQuery": "select `user`.col1, `user`.col2 from `user` where 1 != 1", + "Query": "select `user`.col1, `user`.col2 from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -2228,9 +2214,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user join user_extra on user.ID = user_extra.User_Id where 1 != 1", - "Query": "select user.col from user join user_extra on user.ID = user_extra.User_Id", - "Table": "user" + "FieldQuery": "select `user`.col from `user` join user_extra on `user`.ID = user_extra.User_Id where 1 != 1", + "Query": "select `user`.col from `user` join user_extra on `user`.ID = user_extra.User_Id", + "Table": "`user`" } } @@ -2250,7 +2236,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -2259,9 +2245,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id from user where 1 != 1", - "Query": "select user.id from user", - "Table": "user" + "FieldQuery": "select `user`.id from `user` where 1 != 1", + "Query": "select `user`.id from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -2332,9 +2318,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select :__lastInsertId as `last_insert_id()` from user where 1 != 1", - "Query": "select :__lastInsertId as `last_insert_id()` from user", - "Table": "user" + "FieldQuery": "select :__lastInsertId as `last_insert_id()` from `user` where 1 != 1", + "Query": "select :__lastInsertId as `last_insert_id()` from `user`", + "Table": "`user`" } } Gen4 plan same as above @@ -2367,7 +2353,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -2376,9 +2362,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id from user where 1 != 1", - "Query": "select user.id from user", - "Table": "user" + "FieldQuery": "select `user`.id from `user` where 1 != 1", + "Query": "select `user`.id from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -2401,7 +2387,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "user_extra_user", + "TableName": "user_extra_`user`", "Inputs": [ { "OperatorType": "Route", @@ -2421,9 +2407,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id from user where 1 != 1", - "Query": "select user.id from user where user.id = :user_extra_id", - "Table": "user", + "FieldQuery": "select `user`.id from `user` where 1 != 1", + "Query": "select `user`.id from `user` where `user`.id = :user_extra_id", + "Table": "`user`", "Values": [ ":user_extra_id" ], @@ -2453,11 +2439,11 @@ Gen4 plan same as above # duplicate symbols "select user.id from user join user" -"duplicate symbol: user" +"duplicate symbol: `user`" # duplicate symbols for merging routes "select user.id from user join user_extra user on user.id = user.user_id" -"duplicate symbol: user" +"duplicate symbol: `user`" # non-existent table "select c from t" diff --git a/go/vt/vtgate/planbuilder/testdata/large_cases.txt b/go/vt/vtgate/planbuilder/testdata/large_cases.txt index 064a60a4792..6db381e46c6 100644 --- a/go/vt/vtgate/planbuilder/testdata/large_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/large_cases.txt @@ -6,7 +6,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_extra_user_metadata_music_unsharded_unsharded_a_unsharded_b_unsharded_auto_music_extra", + "TableName": "`user`_user_extra_user_metadata_music_unsharded_unsharded_a_unsharded_b_unsharded_auto_music_extra", "Inputs": [ { "OperatorType": "Route", @@ -15,9 +15,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id from user where 1 != 1", - "Query": "select user.id from user", - "Table": "user" + "FieldQuery": "select `user`.id from `user` where 1 != 1", + "Query": "select `user`.id from `user`", + "Table": "`user`" }, { "OperatorType": "Join", @@ -178,7 +178,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "music, music_extra_user, user_extra, user_metadata_unsharded, unsharded_a, unsharded_auto, unsharded_b", + "TableName": "music, music_extra_`user`, user_extra, user_metadata_unsharded, unsharded_a, unsharded_auto, unsharded_b", "Inputs": [ { "OperatorType": "Route", @@ -195,7 +195,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user, user_extra, user_metadata_unsharded, unsharded_a, unsharded_auto, unsharded_b", + "TableName": "`user`, user_extra, user_metadata_unsharded, unsharded_a, unsharded_auto, unsharded_b", "Inputs": [ { "OperatorType": "Route", @@ -204,9 +204,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id from user, user_extra, user_metadata where 1 != 1", - "Query": "select user.id from user, user_extra, user_metadata where user.id = user_extra.user_id and user_metadata.user_id = user_extra.user_id", - "Table": "user, user_extra, user_metadata" + "FieldQuery": "select `user`.id from `user`, user_extra, user_metadata where 1 != 1", + "Query": "select `user`.id from `user`, user_extra, user_metadata where `user`.id = user_extra.user_id and user_metadata.user_id = user_extra.user_id", + "Table": "`user`, user_extra, user_metadata" }, { "OperatorType": "Route", diff --git a/go/vt/vtgate/planbuilder/testdata/memory_sort_cases.txt b/go/vt/vtgate/planbuilder/testdata/memory_sort_cases.txt index 1db6f534f56..cb743923963 100644 --- a/go/vt/vtgate/planbuilder/testdata/memory_sort_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/memory_sort_cases.txt @@ -23,10 +23,10 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select a, b, count(*) from user where 1 != 1 group by a", + "FieldQuery": "select a, b, count(*) from `user` where 1 != 1 group by a", "OrderBy": "0 ASC", - "Query": "select a, b, count(*) from user group by a order by a asc", - "Table": "user" + "Query": "select a, b, count(*) from `user` group by a order by a asc", + "Table": "`user`" } ] } @@ -58,10 +58,10 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select a, b, count(*) as k from user where 1 != 1 group by a", + "FieldQuery": "select a, b, count(*) as k from `user` where 1 != 1 group by a", "OrderBy": "0 ASC", - "Query": "select a, b, count(*) as k from user group by a order by a asc", - "Table": "user" + "Query": "select a, b, count(*) as k from `user` group by a order by a asc", + "Table": "`user`" } ] } @@ -93,10 +93,10 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select a, b, count(*) as k from user where 1 != 1 group by a", + "FieldQuery": "select a, b, count(*) as k from `user` where 1 != 1 group by a", "OrderBy": "0 ASC", - "Query": "select a, b, count(*) as k from user group by a order by a asc", - "Table": "user" + "Query": "select a, b, count(*) as k from `user` group by a order by a asc", + "Table": "`user`" } ] } @@ -132,10 +132,10 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select a, b, count(*) as k from user where 1 != 1 group by a", + "FieldQuery": "select a, b, count(*) as k from `user` where 1 != 1 group by a", "OrderBy": "0 ASC", - "Query": "select a, b, count(*) as k from user group by a order by a asc", - "Table": "user" + "Query": "select a, b, count(*) as k from `user` group by a order by a asc", + "Table": "`user`" } ] } @@ -169,10 +169,10 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select a, b, count(*) as k from user where 1 != 1 group by a", + "FieldQuery": "select a, b, count(*) as k from `user` where 1 != 1 group by a", "OrderBy": "0 ASC", - "Query": "select a, b, count(*) as k from user group by a order by 1 asc", - "Table": "user" + "Query": "select a, b, count(*) as k from `user` group by a order by 1 asc", + "Table": "`user`" } ] } @@ -205,10 +205,10 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select textcol1 as t, count(*) as k, weight_string(textcol1) from user where 1 != 1 group by textcol1", + "FieldQuery": "select textcol1 as t, count(*) as k, weight_string(textcol1) from `user` where 1 != 1 group by textcol1", "OrderBy": "2 ASC, 2 ASC", - "Query": "select textcol1 as t, count(*) as k, weight_string(textcol1) from user group by textcol1 order by textcol1 asc, textcol1 asc", - "Table": "user" + "Query": "select textcol1 as t, count(*) as k, weight_string(textcol1) from `user` group by textcol1 order by textcol1 asc, textcol1 asc", + "Table": "`user`" } ] } @@ -236,7 +236,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -245,9 +245,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id, user.col from user where 1 != 1", - "Query": "select user.id, user.col from user", - "Table": "user" + "FieldQuery": "select `user`.id, `user`.col from `user` where 1 != 1", + "Query": "select `user`.id, `user`.col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -282,7 +282,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2,1", - "TableName": "user_music", + "TableName": "`user`_music", "Inputs": [ { "OperatorType": "Route", @@ -291,9 +291,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col1 as a, user.col2 as b, user.id from user where 1 != 1", - "Query": "select user.col1 as a, user.col2 as b, user.id from user where user.id = 1", - "Table": "user", + "FieldQuery": "select `user`.col1 as a, `user`.col2 as b, `user`.id from `user` where 1 != 1", + "Query": "select `user`.col1 as a, `user`.col2 as b, `user`.id from `user` where `user`.id = 1", + "Table": "`user`", "Values": [ 1 ], @@ -334,7 +334,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2,1", - "TableName": "user_music", + "TableName": "`user`_music", "Inputs": [ { "OperatorType": "Route", @@ -343,9 +343,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col1 as a, user.col2, user.id from user where 1 != 1", - "Query": "select user.col1 as a, user.col2, user.id from user where user.id = 1", - "Table": "user", + "FieldQuery": "select `user`.col1 as a, `user`.col2, `user`.id from `user` where 1 != 1", + "Query": "select `user`.col1 as a, `user`.col2, `user`.id from `user` where `user`.id = 1", + "Table": "`user`", "Values": [ 1 ], @@ -386,7 +386,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2,1,-3", - "TableName": "user_unsharded", + "TableName": "`user`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -395,9 +395,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select u.a, u.textcol1, weight_string(u.textcol1) from user as u where 1 != 1", - "Query": "select u.a, u.textcol1, weight_string(u.textcol1) from user as u", - "Table": "user" + "FieldQuery": "select u.a, u.textcol1, weight_string(u.textcol1) from `user` as u where 1 != 1", + "Query": "select u.a, u.textcol1, weight_string(u.textcol1) from `user` as u", + "Table": "`user`" }, { "OperatorType": "Route", @@ -430,7 +430,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1,2,-1,3", - "TableName": "unsharded_user", + "TableName": "unsharded_`user`", "Inputs": [ { "OperatorType": "Route", @@ -450,9 +450,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select u.a, u.textcol1, weight_string(u.textcol1) from user as u where 1 != 1", - "Query": "select u.a, u.textcol1, weight_string(u.textcol1) from user as u", - "Table": "user" + "FieldQuery": "select u.a, u.textcol1, weight_string(u.textcol1) from `user` as u where 1 != 1", + "Query": "select u.a, u.textcol1, weight_string(u.textcol1) from `user` as u", + "Table": "`user`" } ] } @@ -504,10 +504,10 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select a from user where 1 != 1", + "FieldQuery": "select a from `user` where 1 != 1", "OrderBy": "0 DESC", - "Query": "select a from user order by binary a desc", - "Table": "user" + "Query": "select a from `user` order by binary a desc", + "Table": "`user`" } } @@ -520,7 +520,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_music", + "TableName": "`user`_music", "Inputs": [ { "OperatorType": "Route", @@ -529,10 +529,10 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select u.a from user as u where 1 != 1", + "FieldQuery": "select u.a from `user` as u where 1 != 1", "OrderBy": "0 DESC", - "Query": "select u.a from user as u order by binary a desc", - "Table": "user" + "Query": "select u.a from `user` as u order by binary a desc", + "Table": "`user`" }, { "OperatorType": "Route", diff --git a/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt b/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt index 0d52d47f4e8..3f537118c0e 100644 --- a/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt @@ -11,7 +11,7 @@ }, "TargetDestination": "AnyShard()", "IsDML": false, - "Query": "explain select * from user", + "Query": "explain select * from `user`", "SingleShardOnly": true } } diff --git a/go/vt/vtgate/planbuilder/testdata/postprocess_cases.txt b/go/vt/vtgate/planbuilder/testdata/postprocess_cases.txt index 901b68b2b88..3fd2d164f23 100644 --- a/go/vt/vtgate/planbuilder/testdata/postprocess_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/postprocess_cases.txt @@ -10,9 +10,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col1 from user where 1 != 1", - "Query": "select user.col1 from user having col2 = 2", - "Table": "user" + "FieldQuery": "select `user`.col1 from `user` where 1 != 1", + "Query": "select `user`.col1 from `user` having col2 = 2", + "Table": "`user`" } } @@ -29,7 +29,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -38,9 +38,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col1 from user where 1 != 1", - "Query": "select user.col1 from user", - "Table": "user" + "FieldQuery": "select `user`.col1 from `user` where 1 != 1", + "Query": "select `user`.col1 from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -66,7 +66,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2,1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -75,9 +75,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col1 as a, user.col2 from user where 1 != 1", - "Query": "select user.col1 as a, user.col2 from user having 1 = 1 and a = 1 and a = user.col2", - "Table": "user" + "FieldQuery": "select `user`.col1 as a, `user`.col2 from `user` where 1 != 1", + "Query": "select `user`.col1 as a, `user`.col2 from `user` having 1 = 1 and a = 1 and a = `user`.col2", + "Table": "`user`" }, { "OperatorType": "Route", @@ -110,9 +110,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -121,9 +121,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user having :__sq_has_values1 = 1 and id in ::__vals", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` having :__sq_has_values1 = 1 and id in ::__vals", + "Table": "`user`", "Values": [ "::__sq1" ], @@ -145,9 +145,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user where id = 5 order by aa asc", - "Table": "user", + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user` where id = 5 order by aa asc", + "Table": "`user`", "Values": [ 5 ], @@ -168,9 +168,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user where id = 1 order by 1 asc", - "Table": "user", + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user` where id = 1 order by 1 asc", + "Table": "`user`", "Values": [ 1 ], @@ -191,10 +191,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", + "FieldQuery": "select col from `user` where 1 != 1", "OrderBy": "0 ASC", - "Query": "select col from user order by col asc", - "Table": "user" + "Query": "select col from `user` order by col asc", + "Table": "`user`" } } @@ -248,10 +248,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select a, textcol1, b, weight_string(textcol1) from user where 1 != 1", + "FieldQuery": "select a, textcol1, b, weight_string(textcol1) from `user` where 1 != 1", "OrderBy": "0 ASC, 3 ASC, 2 ASC", - "Query": "select a, textcol1, b, weight_string(textcol1) from user order by a asc, textcol1 asc, b asc", - "Table": "user" + "Query": "select a, textcol1, b, weight_string(textcol1) from `user` order by a asc, textcol1 asc, b asc", + "Table": "`user`" } } @@ -267,10 +267,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select a, user.textcol1, b, weight_string(user.textcol1) from user where 1 != 1", + "FieldQuery": "select a, `user`.textcol1, b, weight_string(`user`.textcol1) from `user` where 1 != 1", "OrderBy": "0 ASC, 3 ASC, 2 ASC", - "Query": "select a, user.textcol1, b, weight_string(user.textcol1) from user order by a asc, textcol1 asc, b asc", - "Table": "user" + "Query": "select a, `user`.textcol1, b, weight_string(`user`.textcol1) from `user` order by a asc, textcol1 asc, b asc", + "Table": "`user`" } } @@ -286,10 +286,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select a, textcol1, b, textcol2, weight_string(textcol1), weight_string(textcol2) from user where 1 != 1", + "FieldQuery": "select a, textcol1, b, textcol2, weight_string(textcol1), weight_string(textcol2) from `user` where 1 != 1", "OrderBy": "0 ASC, 4 ASC, 2 ASC, 5 ASC", - "Query": "select a, textcol1, b, textcol2, weight_string(textcol1), weight_string(textcol2) from user order by a asc, textcol1 asc, b asc, textcol2 asc", - "Table": "user" + "Query": "select a, textcol1, b, textcol2, weight_string(textcol1), weight_string(textcol2) from `user` order by a asc, textcol1 asc, b asc, textcol2 asc", + "Table": "`user`" } } @@ -309,9 +309,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user order by null", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user` order by null", + "Table": "`user`" } } Gen4 plan same as above @@ -332,9 +332,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col2 from user where 1 != 1", - "Query": "select col2 from user", - "Table": "user" + "FieldQuery": "select col2 from `user` where 1 != 1", + "Query": "select col2 from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -343,10 +343,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", + "FieldQuery": "select col from `user` where 1 != 1", "OrderBy": "0 ASC", - "Query": "select col from user where :__sq_has_values1 = 1 and col in ::__sq1 order by col asc", - "Table": "user" + "Query": "select col from `user` where :__sq_has_values1 = 1 and col in ::__sq1 order by col asc", + "Table": "`user`" } ] } @@ -361,7 +361,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2,1", - "TableName": "user_music", + "TableName": "`user`_music", "Inputs": [ { "OperatorType": "Route", @@ -370,9 +370,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col1 as a, user.col2, user.id from user where 1 != 1", - "Query": "select user.col1 as a, user.col2, user.id from user where user.id = 1 order by null", - "Table": "user", + "FieldQuery": "select `user`.col1 as a, `user`.col2, `user`.id from `user` where 1 != 1", + "Query": "select `user`.col1 as a, `user`.col2, `user`.id from `user` where `user`.id = 1 order by null", + "Table": "`user`", "Values": [ 1 ], @@ -406,7 +406,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2,1", - "TableName": "user_music", + "TableName": "`user`_music", "Inputs": [ { "OperatorType": "Route", @@ -415,9 +415,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col1 as a, user.col2, user.id from user where 1 != 1", - "Query": "select user.col1 as a, user.col2, user.id from user where user.id = 1 order by a asc", - "Table": "user", + "FieldQuery": "select `user`.col1 as a, `user`.col2, `user`.id from `user` where 1 != 1", + "Query": "select `user`.col1 as a, `user`.col2, `user`.id from `user` where `user`.id = 1 order by a asc", + "Table": "`user`", "Values": [ 1 ], @@ -451,7 +451,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2,1", - "TableName": "user_music", + "TableName": "`user`_music", "Inputs": [ { "OperatorType": "Route", @@ -460,9 +460,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col1 as a, user.col2, user.id from user where 1 != 1", - "Query": "select user.col1 as a, user.col2, user.id from user where user.id = 1 order by a asc", - "Table": "user", + "FieldQuery": "select `user`.col1 as a, `user`.col2, `user`.id from `user` where 1 != 1", + "Query": "select `user`.col1 as a, `user`.col2, `user`.id from `user` where `user`.id = 1 order by a asc", + "Table": "`user`", "Values": [ 1 ], @@ -503,9 +503,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col2 from user where 1 != 1", - "Query": "select col2 from user", - "Table": "user" + "FieldQuery": "select col2 from `user` where 1 != 1", + "Query": "select col2 from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -514,9 +514,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user where :__sq_has_values1 = 1 and col in ::__sq1 order by null", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user` where :__sq_has_values1 = 1 and col in ::__sq1 order by null", + "Table": "`user`" } ] } @@ -534,9 +534,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user order by RAND()", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user` order by RAND()", + "Table": "`user`" } } Gen4 plan same as above @@ -550,7 +550,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2,1", - "TableName": "user_music", + "TableName": "`user`_music", "Inputs": [ { "OperatorType": "Route", @@ -559,9 +559,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col1 as a, user.col2, user.id from user where 1 != 1", - "Query": "select user.col1 as a, user.col2, user.id from user where user.id = 1 order by RAND()", - "Table": "user", + "FieldQuery": "select `user`.col1 as a, `user`.col2, `user`.id from `user` where 1 != 1", + "Query": "select `user`.col1 as a, `user`.col2, `user`.id from `user` where `user`.id = 1 order by RAND()", + "Table": "`user`", "Values": [ 1 ], @@ -602,9 +602,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col2 from user where 1 != 1", - "Query": "select col2 from user", - "Table": "user" + "FieldQuery": "select col2 from `user` where 1 != 1", + "Query": "select col2 from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -613,9 +613,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user where :__sq_has_values1 = 1 and col in ::__sq1 order by rand()", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user` where :__sq_has_values1 = 1 and col in ::__sq1 order by rand()", + "Table": "`user`" } ] } @@ -633,9 +633,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user where id = 5 order by col asc", - "Table": "user", + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id = 5 order by col asc", + "Table": "`user`", "Values": [ 5 ], @@ -656,9 +656,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.* from user where 1 != 1", - "Query": "select user.* from user where id = 5 order by user.col asc", - "Table": "user", + "FieldQuery": "select `user`.* from `user` where 1 != 1", + "Query": "select `user`.* from `user` where id = 5 order by `user`.col asc", + "Table": "`user`", "Values": [ 5 ], @@ -679,9 +679,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user where id = 5 order by user.col asc", - "Table": "user", + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id = 5 order by `user`.col asc", + "Table": "`user`", "Values": [ 5 ], @@ -699,7 +699,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -708,9 +708,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select u.id, u.col from user as u where 1 != 1", - "Query": "select u.id, u.col from user as u where u.col in (select * from user where user.id = u.id order by col asc)", - "Table": "user" + "FieldQuery": "select u.id, u.col from `user` as u where 1 != 1", + "Query": "select u.id, u.col from `user` as u where u.col in (select * from `user` where `user`.id = u.id order by col asc)", + "Table": "`user`" }, { "OperatorType": "Route", @@ -755,9 +755,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user where id = 5 order by user.col collate utf8_general_ci asc", - "Table": "user", + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id = 5 order by `user`.col collate utf8_general_ci asc", + "Table": "`user`", "Values": [ 5 ], @@ -778,9 +778,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user where id = 5 order by -col1 asc", - "Table": "user", + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id = 5 order by -col1 asc", + "Table": "`user`", "Values": [ 5 ], @@ -801,9 +801,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user where id = 5 order by concat(col, col1) collate utf8_general_ci desc", - "Table": "user", + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id = 5 order by concat(col, col1) collate utf8_general_ci desc", + "Table": "`user`", "Values": [ 5 ], @@ -824,9 +824,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user where id = 5 order by id + col collate utf8_general_ci desc", - "Table": "user", + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id = 5 order by id + col collate utf8_general_ci desc", + "Table": "`user`", "Values": [ 5 ], @@ -847,9 +847,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user as u join (select user_id from user_extra where 1 != 1) as eu on u.id = eu.user_id where 1 != 1", - "Query": "select * from user as u join (select user_id from user_extra where user_id = 5) as eu on u.id = eu.user_id where u.id = 5 order by eu.user_id asc", - "Table": "user", + "FieldQuery": "select * from `user` as u join (select user_id from user_extra where 1 != 1) as eu on u.id = eu.user_id where 1 != 1", + "Query": "select * from `user` as u join (select user_id from user_extra where user_id = 5) as eu on u.id = eu.user_id where u.id = 5 order by eu.user_id asc", + "Table": "`user`", "Values": [ 5 ], @@ -869,9 +869,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user as route1 where 1 != 1", - "Query": "select col from user as route1 where id = 1 order by col asc", - "Table": "user", + "FieldQuery": "select col from `user` as route1 where 1 != 1", + "Query": "select col from `user` as route1 where id = 1 order by col asc", + "Table": "`user`", "Values": [ 1 ], @@ -891,9 +891,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col1 from user where 1 != 1", - "Query": "select col1 from user where id = 1 limit 1", - "Table": "user", + "FieldQuery": "select col1 from `user` where 1 != 1", + "Query": "select col1 from `user` where id = 1 limit 1", + "Table": "`user`", "Values": [ 1 ], @@ -916,7 +916,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -925,9 +925,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user", - "Table": "user" + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -962,9 +962,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user limit :__upper_limit", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user` limit :__upper_limit", + "Table": "`user`" } ] } @@ -987,9 +987,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user limit :__upper_limit", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user` limit :__upper_limit", + "Table": "`user`" } ] } @@ -1012,9 +1012,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user where id1 = 4 and name1 = 'abc' limit :__upper_limit", - "Table": "user" + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id1 = 4 and name1 = 'abc' limit :__upper_limit", + "Table": "`user`" } ] } @@ -1041,9 +1041,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col1 from user where 1 != 1", - "Query": "select col1 from user", - "Table": "user" + "FieldQuery": "select col1 from `user` where 1 != 1", + "Query": "select col1 from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1052,9 +1052,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user where :__sq_has_values1 = 1 and col in ::__sq1 limit :__upper_limit", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user` where :__sq_has_values1 = 1 and col in ::__sq1 limit :__upper_limit", + "Table": "`user`" } ] } diff --git a/go/vt/vtgate/planbuilder/testdata/select_cases.txt b/go/vt/vtgate/planbuilder/testdata/select_cases.txt index 42ef6bf233f..7729510f6d0 100644 --- a/go/vt/vtgate/planbuilder/testdata/select_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/select_cases.txt @@ -10,9 +10,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user where 1 != 1", - "Query": "select 1 from user", - "Table": "user" + "FieldQuery": "select 1 from `user` where 1 != 1", + "Query": "select 1 from `user`", + "Table": "`user`" } } Gen4 plan same as above @@ -29,9 +29,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.* from user where 1 != 1", - "Query": "select user.* from user", - "Table": "user" + "FieldQuery": "select `user`.* from `user` where 1 != 1", + "Query": "select `user`.* from `user`", + "Table": "`user`" } } Gen4 plan same as above @@ -48,9 +48,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user", - "Table": "user" + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user`", + "Table": "`user`" } } Gen4 plan same as above @@ -67,9 +67,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from user", - "Table": "user" + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from `user`", + "Table": "`user`" } } Gen4 plan same as above @@ -92,9 +92,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select count(*) from user where 1 != 1", - "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ count(*) from user", - "Table": "user" + "FieldQuery": "select count(*) from `user` where 1 != 1", + "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ count(*) from `user`", + "Table": "`user`" } ] } @@ -116,9 +116,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from user limit :__upper_limit", - "Table": "user" + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from `user` limit :__upper_limit", + "Table": "`user`" } ] } @@ -137,9 +137,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ * from user", - "Table": "user" + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ * from `user`", + "Table": "`user`" } } Gen4 plan same as above @@ -162,9 +162,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select count(*) from user where 1 != 1", - "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ count(*) from user", - "Table": "user" + "FieldQuery": "select count(*) from `user` where 1 != 1", + "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ count(*) from `user`", + "Table": "`user`" } ] } @@ -188,9 +188,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select count(*) from user where 1 != 1", - "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ count(*) from user", - "Table": "user" + "FieldQuery": "select count(*) from `user` where 1 != 1", + "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ count(*) from `user`", + "Table": "`user`" } ] } @@ -212,9 +212,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ * from user limit :__upper_limit", - "Table": "user" + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ * from `user` limit :__upper_limit", + "Table": "`user`" } ] } @@ -233,9 +233,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.* from user where 1 != 1", - "Query": "select user.* from user", - "Table": "user" + "FieldQuery": "select `user`.* from `user` where 1 != 1", + "Query": "select `user`.* from `user`", + "Table": "`user`" } } Gen4 plan same as above @@ -252,9 +252,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.* from user where 1 != 1", - "Query": "select user.* from user", - "Table": "user" + "FieldQuery": "select `user`.* from `user` where 1 != 1", + "Query": "select `user`.* from `user`", + "Table": "`user`" } } @@ -328,8 +328,8 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from authoritative join user on authoritative.user_id = user.id where 1 != 1", - "Query": "select * from authoritative join user on authoritative.user_id = user.id", + "FieldQuery": "select * from authoritative join `user` on authoritative.user_id = `user`.id where 1 != 1", + "Query": "select * from authoritative join `user` on authoritative.user_id = `user`.id", "Table": "authoritative" } } @@ -346,8 +346,8 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id, a.user_id, a.col1, a.col2, user.col1 from authoritative as a join user on a.user_id = user.id where 1 != 1", - "Query": "select user.id, a.user_id, a.col1, a.col2, user.col1 from authoritative as a join user on a.user_id = user.id", + "FieldQuery": "select `user`.id, a.user_id, a.col1, a.col2, `user`.col1 from authoritative as a join `user` on a.user_id = `user`.id where 1 != 1", + "Query": "select `user`.id, a.user_id, a.col1, a.col2, `user`.col1 from authoritative as a join `user` on a.user_id = `user`.id", "Table": "authoritative" } } @@ -364,9 +364,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user join user_extra on user.id = user_extra.user_id where 1 != 1", - "Query": "select col from user join user_extra on user.id = user_extra.user_id", - "Table": "user" + "FieldQuery": "select col from `user` join user_extra on `user`.id = user_extra.user_id where 1 != 1", + "Query": "select col from `user` join user_extra on `user`.id = user_extra.user_id", + "Table": "`user`" } } @@ -383,7 +383,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -392,9 +392,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -524,7 +524,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -533,9 +533,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user where 1 != 1", - "Query": "select 1 from user", - "Table": "user" + "FieldQuery": "select 1 from `user` where 1 != 1", + "Query": "select 1 from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -562,7 +562,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -571,9 +571,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user", - "Table": "user" + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -600,7 +600,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -609,9 +609,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user", - "Table": "user" + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -638,7 +638,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1,-2", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -647,9 +647,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col, user.col2 from user where 1 != 1", - "Query": "select user.col, user.col2 from user", - "Table": "user" + "FieldQuery": "select `user`.col, `user`.col2 from `user` where 1 != 1", + "Query": "select `user`.col, `user`.col2 from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -676,7 +676,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -685,9 +685,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select /* comment */ user.col from user", - "Table": "user" + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select /* comment */ `user`.col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -713,7 +713,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -722,9 +722,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.col from user where 1 != 1", - "Query": "select user.col from user for update", - "Table": "user" + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select `user`.col from `user` for update", + "Table": "`user`" }, { "OperatorType": "Route", @@ -750,7 +750,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1", - "TableName": "user_unsharded", + "TableName": "`user`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -759,9 +759,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id from user where 1 != 1", - "Query": "select user.id from user", - "Table": "user" + "FieldQuery": "select `user`.id from `user` where 1 != 1", + "Query": "select `user`.id from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -787,7 +787,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -796,9 +796,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.Col from user where 1 != 1", - "Query": "select user.Col from user", - "Table": "user" + "FieldQuery": "select `user`.Col from `user` where 1 != 1", + "Query": "select `user`.Col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -833,9 +833,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user where id = 0x04", - "Table": "user" + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id = 0x04", + "Table": "`user`" } } Gen4 plan same as above @@ -878,9 +878,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user where `name` = 'abc' and id = 4 limit 5", - "Table": "user", + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where `name` = 'abc' and id = 4 limit 5", + "Table": "`user`", "Values": [ 4 ], @@ -901,9 +901,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user where id = 4 and `name` = 'abc' limit 5", - "Table": "user", + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id = 4 and `name` = 'abc' limit 5", + "Table": "`user`", "Values": [ 4 ], @@ -924,9 +924,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user where id = 4 and `name` = 'abc' limit 5", - "Table": "user", + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id = 4 and `name` = 'abc' limit 5", + "Table": "`user`", "Values": [ 4 ], @@ -947,9 +947,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user0_.col as col0_ from user as user0_ where 1 != 1", - "Query": "select user0_.col as col0_ from user as user0_ where id = 1 order by user0_.col desc limit 2", - "Table": "user", + "FieldQuery": "select user0_.col as col0_ from `user` as user0_ where 1 != 1", + "Query": "select user0_.col as col0_ from `user` as user0_ where id = 1 order by user0_.col desc limit 2", + "Table": "`user`", "Values": [ 1 ], @@ -970,9 +970,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user0_.col as col0_ from user as user0_ where 1 != 1", - "Query": "select user0_.col as col0_ from user as user0_ where id = 1 order by col0_ desc limit 3", - "Table": "user", + "FieldQuery": "select user0_.col as col0_ from `user` as user0_ where 1 != 1", + "Query": "select user0_.col as col0_ from `user` as user0_ where id = 1 order by col0_ desc limit 3", + "Table": "`user`", "Values": [ 1 ], @@ -993,9 +993,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user where id = 1 and `name` = true limit 5", - "Table": "user", + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id = 1 and `name` = true limit 5", + "Table": "`user`", "Values": [ 1 ], @@ -1016,9 +1016,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user where id = 1 and `name` limit 5", - "Table": "user", + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id = 1 and `name` limit 5", + "Table": "`user`", "Values": [ 1 ], @@ -1039,9 +1039,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user where id = 5 and `name` = true limit 5", - "Table": "user", + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id = 5 and `name` = true limit 5", + "Table": "`user`", "Values": [ 5 ], @@ -1066,9 +1066,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1101,9 +1101,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1136,7 +1136,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -1145,9 +1145,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id as id1 from user where 1 != 1", - "Query": "select user.id as id1 from user", - "Table": "user" + "FieldQuery": "select `user`.id as id1 from `user` where 1 != 1", + "Query": "select `user`.id as id1 from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -1204,8 +1204,8 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from music where 1 != 1 union select * from user where 1 != 1", - "Query": "select * from music where user_id = 1 union select * from user where id = 1", + "FieldQuery": "select * from music where 1 != 1 union select * from `user` where 1 != 1", + "Query": "select * from music where user_id = 1 union select * from `user` where id = 1", "Table": "music", "Values": [ 1 @@ -1227,8 +1227,8 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select *, :__lastInsertId as `last_insert_id()` from music where 1 != 1 union select * from user where 1 != 1", - "Query": "select *, :__lastInsertId as `last_insert_id()` from music where user_id = 1 union select * from user where id = 1", + "FieldQuery": "select *, :__lastInsertId as `last_insert_id()` from music where 1 != 1 union select * from `user` where 1 != 1", + "Query": "select *, :__lastInsertId as `last_insert_id()` from music where user_id = 1 union select * from `user` where id = 1", "Table": "music", "Values": [ 1 @@ -1667,7 +1667,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -1676,9 +1676,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.a from user where 1 != 1", - "Query": "select user.a from user", - "Table": "user" + "FieldQuery": "select `user`.a from `user` where 1 != 1", + "Query": "select `user`.a from `user`", + "Table": "`user`" }, { "OperatorType": "Route", diff --git a/go/vt/vtgate/planbuilder/testdata/show_cases.txt b/go/vt/vtgate/planbuilder/testdata/show_cases.txt index 77f8a2b566e..a6f48c05405 100644 --- a/go/vt/vtgate/planbuilder/testdata/show_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/show_cases.txt @@ -243,3 +243,20 @@ "OperatorType": "Rows" } } + +# show create database +"show create database user" +{ + "QueryType": "SHOW", + "Original": "show create database user", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "IsDML": false, + "Query": "show create database `user`", + "SingleShardOnly": true + } +} diff --git a/go/vt/vtgate/planbuilder/testdata/show_cases_no_default_keyspace.txt b/go/vt/vtgate/planbuilder/testdata/show_cases_no_default_keyspace.txt index 899c530bacf..7e5971147a5 100644 --- a/go/vt/vtgate/planbuilder/testdata/show_cases_no_default_keyspace.txt +++ b/go/vt/vtgate/planbuilder/testdata/show_cases_no_default_keyspace.txt @@ -29,7 +29,7 @@ }, "TargetDestination": "AnyShard()", "IsDML": false, - "Query": "show full columns from user", + "Query": "show full columns from `user`", "SingleShardOnly": true } } diff --git a/go/vt/vtgate/planbuilder/testdata/symtab_cases.txt b/go/vt/vtgate/planbuilder/testdata/symtab_cases.txt index 7b07e057f64..24811cbc907 100644 --- a/go/vt/vtgate/planbuilder/testdata/symtab_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/symtab_cases.txt @@ -9,7 +9,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1", - "TableName": "user_unsharded", + "TableName": "`user`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -18,9 +18,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select predef2 from user where 1 != 1", - "Query": "select predef2 from user", - "Table": "user" + "FieldQuery": "select predef2 from `user` where 1 != 1", + "Query": "select predef2 from `user`", + "Table": "`user`" }, { "OperatorType": "Route", diff --git a/go/vt/vtgate/planbuilder/testdata/union_cases.txt b/go/vt/vtgate/planbuilder/testdata/union_cases.txt index 49fe6182ac2..bc82ca929f4 100644 --- a/go/vt/vtgate/planbuilder/testdata/union_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/union_cases.txt @@ -10,12 +10,26 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1 union all select id from music where 1 != 1", - "Query": "select id from user union all select id from music", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1 union all select id from music where 1 != 1", + "Query": "select id from `user` union all select id from music", + "Table": "`user`" + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user union all select id from music", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1 union all select id from music where 1 != 1", + "Query": "select id from `user` union all select id from music", + "Table": "`user`" } } -Gen4 plan same as above # union distinct between two scatter selects "select id from user union select id from music" @@ -35,9 +49,45 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user`", + "Table": "`user`" + }, + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from music where 1 != 1", + "Query": "select id from music", + "Table": "music" + } + ] + } + ] + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user union select id from music", + "Instructions": { + "OperatorType": "Distinct", + "Inputs": [ + { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -55,7 +105,6 @@ Gen4 plan same as above ] } } -Gen4 plan same as above # union all between two SelectEqualUnique "select id from user where id = 1 union all select id from user where id = 5" @@ -72,9 +121,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where id = 1", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where id = 1", + "Table": "`user`", "Values": [ 1 ], @@ -87,9 +136,48 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user where id = 5", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where id = 5", + "Table": "`user`", + "Values": [ + 5 + ], + "Vindex": "user_index" + } + ] + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user where id = 1 union all select id from user where id = 5", + "Instructions": { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectEqualUnique", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where id = 1", + "Table": "`user`", + "Values": [ + 1 + ], + "Vindex": "user_index" + }, + { + "OperatorType": "Route", + "Variant": "SelectEqualUnique", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user` where id = 5", + "Table": "`user`", "Values": [ 5 ], @@ -98,7 +186,6 @@ Gen4 plan same as above ] } } -Gen4 plan same as above #almost dereks query - two queries with order by and limit being scattered to two different sets of tablets "(SELECT id FROM user ORDER BY id DESC LIMIT 1) UNION ALL (SELECT id FROM music ORDER BY id DESC LIMIT 1)" @@ -119,10 +206,55 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", + "FieldQuery": "select id from `user` where 1 != 1", "OrderBy": "0 DESC", - "Query": "select id from user order by id desc limit :__upper_limit", - "Table": "user" + "Query": "select id from `user` order by id desc limit :__upper_limit", + "Table": "`user`" + } + ] + }, + { + "OperatorType": "Limit", + "Count": 1, + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from music where 1 != 1", + "OrderBy": "0 DESC", + "Query": "select id from music order by id desc limit :__upper_limit", + "Table": "music" + } + ] + } + ] + } +} +{ + "QueryType": "SELECT", + "Original": "(SELECT id FROM user ORDER BY id DESC LIMIT 1) UNION ALL (SELECT id FROM music ORDER BY id DESC LIMIT 1)", + "Instructions": { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Limit", + "Count": 1, + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "OrderBy": "0 DESC", + "Query": "select id from `user` order by id desc limit :__upper_limit", + "Table": "`user`" } ] }, @@ -147,7 +279,6 @@ Gen4 plan same as above ] } } -Gen4 plan same as above # Union all "select col1, col2 from user union all select col1, col2 from user_extra" @@ -161,12 +292,26 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select col1, col2 from user where 1 != 1 union all select col1, col2 from user_extra where 1 != 1", - "Query": "select col1, col2 from user union all select col1, col2 from user_extra", - "Table": "user" + "FieldQuery": "select col1, col2 from `user` where 1 != 1 union all select col1, col2 from user_extra where 1 != 1", + "Query": "select col1, col2 from `user` union all select col1, col2 from user_extra", + "Table": "`user`" + } +} +{ + "QueryType": "SELECT", + "Original": "select col1, col2 from user union all select col1, col2 from user_extra", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select col1, col2 from `user` where 1 != 1 union all select col1, col2 from user_extra where 1 != 1", + "Query": "select col1, col2 from `user` union all select col1, col2 from user_extra", + "Table": "`user`" } } -Gen4 plan same as above # union operations in subqueries (FROM) "select * from (select * from user union all select * from user_extra) as t" @@ -180,9 +325,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from (select * from user where 1 != 1 union all select * from user_extra where 1 != 1) as t where 1 != 1", - "Query": "select * from (select * from user union all select * from user_extra) as t", - "Table": "user" + "FieldQuery": "select * from (select * from `user` where 1 != 1 union all select * from user_extra where 1 != 1) as t where 1 != 1", + "Query": "select * from (select * from `user` union all select * from user_extra) as t", + "Table": "`user`" } } @@ -205,10 +350,55 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", + "FieldQuery": "select id from `user` where 1 != 1", "OrderBy": "0 ASC", - "Query": "select id from user order by id asc limit :__upper_limit", - "Table": "user" + "Query": "select id from `user` order by id asc limit :__upper_limit", + "Table": "`user`" + } + ] + }, + { + "OperatorType": "Limit", + "Count": 5, + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from music where 1 != 1", + "OrderBy": "0 DESC", + "Query": "select id from music order by id desc limit :__upper_limit", + "Table": "music" + } + ] + } + ] + } +} +{ + "QueryType": "SELECT", + "Original": "(select id from user order by id limit 5) union all (select id from music order by id desc limit 5)", + "Instructions": { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Limit", + "Count": 5, + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "OrderBy": "0 ASC", + "Query": "select id from `user` order by id asc limit :__upper_limit", + "Table": "`user`" } ] }, @@ -233,7 +423,6 @@ Gen4 plan same as above ] } } -Gen4 plan same as above # union all on scatter and single route "select id from user where id = 1 union select id from user where id = 1 union all select id from user" @@ -250,9 +439,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1 union select id from user where 1 != 1", - "Query": "select id from user where id = 1 union select id from user where id = 1", - "Table": "user", + "FieldQuery": "select id from `user` where 1 != 1 union select id from `user` where 1 != 1", + "Query": "select id from `user` where id = 1 union select id from `user` where id = 1", + "Table": "`user`", "Values": [ 1 ], @@ -265,14 +454,48 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user`", + "Table": "`user`" + } + ] + } +} +{ + "QueryType": "SELECT", + "Original": "select id from user where id = 1 union select id from user where id = 1 union all select id from user", + "Instructions": { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectEqualUnique", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1 union select id from `user` where 1 != 1", + "Query": "select id from `user` where id = 1 union select id from `user` where id = 1", + "Table": "`user`", + "Values": [ + 1 + ], + "Vindex": "user_index" + }, + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user`", + "Table": "`user`" } ] } } -Gen4 plan same as above # union of information_schema with normal table "select * from information_schema.a union select * from unsharded" @@ -376,9 +599,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -411,31 +634,87 @@ Gen4 plan same as above ] } } -Gen4 plan same as above - -# multi-shard union -"select 1 from music union (select id from user union all select name from unsharded)" { "QueryType": "SELECT", - "Original": "select 1 from music union (select id from user union all select name from unsharded)", + "Original": "(select id from user union select id from music) union select 1 from dual", "Instructions": { "OperatorType": "Distinct", "Inputs": [ { "OperatorType": "Concatenate", "Inputs": [ + { + "OperatorType": "Distinct", + "Inputs": [ + { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user`", + "Table": "`user`" + }, + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from music where 1 != 1", + "Query": "select id from music", + "Table": "music" + } + ] + } + ] + }, { "OperatorType": "Route", - "Variant": "SelectScatter", + "Variant": "SelectReference", "Keyspace": { - "Name": "user", - "Sharded": true + "Name": "main", + "Sharded": false }, - "FieldQuery": "select 1 from music where 1 != 1", - "Query": "select 1 from music", - "Table": "music" - }, - { + "FieldQuery": "select 1 from dual where 1 != 1", + "Query": "select 1 from dual", + "Table": "dual" + } + ] + } + ] + } +} + +# multi-shard union +"select 1 from music union (select id from user union all select name from unsharded)" +{ + "QueryType": "SELECT", + "Original": "select 1 from music union (select id from user union all select name from unsharded)", + "Instructions": { + "OperatorType": "Distinct", + "Inputs": [ + { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select 1 from music where 1 != 1", + "Query": "select 1 from music", + "Table": "music" + }, + { "OperatorType": "Concatenate", "Inputs": [ { @@ -445,9 +724,61 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user`", + "Table": "`user`" + }, + { + "OperatorType": "Route", + "Variant": "SelectUnsharded", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "FieldQuery": "select `name` from unsharded where 1 != 1", + "Query": "select `name` from unsharded", + "Table": "unsharded" + } + ] + } + ] + } + ] + } +} +{ + "QueryType": "SELECT", + "Original": "select 1 from music union (select id from user union all select name from unsharded)", + "Instructions": { + "OperatorType": "Distinct", + "Inputs": [ + { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select 1 from music where 1 != 1", + "Query": "select 1 from music", + "Table": "music" + }, + { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -467,7 +798,6 @@ Gen4 plan same as above ] } } -Gen4 plan same as above # multi-shard union "select 1 from music union (select id from user union select name from unsharded)" @@ -504,9 +834,66 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select id from user where 1 != 1", - "Query": "select id from user", - "Table": "user" + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user`", + "Table": "`user`" + }, + { + "OperatorType": "Route", + "Variant": "SelectUnsharded", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "FieldQuery": "select `name` from unsharded where 1 != 1", + "Query": "select `name` from unsharded", + "Table": "unsharded" + } + ] + } + ] + } + ] + } + ] + } +} +{ + "QueryType": "SELECT", + "Original": "select 1 from music union (select id from user union select name from unsharded)", + "Instructions": { + "OperatorType": "Distinct", + "Inputs": [ + { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select 1 from music where 1 != 1", + "Query": "select 1 from music", + "Table": "music" + }, + { + "OperatorType": "Distinct", + "Inputs": [ + { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select id from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -528,7 +915,6 @@ Gen4 plan same as above ] } } -Gen4 plan same as above # union with the same target shard because of vindex "select * from music where id = 1 union select * from user where id = 1" @@ -563,9 +949,53 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select * from user where 1 != 1", - "Query": "select * from user where id = 1", - "Table": "user", + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id = 1", + "Table": "`user`", + "Values": [ + 1 + ], + "Vindex": "user_index" + } + ] + } + ] + } +} +{ + "QueryType": "SELECT", + "Original": "select * from music where id = 1 union select * from user where id = 1", + "Instructions": { + "OperatorType": "Distinct", + "Inputs": [ + { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectEqualUnique", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select * from music where 1 != 1", + "Query": "select * from music where id = 1", + "Table": "music", + "Values": [ + 1 + ], + "Vindex": "music_user_map" + }, + { + "OperatorType": "Route", + "Variant": "SelectEqualUnique", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id = 1", + "Table": "`user`", "Values": [ 1 ], @@ -576,7 +1006,6 @@ Gen4 plan same as above ] } } -Gen4 plan same as above # union with different target shards "select 1 from music where id = 1 union select 1 from music where id = 2" @@ -644,10 +1073,10 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user where 1 != 1", + "FieldQuery": "select 1 from `user` where 1 != 1", "OrderBy": "0 DESC", - "Query": "select 1 from user order by 1 desc", - "Table": "user" + "Query": "select 1 from `user` order by 1 desc", + "Table": "`user`" }, { "OperatorType": "Route", @@ -656,17 +1085,54 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user where 1 != 1", + "FieldQuery": "select 1 from `user` where 1 != 1", "OrderBy": "0 ASC", - "Query": "select 1 from user order by 1 asc", - "Table": "user" + "Query": "select 1 from `user` order by 1 asc", + "Table": "`user`" + } + ] + } + ] + } +} +{ + "QueryType": "SELECT", + "Original": "(select 1 from user order by 1 desc) union (select 1 from user order by 1 asc)", + "Instructions": { + "OperatorType": "Distinct", + "Inputs": [ + { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select 1 from `user` where 1 != 1", + "OrderBy": "0 DESC", + "Query": "select 1 from `user` order by 1 desc", + "Table": "`user`" + }, + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select 1 from `user` where 1 != 1", + "OrderBy": "0 ASC", + "Query": "select 1 from `user` order by 1 asc", + "Table": "`user`" } ] } ] } } -Gen4 plan same as above # multiple unions "select 1 union select null union select 1.0 union select '1' union select 2 union select 2.0 from user" @@ -697,16 +1163,51 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select 2.0 from user where 1 != 1", - "Query": "select 2.0 from user", - "Table": "user" + "FieldQuery": "select 2.0 from `user` where 1 != 1", + "Query": "select 2.0 from `user`", + "Table": "`user`" + } + ] + } + ] + } +} +{ + "QueryType": "SELECT", + "Original": "select 1 union select null union select 1.0 union select '1' union select 2 union select 2.0 from user", + "Instructions": { + "OperatorType": "Distinct", + "Inputs": [ + { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectReference", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "FieldQuery": "select 1 from dual where 1 != 1 union select null from dual where 1 != 1 union select 1.0 from dual where 1 != 1 union select '1' from dual where 1 != 1 union select 2 from dual where 1 != 1", + "Query": "select 1 from dual union select null from dual union select 1.0 from dual union select '1' from dual union select 2 from dual", + "Table": "dual" + }, + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select 2.0 from `user` where 1 != 1", + "Query": "select 2.0 from `user`", + "Table": "`user`" } ] } ] } } -Gen4 plan same as above # union distinct between a scatter query and a join (other side) "(select user.id, user.name from user join user_extra where user_extra.extra = 'asdf') union select 'b','c' from user" @@ -723,7 +1224,7 @@ Gen4 plan same as above "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -732,9 +1233,9 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id, user.`name` from user where 1 != 1", - "Query": "select user.id, user.`name` from user", - "Table": "user" + "FieldQuery": "select `user`.id, `user`.`name` from `user` where 1 != 1", + "Query": "select `user`.id, `user`.`name` from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -756,16 +1257,70 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select 'b', 'c' from user where 1 != 1", - "Query": "select 'b', 'c' from user", - "Table": "user" + "FieldQuery": "select 'b', 'c' from `user` where 1 != 1", + "Query": "select 'b', 'c' from `user`", + "Table": "`user`" + } + ] + } + ] + } +} +{ + "QueryType": "SELECT", + "Original": "(select user.id, user.name from user join user_extra where user_extra.extra = 'asdf') union select 'b','c' from user", + "Instructions": { + "OperatorType": "Distinct", + "Inputs": [ + { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Join", + "Variant": "Join", + "JoinColumnIndexes": "-1,-2", + "TableName": "`user`_user_extra", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select `user`.id, `user`.`name` from `user` where 1 != 1", + "Query": "select `user`.id, `user`.`name` from `user`", + "Table": "`user`" + }, + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select 1 from user_extra where 1 != 1", + "Query": "select 1 from user_extra where user_extra.extra = 'asdf'", + "Table": "user_extra" + } + ] + }, + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select 'b', 'c' from `user` where 1 != 1", + "Query": "select 'b', 'c' from `user`", + "Table": "`user`" } ] } ] } } -Gen4 plan same as above # union distinct between a scatter query and a join (other side) "select 'b','c' from user union (select user.id, user.name from user join user_extra where user_extra.extra = 'asdf')" @@ -785,15 +1340,15 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select 'b', 'c' from user where 1 != 1", - "Query": "select 'b', 'c' from user", - "Table": "user" + "FieldQuery": "select 'b', 'c' from `user` where 1 != 1", + "Query": "select 'b', 'c' from `user`", + "Table": "`user`" }, { "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -802,9 +1357,64 @@ Gen4 plan same as above "Name": "user", "Sharded": true }, - "FieldQuery": "select user.id, user.`name` from user where 1 != 1", - "Query": "select user.id, user.`name` from user", - "Table": "user" + "FieldQuery": "select `user`.id, `user`.`name` from `user` where 1 != 1", + "Query": "select `user`.id, `user`.`name` from `user`", + "Table": "`user`" + }, + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select 1 from user_extra where 1 != 1", + "Query": "select 1 from user_extra where user_extra.extra = 'asdf'", + "Table": "user_extra" + } + ] + } + ] + } + ] + } +} +{ + "QueryType": "SELECT", + "Original": "select 'b','c' from user union (select user.id, user.name from user join user_extra where user_extra.extra = 'asdf')", + "Instructions": { + "OperatorType": "Distinct", + "Inputs": [ + { + "OperatorType": "Concatenate", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select 'b', 'c' from `user` where 1 != 1", + "Query": "select 'b', 'c' from `user`", + "Table": "`user`" + }, + { + "OperatorType": "Join", + "Variant": "Join", + "JoinColumnIndexes": "-1,-2", + "TableName": "`user`_user_extra", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "SelectScatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select `user`.id, `user`.`name` from `user` where 1 != 1", + "Query": "select `user`.id, `user`.`name` from `user`", + "Table": "`user`" }, { "OperatorType": "Route", @@ -824,7 +1434,6 @@ Gen4 plan same as above ] } } -Gen4 plan same as above # ambiguous LIMIT "select id from user limit 1 union all select id from music limit 1" @@ -833,5 +1442,5 @@ Gen4 plan same as above # different number of columns "select id, 42 from user where id = 1 union all select id from user where id = 5" -"The used SELECT statements have a different number of columns (errno 1222) (sqlstate 21000) during query: select id, 42 from user where id = 1 union all select id from user where id = 5" +"The used SELECT statements have a different number of columns (errno 1222) (sqlstate 21000) during query: select id, 42 from `user` where id = 1 union all select id from `user` where id = 5" Gen4 plan same as above diff --git a/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt b/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt index d328c022c4d..bd87592cf46 100644 --- a/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt @@ -1,8 +1,3 @@ -# SHOW -"show create database" -"plan building not supported" -Gen4 plan same as above - # union operations in subqueries (expressions) "select * from user where id in (select * from user union select * from user_extra)" "unsupported: '*' expression in cross-shard query" diff --git a/go/vt/vtgate/planbuilder/testdata/wireup_cases.txt b/go/vt/vtgate/planbuilder/testdata/wireup_cases.txt index 7bba805ed0c..d4766864a73 100644 --- a/go/vt/vtgate/planbuilder/testdata/wireup_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/wireup_cases.txt @@ -7,7 +7,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1,-1,2", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -16,9 +16,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select u.id as uid from user as u where 1 != 1", - "Query": "select u.id as uid from user as u", - "Table": "user" + "FieldQuery": "select u.id as uid from `user` as u where 1 != 1", + "Query": "select u.id as uid from `user` as u", + "Table": "`user`" }, { "OperatorType": "Route", @@ -44,7 +44,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1,-1,2", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -53,9 +53,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select u.id as uid from user as u where 1 != 1", - "Query": "select u.id as uid from user as u", - "Table": "user" + "FieldQuery": "select u.id as uid from `user` as u where 1 != 1", + "Query": "select u.id as uid from `user` as u", + "Table": "`user`" }, { "OperatorType": "Route", @@ -81,13 +81,13 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_user", + "TableName": "`user`_`user`_`user`", "Inputs": [ { "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2", - "TableName": "user_user", + "TableName": "`user`_`user`", "Inputs": [ { "OperatorType": "Route", @@ -96,9 +96,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select u1.id, u1.col from user as u1 where 1 != 1", - "Query": "select u1.id, u1.col from user as u1", - "Table": "user" + "FieldQuery": "select u1.id, u1.col from `user` as u1 where 1 != 1", + "Query": "select u1.id, u1.col from `user` as u1", + "Table": "`user`" }, { "OperatorType": "Route", @@ -107,9 +107,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user as u2 where 1 != 1", - "Query": "select 1 from user as u2", - "Table": "user" + "FieldQuery": "select 1 from `user` as u2 where 1 != 1", + "Query": "select 1 from `user` as u2", + "Table": "`user`" } ] }, @@ -120,9 +120,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user as u3 where 1 != 1", - "Query": "select 1 from user as u3 where u3.col = :u1_col", - "Table": "user" + "FieldQuery": "select 1 from `user` as u3 where 1 != 1", + "Query": "select 1 from `user` as u3 where u3.col = :u1_col", + "Table": "`user`" } ] } @@ -137,13 +137,13 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_user", + "TableName": "`user`_`user`_`user`", "Inputs": [ { "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1", - "TableName": "user_user", + "TableName": "`user`_`user`", "Inputs": [ { "OperatorType": "Route", @@ -152,9 +152,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select u1.id from user as u1 where 1 != 1", - "Query": "select u1.id from user as u1", - "Table": "user" + "FieldQuery": "select u1.id from `user` as u1 where 1 != 1", + "Query": "select u1.id from `user` as u1", + "Table": "`user`" }, { "OperatorType": "Route", @@ -163,9 +163,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select u2.col from user as u2 where 1 != 1", - "Query": "select u2.col from user as u2", - "Table": "user" + "FieldQuery": "select u2.col from `user` as u2 where 1 != 1", + "Query": "select u2.col from `user` as u2", + "Table": "`user`" } ] }, @@ -176,9 +176,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user as u3 where 1 != 1", - "Query": "select 1 from user as u3 where u3.col = :u2_col", - "Table": "user" + "FieldQuery": "select 1 from `user` as u3 where 1 != 1", + "Query": "select 1 from `user` as u3 where u3.col = :u2_col", + "Table": "`user`" } ] } @@ -193,13 +193,13 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_user", + "TableName": "`user`_`user`_`user`", "Inputs": [ { "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2", - "TableName": "user_user", + "TableName": "`user`_`user`", "Inputs": [ { "OperatorType": "Route", @@ -208,9 +208,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select u1.id, u1.col from user as u1 where 1 != 1", - "Query": "select u1.id, u1.col from user as u1", - "Table": "user" + "FieldQuery": "select u1.id, u1.col from `user` as u1 where 1 != 1", + "Query": "select u1.id, u1.col from `user` as u1", + "Table": "`user`" }, { "OperatorType": "Route", @@ -219,9 +219,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user as u2 where 1 != 1", - "Query": "select 1 from user as u2 where u2.col = :u1_col", - "Table": "user" + "FieldQuery": "select 1 from `user` as u2 where 1 != 1", + "Query": "select 1 from `user` as u2 where u2.col = :u1_col", + "Table": "`user`" } ] }, @@ -232,9 +232,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user as u3 where 1 != 1", - "Query": "select 1 from user as u3 where u3.col = :u1_col", - "Table": "user" + "FieldQuery": "select 1 from `user` as u3 where 1 != 1", + "Query": "select 1 from `user` as u3 where u3.col = :u1_col", + "Table": "`user`" } ] } @@ -252,19 +252,19 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_user_user", + "TableName": "`user`_`user`_`user`_`user`", "Inputs": [ { "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2", - "TableName": "user_user_user", + "TableName": "`user`_`user`_`user`", "Inputs": [ { "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,-2", - "TableName": "user_user", + "TableName": "`user`_`user`", "Inputs": [ { "OperatorType": "Route", @@ -273,9 +273,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select u1.id, u1.col from user as u1 where 1 != 1", - "Query": "select u1.id, u1.col from user as u1", - "Table": "user" + "FieldQuery": "select u1.id, u1.col from `user` as u1 where 1 != 1", + "Query": "select u1.id, u1.col from `user` as u1", + "Table": "`user`" }, { "OperatorType": "Route", @@ -284,9 +284,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user as u2 where 1 != 1", - "Query": "select 1 from user as u2", - "Table": "user" + "FieldQuery": "select 1 from `user` as u2 where 1 != 1", + "Query": "select 1 from `user` as u2", + "Table": "`user`" } ] }, @@ -297,9 +297,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user as u3 where 1 != 1", - "Query": "select 1 from user as u3 where u3.id = :u1_col", - "Table": "user", + "FieldQuery": "select 1 from `user` as u3 where 1 != 1", + "Query": "select 1 from `user` as u3 where u3.id = :u1_col", + "Table": "`user`", "Values": [ ":u1_col" ], @@ -314,9 +314,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user as u4 where 1 != 1", - "Query": "select 1 from user as u4 where u4.col = :u1_col", - "Table": "user" + "FieldQuery": "select 1 from `user` as u4 where 1 != 1", + "Query": "select 1 from `user` as u4 where u4.col = :u1_col", + "Table": "`user`" } ] } @@ -331,7 +331,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1", - "TableName": "user_user_user", + "TableName": "`user`_`user`_`user`", "Inputs": [ { "OperatorType": "Route", @@ -340,14 +340,14 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select u1.id, u1.col from user as u1 where 1 != 1", - "Query": "select u1.id, u1.col from user as u1", - "Table": "user" + "FieldQuery": "select u1.id, u1.col from `user` as u1 where 1 != 1", + "Query": "select u1.id, u1.col from `user` as u1", + "Table": "`user`" }, { "OperatorType": "Join", "Variant": "Join", - "TableName": "user_user", + "TableName": "`user`_`user`", "Inputs": [ { "OperatorType": "Route", @@ -356,9 +356,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user as u2 where 1 != 1", - "Query": "select 1 from user as u2 where u2.id = :u1_col", - "Table": "user", + "FieldQuery": "select 1 from `user` as u2 where 1 != 1", + "Query": "select 1 from `user` as u2 where u2.id = :u1_col", + "Table": "`user`", "Values": [ ":u1_col" ], @@ -371,9 +371,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user as u3 where 1 != 1", - "Query": "select 1 from user as u3 where u3.id = :u1_col", - "Table": "user", + "FieldQuery": "select 1 from `user` as u3 where 1 != 1", + "Query": "select 1 from `user` as u3 where u3.id = :u1_col", + "Table": "`user`", "Values": [ ":u1_col" ], @@ -394,7 +394,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1", - "TableName": "weird`name_unsharded", + "TableName": "`weird``name`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -405,7 +405,7 @@ }, "FieldQuery": "select `weird``name`.a, `weird``name`.`a``b*c` from `weird``name` where 1 != 1", "Query": "select `weird``name`.a, `weird``name`.`a``b*c` from `weird``name`", - "Table": "weird`name" + "Table": "`weird``name`" }, { "OperatorType": "Route", @@ -431,7 +431,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "1", - "TableName": "weird`name_unsharded", + "TableName": "`weird``name`_unsharded", "Inputs": [ { "OperatorType": "Route", @@ -442,7 +442,7 @@ }, "FieldQuery": "select `weird``name`.`a``b*c` from `weird``name` where 1 != 1", "Query": "select `weird``name`.`a``b*c` from `weird``name`", - "Table": "weird`name" + "Table": "`weird``name`" }, { "OperatorType": "Route", @@ -472,7 +472,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -481,9 +481,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select u.id, u.col from user as u where 1 != 1", - "Query": "select u.id, u.col from user as u", - "Table": "user" + "FieldQuery": "select u.id, u.col from `user` as u where 1 != 1", + "Query": "select u.id, u.col from `user` as u", + "Table": "`user`" }, { "OperatorType": "Route", @@ -519,7 +519,7 @@ "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -528,9 +528,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select u.id, u.col from user as u where 1 != 1", - "Query": "select u.id, u.col from user as u", - "Table": "user" + "FieldQuery": "select u.id, u.col from `user` as u where 1 != 1", + "Query": "select u.id, u.col from `user` as u", + "Table": "`user`" }, { "OperatorType": "Route", @@ -554,9 +554,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select 1 from user where 1 != 1", - "Query": "select 1 from user where :__sq_has_values1 = 1 and id in ::__vals", - "Table": "user", + "FieldQuery": "select 1 from `user` where 1 != 1", + "Query": "select 1 from `user` where :__sq_has_values1 = 1 and id in ::__vals", + "Table": "`user`", "Values": [ "::__sq1" ], @@ -586,15 +586,15 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select col from user where 1 != 1", - "Query": "select col from user", - "Table": "user" + "FieldQuery": "select col from `user` where 1 != 1", + "Query": "select col from `user`", + "Table": "`user`" }, { "OperatorType": "Join", "Variant": "Join", "JoinColumnIndexes": "-1,1,-2", - "TableName": "user_user_extra", + "TableName": "`user`_user_extra", "Inputs": [ { "OperatorType": "Route", @@ -603,9 +603,9 @@ "Name": "user", "Sharded": true }, - "FieldQuery": "select u.id, :__sq1, u.col from user as u where 1 != 1", - "Query": "select u.id, :__sq1, u.col from user as u", - "Table": "user" + "FieldQuery": "select u.id, :__sq1, u.col from `user` as u where 1 != 1", + "Query": "select u.id, :__sq1, u.col from `user` as u", + "Table": "`user`" }, { "OperatorType": "Route", From 9674e9fe1dd5ea65e79ea0bd44e895b13755d23a Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Tue, 16 Feb 2021 13:08:42 +0530 Subject: [PATCH 12/15] moved show create plans from executor to planbuilder Signed-off-by: Harshit Gangal --- go/vt/vtgate/executor.go | 49 -------------- go/vt/vtgate/planbuilder/show.go | 107 +++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+), 49 deletions(-) diff --git a/go/vt/vtgate/executor.go b/go/vt/vtgate/executor.go index 32ba6ce95d7..6f0ae2ccd00 100644 --- a/go/vt/vtgate/executor.go +++ b/go/vt/vtgate/executor.go @@ -641,55 +641,6 @@ func (e *Executor) handleShow(ctx context.Context, safeSession *SafeSession, sql Fields: buildVarCharFields("Name", "Status", "Type", "Library", "License"), Rows: rows, }, nil - case "create table": - if !show.Table.Qualifier.IsEmpty() { - // Explicit keyspace was passed. Use that for targeting but remove from the query itself. - destKeyspace = show.Table.Qualifier.String() - show.Table.Qualifier = sqlparser.NewTableIdent("") - } else { - // No keyspace was indicated. Try to find one using the vschema. - tbl, err := e.VSchema().FindTable(destKeyspace, show.Table.Name.String()) - if err != nil { - return nil, err - } - destKeyspace = tbl.Keyspace.Name - } - sql = sqlparser.String(show) - case sqlparser.KeywordString(sqlparser.COLUMNS): - if !show.OnTable.Qualifier.IsEmpty() { - destKeyspace = show.OnTable.Qualifier.String() - show.OnTable.Qualifier = sqlparser.NewTableIdent("") - } else if show.ShowTablesOpt != nil { - if show.ShowTablesOpt.DbName != "" { - destKeyspace = show.ShowTablesOpt.DbName - show.ShowTablesOpt.DbName = "" - } - } else { - break - } - sql = sqlparser.String(show) - case sqlparser.KeywordString(sqlparser.INDEX), sqlparser.KeywordString(sqlparser.KEYS), sqlparser.KeywordString(sqlparser.INDEXES): - if !show.OnTable.Qualifier.IsEmpty() { - destKeyspace = show.OnTable.Qualifier.String() - show.OnTable.Qualifier = sqlparser.NewTableIdent("") - } else if show.ShowTablesOpt != nil { - if show.ShowTablesOpt.DbName != "" { - destKeyspace = show.ShowTablesOpt.DbName - show.ShowTablesOpt.DbName = "" - } - } else { - break - } - sql = sqlparser.String(show) - case sqlparser.KeywordString(sqlparser.TABLES): - if show.ShowTablesOpt != nil && show.ShowTablesOpt.DbName != "" { - if destKeyspace == "" { - // Change "show tables from " to "show tables" directed to that keyspace. - destKeyspace = show.ShowTablesOpt.DbName - } - show.ShowTablesOpt.DbName = "" - } - sql = sqlparser.String(show) case sqlparser.KeywordString(sqlparser.VITESS_SHARDS): showVitessShardsFilters := func(show *sqlparser.ShowLegacy) ([]func(string) bool, []func(string, *topodatapb.ShardReference) bool) { keyspaceFilters := []func(string) bool{} diff --git a/go/vt/vtgate/planbuilder/show.go b/go/vt/vtgate/planbuilder/show.go index 039788bbec1..b7c0f7ff7fe 100644 --- a/go/vt/vtgate/planbuilder/show.go +++ b/go/vt/vtgate/planbuilder/show.go @@ -20,6 +20,8 @@ import ( "regexp" "strings" + "vitess.io/vitess/go/vt/vtgate/vindexes" + "vitess.io/vitess/go/mysql" "vitess.io/vitess/go/sqltypes" "vitess.io/vitess/go/vt/key" @@ -41,6 +43,8 @@ func buildShowPlan(stmt *sqlparser.Show, vschema ContextVSchema) (engine.Primiti switch show := stmt.Internal.(type) { case *sqlparser.ShowBasic: return buildShowBasicPlan(show, vschema) + case *sqlparser.ShowCreate: + return buildShowCreatePlan(show, vschema) default: return nil, ErrPlanNotSupported } @@ -293,3 +297,106 @@ func checkLikeOpt(likeOpt string, colNames []string) (string, error) { return "", nil } + +func buildShowCreatePlan(show *sqlparser.ShowCreate, vschema ContextVSchema) (engine.Primitive, error) { + switch show.Command { + case sqlparser.CreateDb: + return buildCreateDbPlan(show, vschema) + case sqlparser.CreateE, sqlparser.CreateF, sqlparser.CreateProc, sqlparser.CreateTr, sqlparser.CreateV: + return buildCreatePlan(show, vschema) + case sqlparser.CreateTbl: + return buildCreateTblPlan(show, vschema) + } + return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "BUG: unknown show query type %s", show.Command.ToString()) +} + +func buildCreateDbPlan(show *sqlparser.ShowCreate, vschema ContextVSchema) (engine.Primitive, error) { + dest := key.Destination(key.DestinationAnyShard{}) + var ks *vindexes.Keyspace + var err error + dbName := show.Op.Name.String() + if sqlparser.SystemSchema(dbName) { + ks, err = vschema.AnyKeyspace() + } else { + dest, ks, _, err = vschema.TargetDestination(dbName) + } + if err != nil { + return nil, err + } + + return &engine.Send{ + Keyspace: ks, + TargetDestination: dest, + Query: sqlparser.String(show), + IsDML: false, + SingleShardOnly: true, + }, nil +} + +func buildCreateTblPlan(show *sqlparser.ShowCreate, vschema ContextVSchema) (engine.Primitive, error) { + dest := key.Destination(key.DestinationAnyShard{}) + var ks *vindexes.Keyspace + var err error + + if !show.Op.Qualifier.IsEmpty() && sqlparser.SystemSchema(show.Op.Qualifier.String()) { + ks, err = vschema.AnyKeyspace() + if err != nil { + return nil, err + } + } else { + tbl, _, _, _, destKs, err := vschema.FindTableOrVindex(show.Op) + if err != nil { + return nil, err + } + if tbl == nil { + return nil, vterrors.Errorf(vtrpcpb.Code_NOT_FOUND, "table now found: %v", show.Op) + } + ks = tbl.Keyspace + if destKs != nil { + dest = destKs + } + show.Op.Qualifier = sqlparser.NewTableIdent("") + show.Op.Name = tbl.Name + } + + return &engine.Send{ + Keyspace: ks, + TargetDestination: dest, + Query: sqlparser.String(show), + IsDML: false, + SingleShardOnly: true, + }, nil + +} + +func buildCreatePlan(show *sqlparser.ShowCreate, vschema ContextVSchema) (engine.Primitive, error) { + dest := key.Destination(key.DestinationAnyShard{}) + var ks *vindexes.Keyspace + var err error + if show.Op.Qualifier.IsEmpty() { + ks, err = vschema.DefaultKeyspace() + if err != nil { + return nil, err + } + } + if ks == nil { + dbName := show.Op.Qualifier.String() + if sqlparser.SystemSchema(dbName) { + ks, err = vschema.AnyKeyspace() + } else { + dest, ks, _, err = vschema.TargetDestination(dbName) + show.Op.Qualifier = sqlparser.NewTableIdent("") + } + if err != nil { + return nil, err + } + } + return &engine.Send{ + Keyspace: ks, + TargetDestination: dest, + Query: sqlparser.String(show), + IsDML: false, + SingleShardOnly: true, + }, nil + +} From 1340188f3f8d8b35a3a9842ffdd97b37354dd26e Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Tue, 16 Feb 2021 13:21:33 +0530 Subject: [PATCH 13/15] fix vttablet test Signed-off-by: Harshit Gangal --- go/vt/vttablet/tabletserver/query_executor_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/go/vt/vttablet/tabletserver/query_executor_test.go b/go/vt/vttablet/tabletserver/query_executor_test.go index a6c5996230e..a16a911e936 100644 --- a/go/vt/vttablet/tabletserver/query_executor_test.go +++ b/go/vt/vttablet/tabletserver/query_executor_test.go @@ -214,13 +214,13 @@ func TestQueryExecutorPlans(t *testing.T) { }, { input: "create index a on user(id)", dbResponses: []dbResponse{{ - query: "alter table user add index a (id)", + query: "alter table `user` add index a (id)", result: emptyResult, }}, resultWant: emptyResult, planWant: "DDL", - logWant: "alter table user add index a (id)", - inTxWant: "alter table user add index a (id)", + logWant: "alter table `user` add index a (id)", + inTxWant: "alter table `user` add index a (id)", }, { input: "create index a on user(id1 + id2)", dbResponses: []dbResponse{{ From 42d62b9e8158869aeb14b4f5f7cfa011f9cf0cdb Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Tue, 16 Feb 2021 18:26:01 +0530 Subject: [PATCH 14/15] added plan for show create statements and rewrite the dbname Signed-off-by: Harshit Gangal --- .../tabletserver/planbuilder/builder.go | 47 ++++++++++++------- .../vttablet/tabletserver/planbuilder/plan.go | 4 +- .../planbuilder/testdata/exec_cases.txt | 38 ++++++++++++--- go/vt/vttablet/tabletserver/query_executor.go | 4 +- .../tabletserver/query_executor_test.go | 28 +++++++++++ 5 files changed, 93 insertions(+), 28 deletions(-) diff --git a/go/vt/vttablet/tabletserver/planbuilder/builder.go b/go/vt/vttablet/tabletserver/planbuilder/builder.go index 4db5e5dbaed..747ea2a2659 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/builder.go +++ b/go/vt/vttablet/tabletserver/planbuilder/builder.go @@ -130,33 +130,44 @@ func analyzeInsert(ins *sqlparser.Insert, tables map[string]*schema.Table) (plan func analyzeShow(show *sqlparser.Show, dbName string) (plan *Plan, err error) { switch showInternal := show.Internal.(type) { case *sqlparser.ShowBasic: - switch showInternal.Command { - case sqlparser.Table: + if showInternal.Command == sqlparser.Table { // rewrite WHERE clause if it exists // `where Tables_in_Keyspace` => `where Tables_in_DbName` if showInternal.Filter != nil { - filter := showInternal.Filter.Filter - if filter != nil { - sqlparser.Rewrite(filter, func(cursor *sqlparser.Cursor) bool { - switch n := cursor.Node().(type) { - case *sqlparser.ColName: - if n.Qualifier.IsEmpty() && strings.HasPrefix(n.Name.Lowered(), "tables_in_") { - cursor.Replace(sqlparser.NewColName("Tables_in_" + dbName)) - } - } - return true - }, nil) - } + showTableRewrite(showInternal, dbName) } - return &Plan{ - PlanID: PlanShowTables, - FullQuery: GenerateFullQuery(show), - }, nil } + return &Plan{ + PlanID: PlanShow, + FullQuery: GenerateFullQuery(show), + }, nil + case *sqlparser.ShowCreate: + if showInternal.Command == sqlparser.CreateDb && !sqlparser.SystemSchema(showInternal.Op.Name.String()) { + showInternal.Op.Name = sqlparser.NewTableIdent(dbName) + } + return &Plan{ + PlanID: PlanShow, + FullQuery: GenerateFullQuery(show), + }, nil } return &Plan{PlanID: PlanOtherRead}, nil } +func showTableRewrite(show *sqlparser.ShowBasic, dbName string) { + filter := show.Filter.Filter + if filter != nil { + sqlparser.Rewrite(filter, func(cursor *sqlparser.Cursor) bool { + switch n := cursor.Node().(type) { + case *sqlparser.ColName: + if n.Qualifier.IsEmpty() && strings.HasPrefix(n.Name.Lowered(), "tables_in_") { + cursor.Replace(sqlparser.NewColName("Tables_in_" + dbName)) + } + } + return true + }, nil) + } +} + func analyzeSet(set *sqlparser.Set) (plan *Plan) { return &Plan{ PlanID: PlanSet, diff --git a/go/vt/vttablet/tabletserver/planbuilder/plan.go b/go/vt/vttablet/tabletserver/planbuilder/plan.go index 340e7edb014..a248025efc9 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/plan.go +++ b/go/vt/vttablet/tabletserver/planbuilder/plan.go @@ -64,7 +64,7 @@ const ( PlanSavepoint PlanRelease PlanSRollback - PlanShowTables + PlanShow // PlanLoad is for Load data statements PlanLoad // PlanFlush is for FLUSH statements @@ -96,7 +96,7 @@ var planName = []string{ "Savepoint", "Release", "RollbackSavepoint", - "ShowTables", + "Show", "Load", "Flush", "LockTables", diff --git a/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt b/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt index 465d0f1d2ee..0f4f66830ed 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt +++ b/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt @@ -808,7 +808,7 @@ options:PassthroughDMLs # show tables #1 "show tables like 'key%'" { - "PlanID": "ShowTables", + "PlanID": "Show", "TableName":"", "FullQuery": "show tables like 'key%'" } @@ -816,7 +816,7 @@ options:PassthroughDMLs # show tables #2 "show tables where Tables_in_keyspace='apa'" { - "PlanID": "ShowTables", + "PlanID": "Show", "TableName":"", "FullQuery": "show tables where Tables_in_dbName = 'apa'" } @@ -824,15 +824,41 @@ options:PassthroughDMLs # show table status #1 "show table status like 'key%'" { - "PlanID": "OtherRead", - "TableName": "" + "PlanID": "Show", + "TableName":"", + "FullQuery": "show table status like 'key%'" } # show table status #2 "show table status where Name='apa'" { - "PlanID": "OtherRead", - "TableName": "" + "PlanID": "Show", + "TableName":"", + "FullQuery": "show table status where `Name` = 'apa'" +} + +# show create table +"show create table t1" +{ + "PlanID": "Show", + "TableName": "", + "FullQuery": "show create table t1" +} + +# show create database system_schema +"show create database mysql" +{ + "PlanID": "Show", + "TableName": "", + "FullQuery": "show create database mysql" +} + +# show create database +"show create database anything" +{ + "PlanID": "Show", + "TableName": "", + "FullQuery": "show create database dbName" } # load data diff --git a/go/vt/vttablet/tabletserver/query_executor.go b/go/vt/vttablet/tabletserver/query_executor.go index b289c18545e..262826f53a5 100644 --- a/go/vt/vttablet/tabletserver/query_executor.go +++ b/go/vt/vttablet/tabletserver/query_executor.go @@ -121,7 +121,7 @@ func (qre *QueryExecutor) Execute() (reply *sqltypes.Result, err error) { } switch qre.plan.PlanID { - case p.PlanSelect, p.PlanSelectImpossible, p.PlanShowTables: + case p.PlanSelect, p.PlanSelectImpossible, p.PlanShow: maxrows := qre.getSelectLimit() qre.bindVars["#maxLimit"] = sqltypes.Int64BindVariable(maxrows + 1) if qre.bindVars[sqltypes.BvReplaceSchemaName] != nil { @@ -208,7 +208,7 @@ func (qre *QueryExecutor) txConnExec(conn *StatefulConnection) (*sqltypes.Result return qre.execStatefulConn(conn, qre.query, true) case p.PlanSavepoint, p.PlanRelease, p.PlanSRollback: return qre.execStatefulConn(conn, qre.query, true) - case p.PlanSelect, p.PlanSelectLock, p.PlanSelectImpossible, p.PlanShowTables: + case p.PlanSelect, p.PlanSelectLock, p.PlanSelectImpossible, p.PlanShow: maxrows := qre.getSelectLimit() qre.bindVars["#maxLimit"] = sqltypes.Int64BindVariable(maxrows + 1) if qre.bindVars[sqltypes.BvReplaceSchemaName] != nil { diff --git a/go/vt/vttablet/tabletserver/query_executor_test.go b/go/vt/vttablet/tabletserver/query_executor_test.go index a16a911e936..04c6018fe3f 100644 --- a/go/vt/vttablet/tabletserver/query_executor_test.go +++ b/go/vt/vttablet/tabletserver/query_executor_test.go @@ -251,6 +251,33 @@ func TestQueryExecutorPlans(t *testing.T) { planWant: "Release", logWant: "RELEASE savepoint a", inTxWant: "RELEASE savepoint a", + }, { + input: "show create database db_name", + dbResponses: []dbResponse{{ + query: "show create database ks", + result: emptyResult, + }}, + resultWant: emptyResult, + planWant: "Show", + logWant: "show create database ks", + }, { + input: "show create database mysql", + dbResponses: []dbResponse{{ + query: "show create database mysql", + result: emptyResult, + }}, + resultWant: emptyResult, + planWant: "Show", + logWant: "show create database mysql", + }, { + input: "show create table mysql.user", + dbResponses: []dbResponse{{ + query: "show create table mysql.`user`", + result: emptyResult, + }}, + resultWant: emptyResult, + planWant: "Show", + logWant: "show create table mysql.`user`", }} for _, tcase := range testcases { t.Run(tcase.input, func(t *testing.T) { @@ -261,6 +288,7 @@ func TestQueryExecutorPlans(t *testing.T) { } ctx := context.Background() tsv := newTestTabletServer(ctx, noFlags, db) + tsv.config.DB.DBName = "ks" defer tsv.StopService() tsv.SetPassthroughDMLs(tcase.passThrough) From 742c5f9a0abe27a427992fe37e495661843e0093 Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Wed, 17 Feb 2021 16:34:18 +0530 Subject: [PATCH 15/15] added more show plans and fixed the show planbuilder Signed-off-by: Harshit Gangal --- go/vt/vtgate/planbuilder/show.go | 67 ++++--- .../planbuilder/testdata/show_cases.txt | 186 ++++++++++++++++++ 2 files changed, 227 insertions(+), 26 deletions(-) diff --git a/go/vt/vtgate/planbuilder/show.go b/go/vt/vtgate/planbuilder/show.go index b7c0f7ff7fe..2aacc6b47aa 100644 --- a/go/vt/vtgate/planbuilder/show.go +++ b/go/vt/vtgate/planbuilder/show.go @@ -163,7 +163,18 @@ func buildDBPlan(show *sqlparser.ShowBasic, vschema ContextVSchema) (engine.Prim } func buildPlanWithDB(show *sqlparser.ShowBasic, vschema ContextVSchema) (engine.Primitive, error) { - destination, keyspace, _, err := vschema.TargetDestination(show.DbName) + dbName := show.DbName + if sqlparser.SystemSchema(dbName) { + ks, err := vschema.AnyKeyspace() + if err != nil { + return nil, err + } + dbName = ks.Name + } else { + // Remove Database Name from the query. + show.DbName = "" + } + destination, keyspace, _, err := vschema.TargetDestination(dbName) if err != nil { return nil, err } @@ -171,9 +182,6 @@ func buildPlanWithDB(show *sqlparser.ShowBasic, vschema ContextVSchema) (engine. destination = key.DestinationAnyShard{} } - // Remove Database Name from the query. - show.DbName = "" - query := sqlparser.String(show) return &engine.Send{ Keyspace: keyspace, @@ -311,19 +319,24 @@ func buildShowCreatePlan(show *sqlparser.ShowCreate, vschema ContextVSchema) (en } func buildCreateDbPlan(show *sqlparser.ShowCreate, vschema ContextVSchema) (engine.Primitive, error) { - dest := key.Destination(key.DestinationAnyShard{}) - var ks *vindexes.Keyspace - var err error dbName := show.Op.Name.String() if sqlparser.SystemSchema(dbName) { - ks, err = vschema.AnyKeyspace() - } else { - dest, ks, _, err = vschema.TargetDestination(dbName) + ks, err := vschema.AnyKeyspace() + if err != nil { + return nil, err + } + dbName = ks.Name } + + dest, ks, _, err := vschema.TargetDestination(dbName) if err != nil { return nil, err } + if dest == nil { + dest = key.DestinationAnyShard{} + } + return &engine.Send{ Keyspace: ks, TargetDestination: dest, @@ -370,27 +383,29 @@ func buildCreateTblPlan(show *sqlparser.ShowCreate, vschema ContextVSchema) (eng } func buildCreatePlan(show *sqlparser.ShowCreate, vschema ContextVSchema) (engine.Primitive, error) { - dest := key.Destination(key.DestinationAnyShard{}) - var ks *vindexes.Keyspace - var err error - if show.Op.Qualifier.IsEmpty() { - ks, err = vschema.DefaultKeyspace() - if err != nil { - return nil, err - } + dbName := "" + if !show.Op.Qualifier.IsEmpty() { + dbName = show.Op.Qualifier.String() } - if ks == nil { - dbName := show.Op.Qualifier.String() - if sqlparser.SystemSchema(dbName) { - ks, err = vschema.AnyKeyspace() - } else { - dest, ks, _, err = vschema.TargetDestination(dbName) - show.Op.Qualifier = sqlparser.NewTableIdent("") - } + + if sqlparser.SystemSchema(dbName) { + ks, err := vschema.AnyKeyspace() if err != nil { return nil, err } + dbName = ks.Name + } else { + show.Op.Qualifier = sqlparser.NewTableIdent("") } + + dest, ks, _, err := vschema.TargetDestination(dbName) + if err != nil { + return nil, err + } + if dest == nil { + dest = key.DestinationAnyShard{} + } + return &engine.Send{ Keyspace: ks, TargetDestination: dest, diff --git a/go/vt/vtgate/planbuilder/testdata/show_cases.txt b/go/vt/vtgate/planbuilder/testdata/show_cases.txt index a6f48c05405..9776864ead2 100644 --- a/go/vt/vtgate/planbuilder/testdata/show_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/show_cases.txt @@ -255,8 +255,194 @@ "Name": "user", "Sharded": true }, + "TargetDestination": "AnyShard()", "IsDML": false, "Query": "show create database `user`", "SingleShardOnly": true } } + +# show create database system_schema +"show create database mysql" +{ + "QueryType": "SHOW", + "Original": "show create database mysql", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "TargetDestination": "AnyShard()", + "IsDML": false, + "Query": "show create database mysql", + "SingleShardOnly": true + } +} + +# show create procedure +"show create procedure proc" +{ + "QueryType": "SHOW", + "Original": "show create procedure proc", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "TargetDestination": "AnyShard()", + "IsDML": false, + "Query": "show create procedure proc", + "SingleShardOnly": true + } +} + +# show create procedure from system_schema +"show create procedure information_schema.proc" +{ + "QueryType": "SHOW", + "Original": "show create procedure information_schema.proc", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "TargetDestination": "AnyShard()", + "IsDML": false, + "Query": "show create procedure information_schema.proc", + "SingleShardOnly": true + } +} + +# show create table on table present in sharded but as unsharded is selected it goes to unsharded keyspace +"show create table user_extra" +{ + "QueryType": "SHOW", + "Original": "show create table user_extra", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "TargetDestination": "AnyShard()", + "IsDML": false, + "Query": "show create table user_extra", + "SingleShardOnly": true + } +} + +# show create table with qualifier +"show create table user.user_extra" +{ + "QueryType": "SHOW", + "Original": "show create table user.user_extra", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "TargetDestination": "AnyShard()", + "IsDML": false, + "Query": "show create table user_extra", + "SingleShardOnly": true + } +} + +# show create table with unsharded as default keyspace +"show create table unknown" +{ + "QueryType": "SHOW", + "Original": "show create table unknown", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "TargetDestination": "AnyShard()", + "IsDML": false, + "Query": "show create table unknown", + "SingleShardOnly": true + } +} + +# show create table with table not present with qualifier +"show create table user.unknown" +"table unknown not found" + +# show create table from system_schema +"show create table information_schema.tables" +{ + "QueryType": "SHOW", + "Original": "show create table information_schema.tables", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "TargetDestination": "AnyShard()", + "IsDML": false, + "Query": "show create table information_schema.`tables`", + "SingleShardOnly": true + } +} + +# show tables +"show tables" +{ + "QueryType": "SHOW", + "Original": "show tables", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "TargetDestination": "AnyShard()", + "IsDML": false, + "Query": "show tables", + "SingleShardOnly": true + } +} + +# show tables from db +"show tables from user" +{ + "QueryType": "SHOW", + "Original": "show tables from user", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "TargetDestination": "AnyShard()", + "IsDML": false, + "Query": "show tables", + "SingleShardOnly": true + } +} + +# show tables from system schema +"show tables from performance_schema" +{ + "QueryType": "SHOW", + "Original": "show tables from performance_schema", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "TargetDestination": "AnyShard()", + "IsDML": false, + "Query": "show tables from performance_schema", + "SingleShardOnly": true + } +} +